From 00608c167a1ef829473461e1f97969cf574e2f59 Mon Sep 17 00:00:00 2001 From: WithoutPants <53250216+WithoutPants@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:21:46 +1000 Subject: [PATCH] [Files Refactor] Performance tuning (#2819) * Load scene relationships on demand * Load image relationships on demand * Load gallery relationships on demand * Add dataloaden * Use dataloaders * Use where in for other find many functions --- Makefile | 4 + go.mod | 10 +- go.sum | 22 +- internal/api/loaders/dataloaders.go | 187 + internal/api/loaders/galleryloader_gen.go | 224 + internal/api/loaders/imageloader_gen.go | 224 + internal/api/loaders/movieloader_gen.go | 224 + internal/api/loaders/performerloader_gen.go | 224 + internal/api/loaders/sceneloader_gen.go | 224 + internal/api/loaders/studioloader_gen.go | 224 + internal/api/loaders/tagloader_gen.go | 224 + internal/api/resolver.go | 10 + internal/api/resolver_model_gallery.go | 60 +- internal/api/resolver_model_image.go | 56 +- internal/api/resolver_model_movie.go | 10 +- internal/api/resolver_model_performer.go | 6 +- internal/api/resolver_model_scene.go | 106 +- internal/api/resolver_model_studio.go | 16 +- internal/api/resolver_mutation_gallery.go | 36 +- internal/api/resolver_mutation_performer.go | 14 +- internal/api/resolver_mutation_stash_box.go | 5 + internal/api/resolver_mutation_studio.go | 4 +- internal/api/server.go | 9 + internal/autotag/gallery.go | 45 +- internal/autotag/gallery_test.go | 2 + internal/autotag/image.go | 45 +- internal/autotag/image_test.go | 10 +- internal/autotag/performer.go | 51 +- internal/autotag/performer_test.go | 7 +- internal/autotag/scene.go | 45 +- internal/autotag/scene_test.go | 2 + internal/autotag/tag.go | 51 +- internal/autotag/tag_test.go | 7 +- internal/identify/identify.go | 14 +- internal/identify/identify_test.go | 11 +- internal/identify/performer.go | 4 +- internal/identify/performer_test.go | 4 +- internal/identify/scene.go | 9 +- internal/identify/scene_test.go | 28 +- internal/identify/studio.go | 4 +- internal/identify/studio_test.go | 4 +- internal/manager/task_export.go | 4 + internal/manager/task_stash_box_tag.go | 4 +- pkg/gallery/delete.go | 6 +- pkg/gallery/import.go | 16 +- pkg/gallery/scan.go | 19 +- pkg/gallery/service.go | 1 + pkg/gallery/update.go | 46 +- pkg/image/import.go | 16 +- pkg/image/scan.go | 22 +- pkg/image/update.go | 46 +- pkg/models/gallery.go | 11 +- pkg/models/image.go | 4 + pkg/models/jsonschema/performer.go | 56 +- pkg/models/jsonschema/studio.go | 22 +- pkg/models/mocks/GalleryReaderWriter.go | 69 + pkg/models/mocks/ImageReaderWriter.go | 92 +- pkg/models/mocks/PerformerReaderWriter.go | 20 +- pkg/models/mocks/SceneReaderWriter.go | 115 + pkg/models/mocks/StudioReaderWriter.go | 20 +- pkg/models/model_gallery.go | 25 +- pkg/models/model_image.go | 25 +- pkg/models/model_scene.go | 65 +- pkg/models/performer.go | 10 +- pkg/models/relationships.go | 191 + pkg/models/scene.go | 7 + pkg/models/studio.go | 10 +- pkg/models/tag.go | 6 +- pkg/performer/export.go | 6 +- pkg/performer/export_test.go | 8 +- pkg/performer/import.go | 2 +- pkg/scene/export.go | 6 +- pkg/scene/import.go | 22 +- pkg/scene/scan.go | 10 +- pkg/scene/update.go | 70 +- pkg/scraper/stashbox/stash_box.go | 19 +- pkg/sqlite/gallery.go | 81 +- pkg/sqlite/gallery_test.go | 224 +- pkg/sqlite/image.go | 72 +- pkg/sqlite/image_test.go | 202 +- pkg/sqlite/movies.go | 64 +- pkg/sqlite/performer.go | 67 +- pkg/sqlite/repository.go | 10 +- pkg/sqlite/scene.go | 181 +- pkg/sqlite/scene_marker_test.go | 8 +- pkg/sqlite/scene_test.go | 334 +- pkg/sqlite/setup_test.go | 24 +- pkg/sqlite/stash_id_test.go | 16 +- pkg/sqlite/studio.go | 68 +- pkg/sqlite/table.go | 8 + pkg/sqlite/tables.go | 28 + pkg/sqlite/tag.go | 63 +- pkg/sqlite/tag_test.go | 11 +- pkg/studio/export.go | 6 +- pkg/studio/export_test.go | 8 +- pkg/studio/import.go | 2 +- tools.go | 1 + .../github.com/vektah/dataloaden/.gitignore | 2 + vendor/github.com/vektah/dataloaden/README.md | 97 + .../github.com/vektah/dataloaden/appveyor.yml | 32 + .../vektah/dataloaden/dataloaden.go | 28 + .../github.com/vektah/dataloaden/licence.md | 7 + .../dataloaden/pkg/generator/generator.go | 163 + .../dataloaden/pkg/generator/template.go | 245 + vendor/golang.org/x/mod/module/module.go | 6 +- vendor/golang.org/x/net/AUTHORS | 3 - vendor/golang.org/x/net/CONTRIBUTORS | 3 - vendor/golang.org/x/net/bpf/doc.go | 6 +- .../internal/socket/cmsghdr_linux_64bit.go | 4 +- .../x/net/internal/socket/cmsghdr_unix.go | 4 +- .../net/internal/socket/cmsghdr_zos_s390x.go | 14 - .../x/net/internal/socket/iovec_64bit.go | 4 +- .../x/net/internal/socket/mmsghdr_unix.go | 80 +- .../net/internal/socket/msghdr_linux_64bit.go | 4 +- .../x/net/internal/socket/rawconn_mmsg.go | 37 +- .../net/internal/socket/sys_linux_loong64.go | 13 + .../net/internal/socket/zsys_linux_loong64.go | 40 + .../x/net/internal/socket/zsys_linux_ppc.go | 32 +- vendor/golang.org/x/net/ipv4/doc.go | 12 +- .../x/net/ipv4/zsys_linux_loong64.go | 77 + vendor/golang.org/x/net/publicsuffix/list.go | 7 +- vendor/golang.org/x/net/publicsuffix/table.go | 20569 ++++++++-------- vendor/golang.org/x/sys/AUTHORS | 3 - vendor/golang.org/x/sys/CONTRIBUTORS | 3 - vendor/golang.org/x/sys/cpu/byteorder.go | 1 + vendor/golang.org/x/sys/cpu/cpu.go | 4 +- vendor/golang.org/x/sys/cpu/cpu_arm64.go | 7 +- vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c | 29 +- vendor/golang.org/x/sys/cpu/cpu_loong64.go | 13 + .../golang.org/x/sys/cpu/cpu_openbsd_arm64.go | 65 + .../golang.org/x/sys/cpu/cpu_openbsd_arm64.s | 11 + .../golang.org/x/sys/cpu/cpu_other_arm64.go | 4 +- .../golang.org/x/sys/cpu/cpu_other_riscv64.go | 12 + vendor/golang.org/x/sys/execabs/execabs.go | 2 +- .../golang.org/x/sys/execabs/execabs_go118.go | 12 + .../golang.org/x/sys/execabs/execabs_go119.go | 15 + vendor/golang.org/x/sys/plan9/syscall.go | 1 + .../golang.org/x/sys/plan9/syscall_plan9.go | 10 + .../golang.org/x/sys/unix/asm_bsd_riscv64.s | 29 + .../golang.org/x/sys/unix/asm_linux_loong64.s | 54 + vendor/golang.org/x/sys/unix/endian_little.go | 4 +- .../x/sys/unix/errors_freebsd_386.go | 233 - .../x/sys/unix/errors_freebsd_amd64.go | 233 - .../x/sys/unix/errors_freebsd_arm.go | 226 - .../x/sys/unix/errors_freebsd_arm64.go | 17 - vendor/golang.org/x/sys/unix/ifreq_linux.go | 9 +- vendor/golang.org/x/sys/unix/mkall.sh | 19 +- vendor/golang.org/x/sys/unix/mkerrors.sh | 12 +- vendor/golang.org/x/sys/unix/syscall_aix.go | 67 +- vendor/golang.org/x/sys/unix/syscall_bsd.go | 46 +- .../golang.org/x/sys/unix/syscall_darwin.go | 9 +- .../x/sys/unix/syscall_dragonfly.go | 2 + .../golang.org/x/sys/unix/syscall_freebsd.go | 325 +- .../x/sys/unix/syscall_freebsd_386.go | 4 +- .../x/sys/unix/syscall_freebsd_amd64.go | 4 +- .../x/sys/unix/syscall_freebsd_arm.go | 2 +- .../x/sys/unix/syscall_freebsd_arm64.go | 2 +- .../x/sys/unix/syscall_freebsd_riscv64.go | 63 + .../golang.org/x/sys/unix/syscall_illumos.go | 5 +- vendor/golang.org/x/sys/unix/syscall_linux.go | 164 +- .../x/sys/unix/syscall_linux_amd64.go | 1 + .../x/sys/unix/syscall_linux_arm64.go | 1 + .../x/sys/unix/syscall_linux_loong64.go | 226 + .../x/sys/unix/syscall_linux_riscv64.go | 1 + .../golang.org/x/sys/unix/syscall_openbsd.go | 2 + .../x/sys/unix/syscall_openbsd_mips64.go | 4 + .../golang.org/x/sys/unix/syscall_solaris.go | 51 +- vendor/golang.org/x/sys/unix/syscall_unix.go | 74 +- .../x/sys/unix/zerrors_freebsd_386.go | 109 +- .../x/sys/unix/zerrors_freebsd_amd64.go | 107 +- .../x/sys/unix/zerrors_freebsd_arm.go | 220 +- .../x/sys/unix/zerrors_freebsd_arm64.go | 100 +- .../x/sys/unix/zerrors_freebsd_riscv64.go | 2148 ++ vendor/golang.org/x/sys/unix/zerrors_linux.go | 413 +- .../x/sys/unix/zerrors_linux_386.go | 6 +- .../x/sys/unix/zerrors_linux_amd64.go | 6 +- .../x/sys/unix/zerrors_linux_arm.go | 6 +- .../x/sys/unix/zerrors_linux_arm64.go | 7 +- .../x/sys/unix/zerrors_linux_loong64.go | 818 + .../x/sys/unix/zerrors_linux_mips.go | 6 +- .../x/sys/unix/zerrors_linux_mips64.go | 6 +- .../x/sys/unix/zerrors_linux_mips64le.go | 6 +- .../x/sys/unix/zerrors_linux_mipsle.go | 6 +- .../x/sys/unix/zerrors_linux_ppc.go | 6 +- .../x/sys/unix/zerrors_linux_ppc64.go | 6 +- .../x/sys/unix/zerrors_linux_ppc64le.go | 6 +- .../x/sys/unix/zerrors_linux_riscv64.go | 6 +- .../x/sys/unix/zerrors_linux_s390x.go | 6 +- .../x/sys/unix/zerrors_linux_sparc64.go | 6 +- .../x/sys/unix/zsyscall_darwin_amd64.1_13.s | 2 +- .../x/sys/unix/zsyscall_darwin_amd64.go | 24 + .../x/sys/unix/zsyscall_darwin_amd64.s | 8 +- .../x/sys/unix/zsyscall_darwin_arm64.1_13.s | 2 +- .../x/sys/unix/zsyscall_darwin_arm64.go | 24 + .../x/sys/unix/zsyscall_darwin_arm64.s | 8 +- .../x/sys/unix/zsyscall_freebsd_386.go | 141 +- .../x/sys/unix/zsyscall_freebsd_amd64.go | 139 +- .../x/sys/unix/zsyscall_freebsd_arm.go | 173 +- .../x/sys/unix/zsyscall_freebsd_arm64.go | 139 +- .../x/sys/unix/zsyscall_freebsd_riscv64.go | 1889 ++ .../golang.org/x/sys/unix/zsyscall_linux.go | 79 + .../x/sys/unix/zsyscall_linux_amd64.go | 11 + .../x/sys/unix/zsyscall_linux_arm64.go | 11 + .../x/sys/unix/zsyscall_linux_loong64.go | 527 + .../x/sys/unix/zsyscall_linux_riscv64.go | 11 + .../x/sys/unix/zsyscall_solaris_amd64.go | 14 + .../x/sys/unix/zsysnum_freebsd_386.go | 107 +- .../x/sys/unix/zsysnum_freebsd_amd64.go | 107 +- .../x/sys/unix/zsysnum_freebsd_arm.go | 107 +- .../x/sys/unix/zsysnum_freebsd_arm64.go | 107 +- .../x/sys/unix/zsysnum_freebsd_riscv64.go | 394 + .../x/sys/unix/zsysnum_linux_386.go | 3 +- .../x/sys/unix/zsysnum_linux_amd64.go | 3 +- .../x/sys/unix/zsysnum_linux_arm.go | 3 +- .../x/sys/unix/zsysnum_linux_arm64.go | 3 +- .../x/sys/unix/zsysnum_linux_loong64.go | 311 + .../x/sys/unix/zsysnum_linux_mips.go | 3 +- .../x/sys/unix/zsysnum_linux_mips64.go | 3 +- .../x/sys/unix/zsysnum_linux_mips64le.go | 3 +- .../x/sys/unix/zsysnum_linux_mipsle.go | 3 +- .../x/sys/unix/zsysnum_linux_ppc.go | 3 +- .../x/sys/unix/zsysnum_linux_ppc64.go | 3 +- .../x/sys/unix/zsysnum_linux_ppc64le.go | 3 +- .../x/sys/unix/zsysnum_linux_riscv64.go | 4 +- .../x/sys/unix/zsysnum_linux_s390x.go | 3 +- .../x/sys/unix/zsysnum_linux_sparc64.go | 3 +- .../x/sys/unix/ztypes_darwin_amd64.go | 73 +- .../x/sys/unix/ztypes_darwin_arm64.go | 73 +- .../x/sys/unix/ztypes_freebsd_386.go | 97 +- .../x/sys/unix/ztypes_freebsd_amd64.go | 94 +- .../x/sys/unix/ztypes_freebsd_arm.go | 145 +- .../x/sys/unix/ztypes_freebsd_arm64.go | 92 +- .../x/sys/unix/ztypes_freebsd_riscv64.go | 626 + vendor/golang.org/x/sys/unix/ztypes_linux.go | 93 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 15 +- .../x/sys/unix/ztypes_linux_amd64.go | 14 +- .../golang.org/x/sys/unix/ztypes_linux_arm.go | 15 +- .../x/sys/unix/ztypes_linux_arm64.go | 14 +- .../x/sys/unix/ztypes_linux_loong64.go | 685 + .../x/sys/unix/ztypes_linux_mips.go | 15 +- .../x/sys/unix/ztypes_linux_mips64.go | 14 +- .../x/sys/unix/ztypes_linux_mips64le.go | 14 +- .../x/sys/unix/ztypes_linux_mipsle.go | 15 +- .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 15 +- .../x/sys/unix/ztypes_linux_ppc64.go | 14 +- .../x/sys/unix/ztypes_linux_ppc64le.go | 14 +- .../x/sys/unix/ztypes_linux_riscv64.go | 14 +- .../x/sys/unix/ztypes_linux_s390x.go | 14 +- .../x/sys/unix/ztypes_linux_sparc64.go | 14 +- .../x/sys/unix/ztypes_openbsd_386.go | 8 +- .../x/sys/unix/ztypes_openbsd_amd64.go | 8 +- .../x/sys/unix/ztypes_openbsd_arm.go | 8 +- .../x/sys/unix/ztypes_openbsd_arm64.go | 8 +- .../x/sys/unix/ztypes_openbsd_mips64.go | 8 +- .../x/sys/unix/ztypes_solaris_amd64.go | 2 +- .../golang.org/x/sys/windows/exec_windows.go | 10 +- .../golang.org/x/sys/windows/svc/service.go | 1 - .../x/sys/windows/syscall_windows.go | 105 +- .../golang.org/x/sys/windows/types_windows.go | 81 +- .../x/sys/windows/zsyscall_windows.go | 18 + vendor/golang.org/x/tools/AUTHORS | 3 - vendor/golang.org/x/tools/CONTRIBUTORS | 3 - .../x/tools/go/ast/astutil/enclosing.go | 29 +- .../x/tools/go/ast/astutil/imports.go | 7 +- .../x/tools/go/ast/astutil/rewrite.go | 11 +- .../x/tools/go/gcexportdata/gcexportdata.go | 49 +- .../x/tools/go/gcexportdata/importer.go | 2 + .../x/tools/go/internal/gcimporter/bexport.go | 20 +- .../go/internal/gcimporter/gcimporter.go | 161 +- .../x/tools/go/internal/gcimporter/iexport.go | 5 +- .../x/tools/go/internal/gcimporter/iimport.go | 70 +- .../go/internal/gcimporter/unified_no.go | 10 + .../go/internal/gcimporter/unified_yes.go | 10 + .../go/internal/gcimporter/ureader_no.go | 19 + .../go/internal/gcimporter/ureader_yes.go | 612 + .../x/tools/go/internal/pkgbits/codes.go | 77 + .../x/tools/go/internal/pkgbits/decoder.go | 433 + .../x/tools/go/internal/pkgbits/doc.go | 32 + .../x/tools/go/internal/pkgbits/encoder.go | 379 + .../x/tools/go/internal/pkgbits/flags.go | 9 + .../x/tools/go/internal/pkgbits/frames_go1.go | 21 + .../tools/go/internal/pkgbits/frames_go17.go | 28 + .../x/tools/go/internal/pkgbits/reloc.go | 42 + .../x/tools/go/internal/pkgbits/support.go | 17 + .../x/tools/go/internal/pkgbits/sync.go | 113 + .../go/internal/pkgbits/syncmarker_string.go | 89 + vendor/golang.org/x/tools/go/packages/doc.go | 1 - .../golang.org/x/tools/go/packages/golist.go | 92 +- .../x/tools/go/packages/loadmode_string.go | 4 +- .../x/tools/go/packages/packages.go | 73 +- vendor/golang.org/x/tools/imports/forward.go | 2 +- .../x/tools/internal/fastwalk/fastwalk.go | 6 +- .../x/tools/internal/gocommand/invoke.go | 6 +- .../x/tools/internal/gopathwalk/walk.go | 20 +- .../x/tools/internal/imports/fix.go | 4 +- .../x/tools/internal/imports/imports.go | 27 +- .../x/tools/internal/imports/mod.go | 14 +- .../x/tools/internal/imports/sortimports.go | 39 +- .../x/tools/internal/imports/zstdlib.go | 61 +- .../internal/packagesinternal/packages.go | 2 + .../x/tools/internal/typeparams/common.go | 21 +- .../x/tools/internal/typeparams/coretype.go | 122 + .../x/tools/internal/typeparams/normalize.go | 12 +- .../x/tools/internal/typeparams/termlist.go | 9 - vendor/golang.org/x/xerrors/LICENSE | 27 - vendor/golang.org/x/xerrors/PATENTS | 22 - vendor/golang.org/x/xerrors/README | 2 - vendor/golang.org/x/xerrors/adaptor.go | 193 - vendor/golang.org/x/xerrors/codereview.cfg | 1 - vendor/golang.org/x/xerrors/doc.go | 22 - vendor/golang.org/x/xerrors/errors.go | 33 - vendor/golang.org/x/xerrors/fmt.go | 187 - vendor/golang.org/x/xerrors/format.go | 34 - vendor/golang.org/x/xerrors/frame.go | 56 - .../golang.org/x/xerrors/internal/internal.go | 8 - vendor/golang.org/x/xerrors/wrap.go | 106 - vendor/modules.txt | 21 +- 317 files changed, 28002 insertions(+), 14875 deletions(-) create mode 100644 internal/api/loaders/dataloaders.go create mode 100644 internal/api/loaders/galleryloader_gen.go create mode 100644 internal/api/loaders/imageloader_gen.go create mode 100644 internal/api/loaders/movieloader_gen.go create mode 100644 internal/api/loaders/performerloader_gen.go create mode 100644 internal/api/loaders/sceneloader_gen.go create mode 100644 internal/api/loaders/studioloader_gen.go create mode 100644 internal/api/loaders/tagloader_gen.go create mode 100644 pkg/models/relationships.go create mode 100644 vendor/github.com/vektah/dataloaden/.gitignore create mode 100644 vendor/github.com/vektah/dataloaden/README.md create mode 100644 vendor/github.com/vektah/dataloaden/appveyor.yml create mode 100644 vendor/github.com/vektah/dataloaden/dataloaden.go create mode 100644 vendor/github.com/vektah/dataloaden/licence.md create mode 100644 vendor/github.com/vektah/dataloaden/pkg/generator/generator.go create mode 100644 vendor/github.com/vektah/dataloaden/pkg/generator/template.go delete mode 100644 vendor/golang.org/x/net/AUTHORS delete mode 100644 vendor/golang.org/x/net/CONTRIBUTORS create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_loong64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_loong64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_loong64.go delete mode 100644 vendor/golang.org/x/sys/AUTHORS delete mode 100644 vendor/golang.org/x/sys/CONTRIBUTORS create mode 100644 vendor/golang.org/x/sys/cpu/cpu_loong64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s create mode 100644 vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go create mode 100644 vendor/golang.org/x/sys/execabs/execabs_go118.go create mode 100644 vendor/golang.org/x/sys/execabs/execabs_go119.go create mode 100644 vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_loong64.s delete mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_loong64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go delete mode 100644 vendor/golang.org/x/tools/AUTHORS delete mode 100644 vendor/golang.org/x/tools/CONTRIBUTORS create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/unified_no.go create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/unified_yes.go create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/ureader_no.go create mode 100644 vendor/golang.org/x/tools/go/internal/gcimporter/ureader_yes.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/codes.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/decoder.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/doc.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/encoder.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/flags.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/frames_go1.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/frames_go17.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/reloc.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/support.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/sync.go create mode 100644 vendor/golang.org/x/tools/go/internal/pkgbits/syncmarker_string.go create mode 100644 vendor/golang.org/x/tools/internal/typeparams/coretype.go delete mode 100644 vendor/golang.org/x/xerrors/LICENSE delete mode 100644 vendor/golang.org/x/xerrors/PATENTS delete mode 100644 vendor/golang.org/x/xerrors/README delete mode 100644 vendor/golang.org/x/xerrors/adaptor.go delete mode 100644 vendor/golang.org/x/xerrors/codereview.cfg delete mode 100644 vendor/golang.org/x/xerrors/doc.go delete mode 100644 vendor/golang.org/x/xerrors/errors.go delete mode 100644 vendor/golang.org/x/xerrors/fmt.go delete mode 100644 vendor/golang.org/x/xerrors/format.go delete mode 100644 vendor/golang.org/x/xerrors/frame.go delete mode 100644 vendor/golang.org/x/xerrors/internal/internal.go delete mode 100644 vendor/golang.org/x/xerrors/wrap.go diff --git a/Makefile b/Makefile index 0bfd11308..406d2a22d 100644 --- a/Makefile +++ b/Makefile @@ -162,6 +162,10 @@ generate-frontend: generate-backend: touch-ui go generate -mod=vendor ./cmd/stash +.PHONY: generate-dataloaders +generate-dataloaders: + go generate -mod=vendor ./internal/api/loaders + # Regenerates stash-box client files .PHONY: generate-stash-box-client generate-stash-box-client: diff --git a/go.mod b/go.mod index 365ec2d6a..4a8f12197 100644 --- a/go.mod +++ b/go.mod @@ -36,11 +36,11 @@ require ( github.com/vektra/mockery/v2 v2.10.0 golang.org/x/crypto v0.0.0-20220321153916-2c7772ba3064 golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb - golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 - golang.org/x/sys v0.0.0-20220329152356-43be30ef3008 + golang.org/x/net v0.0.0-20220722155237-a158d28d115b + golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 golang.org/x/text v0.3.7 - golang.org/x/tools v0.1.10 // indirect + golang.org/x/tools v0.1.12 // indirect gopkg.in/sourcemap.v1 v1.0.5 // indirect gopkg.in/yaml.v2 v2.4.0 ) @@ -56,6 +56,7 @@ require ( github.com/lucasb-eyer/go-colorful v1.2.0 github.com/spf13/cast v1.4.1 github.com/vearutop/statigz v1.1.6 + github.com/vektah/dataloaden v0.3.0 github.com/vektah/gqlparser/v2 v2.4.1 gopkg.in/guregu/null.v4 v4.0.0 ) @@ -100,8 +101,7 @@ require ( github.com/tidwall/match v1.1.1 // indirect github.com/urfave/cli/v2 v2.4.0 // indirect go.uber.org/atomic v1.7.0 // indirect - golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect gopkg.in/ini.v1 v1.66.4 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 18623809d..06230c953 100644 --- a/go.sum +++ b/go.sum @@ -753,6 +753,8 @@ github.com/urfave/cli/v2 v2.4.0 h1:m2pxjjDFgDxSPtO8WSdbndj17Wu2y8vOT86wE/tjr+I= github.com/urfave/cli/v2 v2.4.0/go.mod h1:NX9W0zmTvedE5oDoOMs2RTC8RvdK98NTYZE5LbaEYPg= github.com/vearutop/statigz v1.1.6 h1:si1zvulh/6P4S/SjFticuKQ8/EgQISglaRuycj8PWso= github.com/vearutop/statigz v1.1.6/go.mod h1:czAv7iXgPv/s+xsgXpVEhhD0NSOQ4wZPgmM/n7LANDI= +github.com/vektah/dataloaden v0.3.0 h1:ZfVN2QD6swgvp+tDqdH/OIT/wu3Dhu0cus0k5gIZS84= +github.com/vektah/dataloaden v0.3.0/go.mod h1:/HUdMve7rvxZma+2ZELQeNh88+003LL7Pf/CZ089j8U= github.com/vektah/gqlparser/v2 v2.4.0/go.mod h1:flJWIR04IMQPGz+BXLrORkrARBxv/rtyIAFvd/MceW0= github.com/vektah/gqlparser/v2 v2.4.1 h1:QOyEn8DAPMUMARGMeshKDkDgNmVoEaEGiDB0uWxcSlQ= github.com/vektah/gqlparser/v2 v2.4.1/go.mod h1:flJWIR04IMQPGz+BXLrORkrARBxv/rtyIAFvd/MceW0= @@ -771,6 +773,7 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE= go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= @@ -863,8 +866,9 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -920,8 +924,8 @@ golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 h1:0qxwC5n+ttVOINCBeRHO0nq9X7uy8SDsPoi5OaCdIEI= -golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -954,6 +958,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1047,8 +1052,10 @@ golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220329152356-43be30ef3008 h1:pq9pwoi2rjLWvmiVser/lIOgiyA3fli4M+RfGVMA7nE= -golang.org/x/sys v0.0.0-20220329152356-43be30ef3008/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664 h1:v1W7bwXHsnLLloWYTVEdvGvA7BHMeBYsPcF0GLDxIRs= +golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1078,6 +1085,7 @@ golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190515012406-7d7faa4812bd/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= @@ -1135,14 +1143,14 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= diff --git a/internal/api/loaders/dataloaders.go b/internal/api/loaders/dataloaders.go new file mode 100644 index 000000000..756c34025 --- /dev/null +++ b/internal/api/loaders/dataloaders.go @@ -0,0 +1,187 @@ +//go:generate go run -mod=vendor github.com/vektah/dataloaden SceneLoader int *github.com/stashapp/stash/pkg/models.Scene +//go:generate go run -mod=vendor github.com/vektah/dataloaden GalleryLoader int *github.com/stashapp/stash/pkg/models.Gallery +//go:generate go run -mod=vendor github.com/vektah/dataloaden ImageLoader int *github.com/stashapp/stash/pkg/models.Image +//go:generate go run -mod=vendor github.com/vektah/dataloaden PerformerLoader int *github.com/stashapp/stash/pkg/models.Performer +//go:generate go run -mod=vendor github.com/vektah/dataloaden StudioLoader int *github.com/stashapp/stash/pkg/models.Studio +//go:generate go run -mod=vendor github.com/vektah/dataloaden TagLoader int *github.com/stashapp/stash/pkg/models.Tag +//go:generate go run -mod=vendor github.com/vektah/dataloaden MovieLoader int *github.com/stashapp/stash/pkg/models.Movie + +package loaders + +import ( + "context" + "net/http" + "time" + + "github.com/stashapp/stash/internal/manager" + "github.com/stashapp/stash/pkg/models" + "github.com/stashapp/stash/pkg/txn" +) + +type contextKey struct{ name string } + +var ( + loadersCtxKey = &contextKey{"loaders"} +) + +const ( + wait = 1 * time.Millisecond + maxBatch = 100 +) + +type Loaders struct { + SceneByID *SceneLoader + GalleryByID *GalleryLoader + ImageByID *ImageLoader + PerformerByID *PerformerLoader + StudioByID *StudioLoader + TagByID *TagLoader + MovieByID *MovieLoader +} + +type Middleware struct { + DatabaseProvider txn.DatabaseProvider + Repository manager.Repository +} + +func (m Middleware) Middleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + ldrs := Loaders{ + SceneByID: &SceneLoader{ + wait: wait, + maxBatch: maxBatch, + fetch: m.fetchScenes(ctx), + }, + GalleryByID: &GalleryLoader{ + wait: wait, + maxBatch: maxBatch, + fetch: m.fetchGalleries(ctx), + }, + ImageByID: &ImageLoader{ + wait: wait, + maxBatch: maxBatch, + fetch: m.fetchImages(ctx), + }, + PerformerByID: &PerformerLoader{ + wait: wait, + maxBatch: maxBatch, + fetch: m.fetchPerformers(ctx), + }, + StudioByID: &StudioLoader{ + wait: wait, + maxBatch: maxBatch, + fetch: m.fetchStudios(ctx), + }, + TagByID: &TagLoader{ + wait: wait, + maxBatch: maxBatch, + fetch: m.fetchTags(ctx), + }, + MovieByID: &MovieLoader{ + wait: wait, + maxBatch: maxBatch, + fetch: m.fetchMovies(ctx), + }, + } + + newCtx := context.WithValue(r.Context(), loadersCtxKey, ldrs) + next.ServeHTTP(w, r.WithContext(newCtx)) + }) +} + +func From(ctx context.Context) Loaders { + return ctx.Value(loadersCtxKey).(Loaders) +} + +func toErrorSlice(err error) []error { + if err != nil { + return []error{err} + } + + return nil +} + +func (m Middleware) withTxn(ctx context.Context, fn func(ctx context.Context) error) error { + return txn.WithDatabase(ctx, m.DatabaseProvider, fn) +} + +func (m Middleware) fetchScenes(ctx context.Context) func(keys []int) ([]*models.Scene, []error) { + return func(keys []int) (ret []*models.Scene, errs []error) { + err := m.withTxn(ctx, func(ctx context.Context) error { + var err error + ret, err = m.Repository.Scene.FindMany(ctx, keys) + return err + }) + return ret, toErrorSlice(err) + } +} + +func (m Middleware) fetchImages(ctx context.Context) func(keys []int) ([]*models.Image, []error) { + return func(keys []int) (ret []*models.Image, errs []error) { + err := m.withTxn(ctx, func(ctx context.Context) error { + var err error + ret, err = m.Repository.Image.FindMany(ctx, keys) + return err + }) + + return ret, toErrorSlice(err) + } +} + +func (m Middleware) fetchGalleries(ctx context.Context) func(keys []int) ([]*models.Gallery, []error) { + return func(keys []int) (ret []*models.Gallery, errs []error) { + err := m.withTxn(ctx, func(ctx context.Context) error { + var err error + ret, err = m.Repository.Gallery.FindMany(ctx, keys) + return err + }) + + return ret, toErrorSlice(err) + } +} + +func (m Middleware) fetchPerformers(ctx context.Context) func(keys []int) ([]*models.Performer, []error) { + return func(keys []int) (ret []*models.Performer, errs []error) { + err := m.withTxn(ctx, func(ctx context.Context) error { + var err error + ret, err = m.Repository.Performer.FindMany(ctx, keys) + return err + }) + + return ret, toErrorSlice(err) + } +} + +func (m Middleware) fetchStudios(ctx context.Context) func(keys []int) ([]*models.Studio, []error) { + return func(keys []int) (ret []*models.Studio, errs []error) { + err := m.withTxn(ctx, func(ctx context.Context) error { + var err error + ret, err = m.Repository.Studio.FindMany(ctx, keys) + return err + }) + return ret, toErrorSlice(err) + } +} + +func (m Middleware) fetchTags(ctx context.Context) func(keys []int) ([]*models.Tag, []error) { + return func(keys []int) (ret []*models.Tag, errs []error) { + err := m.withTxn(ctx, func(ctx context.Context) error { + var err error + ret, err = m.Repository.Tag.FindMany(ctx, keys) + return err + }) + return ret, toErrorSlice(err) + } +} + +func (m Middleware) fetchMovies(ctx context.Context) func(keys []int) ([]*models.Movie, []error) { + return func(keys []int) (ret []*models.Movie, errs []error) { + err := m.withTxn(ctx, func(ctx context.Context) error { + var err error + ret, err = m.Repository.Movie.FindMany(ctx, keys) + return err + }) + return ret, toErrorSlice(err) + } +} diff --git a/internal/api/loaders/galleryloader_gen.go b/internal/api/loaders/galleryloader_gen.go new file mode 100644 index 000000000..0f8887d6a --- /dev/null +++ b/internal/api/loaders/galleryloader_gen.go @@ -0,0 +1,224 @@ +// Code generated by github.com/vektah/dataloaden, DO NOT EDIT. + +package loaders + +import ( + "sync" + "time" + + "github.com/stashapp/stash/pkg/models" +) + +// GalleryLoaderConfig captures the config to create a new GalleryLoader +type GalleryLoaderConfig struct { + // Fetch is a method that provides the data for the loader + Fetch func(keys []int) ([]*models.Gallery, []error) + + // Wait is how long wait before sending a batch + Wait time.Duration + + // MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit + MaxBatch int +} + +// NewGalleryLoader creates a new GalleryLoader given a fetch, wait, and maxBatch +func NewGalleryLoader(config GalleryLoaderConfig) *GalleryLoader { + return &GalleryLoader{ + fetch: config.Fetch, + wait: config.Wait, + maxBatch: config.MaxBatch, + } +} + +// GalleryLoader batches and caches requests +type GalleryLoader struct { + // this method provides the data for the loader + fetch func(keys []int) ([]*models.Gallery, []error) + + // how long to done before sending a batch + wait time.Duration + + // this will limit the maximum number of keys to send in one batch, 0 = no limit + maxBatch int + + // INTERNAL + + // lazily created cache + cache map[int]*models.Gallery + + // the current batch. keys will continue to be collected until timeout is hit, + // then everything will be sent to the fetch method and out to the listeners + batch *galleryLoaderBatch + + // mutex to prevent races + mu sync.Mutex +} + +type galleryLoaderBatch struct { + keys []int + data []*models.Gallery + error []error + closing bool + done chan struct{} +} + +// Load a Gallery by key, batching and caching will be applied automatically +func (l *GalleryLoader) Load(key int) (*models.Gallery, error) { + return l.LoadThunk(key)() +} + +// LoadThunk returns a function that when called will block waiting for a Gallery. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *GalleryLoader) LoadThunk(key int) func() (*models.Gallery, error) { + l.mu.Lock() + if it, ok := l.cache[key]; ok { + l.mu.Unlock() + return func() (*models.Gallery, error) { + return it, nil + } + } + if l.batch == nil { + l.batch = &galleryLoaderBatch{done: make(chan struct{})} + } + batch := l.batch + pos := batch.keyIndex(l, key) + l.mu.Unlock() + + return func() (*models.Gallery, error) { + <-batch.done + + var data *models.Gallery + if pos < len(batch.data) { + data = batch.data[pos] + } + + var err error + // its convenient to be able to return a single error for everything + if len(batch.error) == 1 { + err = batch.error[0] + } else if batch.error != nil { + err = batch.error[pos] + } + + if err == nil { + l.mu.Lock() + l.unsafeSet(key, data) + l.mu.Unlock() + } + + return data, err + } +} + +// LoadAll fetches many keys at once. It will be broken into appropriate sized +// sub batches depending on how the loader is configured +func (l *GalleryLoader) LoadAll(keys []int) ([]*models.Gallery, []error) { + results := make([]func() (*models.Gallery, error), len(keys)) + + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + + gallerys := make([]*models.Gallery, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + gallerys[i], errors[i] = thunk() + } + return gallerys, errors +} + +// LoadAllThunk returns a function that when called will block waiting for a Gallerys. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *GalleryLoader) LoadAllThunk(keys []int) func() ([]*models.Gallery, []error) { + results := make([]func() (*models.Gallery, error), len(keys)) + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + return func() ([]*models.Gallery, []error) { + gallerys := make([]*models.Gallery, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + gallerys[i], errors[i] = thunk() + } + return gallerys, errors + } +} + +// Prime the cache with the provided key and value. If the key already exists, no change is made +// and false is returned. +// (To forcefully prime the cache, clear the key first with loader.clear(key).prime(key, value).) +func (l *GalleryLoader) Prime(key int, value *models.Gallery) bool { + l.mu.Lock() + var found bool + if _, found = l.cache[key]; !found { + // make a copy when writing to the cache, its easy to pass a pointer in from a loop var + // and end up with the whole cache pointing to the same value. + cpy := *value + l.unsafeSet(key, &cpy) + } + l.mu.Unlock() + return !found +} + +// Clear the value at key from the cache, if it exists +func (l *GalleryLoader) Clear(key int) { + l.mu.Lock() + delete(l.cache, key) + l.mu.Unlock() +} + +func (l *GalleryLoader) unsafeSet(key int, value *models.Gallery) { + if l.cache == nil { + l.cache = map[int]*models.Gallery{} + } + l.cache[key] = value +} + +// keyIndex will return the location of the key in the batch, if its not found +// it will add the key to the batch +func (b *galleryLoaderBatch) keyIndex(l *GalleryLoader, key int) int { + for i, existingKey := range b.keys { + if key == existingKey { + return i + } + } + + pos := len(b.keys) + b.keys = append(b.keys, key) + if pos == 0 { + go b.startTimer(l) + } + + if l.maxBatch != 0 && pos >= l.maxBatch-1 { + if !b.closing { + b.closing = true + l.batch = nil + go b.end(l) + } + } + + return pos +} + +func (b *galleryLoaderBatch) startTimer(l *GalleryLoader) { + time.Sleep(l.wait) + l.mu.Lock() + + // we must have hit a batch limit and are already finalizing this batch + if b.closing { + l.mu.Unlock() + return + } + + l.batch = nil + l.mu.Unlock() + + b.end(l) +} + +func (b *galleryLoaderBatch) end(l *GalleryLoader) { + b.data, b.error = l.fetch(b.keys) + close(b.done) +} diff --git a/internal/api/loaders/imageloader_gen.go b/internal/api/loaders/imageloader_gen.go new file mode 100644 index 000000000..b726f3aa5 --- /dev/null +++ b/internal/api/loaders/imageloader_gen.go @@ -0,0 +1,224 @@ +// Code generated by github.com/vektah/dataloaden, DO NOT EDIT. + +package loaders + +import ( + "sync" + "time" + + "github.com/stashapp/stash/pkg/models" +) + +// ImageLoaderConfig captures the config to create a new ImageLoader +type ImageLoaderConfig struct { + // Fetch is a method that provides the data for the loader + Fetch func(keys []int) ([]*models.Image, []error) + + // Wait is how long wait before sending a batch + Wait time.Duration + + // MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit + MaxBatch int +} + +// NewImageLoader creates a new ImageLoader given a fetch, wait, and maxBatch +func NewImageLoader(config ImageLoaderConfig) *ImageLoader { + return &ImageLoader{ + fetch: config.Fetch, + wait: config.Wait, + maxBatch: config.MaxBatch, + } +} + +// ImageLoader batches and caches requests +type ImageLoader struct { + // this method provides the data for the loader + fetch func(keys []int) ([]*models.Image, []error) + + // how long to done before sending a batch + wait time.Duration + + // this will limit the maximum number of keys to send in one batch, 0 = no limit + maxBatch int + + // INTERNAL + + // lazily created cache + cache map[int]*models.Image + + // the current batch. keys will continue to be collected until timeout is hit, + // then everything will be sent to the fetch method and out to the listeners + batch *imageLoaderBatch + + // mutex to prevent races + mu sync.Mutex +} + +type imageLoaderBatch struct { + keys []int + data []*models.Image + error []error + closing bool + done chan struct{} +} + +// Load a Image by key, batching and caching will be applied automatically +func (l *ImageLoader) Load(key int) (*models.Image, error) { + return l.LoadThunk(key)() +} + +// LoadThunk returns a function that when called will block waiting for a Image. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *ImageLoader) LoadThunk(key int) func() (*models.Image, error) { + l.mu.Lock() + if it, ok := l.cache[key]; ok { + l.mu.Unlock() + return func() (*models.Image, error) { + return it, nil + } + } + if l.batch == nil { + l.batch = &imageLoaderBatch{done: make(chan struct{})} + } + batch := l.batch + pos := batch.keyIndex(l, key) + l.mu.Unlock() + + return func() (*models.Image, error) { + <-batch.done + + var data *models.Image + if pos < len(batch.data) { + data = batch.data[pos] + } + + var err error + // its convenient to be able to return a single error for everything + if len(batch.error) == 1 { + err = batch.error[0] + } else if batch.error != nil { + err = batch.error[pos] + } + + if err == nil { + l.mu.Lock() + l.unsafeSet(key, data) + l.mu.Unlock() + } + + return data, err + } +} + +// LoadAll fetches many keys at once. It will be broken into appropriate sized +// sub batches depending on how the loader is configured +func (l *ImageLoader) LoadAll(keys []int) ([]*models.Image, []error) { + results := make([]func() (*models.Image, error), len(keys)) + + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + + images := make([]*models.Image, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + images[i], errors[i] = thunk() + } + return images, errors +} + +// LoadAllThunk returns a function that when called will block waiting for a Images. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *ImageLoader) LoadAllThunk(keys []int) func() ([]*models.Image, []error) { + results := make([]func() (*models.Image, error), len(keys)) + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + return func() ([]*models.Image, []error) { + images := make([]*models.Image, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + images[i], errors[i] = thunk() + } + return images, errors + } +} + +// Prime the cache with the provided key and value. If the key already exists, no change is made +// and false is returned. +// (To forcefully prime the cache, clear the key first with loader.clear(key).prime(key, value).) +func (l *ImageLoader) Prime(key int, value *models.Image) bool { + l.mu.Lock() + var found bool + if _, found = l.cache[key]; !found { + // make a copy when writing to the cache, its easy to pass a pointer in from a loop var + // and end up with the whole cache pointing to the same value. + cpy := *value + l.unsafeSet(key, &cpy) + } + l.mu.Unlock() + return !found +} + +// Clear the value at key from the cache, if it exists +func (l *ImageLoader) Clear(key int) { + l.mu.Lock() + delete(l.cache, key) + l.mu.Unlock() +} + +func (l *ImageLoader) unsafeSet(key int, value *models.Image) { + if l.cache == nil { + l.cache = map[int]*models.Image{} + } + l.cache[key] = value +} + +// keyIndex will return the location of the key in the batch, if its not found +// it will add the key to the batch +func (b *imageLoaderBatch) keyIndex(l *ImageLoader, key int) int { + for i, existingKey := range b.keys { + if key == existingKey { + return i + } + } + + pos := len(b.keys) + b.keys = append(b.keys, key) + if pos == 0 { + go b.startTimer(l) + } + + if l.maxBatch != 0 && pos >= l.maxBatch-1 { + if !b.closing { + b.closing = true + l.batch = nil + go b.end(l) + } + } + + return pos +} + +func (b *imageLoaderBatch) startTimer(l *ImageLoader) { + time.Sleep(l.wait) + l.mu.Lock() + + // we must have hit a batch limit and are already finalizing this batch + if b.closing { + l.mu.Unlock() + return + } + + l.batch = nil + l.mu.Unlock() + + b.end(l) +} + +func (b *imageLoaderBatch) end(l *ImageLoader) { + b.data, b.error = l.fetch(b.keys) + close(b.done) +} diff --git a/internal/api/loaders/movieloader_gen.go b/internal/api/loaders/movieloader_gen.go new file mode 100644 index 000000000..3783d3a41 --- /dev/null +++ b/internal/api/loaders/movieloader_gen.go @@ -0,0 +1,224 @@ +// Code generated by github.com/vektah/dataloaden, DO NOT EDIT. + +package loaders + +import ( + "sync" + "time" + + "github.com/stashapp/stash/pkg/models" +) + +// MovieLoaderConfig captures the config to create a new MovieLoader +type MovieLoaderConfig struct { + // Fetch is a method that provides the data for the loader + Fetch func(keys []int) ([]*models.Movie, []error) + + // Wait is how long wait before sending a batch + Wait time.Duration + + // MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit + MaxBatch int +} + +// NewMovieLoader creates a new MovieLoader given a fetch, wait, and maxBatch +func NewMovieLoader(config MovieLoaderConfig) *MovieLoader { + return &MovieLoader{ + fetch: config.Fetch, + wait: config.Wait, + maxBatch: config.MaxBatch, + } +} + +// MovieLoader batches and caches requests +type MovieLoader struct { + // this method provides the data for the loader + fetch func(keys []int) ([]*models.Movie, []error) + + // how long to done before sending a batch + wait time.Duration + + // this will limit the maximum number of keys to send in one batch, 0 = no limit + maxBatch int + + // INTERNAL + + // lazily created cache + cache map[int]*models.Movie + + // the current batch. keys will continue to be collected until timeout is hit, + // then everything will be sent to the fetch method and out to the listeners + batch *movieLoaderBatch + + // mutex to prevent races + mu sync.Mutex +} + +type movieLoaderBatch struct { + keys []int + data []*models.Movie + error []error + closing bool + done chan struct{} +} + +// Load a Movie by key, batching and caching will be applied automatically +func (l *MovieLoader) Load(key int) (*models.Movie, error) { + return l.LoadThunk(key)() +} + +// LoadThunk returns a function that when called will block waiting for a Movie. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *MovieLoader) LoadThunk(key int) func() (*models.Movie, error) { + l.mu.Lock() + if it, ok := l.cache[key]; ok { + l.mu.Unlock() + return func() (*models.Movie, error) { + return it, nil + } + } + if l.batch == nil { + l.batch = &movieLoaderBatch{done: make(chan struct{})} + } + batch := l.batch + pos := batch.keyIndex(l, key) + l.mu.Unlock() + + return func() (*models.Movie, error) { + <-batch.done + + var data *models.Movie + if pos < len(batch.data) { + data = batch.data[pos] + } + + var err error + // its convenient to be able to return a single error for everything + if len(batch.error) == 1 { + err = batch.error[0] + } else if batch.error != nil { + err = batch.error[pos] + } + + if err == nil { + l.mu.Lock() + l.unsafeSet(key, data) + l.mu.Unlock() + } + + return data, err + } +} + +// LoadAll fetches many keys at once. It will be broken into appropriate sized +// sub batches depending on how the loader is configured +func (l *MovieLoader) LoadAll(keys []int) ([]*models.Movie, []error) { + results := make([]func() (*models.Movie, error), len(keys)) + + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + + movies := make([]*models.Movie, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + movies[i], errors[i] = thunk() + } + return movies, errors +} + +// LoadAllThunk returns a function that when called will block waiting for a Movies. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *MovieLoader) LoadAllThunk(keys []int) func() ([]*models.Movie, []error) { + results := make([]func() (*models.Movie, error), len(keys)) + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + return func() ([]*models.Movie, []error) { + movies := make([]*models.Movie, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + movies[i], errors[i] = thunk() + } + return movies, errors + } +} + +// Prime the cache with the provided key and value. If the key already exists, no change is made +// and false is returned. +// (To forcefully prime the cache, clear the key first with loader.clear(key).prime(key, value).) +func (l *MovieLoader) Prime(key int, value *models.Movie) bool { + l.mu.Lock() + var found bool + if _, found = l.cache[key]; !found { + // make a copy when writing to the cache, its easy to pass a pointer in from a loop var + // and end up with the whole cache pointing to the same value. + cpy := *value + l.unsafeSet(key, &cpy) + } + l.mu.Unlock() + return !found +} + +// Clear the value at key from the cache, if it exists +func (l *MovieLoader) Clear(key int) { + l.mu.Lock() + delete(l.cache, key) + l.mu.Unlock() +} + +func (l *MovieLoader) unsafeSet(key int, value *models.Movie) { + if l.cache == nil { + l.cache = map[int]*models.Movie{} + } + l.cache[key] = value +} + +// keyIndex will return the location of the key in the batch, if its not found +// it will add the key to the batch +func (b *movieLoaderBatch) keyIndex(l *MovieLoader, key int) int { + for i, existingKey := range b.keys { + if key == existingKey { + return i + } + } + + pos := len(b.keys) + b.keys = append(b.keys, key) + if pos == 0 { + go b.startTimer(l) + } + + if l.maxBatch != 0 && pos >= l.maxBatch-1 { + if !b.closing { + b.closing = true + l.batch = nil + go b.end(l) + } + } + + return pos +} + +func (b *movieLoaderBatch) startTimer(l *MovieLoader) { + time.Sleep(l.wait) + l.mu.Lock() + + // we must have hit a batch limit and are already finalizing this batch + if b.closing { + l.mu.Unlock() + return + } + + l.batch = nil + l.mu.Unlock() + + b.end(l) +} + +func (b *movieLoaderBatch) end(l *MovieLoader) { + b.data, b.error = l.fetch(b.keys) + close(b.done) +} diff --git a/internal/api/loaders/performerloader_gen.go b/internal/api/loaders/performerloader_gen.go new file mode 100644 index 000000000..d380b60b1 --- /dev/null +++ b/internal/api/loaders/performerloader_gen.go @@ -0,0 +1,224 @@ +// Code generated by github.com/vektah/dataloaden, DO NOT EDIT. + +package loaders + +import ( + "sync" + "time" + + "github.com/stashapp/stash/pkg/models" +) + +// PerformerLoaderConfig captures the config to create a new PerformerLoader +type PerformerLoaderConfig struct { + // Fetch is a method that provides the data for the loader + Fetch func(keys []int) ([]*models.Performer, []error) + + // Wait is how long wait before sending a batch + Wait time.Duration + + // MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit + MaxBatch int +} + +// NewPerformerLoader creates a new PerformerLoader given a fetch, wait, and maxBatch +func NewPerformerLoader(config PerformerLoaderConfig) *PerformerLoader { + return &PerformerLoader{ + fetch: config.Fetch, + wait: config.Wait, + maxBatch: config.MaxBatch, + } +} + +// PerformerLoader batches and caches requests +type PerformerLoader struct { + // this method provides the data for the loader + fetch func(keys []int) ([]*models.Performer, []error) + + // how long to done before sending a batch + wait time.Duration + + // this will limit the maximum number of keys to send in one batch, 0 = no limit + maxBatch int + + // INTERNAL + + // lazily created cache + cache map[int]*models.Performer + + // the current batch. keys will continue to be collected until timeout is hit, + // then everything will be sent to the fetch method and out to the listeners + batch *performerLoaderBatch + + // mutex to prevent races + mu sync.Mutex +} + +type performerLoaderBatch struct { + keys []int + data []*models.Performer + error []error + closing bool + done chan struct{} +} + +// Load a Performer by key, batching and caching will be applied automatically +func (l *PerformerLoader) Load(key int) (*models.Performer, error) { + return l.LoadThunk(key)() +} + +// LoadThunk returns a function that when called will block waiting for a Performer. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *PerformerLoader) LoadThunk(key int) func() (*models.Performer, error) { + l.mu.Lock() + if it, ok := l.cache[key]; ok { + l.mu.Unlock() + return func() (*models.Performer, error) { + return it, nil + } + } + if l.batch == nil { + l.batch = &performerLoaderBatch{done: make(chan struct{})} + } + batch := l.batch + pos := batch.keyIndex(l, key) + l.mu.Unlock() + + return func() (*models.Performer, error) { + <-batch.done + + var data *models.Performer + if pos < len(batch.data) { + data = batch.data[pos] + } + + var err error + // its convenient to be able to return a single error for everything + if len(batch.error) == 1 { + err = batch.error[0] + } else if batch.error != nil { + err = batch.error[pos] + } + + if err == nil { + l.mu.Lock() + l.unsafeSet(key, data) + l.mu.Unlock() + } + + return data, err + } +} + +// LoadAll fetches many keys at once. It will be broken into appropriate sized +// sub batches depending on how the loader is configured +func (l *PerformerLoader) LoadAll(keys []int) ([]*models.Performer, []error) { + results := make([]func() (*models.Performer, error), len(keys)) + + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + + performers := make([]*models.Performer, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + performers[i], errors[i] = thunk() + } + return performers, errors +} + +// LoadAllThunk returns a function that when called will block waiting for a Performers. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *PerformerLoader) LoadAllThunk(keys []int) func() ([]*models.Performer, []error) { + results := make([]func() (*models.Performer, error), len(keys)) + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + return func() ([]*models.Performer, []error) { + performers := make([]*models.Performer, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + performers[i], errors[i] = thunk() + } + return performers, errors + } +} + +// Prime the cache with the provided key and value. If the key already exists, no change is made +// and false is returned. +// (To forcefully prime the cache, clear the key first with loader.clear(key).prime(key, value).) +func (l *PerformerLoader) Prime(key int, value *models.Performer) bool { + l.mu.Lock() + var found bool + if _, found = l.cache[key]; !found { + // make a copy when writing to the cache, its easy to pass a pointer in from a loop var + // and end up with the whole cache pointing to the same value. + cpy := *value + l.unsafeSet(key, &cpy) + } + l.mu.Unlock() + return !found +} + +// Clear the value at key from the cache, if it exists +func (l *PerformerLoader) Clear(key int) { + l.mu.Lock() + delete(l.cache, key) + l.mu.Unlock() +} + +func (l *PerformerLoader) unsafeSet(key int, value *models.Performer) { + if l.cache == nil { + l.cache = map[int]*models.Performer{} + } + l.cache[key] = value +} + +// keyIndex will return the location of the key in the batch, if its not found +// it will add the key to the batch +func (b *performerLoaderBatch) keyIndex(l *PerformerLoader, key int) int { + for i, existingKey := range b.keys { + if key == existingKey { + return i + } + } + + pos := len(b.keys) + b.keys = append(b.keys, key) + if pos == 0 { + go b.startTimer(l) + } + + if l.maxBatch != 0 && pos >= l.maxBatch-1 { + if !b.closing { + b.closing = true + l.batch = nil + go b.end(l) + } + } + + return pos +} + +func (b *performerLoaderBatch) startTimer(l *PerformerLoader) { + time.Sleep(l.wait) + l.mu.Lock() + + // we must have hit a batch limit and are already finalizing this batch + if b.closing { + l.mu.Unlock() + return + } + + l.batch = nil + l.mu.Unlock() + + b.end(l) +} + +func (b *performerLoaderBatch) end(l *PerformerLoader) { + b.data, b.error = l.fetch(b.keys) + close(b.done) +} diff --git a/internal/api/loaders/sceneloader_gen.go b/internal/api/loaders/sceneloader_gen.go new file mode 100644 index 000000000..1636383db --- /dev/null +++ b/internal/api/loaders/sceneloader_gen.go @@ -0,0 +1,224 @@ +// Code generated by github.com/vektah/dataloaden, DO NOT EDIT. + +package loaders + +import ( + "sync" + "time" + + "github.com/stashapp/stash/pkg/models" +) + +// SceneLoaderConfig captures the config to create a new SceneLoader +type SceneLoaderConfig struct { + // Fetch is a method that provides the data for the loader + Fetch func(keys []int) ([]*models.Scene, []error) + + // Wait is how long wait before sending a batch + Wait time.Duration + + // MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit + MaxBatch int +} + +// NewSceneLoader creates a new SceneLoader given a fetch, wait, and maxBatch +func NewSceneLoader(config SceneLoaderConfig) *SceneLoader { + return &SceneLoader{ + fetch: config.Fetch, + wait: config.Wait, + maxBatch: config.MaxBatch, + } +} + +// SceneLoader batches and caches requests +type SceneLoader struct { + // this method provides the data for the loader + fetch func(keys []int) ([]*models.Scene, []error) + + // how long to done before sending a batch + wait time.Duration + + // this will limit the maximum number of keys to send in one batch, 0 = no limit + maxBatch int + + // INTERNAL + + // lazily created cache + cache map[int]*models.Scene + + // the current batch. keys will continue to be collected until timeout is hit, + // then everything will be sent to the fetch method and out to the listeners + batch *sceneLoaderBatch + + // mutex to prevent races + mu sync.Mutex +} + +type sceneLoaderBatch struct { + keys []int + data []*models.Scene + error []error + closing bool + done chan struct{} +} + +// Load a Scene by key, batching and caching will be applied automatically +func (l *SceneLoader) Load(key int) (*models.Scene, error) { + return l.LoadThunk(key)() +} + +// LoadThunk returns a function that when called will block waiting for a Scene. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *SceneLoader) LoadThunk(key int) func() (*models.Scene, error) { + l.mu.Lock() + if it, ok := l.cache[key]; ok { + l.mu.Unlock() + return func() (*models.Scene, error) { + return it, nil + } + } + if l.batch == nil { + l.batch = &sceneLoaderBatch{done: make(chan struct{})} + } + batch := l.batch + pos := batch.keyIndex(l, key) + l.mu.Unlock() + + return func() (*models.Scene, error) { + <-batch.done + + var data *models.Scene + if pos < len(batch.data) { + data = batch.data[pos] + } + + var err error + // its convenient to be able to return a single error for everything + if len(batch.error) == 1 { + err = batch.error[0] + } else if batch.error != nil { + err = batch.error[pos] + } + + if err == nil { + l.mu.Lock() + l.unsafeSet(key, data) + l.mu.Unlock() + } + + return data, err + } +} + +// LoadAll fetches many keys at once. It will be broken into appropriate sized +// sub batches depending on how the loader is configured +func (l *SceneLoader) LoadAll(keys []int) ([]*models.Scene, []error) { + results := make([]func() (*models.Scene, error), len(keys)) + + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + + scenes := make([]*models.Scene, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + scenes[i], errors[i] = thunk() + } + return scenes, errors +} + +// LoadAllThunk returns a function that when called will block waiting for a Scenes. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *SceneLoader) LoadAllThunk(keys []int) func() ([]*models.Scene, []error) { + results := make([]func() (*models.Scene, error), len(keys)) + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + return func() ([]*models.Scene, []error) { + scenes := make([]*models.Scene, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + scenes[i], errors[i] = thunk() + } + return scenes, errors + } +} + +// Prime the cache with the provided key and value. If the key already exists, no change is made +// and false is returned. +// (To forcefully prime the cache, clear the key first with loader.clear(key).prime(key, value).) +func (l *SceneLoader) Prime(key int, value *models.Scene) bool { + l.mu.Lock() + var found bool + if _, found = l.cache[key]; !found { + // make a copy when writing to the cache, its easy to pass a pointer in from a loop var + // and end up with the whole cache pointing to the same value. + cpy := *value + l.unsafeSet(key, &cpy) + } + l.mu.Unlock() + return !found +} + +// Clear the value at key from the cache, if it exists +func (l *SceneLoader) Clear(key int) { + l.mu.Lock() + delete(l.cache, key) + l.mu.Unlock() +} + +func (l *SceneLoader) unsafeSet(key int, value *models.Scene) { + if l.cache == nil { + l.cache = map[int]*models.Scene{} + } + l.cache[key] = value +} + +// keyIndex will return the location of the key in the batch, if its not found +// it will add the key to the batch +func (b *sceneLoaderBatch) keyIndex(l *SceneLoader, key int) int { + for i, existingKey := range b.keys { + if key == existingKey { + return i + } + } + + pos := len(b.keys) + b.keys = append(b.keys, key) + if pos == 0 { + go b.startTimer(l) + } + + if l.maxBatch != 0 && pos >= l.maxBatch-1 { + if !b.closing { + b.closing = true + l.batch = nil + go b.end(l) + } + } + + return pos +} + +func (b *sceneLoaderBatch) startTimer(l *SceneLoader) { + time.Sleep(l.wait) + l.mu.Lock() + + // we must have hit a batch limit and are already finalizing this batch + if b.closing { + l.mu.Unlock() + return + } + + l.batch = nil + l.mu.Unlock() + + b.end(l) +} + +func (b *sceneLoaderBatch) end(l *SceneLoader) { + b.data, b.error = l.fetch(b.keys) + close(b.done) +} diff --git a/internal/api/loaders/studioloader_gen.go b/internal/api/loaders/studioloader_gen.go new file mode 100644 index 000000000..877437dad --- /dev/null +++ b/internal/api/loaders/studioloader_gen.go @@ -0,0 +1,224 @@ +// Code generated by github.com/vektah/dataloaden, DO NOT EDIT. + +package loaders + +import ( + "sync" + "time" + + "github.com/stashapp/stash/pkg/models" +) + +// StudioLoaderConfig captures the config to create a new StudioLoader +type StudioLoaderConfig struct { + // Fetch is a method that provides the data for the loader + Fetch func(keys []int) ([]*models.Studio, []error) + + // Wait is how long wait before sending a batch + Wait time.Duration + + // MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit + MaxBatch int +} + +// NewStudioLoader creates a new StudioLoader given a fetch, wait, and maxBatch +func NewStudioLoader(config StudioLoaderConfig) *StudioLoader { + return &StudioLoader{ + fetch: config.Fetch, + wait: config.Wait, + maxBatch: config.MaxBatch, + } +} + +// StudioLoader batches and caches requests +type StudioLoader struct { + // this method provides the data for the loader + fetch func(keys []int) ([]*models.Studio, []error) + + // how long to done before sending a batch + wait time.Duration + + // this will limit the maximum number of keys to send in one batch, 0 = no limit + maxBatch int + + // INTERNAL + + // lazily created cache + cache map[int]*models.Studio + + // the current batch. keys will continue to be collected until timeout is hit, + // then everything will be sent to the fetch method and out to the listeners + batch *studioLoaderBatch + + // mutex to prevent races + mu sync.Mutex +} + +type studioLoaderBatch struct { + keys []int + data []*models.Studio + error []error + closing bool + done chan struct{} +} + +// Load a Studio by key, batching and caching will be applied automatically +func (l *StudioLoader) Load(key int) (*models.Studio, error) { + return l.LoadThunk(key)() +} + +// LoadThunk returns a function that when called will block waiting for a Studio. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *StudioLoader) LoadThunk(key int) func() (*models.Studio, error) { + l.mu.Lock() + if it, ok := l.cache[key]; ok { + l.mu.Unlock() + return func() (*models.Studio, error) { + return it, nil + } + } + if l.batch == nil { + l.batch = &studioLoaderBatch{done: make(chan struct{})} + } + batch := l.batch + pos := batch.keyIndex(l, key) + l.mu.Unlock() + + return func() (*models.Studio, error) { + <-batch.done + + var data *models.Studio + if pos < len(batch.data) { + data = batch.data[pos] + } + + var err error + // its convenient to be able to return a single error for everything + if len(batch.error) == 1 { + err = batch.error[0] + } else if batch.error != nil { + err = batch.error[pos] + } + + if err == nil { + l.mu.Lock() + l.unsafeSet(key, data) + l.mu.Unlock() + } + + return data, err + } +} + +// LoadAll fetches many keys at once. It will be broken into appropriate sized +// sub batches depending on how the loader is configured +func (l *StudioLoader) LoadAll(keys []int) ([]*models.Studio, []error) { + results := make([]func() (*models.Studio, error), len(keys)) + + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + + studios := make([]*models.Studio, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + studios[i], errors[i] = thunk() + } + return studios, errors +} + +// LoadAllThunk returns a function that when called will block waiting for a Studios. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *StudioLoader) LoadAllThunk(keys []int) func() ([]*models.Studio, []error) { + results := make([]func() (*models.Studio, error), len(keys)) + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + return func() ([]*models.Studio, []error) { + studios := make([]*models.Studio, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + studios[i], errors[i] = thunk() + } + return studios, errors + } +} + +// Prime the cache with the provided key and value. If the key already exists, no change is made +// and false is returned. +// (To forcefully prime the cache, clear the key first with loader.clear(key).prime(key, value).) +func (l *StudioLoader) Prime(key int, value *models.Studio) bool { + l.mu.Lock() + var found bool + if _, found = l.cache[key]; !found { + // make a copy when writing to the cache, its easy to pass a pointer in from a loop var + // and end up with the whole cache pointing to the same value. + cpy := *value + l.unsafeSet(key, &cpy) + } + l.mu.Unlock() + return !found +} + +// Clear the value at key from the cache, if it exists +func (l *StudioLoader) Clear(key int) { + l.mu.Lock() + delete(l.cache, key) + l.mu.Unlock() +} + +func (l *StudioLoader) unsafeSet(key int, value *models.Studio) { + if l.cache == nil { + l.cache = map[int]*models.Studio{} + } + l.cache[key] = value +} + +// keyIndex will return the location of the key in the batch, if its not found +// it will add the key to the batch +func (b *studioLoaderBatch) keyIndex(l *StudioLoader, key int) int { + for i, existingKey := range b.keys { + if key == existingKey { + return i + } + } + + pos := len(b.keys) + b.keys = append(b.keys, key) + if pos == 0 { + go b.startTimer(l) + } + + if l.maxBatch != 0 && pos >= l.maxBatch-1 { + if !b.closing { + b.closing = true + l.batch = nil + go b.end(l) + } + } + + return pos +} + +func (b *studioLoaderBatch) startTimer(l *StudioLoader) { + time.Sleep(l.wait) + l.mu.Lock() + + // we must have hit a batch limit and are already finalizing this batch + if b.closing { + l.mu.Unlock() + return + } + + l.batch = nil + l.mu.Unlock() + + b.end(l) +} + +func (b *studioLoaderBatch) end(l *StudioLoader) { + b.data, b.error = l.fetch(b.keys) + close(b.done) +} diff --git a/internal/api/loaders/tagloader_gen.go b/internal/api/loaders/tagloader_gen.go new file mode 100644 index 000000000..45d70f639 --- /dev/null +++ b/internal/api/loaders/tagloader_gen.go @@ -0,0 +1,224 @@ +// Code generated by github.com/vektah/dataloaden, DO NOT EDIT. + +package loaders + +import ( + "sync" + "time" + + "github.com/stashapp/stash/pkg/models" +) + +// TagLoaderConfig captures the config to create a new TagLoader +type TagLoaderConfig struct { + // Fetch is a method that provides the data for the loader + Fetch func(keys []int) ([]*models.Tag, []error) + + // Wait is how long wait before sending a batch + Wait time.Duration + + // MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit + MaxBatch int +} + +// NewTagLoader creates a new TagLoader given a fetch, wait, and maxBatch +func NewTagLoader(config TagLoaderConfig) *TagLoader { + return &TagLoader{ + fetch: config.Fetch, + wait: config.Wait, + maxBatch: config.MaxBatch, + } +} + +// TagLoader batches and caches requests +type TagLoader struct { + // this method provides the data for the loader + fetch func(keys []int) ([]*models.Tag, []error) + + // how long to done before sending a batch + wait time.Duration + + // this will limit the maximum number of keys to send in one batch, 0 = no limit + maxBatch int + + // INTERNAL + + // lazily created cache + cache map[int]*models.Tag + + // the current batch. keys will continue to be collected until timeout is hit, + // then everything will be sent to the fetch method and out to the listeners + batch *tagLoaderBatch + + // mutex to prevent races + mu sync.Mutex +} + +type tagLoaderBatch struct { + keys []int + data []*models.Tag + error []error + closing bool + done chan struct{} +} + +// Load a Tag by key, batching and caching will be applied automatically +func (l *TagLoader) Load(key int) (*models.Tag, error) { + return l.LoadThunk(key)() +} + +// LoadThunk returns a function that when called will block waiting for a Tag. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *TagLoader) LoadThunk(key int) func() (*models.Tag, error) { + l.mu.Lock() + if it, ok := l.cache[key]; ok { + l.mu.Unlock() + return func() (*models.Tag, error) { + return it, nil + } + } + if l.batch == nil { + l.batch = &tagLoaderBatch{done: make(chan struct{})} + } + batch := l.batch + pos := batch.keyIndex(l, key) + l.mu.Unlock() + + return func() (*models.Tag, error) { + <-batch.done + + var data *models.Tag + if pos < len(batch.data) { + data = batch.data[pos] + } + + var err error + // its convenient to be able to return a single error for everything + if len(batch.error) == 1 { + err = batch.error[0] + } else if batch.error != nil { + err = batch.error[pos] + } + + if err == nil { + l.mu.Lock() + l.unsafeSet(key, data) + l.mu.Unlock() + } + + return data, err + } +} + +// LoadAll fetches many keys at once. It will be broken into appropriate sized +// sub batches depending on how the loader is configured +func (l *TagLoader) LoadAll(keys []int) ([]*models.Tag, []error) { + results := make([]func() (*models.Tag, error), len(keys)) + + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + + tags := make([]*models.Tag, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + tags[i], errors[i] = thunk() + } + return tags, errors +} + +// LoadAllThunk returns a function that when called will block waiting for a Tags. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *TagLoader) LoadAllThunk(keys []int) func() ([]*models.Tag, []error) { + results := make([]func() (*models.Tag, error), len(keys)) + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + return func() ([]*models.Tag, []error) { + tags := make([]*models.Tag, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + tags[i], errors[i] = thunk() + } + return tags, errors + } +} + +// Prime the cache with the provided key and value. If the key already exists, no change is made +// and false is returned. +// (To forcefully prime the cache, clear the key first with loader.clear(key).prime(key, value).) +func (l *TagLoader) Prime(key int, value *models.Tag) bool { + l.mu.Lock() + var found bool + if _, found = l.cache[key]; !found { + // make a copy when writing to the cache, its easy to pass a pointer in from a loop var + // and end up with the whole cache pointing to the same value. + cpy := *value + l.unsafeSet(key, &cpy) + } + l.mu.Unlock() + return !found +} + +// Clear the value at key from the cache, if it exists +func (l *TagLoader) Clear(key int) { + l.mu.Lock() + delete(l.cache, key) + l.mu.Unlock() +} + +func (l *TagLoader) unsafeSet(key int, value *models.Tag) { + if l.cache == nil { + l.cache = map[int]*models.Tag{} + } + l.cache[key] = value +} + +// keyIndex will return the location of the key in the batch, if its not found +// it will add the key to the batch +func (b *tagLoaderBatch) keyIndex(l *TagLoader, key int) int { + for i, existingKey := range b.keys { + if key == existingKey { + return i + } + } + + pos := len(b.keys) + b.keys = append(b.keys, key) + if pos == 0 { + go b.startTimer(l) + } + + if l.maxBatch != 0 && pos >= l.maxBatch-1 { + if !b.closing { + b.closing = true + l.batch = nil + go b.end(l) + } + } + + return pos +} + +func (b *tagLoaderBatch) startTimer(l *TagLoader) { + time.Sleep(l.wait) + l.mu.Lock() + + // we must have hit a batch limit and are already finalizing this batch + if b.closing { + l.mu.Unlock() + return + } + + l.batch = nil + l.mu.Unlock() + + b.end(l) +} + +func (b *tagLoaderBatch) end(l *TagLoader) { + b.data, b.error = l.fetch(b.keys) + close(b.done) +} diff --git a/internal/api/resolver.go b/internal/api/resolver.go index 44ee55f8c..5db47c3b9 100644 --- a/internal/api/resolver.go +++ b/internal/api/resolver.go @@ -245,3 +245,13 @@ func (r *queryResolver) SceneMarkerTags(ctx context.Context, scene_id string) ([ return result, nil } + +func firstError(errs []error) error { + for _, e := range errs { + if e != nil { + return e + } + } + + return nil +} diff --git a/internal/api/resolver_model_gallery.go b/internal/api/resolver_model_gallery.go index e63387fa1..fd153296f 100644 --- a/internal/api/resolver_model_gallery.go +++ b/internal/api/resolver_model_gallery.go @@ -5,6 +5,8 @@ import ( "strconv" "time" + "github.com/stashapp/stash/internal/api/loaders" + "github.com/stashapp/stash/pkg/file" "github.com/stashapp/stash/pkg/image" "github.com/stashapp/stash/pkg/models" @@ -145,15 +147,17 @@ func (r *galleryResolver) Date(ctx context.Context, obj *models.Gallery) (*strin } func (r *galleryResolver) Scenes(ctx context.Context, obj *models.Gallery) (ret []*models.Scene, err error) { - if err := r.withTxn(ctx, func(ctx context.Context) error { - var err error - ret, err = r.repository.Scene.FindMany(ctx, obj.SceneIDs) - return err - }); err != nil { - return nil, err + if !obj.SceneIDs.Loaded() { + if err := r.withTxn(ctx, func(ctx context.Context) error { + return obj.LoadSceneIDs(ctx, r.repository.Gallery) + }); err != nil { + return nil, err + } } - return ret, nil + var errs []error + ret, errs = loaders.From(ctx).SceneByID.LoadAll(obj.SceneIDs.List()) + return ret, firstError(errs) } func (r *galleryResolver) Studio(ctx context.Context, obj *models.Gallery) (ret *models.Studio, err error) { @@ -161,39 +165,35 @@ func (r *galleryResolver) Studio(ctx context.Context, obj *models.Gallery) (ret return nil, nil } - if err := r.withTxn(ctx, func(ctx context.Context) error { - var err error - ret, err = r.repository.Studio.Find(ctx, *obj.StudioID) - return err - }); err != nil { - return nil, err - } - - return ret, nil + return loaders.From(ctx).StudioByID.Load(*obj.StudioID) } func (r *galleryResolver) Tags(ctx context.Context, obj *models.Gallery) (ret []*models.Tag, err error) { - if err := r.withTxn(ctx, func(ctx context.Context) error { - var err error - ret, err = r.repository.Tag.FindMany(ctx, obj.TagIDs) - return err - }); err != nil { - return nil, err + if !obj.TagIDs.Loaded() { + if err := r.withTxn(ctx, func(ctx context.Context) error { + return obj.LoadTagIDs(ctx, r.repository.Gallery) + }); err != nil { + return nil, err + } } - return ret, nil + var errs []error + ret, errs = loaders.From(ctx).TagByID.LoadAll(obj.TagIDs.List()) + return ret, firstError(errs) } func (r *galleryResolver) Performers(ctx context.Context, obj *models.Gallery) (ret []*models.Performer, err error) { - if err := r.withTxn(ctx, func(ctx context.Context) error { - var err error - ret, err = r.repository.Performer.FindMany(ctx, obj.PerformerIDs) - return err - }); err != nil { - return nil, err + if !obj.PerformerIDs.Loaded() { + if err := r.withTxn(ctx, func(ctx context.Context) error { + return obj.LoadPerformerIDs(ctx, r.repository.Gallery) + }); err != nil { + return nil, err + } } - return ret, nil + var errs []error + ret, errs = loaders.From(ctx).PerformerByID.LoadAll(obj.PerformerIDs.List()) + return ret, firstError(errs) } func (r *galleryResolver) ImageCount(ctx context.Context, obj *models.Gallery) (ret int, err error) { diff --git a/internal/api/resolver_model_image.go b/internal/api/resolver_model_image.go index 75f4bf0ac..0cd4c8870 100644 --- a/internal/api/resolver_model_image.go +++ b/internal/api/resolver_model_image.go @@ -5,6 +5,7 @@ import ( "strconv" "time" + "github.com/stashapp/stash/internal/api/loaders" "github.com/stashapp/stash/internal/api/urlbuilders" "github.com/stashapp/stash/pkg/models" ) @@ -74,15 +75,17 @@ func (r *imageResolver) Paths(ctx context.Context, obj *models.Image) (*ImagePat } func (r *imageResolver) Galleries(ctx context.Context, obj *models.Image) (ret []*models.Gallery, err error) { - if err := r.withTxn(ctx, func(ctx context.Context) error { - var err error - ret, err = r.repository.Gallery.FindMany(ctx, obj.GalleryIDs) - return err - }); err != nil { - return nil, err + if !obj.GalleryIDs.Loaded() { + if err := r.withTxn(ctx, func(ctx context.Context) error { + return obj.LoadGalleryIDs(ctx, r.repository.Image) + }); err != nil { + return nil, err + } } - return ret, nil + var errs []error + ret, errs = loaders.From(ctx).GalleryByID.LoadAll(obj.GalleryIDs.List()) + return ret, firstError(errs) } func (r *imageResolver) Studio(ctx context.Context, obj *models.Image) (ret *models.Studio, err error) { @@ -90,34 +93,33 @@ func (r *imageResolver) Studio(ctx context.Context, obj *models.Image) (ret *mod return nil, nil } - if err := r.withTxn(ctx, func(ctx context.Context) error { - ret, err = r.repository.Studio.Find(ctx, *obj.StudioID) - return err - }); err != nil { - return nil, err - } - - return ret, nil + return loaders.From(ctx).StudioByID.Load(*obj.StudioID) } func (r *imageResolver) Tags(ctx context.Context, obj *models.Image) (ret []*models.Tag, err error) { - if err := r.withTxn(ctx, func(ctx context.Context) error { - ret, err = r.repository.Tag.FindMany(ctx, obj.TagIDs) - return err - }); err != nil { - return nil, err + if !obj.TagIDs.Loaded() { + if err := r.withTxn(ctx, func(ctx context.Context) error { + return obj.LoadTagIDs(ctx, r.repository.Image) + }); err != nil { + return nil, err + } } - return ret, nil + var errs []error + ret, errs = loaders.From(ctx).TagByID.LoadAll(obj.TagIDs.List()) + return ret, firstError(errs) } func (r *imageResolver) Performers(ctx context.Context, obj *models.Image) (ret []*models.Performer, err error) { - if err := r.withTxn(ctx, func(ctx context.Context) error { - ret, err = r.repository.Performer.FindMany(ctx, obj.PerformerIDs) - return err - }); err != nil { - return nil, err + if !obj.PerformerIDs.Loaded() { + if err := r.withTxn(ctx, func(ctx context.Context) error { + return obj.LoadPerformerIDs(ctx, r.repository.Image) + }); err != nil { + return nil, err + } } - return ret, nil + var errs []error + ret, errs = loaders.From(ctx).PerformerByID.LoadAll(obj.PerformerIDs.List()) + return ret, firstError(errs) } diff --git a/internal/api/resolver_model_movie.go b/internal/api/resolver_model_movie.go index 9085eee82..e587e3ba5 100644 --- a/internal/api/resolver_model_movie.go +++ b/internal/api/resolver_model_movie.go @@ -4,6 +4,7 @@ import ( "context" "time" + "github.com/stashapp/stash/internal/api/loaders" "github.com/stashapp/stash/internal/api/urlbuilders" "github.com/stashapp/stash/pkg/models" "github.com/stashapp/stash/pkg/utils" @@ -56,14 +57,7 @@ func (r *movieResolver) Rating(ctx context.Context, obj *models.Movie) (*int, er func (r *movieResolver) Studio(ctx context.Context, obj *models.Movie) (ret *models.Studio, err error) { if obj.StudioID.Valid { - if err := r.withTxn(ctx, func(ctx context.Context) error { - ret, err = r.repository.Studio.Find(ctx, int(obj.StudioID.Int64)) - return err - }); err != nil { - return nil, err - } - - return ret, nil + return loaders.From(ctx).StudioByID.Load(int(obj.StudioID.Int64)) } return nil, nil diff --git a/internal/api/resolver_model_performer.go b/internal/api/resolver_model_performer.go index 3a44a1cc0..9e66fb38d 100644 --- a/internal/api/resolver_model_performer.go +++ b/internal/api/resolver_model_performer.go @@ -199,15 +199,17 @@ func (r *performerResolver) Scenes(ctx context.Context, obj *models.Performer) ( return ret, nil } -func (r *performerResolver) StashIds(ctx context.Context, obj *models.Performer) (ret []*models.StashID, err error) { +func (r *performerResolver) StashIds(ctx context.Context, obj *models.Performer) ([]*models.StashID, error) { + var ret []models.StashID if err := r.withTxn(ctx, func(ctx context.Context) error { + var err error ret, err = r.repository.Performer.GetStashIDs(ctx, obj.ID) return err }); err != nil { return nil, err } - return ret, nil + return stashIDsSliceToPtrSlice(ret), nil } func (r *performerResolver) Rating(ctx context.Context, obj *models.Performer) (*int, error) { diff --git a/internal/api/resolver_model_scene.go b/internal/api/resolver_model_scene.go index 3b75be9ff..f0ccf6900 100644 --- a/internal/api/resolver_model_scene.go +++ b/internal/api/resolver_model_scene.go @@ -6,6 +6,7 @@ import ( "strconv" "time" + "github.com/stashapp/stash/internal/api/loaders" "github.com/stashapp/stash/internal/api/urlbuilders" "github.com/stashapp/stash/internal/manager" "github.com/stashapp/stash/pkg/file" @@ -163,14 +164,17 @@ func (r *sceneResolver) Captions(ctx context.Context, obj *models.Scene) (ret [] } func (r *sceneResolver) Galleries(ctx context.Context, obj *models.Scene) (ret []*models.Gallery, err error) { - if err := r.withTxn(ctx, func(ctx context.Context) error { - ret, err = r.repository.Gallery.FindMany(ctx, obj.GalleryIDs) - return err - }); err != nil { - return nil, err + if !obj.GalleryIDs.Loaded() { + if err := r.withTxn(ctx, func(ctx context.Context) error { + return obj.LoadGalleryIDs(ctx, r.repository.Scene) + }); err != nil { + return nil, err + } } - return ret, nil + var errs []error + ret, errs = loaders.From(ctx).GalleryByID.LoadAll(obj.GalleryIDs.List()) + return ret, firstError(errs) } func (r *sceneResolver) Studio(ctx context.Context, obj *models.Scene) (ret *models.Studio, err error) { @@ -178,62 +182,86 @@ func (r *sceneResolver) Studio(ctx context.Context, obj *models.Scene) (ret *mod return nil, nil } - if err := r.withTxn(ctx, func(ctx context.Context) error { - ret, err = r.repository.Studio.Find(ctx, *obj.StudioID) - return err - }); err != nil { - return nil, err - } - - return ret, nil + return loaders.From(ctx).StudioByID.Load(*obj.StudioID) } func (r *sceneResolver) Movies(ctx context.Context, obj *models.Scene) (ret []*SceneMovie, err error) { - if err := r.withTxn(ctx, func(ctx context.Context) error { - mqb := r.repository.Movie + if !obj.Movies.Loaded() { + if err := r.withTxn(ctx, func(ctx context.Context) error { + qb := r.repository.Scene - for _, sm := range obj.Movies { - movie, err := mqb.Find(ctx, sm.MovieID) - if err != nil { - return err - } + return obj.LoadMovies(ctx, qb) + }); err != nil { + return nil, err + } + } - sceneIdx := sm.SceneIndex - sceneMovie := &SceneMovie{ - Movie: movie, - SceneIndex: sceneIdx, - } + loader := loaders.From(ctx).MovieByID - ret = append(ret, sceneMovie) + for _, sm := range obj.Movies.List() { + movie, err := loader.Load(sm.MovieID) + if err != nil { + return nil, err } - return nil - }); err != nil { - return nil, err + sceneIdx := sm.SceneIndex + sceneMovie := &SceneMovie{ + Movie: movie, + SceneIndex: sceneIdx, + } + + ret = append(ret, sceneMovie) } + return ret, nil } func (r *sceneResolver) Tags(ctx context.Context, obj *models.Scene) (ret []*models.Tag, err error) { - if err := r.withTxn(ctx, func(ctx context.Context) error { - ret, err = r.repository.Tag.FindMany(ctx, obj.TagIDs) - return err - }); err != nil { - return nil, err + if !obj.TagIDs.Loaded() { + if err := r.withTxn(ctx, func(ctx context.Context) error { + return obj.LoadTagIDs(ctx, r.repository.Scene) + }); err != nil { + return nil, err + } } - return ret, nil + var errs []error + ret, errs = loaders.From(ctx).TagByID.LoadAll(obj.TagIDs.List()) + return ret, firstError(errs) } func (r *sceneResolver) Performers(ctx context.Context, obj *models.Scene) (ret []*models.Performer, err error) { + if !obj.PerformerIDs.Loaded() { + if err := r.withTxn(ctx, func(ctx context.Context) error { + return obj.LoadPerformerIDs(ctx, r.repository.Scene) + }); err != nil { + return nil, err + } + } + + var errs []error + ret, errs = loaders.From(ctx).PerformerByID.LoadAll(obj.PerformerIDs.List()) + return ret, firstError(errs) +} + +func stashIDsSliceToPtrSlice(v []models.StashID) []*models.StashID { + ret := make([]*models.StashID, len(v)) + for i, vv := range v { + c := vv + ret[i] = &c + } + + return ret +} + +func (r *sceneResolver) StashIds(ctx context.Context, obj *models.Scene) (ret []*models.StashID, err error) { if err := r.withTxn(ctx, func(ctx context.Context) error { - ret, err = r.repository.Performer.FindMany(ctx, obj.PerformerIDs) - return err + return obj.LoadStashIDs(ctx, r.repository.Scene) }); err != nil { return nil, err } - return ret, nil + return stashIDsSliceToPtrSlice(obj.StashIDs.List()), nil } func (r *sceneResolver) Phash(ctx context.Context, obj *models.Scene) (*string, error) { diff --git a/internal/api/resolver_model_studio.go b/internal/api/resolver_model_studio.go index a7fc56442..79ef8259e 100644 --- a/internal/api/resolver_model_studio.go +++ b/internal/api/resolver_model_studio.go @@ -4,6 +4,7 @@ import ( "context" "time" + "github.com/stashapp/stash/internal/api/loaders" "github.com/stashapp/stash/internal/api/urlbuilders" "github.com/stashapp/stash/pkg/gallery" "github.com/stashapp/stash/pkg/image" @@ -97,14 +98,7 @@ func (r *studioResolver) ParentStudio(ctx context.Context, obj *models.Studio) ( return nil, nil } - if err := r.withTxn(ctx, func(ctx context.Context) error { - ret, err = r.repository.Studio.Find(ctx, int(obj.ParentID.Int64)) - return err - }); err != nil { - return nil, err - } - - return ret, nil + return loaders.From(ctx).StudioByID.Load(int(obj.ParentID.Int64)) } func (r *studioResolver) ChildStudios(ctx context.Context, obj *models.Studio) (ret []*models.Studio, err error) { @@ -118,15 +112,17 @@ func (r *studioResolver) ChildStudios(ctx context.Context, obj *models.Studio) ( return ret, nil } -func (r *studioResolver) StashIds(ctx context.Context, obj *models.Studio) (ret []*models.StashID, err error) { +func (r *studioResolver) StashIds(ctx context.Context, obj *models.Studio) ([]*models.StashID, error) { + var ret []models.StashID if err := r.withTxn(ctx, func(ctx context.Context) error { + var err error ret, err = r.repository.Studio.GetStashIDs(ctx, obj.ID) return err }); err != nil { return nil, err } - return ret, nil + return stashIDsSliceToPtrSlice(ret), nil } func (r *studioResolver) Rating(ctx context.Context, obj *models.Studio) (*int, error) { diff --git a/internal/api/resolver_mutation_gallery.go b/internal/api/resolver_mutation_gallery.go index 969917979..6bede0185 100644 --- a/internal/api/resolver_mutation_gallery.go +++ b/internal/api/resolver_mutation_gallery.go @@ -36,11 +36,27 @@ func (r *mutationResolver) GalleryCreate(ctx context.Context, input GalleryCreat } // Populate a new performer from the input + performerIDs, err := stringslice.StringSliceToIntSlice(input.PerformerIds) + if err != nil { + return nil, fmt.Errorf("converting performer ids: %w", err) + } + tagIDs, err := stringslice.StringSliceToIntSlice(input.TagIds) + if err != nil { + return nil, fmt.Errorf("converting tag ids: %w", err) + } + sceneIDs, err := stringslice.StringSliceToIntSlice(input.SceneIds) + if err != nil { + return nil, fmt.Errorf("converting scene ids: %w", err) + } + currentTime := time.Now() newGallery := models.Gallery{ - Title: input.Title, - CreatedAt: currentTime, - UpdatedAt: currentTime, + Title: input.Title, + PerformerIDs: models.NewRelatedIDs(performerIDs), + TagIDs: models.NewRelatedIDs(tagIDs), + SceneIDs: models.NewRelatedIDs(sceneIDs), + CreatedAt: currentTime, + UpdatedAt: currentTime, } if input.URL != nil { newGallery.URL = *input.URL @@ -60,20 +76,6 @@ func (r *mutationResolver) GalleryCreate(ctx context.Context, input GalleryCreat newGallery.StudioID = &studioID } - var err error - newGallery.PerformerIDs, err = stringslice.StringSliceToIntSlice(input.PerformerIds) - if err != nil { - return nil, fmt.Errorf("converting performer ids: %w", err) - } - newGallery.TagIDs, err = stringslice.StringSliceToIntSlice(input.TagIds) - if err != nil { - return nil, fmt.Errorf("converting tag ids: %w", err) - } - newGallery.SceneIDs, err = stringslice.StringSliceToIntSlice(input.SceneIds) - if err != nil { - return nil, fmt.Errorf("converting scene ids: %w", err) - } - // Start the transaction and save the gallery if err := r.withTxn(ctx, func(ctx context.Context) error { qb := r.repository.Gallery diff --git a/internal/api/resolver_mutation_performer.go b/internal/api/resolver_mutation_performer.go index 85663dea2..b0ab18852 100644 --- a/internal/api/resolver_mutation_performer.go +++ b/internal/api/resolver_mutation_performer.go @@ -26,6 +26,16 @@ func (r *mutationResolver) getPerformer(ctx context.Context, id int) (ret *model return ret, nil } +func stashIDPtrSliceToSlice(v []*models.StashID) []models.StashID { + ret := make([]models.StashID, len(v)) + for i, vv := range v { + c := vv + ret[i] = *c + } + + return ret +} + func (r *mutationResolver) PerformerCreate(ctx context.Context, input PerformerCreateInput) (*models.Performer, error) { // generate checksum from performer name rather than image checksum := md5.FromString(input.Name) @@ -152,7 +162,7 @@ func (r *mutationResolver) PerformerCreate(ctx context.Context, input PerformerC // Save the stash_ids if input.StashIds != nil { - stashIDJoins := input.StashIds + stashIDJoins := stashIDPtrSliceToSlice(input.StashIds) if err := qb.UpdateStashIDs(ctx, performer.ID, stashIDJoins); err != nil { return err } @@ -275,7 +285,7 @@ func (r *mutationResolver) PerformerUpdate(ctx context.Context, input PerformerU // Save the stash_ids if translator.hasField("stash_ids") { - stashIDJoins := input.StashIds + stashIDJoins := stashIDPtrSliceToSlice(input.StashIds) if err := qb.UpdateStashIDs(ctx, performerID, stashIDJoins); err != nil { return err } diff --git a/internal/api/resolver_mutation_stash_box.go b/internal/api/resolver_mutation_stash_box.go index e44c994d2..c3647399a 100644 --- a/internal/api/resolver_mutation_stash_box.go +++ b/internal/api/resolver_mutation_stash_box.go @@ -57,6 +57,11 @@ func (r *mutationResolver) SubmitStashBoxSceneDraft(ctx context.Context, input S if err != nil { return err } + + if err := scene.LoadStashIDs(ctx, qb); err != nil { + return err + } + filepath := manager.GetInstance().Paths.Scene.GetScreenshotPath(scene.GetHash(config.GetInstance().GetVideoFileNamingAlgorithm())) res, err = client.SubmitSceneDraft(ctx, scene, boxes[input.StashBoxIndex].Endpoint, filepath) diff --git a/internal/api/resolver_mutation_studio.go b/internal/api/resolver_mutation_studio.go index a2a9dc399..e9ee8965b 100644 --- a/internal/api/resolver_mutation_studio.go +++ b/internal/api/resolver_mutation_studio.go @@ -90,7 +90,7 @@ func (r *mutationResolver) StudioCreate(ctx context.Context, input StudioCreateI // Save the stash_ids if input.StashIds != nil { - stashIDJoins := input.StashIds + stashIDJoins := stashIDPtrSliceToSlice(input.StashIds) if err := qb.UpdateStashIDs(ctx, s.ID, stashIDJoins); err != nil { return err } @@ -182,7 +182,7 @@ func (r *mutationResolver) StudioUpdate(ctx context.Context, input StudioUpdateI // Save the stash_ids if translator.hasField("stash_ids") { - stashIDJoins := input.StashIds + stashIDJoins := stashIDPtrSliceToSlice(input.StashIds) if err := qb.UpdateStashIDs(ctx, studioID, stashIDJoins); err != nil { return err } diff --git a/internal/api/server.go b/internal/api/server.go index 2f64348d5..e2b047186 100644 --- a/internal/api/server.go +++ b/internal/api/server.go @@ -26,6 +26,7 @@ import ( "github.com/go-chi/httplog" "github.com/rs/cors" + "github.com/stashapp/stash/internal/api/loaders" "github.com/stashapp/stash/internal/manager" "github.com/stashapp/stash/internal/manager/config" "github.com/stashapp/stash/pkg/fsutil" @@ -74,6 +75,14 @@ func Start() error { } txnManager := manager.GetInstance().Repository + + dataloaders := loaders.Middleware{ + DatabaseProvider: txnManager, + Repository: txnManager, + } + + r.Use(dataloaders.Middleware) + pluginCache := manager.GetInstance().PluginCache sceneService := manager.GetInstance().SceneService imageService := manager.GetInstance().ImageService diff --git a/internal/autotag/gallery.go b/internal/autotag/gallery.go index a1827fec8..b66245b62 100644 --- a/internal/autotag/gallery.go +++ b/internal/autotag/gallery.go @@ -6,8 +6,19 @@ import ( "github.com/stashapp/stash/pkg/gallery" "github.com/stashapp/stash/pkg/match" "github.com/stashapp/stash/pkg/models" + "github.com/stashapp/stash/pkg/sliceutil/intslice" ) +type GalleryPerformerUpdater interface { + models.PerformerIDLoader + gallery.PartialUpdater +} + +type GalleryTagUpdater interface { + models.TagIDLoader + gallery.PartialUpdater +} + func getGalleryFileTagger(s *models.Gallery, cache *match.Cache) tagger { var path string if s.Path() != "" { @@ -28,11 +39,24 @@ func getGalleryFileTagger(s *models.Gallery, cache *match.Cache) tagger { } // GalleryPerformers tags the provided gallery with performers whose name matches the gallery's path. -func GalleryPerformers(ctx context.Context, s *models.Gallery, rw gallery.PartialUpdater, performerReader match.PerformerAutoTagQueryer, cache *match.Cache) error { +func GalleryPerformers(ctx context.Context, s *models.Gallery, rw GalleryPerformerUpdater, performerReader match.PerformerAutoTagQueryer, cache *match.Cache) error { t := getGalleryFileTagger(s, cache) return t.tagPerformers(ctx, performerReader, func(subjectID, otherID int) (bool, error) { - return gallery.AddPerformer(ctx, rw, s, otherID) + if err := s.LoadPerformerIDs(ctx, rw); err != nil { + return false, err + } + existing := s.PerformerIDs.List() + + if intslice.IntInclude(existing, otherID) { + return false, nil + } + + if err := gallery.AddPerformer(ctx, rw, s, otherID); err != nil { + return false, err + } + + return true, nil }) } @@ -53,10 +77,23 @@ func GalleryStudios(ctx context.Context, s *models.Gallery, rw GalleryFinderUpda } // GalleryTags tags the provided gallery with tags whose name matches the gallery's path. -func GalleryTags(ctx context.Context, s *models.Gallery, rw gallery.PartialUpdater, tagReader match.TagAutoTagQueryer, cache *match.Cache) error { +func GalleryTags(ctx context.Context, s *models.Gallery, rw GalleryTagUpdater, tagReader match.TagAutoTagQueryer, cache *match.Cache) error { t := getGalleryFileTagger(s, cache) return t.tagTags(ctx, tagReader, func(subjectID, otherID int) (bool, error) { - return gallery.AddTag(ctx, rw, s, otherID) + if err := s.LoadTagIDs(ctx, rw); err != nil { + return false, err + } + existing := s.TagIDs.List() + + if intslice.IntInclude(existing, otherID) { + return false, nil + } + + if err := gallery.AddTag(ctx, rw, s, otherID); err != nil { + return false, err + } + + return true, nil }) } diff --git a/internal/autotag/gallery_test.go b/internal/autotag/gallery_test.go index 85dee0694..0561166f3 100644 --- a/internal/autotag/gallery_test.go +++ b/internal/autotag/gallery_test.go @@ -60,6 +60,7 @@ func TestGalleryPerformers(t *testing.T) { Path: test.Path, }, }, + PerformerIDs: models.NewRelatedIDs([]int{}), } err := GalleryPerformers(testCtx, &gallery, mockGalleryReader, mockPerformerReader, nil) @@ -183,6 +184,7 @@ func TestGalleryTags(t *testing.T) { Path: test.Path, }, }, + TagIDs: models.NewRelatedIDs([]int{}), } err := GalleryTags(testCtx, &gallery, mockGalleryReader, mockTagReader, nil) diff --git a/internal/autotag/image.go b/internal/autotag/image.go index 243fd7427..6246b1bd1 100644 --- a/internal/autotag/image.go +++ b/internal/autotag/image.go @@ -6,8 +6,19 @@ import ( "github.com/stashapp/stash/pkg/image" "github.com/stashapp/stash/pkg/match" "github.com/stashapp/stash/pkg/models" + "github.com/stashapp/stash/pkg/sliceutil/intslice" ) +type ImagePerformerUpdater interface { + models.PerformerIDLoader + image.PartialUpdater +} + +type ImageTagUpdater interface { + models.TagIDLoader + image.PartialUpdater +} + func getImageFileTagger(s *models.Image, cache *match.Cache) tagger { return tagger{ ID: s.ID, @@ -19,11 +30,24 @@ func getImageFileTagger(s *models.Image, cache *match.Cache) tagger { } // ImagePerformers tags the provided image with performers whose name matches the image's path. -func ImagePerformers(ctx context.Context, s *models.Image, rw image.PartialUpdater, performerReader match.PerformerAutoTagQueryer, cache *match.Cache) error { +func ImagePerformers(ctx context.Context, s *models.Image, rw ImagePerformerUpdater, performerReader match.PerformerAutoTagQueryer, cache *match.Cache) error { t := getImageFileTagger(s, cache) return t.tagPerformers(ctx, performerReader, func(subjectID, otherID int) (bool, error) { - return image.AddPerformer(ctx, rw, s, otherID) + if err := s.LoadPerformerIDs(ctx, rw); err != nil { + return false, err + } + existing := s.PerformerIDs.List() + + if intslice.IntInclude(existing, otherID) { + return false, nil + } + + if err := image.AddPerformer(ctx, rw, s, otherID); err != nil { + return false, err + } + + return true, nil }) } @@ -44,10 +68,23 @@ func ImageStudios(ctx context.Context, s *models.Image, rw ImageFinderUpdater, s } // ImageTags tags the provided image with tags whose name matches the image's path. -func ImageTags(ctx context.Context, s *models.Image, rw image.PartialUpdater, tagReader match.TagAutoTagQueryer, cache *match.Cache) error { +func ImageTags(ctx context.Context, s *models.Image, rw ImageTagUpdater, tagReader match.TagAutoTagQueryer, cache *match.Cache) error { t := getImageFileTagger(s, cache) return t.tagTags(ctx, tagReader, func(subjectID, otherID int) (bool, error) { - return image.AddTag(ctx, rw, s, otherID) + if err := s.LoadTagIDs(ctx, rw); err != nil { + return false, err + } + existing := s.TagIDs.List() + + if intslice.IntInclude(existing, otherID) { + return false, nil + } + + if err := image.AddTag(ctx, rw, s, otherID); err != nil { + return false, err + } + + return true, nil }) } diff --git a/internal/autotag/image_test.go b/internal/autotag/image_test.go index eab312916..5d62a75a0 100644 --- a/internal/autotag/image_test.go +++ b/internal/autotag/image_test.go @@ -59,8 +59,9 @@ func TestImagePerformers(t *testing.T) { } image := models.Image{ - ID: imageID, - Files: []*file.ImageFile{makeImageFile(test.Path)}, + ID: imageID, + Files: []*file.ImageFile{makeImageFile(test.Path)}, + PerformerIDs: models.NewRelatedIDs([]int{}), } err := ImagePerformers(testCtx, &image, mockImageReader, mockPerformerReader, nil) @@ -174,8 +175,9 @@ func TestImageTags(t *testing.T) { } image := models.Image{ - ID: imageID, - Files: []*file.ImageFile{makeImageFile(test.Path)}, + ID: imageID, + Files: []*file.ImageFile{makeImageFile(test.Path)}, + TagIDs: models.NewRelatedIDs([]int{}), } err := ImageTags(testCtx, &image, mockImageReader, mockTagReader, nil) diff --git a/internal/autotag/performer.go b/internal/autotag/performer.go index 2c86f649f..f240dc0c5 100644 --- a/internal/autotag/performer.go +++ b/internal/autotag/performer.go @@ -8,20 +8,24 @@ import ( "github.com/stashapp/stash/pkg/match" "github.com/stashapp/stash/pkg/models" "github.com/stashapp/stash/pkg/scene" + "github.com/stashapp/stash/pkg/sliceutil/intslice" ) type SceneQueryPerformerUpdater interface { scene.Queryer + models.PerformerIDLoader scene.PartialUpdater } type ImageQueryPerformerUpdater interface { image.Queryer + models.PerformerIDLoader image.PartialUpdater } type GalleryQueryPerformerUpdater interface { gallery.Queryer + models.PerformerIDLoader gallery.PartialUpdater } @@ -39,7 +43,20 @@ func PerformerScenes(ctx context.Context, p *models.Performer, paths []string, r t := getPerformerTagger(p, cache) return t.tagScenes(ctx, paths, rw, func(o *models.Scene) (bool, error) { - return scene.AddPerformer(ctx, rw, o, p.ID) + if err := o.LoadPerformerIDs(ctx, rw); err != nil { + return false, err + } + existing := o.PerformerIDs.List() + + if intslice.IntInclude(existing, p.ID) { + return false, nil + } + + if err := scene.AddPerformer(ctx, rw, o, p.ID); err != nil { + return false, err + } + + return true, nil }) } @@ -47,8 +64,21 @@ func PerformerScenes(ctx context.Context, p *models.Performer, paths []string, r func PerformerImages(ctx context.Context, p *models.Performer, paths []string, rw ImageQueryPerformerUpdater, cache *match.Cache) error { t := getPerformerTagger(p, cache) - return t.tagImages(ctx, paths, rw, func(i *models.Image) (bool, error) { - return image.AddPerformer(ctx, rw, i, p.ID) + return t.tagImages(ctx, paths, rw, func(o *models.Image) (bool, error) { + if err := o.LoadPerformerIDs(ctx, rw); err != nil { + return false, err + } + existing := o.PerformerIDs.List() + + if intslice.IntInclude(existing, p.ID) { + return false, nil + } + + if err := image.AddPerformer(ctx, rw, o, p.ID); err != nil { + return false, err + } + + return true, nil }) } @@ -57,6 +87,19 @@ func PerformerGalleries(ctx context.Context, p *models.Performer, paths []string t := getPerformerTagger(p, cache) return t.tagGalleries(ctx, paths, rw, func(o *models.Gallery) (bool, error) { - return gallery.AddPerformer(ctx, rw, o, p.ID) + if err := o.LoadPerformerIDs(ctx, rw); err != nil { + return false, err + } + existing := o.PerformerIDs.List() + + if intslice.IntInclude(existing, p.ID) { + return false, nil + } + + if err := gallery.AddPerformer(ctx, rw, o, p.ID); err != nil { + return false, err + } + + return true, nil }) } diff --git a/internal/autotag/performer_test.go b/internal/autotag/performer_test.go index 01656dad0..06c099e14 100644 --- a/internal/autotag/performer_test.go +++ b/internal/autotag/performer_test.go @@ -56,6 +56,7 @@ func testPerformerScenes(t *testing.T, performerName, expectedRegex string) { }, }, }, + PerformerIDs: models.NewRelatedIDs([]int{}), }) } @@ -133,8 +134,9 @@ func testPerformerImages(t *testing.T, performerName, expectedRegex string) { matchingPaths, falsePaths := generateTestPaths(performerName, imageExt) for i, p := range append(matchingPaths, falsePaths...) { images = append(images, &models.Image{ - ID: i + 1, - Files: []*file.ImageFile{makeImageFile(p)}, + ID: i + 1, + Files: []*file.ImageFile{makeImageFile(p)}, + PerformerIDs: models.NewRelatedIDs([]int{}), }) } @@ -219,6 +221,7 @@ func testPerformerGalleries(t *testing.T, performerName, expectedRegex string) { Path: v, }, }, + PerformerIDs: models.NewRelatedIDs([]int{}), }) } diff --git a/internal/autotag/scene.go b/internal/autotag/scene.go index a1f9ace63..2fb8984fc 100644 --- a/internal/autotag/scene.go +++ b/internal/autotag/scene.go @@ -6,8 +6,19 @@ import ( "github.com/stashapp/stash/pkg/match" "github.com/stashapp/stash/pkg/models" "github.com/stashapp/stash/pkg/scene" + "github.com/stashapp/stash/pkg/sliceutil/intslice" ) +type ScenePerformerUpdater interface { + models.PerformerIDLoader + scene.PartialUpdater +} + +type SceneTagUpdater interface { + models.TagIDLoader + scene.PartialUpdater +} + func getSceneFileTagger(s *models.Scene, cache *match.Cache) tagger { return tagger{ ID: s.ID, @@ -19,11 +30,24 @@ func getSceneFileTagger(s *models.Scene, cache *match.Cache) tagger { } // ScenePerformers tags the provided scene with performers whose name matches the scene's path. -func ScenePerformers(ctx context.Context, s *models.Scene, rw scene.PartialUpdater, performerReader match.PerformerAutoTagQueryer, cache *match.Cache) error { +func ScenePerformers(ctx context.Context, s *models.Scene, rw ScenePerformerUpdater, performerReader match.PerformerAutoTagQueryer, cache *match.Cache) error { t := getSceneFileTagger(s, cache) return t.tagPerformers(ctx, performerReader, func(subjectID, otherID int) (bool, error) { - return scene.AddPerformer(ctx, rw, s, otherID) + if err := s.LoadPerformerIDs(ctx, rw); err != nil { + return false, err + } + existing := s.PerformerIDs.List() + + if intslice.IntInclude(existing, otherID) { + return false, nil + } + + if err := scene.AddPerformer(ctx, rw, s, otherID); err != nil { + return false, err + } + + return true, nil }) } @@ -44,10 +68,23 @@ func SceneStudios(ctx context.Context, s *models.Scene, rw SceneFinderUpdater, s } // SceneTags tags the provided scene with tags whose name matches the scene's path. -func SceneTags(ctx context.Context, s *models.Scene, rw scene.PartialUpdater, tagReader match.TagAutoTagQueryer, cache *match.Cache) error { +func SceneTags(ctx context.Context, s *models.Scene, rw SceneTagUpdater, tagReader match.TagAutoTagQueryer, cache *match.Cache) error { t := getSceneFileTagger(s, cache) return t.tagTags(ctx, tagReader, func(subjectID, otherID int) (bool, error) { - return scene.AddTag(ctx, rw, s, otherID) + if err := s.LoadTagIDs(ctx, rw); err != nil { + return false, err + } + existing := s.TagIDs.List() + + if intslice.IntInclude(existing, otherID) { + return false, nil + } + + if err := scene.AddTag(ctx, rw, s, otherID); err != nil { + return false, err + } + + return true, nil }) } diff --git a/internal/autotag/scene_test.go b/internal/autotag/scene_test.go index da32a3ea2..be35a776c 100644 --- a/internal/autotag/scene_test.go +++ b/internal/autotag/scene_test.go @@ -186,6 +186,7 @@ func TestScenePerformers(t *testing.T) { }, }, }, + PerformerIDs: models.NewRelatedIDs([]int{}), } if test.Matches { @@ -325,6 +326,7 @@ func TestSceneTags(t *testing.T) { }, }, }, + TagIDs: models.NewRelatedIDs([]int{}), } err := SceneTags(testCtx, &scene, mockSceneReader, mockTagReader, nil) diff --git a/internal/autotag/tag.go b/internal/autotag/tag.go index c05d1c000..ab90b62cc 100644 --- a/internal/autotag/tag.go +++ b/internal/autotag/tag.go @@ -8,20 +8,24 @@ import ( "github.com/stashapp/stash/pkg/match" "github.com/stashapp/stash/pkg/models" "github.com/stashapp/stash/pkg/scene" + "github.com/stashapp/stash/pkg/sliceutil/intslice" ) type SceneQueryTagUpdater interface { scene.Queryer + models.TagIDLoader scene.PartialUpdater } type ImageQueryTagUpdater interface { image.Queryer + models.TagIDLoader image.PartialUpdater } type GalleryQueryTagUpdater interface { gallery.Queryer + models.TagIDLoader gallery.PartialUpdater } @@ -51,7 +55,20 @@ func TagScenes(ctx context.Context, p *models.Tag, paths []string, aliases []str for _, tt := range t { if err := tt.tagScenes(ctx, paths, rw, func(o *models.Scene) (bool, error) { - return scene.AddTag(ctx, rw, o, p.ID) + if err := o.LoadTagIDs(ctx, rw); err != nil { + return false, err + } + existing := o.TagIDs.List() + + if intslice.IntInclude(existing, p.ID) { + return false, nil + } + + if err := scene.AddTag(ctx, rw, o, p.ID); err != nil { + return false, err + } + + return true, nil }); err != nil { return err } @@ -64,8 +81,21 @@ func TagImages(ctx context.Context, p *models.Tag, paths []string, aliases []str t := getTagTaggers(p, aliases, cache) for _, tt := range t { - if err := tt.tagImages(ctx, paths, rw, func(i *models.Image) (bool, error) { - return image.AddTag(ctx, rw, i, p.ID) + if err := tt.tagImages(ctx, paths, rw, func(o *models.Image) (bool, error) { + if err := o.LoadTagIDs(ctx, rw); err != nil { + return false, err + } + existing := o.TagIDs.List() + + if intslice.IntInclude(existing, p.ID) { + return false, nil + } + + if err := image.AddTag(ctx, rw, o, p.ID); err != nil { + return false, err + } + + return true, nil }); err != nil { return err } @@ -79,7 +109,20 @@ func TagGalleries(ctx context.Context, p *models.Tag, paths []string, aliases [] for _, tt := range t { if err := tt.tagGalleries(ctx, paths, rw, func(o *models.Gallery) (bool, error) { - return gallery.AddTag(ctx, rw, o, p.ID) + if err := o.LoadTagIDs(ctx, rw); err != nil { + return false, err + } + existing := o.TagIDs.List() + + if intslice.IntInclude(existing, p.ID) { + return false, nil + } + + if err := gallery.AddTag(ctx, rw, o, p.ID); err != nil { + return false, err + } + + return true, nil }); err != nil { return err } diff --git a/internal/autotag/tag_test.go b/internal/autotag/tag_test.go index 6ab3d846b..ea572a261 100644 --- a/internal/autotag/tag_test.go +++ b/internal/autotag/tag_test.go @@ -96,6 +96,7 @@ func testTagScenes(t *testing.T, tc testTagCase) { }, }, }, + TagIDs: models.NewRelatedIDs([]int{}), }) } @@ -186,8 +187,9 @@ func testTagImages(t *testing.T, tc testTagCase) { matchingPaths, falsePaths := generateTestPaths(testPathName, "mp4") for i, p := range append(matchingPaths, falsePaths...) { images = append(images, &models.Image{ - ID: i + 1, - Files: []*file.ImageFile{makeImageFile(p)}, + ID: i + 1, + Files: []*file.ImageFile{makeImageFile(p)}, + TagIDs: models.NewRelatedIDs([]int{}), }) } @@ -286,6 +288,7 @@ func testTagGalleries(t *testing.T, tc testTagCase) { Path: v, }, }, + TagIDs: models.NewRelatedIDs([]int{}), }) } diff --git a/internal/identify/identify.go b/internal/identify/identify.go index 438f6dec7..98bcaa34e 100644 --- a/internal/identify/identify.go +++ b/internal/identify/identify.go @@ -193,6 +193,17 @@ func (t *SceneIdentifier) getSceneUpdater(ctx context.Context, s *models.Scene, func (t *SceneIdentifier) modifyScene(ctx context.Context, txnManager txn.Manager, s *models.Scene, result *scrapeResult) error { var updater *scene.UpdateSet if err := txn.WithTxn(ctx, txnManager, func(ctx context.Context) error { + // load scene relationships + if err := s.LoadPerformerIDs(ctx, t.SceneReaderUpdater); err != nil { + return err + } + if err := s.LoadTagIDs(ctx, t.SceneReaderUpdater); err != nil { + return err + } + if err := s.LoadStashIDs(ctx, t.SceneReaderUpdater); err != nil { + return err + } + var err error updater, err = t.getSceneUpdater(ctx, s, result) if err != nil { @@ -205,8 +216,7 @@ func (t *SceneIdentifier) modifyScene(ctx context.Context, txnManager txn.Manage return nil } - _, err = updater.Update(ctx, t.SceneReaderUpdater, t.ScreenshotSetter) - if err != nil { + if _, err := updater.Update(ctx, t.SceneReaderUpdater, t.ScreenshotSetter); err != nil { return fmt.Errorf("error updating scene: %w", err) } diff --git a/internal/identify/identify_test.go b/internal/identify/identify_test.go index 9d83bf9a6..a9395265d 100644 --- a/internal/identify/identify_test.go +++ b/internal/identify/identify_test.go @@ -128,7 +128,10 @@ func TestSceneIdentifier_Identify(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { scene := &models.Scene{ - ID: tt.sceneID, + ID: tt.sceneID, + PerformerIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + StashIDs: models.NewRelatedStashIDs([]models.StashID{}), } if err := identifier.Identify(testCtx, &mocks.TxnManager{}, scene); (err != nil) != tt.wantErr { t.Errorf("SceneIdentifier.Identify() error = %v, wantErr %v", err, tt.wantErr) @@ -155,7 +158,11 @@ func TestSceneIdentifier_modifyScene(t *testing.T) { { "empty update", args{ - &models.Scene{}, + &models.Scene{ + PerformerIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + StashIDs: models.NewRelatedStashIDs([]models.StashID{}), + }, &scrapeResult{ result: &scraper.ScrapedScene{}, }, diff --git a/internal/identify/performer.go b/internal/identify/performer.go index 37c05a5e5..435524cc4 100644 --- a/internal/identify/performer.go +++ b/internal/identify/performer.go @@ -13,7 +13,7 @@ import ( type PerformerCreator interface { Create(ctx context.Context, newPerformer models.Performer) (*models.Performer, error) - UpdateStashIDs(ctx context.Context, performerID int, stashIDs []*models.StashID) error + UpdateStashIDs(ctx context.Context, performerID int, stashIDs []models.StashID) error } func getPerformerID(ctx context.Context, endpoint string, w PerformerCreator, p *models.ScrapedPerformer, createMissing bool) (*int, error) { @@ -39,7 +39,7 @@ func createMissingPerformer(ctx context.Context, endpoint string, w PerformerCre } if endpoint != "" && p.RemoteSiteID != nil { - if err := w.UpdateStashIDs(ctx, created.ID, []*models.StashID{ + if err := w.UpdateStashIDs(ctx, created.ID, []models.StashID{ { Endpoint: endpoint, StashID: *p.RemoteSiteID, diff --git a/internal/identify/performer_test.go b/internal/identify/performer_test.go index 85345539a..eeed8a1e7 100644 --- a/internal/identify/performer_test.go +++ b/internal/identify/performer_test.go @@ -141,13 +141,13 @@ func Test_createMissingPerformer(t *testing.T) { return p.Name.String == invalidName })).Return(nil, errors.New("error creating performer")) - mockPerformerReaderWriter.On("UpdateStashIDs", testCtx, performerID, []*models.StashID{ + mockPerformerReaderWriter.On("UpdateStashIDs", testCtx, performerID, []models.StashID{ { Endpoint: invalidEndpoint, StashID: remoteSiteID, }, }).Return(errors.New("error updating stash ids")) - mockPerformerReaderWriter.On("UpdateStashIDs", testCtx, performerID, []*models.StashID{ + mockPerformerReaderWriter.On("UpdateStashIDs", testCtx, performerID, []models.StashID{ { Endpoint: validEndpoint, StashID: remoteSiteID, diff --git a/internal/identify/scene.go b/internal/identify/scene.go index 01362dd10..d74b47d12 100644 --- a/internal/identify/scene.go +++ b/internal/identify/scene.go @@ -18,6 +18,9 @@ import ( type SceneReaderUpdater interface { GetCover(ctx context.Context, sceneID int) ([]byte, error) scene.Updater + models.PerformerIDLoader + models.TagIDLoader + models.StashIDLoader } type TagCreator interface { @@ -82,7 +85,7 @@ func (g sceneRelationships) performers(ctx context.Context, ignoreMale bool) ([] endpoint := g.result.source.RemoteSite var performerIDs []int - originalPerformerIDs := g.scene.PerformerIDs + originalPerformerIDs := g.scene.PerformerIDs.List() if strategy == FieldStrategyMerge { // add to existing @@ -129,7 +132,7 @@ func (g sceneRelationships) tags(ctx context.Context) ([]int, error) { } var tagIDs []int - originalTagIDs := target.TagIDs + originalTagIDs := target.TagIDs.List() if strategy == FieldStrategyMerge { // add to existing @@ -186,7 +189,7 @@ func (g sceneRelationships) stashIDs(ctx context.Context) ([]models.StashID, err } var stashIDs []models.StashID - originalStashIDs := target.StashIDs + originalStashIDs := target.StashIDs.List() if strategy == FieldStrategyMerge { // add to existing diff --git a/internal/identify/scene_test.go b/internal/identify/scene_test.go index d216bc992..511023680 100644 --- a/internal/identify/scene_test.go +++ b/internal/identify/scene_test.go @@ -157,14 +157,17 @@ func Test_sceneRelationships_performers(t *testing.T) { } emptyScene := &models.Scene{ - ID: sceneID, + ID: sceneID, + PerformerIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + StashIDs: models.NewRelatedStashIDs([]models.StashID{}), } sceneWithPerformer := &models.Scene{ ID: sceneWithPerformerID, - PerformerIDs: []int{ + PerformerIDs: models.NewRelatedIDs([]int{ existingPerformerID, - }, + }), } tr := sceneRelationships{ @@ -174,7 +177,7 @@ func Test_sceneRelationships_performers(t *testing.T) { tests := []struct { name string - sceneID *models.Scene + scene *models.Scene fieldOptions *FieldOptions scraped []*models.ScrapedPerformer ignoreMale bool @@ -301,7 +304,7 @@ func Test_sceneRelationships_performers(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - tr.scene = tt.sceneID + tr.scene = tt.scene tr.fieldOptions["performers"] = tt.fieldOptions tr.result = &scrapeResult{ result: &scraper.ScrapedScene{ @@ -341,14 +344,19 @@ func Test_sceneRelationships_tags(t *testing.T) { } emptyScene := &models.Scene{ - ID: sceneID, + ID: sceneID, + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), + StashIDs: models.NewRelatedStashIDs([]models.StashID{}), } sceneWithTag := &models.Scene{ ID: sceneWithTagID, - TagIDs: []int{ + TagIDs: models.NewRelatedIDs([]int{ existingID, - }, + }), + PerformerIDs: models.NewRelatedIDs([]int{}), + StashIDs: models.NewRelatedStashIDs([]models.StashID{}), } mockSceneReaderWriter := &mocks.SceneReaderWriter{} @@ -531,12 +539,12 @@ func Test_sceneRelationships_stashIDs(t *testing.T) { sceneWithStashIDs := &models.Scene{ ID: sceneWithStashID, - StashIDs: []models.StashID{ + StashIDs: models.NewRelatedStashIDs([]models.StashID{ { StashID: remoteSiteID, Endpoint: existingEndpoint, }, - }, + }), } mockSceneReaderWriter := &mocks.SceneReaderWriter{} diff --git a/internal/identify/studio.go b/internal/identify/studio.go index a15adbf0c..135e1a79d 100644 --- a/internal/identify/studio.go +++ b/internal/identify/studio.go @@ -12,7 +12,7 @@ import ( type StudioCreator interface { Create(ctx context.Context, newStudio models.Studio) (*models.Studio, error) - UpdateStashIDs(ctx context.Context, studioID int, stashIDs []*models.StashID) error + UpdateStashIDs(ctx context.Context, studioID int, stashIDs []models.StashID) error } func createMissingStudio(ctx context.Context, endpoint string, w StudioCreator, studio *models.ScrapedStudio) (*int, error) { @@ -22,7 +22,7 @@ func createMissingStudio(ctx context.Context, endpoint string, w StudioCreator, } if endpoint != "" && studio.RemoteSiteID != nil { - if err := w.UpdateStashIDs(ctx, created.ID, []*models.StashID{ + if err := w.UpdateStashIDs(ctx, created.ID, []models.StashID{ { Endpoint: endpoint, StashID: *studio.RemoteSiteID, diff --git a/internal/identify/studio_test.go b/internal/identify/studio_test.go index bea380a2b..172d12df3 100644 --- a/internal/identify/studio_test.go +++ b/internal/identify/studio_test.go @@ -30,13 +30,13 @@ func Test_createMissingStudio(t *testing.T) { return p.Name.String == invalidName })).Return(nil, errors.New("error creating performer")) - mockStudioReaderWriter.On("UpdateStashIDs", testCtx, createdID, []*models.StashID{ + mockStudioReaderWriter.On("UpdateStashIDs", testCtx, createdID, []models.StashID{ { Endpoint: invalidEndpoint, StashID: remoteSiteID, }, }).Return(errors.New("error updating stash ids")) - mockStudioReaderWriter.On("UpdateStashIDs", testCtx, createdID, []*models.StashID{ + mockStudioReaderWriter.On("UpdateStashIDs", testCtx, createdID, []models.StashID{ { Endpoint: validEndpoint, StashID: remoteSiteID, diff --git a/internal/manager/task_export.go b/internal/manager/task_export.go index 88422f439..b2b6d6103 100644 --- a/internal/manager/task_export.go +++ b/internal/manager/task_export.go @@ -403,6 +403,10 @@ func exportScene(ctx context.Context, wg *sync.WaitGroup, jobChan <-chan *models for s := range jobChan { sceneHash := s.GetHash(t.fileNamingAlgorithm) + if err := s.LoadRelationships(ctx, sceneReader); err != nil { + logger.Errorf("[scenes] <%s> error loading scene relationships: %v", sceneHash, err) + } + newSceneJSON, err := scene.ToBasicJSON(ctx, sceneReader, s) if err != nil { logger.Errorf("[scenes] <%s> error getting scene JSON: %s", sceneHash, err.Error()) diff --git a/internal/manager/task_stash_box_tag.go b/internal/manager/task_stash_box_tag.go index 536e9801c..cf7add510 100644 --- a/internal/manager/task_stash_box_tag.go +++ b/internal/manager/task_stash_box_tag.go @@ -166,7 +166,7 @@ func (t *StashBoxPerformerTagTask) stashBoxPerformerTag(ctx context.Context) { _, err := r.Performer.Update(ctx, partial) if !t.refresh { - err = r.Performer.UpdateStashIDs(ctx, t.performer.ID, []*models.StashID{ + err = r.Performer.UpdateStashIDs(ctx, t.performer.ID, []models.StashID{ { Endpoint: t.box.Endpoint, StashID: *performer.RemoteSiteID, @@ -231,7 +231,7 @@ func (t *StashBoxPerformerTagTask) stashBoxPerformerTag(ctx context.Context) { return err } - err = r.Performer.UpdateStashIDs(ctx, createdPerformer.ID, []*models.StashID{ + err = r.Performer.UpdateStashIDs(ctx, createdPerformer.ID, []models.StashID{ { Endpoint: t.box.Endpoint, StashID: *performer.RemoteSiteID, diff --git a/pkg/gallery/delete.go b/pkg/gallery/delete.go index e056da369..f8a607ac1 100644 --- a/pkg/gallery/delete.go +++ b/pkg/gallery/delete.go @@ -91,8 +91,12 @@ func (s *Service) destroyFolderImages(ctx context.Context, i *models.Gallery, fi } for _, img := range imgs { + if err := img.LoadGalleryIDs(ctx, s.ImageFinder); err != nil { + return nil, err + } + // only destroy images that are not attached to other galleries - if len(img.GalleryIDs) > 1 { + if len(img.GalleryIDs.List()) > 1 { continue } diff --git a/pkg/gallery/import.go b/pkg/gallery/import.go index c0ce20058..2afffe237 100644 --- a/pkg/gallery/import.go +++ b/pkg/gallery/import.go @@ -14,7 +14,7 @@ import ( ) type Importer struct { - ReaderWriter FinderCreatorUpdater + ReaderWriter FullCreatorUpdater StudioWriter studio.NameFinderCreator PerformerWriter performer.NameFinderCreator TagWriter tag.NameFinderCreator @@ -24,6 +24,11 @@ type Importer struct { gallery models.Gallery } +type FullCreatorUpdater interface { + FinderCreatorUpdater + Update(ctx context.Context, updatedGallery *models.Gallery) error +} + func (i *Importer) PreImport(ctx context.Context) error { i.gallery = i.galleryJSONToGallery(i.Input) @@ -43,7 +48,10 @@ func (i *Importer) PreImport(ctx context.Context) error { } func (i *Importer) galleryJSONToGallery(galleryJSON jsonschema.Gallery) models.Gallery { - newGallery := models.Gallery{} + newGallery := models.Gallery{ + PerformerIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + } if galleryJSON.Title != "" { newGallery.Title = galleryJSON.Title @@ -149,7 +157,7 @@ func (i *Importer) populatePerformers(ctx context.Context) error { } for _, p := range performers { - i.gallery.PerformerIDs = append(i.gallery.PerformerIDs, p.ID) + i.gallery.PerformerIDs.Add(p.ID) } } @@ -207,7 +215,7 @@ func (i *Importer) populateTags(ctx context.Context) error { } for _, t := range tags { - i.gallery.TagIDs = append(i.gallery.TagIDs, t.ID) + i.gallery.TagIDs.Add(t.ID) } } diff --git a/pkg/gallery/scan.go b/pkg/gallery/scan.go index fccbeb756..cda6625a5 100644 --- a/pkg/gallery/scan.go +++ b/pkg/gallery/scan.go @@ -11,7 +11,6 @@ import ( "github.com/stashapp/stash/pkg/logger" "github.com/stashapp/stash/pkg/models" "github.com/stashapp/stash/pkg/plugin" - "github.com/stashapp/stash/pkg/sliceutil/intslice" ) // const mutexType = "gallery" @@ -20,16 +19,17 @@ type FinderCreatorUpdater interface { FindByFileID(ctx context.Context, fileID file.ID) ([]*models.Gallery, error) FindByFingerprints(ctx context.Context, fp []file.Fingerprint) ([]*models.Gallery, error) Create(ctx context.Context, newGallery *models.Gallery, fileIDs []file.ID) error - Update(ctx context.Context, updatedGallery *models.Gallery) error + AddFileID(ctx context.Context, id int, fileID file.ID) error } type SceneFinderUpdater interface { FindByPath(ctx context.Context, p string) ([]*models.Scene, error) Update(ctx context.Context, updatedScene *models.Scene) error + AddGalleryIDs(ctx context.Context, sceneID int, galleryIDs []int) error } type ScanHandler struct { - CreatorUpdater FinderCreatorUpdater + CreatorUpdater FullCreatorUpdater SceneFinderUpdater SceneFinderUpdater PluginCache *plugin.Cache @@ -97,8 +97,8 @@ func (h *ScanHandler) associateExisting(ctx context.Context, existing []*models. i.Files = append(i.Files, f) } - if err := h.CreatorUpdater.Update(ctx, i); err != nil { - return fmt.Errorf("updating gallery: %w", err) + if err := h.CreatorUpdater.AddFileID(ctx, i.ID, f.Base().ID); err != nil { + return fmt.Errorf("adding file to gallery: %w", err) } } @@ -122,13 +122,8 @@ func (h *ScanHandler) associateScene(ctx context.Context, existing []*models.Gal for _, scene := range scenes { // found related Scene - newIDs := intslice.IntAppendUniques(scene.GalleryIDs, galleryIDs) - if len(newIDs) > len(scene.GalleryIDs) { - logger.Infof("associate: Gallery %s is related to scene: %s", f.Base().Path, scene.GetTitle()) - scene.GalleryIDs = newIDs - if err := h.SceneFinderUpdater.Update(ctx, scene); err != nil { - return err - } + if err := h.SceneFinderUpdater.AddGalleryIDs(ctx, scene.ID, galleryIDs); err != nil { + return err } } diff --git a/pkg/gallery/service.go b/pkg/gallery/service.go index 4468bcc20..53a356ce3 100644 --- a/pkg/gallery/service.go +++ b/pkg/gallery/service.go @@ -20,6 +20,7 @@ type Repository interface { type ImageFinder interface { FindByFolderID(ctx context.Context, folder file.FolderID) ([]*models.Image, error) FindByZipFileID(ctx context.Context, zipFileID file.ID) ([]*models.Image, error) + models.GalleryIDLoader } type ImageService interface { diff --git a/pkg/gallery/update.go b/pkg/gallery/update.go index 03a04a52c..d881514ee 100644 --- a/pkg/gallery/update.go +++ b/pkg/gallery/update.go @@ -26,36 +26,22 @@ func AddImage(ctx context.Context, qb ImageUpdater, galleryID int, imageID int) return qb.UpdateImages(ctx, galleryID, imageIDs) } -func AddPerformer(ctx context.Context, qb PartialUpdater, o *models.Gallery, performerID int) (bool, error) { - if !intslice.IntInclude(o.PerformerIDs, performerID) { - if _, err := qb.UpdatePartial(ctx, o.ID, models.GalleryPartial{ - PerformerIDs: &models.UpdateIDs{ - IDs: []int{performerID}, - Mode: models.RelationshipUpdateModeAdd, - }, - }); err != nil { - return false, err - } - - return true, nil - } - - return false, nil +func AddPerformer(ctx context.Context, qb PartialUpdater, o *models.Gallery, performerID int) error { + _, err := qb.UpdatePartial(ctx, o.ID, models.GalleryPartial{ + PerformerIDs: &models.UpdateIDs{ + IDs: []int{performerID}, + Mode: models.RelationshipUpdateModeAdd, + }, + }) + return err } -func AddTag(ctx context.Context, qb PartialUpdater, o *models.Gallery, tagID int) (bool, error) { - if !intslice.IntInclude(o.TagIDs, tagID) { - if _, err := qb.UpdatePartial(ctx, o.ID, models.GalleryPartial{ - TagIDs: &models.UpdateIDs{ - IDs: []int{tagID}, - Mode: models.RelationshipUpdateModeAdd, - }, - }); err != nil { - return false, err - } - - return true, nil - } - - return false, nil +func AddTag(ctx context.Context, qb PartialUpdater, o *models.Gallery, tagID int) error { + _, err := qb.UpdatePartial(ctx, o.ID, models.GalleryPartial{ + TagIDs: &models.UpdateIDs{ + IDs: []int{tagID}, + Mode: models.RelationshipUpdateModeAdd, + }, + }) + return err } diff --git a/pkg/image/import.go b/pkg/image/import.go index d5509d932..bdcf0d773 100644 --- a/pkg/image/import.go +++ b/pkg/image/import.go @@ -17,8 +17,13 @@ type GalleryChecksumsFinder interface { FindByChecksums(ctx context.Context, checksums []string) ([]*models.Gallery, error) } +type FullCreatorUpdater interface { + FinderCreatorUpdater + Update(ctx context.Context, updatedImage *models.Image) error +} + type Importer struct { - ReaderWriter FinderCreatorUpdater + ReaderWriter FullCreatorUpdater StudioWriter studio.NameFinderCreator GalleryWriter GalleryChecksumsFinder PerformerWriter performer.NameFinderCreator @@ -57,6 +62,9 @@ func (i *Importer) imageJSONToImage(imageJSON jsonschema.Image) models.Image { newImage := models.Image{ // Checksum: imageJSON.Checksum, // Path: i.Path, + PerformerIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + GalleryIDs: models.NewRelatedIDs([]int{}), } if imageJSON.Title != "" { @@ -145,7 +153,7 @@ func (i *Importer) populateGalleries(ctx context.Context) error { continue } } else { - i.image.GalleryIDs = append(i.image.GalleryIDs, gallery[0].ID) + i.image.GalleryIDs.Add(gallery[0].ID) } } @@ -190,7 +198,7 @@ func (i *Importer) populatePerformers(ctx context.Context) error { } for _, p := range performers { - i.image.PerformerIDs = append(i.image.PerformerIDs, p.ID) + i.image.PerformerIDs.Add(p.ID) } } @@ -222,7 +230,7 @@ func (i *Importer) populateTags(ctx context.Context) error { } for _, t := range tags { - i.image.TagIDs = append(i.image.TagIDs, t.ID) + i.image.TagIDs.Add(t.ID) } } diff --git a/pkg/image/scan.go b/pkg/image/scan.go index ac30ae523..ec9844919 100644 --- a/pkg/image/scan.go +++ b/pkg/image/scan.go @@ -24,7 +24,8 @@ type FinderCreatorUpdater interface { FindByFileID(ctx context.Context, fileID file.ID) ([]*models.Image, error) FindByFingerprints(ctx context.Context, fp []file.Fingerprint) ([]*models.Image, error) Create(ctx context.Context, newImage *models.ImageCreateInput) error - Update(ctx context.Context, updatedImage *models.Image) error + AddFileID(ctx context.Context, id int, fileID file.ID) error + models.GalleryIDLoader } type GalleryFinderCreator interface { @@ -95,8 +96,9 @@ func (h *ScanHandler) Handle(ctx context.Context, f file.File) error { // create a new image now := time.Now() newImage := &models.Image{ - CreatedAt: now, - UpdatedAt: now, + CreatedAt: now, + UpdatedAt: now, + GalleryIDs: models.NewRelatedIDs([]int{}), } // if the file is in a zip, then associate it with the gallery @@ -107,7 +109,7 @@ func (h *ScanHandler) Handle(ctx context.Context, f file.File) error { } for _, gg := range g { - newImage.GalleryIDs = append(newImage.GalleryIDs, gg.ID) + newImage.GalleryIDs.Add(gg.ID) } } else if h.ScanConfig.GetCreateGalleriesFromFolders() { if err := h.associateFolderBasedGallery(ctx, newImage, imageFile); err != nil { @@ -162,8 +164,8 @@ func (h *ScanHandler) associateExisting(ctx context.Context, existing []*models. } } - if err := h.CreatorUpdater.Update(ctx, i); err != nil { - return fmt.Errorf("updating image: %w", err) + if err := h.CreatorUpdater.AddFileID(ctx, i.ID, f.ID); err != nil { + return fmt.Errorf("adding file to image: %w", err) } } } @@ -210,8 +212,12 @@ func (h *ScanHandler) associateFolderBasedGallery(ctx context.Context, newImage return err } - if g != nil && !intslice.IntInclude(newImage.GalleryIDs, g.ID) { - newImage.GalleryIDs = append(newImage.GalleryIDs, g.ID) + if err := newImage.LoadGalleryIDs(ctx, h.CreatorUpdater); err != nil { + return err + } + + if g != nil && !intslice.IntInclude(newImage.GalleryIDs.List(), g.ID) { + newImage.GalleryIDs.Add(g.ID) logger.Infof("Adding %s to folder-based gallery %s", f.Base().Path, g.Path()) } diff --git a/pkg/image/update.go b/pkg/image/update.go index 49688b690..3a173b7ad 100644 --- a/pkg/image/update.go +++ b/pkg/image/update.go @@ -4,43 +4,29 @@ import ( "context" "github.com/stashapp/stash/pkg/models" - "github.com/stashapp/stash/pkg/sliceutil/intslice" ) type PartialUpdater interface { UpdatePartial(ctx context.Context, id int, partial models.ImagePartial) (*models.Image, error) } -func AddPerformer(ctx context.Context, qb PartialUpdater, i *models.Image, performerID int) (bool, error) { - if !intslice.IntInclude(i.PerformerIDs, performerID) { - if _, err := qb.UpdatePartial(ctx, i.ID, models.ImagePartial{ - PerformerIDs: &models.UpdateIDs{ - IDs: []int{performerID}, - Mode: models.RelationshipUpdateModeAdd, - }, - }); err != nil { - return false, err - } +func AddPerformer(ctx context.Context, qb PartialUpdater, i *models.Image, performerID int) error { + _, err := qb.UpdatePartial(ctx, i.ID, models.ImagePartial{ + PerformerIDs: &models.UpdateIDs{ + IDs: []int{performerID}, + Mode: models.RelationshipUpdateModeAdd, + }, + }) - return true, nil - } - - return false, nil + return err } -func AddTag(ctx context.Context, qb PartialUpdater, i *models.Image, tagID int) (bool, error) { - if !intslice.IntInclude(i.TagIDs, tagID) { - if _, err := qb.UpdatePartial(ctx, i.ID, models.ImagePartial{ - TagIDs: &models.UpdateIDs{ - IDs: []int{tagID}, - Mode: models.RelationshipUpdateModeAdd, - }, - }); err != nil { - return false, err - } - - return true, nil - } - - return false, nil +func AddTag(ctx context.Context, qb PartialUpdater, i *models.Image, tagID int) error { + _, err := qb.UpdatePartial(ctx, i.ID, models.ImagePartial{ + TagIDs: &models.UpdateIDs{ + IDs: []int{tagID}, + Mode: models.RelationshipUpdateModeAdd, + }, + }) + return err } diff --git a/pkg/models/gallery.go b/pkg/models/gallery.go index e7783895e..ed8e078dd 100644 --- a/pkg/models/gallery.go +++ b/pkg/models/gallery.go @@ -74,14 +74,23 @@ type GalleryDestroyInput struct { DeleteGenerated *bool `json:"delete_generated"` } +type GalleryFinder interface { + FindMany(ctx context.Context, ids []int) ([]*Gallery, error) +} + type GalleryReader interface { Find(ctx context.Context, id int) (*Gallery, error) - FindMany(ctx context.Context, ids []int) ([]*Gallery, error) + GalleryFinder FindByChecksum(ctx context.Context, checksum string) ([]*Gallery, error) FindByChecksums(ctx context.Context, checksums []string) ([]*Gallery, error) FindByPath(ctx context.Context, path string) ([]*Gallery, error) FindBySceneID(ctx context.Context, sceneID int) ([]*Gallery, error) FindByImageID(ctx context.Context, imageID int) ([]*Gallery, error) + + SceneIDLoader + PerformerIDLoader + TagIDLoader + Count(ctx context.Context) (int, error) All(ctx context.Context) ([]*Gallery, error) Query(ctx context.Context, galleryFilter *GalleryFilterType, findFilter *FindFilterType) ([]*Gallery, int, error) diff --git a/pkg/models/image.go b/pkg/models/image.go index 185a0c7d9..9ded5939e 100644 --- a/pkg/models/image.go +++ b/pkg/models/image.go @@ -102,6 +102,10 @@ type ImageReader interface { All(ctx context.Context) ([]*Image, error) Query(ctx context.Context, options ImageQueryOptions) (*ImageQueryResult, error) QueryCount(ctx context.Context, imageFilter *ImageFilterType, findFilter *FindFilterType) (int, error) + + GalleryIDLoader + PerformerIDLoader + TagIDLoader } type ImageWriter interface { diff --git a/pkg/models/jsonschema/performer.go b/pkg/models/jsonschema/performer.go index 898d6f547..89677d715 100644 --- a/pkg/models/jsonschema/performer.go +++ b/pkg/models/jsonschema/performer.go @@ -10,34 +10,34 @@ import ( ) type Performer struct { - Name string `json:"name,omitempty"` - Gender string `json:"gender,omitempty"` - URL string `json:"url,omitempty"` - Twitter string `json:"twitter,omitempty"` - Instagram string `json:"instagram,omitempty"` - Birthdate string `json:"birthdate,omitempty"` - Ethnicity string `json:"ethnicity,omitempty"` - Country string `json:"country,omitempty"` - EyeColor string `json:"eye_color,omitempty"` - Height string `json:"height,omitempty"` - Measurements string `json:"measurements,omitempty"` - FakeTits string `json:"fake_tits,omitempty"` - CareerLength string `json:"career_length,omitempty"` - Tattoos string `json:"tattoos,omitempty"` - Piercings string `json:"piercings,omitempty"` - Aliases string `json:"aliases,omitempty"` - Favorite bool `json:"favorite,omitempty"` - Tags []string `json:"tags,omitempty"` - Image string `json:"image,omitempty"` - CreatedAt json.JSONTime `json:"created_at,omitempty"` - UpdatedAt json.JSONTime `json:"updated_at,omitempty"` - Rating int `json:"rating,omitempty"` - Details string `json:"details,omitempty"` - DeathDate string `json:"death_date,omitempty"` - HairColor string `json:"hair_color,omitempty"` - Weight int `json:"weight,omitempty"` - StashIDs []*models.StashID `json:"stash_ids,omitempty"` - IgnoreAutoTag bool `json:"ignore_auto_tag,omitempty"` + Name string `json:"name,omitempty"` + Gender string `json:"gender,omitempty"` + URL string `json:"url,omitempty"` + Twitter string `json:"twitter,omitempty"` + Instagram string `json:"instagram,omitempty"` + Birthdate string `json:"birthdate,omitempty"` + Ethnicity string `json:"ethnicity,omitempty"` + Country string `json:"country,omitempty"` + EyeColor string `json:"eye_color,omitempty"` + Height string `json:"height,omitempty"` + Measurements string `json:"measurements,omitempty"` + FakeTits string `json:"fake_tits,omitempty"` + CareerLength string `json:"career_length,omitempty"` + Tattoos string `json:"tattoos,omitempty"` + Piercings string `json:"piercings,omitempty"` + Aliases string `json:"aliases,omitempty"` + Favorite bool `json:"favorite,omitempty"` + Tags []string `json:"tags,omitempty"` + Image string `json:"image,omitempty"` + CreatedAt json.JSONTime `json:"created_at,omitempty"` + UpdatedAt json.JSONTime `json:"updated_at,omitempty"` + Rating int `json:"rating,omitempty"` + Details string `json:"details,omitempty"` + DeathDate string `json:"death_date,omitempty"` + HairColor string `json:"hair_color,omitempty"` + Weight int `json:"weight,omitempty"` + StashIDs []models.StashID `json:"stash_ids,omitempty"` + IgnoreAutoTag bool `json:"ignore_auto_tag,omitempty"` } func LoadPerformerFile(filePath string) (*Performer, error) { diff --git a/pkg/models/jsonschema/studio.go b/pkg/models/jsonschema/studio.go index 680f331a6..dad65a569 100644 --- a/pkg/models/jsonschema/studio.go +++ b/pkg/models/jsonschema/studio.go @@ -10,17 +10,17 @@ import ( ) type Studio struct { - Name string `json:"name,omitempty"` - URL string `json:"url,omitempty"` - ParentStudio string `json:"parent_studio,omitempty"` - Image string `json:"image,omitempty"` - CreatedAt json.JSONTime `json:"created_at,omitempty"` - UpdatedAt json.JSONTime `json:"updated_at,omitempty"` - Rating int `json:"rating,omitempty"` - Details string `json:"details,omitempty"` - Aliases []string `json:"aliases,omitempty"` - StashIDs []*models.StashID `json:"stash_ids,omitempty"` - IgnoreAutoTag bool `json:"ignore_auto_tag,omitempty"` + Name string `json:"name,omitempty"` + URL string `json:"url,omitempty"` + ParentStudio string `json:"parent_studio,omitempty"` + Image string `json:"image,omitempty"` + CreatedAt json.JSONTime `json:"created_at,omitempty"` + UpdatedAt json.JSONTime `json:"updated_at,omitempty"` + Rating int `json:"rating,omitempty"` + Details string `json:"details,omitempty"` + Aliases []string `json:"aliases,omitempty"` + StashIDs []models.StashID `json:"stash_ids,omitempty"` + IgnoreAutoTag bool `json:"ignore_auto_tag,omitempty"` } func LoadStudioFile(filePath string) (*Studio, error) { diff --git a/pkg/models/mocks/GalleryReaderWriter.go b/pkg/models/mocks/GalleryReaderWriter.go index 8a927ba4e..1c0ddf957 100644 --- a/pkg/models/mocks/GalleryReaderWriter.go +++ b/pkg/models/mocks/GalleryReaderWriter.go @@ -272,6 +272,75 @@ func (_m *GalleryReaderWriter) GetImageIDs(ctx context.Context, galleryID int) ( return r0, r1 } +// GetPerformerIDs provides a mock function with given fields: ctx, relatedID +func (_m *GalleryReaderWriter) GetPerformerIDs(ctx context.Context, relatedID int) ([]int, error) { + ret := _m.Called(ctx, relatedID) + + var r0 []int + if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok { + r0 = rf(ctx, relatedID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]int) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, relatedID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetSceneIDs provides a mock function with given fields: ctx, relatedID +func (_m *GalleryReaderWriter) GetSceneIDs(ctx context.Context, relatedID int) ([]int, error) { + ret := _m.Called(ctx, relatedID) + + var r0 []int + if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok { + r0 = rf(ctx, relatedID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]int) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, relatedID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetTagIDs provides a mock function with given fields: ctx, relatedID +func (_m *GalleryReaderWriter) GetTagIDs(ctx context.Context, relatedID int) ([]int, error) { + ret := _m.Called(ctx, relatedID) + + var r0 []int + if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok { + r0 = rf(ctx, relatedID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]int) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, relatedID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // Query provides a mock function with given fields: ctx, galleryFilter, findFilter func (_m *GalleryReaderWriter) Query(ctx context.Context, galleryFilter *models.GalleryFilterType, findFilter *models.FindFilterType) ([]*models.Gallery, int, error) { ret := _m.Called(ctx, galleryFilter, findFilter) diff --git a/pkg/models/mocks/ImageReaderWriter.go b/pkg/models/mocks/ImageReaderWriter.go index aecf497ea..41468ceb2 100644 --- a/pkg/models/mocks/ImageReaderWriter.go +++ b/pkg/models/mocks/ImageReaderWriter.go @@ -197,29 +197,6 @@ func (_m *ImageReaderWriter) FindByGalleryID(ctx context.Context, galleryID int) return r0, r1 } -// FindByPath provides a mock function with given fields: ctx, path -func (_m *ImageReaderWriter) FindByPath(ctx context.Context, path string) ([]*models.Image, error) { - ret := _m.Called(ctx, path) - - var r0 []*models.Image - if rf, ok := ret.Get(0).(func(context.Context, string) []*models.Image); ok { - r0 = rf(ctx, path) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*models.Image) - } - } - - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { - r1 = rf(ctx, path) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - // FindMany provides a mock function with given fields: ctx, ids func (_m *ImageReaderWriter) FindMany(ctx context.Context, ids []int) ([]*models.Image, error) { ret := _m.Called(ctx, ids) @@ -243,6 +220,75 @@ func (_m *ImageReaderWriter) FindMany(ctx context.Context, ids []int) ([]*models return r0, r1 } +// GetGalleryIDs provides a mock function with given fields: ctx, relatedID +func (_m *ImageReaderWriter) GetGalleryIDs(ctx context.Context, relatedID int) ([]int, error) { + ret := _m.Called(ctx, relatedID) + + var r0 []int + if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok { + r0 = rf(ctx, relatedID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]int) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, relatedID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetPerformerIDs provides a mock function with given fields: ctx, relatedID +func (_m *ImageReaderWriter) GetPerformerIDs(ctx context.Context, relatedID int) ([]int, error) { + ret := _m.Called(ctx, relatedID) + + var r0 []int + if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok { + r0 = rf(ctx, relatedID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]int) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, relatedID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetTagIDs provides a mock function with given fields: ctx, relatedID +func (_m *ImageReaderWriter) GetTagIDs(ctx context.Context, relatedID int) ([]int, error) { + ret := _m.Called(ctx, relatedID) + + var r0 []int + if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok { + r0 = rf(ctx, relatedID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]int) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, relatedID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // IncrementOCounter provides a mock function with given fields: ctx, id func (_m *ImageReaderWriter) IncrementOCounter(ctx context.Context, id int) (int, error) { ret := _m.Called(ctx, id) diff --git a/pkg/models/mocks/PerformerReaderWriter.go b/pkg/models/mocks/PerformerReaderWriter.go index 6b9766a43..f3fece8e6 100644 --- a/pkg/models/mocks/PerformerReaderWriter.go +++ b/pkg/models/mocks/PerformerReaderWriter.go @@ -360,22 +360,22 @@ func (_m *PerformerReaderWriter) GetImage(ctx context.Context, performerID int) return r0, r1 } -// GetStashIDs provides a mock function with given fields: ctx, performerID -func (_m *PerformerReaderWriter) GetStashIDs(ctx context.Context, performerID int) ([]*models.StashID, error) { - ret := _m.Called(ctx, performerID) +// GetStashIDs provides a mock function with given fields: ctx, relatedID +func (_m *PerformerReaderWriter) GetStashIDs(ctx context.Context, relatedID int) ([]models.StashID, error) { + ret := _m.Called(ctx, relatedID) - var r0 []*models.StashID - if rf, ok := ret.Get(0).(func(context.Context, int) []*models.StashID); ok { - r0 = rf(ctx, performerID) + var r0 []models.StashID + if rf, ok := ret.Get(0).(func(context.Context, int) []models.StashID); ok { + r0 = rf(ctx, relatedID) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).([]*models.StashID) + r0 = ret.Get(0).([]models.StashID) } } var r1 error if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { - r1 = rf(ctx, performerID) + r1 = rf(ctx, relatedID) } else { r1 = ret.Error(1) } @@ -520,11 +520,11 @@ func (_m *PerformerReaderWriter) UpdateImage(ctx context.Context, performerID in } // UpdateStashIDs provides a mock function with given fields: ctx, performerID, stashIDs -func (_m *PerformerReaderWriter) UpdateStashIDs(ctx context.Context, performerID int, stashIDs []*models.StashID) error { +func (_m *PerformerReaderWriter) UpdateStashIDs(ctx context.Context, performerID int, stashIDs []models.StashID) error { ret := _m.Called(ctx, performerID, stashIDs) var r0 error - if rf, ok := ret.Get(0).(func(context.Context, int, []*models.StashID) error); ok { + if rf, ok := ret.Get(0).(func(context.Context, int, []models.StashID) error); ok { r0 = rf(ctx, performerID, stashIDs) } else { r0 = ret.Error(0) diff --git a/pkg/models/mocks/SceneReaderWriter.go b/pkg/models/mocks/SceneReaderWriter.go index b2c4195de..970d8991d 100644 --- a/pkg/models/mocks/SceneReaderWriter.go +++ b/pkg/models/mocks/SceneReaderWriter.go @@ -500,6 +500,121 @@ func (_m *SceneReaderWriter) GetCover(ctx context.Context, sceneID int) ([]byte, return r0, r1 } +// GetGalleryIDs provides a mock function with given fields: ctx, relatedID +func (_m *SceneReaderWriter) GetGalleryIDs(ctx context.Context, relatedID int) ([]int, error) { + ret := _m.Called(ctx, relatedID) + + var r0 []int + if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok { + r0 = rf(ctx, relatedID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]int) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, relatedID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetMovies provides a mock function with given fields: ctx, id +func (_m *SceneReaderWriter) GetMovies(ctx context.Context, id int) ([]models.MoviesScenes, error) { + ret := _m.Called(ctx, id) + + var r0 []models.MoviesScenes + if rf, ok := ret.Get(0).(func(context.Context, int) []models.MoviesScenes); ok { + r0 = rf(ctx, id) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]models.MoviesScenes) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, id) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetPerformerIDs provides a mock function with given fields: ctx, relatedID +func (_m *SceneReaderWriter) GetPerformerIDs(ctx context.Context, relatedID int) ([]int, error) { + ret := _m.Called(ctx, relatedID) + + var r0 []int + if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok { + r0 = rf(ctx, relatedID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]int) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, relatedID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetStashIDs provides a mock function with given fields: ctx, relatedID +func (_m *SceneReaderWriter) GetStashIDs(ctx context.Context, relatedID int) ([]models.StashID, error) { + ret := _m.Called(ctx, relatedID) + + var r0 []models.StashID + if rf, ok := ret.Get(0).(func(context.Context, int) []models.StashID); ok { + r0 = rf(ctx, relatedID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]models.StashID) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, relatedID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetTagIDs provides a mock function with given fields: ctx, relatedID +func (_m *SceneReaderWriter) GetTagIDs(ctx context.Context, relatedID int) ([]int, error) { + ret := _m.Called(ctx, relatedID) + + var r0 []int + if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok { + r0 = rf(ctx, relatedID) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]int) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { + r1 = rf(ctx, relatedID) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + // IncrementOCounter provides a mock function with given fields: ctx, id func (_m *SceneReaderWriter) IncrementOCounter(ctx context.Context, id int) (int, error) { ret := _m.Called(ctx, id) diff --git a/pkg/models/mocks/StudioReaderWriter.go b/pkg/models/mocks/StudioReaderWriter.go index 0358c9440..043bfdecc 100644 --- a/pkg/models/mocks/StudioReaderWriter.go +++ b/pkg/models/mocks/StudioReaderWriter.go @@ -270,22 +270,22 @@ func (_m *StudioReaderWriter) GetImage(ctx context.Context, studioID int) ([]byt return r0, r1 } -// GetStashIDs provides a mock function with given fields: ctx, studioID -func (_m *StudioReaderWriter) GetStashIDs(ctx context.Context, studioID int) ([]*models.StashID, error) { - ret := _m.Called(ctx, studioID) +// GetStashIDs provides a mock function with given fields: ctx, relatedID +func (_m *StudioReaderWriter) GetStashIDs(ctx context.Context, relatedID int) ([]models.StashID, error) { + ret := _m.Called(ctx, relatedID) - var r0 []*models.StashID - if rf, ok := ret.Get(0).(func(context.Context, int) []*models.StashID); ok { - r0 = rf(ctx, studioID) + var r0 []models.StashID + if rf, ok := ret.Get(0).(func(context.Context, int) []models.StashID); ok { + r0 = rf(ctx, relatedID) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).([]*models.StashID) + r0 = ret.Get(0).([]models.StashID) } } var r1 error if rf, ok := ret.Get(1).(func(context.Context, int) error); ok { - r1 = rf(ctx, studioID) + r1 = rf(ctx, relatedID) } else { r1 = ret.Error(1) } @@ -442,11 +442,11 @@ func (_m *StudioReaderWriter) UpdateImage(ctx context.Context, studioID int, ima } // UpdateStashIDs provides a mock function with given fields: ctx, studioID, stashIDs -func (_m *StudioReaderWriter) UpdateStashIDs(ctx context.Context, studioID int, stashIDs []*models.StashID) error { +func (_m *StudioReaderWriter) UpdateStashIDs(ctx context.Context, studioID int, stashIDs []models.StashID) error { ret := _m.Called(ctx, studioID, stashIDs) var r0 error - if rf, ok := ret.Get(0).(func(context.Context, int, []*models.StashID) error); ok { + if rf, ok := ret.Get(0).(func(context.Context, int, []models.StashID) error); ok { r0 = rf(ctx, studioID, stashIDs) } else { r0 = ret.Error(0) diff --git a/pkg/models/model_gallery.go b/pkg/models/model_gallery.go index 44f992f32..1ca377bff 100644 --- a/pkg/models/model_gallery.go +++ b/pkg/models/model_gallery.go @@ -1,6 +1,7 @@ package models import ( + "context" "path/filepath" "time" @@ -35,9 +36,27 @@ type Gallery struct { CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` - SceneIDs []int `json:"scene_ids"` - TagIDs []int `json:"tag_ids"` - PerformerIDs []int `json:"performer_ids"` + SceneIDs RelatedIDs `json:"scene_ids"` + TagIDs RelatedIDs `json:"tag_ids"` + PerformerIDs RelatedIDs `json:"performer_ids"` +} + +func (g *Gallery) LoadSceneIDs(ctx context.Context, l SceneIDLoader) error { + return g.SceneIDs.load(func() ([]int, error) { + return l.GetSceneIDs(ctx, g.ID) + }) +} + +func (g *Gallery) LoadPerformerIDs(ctx context.Context, l PerformerIDLoader) error { + return g.PerformerIDs.load(func() ([]int, error) { + return l.GetPerformerIDs(ctx, g.ID) + }) +} + +func (g *Gallery) LoadTagIDs(ctx context.Context, l TagIDLoader) error { + return g.TagIDs.load(func() ([]int, error) { + return l.GetTagIDs(ctx, g.ID) + }) } func (g Gallery) PrimaryFile() file.File { diff --git a/pkg/models/model_image.go b/pkg/models/model_image.go index 23b3e7dd3..c40d0fe01 100644 --- a/pkg/models/model_image.go +++ b/pkg/models/model_image.go @@ -1,6 +1,7 @@ package models import ( + "context" "time" "github.com/stashapp/stash/pkg/file" @@ -22,9 +23,27 @@ type Image struct { CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` - GalleryIDs []int `json:"gallery_ids"` - TagIDs []int `json:"tag_ids"` - PerformerIDs []int `json:"performer_ids"` + GalleryIDs RelatedIDs `json:"gallery_ids"` + TagIDs RelatedIDs `json:"tag_ids"` + PerformerIDs RelatedIDs `json:"performer_ids"` +} + +func (i *Image) LoadGalleryIDs(ctx context.Context, l GalleryIDLoader) error { + return i.GalleryIDs.load(func() ([]int, error) { + return l.GetGalleryIDs(ctx, i.ID) + }) +} + +func (i *Image) LoadPerformerIDs(ctx context.Context, l PerformerIDLoader) error { + return i.PerformerIDs.load(func() ([]int, error) { + return l.GetPerformerIDs(ctx, i.ID) + }) +} + +func (i *Image) LoadTagIDs(ctx context.Context, l TagIDLoader) error { + return i.TagIDs.load(func() ([]int, error) { + return l.GetTagIDs(ctx, i.ID) + }) } func (i Image) PrimaryFile() *file.ImageFile { diff --git a/pkg/models/model_scene.go b/pkg/models/model_scene.go index 406e0d32f..7c52c8820 100644 --- a/pkg/models/model_scene.go +++ b/pkg/models/model_scene.go @@ -1,6 +1,7 @@ package models import ( + "context" "path/filepath" "strconv" "time" @@ -26,11 +27,65 @@ type Scene struct { CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` - GalleryIDs []int `json:"gallery_ids"` - TagIDs []int `json:"tag_ids"` - PerformerIDs []int `json:"performer_ids"` - Movies []MoviesScenes `json:"movies"` - StashIDs []StashID `json:"stash_ids"` + GalleryIDs RelatedIDs `json:"gallery_ids"` + TagIDs RelatedIDs `json:"tag_ids"` + PerformerIDs RelatedIDs `json:"performer_ids"` + Movies RelatedMovies `json:"movies"` + StashIDs RelatedStashIDs `json:"stash_ids"` +} + +func (s *Scene) LoadGalleryIDs(ctx context.Context, l GalleryIDLoader) error { + return s.GalleryIDs.load(func() ([]int, error) { + return l.GetGalleryIDs(ctx, s.ID) + }) +} + +func (s *Scene) LoadPerformerIDs(ctx context.Context, l PerformerIDLoader) error { + return s.PerformerIDs.load(func() ([]int, error) { + return l.GetPerformerIDs(ctx, s.ID) + }) +} + +func (s *Scene) LoadTagIDs(ctx context.Context, l TagIDLoader) error { + return s.TagIDs.load(func() ([]int, error) { + return l.GetTagIDs(ctx, s.ID) + }) +} + +func (s *Scene) LoadMovies(ctx context.Context, l SceneMovieLoader) error { + return s.Movies.load(func() ([]MoviesScenes, error) { + return l.GetMovies(ctx, s.ID) + }) +} + +func (s *Scene) LoadStashIDs(ctx context.Context, l StashIDLoader) error { + return s.StashIDs.load(func() ([]StashID, error) { + return l.GetStashIDs(ctx, s.ID) + }) +} + +func (s *Scene) LoadRelationships(ctx context.Context, l SceneReader) error { + if err := s.LoadGalleryIDs(ctx, l); err != nil { + return err + } + + if err := s.LoadPerformerIDs(ctx, l); err != nil { + return err + } + + if err := s.LoadTagIDs(ctx, l); err != nil { + return err + } + + if err := s.LoadMovies(ctx, l); err != nil { + return err + } + + if err := s.LoadStashIDs(ctx, l); err != nil { + return err + } + + return nil } func (s Scene) PrimaryFile() *file.VideoFile { diff --git a/pkg/models/performer.go b/pkg/models/performer.go index e1503fdbb..a00eea7fc 100644 --- a/pkg/models/performer.go +++ b/pkg/models/performer.go @@ -125,9 +125,13 @@ type PerformerFilterType struct { IgnoreAutoTag *bool `json:"ignore_auto_tag"` } +type PerformerFinder interface { + FindMany(ctx context.Context, ids []int) ([]*Performer, error) +} + type PerformerReader interface { Find(ctx context.Context, id int) (*Performer, error) - FindMany(ctx context.Context, ids []int) ([]*Performer, error) + PerformerFinder FindBySceneID(ctx context.Context, sceneID int) ([]*Performer, error) FindNamesBySceneID(ctx context.Context, sceneID int) ([]*Performer, error) FindByImageID(ctx context.Context, imageID int) ([]*Performer, error) @@ -143,7 +147,7 @@ type PerformerReader interface { QueryForAutoTag(ctx context.Context, words []string) ([]*Performer, error) Query(ctx context.Context, performerFilter *PerformerFilterType, findFilter *FindFilterType) ([]*Performer, int, error) GetImage(ctx context.Context, performerID int) ([]byte, error) - GetStashIDs(ctx context.Context, performerID int) ([]*StashID, error) + StashIDLoader GetTagIDs(ctx context.Context, performerID int) ([]int, error) } @@ -154,7 +158,7 @@ type PerformerWriter interface { Destroy(ctx context.Context, id int) error UpdateImage(ctx context.Context, performerID int, image []byte) error DestroyImage(ctx context.Context, performerID int) error - UpdateStashIDs(ctx context.Context, performerID int, stashIDs []*StashID) error + UpdateStashIDs(ctx context.Context, performerID int, stashIDs []StashID) error UpdateTags(ctx context.Context, performerID int, tagIDs []int) error } diff --git a/pkg/models/relationships.go b/pkg/models/relationships.go new file mode 100644 index 000000000..ecd7610b5 --- /dev/null +++ b/pkg/models/relationships.go @@ -0,0 +1,191 @@ +package models + +import "context" + +type SceneIDLoader interface { + GetSceneIDs(ctx context.Context, relatedID int) ([]int, error) +} + +type GalleryIDLoader interface { + GetGalleryIDs(ctx context.Context, relatedID int) ([]int, error) +} + +type PerformerIDLoader interface { + GetPerformerIDs(ctx context.Context, relatedID int) ([]int, error) +} + +type TagIDLoader interface { + GetTagIDs(ctx context.Context, relatedID int) ([]int, error) +} + +type SceneMovieLoader interface { + GetMovies(ctx context.Context, id int) ([]MoviesScenes, error) +} + +type StashIDLoader interface { + GetStashIDs(ctx context.Context, relatedID int) ([]StashID, error) +} + +// RelatedIDs represents a list of related IDs. +// TODO - this can be made generic +type RelatedIDs struct { + list []int +} + +// NewRelatedIDs returns a loaded RelatedIDs object with the provided IDs. +// Loaded will return true when called on the returned object if the provided slice is not nil. +func NewRelatedIDs(ids []int) RelatedIDs { + return RelatedIDs{ + list: ids, + } +} + +// Loaded returns true if the related IDs have been loaded. +func (r RelatedIDs) Loaded() bool { + return r.list != nil +} + +func (r RelatedIDs) mustLoaded() { + if !r.Loaded() { + panic("list has not been loaded") + } +} + +// List returns the related IDs. Panics if the relationship has not been loaded. +func (r RelatedIDs) List() []int { + r.mustLoaded() + + return r.list +} + +// Add adds the provided ids to the list. Panics if the relationship has not been loaded. +func (r *RelatedIDs) Add(ids ...int) { + r.mustLoaded() + + r.list = append(r.list, ids...) +} + +func (r *RelatedIDs) load(fn func() ([]int, error)) error { + if r.Loaded() { + return nil + } + + ids, err := fn() + if err != nil { + return err + } + + if ids == nil { + ids = []int{} + } + + r.list = ids + + return nil +} + +// RelatedMovies represents a list of related Movies. +type RelatedMovies struct { + list []MoviesScenes +} + +// NewRelatedMovies returns a loaded RelatedMovies object with the provided movies. +// Loaded will return true when called on the returned object if the provided slice is not nil. +func NewRelatedMovies(list []MoviesScenes) RelatedMovies { + return RelatedMovies{ + list: list, + } +} + +// Loaded returns true if the relationship has been loaded. +func (r RelatedMovies) Loaded() bool { + return r.list != nil +} + +func (r RelatedMovies) mustLoaded() { + if !r.Loaded() { + panic("list has not been loaded") + } +} + +// List returns the related Movies. Panics if the relationship has not been loaded. +func (r RelatedMovies) List() []MoviesScenes { + r.mustLoaded() + + return r.list +} + +// Add adds the provided ids to the list. Panics if the relationship has not been loaded. +func (r *RelatedMovies) Add(movies ...MoviesScenes) { + r.mustLoaded() + + r.list = append(r.list, movies...) +} + +func (r *RelatedMovies) load(fn func() ([]MoviesScenes, error)) error { + if r.Loaded() { + return nil + } + + ids, err := fn() + if err != nil { + return err + } + + if ids == nil { + ids = []MoviesScenes{} + } + + r.list = ids + + return nil +} + +type RelatedStashIDs struct { + list []StashID +} + +// NewRelatedStashIDs returns a RelatedStashIDs object with the provided ids. +// Loaded will return true when called on the returned object if the provided slice is not nil. +func NewRelatedStashIDs(list []StashID) RelatedStashIDs { + return RelatedStashIDs{ + list: list, + } +} + +func (r RelatedStashIDs) mustLoaded() { + if !r.Loaded() { + panic("list has not been loaded") + } +} + +// Loaded returns true if the relationship has been loaded. +func (r RelatedStashIDs) Loaded() bool { + return r.list != nil +} + +// List returns the related Stash IDs. Panics if the relationship has not been loaded. +func (r RelatedStashIDs) List() []StashID { + r.mustLoaded() + + return r.list +} + +func (r *RelatedStashIDs) load(fn func() ([]StashID, error)) error { + if r.Loaded() { + return nil + } + + ids, err := fn() + if err != nil { + return err + } + + if ids == nil { + ids = []StashID{} + } + + r.list = ids + + return nil +} diff --git a/pkg/models/scene.go b/pkg/models/scene.go index d360f79de..c1c2f7966 100644 --- a/pkg/models/scene.go +++ b/pkg/models/scene.go @@ -133,6 +133,13 @@ type SceneReader interface { FindByPerformerID(ctx context.Context, performerID int) ([]*Scene, error) FindByGalleryID(ctx context.Context, performerID int) ([]*Scene, error) FindDuplicates(ctx context.Context, distance int) ([][]*Scene, error) + + GalleryIDLoader + PerformerIDLoader + TagIDLoader + SceneMovieLoader + StashIDLoader + CountByPerformerID(ctx context.Context, performerID int) (int, error) // FindByStudioID(studioID int) ([]*Scene, error) FindByMovieID(ctx context.Context, movieID int) ([]*Scene, error) diff --git a/pkg/models/studio.go b/pkg/models/studio.go index 75f0b5aae..50f8c12b4 100644 --- a/pkg/models/studio.go +++ b/pkg/models/studio.go @@ -30,9 +30,13 @@ type StudioFilterType struct { IgnoreAutoTag *bool `json:"ignore_auto_tag"` } +type StudioFinder interface { + FindMany(ctx context.Context, ids []int) ([]*Studio, error) +} + type StudioReader interface { Find(ctx context.Context, id int) (*Studio, error) - FindMany(ctx context.Context, ids []int) ([]*Studio, error) + StudioFinder FindChildren(ctx context.Context, id int) ([]*Studio, error) FindByName(ctx context.Context, name string, nocase bool) (*Studio, error) FindByStashID(ctx context.Context, stashID StashID) ([]*Studio, error) @@ -44,7 +48,7 @@ type StudioReader interface { Query(ctx context.Context, studioFilter *StudioFilterType, findFilter *FindFilterType) ([]*Studio, int, error) GetImage(ctx context.Context, studioID int) ([]byte, error) HasImage(ctx context.Context, studioID int) (bool, error) - GetStashIDs(ctx context.Context, studioID int) ([]*StashID, error) + StashIDLoader GetAliases(ctx context.Context, studioID int) ([]string, error) } @@ -55,7 +59,7 @@ type StudioWriter interface { Destroy(ctx context.Context, id int) error UpdateImage(ctx context.Context, studioID int, image []byte) error DestroyImage(ctx context.Context, studioID int) error - UpdateStashIDs(ctx context.Context, studioID int, stashIDs []*StashID) error + UpdateStashIDs(ctx context.Context, studioID int, stashIDs []StashID) error UpdateAliases(ctx context.Context, studioID int, aliases []string) error } diff --git a/pkg/models/tag.go b/pkg/models/tag.go index 33ff859c6..57b9f55d5 100644 --- a/pkg/models/tag.go +++ b/pkg/models/tag.go @@ -34,9 +34,13 @@ type TagFilterType struct { IgnoreAutoTag *bool `json:"ignore_auto_tag"` } +type TagFinder interface { + FindMany(ctx context.Context, ids []int) ([]*Tag, error) +} + type TagReader interface { Find(ctx context.Context, id int) (*Tag, error) - FindMany(ctx context.Context, ids []int) ([]*Tag, error) + TagFinder FindBySceneID(ctx context.Context, sceneID int) ([]*Tag, error) FindByPerformerID(ctx context.Context, performerID int) ([]*Tag, error) FindBySceneMarkerID(ctx context.Context, sceneMarkerID int) ([]*Tag, error) diff --git a/pkg/performer/export.go b/pkg/performer/export.go index a91b324e3..9a1a9c701 100644 --- a/pkg/performer/export.go +++ b/pkg/performer/export.go @@ -12,7 +12,7 @@ import ( type ImageStashIDGetter interface { GetImage(ctx context.Context, performerID int) ([]byte, error) - GetStashIDs(ctx context.Context, performerID int) ([]*models.StashID, error) + models.StashIDLoader } // ToJSON converts a Performer object into its JSON equivalent. @@ -100,9 +100,9 @@ func ToJSON(ctx context.Context, reader ImageStashIDGetter, performer *models.Pe } stashIDs, _ := reader.GetStashIDs(ctx, performer.ID) - var ret []*models.StashID + var ret []models.StashID for _, stashID := range stashIDs { - newJoin := &models.StashID{ + newJoin := models.StashID{ StashID: stashID.StashID, Endpoint: stashID.Endpoint, } diff --git a/pkg/performer/export_test.go b/pkg/performer/export_test.go index 4e34ad263..f328c0d8c 100644 --- a/pkg/performer/export_test.go +++ b/pkg/performer/export_test.go @@ -50,8 +50,8 @@ var stashID = models.StashID{ StashID: "StashID", Endpoint: "Endpoint", } -var stashIDs = []*models.StashID{ - &stashID, +var stashIDs = []models.StashID{ + stashID, } const image = "aW1hZ2VCeXRlcw==" @@ -155,8 +155,8 @@ func createFullJSONPerformer(name string, image string) *jsonschema.Performer { DeathDate: deathDate.String, HairColor: hairColor, Weight: weight, - StashIDs: []*models.StashID{ - &stashID, + StashIDs: []models.StashID{ + stashID, }, IgnoreAutoTag: autoTagIgnored, } diff --git a/pkg/performer/import.go b/pkg/performer/import.go index d5b425c84..7c673fb34 100644 --- a/pkg/performer/import.go +++ b/pkg/performer/import.go @@ -19,7 +19,7 @@ type NameFinderCreatorUpdater interface { UpdateFull(ctx context.Context, updatedPerformer models.Performer) (*models.Performer, error) UpdateTags(ctx context.Context, performerID int, tagIDs []int) error UpdateImage(ctx context.Context, performerID int, image []byte) error - UpdateStashIDs(ctx context.Context, performerID int, stashIDs []*models.StashID) error + UpdateStashIDs(ctx context.Context, performerID int, stashIDs []models.StashID) error } type Importer struct { diff --git a/pkg/scene/export.go b/pkg/scene/export.go index a4f7b3000..9afc2ade7 100644 --- a/pkg/scene/export.go +++ b/pkg/scene/export.go @@ -80,7 +80,7 @@ func ToBasicJSON(ctx context.Context, reader CoverGetter, scene *models.Scene) ( } var ret []models.StashID - for _, stashID := range scene.StashIDs { + for _, stashID := range scene.StashIDs.List() { newJoin := models.StashID{ StashID: stashID.StashID, Endpoint: stashID.Endpoint, @@ -219,7 +219,7 @@ type MovieFinder interface { // GetSceneMoviesJSON returns a slice of SceneMovie JSON representation objects // corresponding to the provided scene's scene movie relationships. func GetSceneMoviesJSON(ctx context.Context, movieReader MovieFinder, scene *models.Scene) ([]jsonschema.SceneMovie, error) { - sceneMovies := scene.Movies + sceneMovies := scene.Movies.List() var results []jsonschema.SceneMovie for _, sceneMovie := range sceneMovies { @@ -246,7 +246,7 @@ func GetSceneMoviesJSON(ctx context.Context, movieReader MovieFinder, scene *mod func GetDependentMovieIDs(ctx context.Context, scene *models.Scene) ([]int, error) { var ret []int - m := scene.Movies + m := scene.Movies.List() for _, mm := range m { ret = append(ret, mm.MovieID) } diff --git a/pkg/scene/import.go b/pkg/scene/import.go index c6da7c91a..bdb9cd9a7 100644 --- a/pkg/scene/import.go +++ b/pkg/scene/import.go @@ -18,6 +18,7 @@ import ( type FullCreatorUpdater interface { CreatorUpdater + Update(ctx context.Context, updatedScene *models.Scene) error Updater } @@ -75,9 +76,14 @@ func (i *Importer) PreImport(ctx context.Context) error { func (i *Importer) sceneJSONToScene(sceneJSON jsonschema.Scene) models.Scene { newScene := models.Scene{ // Path: i.Path, - Title: sceneJSON.Title, - Details: sceneJSON.Details, - URL: sceneJSON.URL, + Title: sceneJSON.Title, + Details: sceneJSON.Details, + URL: sceneJSON.URL, + PerformerIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + GalleryIDs: models.NewRelatedIDs([]int{}), + Movies: models.NewRelatedMovies([]models.MoviesScenes{}), + StashIDs: models.NewRelatedStashIDs(sceneJSON.StashIDs), } // if sceneJSON.Checksum != "" { @@ -141,8 +147,6 @@ func (i *Importer) sceneJSONToScene(sceneJSON jsonschema.Scene) models.Scene { // } // } - newScene.StashIDs = append(newScene.StashIDs, i.Input.StashIDs...) - return newScene } @@ -214,7 +218,7 @@ func (i *Importer) populateGalleries(ctx context.Context) error { } for _, o := range galleries { - i.scene.GalleryIDs = append(i.scene.GalleryIDs, o.ID) + i.scene.GalleryIDs.Add(o.ID) } } @@ -259,7 +263,7 @@ func (i *Importer) populatePerformers(ctx context.Context) error { } for _, p := range performers { - i.scene.PerformerIDs = append(i.scene.PerformerIDs, p.ID) + i.scene.PerformerIDs.Add(p.ID) } } @@ -317,7 +321,7 @@ func (i *Importer) populateMovies(ctx context.Context) error { toAdd.SceneIndex = &index } - i.scene.Movies = append(i.scene.Movies, toAdd) + i.scene.Movies.Add(toAdd) } } @@ -344,7 +348,7 @@ func (i *Importer) populateTags(ctx context.Context) error { } for _, p := range tags { - i.scene.TagIDs = append(i.scene.TagIDs, p.ID) + i.scene.TagIDs.Add(p.ID) } } diff --git a/pkg/scene/scan.go b/pkg/scene/scan.go index e098c7d85..5c2b09277 100644 --- a/pkg/scene/scan.go +++ b/pkg/scene/scan.go @@ -22,8 +22,8 @@ type CreatorUpdater interface { FindByFileID(ctx context.Context, fileID file.ID) ([]*models.Scene, error) FindByFingerprints(ctx context.Context, fp []file.Fingerprint) ([]*models.Scene, error) Create(ctx context.Context, newScene *models.Scene, fileIDs []file.ID) error - Update(ctx context.Context, updatedScene *models.Scene) error UpdatePartial(ctx context.Context, id int, updatedScene models.ScenePartial) (*models.Scene, error) + AddFileID(ctx context.Context, id int, fileID file.ID) error } type ScanGenerator interface { @@ -118,7 +118,7 @@ func (h *ScanHandler) associateExisting(ctx context.Context, existing []*models. for _, s := range existing { found := false for _, sf := range s.Files { - if sf.ID == f.Base().ID { + if sf.ID == f.ID { found = true break } @@ -127,10 +127,10 @@ func (h *ScanHandler) associateExisting(ctx context.Context, existing []*models. if !found { logger.Infof("Adding %s to scene %s", f.Path, s.GetTitle()) s.Files = append(s.Files, f) - } - if err := h.CreatorUpdater.Update(ctx, s); err != nil { - return fmt.Errorf("updating scene: %w", err) + if err := h.CreatorUpdater.AddFileID(ctx, s.ID, f.ID); err != nil { + return fmt.Errorf("adding file to scene: %w", err) + } } } diff --git a/pkg/scene/update.go b/pkg/scene/update.go index 8a3e94b1f..420736020 100644 --- a/pkg/scene/update.go +++ b/pkg/scene/update.go @@ -7,7 +7,6 @@ import ( "time" "github.com/stashapp/stash/pkg/models" - "github.com/stashapp/stash/pkg/sliceutil/intslice" "github.com/stashapp/stash/pkg/utils" ) @@ -87,53 +86,32 @@ func (u UpdateSet) UpdateInput() models.SceneUpdateInput { return ret } -func AddPerformer(ctx context.Context, qb PartialUpdater, o *models.Scene, performerID int) (bool, error) { - if !intslice.IntInclude(o.PerformerIDs, performerID) { - if _, err := qb.UpdatePartial(ctx, o.ID, models.ScenePartial{ - PerformerIDs: &models.UpdateIDs{ - IDs: []int{performerID}, - Mode: models.RelationshipUpdateModeAdd, - }, - }); err != nil { - return false, err - } - - return true, nil - } - - return false, nil +func AddPerformer(ctx context.Context, qb PartialUpdater, o *models.Scene, performerID int) error { + _, err := qb.UpdatePartial(ctx, o.ID, models.ScenePartial{ + PerformerIDs: &models.UpdateIDs{ + IDs: []int{performerID}, + Mode: models.RelationshipUpdateModeAdd, + }, + }) + return err } -func AddTag(ctx context.Context, qb PartialUpdater, o *models.Scene, tagID int) (bool, error) { - if !intslice.IntInclude(o.TagIDs, tagID) { - if _, err := qb.UpdatePartial(ctx, o.ID, models.ScenePartial{ - TagIDs: &models.UpdateIDs{ - IDs: []int{tagID}, - Mode: models.RelationshipUpdateModeAdd, - }, - }); err != nil { - return false, err - } - - return true, nil - } - - return false, nil +func AddTag(ctx context.Context, qb PartialUpdater, o *models.Scene, tagID int) error { + _, err := qb.UpdatePartial(ctx, o.ID, models.ScenePartial{ + TagIDs: &models.UpdateIDs{ + IDs: []int{tagID}, + Mode: models.RelationshipUpdateModeAdd, + }, + }) + return err } -func AddGallery(ctx context.Context, qb PartialUpdater, o *models.Scene, galleryID int) (bool, error) { - if !intslice.IntInclude(o.GalleryIDs, galleryID) { - if _, err := qb.UpdatePartial(ctx, o.ID, models.ScenePartial{ - TagIDs: &models.UpdateIDs{ - IDs: []int{galleryID}, - Mode: models.RelationshipUpdateModeAdd, - }, - }); err != nil { - return false, err - } - - return true, nil - } - - return false, nil +func AddGallery(ctx context.Context, qb PartialUpdater, o *models.Scene, galleryID int) error { + _, err := qb.UpdatePartial(ctx, o.ID, models.ScenePartial{ + TagIDs: &models.UpdateIDs{ + IDs: []int{galleryID}, + Mode: models.RelationshipUpdateModeAdd, + }, + }) + return err } diff --git a/pkg/scraper/stashbox/stash_box.go b/pkg/scraper/stashbox/stash_box.go index f6037f77f..7bcc6ef64 100644 --- a/pkg/scraper/stashbox/stash_box.go +++ b/pkg/scraper/stashbox/stash_box.go @@ -32,20 +32,21 @@ import ( type SceneReader interface { Find(ctx context.Context, id int) (*models.Scene, error) + models.StashIDLoader } type PerformerReader interface { match.PerformerFinder Find(ctx context.Context, id int) (*models.Performer, error) FindBySceneID(ctx context.Context, sceneID int) ([]*models.Performer, error) - GetStashIDs(ctx context.Context, performerID int) ([]*models.StashID, error) + models.StashIDLoader GetImage(ctx context.Context, performerID int) ([]byte, error) } type StudioReader interface { match.StudioFinder studio.Finder - GetStashIDs(ctx context.Context, studioID int) ([]*models.StashID, error) + models.StashIDLoader } type TagFinder interface { tag.Queryer @@ -227,7 +228,11 @@ func (c Client) SubmitStashBoxFingerprints(ctx context.Context, sceneIDs []strin continue } - stashIDs := scene.StashIDs + if err := scene.LoadStashIDs(ctx, qb); err != nil { + return err + } + + stashIDs := scene.StashIDs.List() sceneStashID := "" for _, stashID := range stashIDs { if stashID.Endpoint == endpoint { @@ -827,8 +832,9 @@ func (c Client) SubmitSceneDraft(ctx context.Context, scene *models.Scene, endpo } for _, stashID := range stashIDs { + c := stashID if stashID.Endpoint == endpoint { - performerDraft.ID = &stashID.StashID + performerDraft.ID = &c.StashID break } } @@ -855,7 +861,7 @@ func (c Client) SubmitSceneDraft(ctx context.Context, scene *models.Scene, endpo } } - stashIDs := scene.StashIDs + stashIDs := scene.StashIDs.List() var stashID *string for _, v := range stashIDs { if v.Endpoint == endpoint { @@ -952,8 +958,9 @@ func (c Client) SubmitPerformerDraft(ctx context.Context, performer *models.Perf } var stashID *string for _, v := range stashIDs { + c := v if v.Endpoint == endpoint { - stashID = &v.StashID + stashID = &c.StashID break } } diff --git a/pkg/sqlite/gallery.go b/pkg/sqlite/gallery.go index 81c7d1f77..3a4b05d23 100644 --- a/pkg/sqlite/gallery.go +++ b/pkg/sqlite/gallery.go @@ -133,14 +133,20 @@ func (qb *GalleryStore) Create(ctx context.Context, newObject *models.Gallery, f } } - if err := galleriesPerformersTableMgr.insertJoins(ctx, id, newObject.PerformerIDs); err != nil { - return err + if newObject.PerformerIDs.Loaded() { + if err := galleriesPerformersTableMgr.insertJoins(ctx, id, newObject.PerformerIDs.List()); err != nil { + return err + } } - if err := galleriesTagsTableMgr.insertJoins(ctx, id, newObject.TagIDs); err != nil { - return err + if newObject.TagIDs.Loaded() { + if err := galleriesTagsTableMgr.insertJoins(ctx, id, newObject.TagIDs.List()); err != nil { + return err + } } - if err := galleriesScenesTableMgr.insertJoins(ctx, id, newObject.SceneIDs); err != nil { - return err + if newObject.SceneIDs.Loaded() { + if err := galleriesScenesTableMgr.insertJoins(ctx, id, newObject.SceneIDs.List()); err != nil { + return err + } } updated, err := qb.Find(ctx, id) @@ -161,14 +167,20 @@ func (qb *GalleryStore) Update(ctx context.Context, updatedObject *models.Galler return err } - if err := galleriesPerformersTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.PerformerIDs); err != nil { - return err + if updatedObject.PerformerIDs.Loaded() { + if err := galleriesPerformersTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.PerformerIDs.List()); err != nil { + return err + } } - if err := galleriesTagsTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.TagIDs); err != nil { - return err + if updatedObject.TagIDs.Loaded() { + if err := galleriesTagsTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.TagIDs.List()); err != nil { + return err + } } - if err := galleriesScenesTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.SceneIDs); err != nil { - return err + if updatedObject.SceneIDs.Loaded() { + if err := galleriesScenesTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.SceneIDs.List()); err != nil { + return err + } } fileIDs := make([]file.ID, len(updatedObject.Files)) @@ -249,16 +261,18 @@ func (qb *GalleryStore) getMany(ctx context.Context, q *goqu.SelectDataset) ([]* s := f.resolve() - if err := qb.resolveRelationships(ctx, s); err != nil { - return err - } - ret = append(ret, s) return nil }); err != nil { return nil, err } + for _, s := range ret { + if err := qb.resolveRelationships(ctx, s); err != nil { + return nil, err + } + } + return ret, nil } @@ -281,24 +295,6 @@ func (qb *GalleryStore) resolveRelationships(ctx context.Context, s *models.Gall s.FolderPath = folder.Path } - // performers - s.PerformerIDs, err = qb.performersRepository().getIDs(ctx, s.ID) - if err != nil { - return fmt.Errorf("resolving gallery performers: %w", err) - } - - // tags - s.TagIDs, err = qb.tagsRepository().getIDs(ctx, s.ID) - if err != nil { - return fmt.Errorf("resolving gallery tags: %w", err) - } - - // scenes - s.SceneIDs, err = qb.scenesRepository().getIDs(ctx, s.ID) - if err != nil { - return fmt.Errorf("resolving gallery scenes: %w", err) - } - return nil } @@ -989,6 +985,11 @@ func (qb *GalleryStore) filesRepository() *filesRepository { } } +func (qb *GalleryStore) AddFileID(ctx context.Context, id int, fileID file.ID) error { + const firstPrimary = false + return galleriesFilesTableMgr.insertJoins(ctx, id, firstPrimary, []file.ID{fileID}) +} + func (qb *GalleryStore) performersRepository() *joinRepository { return &joinRepository{ repository: repository{ @@ -1000,6 +1001,10 @@ func (qb *GalleryStore) performersRepository() *joinRepository { } } +func (qb *GalleryStore) GetPerformerIDs(ctx context.Context, id int) ([]int, error) { + return qb.performersRepository().getIDs(ctx, id) +} + func (qb *GalleryStore) tagsRepository() *joinRepository { return &joinRepository{ repository: repository{ @@ -1011,6 +1016,10 @@ func (qb *GalleryStore) tagsRepository() *joinRepository { } } +func (qb *GalleryStore) GetTagIDs(ctx context.Context, id int) ([]int, error) { + return qb.tagsRepository().getIDs(ctx, id) +} + func (qb *GalleryStore) imagesRepository() *joinRepository { return &joinRepository{ repository: repository{ @@ -1041,3 +1050,7 @@ func (qb *GalleryStore) scenesRepository() *joinRepository { fkColumn: sceneIDColumn, } } + +func (qb *GalleryStore) GetSceneIDs(ctx context.Context, id int) ([]int, error) { + return qb.scenesRepository().getIDs(ctx, id) +} diff --git a/pkg/sqlite/gallery_test.go b/pkg/sqlite/gallery_test.go index 64483a978..9215c05a5 100644 --- a/pkg/sqlite/gallery_test.go +++ b/pkg/sqlite/gallery_test.go @@ -17,6 +17,26 @@ import ( var invalidID = -1 +func loadGalleryRelationships(ctx context.Context, expected models.Gallery, actual *models.Gallery) error { + if expected.SceneIDs.Loaded() { + if err := actual.LoadSceneIDs(ctx, db.Gallery); err != nil { + return err + } + } + if expected.TagIDs.Loaded() { + if err := actual.LoadTagIDs(ctx, db.Gallery); err != nil { + return err + } + } + if expected.PerformerIDs.Loaded() { + if err := actual.LoadPerformerIDs(ctx, db.Gallery); err != nil { + return err + } + } + + return nil +} + func Test_galleryQueryBuilder_Create(t *testing.T) { var ( title = "title" @@ -48,9 +68,9 @@ func Test_galleryQueryBuilder_Create(t *testing.T) { StudioID: &studioIDs[studioIdxWithScene], CreatedAt: createdAt, UpdatedAt: updatedAt, - SceneIDs: []int{sceneIDs[sceneIdx1WithPerformer], sceneIDs[sceneIdx1WithStudio]}, - TagIDs: []int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}, + SceneIDs: models.NewRelatedIDs([]int{sceneIDs[sceneIdx1WithPerformer], sceneIDs[sceneIdx1WithStudio]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}), Files: []file.File{}, }, false, @@ -70,9 +90,9 @@ func Test_galleryQueryBuilder_Create(t *testing.T) { }, CreatedAt: createdAt, UpdatedAt: updatedAt, - SceneIDs: []int{sceneIDs[sceneIdx1WithPerformer], sceneIDs[sceneIdx1WithStudio]}, - TagIDs: []int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}, + SceneIDs: models.NewRelatedIDs([]int{sceneIDs[sceneIdx1WithPerformer], sceneIDs[sceneIdx1WithStudio]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}), }, false, }, @@ -86,21 +106,21 @@ func Test_galleryQueryBuilder_Create(t *testing.T) { { "invalid scene id", models.Gallery{ - SceneIDs: []int{invalidID}, + SceneIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, { "invalid tag id", models.Gallery{ - TagIDs: []int{invalidID}, + TagIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, { "invalid performer id", models.Gallery{ - PerformerIDs: []int{invalidID}, + PerformerIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, @@ -132,6 +152,12 @@ func Test_galleryQueryBuilder_Create(t *testing.T) { copy := tt.newObject copy.ID = s.ID + // load relationships + if err := loadGalleryRelationships(ctx, copy, &s); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return + } + assert.Equal(copy, s) // ensure can find the scene @@ -144,6 +170,12 @@ func Test_galleryQueryBuilder_Create(t *testing.T) { return } + // load relationships + if err := loadGalleryRelationships(ctx, copy, found); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return + } + assert.Equal(copy, *found) return @@ -190,9 +222,9 @@ func Test_galleryQueryBuilder_Update(t *testing.T) { }, CreatedAt: createdAt, UpdatedAt: updatedAt, - SceneIDs: []int{sceneIDs[sceneIdx1WithPerformer], sceneIDs[sceneIdx1WithStudio]}, - TagIDs: []int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}, + SceneIDs: models.NewRelatedIDs([]int{sceneIDs[sceneIdx1WithPerformer], sceneIDs[sceneIdx1WithStudio]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}), }, false, }, @@ -203,9 +235,9 @@ func Test_galleryQueryBuilder_Update(t *testing.T) { Files: []file.File{ makeGalleryFileWithID(galleryIdxWithImage), }, - SceneIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, + SceneIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), Organized: true, CreatedAt: createdAt, UpdatedAt: updatedAt, @@ -219,9 +251,9 @@ func Test_galleryQueryBuilder_Update(t *testing.T) { Files: []file.File{ makeGalleryFileWithID(galleryIdxWithScene), }, - SceneIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, + SceneIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), Organized: true, CreatedAt: createdAt, UpdatedAt: updatedAt, @@ -235,9 +267,9 @@ func Test_galleryQueryBuilder_Update(t *testing.T) { Files: []file.File{ makeGalleryFileWithID(galleryIdxWithTag), }, - SceneIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, + SceneIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), Organized: true, CreatedAt: createdAt, UpdatedAt: updatedAt, @@ -251,9 +283,9 @@ func Test_galleryQueryBuilder_Update(t *testing.T) { Files: []file.File{ makeGalleryFileWithID(galleryIdxWithPerformer), }, - SceneIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, + SceneIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), Organized: true, CreatedAt: createdAt, UpdatedAt: updatedAt, @@ -282,7 +314,7 @@ func Test_galleryQueryBuilder_Update(t *testing.T) { makeGalleryFileWithID(galleryIdxWithImage), }, Organized: true, - SceneIDs: []int{invalidID}, + SceneIDs: models.NewRelatedIDs([]int{invalidID}), CreatedAt: createdAt, UpdatedAt: updatedAt, }, @@ -296,7 +328,7 @@ func Test_galleryQueryBuilder_Update(t *testing.T) { makeGalleryFileWithID(galleryIdxWithImage), }, Organized: true, - TagIDs: []int{invalidID}, + TagIDs: models.NewRelatedIDs([]int{invalidID}), CreatedAt: createdAt, UpdatedAt: updatedAt, }, @@ -310,7 +342,7 @@ func Test_galleryQueryBuilder_Update(t *testing.T) { makeGalleryFileWithID(galleryIdxWithImage), }, Organized: true, - PerformerIDs: []int{invalidID}, + PerformerIDs: models.NewRelatedIDs([]int{invalidID}), CreatedAt: createdAt, UpdatedAt: updatedAt, }, @@ -339,6 +371,12 @@ func Test_galleryQueryBuilder_Update(t *testing.T) { return } + // load relationships + if err := loadGalleryRelationships(ctx, copy, s); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return + } + assert.Equal(copy, *s) return @@ -426,9 +464,9 @@ func Test_galleryQueryBuilder_UpdatePartial(t *testing.T) { }, CreatedAt: createdAt, UpdatedAt: updatedAt, - SceneIDs: []int{sceneIDs[sceneIdxWithGallery]}, - TagIDs: []int{tagIDs[tagIdx1WithGallery], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithGallery], performerIDs[performerIdx1WithDupName]}, + SceneIDs: models.NewRelatedIDs([]int{sceneIDs[sceneIdxWithGallery]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithGallery], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithGallery], performerIDs[performerIdx1WithDupName]}), }, false, }, @@ -441,9 +479,9 @@ func Test_galleryQueryBuilder_UpdatePartial(t *testing.T) { Files: []file.File{ makeGalleryFile(galleryIdxWithImage), }, - SceneIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, + SceneIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), }, false, }, @@ -472,6 +510,11 @@ func Test_galleryQueryBuilder_UpdatePartial(t *testing.T) { } clearGalleryFileIDs(got) + // load relationships + if err := loadGalleryRelationships(ctx, tt.want, got); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return + } assert.Equal(tt.want, *got) s, err := qb.Find(ctx, tt.id) @@ -480,6 +523,11 @@ func Test_galleryQueryBuilder_UpdatePartial(t *testing.T) { } clearGalleryFileIDs(s) + // load relationships + if err := loadGalleryRelationships(ctx, tt.want, s); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return + } assert.Equal(tt.want, *s) }) } @@ -503,10 +551,10 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - SceneIDs: append(indexesToIDs(sceneIDs, sceneGalleries.reverseLookup(galleryIdx1WithImage)), + SceneIDs: models.NewRelatedIDs(append(indexesToIDs(sceneIDs, sceneGalleries.reverseLookup(galleryIdx1WithImage)), sceneIDs[sceneIdx1WithStudio], sceneIDs[sceneIdx1WithPerformer], - ), + )), }, false, }, @@ -520,10 +568,10 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - TagIDs: append(indexesToIDs(tagIDs, galleryTags[galleryIdxWithTwoTags]), + TagIDs: models.NewRelatedIDs(append(indexesToIDs(tagIDs, galleryTags[galleryIdxWithTwoTags]), tagIDs[tagIdx1WithDupName], tagIDs[tagIdx1WithImage], - ), + )), }, false, }, @@ -537,10 +585,10 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - PerformerIDs: append(indexesToIDs(performerIDs, galleryPerformers[galleryIdxWithTwoPerformers]), + PerformerIDs: models.NewRelatedIDs(append(indexesToIDs(performerIDs, galleryPerformers[galleryIdxWithTwoPerformers]), performerIDs[performerIdx1WithDupName], performerIDs[performerIdx1WithImage], - ), + )), }, false, }, @@ -554,9 +602,9 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - SceneIDs: append(indexesToIDs(sceneIDs, sceneGalleries.reverseLookup(galleryIdxWithScene)), + SceneIDs: models.NewRelatedIDs(append(indexesToIDs(sceneIDs, sceneGalleries.reverseLookup(galleryIdxWithScene)), sceneIDs[sceneIdx1WithPerformer], - ), + )), }, false, }, @@ -570,9 +618,9 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - TagIDs: append(indexesToIDs(tagIDs, galleryTags[galleryIdxWithTwoTags]), + TagIDs: models.NewRelatedIDs(append(indexesToIDs(tagIDs, galleryTags[galleryIdxWithTwoTags]), tagIDs[tagIdx1WithScene], - ), + )), }, false, }, @@ -586,9 +634,9 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - PerformerIDs: append(indexesToIDs(performerIDs, galleryPerformers[galleryIdxWithTwoPerformers]), + PerformerIDs: models.NewRelatedIDs(append(indexesToIDs(performerIDs, galleryPerformers[galleryIdxWithTwoPerformers]), performerIDs[performerIdx1WithScene], - ), + )), }, false, }, @@ -638,7 +686,7 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - SceneIDs: []int{}, + SceneIDs: models.NewRelatedIDs([]int{}), }, false, }, @@ -652,7 +700,7 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - TagIDs: []int{tagIDs[tagIdx2WithGallery]}, + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx2WithGallery]}), }, false, }, @@ -666,7 +714,7 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - PerformerIDs: []int{performerIDs[performerIdx2WithGallery]}, + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx2WithGallery]}), }, false, }, @@ -680,7 +728,7 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - SceneIDs: []int{sceneIDs[sceneIdxWithGallery]}, + SceneIDs: models.NewRelatedIDs([]int{sceneIDs[sceneIdxWithGallery]}), }, false, }, @@ -694,7 +742,7 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - TagIDs: indexesToIDs(tagIDs, galleryTags[galleryIdxWithTwoTags]), + TagIDs: models.NewRelatedIDs(indexesToIDs(tagIDs, galleryTags[galleryIdxWithTwoTags])), }, false, }, @@ -708,7 +756,7 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Gallery{ - PerformerIDs: indexesToIDs(performerIDs, galleryPerformers[galleryIdxWithTwoPerformers]), + PerformerIDs: models.NewRelatedIDs(indexesToIDs(performerIDs, galleryPerformers[galleryIdxWithTwoPerformers])), }, false, }, @@ -735,6 +783,16 @@ func Test_galleryQueryBuilder_UpdatePartialRelationships(t *testing.T) { t.Errorf("galleryQueryBuilder.Find() error = %v", err) } + // load relationships + if err := loadGalleryRelationships(ctx, tt.want, got); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return + } + if err := loadGalleryRelationships(ctx, tt.want, s); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return + } + // only compare fields that were in the partial if tt.partial.PerformerIDs != nil { assert.Equal(tt.want.PerformerIDs, got.PerformerIDs) @@ -851,12 +909,33 @@ func Test_galleryQueryBuilder_Find(t *testing.T) { if got != nil { clearGalleryFileIDs(got) + + // load relationships + if err := loadGalleryRelationships(ctx, *tt.want, got); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return + } } assert.Equal(tt.want, got) }) } } +func postFindGalleries(ctx context.Context, want []*models.Gallery, got []*models.Gallery) error { + for i, s := range got { + clearGalleryFileIDs(s) + + // load relationships + if i < len(want) { + if err := loadGalleryRelationships(ctx, *want[i], s); err != nil { + return err + } + } + } + + return nil +} + func Test_galleryQueryBuilder_FindMany(t *testing.T) { tests := []struct { name string @@ -893,8 +972,9 @@ func Test_galleryQueryBuilder_FindMany(t *testing.T) { return } - for _, f := range got { - clearGalleryFileIDs(f) + if err := postFindGalleries(ctx, tt.want, got); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return } assert.Equal(tt.want, got) @@ -950,8 +1030,9 @@ func Test_galleryQueryBuilder_FindByChecksum(t *testing.T) { return } - for _, f := range got { - clearGalleryFileIDs(f) + if err := postFindGalleries(ctx, tt.want, got); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return } assert.Equal(tt.want, got) @@ -1012,8 +1093,9 @@ func Test_galleryQueryBuilder_FindByChecksums(t *testing.T) { return } - for _, f := range got { - clearGalleryFileIDs(f) + if err := postFindGalleries(ctx, tt.want, got); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return } assert.Equal(tt.want, got) @@ -1069,8 +1151,9 @@ func Test_galleryQueryBuilder_FindByPath(t *testing.T) { return } - for _, f := range got { - clearGalleryFileIDs(f) + if err := postFindGalleries(ctx, tt.want, got); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return } assert.Equal(tt.want, got) @@ -1110,8 +1193,9 @@ func Test_galleryQueryBuilder_FindBySceneID(t *testing.T) { return } - for _, f := range got { - clearGalleryFileIDs(f) + if err := postFindGalleries(ctx, tt.want, got); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return } assert.Equal(tt.want, got) @@ -1154,8 +1238,9 @@ func Test_galleryQueryBuilder_FindByImageID(t *testing.T) { return } - for _, f := range got { - clearGalleryFileIDs(f) + if err := postFindGalleries(ctx, tt.want, got); err != nil { + t.Errorf("loadGalleryRelationships() error = %v", err) + return } assert.Equal(tt.want, got) @@ -2143,7 +2228,11 @@ func verifyGalleriesTagCount(t *testing.T, tagCountCriterion models.IntCriterion assert.Greater(t, len(galleries), 0) for _, gallery := range galleries { - verifyInt(t, len(gallery.TagIDs), tagCountCriterion) + if err := gallery.LoadTagIDs(ctx, sqb); err != nil { + t.Errorf("gallery.LoadTagIDs() error = %v", err) + return nil + } + verifyInt(t, len(gallery.TagIDs.List()), tagCountCriterion) } return nil @@ -2180,7 +2269,12 @@ func verifyGalleriesPerformerCount(t *testing.T, performerCountCriterion models. assert.Greater(t, len(galleries), 0) for _, gallery := range galleries { - verifyInt(t, len(gallery.PerformerIDs), performerCountCriterion) + if err := gallery.LoadPerformerIDs(ctx, sqb); err != nil { + t.Errorf("gallery.LoadPerformerIDs() error = %v", err) + return nil + } + + verifyInt(t, len(gallery.PerformerIDs.List()), performerCountCriterion) } return nil diff --git a/pkg/sqlite/image.go b/pkg/sqlite/image.go index 3482d521d..114a1d61b 100644 --- a/pkg/sqlite/image.go +++ b/pkg/sqlite/image.go @@ -116,18 +116,19 @@ func (qb *ImageStore) Create(ctx context.Context, newObject *models.ImageCreateI } } - if len(newObject.GalleryIDs) > 0 { - if err := imageGalleriesTableMgr.insertJoins(ctx, id, newObject.GalleryIDs); err != nil { + if newObject.PerformerIDs.Loaded() { + if err := imagesPerformersTableMgr.insertJoins(ctx, id, newObject.PerformerIDs.List()); err != nil { return err } } - if len(newObject.PerformerIDs) > 0 { - if err := imagesPerformersTableMgr.insertJoins(ctx, id, newObject.PerformerIDs); err != nil { + if newObject.TagIDs.Loaded() { + if err := imagesTagsTableMgr.insertJoins(ctx, id, newObject.TagIDs.List()); err != nil { return err } } - if len(newObject.TagIDs) > 0 { - if err := imagesTagsTableMgr.insertJoins(ctx, id, newObject.TagIDs); err != nil { + + if newObject.GalleryIDs.Loaded() { + if err := imageGalleriesTableMgr.insertJoins(ctx, id, newObject.GalleryIDs.List()); err != nil { return err } } @@ -184,14 +185,22 @@ func (qb *ImageStore) Update(ctx context.Context, updatedObject *models.Image) e return err } - if err := imageGalleriesTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.GalleryIDs); err != nil { - return err + if updatedObject.PerformerIDs.Loaded() { + if err := imagesPerformersTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.PerformerIDs.List()); err != nil { + return err + } } - if err := imagesPerformersTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.PerformerIDs); err != nil { - return err + + if updatedObject.TagIDs.Loaded() { + if err := imagesTagsTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.TagIDs.List()); err != nil { + return err + } } - if err := imagesTagsTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.TagIDs); err != nil { - return err + + if updatedObject.GalleryIDs.Loaded() { + if err := imageGalleriesTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.GalleryIDs.List()); err != nil { + return err + } } fileIDs := make([]file.ID, len(updatedObject.Files)) @@ -265,16 +274,18 @@ func (qb *ImageStore) getMany(ctx context.Context, q *goqu.SelectDataset) ([]*mo i := f.resolve() - if err := qb.resolveRelationships(ctx, i); err != nil { - return err - } - ret = append(ret, i) return nil }); err != nil { return nil, err } + for _, i := range ret { + if err := qb.resolveRelationships(ctx, i); err != nil { + return nil, err + } + } + return ret, nil } @@ -287,24 +298,6 @@ func (qb *ImageStore) resolveRelationships(ctx context.Context, i *models.Image) return fmt.Errorf("resolving image files: %w", err) } - // performers - i.PerformerIDs, err = qb.performersRepository().getIDs(ctx, i.ID) - if err != nil { - return fmt.Errorf("resolving image performers: %w", err) - } - - // tags - i.TagIDs, err = qb.tagsRepository().getIDs(ctx, i.ID) - if err != nil { - return fmt.Errorf("resolving image tags: %w", err) - } - - // galleries - i.GalleryIDs, err = qb.galleriesRepository().getIDs(ctx, i.ID) - if err != nil { - return fmt.Errorf("resolving image galleries: %w", err) - } - return nil } @@ -1004,9 +997,14 @@ func (qb *ImageStore) filesRepository() *filesRepository { } } -// func (qb *imageQueryBuilder) GetGalleryIDs(ctx context.Context, imageID int) ([]int, error) { -// return qb.galleriesRepository().getIDs(ctx, imageID) -// } +func (qb *ImageStore) AddFileID(ctx context.Context, id int, fileID file.ID) error { + const firstPrimary = false + return imagesFilesTableMgr.insertJoins(ctx, id, firstPrimary, []file.ID{fileID}) +} + +func (qb *ImageStore) GetGalleryIDs(ctx context.Context, imageID int) ([]int, error) { + return qb.galleriesRepository().getIDs(ctx, imageID) +} // func (qb *imageQueryBuilder) UpdateGalleries(ctx context.Context, imageID int, galleryIDs []int) error { // // Delete the existing joins and then create new ones diff --git a/pkg/sqlite/image_test.go b/pkg/sqlite/image_test.go index d72ec8f81..3793aa08e 100644 --- a/pkg/sqlite/image_test.go +++ b/pkg/sqlite/image_test.go @@ -15,6 +15,26 @@ import ( "github.com/stretchr/testify/assert" ) +func loadImageRelationships(ctx context.Context, expected models.Image, actual *models.Image) error { + if expected.GalleryIDs.Loaded() { + if err := actual.LoadGalleryIDs(ctx, db.Image); err != nil { + return err + } + } + if expected.TagIDs.Loaded() { + if err := actual.LoadTagIDs(ctx, db.Image); err != nil { + return err + } + } + if expected.PerformerIDs.Loaded() { + if err := actual.LoadPerformerIDs(ctx, db.Image); err != nil { + return err + } + } + + return nil +} + func Test_imageQueryBuilder_Create(t *testing.T) { var ( title = "title" @@ -41,9 +61,9 @@ func Test_imageQueryBuilder_Create(t *testing.T) { StudioID: &studioIDs[studioIdxWithImage], CreatedAt: createdAt, UpdatedAt: updatedAt, - GalleryIDs: []int{galleryIDs[galleryIdxWithImage]}, - TagIDs: []int{tagIDs[tagIdx1WithImage], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithImage], performerIDs[performerIdx1WithDupName]}, + GalleryIDs: models.NewRelatedIDs([]int{galleryIDs[galleryIdxWithImage]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithImage], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithImage], performerIDs[performerIdx1WithDupName]}), Files: []*file.ImageFile{}, }, false, @@ -61,9 +81,9 @@ func Test_imageQueryBuilder_Create(t *testing.T) { }, CreatedAt: createdAt, UpdatedAt: updatedAt, - GalleryIDs: []int{galleryIDs[galleryIdxWithImage]}, - TagIDs: []int{tagIDs[tagIdx1WithImage], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithImage], performerIDs[performerIdx1WithDupName]}, + GalleryIDs: models.NewRelatedIDs([]int{galleryIDs[galleryIdxWithImage]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithImage], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithImage], performerIDs[performerIdx1WithDupName]}), }, false, }, @@ -77,21 +97,21 @@ func Test_imageQueryBuilder_Create(t *testing.T) { { "invalid gallery id", models.Image{ - GalleryIDs: []int{invalidID}, + GalleryIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, { "invalid tag id", models.Image{ - TagIDs: []int{invalidID}, + TagIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, { "invalid performer id", models.Image{ - PerformerIDs: []int{invalidID}, + PerformerIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, @@ -126,6 +146,12 @@ func Test_imageQueryBuilder_Create(t *testing.T) { copy := tt.newObject copy.ID = s.ID + // load relationships + if err := loadImageRelationships(ctx, copy, &s); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return + } + assert.Equal(copy, s) // ensure can find the image @@ -134,6 +160,12 @@ func Test_imageQueryBuilder_Create(t *testing.T) { t.Errorf("imageQueryBuilder.Find() error = %v", err) } + // load relationships + if err := loadImageRelationships(ctx, copy, found); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return + } + assert.Equal(copy, *found) return @@ -181,9 +213,9 @@ func Test_imageQueryBuilder_Update(t *testing.T) { }, CreatedAt: createdAt, UpdatedAt: updatedAt, - GalleryIDs: []int{galleryIDs[galleryIdxWithImage]}, - TagIDs: []int{tagIDs[tagIdx1WithImage], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithImage], performerIDs[performerIdx1WithDupName]}, + GalleryIDs: models.NewRelatedIDs([]int{galleryIDs[galleryIdxWithImage]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithImage], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithImage], performerIDs[performerIdx1WithDupName]}), }, false, }, @@ -194,9 +226,9 @@ func Test_imageQueryBuilder_Update(t *testing.T) { Files: []*file.ImageFile{ makeImageFileWithID(imageIdxWithGallery), }, - GalleryIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, + GalleryIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), Organized: true, CreatedAt: createdAt, UpdatedAt: updatedAt, @@ -210,9 +242,9 @@ func Test_imageQueryBuilder_Update(t *testing.T) { Files: []*file.ImageFile{ makeImageFileWithID(imageIdxWithGallery), }, - GalleryIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, + GalleryIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), Organized: true, CreatedAt: createdAt, UpdatedAt: updatedAt, @@ -226,9 +258,9 @@ func Test_imageQueryBuilder_Update(t *testing.T) { Files: []*file.ImageFile{ makeImageFileWithID(imageIdxWithTag), }, - GalleryIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, + GalleryIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), Organized: true, CreatedAt: createdAt, UpdatedAt: updatedAt, @@ -242,9 +274,9 @@ func Test_imageQueryBuilder_Update(t *testing.T) { Files: []*file.ImageFile{ makeImageFileWithID(imageIdxWithPerformer), }, - GalleryIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, + GalleryIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), Organized: true, CreatedAt: createdAt, UpdatedAt: updatedAt, @@ -273,7 +305,7 @@ func Test_imageQueryBuilder_Update(t *testing.T) { makeImageFileWithID(imageIdxWithGallery), }, Organized: true, - GalleryIDs: []int{invalidID}, + GalleryIDs: models.NewRelatedIDs([]int{invalidID}), CreatedAt: createdAt, UpdatedAt: updatedAt, }, @@ -287,7 +319,7 @@ func Test_imageQueryBuilder_Update(t *testing.T) { makeImageFileWithID(imageIdxWithGallery), }, Organized: true, - TagIDs: []int{invalidID}, + TagIDs: models.NewRelatedIDs([]int{invalidID}), CreatedAt: createdAt, UpdatedAt: updatedAt, }, @@ -301,7 +333,7 @@ func Test_imageQueryBuilder_Update(t *testing.T) { makeImageFileWithID(imageIdxWithGallery), }, Organized: true, - PerformerIDs: []int{invalidID}, + PerformerIDs: models.NewRelatedIDs([]int{invalidID}), CreatedAt: createdAt, UpdatedAt: updatedAt, }, @@ -329,6 +361,12 @@ func Test_imageQueryBuilder_Update(t *testing.T) { t.Errorf("imageQueryBuilder.Find() error = %v", err) } + // load relationships + if err := loadImageRelationships(ctx, copy, s); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return + } + assert.Equal(copy, *s) return @@ -400,9 +438,9 @@ func Test_imageQueryBuilder_UpdatePartial(t *testing.T) { }, CreatedAt: createdAt, UpdatedAt: updatedAt, - GalleryIDs: []int{galleryIDs[galleryIdxWithImage]}, - TagIDs: []int{tagIDs[tagIdx1WithImage], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithImage], performerIDs[performerIdx1WithDupName]}, + GalleryIDs: models.NewRelatedIDs([]int{galleryIDs[galleryIdxWithImage]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithImage], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithImage], performerIDs[performerIdx1WithDupName]}), }, false, }, @@ -416,9 +454,9 @@ func Test_imageQueryBuilder_UpdatePartial(t *testing.T) { Files: []*file.ImageFile{ makeImageFile(imageIdx1WithGallery), }, - GalleryIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, + GalleryIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), }, false, }, @@ -447,6 +485,12 @@ func Test_imageQueryBuilder_UpdatePartial(t *testing.T) { } clearImageFileIDs(got) + // load relationships + if err := loadImageRelationships(ctx, tt.want, got); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return + } + assert.Equal(tt.want, *got) s, err := qb.Find(ctx, tt.id) @@ -455,6 +499,11 @@ func Test_imageQueryBuilder_UpdatePartial(t *testing.T) { } clearImageFileIDs(s) + // load relationships + if err := loadImageRelationships(ctx, tt.want, s); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return + } assert.Equal(tt.want, *s) }) } @@ -478,10 +527,10 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - GalleryIDs: append(indexesToIDs(galleryIDs, imageGalleries[imageIdxWithGallery]), + GalleryIDs: models.NewRelatedIDs(append(indexesToIDs(galleryIDs, imageGalleries[imageIdxWithGallery]), galleryIDs[galleryIdx1WithImage], galleryIDs[galleryIdx1WithPerformer], - ), + )), }, false, }, @@ -495,10 +544,10 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - TagIDs: append(indexesToIDs(tagIDs, imageTags[imageIdxWithTwoTags]), + TagIDs: models.NewRelatedIDs(append(indexesToIDs(tagIDs, imageTags[imageIdxWithTwoTags]), tagIDs[tagIdx1WithDupName], tagIDs[tagIdx1WithGallery], - ), + )), }, false, }, @@ -512,10 +561,10 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - PerformerIDs: append(indexesToIDs(performerIDs, imagePerformers[imageIdxWithTwoPerformers]), + PerformerIDs: models.NewRelatedIDs(append(indexesToIDs(performerIDs, imagePerformers[imageIdxWithTwoPerformers]), performerIDs[performerIdx1WithDupName], performerIDs[performerIdx1WithGallery], - ), + )), }, false, }, @@ -529,9 +578,9 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - GalleryIDs: append(indexesToIDs(galleryIDs, imageGalleries[imageIdxWithGallery]), + GalleryIDs: models.NewRelatedIDs(append(indexesToIDs(galleryIDs, imageGalleries[imageIdxWithGallery]), galleryIDs[galleryIdx1WithPerformer], - ), + )), }, false, }, @@ -545,9 +594,9 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - TagIDs: append(indexesToIDs(tagIDs, imageTags[imageIdxWithTwoTags]), + TagIDs: models.NewRelatedIDs(append(indexesToIDs(tagIDs, imageTags[imageIdxWithTwoTags]), tagIDs[tagIdx1WithGallery], - ), + )), }, false, }, @@ -561,9 +610,9 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - PerformerIDs: append(indexesToIDs(performerIDs, imagePerformers[imageIdxWithTwoPerformers]), + PerformerIDs: models.NewRelatedIDs(append(indexesToIDs(performerIDs, imagePerformers[imageIdxWithTwoPerformers]), performerIDs[performerIdx1WithGallery], - ), + )), }, false, }, @@ -613,7 +662,7 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - GalleryIDs: []int{}, + GalleryIDs: models.NewRelatedIDs([]int{}), }, false, }, @@ -627,7 +676,7 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - TagIDs: []int{tagIDs[tagIdx2WithImage]}, + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx2WithImage]}), }, false, }, @@ -641,7 +690,7 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - PerformerIDs: []int{performerIDs[performerIdx2WithImage]}, + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx2WithImage]}), }, false, }, @@ -655,7 +704,7 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - GalleryIDs: []int{galleryIDs[galleryIdxWithImage]}, + GalleryIDs: models.NewRelatedIDs([]int{galleryIDs[galleryIdxWithImage]}), }, false, }, @@ -669,7 +718,7 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - TagIDs: indexesToIDs(tagIDs, imageTags[imageIdxWithTwoTags]), + TagIDs: models.NewRelatedIDs(indexesToIDs(tagIDs, imageTags[imageIdxWithTwoTags])), }, false, }, @@ -683,7 +732,7 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Image{ - PerformerIDs: indexesToIDs(performerIDs, imagePerformers[imageIdxWithTwoPerformers]), + PerformerIDs: models.NewRelatedIDs(indexesToIDs(performerIDs, imagePerformers[imageIdxWithTwoPerformers])), }, false, }, @@ -710,6 +759,16 @@ func Test_imageQueryBuilder_UpdatePartialRelationships(t *testing.T) { t.Errorf("imageQueryBuilder.Find() error = %v", err) } + // load relationships + if err := loadImageRelationships(ctx, tt.want, got); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return + } + if err := loadImageRelationships(ctx, tt.want, s); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return + } + // only compare fields that were in the partial if tt.partial.PerformerIDs != nil { assert.Equal(tt.want.PerformerIDs, got.PerformerIDs) @@ -944,12 +1003,33 @@ func Test_imageQueryBuilder_Find(t *testing.T) { if got != nil { clearImageFileIDs(got) + + // load relationships + if err := loadImageRelationships(ctx, *tt.want, got); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return + } } assert.Equal(tt.want, got) }) } } +func postFindImages(ctx context.Context, want []*models.Image, got []*models.Image) error { + for i, s := range got { + clearImageFileIDs(s) + + // load relationships + if i < len(want) { + if err := loadImageRelationships(ctx, *want[i], s); err != nil { + return err + } + } + } + + return nil +} + func Test_imageQueryBuilder_FindMany(t *testing.T) { tests := []struct { name string @@ -985,8 +1065,9 @@ func Test_imageQueryBuilder_FindMany(t *testing.T) { return } - for _, f := range got { - clearImageFileIDs(f) + if err := postFindImages(ctx, tt.want, got); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return } if !reflect.DeepEqual(got, tt.want) { @@ -1044,8 +1125,9 @@ func Test_imageQueryBuilder_FindByChecksum(t *testing.T) { return } - for _, f := range got { - clearImageFileIDs(f) + if err := postFindImages(ctx, tt.want, got); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return } assert.Equal(tt.want, got) @@ -1121,8 +1203,9 @@ func Test_imageQueryBuilder_FindByFingerprints(t *testing.T) { return } - for _, f := range got { - clearImageFileIDs(f) + if err := postFindImages(ctx, tt.want, got); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return } assert.Equal(tt.want, got) @@ -1162,8 +1245,9 @@ func Test_imageQueryBuilder_FindByGalleryID(t *testing.T) { return } - for _, f := range got { - clearImageFileIDs(f) + if err := postFindImages(ctx, tt.want, got); err != nil { + t.Errorf("loadImageRelationships() error = %v", err) + return } assert.Equal(tt.want, got) diff --git a/pkg/sqlite/movies.go b/pkg/sqlite/movies.go index 0a64e7696..0ecc6f5e5 100644 --- a/pkg/sqlite/movies.go +++ b/pkg/sqlite/movies.go @@ -6,7 +6,10 @@ import ( "errors" "fmt" + "github.com/doug-martin/goqu/v9" + "github.com/jmoiron/sqlx" "github.com/stashapp/stash/pkg/models" + "github.com/stashapp/stash/pkg/sliceutil/intslice" ) const movieTable = "movies" @@ -66,21 +69,45 @@ func (qb *movieQueryBuilder) Find(ctx context.Context, id int) (*models.Movie, e } func (qb *movieQueryBuilder) FindMany(ctx context.Context, ids []int) ([]*models.Movie, error) { - var movies []*models.Movie - for _, id := range ids { - movie, err := qb.Find(ctx, id) - if err != nil { - return nil, err - } - - if movie == nil { - return nil, fmt.Errorf("movie with id %d not found", id) - } - - movies = append(movies, movie) + tableMgr := movieTableMgr + q := goqu.Select("*").From(tableMgr.table).Where(tableMgr.byIDInts(ids...)) + unsorted, err := qb.getMany(ctx, q) + if err != nil { + return nil, err } - return movies, nil + ret := make([]*models.Movie, len(ids)) + + for _, s := range unsorted { + i := intslice.IntIndex(ids, s.ID) + ret[i] = s + } + + for i := range ret { + if ret[i] == nil { + return nil, fmt.Errorf("movie with id %d not found", ids[i]) + } + } + + return ret, nil +} + +func (qb *movieQueryBuilder) getMany(ctx context.Context, q *goqu.SelectDataset) ([]*models.Movie, error) { + const single = false + var ret []*models.Movie + if err := queryFunc(ctx, q, single, func(r *sqlx.Rows) error { + var f models.Movie + if err := r.StructScan(&f); err != nil { + return err + } + + ret = append(ret, &f) + return nil + }); err != nil { + return nil, err + } + + return ret, nil } func (qb *movieQueryBuilder) FindByName(ctx context.Context, name string, nocase bool) (*models.Movie, error) { @@ -156,14 +183,9 @@ func (qb *movieQueryBuilder) Query(ctx context.Context, movieFilter *models.Movi return nil, 0, err } - var movies []*models.Movie - for _, id := range idsResult { - movie, err := qb.Find(ctx, id) - if err != nil { - return nil, 0, err - } - - movies = append(movies, movie) + movies, err := qb.FindMany(ctx, idsResult) + if err != nil { + return nil, 0, err } return movies, countResult, nil diff --git a/pkg/sqlite/performer.go b/pkg/sqlite/performer.go index a96e997f5..6bf42dc18 100644 --- a/pkg/sqlite/performer.go +++ b/pkg/sqlite/performer.go @@ -7,7 +7,10 @@ import ( "fmt" "strings" + "github.com/doug-martin/goqu/v9" + "github.com/jmoiron/sqlx" "github.com/stashapp/stash/pkg/models" + "github.com/stashapp/stash/pkg/sliceutil/intslice" "github.com/stashapp/stash/pkg/utils" ) @@ -92,21 +95,45 @@ func (qb *performerQueryBuilder) Find(ctx context.Context, id int) (*models.Perf } func (qb *performerQueryBuilder) FindMany(ctx context.Context, ids []int) ([]*models.Performer, error) { - var performers []*models.Performer - for _, id := range ids { - performer, err := qb.Find(ctx, id) - if err != nil { - return nil, err - } - - if performer == nil { - return nil, fmt.Errorf("performer with id %d not found", id) - } - - performers = append(performers, performer) + tableMgr := performerTableMgr + q := goqu.Select("*").From(tableMgr.table).Where(tableMgr.byIDInts(ids...)) + unsorted, err := qb.getMany(ctx, q) + if err != nil { + return nil, err } - return performers, nil + ret := make([]*models.Performer, len(ids)) + + for _, s := range unsorted { + i := intslice.IntIndex(ids, s.ID) + ret[i] = s + } + + for i := range ret { + if ret[i] == nil { + return nil, fmt.Errorf("performer with id %d not found", ids[i]) + } + } + + return ret, nil +} + +func (qb *performerQueryBuilder) getMany(ctx context.Context, q *goqu.SelectDataset) ([]*models.Performer, error) { + const single = false + var ret []*models.Performer + if err := queryFunc(ctx, q, single, func(r *sqlx.Rows) error { + var f models.Performer + if err := r.StructScan(&f); err != nil { + return err + } + + ret = append(ret, &f) + return nil + }); err != nil { + return nil, err + } + + return ret, nil } func (qb *performerQueryBuilder) FindBySceneID(ctx context.Context, sceneID int) ([]*models.Performer, error) { @@ -324,13 +351,9 @@ func (qb *performerQueryBuilder) Query(ctx context.Context, performerFilter *mod return nil, 0, err } - var performers []*models.Performer - for _, id := range idsResult { - performer, err := qb.Find(ctx, id) - if err != nil { - return nil, 0, err - } - performers = append(performers, performer) + performers, err := qb.FindMany(ctx, idsResult) + if err != nil { + return nil, 0, err } return performers, countResult, nil @@ -600,11 +623,11 @@ func (qb *performerQueryBuilder) stashIDRepository() *stashIDRepository { } } -func (qb *performerQueryBuilder) GetStashIDs(ctx context.Context, performerID int) ([]*models.StashID, error) { +func (qb *performerQueryBuilder) GetStashIDs(ctx context.Context, performerID int) ([]models.StashID, error) { return qb.stashIDRepository().get(ctx, performerID) } -func (qb *performerQueryBuilder) UpdateStashIDs(ctx context.Context, performerID int, stashIDs []*models.StashID) error { +func (qb *performerQueryBuilder) UpdateStashIDs(ctx context.Context, performerID int, stashIDs []models.StashID) error { return qb.stashIDRepository().replace(ctx, performerID, stashIDs) } diff --git a/pkg/sqlite/repository.go b/pkg/sqlite/repository.go index 4487ac337..eff7fa80f 100644 --- a/pkg/sqlite/repository.go +++ b/pkg/sqlite/repository.go @@ -441,24 +441,24 @@ type stashIDRepository struct { repository } -type stashIDs []*models.StashID +type stashIDs []models.StashID func (s *stashIDs) Append(o interface{}) { - *s = append(*s, o.(*models.StashID)) + *s = append(*s, *o.(*models.StashID)) } func (s *stashIDs) New() interface{} { return &models.StashID{} } -func (r *stashIDRepository) get(ctx context.Context, id int) ([]*models.StashID, error) { +func (r *stashIDRepository) get(ctx context.Context, id int) ([]models.StashID, error) { query := fmt.Sprintf("SELECT stash_id, endpoint from %s WHERE %s = ?", r.tableName, r.idColumn) var ret stashIDs err := r.query(ctx, query, []interface{}{id}, &ret) - return []*models.StashID(ret), err + return []models.StashID(ret), err } -func (r *stashIDRepository) replace(ctx context.Context, id int, newIDs []*models.StashID) error { +func (r *stashIDRepository) replace(ctx context.Context, id int, newIDs []models.StashID) error { if err := r.destroy(ctx, []int{id}); err != nil { return err } diff --git a/pkg/sqlite/scene.go b/pkg/sqlite/scene.go index 8660b9870..985f6671c 100644 --- a/pkg/sqlite/scene.go +++ b/pkg/sqlite/scene.go @@ -157,20 +157,33 @@ func (qb *SceneStore) Create(ctx context.Context, newObject *models.Scene, fileI } } - if err := scenesPerformersTableMgr.insertJoins(ctx, id, newObject.PerformerIDs); err != nil { - return err + if newObject.PerformerIDs.Loaded() { + if err := scenesPerformersTableMgr.insertJoins(ctx, id, newObject.PerformerIDs.List()); err != nil { + return err + } } - if err := scenesTagsTableMgr.insertJoins(ctx, id, newObject.TagIDs); err != nil { - return err + if newObject.TagIDs.Loaded() { + if err := scenesTagsTableMgr.insertJoins(ctx, id, newObject.TagIDs.List()); err != nil { + return err + } } - if err := scenesGalleriesTableMgr.insertJoins(ctx, id, newObject.GalleryIDs); err != nil { - return err + + if newObject.GalleryIDs.Loaded() { + if err := scenesGalleriesTableMgr.insertJoins(ctx, id, newObject.GalleryIDs.List()); err != nil { + return err + } } - if err := scenesStashIDsTableMgr.insertJoins(ctx, id, newObject.StashIDs); err != nil { - return err + + if newObject.StashIDs.Loaded() { + if err := scenesStashIDsTableMgr.insertJoins(ctx, id, newObject.StashIDs.List()); err != nil { + return err + } } - if err := scenesMoviesTableMgr.insertJoins(ctx, id, newObject.Movies); err != nil { - return err + + if newObject.Movies.Loaded() { + if err := scenesMoviesTableMgr.insertJoins(ctx, id, newObject.Movies.List()); err != nil { + return err + } } updated, err := qb.find(ctx, id) @@ -235,20 +248,34 @@ func (qb *SceneStore) Update(ctx context.Context, updatedObject *models.Scene) e return err } - if err := scenesPerformersTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.PerformerIDs); err != nil { - return err + if updatedObject.PerformerIDs.Loaded() { + if err := scenesPerformersTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.PerformerIDs.List()); err != nil { + return err + } } - if err := scenesTagsTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.TagIDs); err != nil { - return err + + if updatedObject.TagIDs.Loaded() { + if err := scenesTagsTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.TagIDs.List()); err != nil { + return err + } } - if err := scenesGalleriesTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.GalleryIDs); err != nil { - return err + + if updatedObject.GalleryIDs.Loaded() { + if err := scenesGalleriesTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.GalleryIDs.List()); err != nil { + return err + } } - if err := scenesStashIDsTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.StashIDs); err != nil { - return err + + if updatedObject.StashIDs.Loaded() { + if err := scenesStashIDsTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.StashIDs.List()); err != nil { + return err + } } - if err := scenesMoviesTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.Movies); err != nil { - return err + + if updatedObject.Movies.Loaded() { + if err := scenesMoviesTableMgr.replaceJoins(ctx, updatedObject.ID, updatedObject.Movies.List()); err != nil { + return err + } } fileIDs := make([]file.ID, len(updatedObject.Files)) @@ -333,16 +360,18 @@ func (qb *SceneStore) getMany(ctx context.Context, q *goqu.SelectDataset) ([]*mo s := f.resolve() - if err := qb.resolveRelationships(ctx, s); err != nil { - return err - } - ret = append(ret, s) return nil }); err != nil { return nil, err } + for _, s := range ret { + if err := qb.resolveRelationships(ctx, s); err != nil { + return nil, err + } + } + return ret, nil } @@ -355,36 +384,6 @@ func (qb *SceneStore) resolveRelationships(ctx context.Context, s *models.Scene) return fmt.Errorf("resolving scene files: %w", err) } - // movies - s.Movies, err = qb.getMovies(ctx, s.ID) - if err != nil { - return fmt.Errorf("resolving scene movies: %w", err) - } - - // performers - s.PerformerIDs, err = qb.performersRepository().getIDs(ctx, s.ID) - if err != nil { - return fmt.Errorf("resolving scene performers: %w", err) - } - - // tags - s.TagIDs, err = qb.tagsRepository().getIDs(ctx, s.ID) - if err != nil { - return fmt.Errorf("resolving scene tags: %w", err) - } - - // galleries - s.GalleryIDs, err = qb.galleriesRepository().getIDs(ctx, s.ID) - if err != nil { - return fmt.Errorf("resolving scene galleries: %w", err) - } - - // stash ids - s.StashIDs, err = qb.getStashIDs(ctx, s.ID) - if err != nil { - return fmt.Errorf("resolving scene stash ids: %w", err) - } - return nil } @@ -412,37 +411,6 @@ func (qb *SceneStore) getFiles(ctx context.Context, id int) ([]*file.VideoFile, return ret, nil } -func (qb *SceneStore) getMovies(ctx context.Context, id int) (ret []models.MoviesScenes, err error) { - ret = []models.MoviesScenes{} - if err := qb.moviesRepository().getAll(ctx, id, func(rows *sqlx.Rows) error { - var ms moviesScenesRow - if err := rows.StructScan(&ms); err != nil { - return err - } - - ret = append(ret, ms.resolve(id)) - return nil - }); err != nil { - return nil, err - } - - return ret, nil -} - -func (qb *SceneStore) getStashIDs(ctx context.Context, id int) ([]models.StashID, error) { - stashIDs, err := qb.stashIDRepository().get(ctx, id) - if err != nil { - return nil, err - } - - ret := make([]models.StashID, len(stashIDs)) - for i, sid := range stashIDs { - ret[i] = *sid - } - - return ret, nil -} - func (qb *SceneStore) find(ctx context.Context, id int) (*models.Scene, error) { q := qb.selectDataset().Where(qb.tableMgr.byID(id)) @@ -1399,6 +1367,24 @@ func (qb *SceneStore) moviesRepository() *repository { } } +func (qb *SceneStore) GetMovies(ctx context.Context, id int) (ret []models.MoviesScenes, err error) { + ret = []models.MoviesScenes{} + + if err := qb.moviesRepository().getAll(ctx, id, func(rows *sqlx.Rows) error { + var ms moviesScenesRow + if err := rows.StructScan(&ms); err != nil { + return err + } + + ret = append(ret, ms.resolve(id)) + return nil + }); err != nil { + return nil, err + } + + return ret, nil +} + func (qb *SceneStore) filesRepository() *filesRepository { return &filesRepository{ repository: repository{ @@ -1409,6 +1395,11 @@ func (qb *SceneStore) filesRepository() *filesRepository { } } +func (qb *SceneStore) AddFileID(ctx context.Context, id int, fileID file.ID) error { + const firstPrimary = false + return scenesFilesTableMgr.insertJoins(ctx, id, firstPrimary, []file.ID{fileID}) +} + func (qb *SceneStore) performersRepository() *joinRepository { return &joinRepository{ repository: repository{ @@ -1420,6 +1411,10 @@ func (qb *SceneStore) performersRepository() *joinRepository { } } +func (qb *SceneStore) GetPerformerIDs(ctx context.Context, id int) ([]int, error) { + return qb.performersRepository().getIDs(ctx, id) +} + func (qb *SceneStore) tagsRepository() *joinRepository { return &joinRepository{ repository: repository{ @@ -1431,6 +1426,10 @@ func (qb *SceneStore) tagsRepository() *joinRepository { } } +func (qb *SceneStore) GetTagIDs(ctx context.Context, id int) ([]int, error) { + return qb.tagsRepository().getIDs(ctx, id) +} + func (qb *SceneStore) galleriesRepository() *joinRepository { return &joinRepository{ repository: repository{ @@ -1442,6 +1441,14 @@ func (qb *SceneStore) galleriesRepository() *joinRepository { } } +func (qb *SceneStore) GetGalleryIDs(ctx context.Context, id int) ([]int, error) { + return qb.galleriesRepository().getIDs(ctx, id) +} + +func (qb *SceneStore) AddGalleryIDs(ctx context.Context, sceneID int, galleryIDs []int) error { + return scenesGalleriesTableMgr.addJoins(ctx, sceneID, galleryIDs) +} + func (qb *SceneStore) stashIDRepository() *stashIDRepository { return &stashIDRepository{ repository{ @@ -1452,6 +1459,10 @@ func (qb *SceneStore) stashIDRepository() *stashIDRepository { } } +func (qb *SceneStore) GetStashIDs(ctx context.Context, sceneID int) ([]models.StashID, error) { + return qb.stashIDRepository().get(ctx, sceneID) +} + func (qb *SceneStore) FindDuplicates(ctx context.Context, distance int) ([][]*models.Scene, error) { var dupeIds [][]int if distance == 0 { diff --git a/pkg/sqlite/scene_marker_test.go b/pkg/sqlite/scene_marker_test.go index 8ca6618cf..76a4dd845 100644 --- a/pkg/sqlite/scene_marker_test.go +++ b/pkg/sqlite/scene_marker_test.go @@ -157,7 +157,13 @@ func TestMarkerQuerySceneTags(t *testing.T) { t.Errorf("error getting marker tag ids: %v", err) return } - tagIDs := s.TagIDs + + if err := s.LoadTagIDs(ctx, db.Scene); err != nil { + t.Errorf("error getting marker tag ids: %v", err) + return + } + + tagIDs := s.TagIDs.List() if markerFilter.SceneTags.Modifier == models.CriterionModifierIsNull && len(tagIDs) > 0 { t.Errorf("expected marker %d to have no scene tags - found %d", m.ID, len(tagIDs)) } diff --git a/pkg/sqlite/scene_test.go b/pkg/sqlite/scene_test.go index 99086b8d1..e32dd78ea 100644 --- a/pkg/sqlite/scene_test.go +++ b/pkg/sqlite/scene_test.go @@ -21,6 +21,36 @@ import ( "github.com/stretchr/testify/assert" ) +func loadSceneRelationships(ctx context.Context, expected models.Scene, actual *models.Scene) error { + if expected.GalleryIDs.Loaded() { + if err := actual.LoadGalleryIDs(ctx, db.Scene); err != nil { + return err + } + } + if expected.TagIDs.Loaded() { + if err := actual.LoadTagIDs(ctx, db.Scene); err != nil { + return err + } + } + if expected.PerformerIDs.Loaded() { + if err := actual.LoadPerformerIDs(ctx, db.Scene); err != nil { + return err + } + } + if expected.Movies.Loaded() { + if err := actual.LoadMovies(ctx, db.Scene); err != nil { + return err + } + } + if expected.StashIDs.Loaded() { + if err := actual.LoadStashIDs(ctx, db.Scene); err != nil { + return err + } + } + + return nil +} + func Test_sceneQueryBuilder_Create(t *testing.T) { var ( title = "title" @@ -60,10 +90,10 @@ func Test_sceneQueryBuilder_Create(t *testing.T) { StudioID: &studioIDs[studioIdxWithScene], CreatedAt: createdAt, UpdatedAt: updatedAt, - GalleryIDs: []int{galleryIDs[galleryIdxWithScene]}, - TagIDs: []int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}, - Movies: []models.MoviesScenes{ + GalleryIDs: models.NewRelatedIDs([]int{galleryIDs[galleryIdxWithScene]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}), + Movies: models.NewRelatedMovies([]models.MoviesScenes{ { MovieID: movieIDs[movieIdxWithScene], SceneIndex: &sceneIndex, @@ -72,8 +102,8 @@ func Test_sceneQueryBuilder_Create(t *testing.T) { MovieID: movieIDs[movieIdxWithStudio], SceneIndex: &sceneIndex2, }, - }, - StashIDs: []models.StashID{ + }), + StashIDs: models.NewRelatedStashIDs([]models.StashID{ { StashID: stashID1, Endpoint: endpoint1, @@ -82,7 +112,7 @@ func Test_sceneQueryBuilder_Create(t *testing.T) { StashID: stashID2, Endpoint: endpoint2, }, - }, + }), Files: []*file.VideoFile{}, }, false, @@ -103,10 +133,10 @@ func Test_sceneQueryBuilder_Create(t *testing.T) { }, CreatedAt: createdAt, UpdatedAt: updatedAt, - GalleryIDs: []int{galleryIDs[galleryIdxWithScene]}, - TagIDs: []int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}, - Movies: []models.MoviesScenes{ + GalleryIDs: models.NewRelatedIDs([]int{galleryIDs[galleryIdxWithScene]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}), + Movies: models.NewRelatedMovies([]models.MoviesScenes{ { MovieID: movieIDs[movieIdxWithScene], SceneIndex: &sceneIndex, @@ -115,8 +145,8 @@ func Test_sceneQueryBuilder_Create(t *testing.T) { MovieID: movieIDs[movieIdxWithStudio], SceneIndex: &sceneIndex2, }, - }, - StashIDs: []models.StashID{ + }), + StashIDs: models.NewRelatedStashIDs([]models.StashID{ { StashID: stashID1, Endpoint: endpoint1, @@ -125,7 +155,7 @@ func Test_sceneQueryBuilder_Create(t *testing.T) { StashID: stashID2, Endpoint: endpoint2, }, - }, + }), }, false, }, @@ -139,33 +169,33 @@ func Test_sceneQueryBuilder_Create(t *testing.T) { { "invalid gallery id", models.Scene{ - GalleryIDs: []int{invalidID}, + GalleryIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, { "invalid tag id", models.Scene{ - TagIDs: []int{invalidID}, + TagIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, { "invalid performer id", models.Scene{ - PerformerIDs: []int{invalidID}, + PerformerIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, { "invalid movie id", models.Scene{ - Movies: []models.MoviesScenes{ + Movies: models.NewRelatedMovies([]models.MoviesScenes{ { MovieID: invalidID, SceneIndex: &sceneIndex, }, - }, + }), }, true, }, @@ -197,6 +227,12 @@ func Test_sceneQueryBuilder_Create(t *testing.T) { copy := tt.newObject copy.ID = s.ID + // load relationships + if err := loadSceneRelationships(ctx, copy, &s); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return + } + assert.Equal(copy, s) // ensure can find the scene @@ -208,6 +244,12 @@ func Test_sceneQueryBuilder_Create(t *testing.T) { if !assert.NotNil(found) { return } + + // load relationships + if err := loadSceneRelationships(ctx, copy, found); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return + } assert.Equal(copy, *found) return @@ -268,10 +310,10 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { StudioID: &studioIDs[studioIdxWithScene], CreatedAt: createdAt, UpdatedAt: updatedAt, - GalleryIDs: []int{galleryIDs[galleryIdxWithScene]}, - TagIDs: []int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}, - Movies: []models.MoviesScenes{ + GalleryIDs: models.NewRelatedIDs([]int{galleryIDs[galleryIdxWithScene]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}), + Movies: models.NewRelatedMovies([]models.MoviesScenes{ { MovieID: movieIDs[movieIdxWithScene], SceneIndex: &sceneIndex, @@ -280,8 +322,8 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { MovieID: movieIDs[movieIdxWithStudio], SceneIndex: &sceneIndex2, }, - }, - StashIDs: []models.StashID{ + }), + StashIDs: models.NewRelatedStashIDs([]models.StashID{ { StashID: stashID1, Endpoint: endpoint1, @@ -290,7 +332,7 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { StashID: stashID2, Endpoint: endpoint2, }, - }, + }), }, false, }, @@ -301,11 +343,11 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { Files: []*file.VideoFile{ makeSceneFileWithID(sceneIdxWithSpacedName), }, - GalleryIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, - Movies: []models.MoviesScenes{}, - StashIDs: []models.StashID{}, + GalleryIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), + Movies: models.NewRelatedMovies([]models.MoviesScenes{}), + StashIDs: models.NewRelatedStashIDs([]models.StashID{}), }, false, }, @@ -316,11 +358,7 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { Files: []*file.VideoFile{ makeSceneFileWithID(sceneIdxWithGallery), }, - GalleryIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, - Movies: []models.MoviesScenes{}, - StashIDs: []models.StashID{}, + GalleryIDs: models.NewRelatedIDs([]int{}), }, false, }, @@ -331,11 +369,7 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { Files: []*file.VideoFile{ makeSceneFileWithID(sceneIdxWithTag), }, - TagIDs: []int{}, - GalleryIDs: []int{}, - PerformerIDs: []int{}, - Movies: []models.MoviesScenes{}, - StashIDs: []models.StashID{}, + TagIDs: models.NewRelatedIDs([]int{}), }, false, }, @@ -346,11 +380,7 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { Files: []*file.VideoFile{ makeSceneFileWithID(sceneIdxWithPerformer), }, - PerformerIDs: []int{}, - TagIDs: []int{}, - GalleryIDs: []int{}, - Movies: []models.MoviesScenes{}, - StashIDs: []models.StashID{}, + PerformerIDs: models.NewRelatedIDs([]int{}), }, false, }, @@ -361,11 +391,7 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { Files: []*file.VideoFile{ makeSceneFileWithID(sceneIdxWithMovie), }, - Movies: []models.MoviesScenes{}, - GalleryIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, - StashIDs: []models.StashID{}, + Movies: models.NewRelatedMovies([]models.MoviesScenes{}), }, false, }, @@ -376,12 +402,7 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { Files: []*file.VideoFile{ makeSceneFileWithID(sceneIdxWithGallery), }, - StudioID: &invalidID, - GalleryIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, - Movies: []models.MoviesScenes{}, - StashIDs: []models.StashID{}, + StudioID: &invalidID, }, true, }, @@ -392,7 +413,7 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { Files: []*file.VideoFile{ makeSceneFileWithID(sceneIdxWithGallery), }, - GalleryIDs: []int{invalidID}, + GalleryIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, @@ -403,7 +424,7 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { Files: []*file.VideoFile{ makeSceneFileWithID(sceneIdxWithGallery), }, - TagIDs: []int{invalidID}, + TagIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, @@ -414,7 +435,7 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { Files: []*file.VideoFile{ makeSceneFileWithID(sceneIdxWithGallery), }, - PerformerIDs: []int{invalidID}, + PerformerIDs: models.NewRelatedIDs([]int{invalidID}), }, true, }, @@ -425,12 +446,12 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { Files: []*file.VideoFile{ makeSceneFileWithID(sceneIdxWithSpacedName), }, - Movies: []models.MoviesScenes{ + Movies: models.NewRelatedMovies([]models.MoviesScenes{ { MovieID: invalidID, SceneIndex: &sceneIndex, }, - }, + }), }, true, }, @@ -456,6 +477,12 @@ func Test_sceneQueryBuilder_Update(t *testing.T) { t.Errorf("sceneQueryBuilder.Find() error = %v", err) } + // load relationships + if err := loadSceneRelationships(ctx, copy, s); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return + } + assert.Equal(copy, *s) }) } @@ -571,10 +598,10 @@ func Test_sceneQueryBuilder_UpdatePartial(t *testing.T) { StudioID: &studioIDs[studioIdxWithScene], CreatedAt: createdAt, UpdatedAt: updatedAt, - GalleryIDs: []int{galleryIDs[galleryIdxWithScene]}, - TagIDs: []int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}, - PerformerIDs: []int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}, - Movies: []models.MoviesScenes{ + GalleryIDs: models.NewRelatedIDs([]int{galleryIDs[galleryIdxWithScene]}), + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx1WithScene], tagIDs[tagIdx1WithDupName]}), + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx1WithScene], performerIDs[performerIdx1WithDupName]}), + Movies: models.NewRelatedMovies([]models.MoviesScenes{ { MovieID: movieIDs[movieIdxWithScene], SceneIndex: &sceneIndex, @@ -583,8 +610,8 @@ func Test_sceneQueryBuilder_UpdatePartial(t *testing.T) { MovieID: movieIDs[movieIdxWithStudio], SceneIndex: &sceneIndex2, }, - }, - StashIDs: []models.StashID{ + }), + StashIDs: models.NewRelatedStashIDs([]models.StashID{ { StashID: stashID1, Endpoint: endpoint1, @@ -593,7 +620,7 @@ func Test_sceneQueryBuilder_UpdatePartial(t *testing.T) { StashID: stashID2, Endpoint: endpoint2, }, - }, + }), }, false, }, @@ -606,11 +633,11 @@ func Test_sceneQueryBuilder_UpdatePartial(t *testing.T) { Files: []*file.VideoFile{ makeSceneFile(sceneIdxWithSpacedName), }, - GalleryIDs: []int{}, - TagIDs: []int{}, - PerformerIDs: []int{}, - Movies: []models.MoviesScenes{}, - StashIDs: []models.StashID{}, + GalleryIDs: models.NewRelatedIDs([]int{}), + TagIDs: models.NewRelatedIDs([]int{}), + PerformerIDs: models.NewRelatedIDs([]int{}), + Movies: models.NewRelatedMovies([]models.MoviesScenes{}), + StashIDs: models.NewRelatedStashIDs([]models.StashID{}), }, false, }, @@ -641,6 +668,12 @@ func Test_sceneQueryBuilder_UpdatePartial(t *testing.T) { // ignore file ids clearSceneFileIDs(got) + // load relationships + if err := loadSceneRelationships(ctx, tt.want, got); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return + } + assert.Equal(tt.want, *got) s, err := qb.Find(ctx, tt.id) @@ -651,6 +684,12 @@ func Test_sceneQueryBuilder_UpdatePartial(t *testing.T) { // ignore file ids clearSceneFileIDs(s) + // load relationships + if err := loadSceneRelationships(ctx, tt.want, s); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return + } + assert.Equal(tt.want, *s) }) } @@ -705,10 +744,10 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - GalleryIDs: append(indexesToIDs(galleryIDs, sceneGalleries[sceneIdxWithGallery]), + GalleryIDs: models.NewRelatedIDs(append(indexesToIDs(galleryIDs, sceneGalleries[sceneIdxWithGallery]), galleryIDs[galleryIdx1WithImage], galleryIDs[galleryIdx1WithPerformer], - ), + )), }, false, }, @@ -722,10 +761,10 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - TagIDs: append(indexesToIDs(tagIDs, sceneTags[sceneIdxWithTwoTags]), + TagIDs: models.NewRelatedIDs(append(indexesToIDs(tagIDs, sceneTags[sceneIdxWithTwoTags]), tagIDs[tagIdx1WithDupName], tagIDs[tagIdx1WithGallery], - ), + )), }, false, }, @@ -739,10 +778,10 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - PerformerIDs: append(indexesToIDs(performerIDs, scenePerformers[sceneIdxWithTwoPerformers]), + PerformerIDs: models.NewRelatedIDs(append(indexesToIDs(performerIDs, scenePerformers[sceneIdxWithTwoPerformers]), performerIDs[performerIdx1WithDupName], performerIDs[performerIdx1WithGallery], - ), + )), }, false, }, @@ -756,11 +795,11 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - Movies: append([]models.MoviesScenes{ + Movies: models.NewRelatedMovies(append([]models.MoviesScenes{ { MovieID: indexesToIDs(movieIDs, sceneMovies[sceneIdxWithMovie])[0], }, - }, movieScenes...), + }, movieScenes...)), }, false, }, @@ -774,7 +813,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - StashIDs: append([]models.StashID{sceneStashID(sceneIdxWithSpacedName)}, stashIDs...), + StashIDs: models.NewRelatedStashIDs(append([]models.StashID{sceneStashID(sceneIdxWithSpacedName)}, stashIDs...)), }, false, }, @@ -788,9 +827,9 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - GalleryIDs: append(indexesToIDs(galleryIDs, sceneGalleries[sceneIdxWithGallery]), + GalleryIDs: models.NewRelatedIDs(append(indexesToIDs(galleryIDs, sceneGalleries[sceneIdxWithGallery]), galleryIDs[galleryIdx1WithPerformer], - ), + )), }, false, }, @@ -804,9 +843,9 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - TagIDs: append(indexesToIDs(tagIDs, sceneTags[sceneIdxWithTwoTags]), + TagIDs: models.NewRelatedIDs(append(indexesToIDs(tagIDs, sceneTags[sceneIdxWithTwoTags]), tagIDs[tagIdx1WithGallery], - ), + )), }, false, }, @@ -820,9 +859,9 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - PerformerIDs: append(indexesToIDs(performerIDs, scenePerformers[sceneIdxWithTwoPerformers]), + PerformerIDs: models.NewRelatedIDs(append(indexesToIDs(performerIDs, scenePerformers[sceneIdxWithTwoPerformers]), performerIDs[performerIdx1WithGallery], - ), + )), }, false, }, @@ -843,11 +882,11 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - Movies: append([]models.MoviesScenes{ + Movies: models.NewRelatedMovies(append([]models.MoviesScenes{ { MovieID: indexesToIDs(movieIDs, sceneMovies[sceneIdxWithMovie])[0], }, - }, movieScenes...), + }, movieScenes...)), }, false, }, @@ -863,7 +902,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - StashIDs: []models.StashID{sceneStashID(sceneIdxWithSpacedName)}, + StashIDs: models.NewRelatedStashIDs([]models.StashID{sceneStashID(sceneIdxWithSpacedName)}), }, false, }, @@ -929,7 +968,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - GalleryIDs: []int{}, + GalleryIDs: models.NewRelatedIDs([]int{}), }, false, }, @@ -943,7 +982,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - TagIDs: []int{tagIDs[tagIdx2WithScene]}, + TagIDs: models.NewRelatedIDs([]int{tagIDs[tagIdx2WithScene]}), }, false, }, @@ -957,7 +996,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - PerformerIDs: []int{performerIDs[performerIdx2WithScene]}, + PerformerIDs: models.NewRelatedIDs([]int{performerIDs[performerIdx2WithScene]}), }, false, }, @@ -975,7 +1014,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - Movies: []models.MoviesScenes{}, + Movies: models.NewRelatedMovies([]models.MoviesScenes{}), }, false, }, @@ -989,7 +1028,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - StashIDs: []models.StashID{}, + StashIDs: models.NewRelatedStashIDs([]models.StashID{}), }, false, }, @@ -1003,7 +1042,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - GalleryIDs: []int{galleryIDs[galleryIdxWithScene]}, + GalleryIDs: models.NewRelatedIDs([]int{galleryIDs[galleryIdxWithScene]}), }, false, }, @@ -1017,7 +1056,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - TagIDs: indexesToIDs(tagIDs, sceneTags[sceneIdxWithTwoTags]), + TagIDs: models.NewRelatedIDs(indexesToIDs(tagIDs, sceneTags[sceneIdxWithTwoTags])), }, false, }, @@ -1031,7 +1070,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - PerformerIDs: indexesToIDs(performerIDs, scenePerformers[sceneIdxWithTwoPerformers]), + PerformerIDs: models.NewRelatedIDs(indexesToIDs(performerIDs, scenePerformers[sceneIdxWithTwoPerformers])), }, false, }, @@ -1049,11 +1088,11 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - Movies: []models.MoviesScenes{ + Movies: models.NewRelatedMovies([]models.MoviesScenes{ { MovieID: indexesToIDs(movieIDs, sceneMovies[sceneIdxWithMovie])[0], }, - }, + }), }, false, }, @@ -1067,7 +1106,7 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { }, }, models.Scene{ - StashIDs: []models.StashID{sceneStashID(sceneIdxWithGallery)}, + StashIDs: models.NewRelatedStashIDs([]models.StashID{sceneStashID(sceneIdxWithGallery)}), }, false, }, @@ -1094,6 +1133,16 @@ func Test_sceneQueryBuilder_UpdatePartialRelationships(t *testing.T) { t.Errorf("sceneQueryBuilder.Find() error = %v", err) } + // load relationships + if err := loadSceneRelationships(ctx, tt.want, got); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return + } + if err := loadSceneRelationships(ctx, tt.want, s); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return + } + // only compare fields that were in the partial if tt.partial.PerformerIDs != nil { assert.Equal(tt.want.PerformerIDs, got.PerformerIDs) @@ -1353,6 +1402,12 @@ func Test_sceneQueryBuilder_Find(t *testing.T) { if got != nil { clearSceneFileIDs(got) + + // load relationships + if err := loadSceneRelationships(ctx, *tt.want, got); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return nil + } } assert.Equal(tt.want, got) @@ -1362,6 +1417,21 @@ func Test_sceneQueryBuilder_Find(t *testing.T) { } } +func postFindScenes(ctx context.Context, want []*models.Scene, got []*models.Scene) error { + for i, s := range got { + clearSceneFileIDs(s) + + // load relationships + if i < len(want) { + if err := loadSceneRelationships(ctx, *want[i], s); err != nil { + return err + } + } + } + + return nil +} + func Test_sceneQueryBuilder_FindMany(t *testing.T) { tests := []struct { name string @@ -1404,8 +1474,9 @@ func Test_sceneQueryBuilder_FindMany(t *testing.T) { return } - for _, s := range got { - clearSceneFileIDs(s) + if err := postFindScenes(ctx, tt.want, got); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return } assert.Equal(tt.want, got) @@ -1474,8 +1545,9 @@ func Test_sceneQueryBuilder_FindByChecksum(t *testing.T) { return nil } - for _, s := range got { - clearSceneFileIDs(s) + if err := postFindScenes(ctx, tt.want, got); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return nil } assert.Equal(tt.want, got) @@ -1546,8 +1618,9 @@ func Test_sceneQueryBuilder_FindByOSHash(t *testing.T) { return nil } - for _, s := range got { - clearSceneFileIDs(s) + if err := postFindScenes(ctx, tt.want, got); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return nil } if !reflect.DeepEqual(got, tt.want) { @@ -1620,8 +1693,9 @@ func Test_sceneQueryBuilder_FindByPath(t *testing.T) { return nil } - for _, s := range got { - clearSceneFileIDs(s) + if err := postFindScenes(ctx, tt.want, got); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return nil } assert.Equal(tt.want, got) @@ -1664,8 +1738,9 @@ func Test_sceneQueryBuilder_FindByGalleryID(t *testing.T) { return } - for _, s := range got { - clearSceneFileIDs(s) + if err := postFindScenes(ctx, tt.want, got); err != nil { + t.Errorf("loadSceneRelationships() error = %v", err) + return } assert.Equal(tt.want, got) @@ -3539,7 +3614,11 @@ func verifyScenesTagCount(t *testing.T, tagCountCriterion models.IntCriterionInp assert.Greater(t, len(scenes), 0) for _, scene := range scenes { - verifyInt(t, len(scene.TagIDs), tagCountCriterion) + if err := scene.LoadTagIDs(ctx, sqb); err != nil { + t.Errorf("scene.LoadTagIDs() error = %v", err) + return nil + } + verifyInt(t, len(scene.TagIDs.List()), tagCountCriterion) } return nil @@ -3576,7 +3655,12 @@ func verifyScenesPerformerCount(t *testing.T, performerCountCriterion models.Int assert.Greater(t, len(scenes), 0) for _, scene := range scenes { - verifyInt(t, len(scene.PerformerIDs), performerCountCriterion) + if err := scene.LoadPerformerIDs(ctx, sqb); err != nil { + t.Errorf("scene.LoadPerformerIDs() error = %v", err) + return nil + } + + verifyInt(t, len(scene.PerformerIDs.List()), performerCountCriterion) } return nil @@ -3776,6 +3860,10 @@ func TestSceneStashIDs(t *testing.T) { return fmt.Errorf("Error creating scene: %s", err.Error()) } + if err := scene.LoadStashIDs(ctx, qb); err != nil { + return err + } + testSceneStashIDs(ctx, t, scene) return nil }); err != nil { @@ -3785,7 +3873,7 @@ func TestSceneStashIDs(t *testing.T) { func testSceneStashIDs(ctx context.Context, t *testing.T, s *models.Scene) { // ensure no stash IDs to begin with - assert.Len(t, s.StashIDs, 0) + assert.Len(t, s.StashIDs.List(), 0) // add stash ids const stashIDStr = "stashID" @@ -3809,7 +3897,12 @@ func testSceneStashIDs(ctx context.Context, t *testing.T, s *models.Scene) { t.Error(err.Error()) } - assert.Equal(t, []models.StashID{stashID}, s.StashIDs) + if err := s.LoadStashIDs(ctx, qb); err != nil { + t.Error(err.Error()) + return + } + + assert.Equal(t, []models.StashID{stashID}, s.StashIDs.List()) // remove stash ids and ensure was updated s, err = qb.UpdatePartial(ctx, s.ID, models.ScenePartial{ @@ -3822,7 +3915,12 @@ func testSceneStashIDs(ctx context.Context, t *testing.T, s *models.Scene) { t.Error(err.Error()) } - assert.Len(t, s.StashIDs, 0) + if err := s.LoadStashIDs(ctx, qb); err != nil { + t.Error(err.Error()) + return + } + + assert.Len(t, s.StashIDs.List(), 0) } func TestSceneQueryQTrim(t *testing.T) { diff --git a/pkg/sqlite/setup_test.go b/pkg/sqlite/setup_test.go index 541bc1352..92412ac89 100644 --- a/pkg/sqlite/setup_test.go +++ b/pkg/sqlite/setup_test.go @@ -975,13 +975,13 @@ func makeScene(i int) *models.Scene { OCounter: getOCounter(i), Date: getObjectDateObject(i), StudioID: studioID, - GalleryIDs: gids, - PerformerIDs: pids, - TagIDs: tids, - Movies: movies, - StashIDs: []models.StashID{ + GalleryIDs: models.NewRelatedIDs(gids), + PerformerIDs: models.NewRelatedIDs(pids), + TagIDs: models.NewRelatedIDs(tids), + Movies: models.NewRelatedMovies(movies), + StashIDs: models.NewRelatedStashIDs([]models.StashID{ sceneStashID(i), - }, + }), } } @@ -1051,9 +1051,9 @@ func makeImage(i int) *models.Image { Rating: getIntPtr(getRating(i)), OCounter: getOCounter(i), StudioID: studioID, - GalleryIDs: gids, - PerformerIDs: pids, - TagIDs: tids, + GalleryIDs: models.NewRelatedIDs(gids), + PerformerIDs: models.NewRelatedIDs(pids), + TagIDs: models.NewRelatedIDs(tids), } } @@ -1135,12 +1135,12 @@ func makeGallery(i int, includeScenes bool) *models.Gallery { Rating: getIntPtr(getRating(i)), Date: getObjectDateObject(i), StudioID: studioID, - PerformerIDs: pids, - TagIDs: tids, + PerformerIDs: models.NewRelatedIDs(pids), + TagIDs: models.NewRelatedIDs(tids), } if includeScenes { - ret.SceneIDs = indexesToIDs(sceneIDs, sceneGalleries.reverseLookup(i)) + ret.SceneIDs = models.NewRelatedIDs(indexesToIDs(sceneIDs, sceneGalleries.reverseLookup(i))) } return ret diff --git a/pkg/sqlite/stash_id_test.go b/pkg/sqlite/stash_id_test.go index 9fc0a7839..10949b475 100644 --- a/pkg/sqlite/stash_id_test.go +++ b/pkg/sqlite/stash_id_test.go @@ -12,8 +12,8 @@ import ( ) type stashIDReaderWriter interface { - GetStashIDs(ctx context.Context, performerID int) ([]*models.StashID, error) - UpdateStashIDs(ctx context.Context, performerID int, stashIDs []*models.StashID) error + GetStashIDs(ctx context.Context, performerID int) ([]models.StashID, error) + UpdateStashIDs(ctx context.Context, performerID int, stashIDs []models.StashID) error } func testStashIDReaderWriter(ctx context.Context, t *testing.T, r stashIDReaderWriter, id int) { @@ -26,25 +26,25 @@ func testStashIDReaderWriter(ctx context.Context, t *testing.T, r stashIDReaderW // add stash ids const stashIDStr = "stashID" const endpoint = "endpoint" - stashID := &models.StashID{ + stashID := models.StashID{ StashID: stashIDStr, Endpoint: endpoint, } // update stash ids and ensure was updated - if err := r.UpdateStashIDs(ctx, id, []*models.StashID{stashID}); err != nil { + if err := r.UpdateStashIDs(ctx, id, []models.StashID{stashID}); err != nil { t.Error(err.Error()) } - testStashIDs(ctx, t, r, id, []*models.StashID{stashID}) + testStashIDs(ctx, t, r, id, []models.StashID{stashID}) // update non-existing id - should return error - if err := r.UpdateStashIDs(ctx, -1, []*models.StashID{stashID}); err == nil { + if err := r.UpdateStashIDs(ctx, -1, []models.StashID{stashID}); err == nil { t.Error("expected error when updating non-existing id") } // remove stash ids and ensure was updated - if err := r.UpdateStashIDs(ctx, id, []*models.StashID{}); err != nil { + if err := r.UpdateStashIDs(ctx, id, []models.StashID{}); err != nil { t.Error(err.Error()) } @@ -62,7 +62,7 @@ func testNoStashIDs(ctx context.Context, t *testing.T, r stashIDReaderWriter, id assert.Len(t, stashIDs, 0) } -func testStashIDs(ctx context.Context, t *testing.T, r stashIDReaderWriter, id int, expected []*models.StashID) { +func testStashIDs(ctx context.Context, t *testing.T, r stashIDReaderWriter, id int, expected []models.StashID) { t.Helper() stashIDs, err := r.GetStashIDs(ctx, id) if err != nil { diff --git a/pkg/sqlite/studio.go b/pkg/sqlite/studio.go index 547953506..e7b12c9e3 100644 --- a/pkg/sqlite/studio.go +++ b/pkg/sqlite/studio.go @@ -7,7 +7,10 @@ import ( "fmt" "strings" + "github.com/doug-martin/goqu/v9" + "github.com/jmoiron/sqlx" "github.com/stashapp/stash/pkg/models" + "github.com/stashapp/stash/pkg/sliceutil/intslice" ) const studioTable = "studios" @@ -76,21 +79,45 @@ func (qb *studioQueryBuilder) Find(ctx context.Context, id int) (*models.Studio, } func (qb *studioQueryBuilder) FindMany(ctx context.Context, ids []int) ([]*models.Studio, error) { - var studios []*models.Studio - for _, id := range ids { - studio, err := qb.Find(ctx, id) - if err != nil { - return nil, err - } - - if studio == nil { - return nil, fmt.Errorf("studio with id %d not found", id) - } - - studios = append(studios, studio) + tableMgr := studioTableMgr + q := goqu.Select("*").From(tableMgr.table).Where(tableMgr.byIDInts(ids...)) + unsorted, err := qb.getMany(ctx, q) + if err != nil { + return nil, err } - return studios, nil + ret := make([]*models.Studio, len(ids)) + + for _, s := range unsorted { + i := intslice.IntIndex(ids, s.ID) + ret[i] = s + } + + for i := range ret { + if ret[i] == nil { + return nil, fmt.Errorf("studio with id %d not found", ids[i]) + } + } + + return ret, nil +} + +func (qb *studioQueryBuilder) getMany(ctx context.Context, q *goqu.SelectDataset) ([]*models.Studio, error) { + const single = false + var ret []*models.Studio + if err := queryFunc(ctx, q, single, func(r *sqlx.Rows) error { + var f models.Studio + if err := r.StructScan(&f); err != nil { + return err + } + + ret = append(ret, &f) + return nil + }); err != nil { + return nil, err + } + + return ret, nil } func (qb *studioQueryBuilder) FindChildren(ctx context.Context, id int) ([]*models.Studio, error) { @@ -258,14 +285,9 @@ func (qb *studioQueryBuilder) Query(ctx context.Context, studioFilter *models.St return nil, 0, err } - var studios []*models.Studio - for _, id := range idsResult { - studio, err := qb.Find(ctx, id) - if err != nil { - return nil, 0, err - } - - studios = append(studios, studio) + studios, err := qb.FindMany(ctx, idsResult) + if err != nil { + return nil, 0, err } return studios, countResult, nil @@ -425,11 +447,11 @@ func (qb *studioQueryBuilder) stashIDRepository() *stashIDRepository { } } -func (qb *studioQueryBuilder) GetStashIDs(ctx context.Context, studioID int) ([]*models.StashID, error) { +func (qb *studioQueryBuilder) GetStashIDs(ctx context.Context, studioID int) ([]models.StashID, error) { return qb.stashIDRepository().get(ctx, studioID) } -func (qb *studioQueryBuilder) UpdateStashIDs(ctx context.Context, studioID int, stashIDs []*models.StashID) error { +func (qb *studioQueryBuilder) UpdateStashIDs(ctx context.Context, studioID int, stashIDs []models.StashID) error { return qb.stashIDRepository().replace(ctx, studioID, stashIDs) } diff --git a/pkg/sqlite/table.go b/pkg/sqlite/table.go index d188b9eb1..f4cec8244 100644 --- a/pkg/sqlite/table.go +++ b/pkg/sqlite/table.go @@ -69,6 +69,14 @@ func (t *table) byID(id interface{}) exp.Expression { return t.idColumn.Eq(id) } +func (t *table) byIDInts(ids ...int) exp.Expression { + ii := make([]interface{}, len(ids)) + for i, id := range ids { + ii[i] = id + } + return t.idColumn.In(ii...) +} + func (t *table) idExists(ctx context.Context, id interface{}) (bool, error) { q := dialect.Select(goqu.COUNT("*")).From(t.table).Where(t.byID(id)) diff --git a/pkg/sqlite/tables.go b/pkg/sqlite/tables.go index ad912a417..6acc985e7 100644 --- a/pkg/sqlite/tables.go +++ b/pkg/sqlite/tables.go @@ -174,3 +174,31 @@ var ( idColumn: goqu.T(fingerprintTable).Col(idColumn), } ) + +var ( + performerTableMgr = &table{ + table: goqu.T(performerTable), + idColumn: goqu.T(performerTable).Col(idColumn), + } +) + +var ( + studioTableMgr = &table{ + table: goqu.T(studioTable), + idColumn: goqu.T(studioTable).Col(idColumn), + } +) + +var ( + tagTableMgr = &table{ + table: goqu.T(tagTable), + idColumn: goqu.T(tagTable).Col(idColumn), + } +) + +var ( + movieTableMgr = &table{ + table: goqu.T(movieTable), + idColumn: goqu.T(movieTable).Col(idColumn), + } +) diff --git a/pkg/sqlite/tag.go b/pkg/sqlite/tag.go index ced2662e8..d951f3d3b 100644 --- a/pkg/sqlite/tag.go +++ b/pkg/sqlite/tag.go @@ -7,7 +7,10 @@ import ( "fmt" "strings" + "github.com/doug-martin/goqu/v9" + "github.com/jmoiron/sqlx" "github.com/stashapp/stash/pkg/models" + "github.com/stashapp/stash/pkg/sliceutil/intslice" ) const tagTable = "tags" @@ -94,21 +97,45 @@ func (qb *tagQueryBuilder) Find(ctx context.Context, id int) (*models.Tag, error } func (qb *tagQueryBuilder) FindMany(ctx context.Context, ids []int) ([]*models.Tag, error) { - var tags []*models.Tag - for _, id := range ids { - tag, err := qb.Find(ctx, id) - if err != nil { - return nil, err - } - - if tag == nil { - return nil, fmt.Errorf("tag with id %d not found", id) - } - - tags = append(tags, tag) + tableMgr := tagTableMgr + q := goqu.Select("*").From(tableMgr.table).Where(tableMgr.byIDInts(ids...)) + unsorted, err := qb.getMany(ctx, q) + if err != nil { + return nil, err } - return tags, nil + ret := make([]*models.Tag, len(ids)) + + for _, s := range unsorted { + i := intslice.IntIndex(ids, s.ID) + ret[i] = s + } + + for i := range ret { + if ret[i] == nil { + return nil, fmt.Errorf("tag with id %d not found", ids[i]) + } + } + + return ret, nil +} + +func (qb *tagQueryBuilder) getMany(ctx context.Context, q *goqu.SelectDataset) ([]*models.Tag, error) { + const single = false + var ret []*models.Tag + if err := queryFunc(ctx, q, single, func(r *sqlx.Rows) error { + var f models.Tag + if err := r.StructScan(&f); err != nil { + return err + } + + ret = append(ret, &f) + return nil + }); err != nil { + return nil, err + } + + return ret, nil } func (qb *tagQueryBuilder) FindBySceneID(ctx context.Context, sceneID int) ([]*models.Tag, error) { @@ -343,13 +370,9 @@ func (qb *tagQueryBuilder) Query(ctx context.Context, tagFilter *models.TagFilte return nil, 0, err } - var tags []*models.Tag - for _, id := range idsResult { - tag, err := qb.Find(ctx, id) - if err != nil { - return nil, 0, err - } - tags = append(tags, tag) + tags, err := qb.FindMany(ctx, idsResult) + if err != nil { + return nil, 0, err } return tags, countResult, nil diff --git a/pkg/sqlite/tag_test.go b/pkg/sqlite/tag_test.go index eed064da3..2f91658de 100644 --- a/pkg/sqlite/tag_test.go +++ b/pkg/sqlite/tag_test.go @@ -961,7 +961,10 @@ func TestTagMerge(t *testing.T) { if err != nil { return err } - sceneTagIDs := s.TagIDs + if err := s.LoadTagIDs(ctx, db.Scene); err != nil { + return err + } + sceneTagIDs := s.TagIDs.List() assert.Contains(sceneTagIDs, destID) @@ -993,8 +996,12 @@ func TestTagMerge(t *testing.T) { return err } + if err := g.LoadTagIDs(ctx, db.Gallery); err != nil { + return err + } + // ensure gallery points to new tag - assert.Contains(g.TagIDs, destID) + assert.Contains(g.TagIDs.List(), destID) // ensure performer points to new tag performerTagIDs, err := sqlite.PerformerReaderWriter.GetTagIDs(ctx, performerIDs[performerIdxWithTwoTags]) diff --git a/pkg/studio/export.go b/pkg/studio/export.go index ed8cd4db9..27cbaeb38 100644 --- a/pkg/studio/export.go +++ b/pkg/studio/export.go @@ -14,7 +14,7 @@ type FinderImageStashIDGetter interface { Finder GetAliases(ctx context.Context, studioID int) ([]string, error) GetImage(ctx context.Context, studioID int) ([]byte, error) - GetStashIDs(ctx context.Context, studioID int) ([]*models.StashID, error) + models.StashIDLoader } // ToJSON converts a Studio object into its JSON equivalent. @@ -69,9 +69,9 @@ func ToJSON(ctx context.Context, reader FinderImageStashIDGetter, studio *models } stashIDs, _ := reader.GetStashIDs(ctx, studio.ID) - var ret []*models.StashID + var ret []models.StashID for _, stashID := range stashIDs { - newJoin := &models.StashID{ + newJoin := models.StashID{ StashID: stashID.StashID, Endpoint: stashID.Endpoint, } diff --git a/pkg/studio/export_test.go b/pkg/studio/export_test.go index d6caf3f11..8b329668e 100644 --- a/pkg/studio/export_test.go +++ b/pkg/studio/export_test.go @@ -46,8 +46,8 @@ var stashID = models.StashID{ StashID: "StashID", Endpoint: "Endpoint", } -var stashIDs = []*models.StashID{ - &stashID, +var stashIDs = []models.StashID{ + stashID, } const image = "aW1hZ2VCeXRlcw==" @@ -107,8 +107,8 @@ func createFullJSONStudio(parentStudio, image string, aliases []string) *jsonsch Image: image, Rating: rating, Aliases: aliases, - StashIDs: []*models.StashID{ - &stashID, + StashIDs: []models.StashID{ + stashID, }, IgnoreAutoTag: autoTagIgnored, } diff --git a/pkg/studio/import.go b/pkg/studio/import.go index a79a9607c..627d81272 100644 --- a/pkg/studio/import.go +++ b/pkg/studio/import.go @@ -18,7 +18,7 @@ type NameFinderCreatorUpdater interface { UpdateFull(ctx context.Context, updatedStudio models.Studio) (*models.Studio, error) UpdateImage(ctx context.Context, studioID int, image []byte) error UpdateAliases(ctx context.Context, studioID int, aliases []string) error - UpdateStashIDs(ctx context.Context, studioID int, stashIDs []*models.StashID) error + UpdateStashIDs(ctx context.Context, studioID int, stashIDs []models.StashID) error } var ErrParentStudioNotExist = errors.New("parent studio does not exist") diff --git a/tools.go b/tools.go index fa219bb53..adc47d7e9 100644 --- a/tools.go +++ b/tools.go @@ -6,5 +6,6 @@ package main import ( _ "github.com/99designs/gqlgen" _ "github.com/Yamashou/gqlgenc" + _ "github.com/vektah/dataloaden" _ "github.com/vektra/mockery/v2" ) diff --git a/vendor/github.com/vektah/dataloaden/.gitignore b/vendor/github.com/vektah/dataloaden/.gitignore new file mode 100644 index 000000000..40b341e35 --- /dev/null +++ b/vendor/github.com/vektah/dataloaden/.gitignore @@ -0,0 +1,2 @@ +/vendor +/.idea \ No newline at end of file diff --git a/vendor/github.com/vektah/dataloaden/README.md b/vendor/github.com/vektah/dataloaden/README.md new file mode 100644 index 000000000..f5bcb917e --- /dev/null +++ b/vendor/github.com/vektah/dataloaden/README.md @@ -0,0 +1,97 @@ +### The DATALOADer gENerator [![CircleCI](https://circleci.com/gh/Vektah/dataloaden.svg?style=svg)](https://circleci.com/gh/vektah/dataloaden) [![Go Report Card](https://goreportcard.com/badge/github.com/vektah/dataloaden)](https://goreportcard.com/report/github.com/vektah/dataloaden) [![codecov](https://codecov.io/gh/vektah/dataloaden/branch/master/graph/badge.svg)](https://codecov.io/gh/vektah/dataloaden) + +Requires golang 1.11+ for modules support. + +This is a tool for generating type safe data loaders for go, inspired by https://github.com/facebook/dataloader. + +The intended use is in graphql servers, to reduce the number of queries being sent to the database. These dataloader +objects should be request scoped and short lived. They should be cheap to create in every request even if they dont +get used. + +#### Getting started + +From inside the package you want to have the dataloader in: +```bash +go run github.com/vektah/dataloaden UserLoader string *github.com/dataloaden/example.User +``` + +This will generate a dataloader called `UserLoader` that looks up `*github.com/dataloaden/example.User`'s objects +based on a `string` key. + +In another file in the same package, create the constructor method: +```go +func NewUserLoader() *UserLoader { + return &UserLoader{ + wait: 2 * time.Millisecond, + maxBatch: 100, + fetch: func(keys []string) ([]*User, []error) { + users := make([]*User, len(keys)) + errors := make([]error, len(keys)) + + for i, key := range keys { + users[i] = &User{ID: key, Name: "user " + key} + } + return users, errors + }, + } +} +``` + +Then wherever you want to call the dataloader +```go +loader := NewUserLoader() + +user, err := loader.Load("123") +``` + +This method will block for a short amount of time, waiting for any other similar requests to come in, call your fetch +function once. It also caches values and wont request duplicates in a batch. + +#### Returning Slices + +You may want to generate a dataloader that returns slices instead of single values. Both key and value types can be a +simple go type expression: + +```bash +go run github.com/vektah/dataloaden UserSliceLoader string []*github.com/dataloaden/example.User +``` + +Now each key is expected to return a slice of values and the `fetch` function has the return type `[][]*User`. + +#### Using with go modules + +Create a tools.go that looks like this: +```go +// +build tools + +package main + +import _ "github.com/vektah/dataloaden" +``` + +This will allow go modules to see the dependency. + +You can invoke it from anywhere within your module now using `go run github.com/vektah/dataloaden` and +always get the pinned version. + +#### Wait, how do I use context with this? + +I don't think context makes sense to be passed through a data loader. Consider a few scenarios: +1. a dataloader shared between requests: request A and B both get batched together, which context should be passed to the DB? context.Background is probably more suitable. +2. a dataloader per request for graphql: two different nodes in the graph get batched together, they have different context for tracing purposes, which should be passed to the db? neither, you should just use the root request context. + + +So be explicit about your context: +```go +func NewLoader(ctx context.Context) *UserLoader { + return &UserLoader{ + wait: 2 * time.Millisecond, + maxBatch: 100, + fetch: func(keys []string) ([]*User, []error) { + // you now have a ctx to work with + }, + } +} +``` + +If you feel like I'm wrong please raise an issue. diff --git a/vendor/github.com/vektah/dataloaden/appveyor.yml b/vendor/github.com/vektah/dataloaden/appveyor.yml new file mode 100644 index 000000000..ee3ff895d --- /dev/null +++ b/vendor/github.com/vektah/dataloaden/appveyor.yml @@ -0,0 +1,32 @@ +version: "{build}" + +# Source Config + +skip_branch_with_pr: true +clone_folder: c:\projects\dataloaden + +# Build host + +environment: + GOPATH: c:\gopath + GOVERSION: 1.11.5 + PATH: '%PATH%;c:\gopath\bin' + +init: + - git config --global core.autocrlf input + +# Build + +install: + # Install the specific Go version. + - rmdir c:\go /s /q + - appveyor DownloadFile https://storage.googleapis.com/golang/go%GOVERSION%.windows-amd64.msi + - msiexec /i go%GOVERSION%.windows-amd64.msi /q + - go version + +build: false +deploy: false + +test_script: + - go generate ./... + - go test -parallel 8 ./... diff --git a/vendor/github.com/vektah/dataloaden/dataloaden.go b/vendor/github.com/vektah/dataloaden/dataloaden.go new file mode 100644 index 000000000..3419286d5 --- /dev/null +++ b/vendor/github.com/vektah/dataloaden/dataloaden.go @@ -0,0 +1,28 @@ +package main + +import ( + "fmt" + "os" + + "github.com/vektah/dataloaden/pkg/generator" +) + +func main() { + if len(os.Args) != 4 { + fmt.Println("usage: name keyType valueType") + fmt.Println(" example:") + fmt.Println(" dataloaden 'UserLoader int []*github.com/my/package.User'") + os.Exit(1) + } + + wd, err := os.Getwd() + if err != nil { + fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(2) + } + + if err := generator.Generate(os.Args[1], os.Args[2], os.Args[3], wd); err != nil { + fmt.Fprintln(os.Stderr, err.Error()) + os.Exit(2) + } +} diff --git a/vendor/github.com/vektah/dataloaden/licence.md b/vendor/github.com/vektah/dataloaden/licence.md new file mode 100644 index 000000000..e47379a15 --- /dev/null +++ b/vendor/github.com/vektah/dataloaden/licence.md @@ -0,0 +1,7 @@ +Copyright (c) 2017 Adam Scarr + +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. \ No newline at end of file diff --git a/vendor/github.com/vektah/dataloaden/pkg/generator/generator.go b/vendor/github.com/vektah/dataloaden/pkg/generator/generator.go new file mode 100644 index 000000000..ff618e7b3 --- /dev/null +++ b/vendor/github.com/vektah/dataloaden/pkg/generator/generator.go @@ -0,0 +1,163 @@ +package generator + +import ( + "bytes" + "fmt" + "io/ioutil" + "path/filepath" + "regexp" + "strings" + "unicode" + + "github.com/pkg/errors" + "golang.org/x/tools/go/packages" + "golang.org/x/tools/imports" +) + +type templateData struct { + Package string + Name string + KeyType *goType + ValType *goType +} + +type goType struct { + Modifiers string + ImportPath string + ImportName string + Name string +} + +func (t *goType) String() string { + if t.ImportName != "" { + return t.Modifiers + t.ImportName + "." + t.Name + } + + return t.Modifiers + t.Name +} + +func (t *goType) IsPtr() bool { + return strings.HasPrefix(t.Modifiers, "*") +} + +func (t *goType) IsSlice() bool { + return strings.HasPrefix(t.Modifiers, "[]") +} + +var partsRe = regexp.MustCompile(`^([\[\]\*]*)(.*?)(\.\w*)?$`) + +func parseType(str string) (*goType, error) { + parts := partsRe.FindStringSubmatch(str) + if len(parts) != 4 { + return nil, fmt.Errorf("type must be in the form []*github.com/import/path.Name") + } + + t := &goType{ + Modifiers: parts[1], + ImportPath: parts[2], + Name: strings.TrimPrefix(parts[3], "."), + } + + if t.Name == "" { + t.Name = t.ImportPath + t.ImportPath = "" + } + + if t.ImportPath != "" { + p, err := packages.Load(&packages.Config{Mode: packages.NeedName}, t.ImportPath) + if err != nil { + return nil, err + } + if len(p) != 1 { + return nil, fmt.Errorf("not found") + } + + t.ImportName = p[0].Name + } + + return t, nil +} + +func Generate(name string, keyType string, valueType string, wd string) error { + data, err := getData(name, keyType, valueType, wd) + if err != nil { + return err + } + + filename := strings.ToLower(data.Name) + "_gen.go" + + if err := writeTemplate(filepath.Join(wd, filename), data); err != nil { + return err + } + + return nil +} + +func getData(name string, keyType string, valueType string, wd string) (templateData, error) { + var data templateData + + genPkg := getPackage(wd) + if genPkg == nil { + return templateData{}, fmt.Errorf("unable to find package info for " + wd) + } + + var err error + data.Name = name + data.Package = genPkg.Name + data.KeyType, err = parseType(keyType) + if err != nil { + return templateData{}, fmt.Errorf("key type: %s", err.Error()) + } + data.ValType, err = parseType(valueType) + if err != nil { + return templateData{}, fmt.Errorf("key type: %s", err.Error()) + } + + // if we are inside the same package as the type we don't need an import and can refer directly to the type + if genPkg.PkgPath == data.ValType.ImportPath { + data.ValType.ImportName = "" + data.ValType.ImportPath = "" + } + if genPkg.PkgPath == data.KeyType.ImportPath { + data.KeyType.ImportName = "" + data.KeyType.ImportPath = "" + } + + return data, nil +} + +func getPackage(dir string) *packages.Package { + p, _ := packages.Load(&packages.Config{ + Dir: dir, + }, ".") + + if len(p) != 1 { + return nil + } + + return p[0] +} + +func writeTemplate(filepath string, data templateData) error { + var buf bytes.Buffer + if err := tpl.Execute(&buf, data); err != nil { + return errors.Wrap(err, "generating code") + } + + src, err := imports.Process(filepath, buf.Bytes(), nil) + if err != nil { + return errors.Wrap(err, "unable to gofmt") + } + + if err := ioutil.WriteFile(filepath, src, 0644); err != nil { + return errors.Wrap(err, "writing output") + } + + return nil +} + +func lcFirst(s string) string { + r := []rune(s) + r[0] = unicode.ToLower(r[0]) + return string(r) +} diff --git a/vendor/github.com/vektah/dataloaden/pkg/generator/template.go b/vendor/github.com/vektah/dataloaden/pkg/generator/template.go new file mode 100644 index 000000000..48f5ba252 --- /dev/null +++ b/vendor/github.com/vektah/dataloaden/pkg/generator/template.go @@ -0,0 +1,245 @@ +package generator + +import "text/template" + +var tpl = template.Must(template.New("generated"). + Funcs(template.FuncMap{ + "lcFirst": lcFirst, + }). + Parse(` +// Code generated by github.com/vektah/dataloaden, DO NOT EDIT. + +package {{.Package}} + +import ( + "sync" + "time" + + {{if .KeyType.ImportPath}}"{{.KeyType.ImportPath}}"{{end}} + {{if .ValType.ImportPath}}"{{.ValType.ImportPath}}"{{end}} +) + +// {{.Name}}Config captures the config to create a new {{.Name}} +type {{.Name}}Config struct { + // Fetch is a method that provides the data for the loader + Fetch func(keys []{{.KeyType.String}}) ([]{{.ValType.String}}, []error) + + // Wait is how long wait before sending a batch + Wait time.Duration + + // MaxBatch will limit the maximum number of keys to send in one batch, 0 = not limit + MaxBatch int +} + +// New{{.Name}} creates a new {{.Name}} given a fetch, wait, and maxBatch +func New{{.Name}}(config {{.Name}}Config) *{{.Name}} { + return &{{.Name}}{ + fetch: config.Fetch, + wait: config.Wait, + maxBatch: config.MaxBatch, + } +} + +// {{.Name}} batches and caches requests +type {{.Name}} struct { + // this method provides the data for the loader + fetch func(keys []{{.KeyType.String}}) ([]{{.ValType.String}}, []error) + + // how long to done before sending a batch + wait time.Duration + + // this will limit the maximum number of keys to send in one batch, 0 = no limit + maxBatch int + + // INTERNAL + + // lazily created cache + cache map[{{.KeyType.String}}]{{.ValType.String}} + + // the current batch. keys will continue to be collected until timeout is hit, + // then everything will be sent to the fetch method and out to the listeners + batch *{{.Name|lcFirst}}Batch + + // mutex to prevent races + mu sync.Mutex +} + +type {{.Name|lcFirst}}Batch struct { + keys []{{.KeyType}} + data []{{.ValType.String}} + error []error + closing bool + done chan struct{} +} + +// Load a {{.ValType.Name}} by key, batching and caching will be applied automatically +func (l *{{.Name}}) Load(key {{.KeyType.String}}) ({{.ValType.String}}, error) { + return l.LoadThunk(key)() +} + +// LoadThunk returns a function that when called will block waiting for a {{.ValType.Name}}. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *{{.Name}}) LoadThunk(key {{.KeyType.String}}) func() ({{.ValType.String}}, error) { + l.mu.Lock() + if it, ok := l.cache[key]; ok { + l.mu.Unlock() + return func() ({{.ValType.String}}, error) { + return it, nil + } + } + if l.batch == nil { + l.batch = &{{.Name|lcFirst}}Batch{done: make(chan struct{})} + } + batch := l.batch + pos := batch.keyIndex(l, key) + l.mu.Unlock() + + return func() ({{.ValType.String}}, error) { + <-batch.done + + var data {{.ValType.String}} + if pos < len(batch.data) { + data = batch.data[pos] + } + + var err error + // its convenient to be able to return a single error for everything + if len(batch.error) == 1 { + err = batch.error[0] + } else if batch.error != nil { + err = batch.error[pos] + } + + if err == nil { + l.mu.Lock() + l.unsafeSet(key, data) + l.mu.Unlock() + } + + return data, err + } +} + +// LoadAll fetches many keys at once. It will be broken into appropriate sized +// sub batches depending on how the loader is configured +func (l *{{.Name}}) LoadAll(keys []{{.KeyType}}) ([]{{.ValType.String}}, []error) { + results := make([]func() ({{.ValType.String}}, error), len(keys)) + + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + + {{.ValType.Name|lcFirst}}s := make([]{{.ValType.String}}, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + {{.ValType.Name|lcFirst}}s[i], errors[i] = thunk() + } + return {{.ValType.Name|lcFirst}}s, errors +} + +// LoadAllThunk returns a function that when called will block waiting for a {{.ValType.Name}}s. +// This method should be used if you want one goroutine to make requests to many +// different data loaders without blocking until the thunk is called. +func (l *{{.Name}}) LoadAllThunk(keys []{{.KeyType}}) (func() ([]{{.ValType.String}}, []error)) { + results := make([]func() ({{.ValType.String}}, error), len(keys)) + for i, key := range keys { + results[i] = l.LoadThunk(key) + } + return func() ([]{{.ValType.String}}, []error) { + {{.ValType.Name|lcFirst}}s := make([]{{.ValType.String}}, len(keys)) + errors := make([]error, len(keys)) + for i, thunk := range results { + {{.ValType.Name|lcFirst}}s[i], errors[i] = thunk() + } + return {{.ValType.Name|lcFirst}}s, errors + } +} + +// Prime the cache with the provided key and value. If the key already exists, no change is made +// and false is returned. +// (To forcefully prime the cache, clear the key first with loader.clear(key).prime(key, value).) +func (l *{{.Name}}) Prime(key {{.KeyType}}, value {{.ValType.String}}) bool { + l.mu.Lock() + var found bool + if _, found = l.cache[key]; !found { + {{- if .ValType.IsPtr }} + // make a copy when writing to the cache, its easy to pass a pointer in from a loop var + // and end up with the whole cache pointing to the same value. + cpy := *value + l.unsafeSet(key, &cpy) + {{- else if .ValType.IsSlice }} + // make a copy when writing to the cache, its easy to pass a pointer in from a loop var + // and end up with the whole cache pointing to the same value. + cpy := make({{.ValType.String}}, len(value)) + copy(cpy, value) + l.unsafeSet(key, cpy) + {{- else }} + l.unsafeSet(key, value) + {{- end }} + } + l.mu.Unlock() + return !found +} + +// Clear the value at key from the cache, if it exists +func (l *{{.Name}}) Clear(key {{.KeyType}}) { + l.mu.Lock() + delete(l.cache, key) + l.mu.Unlock() +} + +func (l *{{.Name}}) unsafeSet(key {{.KeyType}}, value {{.ValType.String}}) { + if l.cache == nil { + l.cache = map[{{.KeyType}}]{{.ValType.String}}{} + } + l.cache[key] = value +} + +// keyIndex will return the location of the key in the batch, if its not found +// it will add the key to the batch +func (b *{{.Name|lcFirst}}Batch) keyIndex(l *{{.Name}}, key {{.KeyType}}) int { + for i, existingKey := range b.keys { + if key == existingKey { + return i + } + } + + pos := len(b.keys) + b.keys = append(b.keys, key) + if pos == 0 { + go b.startTimer(l) + } + + if l.maxBatch != 0 && pos >= l.maxBatch-1 { + if !b.closing { + b.closing = true + l.batch = nil + go b.end(l) + } + } + + return pos +} + +func (b *{{.Name|lcFirst}}Batch) startTimer(l *{{.Name}}) { + time.Sleep(l.wait) + l.mu.Lock() + + // we must have hit a batch limit and are already finalizing this batch + if b.closing { + l.mu.Unlock() + return + } + + l.batch = nil + l.mu.Unlock() + + b.end(l) +} + +func (b *{{.Name|lcFirst}}Batch) end(l *{{.Name}}) { + b.data, b.error = l.fetch(b.keys) + close(b.done) +} +`)) diff --git a/vendor/golang.org/x/mod/module/module.go b/vendor/golang.org/x/mod/module/module.go index 355b5a456..c26d1d29e 100644 --- a/vendor/golang.org/x/mod/module/module.go +++ b/vendor/golang.org/x/mod/module/module.go @@ -15,7 +15,7 @@ // but additional checking functions, most notably Check, verify that // a particular path, version pair is valid. // -// Escaped Paths +// # Escaped Paths // // Module paths appear as substrings of file system paths // (in the download cache) and of web server URLs in the proxy protocol. @@ -55,7 +55,7 @@ // Import paths have never allowed exclamation marks, so there is no // need to define how to escape a literal !. // -// Unicode Restrictions +// # Unicode Restrictions // // Today, paths are disallowed from using Unicode. // @@ -102,9 +102,9 @@ import ( "strings" "unicode" "unicode/utf8" + "errors" "golang.org/x/mod/semver" - errors "golang.org/x/xerrors" ) // A Version (for clients, a module.Version) is defined by a module path and version pair. diff --git a/vendor/golang.org/x/net/AUTHORS b/vendor/golang.org/x/net/AUTHORS deleted file mode 100644 index 15167cd74..000000000 --- a/vendor/golang.org/x/net/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/net/CONTRIBUTORS b/vendor/golang.org/x/net/CONTRIBUTORS deleted file mode 100644 index 1c4577e96..000000000 --- a/vendor/golang.org/x/net/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/net/bpf/doc.go b/vendor/golang.org/x/net/bpf/doc.go index ae62feb53..04ec1c8ab 100644 --- a/vendor/golang.org/x/net/bpf/doc.go +++ b/vendor/golang.org/x/net/bpf/doc.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. /* - Package bpf implements marshaling and unmarshaling of programs for the Berkeley Packet Filter virtual machine, and provides a Go implementation of the virtual machine. @@ -21,7 +20,7 @@ access to kernel functions, and while conditional branches are allowed, they can only jump forwards, to guarantee that there are no infinite loops. -The virtual machine +# The virtual machine The BPF VM is an accumulator machine. Its main register, called register A, is an implicit source and destination in all arithmetic @@ -50,7 +49,7 @@ to extensions, which are essentially calls to kernel utility functions. Currently, the only extensions supported by this package are the Linux packet filter extensions. -Examples +# Examples This packet filter selects all ARP packets. @@ -77,6 +76,5 @@ This packet filter captures a random 1% sample of traffic. // Ignore. bpf.RetConstant{Val: 0}, }) - */ package bpf // import "golang.org/x/net/bpf" diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go index 1ba43101f..f6877f98f 100644 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (arm64 || amd64 || ppc64 || ppc64le || mips64 || mips64le || riscv64 || s390x) && linux -// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x +//go:build (arm64 || amd64 || loong64 || ppc64 || ppc64le || mips64 || mips64le || riscv64 || s390x) && linux +// +build arm64 amd64 loong64 ppc64 ppc64le mips64 mips64le riscv64 s390x // +build linux package socket diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_unix.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_unix.go index aa1b06203..19d46789d 100644 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_unix.go +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_unix.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos package socket diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_zos_s390x.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_zos_s390x.go index 98be146bc..68dc8ad63 100644 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_zos_s390x.go +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_zos_s390x.go @@ -4,22 +4,8 @@ package socket -import "syscall" - func (h *cmsghdr) set(l, lvl, typ int) { h.Len = int32(l) h.Level = int32(lvl) h.Type = int32(typ) } - -func controlHeaderLen() int { - return syscall.CmsgLen(0) -} - -func controlMessageLen(dataLen int) int { - return syscall.CmsgLen(dataLen) -} - -func controlMessageSpace(dataLen int) int { - return syscall.CmsgSpace(dataLen) -} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go index 3dc5def2b..2e94e96f8 100644 --- a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go +++ b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (arm64 || amd64 || ppc64 || ppc64le || mips64 || mips64le || riscv64 || s390x) && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || zos) -// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x +//go:build (arm64 || amd64 || loong64 || ppc64 || ppc64le || mips64 || mips64le || riscv64 || s390x) && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || zos) +// +build arm64 amd64 loong64 ppc64 ppc64le mips64 mips64le riscv64 s390x // +build aix darwin dragonfly freebsd linux netbsd openbsd zos package socket diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go index 40ebedab3..0bfcf7afc 100644 --- a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go +++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go @@ -9,7 +9,9 @@ package socket import ( "net" + "os" "sync" + "syscall" ) type mmsghdrs []mmsghdr @@ -93,22 +95,86 @@ func (p *mmsghdrsPacker) pack(ms []Message, parseFn func([]byte, string) (net.Ad return hs } -var defaultMmsghdrsPool = mmsghdrsPool{ +// syscaller is a helper to invoke recvmmsg and sendmmsg via the RawConn.Read/Write interface. +// It is reusable, to amortize the overhead of allocating a closure for the function passed to +// RawConn.Read/Write. +type syscaller struct { + n int + operr error + hs mmsghdrs + flags int + + boundRecvmmsgF func(uintptr) bool + boundSendmmsgF func(uintptr) bool +} + +func (r *syscaller) init() { + r.boundRecvmmsgF = r.recvmmsgF + r.boundSendmmsgF = r.sendmmsgF +} + +func (r *syscaller) recvmmsg(c syscall.RawConn, hs mmsghdrs, flags int) (int, error) { + r.n = 0 + r.operr = nil + r.hs = hs + r.flags = flags + if err := c.Read(r.boundRecvmmsgF); err != nil { + return r.n, err + } + if r.operr != nil { + return r.n, os.NewSyscallError("recvmmsg", r.operr) + } + return r.n, nil +} + +func (r *syscaller) recvmmsgF(s uintptr) bool { + r.n, r.operr = recvmmsg(s, r.hs, r.flags) + return ioComplete(r.flags, r.operr) +} + +func (r *syscaller) sendmmsg(c syscall.RawConn, hs mmsghdrs, flags int) (int, error) { + r.n = 0 + r.operr = nil + r.hs = hs + r.flags = flags + if err := c.Write(r.boundSendmmsgF); err != nil { + return r.n, err + } + if r.operr != nil { + return r.n, os.NewSyscallError("sendmmsg", r.operr) + } + return r.n, nil +} + +func (r *syscaller) sendmmsgF(s uintptr) bool { + r.n, r.operr = sendmmsg(s, r.hs, r.flags) + return ioComplete(r.flags, r.operr) +} + +// mmsgTmps holds reusable temporary helpers for recvmmsg and sendmmsg. +type mmsgTmps struct { + packer mmsghdrsPacker + syscaller syscaller +} + +var defaultMmsgTmpsPool = mmsgTmpsPool{ p: sync.Pool{ New: func() interface{} { - return new(mmsghdrsPacker) + tmps := new(mmsgTmps) + tmps.syscaller.init() + return tmps }, }, } -type mmsghdrsPool struct { +type mmsgTmpsPool struct { p sync.Pool } -func (p *mmsghdrsPool) Get() *mmsghdrsPacker { - return p.p.Get().(*mmsghdrsPacker) +func (p *mmsgTmpsPool) Get() *mmsgTmps { + return p.p.Get().(*mmsgTmps) } -func (p *mmsghdrsPool) Put(packer *mmsghdrsPacker) { - p.p.Put(packer) +func (p *mmsgTmpsPool) Put(tmps *mmsgTmps) { + p.p.Put(tmps) } diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go index c9c592ddb..42411affa 100644 --- a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (arm64 || amd64 || ppc64 || ppc64le || mips64 || mips64le || riscv64 || s390x) && linux -// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x +//go:build (arm64 || amd64 || loong64 || ppc64 || ppc64le || mips64 || mips64le || riscv64 || s390x) && linux +// +build arm64 amd64 loong64 ppc64 ppc64le mips64 mips64le riscv64 s390x // +build linux package socket diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go index 3fcb51b38..8f79b38f7 100644 --- a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go +++ b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go @@ -9,32 +9,23 @@ package socket import ( "net" - "os" ) func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { for i := range ms { ms[i].raceWrite() } - packer := defaultMmsghdrsPool.Get() - defer defaultMmsghdrsPool.Put(packer) + tmps := defaultMmsgTmpsPool.Get() + defer defaultMmsgTmpsPool.Put(tmps) var parseFn func([]byte, string) (net.Addr, error) if c.network != "tcp" { parseFn = parseInetAddr } - hs := packer.pack(ms, parseFn, nil) - var operr error - var n int - fn := func(s uintptr) bool { - n, operr = recvmmsg(s, hs, flags) - return ioComplete(flags, operr) - } - if err := c.c.Read(fn); err != nil { + hs := tmps.packer.pack(ms, parseFn, nil) + n, err := tmps.syscaller.recvmmsg(c.c, hs, flags) + if err != nil { return n, err } - if operr != nil { - return n, os.NewSyscallError("recvmmsg", operr) - } if err := hs[:n].unpack(ms[:n], parseFn, c.network); err != nil { return n, err } @@ -45,25 +36,17 @@ func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { for i := range ms { ms[i].raceRead() } - packer := defaultMmsghdrsPool.Get() - defer defaultMmsghdrsPool.Put(packer) + tmps := defaultMmsgTmpsPool.Get() + defer defaultMmsgTmpsPool.Put(tmps) var marshalFn func(net.Addr, []byte) int if c.network != "tcp" { marshalFn = marshalInetAddr } - hs := packer.pack(ms, nil, marshalFn) - var operr error - var n int - fn := func(s uintptr) bool { - n, operr = sendmmsg(s, hs, flags) - return ioComplete(flags, operr) - } - if err := c.c.Write(fn); err != nil { + hs := tmps.packer.pack(ms, nil, marshalFn) + n, err := tmps.syscaller.sendmmsg(c.c, hs, flags) + if err != nil { return n, err } - if operr != nil { - return n, os.NewSyscallError("sendmmsg", operr) - } if err := hs[:n].unpack(ms[:n], nil, ""); err != nil { return n, err } diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_loong64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_loong64.go new file mode 100644 index 000000000..af964e617 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_loong64.go @@ -0,0 +1,13 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build loong64 +// +build loong64 + +package socket + +const ( + sysRECVMMSG = 0xf3 + sysSENDMMSG = 0x10d +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_loong64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_loong64.go new file mode 100644 index 000000000..6a94fec2c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_loong64.go @@ -0,0 +1,40 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +//go:build loong64 +// +build loong64 + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_0 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc.go index 59b71da57..4c19269be 100644 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc.go +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc.go @@ -4,32 +4,32 @@ package socket type iovec struct { - Base *byte - Len uint32 + Base *byte + Len uint32 } type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 } type mmsghdr struct { - Hdr msghdr - Len uint32 + Hdr msghdr + Len uint32 } type cmsghdr struct { - Len uint32 - Level int32 - Type int32 + Len uint32 + Level int32 + Type int32 } const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c ) diff --git a/vendor/golang.org/x/net/ipv4/doc.go b/vendor/golang.org/x/net/ipv4/doc.go index 245834979..6fbdc52b9 100644 --- a/vendor/golang.org/x/net/ipv4/doc.go +++ b/vendor/golang.org/x/net/ipv4/doc.go @@ -16,8 +16,7 @@ // 3376. // Source-specific multicast is defined in RFC 4607. // -// -// Unicasting +// # Unicasting // // The options for unicasting are available for net.TCPConn, // net.UDPConn and net.IPConn which are created as network connections @@ -51,8 +50,7 @@ // }(c) // } // -// -// Multicasting +// # Multicasting // // The options for multicasting are available for net.UDPConn and // net.IPConn which are created as network connections that use the @@ -141,8 +139,7 @@ // } // } // -// -// More multicasting +// # More multicasting // // An application that uses PacketConn or RawConn may join multiple // multicast groups. For example, a UDP listener with port 1024 might @@ -200,8 +197,7 @@ // // error handling // } // -// -// Source-specific multicasting +// # Source-specific multicasting // // An application that uses PacketConn or RawConn on IGMPv3 supported // platform is able to join source-specific multicast groups. diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_loong64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_loong64.go new file mode 100644 index 000000000..e15c22c74 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_loong64.go @@ -0,0 +1,77 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +//go:build loong64 +// +build loong64 + +package ipv4 + +const ( + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/publicsuffix/list.go b/vendor/golang.org/x/net/publicsuffix/list.go index 200617ea8..e2fddd645 100644 --- a/vendor/golang.org/x/net/publicsuffix/list.go +++ b/vendor/golang.org/x/net/publicsuffix/list.go @@ -33,9 +33,10 @@ // the last two are not (but share the same eTLD+1: "google.com"). // // All of these domains have the same eTLD+1: -// - "www.books.amazon.co.uk" -// - "books.amazon.co.uk" -// - "amazon.co.uk" +// - "www.books.amazon.co.uk" +// - "books.amazon.co.uk" +// - "amazon.co.uk" +// // Specifically, the eTLD+1 is "amazon.co.uk", because the eTLD is "co.uk". // // There is no closed form algorithm to calculate the eTLD of a domain. diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go index 51f40b8eb..a44423976 100644 --- a/vendor/golang.org/x/net/publicsuffix/table.go +++ b/vendor/golang.org/x/net/publicsuffix/table.go @@ -2,7 +2,7 @@ package publicsuffix -const version = "publicsuffix.org's public_suffix_list.dat, git revision 792f13d38c795cf910de96de4baac48f1fee3162 (2021-08-23T07:37:32Z)" +const version = "publicsuffix.org's public_suffix_list.dat, git revision 3c213aab32b3c014f171b1673d4ce9b5cd72bf1c (2021-11-26T23:05:53Z)" const ( nodesBitsChildren = 10 @@ -23,510 +23,510 @@ const ( ) // numTLD is the number of top level domains. -const numTLD = 1508 +const numTLD = 1504 // Text is the combined text of all labels. const text = "9guacuiababia-goracleaningroks-theatree164-balsfjordd-dnshome-we" + - "bserverdal-o-g-i-n4t3l3p0rtashkentatamotorsitestinggfarmerseinea" + - "stasiaetnaamesjevuemielnoboribetsucks3-ap-northeast-2ix4432-bals" + - "an-suedtirolkuszczytnoopencraftrainingdyniabruzzoologicalabamaga" + - "sakishimabaraogashimadachicagoboats3-ap-northeast-1kappchizip611" + - "6-b-datacentermezproxyzgorabogadobeaemcloud-fr1337birdartcenterp" + - "risecloudaccesscambridgeiseiroumuencheninohekinannestaditchyouri" + - "parachutingleezebirkenesoddtangenovaranzanquannefrankfurtcmember" + - "s3-website-ap-southeast-2birthplacebitbucketrzyninomiyakonojorpe" + - "landivtasvuodnakamagayahooguyurihonjournalistjohnirasakin-vpncas" + - "inord-odalombardynalias3-website-eu-west-1bjarkoyusuharabjerkrei" + - "mbamblebesbyenvironmentalconservationionjukudoyamaintenancebizen" + - "akanojohanamakinoharaustinnaumburgjerdrumcpeatonsbergjerstadotsu" + - "ruokakamigaharamswatch-and-clockerevistarnbergivestbytemark12bju" + - "gnieznord-frontierblackfridayusuisservehttpbin-butterbloombergba" + - "uernishiazaincheonishigovtcp4bloxcms3-website-sa-east-1bluebitem" + - "p-dnswedenishiharabmoattachments3-website-us-east-1bms3-website-" + - "us-west-1bmwedeployuufcfanishiizunazukindianapolis-a-bloggerbnrw" + - "egroweibolognagareyamakeuparaglidinglitcheltenham-radio-opensoci" + - "alomzaporizhzhegurindianmarketingliwicebomloabathsbcateringebuil" + - "dingloboavistanbulsan-sudtirolondonetskaratsuginamikatagamilanos" + - "hiroomglogoweirbondigitaloceanographicsxboxfordellogliastradingl" + - "oppenzaolbia-tempio-olbiatempioolbialystokkeliwebhostinglugsjcbn" + - "pparibashkiriabonnishikatakazakindielddanuorrindigenaklodzkodair" + - "abookinghostedpictetgoryuzawabookonlinewjerseyboomlajollamerican" + - "expressexyboschaefflerdalondrinamsskoganeindowapblogsiteleafamil" + - "ycompany-2bostik-serverrankoshigayachts3-website-us-west-2boston" + - "akijinsekikogentappsselfiparisor-fronishikatsuragit-reposts-and-" + - "telecommunicationsakyotanabellevuelosangelesjabbottjeldsundivtta" + - "svuotnakamurataiwanairforcechireadthedocscbgmbhartipschlesisches" + - "alangenishikawazukamisatohoboleslawieconomiastalowa-wolawabotani" + - "calgardeno-stagingminakamichiharabotanicgardenishimerabotanycath" + - "olicaxiaskimitsubatamibudejjuegoshikievennodesabaerobaticketsalo" + - "n-1bouncemerckmsdnipropetrovskjervoyageometre-experts-comptables" + - "altdalorenskogmodellingmxenishinomiyashironoddabounty-fullensake" + - "rrypropertiesaludiyboutiquebecommerce-shopitsitempurlotteboutire" + - "serve-onlinewmexicodyn-o-saurlandesalvadordalibabalena-devicesal" + - "zburgretakamatsukawabozen-sudtirolottokonamegatakatsukindustriab" + - "ozen-suedtirolouvrehabmerbplaceducatorprojectjmaxxxeroxfinitybra" + - "ndywinevalleybrasiliabresciabrindisibenikikugawashtenawdevcdnacc" + - "essobetsuitaijindustriesteamfamberkeleybristoloseyouriparliament" + - "jomelhusgardenishinoomotegohtawaramotoineppubtlsamegawabritishco" + - "lumbialowiezaganishinoshimatsunowruzhgorodeomniweatherchannelpus" + - "ercontentjxjampalacebroadcastlebtimnetzjavaldaostathelleluxembou" + - "rgrimstadrangedalublindesnesamnangerbroadwaybroke-itvedestrandra" + - "y-dnstracebrokerbronnoysundrayddns5ybrothermesaverdealerbrowsers" + - "afetymarketsampaleomurabrumunddalucaniabrunelastxn--0trq7p7nnish" + - "iokoppegardraydnsupdaterbrusselsamsclubartowellbeingzonebruxelle" + - "samsungripebryanskodjedugit-pagespeedmobilizeroticagliaricoharuh" + - "rbrynewportkmaxxn--11b4c3drivegarsheiheijinfinitinsureggioemilia" + - "romagnamsosnowiechernivtsiciliabuskerudrobaknoluoktachikawafflec" + - "elluciancrmadviseharag-cloud-charitychyattorneyagawakayamagazine" + - "kobayashikaoirmitakeharagusartsandnessjoenishitosashimizunaminam" + - "ibosognebuzentsujiiebuzzlgriwataraidrrbwesteuropenairbusantiques" + - "t-a-la-maisondre-landroidrudupontariobranconavstackareliancebzhi" + - "tomirbzzwestfalenishiwakintelligencecoloradoplateaudiopsysanokar" + - "umaifarsundyndns-homednsantabarbaracolumbusheycommunecommunity-p" + - "rochowicecomobaracomparemarkerryhotelsantacruzsantafedjeffersonc" + - "omsecaaskoyabearalvahkihokumakogenebakkeshibechambagriculturenne" + - "bugattiffanyaarborteaches-yogasawaracingrpartinternationalfirear" + - "msantamariakecondoshichinohealth-carereformemergencyahikobeardub" + - "aiduckdnsncfdyndns-ipartsantoandreamhostersanukintuitoyosatoyoka" + - "waconferenceconstructionconsuladoesntexisteingeekasaokamikitayam" + - "atsurinuyamashinatsukigatakasagotpantheonsiteconsultanthropology" + - "consultingruenoharacontactoyotapartycontagematsubaracontemporary" + - "arteducationalchikugodogadollsaobernardocontractorskenconventure" + - "shinodearthruherecifedexetercookingchannelsdvrdnsdojoburguidefen" + - "seljordyndns-mailcoolcooperativano-frankivskygearappasadenarashi" + - "nocopenhagencyclopedichofunatoriginstantcloudfrontdoorcoproducti" + - "onsaogoncarriercorporationcorsicahcesuoloansaotomeiwamashikokuch" + - "uocorvettenrissadonnagatorogersvp4cosenzakopanelblagrarchaeology" + - "eongbuk0cosidnsfor-better-thanawatchesapporocostumedicaltanisset" + - "taishinomakindlefrakkestadyndns-office-on-the-webercouchpotatofr" + - "iesardegnaroycoukashibatakasugainvestmentsardiniacouncilcouponsa" + - "rlcozoracqcxn--12cfi8ixb8lcranbrookuwanalyticsarpsborguitarsaruf" + - "utsunomiyawakasaikaitabashijonawatecrdyndns-picsasayamatta-varjj" + - "atoyotomiyazakinzais-a-candidatecreditcardyndns-remotewdyndns-se" + - "rverisigncreditunioncremonashgabadaddjaguarqhachinohedmarkashiha" + - "racrewhalingujoinvilleirvikashiwaracricketoyotsukaidocrimeast-ka" + - "zakhstanangercrotonecrownipassagensasebofagemologicallynxn--12co" + - "0c3b4evalled-aostamayufuettertdasnetzcrsaskatchewancruisesassari" + - "s-a-caterercuisinellancashirecipescaracalvinklein-berlindaskvoll" + - "pagesaudaculturalcentertainmentoyouracuneocupcakecuritibaghdadul" + - "toystre-slidrettozawacurvalledaostaobaomoriguchiharahkkeravjuedi" + - "schesapeakebayernuorochestercymruovatmallorcafederationcilla-spe" + - "ziacyonabarumemorialcyouthachiojiyaizuwakamatsubushikusakadogawa" + - "ferrarivneferrerotikagoshimalopolskanlandyndns-workshoparenakani" + - "ikawatanagurafetsundyndns1fgushikamifuranordreisa-hockeynutsirac" + - "usaintlouis-a-anarchistoireggio-emilia-romagnakatombetsumitakagi" + - "izefhvalerfidoomdnsiskinkyotobetsulikes-piedmonticellocalzonefie" + - "ldynnsauheradyndns-webhareidsbergentingulenfigueresinstagingwidd" + - "leitungsenfilateliafilegear-audnedalnfilegear-dealstahaugesunder" + - "seaportsinfolionetworkangerfilegear-gbizfilegear-iefilegear-jpmo" + - "rganfilegear-sg-1filminamiechizenfinalfinancefineartschulefinlan" + - "dynservebbsavannahgafinnoyfirebaseappatriafirenetrani-andria-bar" + - "letta-trani-andriafirenzefirestonefirewebhopocznordre-landynulme" + - "msettlersaveincloudyndns-wikirafirmdalegnicapebretonamicrolighti" + - "ngxn--1ctwolominamatargithubusercontentraniandriabarlettatranian" + - "driafishingokasellfylkesbiblackbaudcdn-edgestackhero-networkingg" + - "roupowiathletajimageandsoundandvision-riopretochigiessensiositel" + - "evision-webpaashorokanaiefitjarvodkagaminogatagajobojis-a-chefas" + - "tly-terrariumetacentrumeteorappassenger-associationfitnessettlem" + - "entranoyfjalerflekkefjordynv6flesbergflickragerokunohealthcareer" + - "schulserverflirfloginlinefloraflorencefloridatsunanjoetsuwanouch" + - "ikujogaszkolancasterfloripaderbornfloristanohatajimidsundynvpnpl" + - "us-4floromskogflowerschwarzgwangjuifminamifuranowtvallee-aostero" + - "yfltranslateflynnhosting-clusterfndyroyrvikingunmaniwakuratefnwk" + - "asukabedzin-addrammenuniversityfoodnetworkdalfor-ourfor-somedio-" + - "campidano-mediocampidanomediofor-theaterforexrothachirogatakamor" + - "iokakudamatsueforgotdnschweizforli-cesena-forlicesenaforlikescan" + - "dyn53forsalegoldpoint2thisamitsukeforsandasuoloftransportefortal" + - "fortextileikangerfortmissoulanciafortworthadanore-og-uvdalfosnes" + - "ciencecentersciencehistoryfotransurlfoxafozfranamizuhobby-sitefr" + - "ancaiserniafranziskanerimaringatlantajiris-a-conservativegascien" + - "tistordalfredrikstadtvscjohnsonfreeddnsfreebox-oscrapper-sitefre" + - "edesktoppdalfreemasonryfreemyiphosteurovisionfreesitefreetlscrap" + - "pingfreiburgfreseniusculturecreationfribourgfriuli-v-giuliafriul" + - "i-ve-giuliafriuli-vegiuliafriuli-venezia-giuliafriuli-veneziagiu" + - "liafriuli-vgiuliafriuliv-giuliafriulive-giuliafriulivegiuliafriu" + - "livenezia-giuliafriuliveneziagiuliafriulivgiuliafrlfroganscrysec" + - "uritytacticservehumourfrognfrolandfrom-akrehamnfrom-alfrom-arfro" + - "m-azimuthatogayabukijobservableusercontentrapaniizafrom-capetown" + - "news-stagingfrom-coffeedbackplaneappaviancargodaddyn-vpndnservei" + - "rchonanbulsan-suedtirolucernefrom-ctravelchannelfrom-dchoseikaru" + - "gamvikarlsoyfrom-deatnunjargafrom-flanderserveminecraftravelersi" + - "nsurancefrom-gaulardalfrom-hichisodegaurafrom-iafrom-idfrom-ilfr" + - "om-in-brbar1from-kservemp3from-kyowariasahikawafrom-langevagrige" + - "ntomologyeonggiehtavuoatnabudapest-a-la-masion-rancherkasydneyfr" + - "om-malselvendrelluciancrmadvancefrom-mdfrom-medizinhistorischese" + - "rvep2pfizerfrom-mifunefrom-mnfrom-modalenfrom-mservepicservequak" + - "efrom-mtnfrom-nctulanservesarcasmatartanddesignfrom-ndfrom-nefro" + - "m-nhktrdfrom-njservicesevastopolefrom-nminamiiseoullensvanguardf" + - "rom-nvallee-d-aosteigenfrom-nynysagaeroclubmedecincinnativeameri" + - "canantiquest-mon-blogueurodirumaceratabuseating-organichoshibuya" + - "habackyardsandvikcoromantovalle-daostavangerfrom-ohdattorelayfro" + - "m-oketogolffansevenassisicilyfrom-orfrom-padoval-daostavalleyfro" + - "m-pratogurafrom-ris-a-cpadualstackasumigaurayasudafrom-schoenbru" + - "nnfrom-sdscloudfrom-tnfrom-txn--1lqs03nfrom-utazurestaticappspac" + - "eusercontentrendhostingfrom-vald-aostarostwodzislawhoswholdingsm" + - "all-webredirectmeeresistancefrom-vtrentin-sud-tirolfrom-wafrom-w" + - "iardwebspacefrom-wvalleeaosteinkjerusalembroideryfrom-wyfrosinon" + - "efrostaplesewienfroyaitakahamalvikasuyanaizuerichardlillesandefj" + - "ordfruskydivingfstcgroupgfoggiafujiiderafujikawaguchikonefujimin" + - "okamoenairguardiannakadomarinebraskaunicommbankaszubyfujinomiyad" + - "attowebcampinashikiminohostfoldnavyfujiokayamamurogawafujisatosh" + - "onairlinedre-eikerfujisawafujishiroishidakabiratoridebianfujitsu" + - "rugashimandalfujiyoshidavvenjargap-northeast-3fukayabeatsharis-a" + - "-cubicle-slavellinodeobjectsharpharmacienshawaiijimarburgfukuchi" + - "yamadavvesiidappnodebalancertificationfukudomigawafukuis-a-democ" + - "ratrentin-sudtirolfukumitsubishigakirovogradoyfukuokazakiryuohku" + - "rafukuroishikarikaturindalfukusakisarazure-mobileirfjordfukuyama" + - "gatakaharussiafunabashiriuchinadazaifudaigojomedicinaharimalbork" + - "atowicefunagatakahashimamakishiwadafunahashikamiamakusatsumasend" + - "aisennangonohejis-a-designerfundaciofunkfeuerfuoiskujukuriyamang" + - "ooglecodespotrentin-sued-tirolfuosskoczowiiheyakumodernfurniture" + - "ggio-calabriafurubirafurudonostiaafurukawairportland-4-salernodu" + - "minamiizukaminokawanishiaizubangefusoftwarezzoologyfussagamihara" + - "futabayamaguchinomihachimanagementrentin-suedtirolfutboldlygoing" + - "nowhere-for-morenakasatsunairtelebitbridgestoneen-rootaruis-a-do" + - "ctorfuttsurugimperiafuturecmshellaspeziafuturehostingfuturemaili" + - "ngfvghangglidinghangoutsystemscloudsitehannanmokuizumodenakayama" + - "nnorth-kazakhstanhannorthflankautokeinotairestaurantrentino-a-ad" + - "igehanyuzenhapmircloudletshimojis-a-hard-workershimokawahappounz" + - "enharstadharvestcelebrationhasamansionshimokitayamattelekommunik" + - "ationhasaminami-alpshimonitayanagitappharmacyshimonosekikawahash" + - "banghasudahasura-apphdfcbankazohasvikazteleportlligatrentino-aad" + - "igehatoyamazakitahiroshimanxn--1lqs71dhatsukaichikaiseiyoichippu" + - "betsubetsugarusrcfastlylbanzaicloudappspotagerhattfjelldalhayash" + - "imamotobungotakadagestangeorgeorgiahazuminobusells-for-lesshimos" + - "uwalkis-a-hunterhelsinkitakamiizumisanofidelitysvardontexistmein" + - "-iservebeero-stagehembygdsforbundhemneshimotsukehemsedalhepforge" + - "blockshimotsumayfirstockholmestrandherokusslattuminamimakis-a-kn" + - "ightpointtohnoshoooshikamaishimodateheroyhgtvalleedaostehidorahi" + - "gashiagatsumagoianiahigashichichibunkyonanaoshimakanegasakilatir" + - "onthewifiatlassian-dev-myqnapcloudcontrolledogawarabikomaezakiru" + - "nogiftshinichinanhigashihiroshimanehigashiizumozakitakatakanezaw" + - "ahigashikagawahigashikagurasoedahigashikawakitaaikitakyushuaiahi" + - "gashikurumeetrentino-alto-adigehigashimatsushimaoris-a-landscape" + - "rugiahigashimatsuyamakitaakitadaitoigawahigashimurayamamotorcycl" + - "eshinjournalismailillehammerfeste-iphiladelphiaareadmyblogsytehi" + - "gashinarusells-for-ustkanmakitchenhigashinehigashiomitamamurausu" + - "kitamihamadahigashiosakasayamanakakogawahigashishirakawamatakaok" + - "almykiahigashisumiyoshikawaminamiaikitamotosumy-gatewayhigashits" + - "unorthwesternmutualhigashiurawa-mazowszexnetrentino-altoadigehig" + - "ashiyamatokoriyamanashifteditorxn--1qqw23ahigashiyodogawahigashi" + - "yoshinogaris-a-lawyerhiraizumisatohmapartmentshinjukumamotoyamas" + - "hikehirakatashinagawahiranairtrafficplexus-1hirarahiratsukaerutw" + - "entehirayakagehistorichouseshinkamigototalhitachiomiyagildeskali" + - "szhitachiotagophilatelyhitraeumtgeradegreehjartdalhjelmelandhole" + - "ckochikushinonsenergyholidayhomegoodshinshinotsurgeonshalloffame" + - "lbournehomeiphilipsynology-diskstationhomelinkyard-cloudjiffyres" + - "dalhomelinuxn--2m4a15ehomeofficehomesecuritymacaparecidahomesecu" + - "ritypchoyodobashichikashukujitawaravpagexlukowestus2homesenseeri" + - "nghomesklepphoenixn--2scrj9christiansburgrondarhomeunixn--30rr7y" + - "hondahongotembaixadahonjyoitakarazukaluganskazunoticeablevangerh" + - "ornindalhorsells-itrentino-s-tirolhortendofinternet-dnshinshiroh" + - "ospitalhoteleshintokushimahotelwithflightshintomikasaharahotmail" + - "hoyangerhoylandetroitskddiamondshinyoshitomiokamishihoronobeauxa" + - "rtsandcraftshiojirishirifujiedahumanitieshioyandexcloudhurdalhur" + - "umajis-a-liberalhyllestadhyogoris-a-libertarianhyugawarahyundaiw" + - "afuneis-uberleetrentino-sudtirolis-very-badajozis-a-painteractiv" + - "estfoldis-very-evillageis-very-goodyearis-very-niceis-very-sweet" + - "pepperis-with-thebandownloadisleofmanaustdaljenv-arubajddarchite" + - "cturealtorlandjeonnamerikawauejetztrentino-sued-tiroljevnakershu" + - "sdecorativeartshopwarendalenugjewelryjewishartgalleryjfkharkovao" + - "jgorajlljls-sto1jls-sto2jls-sto3jmphxn--32vp30hadselburgjnjaworz" + - "nosegawajoyentrentino-suedtiroljoyokaichibalashovhaebaruericsson" + - "gdalenviknakatsugawajpnjprshoujis-a-personaltrainerjurkoshimizum" + - "akiyosatokaizukamikoaniihamatamakawajimaritimoldell-ogliastrader" + - "koshunantankhmelnitskiyamarugame-hostyhostingkosugekotohiradomai" + - "nstitutekotourakouhokutamakiyosemitekounosupabasembokukiyosunnda" + - "lkouyamarylhurstjordalshalsenkouzushimasfjordenkozagawakozakizun" + - "okunimilitarykozowildlifestylekpnkppspdnshowtimeldalkrasnikahoku" + - "tokamachintaifun-dnsaliashwilliamhillkrasnodarkredstonekrelliank" + - "ristiansandcatsienarutolgakristiansundkrodsheradkrokstadelvalle-" + - "aostatic-accessigdalkryminamioguni5kumanotogawakumatorinotteroyk" + - "umejimashikis-a-republicancerresearchaeologicaliforniakumenantok" + - "igawakunisakis-a-rockstarachowicekunitachiarailwaykunitomigusuku" + - "leuvenetokashikis-a-socialistdlibestadkunneppuboliviajessheimper" + - "trixcdn77-secureggiocalabriakunstsammlungkunstunddesignkuokgroup" + - "ilotsilkhmelnytskyivaporcloudkuregruhostingkurgankurobeepilepsyk" + - "kylvenicekurogimimatakatoris-a-soxfankuroisogndalkuromatsunais-a" + - "-studentalkurotakikawasakis-a-teacherkassyno-dshiraois-a-linux-u" + - "sershirahamatonbetsurgerykushirogawakustanais-a-techietis-a-llam" + - "archeapigeelvinckfh-muensterkusuppliesimple-urlkutchanelverumina" + - "misanrikubetsupplykutnovecoregontrailroadkuzumakis-a-therapistoi" + - "akvafjordkvalsundkvamlidlugolekafjordvagsoygardendoftheinterneth" + - "nologykvanangenkvinesdalkvinnheradkviteseidatingkvitsoykwpspectr" + - "uminamitanekzmisakis-an-accountantshiraokamitondabayashiogamagor" + - "iziamisasaguris-an-actormisawamisconfusedmishimassivegridmissile" + - "wismillermisugitokorozawamitourismilezajskhplaystation-cloudyclu" + - "stermitoyoakemiuramiyazurecontainerdpolicemiyotamanomjondalenmlb" + - "fanmontrealestatefarmequipmentrentinoa-adigemonza-brianzapposird" + - "almonza-e-della-brianzaptokuyamasudamonzabrianzaramonzaebrianzam" + - "onzaedellabrianzamoonscaleforcemordoviamoriyamatsumaebashikshack" + - "netrentinoaadigemoriyoshiminamiashigaramormonstermoroyamatsumoto" + - "fukemortgagemoscowinbarclaycards3-external-1moseushistorymosjoen" + - "moskeneslupsklabudhabikinokawabarthagakhanamigawamosslzmosvikmps" + - "pbar2moteginowaniigatakahatakaishimogosenmoviemovimientokyotango" + - "uvichungnamdalseidfjordynathomebuiltwithdarkarmoymozilla-iotrent" + - "inoalto-adigemtranbymuginozawaonsenmuikaminoyamaxunispacemukoebe" + - "nhavnmulhouservegame-servermunakatanemuncienciamuosattemupimient" + - "aketomisatomobelementoraymurmansknx-serversicherungmurotorcraftr" + - "entinoaltoadigemusashinoharamuseetrentinos-tirolmuseumvereniging" + - "musicarbonia-iglesias-carboniaiglesiascarboniamutsuzawamy-vigorg" + - "emy-wanggoupilemyactivedirectorymyasustor-elvdalmycdmycloudnsmol" + - "arvikomaganemydattolocalhistorymyddnsgeekgalaxymydissentrentinos" + - "tirolmydobisshikis-an-actresshiratakahagithubpreviewsaikisofukus" + - "himangyshlakasamatsudopaashishikuis-a-musicianmydroboehringerike" + - "mydsmushcdn77-sslingmyeffectrentinosud-tirolmyfastblogermyfirewa" + - "llonieruchomoscienceandindustrynmyforuminamiuonumasoymyfritzmyft" + - "paccessnoasakakinokiamyhome-servermyjinomykolaivarggatrentinosud" + - "tirolmymailermymediapchurchaseljeepsondriodejaneirodoymyokohamam" + - "atsudamypepinbarclays3-fips-us-gov-west-1mypetsokndalmyphotoshib" + - "alatinombrendlyngeniwaizumiotsukumiyamazonawsglobalacceleratorah" + - "imeshimabaridagawakuyachimataikikonaikawachinaganoharamcoachampi" + - "onshiphoptobamadridnbloggerimo-siemenscaledekaasdaburmypictureso" + - "larssonmypsxn--3ds443gmysecuritycamerakermyshopblocksolognemysho" + - "pifymyspreadshoppingmythic-beastsolundbeckomakiyokawaramytis-a-b" + - "ookkeeperspectakasakitashiobaramytuleap-partnersomamyvncircustom" + - "er-ocimdbananarepublic66mywireitrentinosued-tirolplatterpioneerp" + - "lazaplcube-serverplumbingoplurinacionalpodhalepodlasiellaktyubin" + - "skiptveterinairealmpmnpodzonepohlpoivronpokerpokrovskommunalforb" + - "undpoliticarrdpolitiendapolkowicepoltavalle-d-aostaticsopotrenti" + - "nosuedtirolpomorzeszowindmillponpesaro-urbino-pesarourbinopesaro" + - "masvuotnaritakoelnponypordenonepornporsangerporsangugeporsgrunna" + - "nyokoshibahikariwanumatakinouepoznanpraxis-a-bruinsfanprdpresidi" + - "oprgmrprimetelemarkommuneprincipeprivatizehealthinsuranceprofesi" + - "onalprogressivestnesor-odalpromombetsupportrentinsud-tirolproper" + - "typrotectionprotonetrentinsudtirolprudentialpruszkowindowskrakow" + - "innersor-varangerprvcyberlevagangaviikanonjis-an-artistgstageprz" + - "eworskogpugliapulawypupippueblockbusterniiminamiawajikis-an-anar" + - "chistoricalsocietypvhagebostadpvtrentinsued-tirolpwcistrondheimm" + - "obilienissayokkaichiropractichernovtsyncloudurbanamexhibitioniss" + - "andiegomutashinainterhostsolutionsandoypythonanywherepaircraftin" + - "gvollolipopittsburghofficialpzqldqotoyohashimotoolsorfoldqponiat" + - "owadaqslgbtrentinsuedtirolqualifioappiwatequickconnectrentoyonak" + - "agyokutoyakolobrzegersundquicksytesorocabalestrandabergamoarekey" + - "machineustargardquipelementsorreisahayakawakamiichikawamisatotto" + - "ris-an-engineeringqvcitadeliverydyndns-at-homedepotenzamamidorit" + - "togitsumidatlantichirurgiens-dentistes-en-franceswidnikkokonoesw" + - "iebodzin-dsldswiftcoverswinoujscienceandhistoryswissmarterthanyo" + - "usynology-dsouthwest1-uslivinghistorytushuissier-justicetuvallea" + - "ostaverntuxfamilytwmailvevelstadvibo-valentiavibovalentiavideovi" + - "llasphinxn--3e0b707evinnicasacamdvrcampinagrandebuilderschmidtre" + - "-gauldalvinnytsiavipsinaappixolinovirginiavirtual-userveexchange" + - "virtualcloudvirtualservervirtualuserveftpizzavirtueeldomein-vigo" + - "rlicevirtuelvisakegawaviterboknowsitallvivolkenkundenvixn--3hcrj" + - "9civilisationisshingucciprianidyndns-at-workisboringrongausdalut" + - "skarpaczeladzvlaanderenvladikavkazimierz-dolnyvladimirvlogintoyo" + - "nezawavminanovologdanskongsvingervolvolkswagentspjelkavikomorots" + - "ukagawavolyngdalvoorlopervossevangenvotevotingvotoyonovps-hostro" + - "wiecivilizationiyodogawawithyoutuberspacekitagatargetmyipkomforb" + - "arcelonagawalbrzycharternopilawalesundgcanonoichinomiyakehimejib" + - "igawaustraliamuneues3-ap-south-1wiwatsukiyonortonwixsitewloclawe" + - "konskowolayangroupiemontewmcloudwmflabsrhtrevisojamisonwnextdire" + - "ctromsakatakkofuefukihabororosowawoodsideloittevaksdalworse-than" + - "dawowiospydebergwpdevcloudwpenginepoweredwphostedmailwpmucdnplan" + - "tsomnarviikamiokameokamakurazakitaurawpmudeveloperauniterois-cer" + - "tifiedunetlifyis-a-nascarfanwritesthisblogwroclawitdkoninjambylw" + - "tcirclerkstagets-itromsokamogawawtfastvps-serveronakanotoddenwuo" + - "zuwzmiuwajimaxn--45brj9civilwarmiasakuchinotsuchiurakawatchandcl" + - "ockaruizawaxn--45q11clanbibaidarmeniaxn--4gbriminingxn--4it168dx" + - "n--4it797konyvelohmusashimurayamarylandxn--4pvxs4allxn--54b7fta0" + - "ccldmailuxuryxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49cleverapp" + - "stmnxn--5rtq34kooris-a-photographerokuapphotographysioxn--5su34j" + - "936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn" + - "--7t0a264clic20001wwwfarmsteadyndns-blogdnsanfranciscofreakunemu" + - "rorangecloudplatform0xn--80aaa0cvacationsrlxn--80adxhksrvaroyxn-" + - "-80ao21axn--80aqecdr1axn--80asehdbarefootballooningjovikaraganda" + - "ustrheimatunduhrennesoyokosukanramusementdllclstagehirnrtatarant" + - "ours3-ap-southeast-1xn--80aswgxn--80augustowithgoogleapiszxn--8l" + - "tr62kopervikhersonxn--8pvr4uxn--8y0a063axn--90a1aflakstadaokagak" + - "icks-assnasaarlandxn--90a3academiamicable-modemoneyxn--90aeropor" + - "talaheadjudaicadaquestorebaselectritonxn--90aishobarakawagoexn--" + - "90amcdirxn--90azhytomyravendbargainstancempresashibetsukuibmdisc" + - "ourses3-sa-east-1xn--9dbhblg6dietrusteexn--9dbq2axn--9et52uxn--9" + - "krt00axn--andy-iraxn--aroport-byaotsurnadalxn--asky-iraxn--aursk" + - "og-hland-jnbarreauctionfabricafjs3-us-east-2xn--avery-yuasakuhok" + - "ksundxn--b-5gaxn--b4w605ferdxn--balsan-sdtirol-nsbstorfjordxn--b" + - "ck1b9a5dre4clicketcloudcontrolappgafanxn--bdddj-mrabdxn--bearalv" + - "hki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn--b" + - "idr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyasakaiminatoyookana" + - "zawaxn--bjddar-ptarnobrzegyptianxn--blt-elabourxn--bmlo-grainger" + - "xn--bod-2natalxn--bozen-sdtirol-2obanazawaxn--brnny-wuacademy-fi" + - "rewall-gatewayxn--brnnysund-m8accident-investigation-aptibleadpa" + - "gesquare7xn--brum-voagatrvestre-slidreportrogstadxn--btsfjord-9z" + - "axn--bulsan-sdtirol-nsbarrel-of-knowledgeappleborkarasjohkameyam" + - "atotakadauthgear-stagingjesdalimanowarudaukraanghkembuchikumagay" + - "agawakepnoipirangalsaceobiragrocerybnikeisenbahnatuurwetenschapp" + - "engineastcoastaldefenceastus2xn--c1avgxn--c2br7gxn--c3s14mincomc" + - "astresindevicenzaporizhzhiaxn--cck2b3barrell-of-knowledgecompute" + - "rhistoryofscience-fictionredumbrellaakesvuemieleccemrxn--cckwcxe" + - "tdxn--cesena-forl-mcbremangerxn--cesenaforl-i8axn--cg4bkis-found" + - "ationxn--ciqpnxn--clchc0ea0b2g2a9gcdxn--comunicaes-v6a2oxn--corr" + - "eios-e-telecomunicaes-ghc29axn--czr694barsycenterprisesakikuchik" + - "useihicampobassociatest-iservecounterstrikeu-1xn--czrs0try-snowp" + - "lowiczest-le-patronxn--czru2dxn--czrw28barsyonlinewhampshirealty" + - "dalpha-myqnapcloud66xn--d1acj3basicservercelliguriauthgearappspa" + - "cehosted-by-previderhclouddnslivefsnillfjorddnss3-ca-central-1xn" + - "--d1alfaromeoxn--d1atrycloudflareplantationxn--d5qv7z876clickris" + - "inglesangoxn--davvenjrga-y4axn--djrs72d6uyxn--djty4koryokamikawa" + - "nehonbetsurutaharaxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dy" + - "ry-iraxn--e1a4clinichitachinakagawassamukawatarikuzentakatairave" + - "nnagasakimobetsuldaluccaravantaarparmatsuuraxn--eckvdtc9dxn--efv" + - "n9storjcloud-ver-jpchristmasakinderoyxn--efvy88haibarakitahataka" + - "nabeautysfjordxn--ehqz56nxn--elqq16hair-surveillancexn--eveni-0q" + - "a01gaxn--f6qx53axn--fct429kosaigawaxn--fhbeiarnxn--finny-yuaxn--" + - "fiq228c5hstpetersburgxn--fiq64basilicataniauthordalandds3-eu-cen" + - "tral-1xn--fiqs8streamscompute-1xn--fiqz9studioxn--fjord-lraxn--f" + - "jq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-cesena-fcbsstudy" + - "namisches-dnsortlandxn--forlcesena-c8axn--fpcrj9c3dxn--frde-gran" + - "drapidstuff-4-salexn--frna-woaraisaijosoyrovigotsukisosakitagawa" + - "xn--frya-hraxn--fzc2c9e2cliniquedapliernewyorkshirebungoonordest" + - "e-idchitosetoeigersundurhamburgroks-thisayamanobeokakegawaxn--fz" + - "ys8d69uvgmailxn--g2xx48clintonoshoesanjotelulubindaluzernxn--gck" + - "r3f0fauskedsmokorsetagayaseralingenoamishirasatogliattis-a-celti" + - "csfanxn--gecrj9clothingdustdatadetectksatxn--12c1fe0bradescotlan" + - "dyndns-freeboxosascoli-picenordkapparochernigovernmentlon-2xn--g" + - "gaviika-8ya47hakatanorfolkebibleksvikatsushikabeebyteapplinzis-a" + - "-financialadvisor-aurdalxn--gildeskl-g0axn--givuotna-8yasugitlab" + - "orxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050is-gonexn--g" + - "mqw5axn--gnstigbestellen-zvbrplsbxn--3oq18vl8pn36axn--gnstiglief" + - "ern-wobihirosakikamijimatsusakahoginankokubunjis-into-animegurow" + - "nproviderxn--h-2failxn--h1aeghakodatexn--h1ahnxn--h1alizxn--h2br" + - "eg3evenestufftoread-booksnesoruminamiyamashirokawanabelaudibleas" + - "ingxn--h2brj9c8cn-northwest-1xn--h3cuzk1discountysnestuttgartroa" + - "ndinosaurepbodynamic-dnsoundcastronomy-routerxn--hbmer-xqaxn--hc" + - "esuolo-7ya35basketballfinanzgorzeleccogladedyn-berlincolnavigati" + - "onavoizumizakiitatebayashiibahccavuotnagaraholtalenglandiscovery" + - "ggeeu-2xn--hery-iraxn--hgebostad-g3axn--hkkinen-5waxn--hmmrfeast" + - "a-s4accident-prevention-k3surreyxn--hnefoss-q1axn--hobl-iraxn--h" + - "oltlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54" + - "axn--i1b6b1a6a2exn--imr513nxn--indery-fyasuokannamiharuxn--io0a7" + - "is-into-carshisohugheshisuifuelluciancrmrecruitrentino-stirolxn-" + - "-j1adplatformshangrilaquilanxessooxn--j1aefbsbxn--1ck2e1bar0emma" + - "fann-arboretumbriamallamaceiobbcg12038xn--j1ael8batochiokinoshim" + - "aizurugbyglandroverhallahppiacenzachpomorskienavuotnapleskns3-us" + - "-gov-west-1xn--j1amhakonexn--j6w193gxn--jlq480n2rgxn--jlq61u9w7b" + - "atsfjordishakotanayorovnobserverxn--jlster-byatominamidaitomanch" + - "esterxn--jrpeland-54axn--jvr189miniserverxn--k7yn95exn--karmy-yu" + - "axn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dx" + - "n--kltp7dxn--kltx9axn--klty5xn--3pxu8konsulatrobeeldengeluidvare" + - "servdxn--koluokta-7ya57hakubahcavuotnagaivuotnagaokakyotambabydg" + - "oszczecinemagnetnedalipaywhirlxn--kprw13dxn--kpry57dxn--kput3is-" + - "into-cartoonshitaramaxn--krager-gyatsukanoyaltakashimarnardalxn-" + - "-kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--krjohka-hwab49j" + - "devcloudfunctionshizukuishimofusaitoshimatsuzakis-a-patsfanxn--k" + - "snes-uuaxn--kvfjord-nxaxn--kvitsy-fyatsushiroxn--kvnangen-k0axn-" + - "-l-1fairwindsusakis-an-entertainerxn--l1accentureklamborghinikol" + - "aeventsusonoxn--laheadju-7yawaraxn--langevg-jxaxn--lcvr32dxn--ld" + - "ingen-q1axn--leagaviika-52bauhauspostman-echocolatemasekd1xn--le" + - "sund-huaxn--lgbbat1ad8jdfaststacksaves-the-whalessandria-trani-b" + - "arletta-andriatranibarlettaandriaxn--lgrd-poacctrysiljanxn--lhpp" + - "i-xqaxn--linds-pramericanartunespeedpartnerxn--lns-qlavagiskexn-" + - "-loabt-0qaxn--lrdal-sraxn--lrenskog-54axn--lt-liacngrossetouchih" + - "ayaakasakawaharaxn--lten-granexn--lury-iraxn--m3ch0j3axn--mely-i" + - "raxn--merker-kuaxn--mgb2ddesuzakanagawaxn--mgb9awbfbx-oslocuscou" + - "ntryestateofdelawareclaimsavonarusawaxn--mgba3a3ejtunkongsbergxn" + - "--mgba3a4f16axn--mgba3a4fra1-deltaitogakushimotoganexn--mgba7c0b" + - "bn0axn--mgbaakc7dvfbxostrowwlkpmguovdageaidnulvikashiwazakiwielu" + - "nnerxn--mgbaam7a8hakuis-a-geekatsuyamarshallstatebankaufentigerx" + - "n--mgbab2bdxn--mgbah1a3hjkrdxn--mgbai9a5eva00bellunord-aurdalvda" + - "laskanittedallasalleangaviikadenagahamaroyerxn--mgbai9azgqp6jeju" + - "niperxn--mgbayh7gpalermomahachijolsterxn--mgbbh1a71exn--mgbc0a9a" + - "zcgxn--mgbca7dzdoxn--mgbcpq6gpa1axn--mgberp4a5d4a87gxn--mgberp4a" + - "5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgbpl2fhskypexn--mgbqly7c" + - "0a67fbcnpyatigorskolecznagasukexn--mgbqly7cvafr-1xn--mgbt3dhdxn-" + - "-mgbtf8flapymnturystykaneyamazoexn--mgbtx2beneventodayombolzano-" + - "altoadigeologyomitanoceanographiqueu-3xn--mgbx4cd0abbvieeexn--mi" + - "x082fedorainfraclouderaxn--mix891fedorapeoplegallodingenxn--mjnd" + - "alen-64axn--mk0axin-the-bandais-into-gamessinazawaxn--mk1bu44cns" + - "annanxn--mkru45is-leetrentino-sud-tirolxn--mlatvuopmi-s4axn--mli" + - "-tlavangenxn--mlselv-iuaxn--moreke-juaxn--mori-qsakuragawaxn--mo" + - "sjen-eyawatahamaxn--mot-tlazioxn--mre-og-romsdal-qqbuseranishiar" + - "itakurashikis-lostre-toteneis-a-nursellsyourhomeftphonefosshirak" + - "okamiminershiranukamisunagawaxn--msy-ula0hakusanagochijiwadefini" + - "mamateramochizukinkobierzycexn--mtta-vrjjat-k7afedoraprojectozsd" + - "elmenhorstalbansaxoxn--muost-0qaxn--mxtq1minisitexn--ngbc5azdxn-" + - "-ngbe9e0axn--ngbrxn--41axn--nit225kosakaerodromegallupaascolipic" + - "eno-ipifony-1xn--nmesjevuemie-tcbalsan-sudtirollagdenesnaaseinet" + - "-freaksuzukananiikappudoxn--nnx388axn--nodessakurais-not-certifi" + - "edxn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--ntter" + - "y-byaeservehalflifeinsurancexn--nvuotna-hwaxn--nyqy26axn--o1ache" + - "rnihivgubsuzukis-bytomaritimekeepingxn--o3cw4haldenxn--o3cyx2axn" + - "--od0algxn--od0aq3bentleyonagoyautomotivelandeportexasnesoddenma" + - "rkhangelskjakdnepropetrovskiervaapsteiermarkanzakiwakunigamihokk" + - "aidovre-eikerxn--ogbpf8flatangerxn--oppegrd-ixaxn--ostery-fyaxn-" + - "-osyro-wuaxn--otu796dxn--p1acfeiraquarelleaseeklogeschokokekscho" + - "koladenxn--p1ais-savedxn--pgbs0dhlx3xn--porsgu-sta26fermockasser" + - "versaillescholarshipschoolsztynsettsurfashionxn--pssu33lxn--pssy" + - "2uxn--q7ce6axn--q9jyb4cntmparsannohelplfinancialvivanovoldaxn--q" + - "cka1pmckinseyxn--qqqt11minnesotaketakayamassa-carrara-massacarra" + - "ramassabusinessebykleclerchromediatechnologyxn--qxa6axn--qxamste" + - "rdamnserverbaniaxn--rady-iraxn--rdal-poaxn--rde-ulaxn--rdy-0naba" + - "ris-slickhakassiaxn--rennesy-v1axn--rhkkervju-01aferraraxn--rhol" + - "t-mragowoltlab-democraciaxn--rhqv96gxn--rht27zxn--rht3dxn--rht61" + - "exn--risa-5naturalhistorymuseumcenterxn--risr-iraxn--rland-uuaxn" + - "--rlingen-mxaxn--rmskog-byaxn--rny31halsaitamatsukuris-a-greenxn" + - "--rovu88beppublishproxyonagunicloudiskussionsbereichattanooganor" + - "ddalimitedisrechtranakaiwamizawawsmpplanetariumcpreservationfsho" + - "strodawarautoscanadaeguambulancentralus-2xn--rros-granvindafjord" + - "xn--rskog-uuaxn--rst-0naturalsciencesnaturellesvalbardunloppacif" + - "icitichiryukyuragifuchungbukharaumalatvuopmicrosoftbankariyamein" + - "forumzxn--rsta-framercanvasvcivilaviationissedaluroyxn--rvc1e0am" + - "3exn--ryken-vuaxn--ryrvik-byaxn--s-1faithammarfeastafricapitalon" + - "ewspaperxn--s9brj9collectionxn--sandnessjen-ogbeskidyn-ip24lima-" + - "cityeatselinogradimo-i-rana4u2-localhostrolekaniepce12hpalmasera" + - "ti234xn--sandy-yuaxn--sdtirol-n2axn--seral-lraxn--ses554gxn--sgn" + - "e-graphoxn--42c2d9axn--skierv-utazasveioxn--skjervy-v1axn--skjk-" + - "soaxn--sknit-yqaxn--sknland-fxaxn--slat-5naturbruksgymnxn--slt-e" + - "labcieszynh-serveblogspotaribeiraogakibichuoxn--smla-hraxn--smna" + - "-gratangentlentapisa-geekoseis-a-playershiftcryptonomichigangwon" + - "xn--snase-nraxn--sndre-land-0cbestbuyshouses3-us-west-1xn--snes-" + - "poaxn--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn" + - "--sr-varanger-ggbetainaboxfusejnyanagawalmartattoolforgerockartu" + - "zyoriikarasjokarasuyamarriottaxihuanhlfanhs3-us-west-2xn--srfold" + - "-byaxn--srreisa-q1axn--srum-gratis-a-bulls-fanxn--stfold-9xaxn--" + - "stjrdal-s1axn--stjrdalshalsen-sqbhzcasadelamonedanceu-4xn--stre-" + - "toten-zcbieidskoguchikuzenikonanporocelotenkawaveroykenflfanpach" + - "igasakids3-eu-west-1xn--t60b56axn--tckwebthingsvelvikomvuxn--3bs" + - "t00minamiminowaxn--tiq49xqyjelasticbeanstalkharkivanylvenneslask" + - "errylogisticshizuokamitsuexn--tjme-hraxn--tn0agrinetbankosherbro" + - "okegawaxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tir" + - "ol-rzbielawaltervistainaioirasebastopologyeongnamegawafaicloudin" + - "eat-urlimoliseminevje-og-hornnes3-website-ap-northeast-1xn--tren" + - "tin-sdtirol-7vbiellair-traffic-controlleyoshiokanumazuryukiiyama" + - "nouchikuhokuryugasakitanakagusukumodumeloyalistoragextraspace-to" + - "-rentalstomakomaibaravocatanzarowbq-aurskog-holandingivingjemnes" + - "3-ap-southeast-2xn--trentino-sd-tirol-c3bieszczadygeyachiyodaeje" + - "onbukcoalwaysdatabaseballangenkainanaejrietisalatinabenonicbcn-n" + - "orth-1xn--trentino-sdtirol-szbievat-band-campaniavoues3-eu-west-" + - "2xn--trentinosd-tirol-rzbifukagawashingtondclk3xn--trentinosdtir" + - "ol-7vbigv-infolldalivornow-dns3-website-ap-southeast-1xn--trenti" + - "nsd-tirol-6vbihorologyukuhashimoichinosekigaharaxarnetflixilovec" + - "ollegefantasyleaguernseyokotebetsuikirkenes3-eu-west-3utilities-" + - "1xn--trentinsdtirol-nsbikedaemonmoutheworkpccweddinglassassinati" + - "onalheritagexn--trgstad-r1axn--trna-woaxn--troms-zuaxn--tysvr-vr" + - "axn--uc0atvestre-totennishiawakuraxn--uc0ay4axn--uist22hamurakam" + - "igoris-a-gurunusualpersonxn--uisz3gxn--unjrga-rtarumizusawaxn--u" + - "nup4yxn--uuwu58axn--vads-jraxn--valle-aoste-ebbtuscanyxn--valle-" + - "d-aoste-ehbodoes-itcouldbeworldxn--valleaoste-e7axn--valledaoste" + - "-ebbvadsoccertmgrazerbaijan-mayengerdalcesvizzeraxn--vard-jraxn-" + - "-vegrshei-c0axn--vermgensberater-ctbitsvn-reposouthcarolinarviko" + - "monoticiashowaxn--vermgensberatung-pwblogoiplatter-appinkomatsus" + - "himarumorimachidaxn--vestvgy-ixa6oxn--vg-yiabkhaziaxn--vgan-qoax" + - "n--vgsy-qoa0jelenia-goraxn--vgu402colognexus-3xn--vhquvestvagoyx" + - "n--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq86" + - "1bilbaokinawashirosatobishimagentositecnologiazurewebsiteshikaga" + - "miishibukawakkanaibetsubamericanfamilydsmynasushiobarackmazeplay" + - "okozebinagisochildrensgardenaval-d-aosta-valleyolasitebinordland" + - "evelopmentatsunobninskaracoldwarszawaustevollillyboltateshinanom" + - "achimkentateyamajudygarlanddnskingitpagefrontappalmspringsakeret" + - "rosnubaltimore-og-romsdalp1xn--w4r85el8fhu5dnraxn--w4rs40lxn--wc" + - "vs22dxn--wgbh1colonialwilliamsburgroundhandlingroznyxn--wgbl6axn" + - "--xhq521billustrationrenderxn--xkc2al3hye2axn--xkc2dl3a5ee0hands" + - "onyxn--y9a3aquariumintereisenxn--yer-znaturhistorischeswidnicart" + - "oonartdecologiaxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn--45br5" + - "cylxn--ystre-slidre-ujbiocpanamatsushigexn--zbx025dxn--zf0ao64ax" + - "n--zf0avxlxn--zfr164bipanasonicasertaipeidsvollombardiadembetsuk" + - "ubankaratexnbayxz" + "bservercellikes-piedmonticellocalzoneastasiaetnaamesjevuemielnod" + + "umcpeastcoastaldefenceastus2038birdartcenterprisecloudaccesscamb" + + "ridgeiseiroumuenchenishiazaindielddanuorrindigenamsosnowiecherni" + + "vtsiciliabirkenesoddtangenovaragusarts3-website-eu-west-1birthpl" + + "acebitbucketrzynishigovtatsunocelotenkawabjarkoyoshiokanumazuryu" + + "kindowapblogsiteleafamilycompany-2bjerkreimbaltimore-og-romsdalp" + + "ha-myqnapcloud66bjugnieznorddalombardynalias3-website-sa-east-1b" + + "lackfridayukuhashimoichinosekigaharabloombergbauernishiharabloxc" + + "ms3-website-us-east-1bluebitemasekd1bmoattachments3-website-us-w" + + "est-1bms3-website-us-west-2bmweeklylotteryurihonjournalistjohnis" + + "hiizunazukindustriabnrwegroweibolognagareyamakeupowiathletajimag" + + "eandsoundandvision-riopretochigiftsalangenishikatakatsukindustri" + + "esteamfamberkeleyusuharabomloabaths-heilbronnoysundivttasvuotnak" + + "aniikawatanagurabondigitaloceanspacesalon-1bonnishikatsuragit-re" + + "posts-and-telecommunicationsaltdalomzaporizhzhegurinfinitinsureg" + + "ruhostingloboavistanbulsan-sudtirolondonetskaratsuginamikatagami" + + "hokkaidovre-eikerbookinghostedpictetnedalondrinamsskoganeintelli" + + "gencebookonlinewjerseyusuisservegame-serverboomlajollamericanexp" + + "ressexyuufcfanishikawazukamisatokaizukameyamatotakadaboschaeffle" + + "rdalorenskoglogoweirbostik-serveronagasakikuchikuseihicampobasso" + + "ciatest-iservecounterstrikebostonakijinsekikogentappsselfiparach" + + "utingloppenzaolbia-tempio-olbiatempioolbialystokkeliwebhostinglu" + + "gsjcbnpparibashkiriabotanicalgardeno-stagingmbhartipschlesisches" + + "aludiyuzawabotanicgardenishimerabotanychernovtsyncloudrangedalot" + + "tokorozawabouncemerckmsdnipropetrovskjervoyageometre-experts-com" + + "ptablesalvadordalibabalena-devicesalzburgminakamichiharabounty-f" + + "ullensakerrypropertiesamegawaboutiquebecommerce-shopitsitemp-dns" + + "watch-and-clockerboutireserve-onlinewmexicodyn-o-saurlandesamnan" + + "gerbozen-sudtirolouvreisenishinomiyashironocparaglidingmodelling" + + "mxboxfordelmenhorstalbansampaleoddabozen-suedtirolpusercontentat" + + "toolforgerockartuzybplaceducatorprojectaxihuanishinoomotegohtawa" + + "ramotoineppubtlsamsclubartowellbeingzonebrandywinevalleybrasilia" + + "bresciabrindisibenikikugawashtenawdevcdnaccessobetsuitagajobserv" + + "ableusercontentcmeloyalistoragebristoloseyouriparisor-fronishino" + + "shimatsumotofukebritishcolumbialowiezaganquannefrankfurtcp4broad" + + "castlebtimnetzlgretakaharussiabroadwaybroke-itvedestrandray-dnst" + + "racebrokerbrothermesaverdealerbrowsersafetymarketsamsungrimstadr" + + "ayddns5ybrumunddalublindesnesandnessjoenishiokoppegardraydnsupda" + + "terbrunelastxenishitosashimizunaminamibosognebrusselsandoybruxel" + + "lesandvikcoromantovalle-daostavangerbryanskodjedugit-pagespeedmo" + + "bilizeroticagliaricoharuhrbrynewportgorybuskerudrobaknoluoktachi" + + "kawafflecellclstagehirnishiwakinterhostsolutionsanfranciscofreak" + + "unekobayashikaoirmembersangomniweatherchannelucaniabuzentsujiieb" + + "uzzwesteuropenairbusantiquest-a-la-maisondre-landroidrrbwestfale" + + "nissandiegomurabzhitomirbzzcoloradoplateaudiopsysantacruzsantafe" + + "djeffersoncolumbusheycommunecommunity-prochowicecomobaranzancomp" + + "aremarkerryhotelsantamariakecomsecaaskoyabearalvahkievennodesaba" + + "erobaticketsantoandreamhostersanukintuitjxjavaldaostathellevange" + + "rcondoshichinohealth-carereformemergencyahabaghdadultkmaxxn--0tr" + + "q7p7nnconferenceconstructionconsuladogadollsaobernardoconsultant" + + "hropologyconsultingrossetouchihayaakasakawaharacontactksatxn--11" + + "b4c3dyndns-blogdnsaogoncarriercontagematsubaraumalatvuopmicrosof" + + "tbankasaokamikoaniihamatamakawajimaritimodumemorialcontemporarya" + + "rteducationalchikugodonnagatorogersvp4contractorskenconventuresh" + + "inodearthruherecipescaracalvinklein-berlindaskvollcookingchannel" + + "sdvrdnsdojoetsuwanouchikujogaszkolancashireclaimsaotomeiwamashik" + + "okuchuocoolcooperativano-frankivskygearapparochernigovernmentlon" + + "-2copenhagencyclopedichitosetoeidsvollucernecoproductionsapporoc" + + "orporationcorsicahcesuoloansardegnaroycorvettempurlcosenzakopane" + + "lblagrarchaeologyeongbuk0cosidnsfor-better-thanawatchandclockash" + + "ibatakasakiwakunigamilanotairestaurantmparsardiniacostumedicalta" + + "nissettaipeigersundyndns-freeboxosascoli-picenordlandyndns-homed" + + "nsarlcouchpotatofriesarpsborgroundhandlingroznycoukashiharacounc" + + "ilcouponsarufutsunomiyawakasaikaitabashijonawatecozoravennaharim" + + "alborkashiwaracqcxn--12c1fe0bradescotlandyndns-ipartinuyamashina" + + "tsukigatakaokalmykiacranbrookuwanalyticsxn--12cfi8ixb8lcrdyndns-" + + "mailcreditcardyndns-office-on-the-webercreditunioncremonashgabad" + + "addjaguarqhachinohedmarkashiwazakiwielunnercrewfarsundyndns-pics" + + "asayamatta-varjjatoyosatoyokawacricketoyotapartsasebofagemologic" + + "allynxn--12co0c3b4evalled-aostakinouecrimeast-kazakhstanangercro" + + "tonecrownipartycrsaskatchewancruisesassarinvestmentsaudacuisinel" + + "lancasterculturalcentertainmentoyotomiyazakinzais-a-candidatecun" + + "eocupcakecuritibackyardsauheradyndns-remotewdyndns-serverdalcurv" + + "alledaostakkokonoecymruovatmallorcafederation-webpaashorokanaiec" + + "yonabarumemsettlersavannahgacyouthachiojiyaitakahashimamakisosak" + + "itagawaferraraferrarivneferrerotikagoshimalopolskanlandyndns-wik" + + "irafetsundyndns-workshoparenakanojohanamakinoharafgujoinvilleitu" + + "ngsenfhvalerfidoomdnsiskinkyotobetsulikescandyn53fieldyndns1figu" + + "eresinstagingulenfilateliafilegear-audnedalnfilegear-dealstahaug" + + "esunderseaportsinfolionetworkangerfilegear-gbizfilegear-iefilege" + + "ar-jpmorganfilegear-sg-1filminamifuranofinalfinancefineartschule" + + "finlandynnsaveincloudyndns-webhareidsbergentingrpasadenarashinof" + + "innoyfirebaseappassenger-associationfirenetoyourafirenzefireston" + + "efirewebhopocznordreisa-hockeynutazurestaticappspaceusercontento" + + "ystre-slidrettozawafirmdalegoldpoint2thisamitsukefishingolffansc" + + "hulserverfitjarvodkagaminogiessennanjobojis-a-catererfitnessettl" + + "ementozsdeloittenrissagaeroclubmedecincinnativeamericanantiquest" + + "-mon-blogueurodirumaceratabitorderimo-siemenscaledekaascolipicen" + + "oboribetsuckschwarzgwangjuifminamiiserniafjalerfldrvallee-aoster" + + "oyflekkefjordynservebbsaves-the-whalessandria-trani-barletta-and" + + "riatranibarlettaandriaflesbergunmaniwakurateflickragerokunohealt" + + "hcareerschweizflirfloginlinefloraflorencefloridatsunangojomedici" + + "nakaiwamizawatchesciencecentersciencehistoryfloripaderbornfloris" + + "tanohataitogliattis-a-celticsfanfloromskoguovdageaidnulvikasukab" + + "edzin-addrammenuorochesterflowerscientistordalfltrani-andria-bar" + + "letta-trani-andriaflynnhosting-clusterfndynulmetacentrumeteorapp" + + "assagensavonarusawafnwkasumigaurayasudafoodnetworkdalfor-ourfor-" + + "somedio-campidano-mediocampidanomediofor-theaterforexrothachirog" + + "atakahatakaishimogosenforgotdnscjohnsonforli-cesena-forlicesenaf" + + "orlillehammerfeste-ipatriaforsaleikangerforsandasuoloftraniandri" + + "abarlettatraniandriafortalfortexascrapper-sitefortmissoulanciafo" + + "rtworthadanorfolkebibleluxembourgushikamifuranore-og-uvdalfosnes" + + "crappingwiddleksvikasuyanaizuerichardlillyfotranoyfoxafozfranami" + + "zuhobby-sitextileirfjordynv6francaiseharafranziskanerimaringatla" + + "ntaiwanairforcechireadthedocscbgxn--1ctwolominamataobaomoriguchi" + + "haraffleentry-snowplowiczeladzfredrikstadtvscrysecuritytacticser" + + "vehalflifeinsurancefreeddnsfreebox-oservehttpbin-butterfreedeskt" + + "oppdalfreemasonryfreemyiphosteurovisionfreesitefreetlservehumour" + + "freiburgfreseniuscultureggio-calabriafribourgfriuli-v-giuliafriu" + + "li-ve-giuliafriuli-vegiuliafriuli-venezia-giuliafriuli-veneziagi" + + "uliafriuli-vgiuliafriuliv-giuliafriulive-giuliafriulivegiuliafri" + + "ulivenezia-giuliafriuliveneziagiuliafriulivgiuliafrlfroganservei" + + "rchonanbulsan-suedtirolukowestus2frognfrolandynvpnpluscountryest" + + "ateofdelawarecreationfrom-akrehamnfrom-alfrom-arfrom-azimuthatog" + + "ayabukihokumakogenglandyroyrvikingruenoharafrom-capetownnews-sta" + + "gingfrom-coffeedbackplaneappaviancargodaddyn-vpndnserveminecraft" + + "ranslatefrom-ctransportefrom-dchoseikarugamvikariyaltakasagotsuk" + + "isofukushimangyshlakasamatsudopaasnesoddenmarkhangelskjakdneprop" + + "etrovskiervaapsteiermarkarlsoyfrom-deatnuniversityfrom-flanderse" + + "rvemp3from-gaulardalfrom-hichisodegaurafrom-iafrom-idfrom-ilfrom" + + "-in-brbar0from-kservep2pfizerfrom-kyowariasahikawafrom-langevagr" + + "igentomologyeonggiehtavuoatnabudapest-a-la-masion-rancherkasydne" + + "yfrom-malselvendrellfrom-mdfrom-medizinhistorischeservepicserveq" + + "uakefrom-midsundfrom-mnfrom-modalenfrom-mservesarcasmatartanddes" + + "ignfrom-mtnfrom-nchoshibuyachtsanjotelulubindaluroyfrom-ndfrom-n" + + "efrom-nhktransurlfrom-njservicesevastopolefrom-nminamiizukaminok" + + "awanishiaizubangefrom-nvallee-d-aosteigenfrom-nynysagamiharafrom" + + "-ohdattorelayfrom-oketogonohejis-a-chefastly-terrariuminamiechiz" + + "enfrom-orfrom-padoval-daostavalleyfrom-pratogurafrom-ris-a-conse" + + "rvativegasevenassisicilyfrom-schoenbrunnfrom-sdscloudfrom-tnfrom" + + "-txn--1lqs03nfrom-utsiracusaikirovogradoyfrom-vald-aostarostwodz" + + "islawhalingfrom-vtrapaniizafrom-wafrom-wiardwebspacefrom-wvallee" + + "aosteinkjerusalembroideryfrom-wyfrosinonefrostaplesewhoswholding" + + "small-webredirectmeeresistancefroyahooguyfruskydivingfstcgroupgf" + + "oggiafujiiderafujikawaguchikonefujiminokamoenairguardiannakadoma" + + "rineat-urlfujinomiyadattowebcampinashikiminohostfoldnavyfujiokay" + + "amalvikaszubyfujisatoshonairlinebraskaunicommbankatowicefujisawa" + + "fujishiroishidakabiratoridebianfujitsurugashimamurogawafujiyoshi" + + "davvenjargap-northeast-3fukayabeatsharis-a-cpadualstackatsushika" + + "beebyteapplinzis-a-cubicle-slavellinodeobjectsharpharmacienshawa" + + "iijimarburgfukuchiyamadavvesiidappnodebalancertificationfukudomi" + + "gawafukuis-a-democratravelchannelfukumitsubishigakiryuohkurafuku" + + "okazakisarazure-mobileirvikatsuyamarriottravelersinsurancefukuro" + + "ishikarikaturindalfukusakishiwadazaifudaigokaseljordfukuyamagata" + + "jimifunefunabashiriuchinadafunagatajiris-a-designerfunahashikami" + + "amakusatsumasendaisenergyfundaciofunkfeuerfuoiskujukuriyamandalf" + + "uosskoczowienfurnitureggio-emilia-romagnakasatsunairportland-4-s" + + "alernogatabusebastopologyeongnamegawafaicloudinedre-eikerfurubir" + + "afurudonostiaafurukawairtelebitbridgestoneen-rootaruis-a-doctorf" + + "usoftwarezzoologyfussaintlouis-a-anarchistoireggiocalabriafutaba" + + "yamaguchinomihachimanagementrdfutboldlygoingnowhere-for-morenaka" + + "tombetsumitakagiizefuttsurugimperiafuturecmshellaspeziafuturehos" + + "tingfuturemailingfvghangglidinghangoutsystemscloudsitehannanmoku" + + "izumodenakayamansionshimojis-a-greenhannorthwesternmutualhanyuze" + + "nhapmircloudletshimokawahappounjargaharstadharvestcelebrationhas" + + "amanxn--1lqs71dhasaminami-alpshimokitayamattelekommunikationhash" + + "banghasudahasura-appharmacyshimonitayanagitapphdfcbankazohasvika" + + "zteleportlligatrendhostinghatoyamazakitahiroshimaoris-a-gurunusu" + + "alpersonhatsukaichikaiseiyoichippubetsubetsugarunzenhattfjelldal" + + "hayashimamotobungotakadagestangeorgeorgiahazuminobusellfylkesbib" + + "lackbaudcdn-edgestackhero-networkinggroupliguriahelsinkitakamiiz" + + "umisanofidelitysvardontexistmein-iservebeero-stagehembygdsforbun" + + "dhemneshimonosekikawahemsedalhepforgeblockshimosuwalkis-a-hard-w" + + "orkershimotsukeheroyhgtvalleedaostehidorahigashiagatsumagoianiah" + + "igashichichibunkyonanaoshimakanegasakilatironrenderhigashihirosh" + + "imanehigashiizumozakitakatakamoriokakudamatsuehigashikagawahigas" + + "hikagurasoedahigashikawakitaaikitakyushuaiahigashikurumeetrentin" + + "-sud-tirolhigashimatsushimapartmentshimotsumayfirstockholmestran" + + "dhigashimatsuyamakitaakitadaitoigawahigashimurayamamotorcycleshi" + + "nichinanhigashinarusells-for-lesshinjournalismailillesandefjordh" + + "igashinehigashiomitamamurausukitamihamadahigashiosakasayamanakak" + + "ogawahigashishirakawamatakanabeautysfjordhigashisumiyoshikawamin" + + "amiaikitamotosumy-gatewayhigashitsunortonhigashiurawa-mazowszexn" + + "etlifyis-a-hunterhigashiyamatokoriyamanashifteditorxn--1qqw23ahi" + + "gashiyodogawahigashiyoshinogaris-a-knightpointtohoboleslawiecono" + + "miastalowa-wolawawsmpplanetariuminamimakis-a-landscaperugiahirai" + + "zumisatohnoshoooshikamaishimodatehirakatashinagawahiranairtraffi" + + "cplexus-1hirarahiratsukaerusrcfastlylbananarepublic66hirayaizuwa" + + "kamatsubushikusakadogawahistorichouseshinjukumamotoyamasfjordenh" + + "itachiomiyagildeskaliszhitachiotagophiladelphiaareadmyblogsytehi" + + "traeumtgeradell-ogliastraderhjartdalhjelmelandholeckochikushinon" + + "senasakuchinotsuchiurakawaholidayhomegoodshinkamigototalhomeiphi" + + "latelyhomelinkyard-cloudjiffyresdalhomelinuxn--2m4a15ehomeoffice" + + "homesecuritymacaparecidahomesecuritypchoyodobashichikashukujitaw" + + "araholtalenissayokkaichiropractichirurgiens-dentistes-en-franceh" + + "omesenseeringhomesklepphilipsynology-diskstationhomeunixn--2scrj" + + "9christiansburgripehondahongotembaixadahonjyoitakanezawahorninda" + + "lhorsells-for-ustkanmakitaurahortendofinternet-dnshinshinotsurge" + + "onshalloffamelbournehospitalhoteleshinshirohotelwithflightshinto" + + "kushimahotmailhoyangerhoylandetroitskazunoticiashintomikasaharah" + + "umanitieshinyoshitomiokamishihoronobeauxartsandcraftshiojirishir" + + "ifujiedahurdalhurumajis-a-lawyerhyllestadhyogoris-a-liberalhyuga" + + "warahyundaiwafuneis-uberleetrentin-suedtirolis-very-badajozis-a-" + + "nursells-itrentin-sudtirolis-very-evillageis-very-goodyearis-ver" + + "y-niceis-very-sweetpepperis-with-thebandownloadisleofmanaustdalj" + + "env-arubajddarchitecturealtorlandjeonnamerikawauejetztrentino-a-" + + "adigejevnakershusdecorativeartshitaramajewelryjewishartgalleryjf" + + "kharkivanylvenneslaskerrylogisticshizukuishimofusakakinokiajgora" + + "jlljls-sto1jls-sto2jls-sto3jmphoenixn--30rr7yjnjaworznoshiroomgj" + + "oyentrentino-aadigejoyokaichibalashovhadselburgjpnjprshizuokamit" + + "suejurkoshimizumakiyosatokamachintaifun-dnsaliashoujis-a-persona" + + "ltrainerkoshunantankhmelnitskiyamarshallstatebankharkovaokosugek" + + "otohiradomainstitutekotourakouhokutamakiyosemitekounosupabasells" + + "yourhomeftphotographysiokouyamarylandkouzushimarylhurstjordalsha" + + "lsenkozagawakozakiyosunndalkozowiiheyakagekpnkppspbar2krasnikaho" + + "kutokashikizunokunimilitarykrasnodarkredstonekrelliankristiansan" + + "dcatshowakristiansundkrodsheradkrokstadelvalle-aostatic-accessho" + + "wtimeldalkryminamioguni5kumanotteroykumatorinovecoregontrailroad" + + "kumejimashikekumenantokonamegatakashimashikis-a-photographerokus" + + "sldkunisakis-a-playershiftcryptonomichigangwonkunitachiarailwayk" + + "unitomigusukukis-a-republicancerresearchaeologicaliforniakunnepp" + + "uboliviajessheimpertrixcdn77-secureggioemiliaromagnaklodzkodaira" + + "kunstsammlungkunstunddesignkuokgrouphxn--3bst00minamisanrikubets" + + "upplykurehabmerkurgankurobeepilepsykkylvenicekurogimimatakasugai" + + "s-a-rockstarachowicekuroisogndalkuromatsunais-a-socialistdlibest" + + "adkurotakikawasakis-a-soxfankushirogawakustanais-a-studentalkusu" + + "pplieshwildlifestylekutchanelkutnow-dnsienarutomobelementoraykuz" + + "umakis-a-teacherkassyno-dshirakofuefukihabororoshiranukamisunaga" + + "wakvafjordkvalsundkvamlidlugolekafjordvagsoygardendoftheinternet" + + "flixilovecollegefantasyleaguernseykvanangenkvinesdalkvinnheradkv" + + "iteseidatingkvitsoykwpspdnsigdalkzmisasaguris-an-accountantshira" + + "ois-a-linux-usershioyandexcloudmisawamisconfusedmishimassa-carra" + + "ra-massacarraramassabusinessebykleclerchromediatechnologymissile" + + "zajskhmelnytskyivaporcloudmisugitokuyamassivegridmitakeharamitou" + + "rismilemitoyoakemiuramiyazurecontainerdpolicemiyotamanomjondalen" + + "mlbfanmontrealestatefarmequipmentrentino-s-tirolmonza-brianzappo" + + "siiitesilkhplaystation-cloudyclustermonza-e-della-brianzaptokyot" + + "angouvichungnamdalseidfjordurbanamexhibitionissedalutskarmoymonz" + + "abrianzaramonzaebrianzamonzaedellabrianzamoonscaleforcemordoviam" + + "oriyamasudamoriyoshiminamiashigaramormonstermoroyamatsumaebashik" + + "shacknetrentino-stirolmortgagemoscowilliamhillmoseushistorymosjo" + + "enmoskenesimple-urlmossirdalmosviklabudhabikinokawabarthaebaruer" + + "icssongdalenviknakatsugawamoteginowaniigatakahamangooglecodespot" + + "rentino-sud-tirolmoviemovimientolgamozilla-iotrentino-sudtirolmt" + + "ranbymuginozawaonsensiositemuikaminoyamaxunispacemukoebenhavnmul" + + "houseminemunakatanemuncienciamuosattemupiemontemurmanskmpspawnex" + + "tdirectrentino-alto-adigemurotorcraftrentino-sued-tirolmusashino" + + "haramuseetrentino-suedtirolmuseumverenigingmusicarbonia-iglesias" + + "-carboniaiglesiascarboniamutsuzawamy-vigorlicemy-wanggoupilemyac" + + "tivedirectorymyasustor-elvdalmycdmycloudnslupsknx-serversicherun" + + "gmydattolocalhistorymyddnsgeekgalaxymydissentrentinoa-adigemydob" + + "isshikis-an-actormydroboehringerikemydslzmyeffectrentinoaadigemy" + + "fastblogermyfirewallonieruchomoscienceandindustrynmyforuminamita" + + "nemyfritzmyftpaccessmolaquilansmushcdn77-sslingmyhome-servermyji" + + "nomykolaivarggatrentinoalto-adigemymailermymediapchurchaseljeeps" + + "ondriodejaneirodoymyokohamamatsudamypepilotsnoasakataketomisatos" + + "himatsuzakis-an-actresshiraokamitondabayashiogamagoriziamypetsok" + + "ndalmyphotoshibalatinoopencraftrainingmypicturesolarssonmypsxn--" + + "3ds443gmysecuritycamerakermyshopblocksolognemyshopifymyspreadsho" + + "ppingmythic-beastsolundbeckomaganemytis-a-bookkeeperspectakarazu" + + "kaluganskomakiyokawaramytuleap-partnersomamyvncircustomer-ocimdb" + + "amblebesbyeniwaizumiotsukumiyamazonawsglobalacceleratorahimeshim" + + "abaridagawakuyachimataijibmdevelopmentashkentatamotorsitestingla" + + "dedyn-berlincolnavigationavoizumizakiitatebayashiibahccavuotnaga" + + "rag-cloud-charitydalipaywhirlimitedgcanonoichinomiyakebinagisoch" + + "ildrensgardenavuotnapleskns3-eu-west-2mywirepaircraftingvollolip" + + "opimientakayamatsuuraplatter-appinbarcelonagawalbrzycharternopil" + + "awalesundiscountysnes3-eu-west-3utilities-1platterpinkomatsushim" + + "arugame-hostyhostingplazaplcube-serverplumbingoplurinacionalpodh" + + "alepodlasiellaktyubinskiptveterinairealmpmnpodzonepohlpoivronpok" + + "erpokrovskommunalforbundpoliticarrdpolitiendapolkowicepoltavalle" + + "-d-aostaticsopotrentinos-tirolpomorzeszowinbarclaycards3-externa" + + "l-1ponpesaro-urbino-pesarourbinopesaromasvuotnaritakoelnponypord" + + "enonepornporsangerporsangugeporsgrunnanyokoshibahikariwanumataka" + + "zakis-an-artistgstagepoznanpraxis-a-bruinsfanprdpreservationpres" + + "idioprgmrprimetelemarkommuneprincipeprivatizehealthinsuranceprof" + + "esionalprogressivestnesor-odalpromombetsupportrentinostirolprope" + + "rtyprotectionprotonetrentinosud-tirolprudentialpruszkowindmillpr" + + "vcyberlevagangaviikanonjis-an-engineeringprzeworskogpugliapulawy" + + "pupioneerpvhagebostadpvtrentinosudtirolpwcistrondheimmobilieniss" + + "hingucciprianidurhamburgriwataraidynathomebuiltwithdarkarpaczest" + + "-le-patroniyodogawapythonanywherepbodynamic-dnsor-varangerpzqldq" + + "otoyohashimotoolsorfoldqponiatowadaqslgbtrentinosued-tirolqualif" + + "ioappippueblockbusterniiminamiawajikis-an-anarchistoricalsociety" + + "quickconnectrentinosuedtirolquicksytesorocabalestrandabergamoare" + + "keymachineustargardquipelementsorreisahayakawakamiichikawamisato" + + "ttoris-an-entertainerswedenswidnicartoonartdecologiaswidnikkokam" + + "iminersouthcarolinarvikomonotogawaswiebodzin-dslattuminanoswinou" + + "jscienceandhistoryswissmarterthanyoutwentesynology-dsouthwest1-u" + + "slivinghistorytularvikongsbergtunesowatunkongsvingerturystykaney" + + "amazoetuscanytushuissier-justicetuvalleaostaverntuxfamilytwmailv" + + "ibo-valentiavibovalentiavideovillaspectruminamiyamashirokawanabe" + + "laudibleasingvinnicasacamdvrcampinagrandebuilderschmidtre-gaulda" + + "lvinnytsiavipsinaappittsburghofficialvirginiavirtual-userveexcha" + + "ngevirtualcloudvirtualservervirtualuserveftpiwatevirtuelvisakuho" + + "kksundviterboknowsitallvivolkenkundenvixn--3hcrj9civilaviationth" + + "ewifiatlassian-dev-myqnapcloudcontrolledogawarabikomaezakirunoip" + + "irangalsaceomutashinainternationalfirearmsannanvlaanderennesoyvl" + + "adikavkazimierz-dolnyvladimirvlogintoyonezawavmincomcastresindev" + + "icenzaporizhzhiavologdanskoninjambylvolvolkswagentspeedpartnervo" + + "lyngdalvoorlopervossevangenvotevotingvotoyonovps-hostrowiecivili" + + "sationwithgoogleapiszwithyoutuberspacekitagatamayufuettertdasnet" + + "zwiwatsukiyonosegawawixsitewloclawekonsulatrobeeldengeluidvarese" + + "rvdwmcloudwmflabspydebergwoodsideltairavpagexlworse-thandawowind" + + "owskrakowinnersphinxn--3e0b707ewpdevcloudwpenginepoweredwphosted" + + "mailwpmucdnpixolinodeusercontentrentinoaltoadigewpmudeveloperaun" + + "iterois-foundationwritesthisblogwroclawiospjelkavikomorotsukagaw" + + "awtcirclerkstagets-itrentoyonakagyokutoyakolobrzegersundwtfastvp" + + "s-serverisignwuozuwzmiuwajimaxn--45q11civilwarmiasadoesntexistei" + + "ngeekaruizawaxn--4gbriminingxn--4it168dxn--4it797kooris-a-painte" + + "ractivestfoldxn--4pvxs4allxn--54b7fta0cclanbibaidarmeniaxn--55qw" + + "42gxn--55qx5dxn--5js045dxn--5rtp49cldmailuxuryxn--5rtq34kopervik" + + "hersonxn--5su34j936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2r" + + "xn--6qq986b3xlxn--7t0a264cleverappstmnxn--80aaa0cvacationsrhtren" + + "tinsud-tirolxn--80adxhksrlxn--80ao21axn--80aqecdr1axn--80asehdba" + + "refootballooninglassassinationalheritagebinordre-landiscourses3-" + + "sa-east-1xn--80aswgxn--80augustowitdkonskowolayangrouphonefossho" + + "pwarendalenugxn--8ltr62koryokamikawanehonbetsurutaharaxn--8pvr4u" + + "xn--8y0a063axn--90a1affinitylotterybnikeisenbahnxn--90a3academia" + + "micable-modemoneyxn--90aeroportalaheadjudaicadaquesrvaroyxn--90a" + + "ishobarakawagoexn--90amcdirxn--90azhytomyravendbargainstances3-u" + + "s-east-2xn--9dbhblg6dietrevisojamisonxn--9dbq2axn--9et52uxn--9kr" + + "t00axn--andy-iraxn--aroport-byaotsurnadalxn--asky-iraxn--aurskog" + + "-hland-jnbarreauctioncilla-speziauthgear-stagingjesdalimanowarud" + + "aurskog-holandinggfarmerseineatonsbergitpagefrontappalmspringsak" + + "erevistarnbergivestbytemark12xn--avery-yuasakuragawaxn--b-5gaxn-" + + "-b4w605ferdxn--balsan-sdtirol-nsbstorebaselectrentinsudtirolxn--" + + "bck1b9a5dre4clicketcloudcontrolapparmatsushigexn--bdddj-mrabdxn-" + + "-bearalvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-" + + "k7axn--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyasakaiminat" + + "oyookanazawaxn--bjddar-ptargetmyipizzaxn--blt-elabourxn--bmlo-gr" + + "aingerxn--bod-2natalxn--bozen-sdtirol-2obanazawaxn--brnny-wuacad" + + "emy-firewall-gatewayxn--brnnysund-m8accident-investigation-aptib" + + "leadpagesquare7xn--brum-voagatritonxn--btsfjord-9zaxn--bulsan-sd" + + "tirol-nsbarrel-of-knowledgeappleborkaragandauthgearappspacehoste" + + "d-by-previderhclouddnslivegarsheiheijibigawaustevoll-o-g-i-n4t3l" + + "3p0rtarnobrzegyptianatuurwetenschappenginebetsuikirkenes3-ap-sou" + + "th-1xn--c1avgxn--c2br7gxn--c3s14miniserverxn--cck2b3barrell-of-k" + + "nowledgecomputerhistoryofscience-fictionfabricafjs3-us-gov-west-" + + "1xn--cckwcxetdxn--cesena-forl-mcbremangerxn--cesenaforl-i8axn--c" + + "g4bkis-gonexn--ciqpnxn--clchc0ea0b2g2a9gcdxn--comunicaes-v6a2oxn" + + "--correios-e-telecomunicaes-ghc29axn--czr694barsycenterprisesaki" + + "joburgleezebizenakanotoddenayorovnobirauthordalanddnss3-ap-south" + + "east-2xn--czrs0troandinosaureplantationxn--czru2dxn--czrw28barsy" + + "onlinewhampshirebungoonord-frontierxn--d1acj3basicserversaillesj" + + "abbottatarantours3-us-west-1xn--d1alfaromeoxn--d1atrogstadxn--d5" + + "qv7z876clickrisinglesannohelplfinancialuzernxn--davvenjrga-y4axn" + + "--djrs72d6uyxn--djty4kosaigawaxn--dnna-grajewolterskluwerxn--drb" + + "ak-wuaxn--dyry-iraxn--e1a4clinichitachinakagawassamukawatarikuze" + + "ntakatainaioiraseating-organicbcn-north-1xn--eckvdtc9dxn--efvn9s" + + "torfjordxn--efvy88haibarakitahatakamatsukawaxn--ehqz56nxn--elqq1" + + "6hair-surveillancexn--eveni-0qa01gaxn--f6qx53axn--fct429kosakaer" + + "odromegallupaasdaburxn--fhbeiarnxn--finny-yuaxn--fiq228c5hstorjc" + + "loud-ver-jpchristmasakinderoyxn--fiq64basilicataniautomotiveland" + + "ds3-ca-central-1xn--fiqs8stpetersburgxn--fiqz9streamscompute-1xn" + + "--fjord-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-" + + "cesena-fcbsstudioxn--forlcesena-c8axn--fpcrj9c3dxn--frde-grandra" + + "pidstudynamisches-dnsortlandxn--frna-woaraisaijosoyrovigotpanthe" + + "onsitexn--frya-hraxn--fzc2c9e2cliniquedapliernewyorkshirecifedex" + + "eterxn--fzys8d69uvgmailxn--g2xx48clintonoshoesanokarumaifarmstea" + + "dyndns-at-homedepotenzamamidorittogakushimotoganexn--gckr3f0faus" + + "kedsmokorsetagayaseralingenoamishirasatogitsumidatlantichofunato" + + "riginstantcloudfrontdoorxn--gecrj9clothingdustdatadetectjmaxxxer" + + "oxfinityxn--ggaviika-8ya47hakatanorth-kazakhstanxn--gildeskl-g0a" + + "xn--givuotna-8yasugitlaborxn--gjvik-wuaxn--gk3at1exn--gls-elacai" + + "xaxn--gmq050is-into-animegurownproviderxn--gmqw5axn--gnstigbeste" + + "llen-zvbrplsbxn--3pxu8konyvelohmusashimurayamarumorimachidaxn--g" + + "nstigliefern-wobihirosakikamijimatsunowtvestre-totennishiawakura" + + "xn--h-2failxn--h1aeghakodatexn--h1ahnxn--h1alizxn--h2breg3evenes" + + "tuff-4-salexn--h2brj9c8cn-northwest-1xn--h3cuzk1diherokuappkomfo" + + "rbar1xn--hbmer-xqaxn--hcesuolo-7ya35basketballfinanzjampalacehim" + + "ejiiyamanouchikuhokuryugasakitanakagusukumodernfshostrodawarauto" + + "scanadaeguambulancentralus-2xn--hery-iraxn--hgebostad-g3axn--hkk" + + "inen-5waxn--hmmrfeasta-s4accident-prevention-k3stufftoread-books" + + "nesoruminamiuonumasoyxn--hnefoss-q1axn--hobl-iraxn--holtlen-hxax" + + "n--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1b6b1" + + "a6a2exn--imr513nxn--indery-fyasuokannamiharuxn--io0a7is-into-car" + + "shiratakahagithubpreviewsaitamatsukuris-a-llamarcheapigeelvinckd" + + "diamondshirahamatonbetsurgeryxn--j1adplantsomnarviikamiokameokam" + + "akurazakitashiobaraxn--j1aefbsbxn--1ck2e1banzaicloudappspotagerx" + + "n--j1ael8batochiokinoshimaintenancempresashibetsukuin-vpncasadel" + + "amonedancemrxn--j1amhakonexn--j6w193gxn--jlq480n2rgxn--jlq61u9w7" + + "batsfjordiscoveryokoteu-1xn--jlster-byatominamidaitomanchesterxn" + + "--jrpeland-54axn--jvr189minisitexn--k7yn95exn--karmy-yuaxn--kbrq" + + "7oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7d" + + "xn--kltx9axn--klty5xn--41axn--koluokta-7ya57hakubahcavuotnagaivu" + + "otnagaokakyotambabydgoszczecinemagnethnologyxn--kprw13dxn--kpry5" + + "7dxn--kput3is-into-cartoonshishikuis-a-musicianxn--krager-gyatsu" + + "kanoyakumoldellogliastradingxn--kranghke-b0axn--krdsherad-m8axn-" + + "-krehamn-dxaxn--krjohka-hwab49jdevcloudfunctionshisohugheshisuif" + + "uelveruminamiminowaxn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-fyatsu" + + "shiroxn--kvnangen-k0axn--l-1fairwindstuttgartrentinsued-tirolxn-" + + "-l1accentureklamborghinikolaeventsurreyxn--laheadju-7yawaraxn--l" + + "angevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika-52bauhauspost" + + "man-echocolatelevisionflashdrivefsncfdishakotanhlfanhsbcasertail" + + "scalecznagasukeu-2xn--lesund-huaxn--lgbbat1ad8jdfaststacksaxoxn-" + + "-lgrd-poacctromsakegawaxn--lhppi-xqaxn--linds-pramericanartromso" + + "kamogawaxn--lns-qlavagiskexn--loabt-0qaxn--lrdal-sraxn--lrenskog" + + "-54axn--lt-liacngroks-thisayamanobeokakegawaxn--lten-granexn--lu" + + "ry-iraxn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2ddesusakis-b" + + "ytomaritimekeepingxn--mgb9awbfbx-oslodingenxn--mgba3a3ejtrusteex" + + "n--mgba3a4f16axn--mgba3a4fra1-deportevaksdalxn--mgba7c0bbn0axn--" + + "mgbaakc7dvfbxostrowwlkpmguidefinimamateramochizukindlegallocus-4" + + "xn--mgbaam7a8hakuis-a-financialadvisor-aurdalxn--mgbab2bdxn--mgb" + + "ah1a3hjkrdxn--mgbai9a5eva00bellunord-odalvdalaskanittedallasalle" + + "angaviikadenagahamaroyerxn--mgbai9azgqp6jejuniperxn--mgbayh7gpal" + + "ermomahachijolsterxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn-" + + "-mgbcpq6gpa1axn--mgberp4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn-" + + "-mgbi4ecexposedxn--mgbpl2fhskypexn--mgbqly7c0a67fbcnpyatigorskol" + + "efrakkestadyndns-at-workisboringrondarxn--mgbqly7cvafr-1xn--mgbt" + + "3dhdxn--mgbtf8flapymntrvestre-slidretrosnubarclays3-fips-us-gov-" + + "west-1xn--mgbtx2beneventodayokozeu-3xn--mgbx4cd0abbvieeexn--mix0" + + "82fedorainfraclouderaxn--mix891fedorapeoplegnicapebretonamicroli" + + "ghtinguitarschokokekschokoladenxn--mjndalen-64axn--mk0axin-the-b" + + "andais-into-gamessinazawaxn--mk1bu44cnsantabarbaraxn--mkru45is-l" + + "eetrentin-sued-tirolxn--mlatvuopmi-s4axn--mli-tlavangenxn--mlsel" + + "v-iuaxn--moreke-juaxn--mori-qsakurais-lostre-toteneis-a-nascarfa" + + "nxn--mosjen-eyawatahamaxn--mot-tlazioxn--mre-og-romsdal-qqbusera" + + "nishiaritakurashikis-not-certifiedxn--msy-ula0hakusanagochijiwad" + + "egreexn--mtta-vrjjat-k7aflakstadaokagakicks-assnasaarlandxn--muo" + + "st-0qaxn--mxtq1minnesotaketakatoris-a-techietis-a-libertarianxn-" + + "-ngbc5azdxn--ngbe9e0axn--ngbrxn--42c2d9axn--nit225koseis-a-patsf" + + "anxn--nmesjevuemie-tcbalsan-sudtirollagdenesnaaseinet-freaksuson" + + "oxn--nnx388axn--nodessakyotanabellevuelosangelesuzakanagawaxn--n" + + "qv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--nttery-byaes" + + "eoullensvanguardxn--nvuotna-hwaxn--nyqy26axn--o1achernihivgubsuz" + + "ukananiikappudoxn--o3cw4haldenxn--o3cyx2axn--od0algxn--od0aq3ben" + + "tleyolasiteu-4lima-cityeatselinogradimo-i-rana4u2-localhostrolek" + + "aniepce12hpalmaserati234xn--ogbpf8flatangerxn--oppegrd-ixaxn--os" + + "tery-fyaxn--osyro-wuaxn--otu796dxn--p1acfedoraprojectoyotsukaido" + + "xn--p1ais-savedxn--pgbs0dhlx3xn--porsgu-sta26feiraquarelleaseekl" + + "ogescholarshipschoolsztynsettsurfashionxn--pssu33lxn--pssy2uxn--" + + "q7ce6axn--q9jyb4cntjomelhusgardenxn--qcka1pmckinseyxn--qqqt11min" + + "tereitrentino-altoadigexn--qxa6axn--qxamsterdamnserverbaniaxn--r" + + "ady-iraxn--rdal-poaxn--rde-ulaxn--rdy-0nabaris-slickfh-muensterx" + + "n--rennesy-v1axn--rhkkervju-01afermockasserverrankoshigayamein-v" + + "igorgexn--rholt-mragowoltlab-democraciaxn--rhqv96gxn--rht27zxn--" + + "rht3dxn--rht61exn--risa-5naturalhistorymuseumcenterxn--risr-irax" + + "n--rland-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31halsaitohmanno" + + "rthflankaufentigerxn--rovu88beppublishproxyombolzano-altoadigeol" + + "ogyomitanobninskarasjohkamikitayamatsurincheonikonanporobserverx" + + "n--rros-granvindafjordxn--rskog-uuaxn--rst-0naturalsciencesnatur" + + "ellesuzukis-certifiedxn--rsta-framercanvasvalbardunloppacificita" + + "deliveryggeexn--rvc1e0am3exn--ryken-vuaxn--ryrvik-byaxn--s-1fait" + + "hammarfeastafricapitalonewspaperxn--s9brj9collectionxn--sandness" + + "jen-ogbeskidyn-ip24xn--sandy-yuaxn--sdtirol-n2axn--seral-lraxn--" + + "ses554gxn--sgne-graphoxn--45br5cylxn--skierv-utazasvcitichiryuky" + + "uragifuchungbukharahkkeravjuegoshikimobetsuldaluccaravantaarparl" + + "iamentjeldsundrudupontariobranconavstackareliancexn--skjervy-v1a" + + "xn--skjk-soaxn--sknit-yqaxn--sknland-fxaxn--slat-5naturbruksgymn" + + "xn--slt-elabcieszynh-serveblogspotaribeiraogakibichuoxn--smla-hr" + + "axn--smna-gratangentlentapisa-geekosherbrookegawaxn--snase-nraxn" + + "--sndre-land-0cbestbuyshouses3-us-west-2xn--snes-poaxn--snsa-roa" + + "xn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn--sr-varanger-g" + + "gbetainaboxfusejnyanagawalmartateshinanomachimkentateyamaveroyke" + + "nebakkeshibechambagriculturealtychyattorneyagawakepnombrendlynge" + + "nflfanpachigasakids3-eu-central-1xn--srfold-byaxn--srreisa-q1axn" + + "--srum-gratis-a-bulls-fanxn--stfold-9xaxn--stjrdal-s1axn--stjrda" + + "lshalsen-sqbhzcasinordeste-idcateringebuildinglitcheltenham-radi" + + "o-opensocialimolisembokuleuvenetokigawavocatanzaroweddingjovikan" + + "zakitchenaval-d-aosta-valleyboltarumizusawaustinnaumburgivingjem" + + "nes3-ap-southeast-1xn--stre-toten-zcbieidskoguchikuzenvironmenta" + + "lconservationionjukudoyamaizurugbyglandroverhallaakesvuemielecce" + + "vje-og-hornnes3-website-ap-northeast-1xn--t60b56axn--tckwebthing" + + "sveioxn--tiq49xqyjelasticbeanstalkhakassiaxn--tjme-hraxn--tn0agr" + + "ocerydxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tiro" + + "l-rzbielawaltervistaikikonaikawachinaganoharamcoachampionshiphop" + + "tobamadridnbloggerxn--trentin-sdtirol-7vbiellahppiacenzachpomors" + + "kieninohekinannestadiskussionsbereichattanooganordkappgafaninomi" + + "yakonojorpelandisrechtranakamagayahikobeardubaiduckdnsnillfjordi" + + "tchyouripanamatsusakahoginankokubunjindianapolis-a-bloggerxn--tr" + + "entino-sd-tirol-c3bieszczadygeyachiyodaejeonbukcoalwaysdatabaseb" + + "allangenkainanaejrietisalatinabeno-ipifony-1xn--trentino-sdtirol" + + "-szbievat-band-campaniavoues3-eu-west-1xn--trentinosd-tirol-rzbi" + + "fukagawashingtondclk3xn--trentinosdtirol-7vbigv-infolldalivornow" + + "ruzhgorodeoceanographics3-website-ap-southeast-1xn--trentinsd-ti" + + "rol-6vbihorologyonagoyaxarnetbankaracoldwarszawaustraliamusement" + + "dllpages3-ap-northeast-2ix4432-balsan-suedtirolkuszczytnord-aurd" + + "alp16-b-datacentermezproxyzgorabruzzoologicalabamagasakishimabar" + + "aogashimadachicagoboats3-ap-northeast-1kappchizip611xn--trentins" + + "dtirol-nsbikedaemonmoutheworkpccwedeployonagunicloudivtasvuodnak" + + "amurataishinomakinkobierzycextraspace-to-rentalstomakomaibarazur" + + "ewebsiteshikagamiishibukawakkanaibetsubamericanfamilydsmynasushi" + + "obarackmazeplayokosukanraustrheimatunduhrennebugattiffanyaarbort" + + "eaches-yogasawaracingjerdrumcprequalifymeinforumzgorzeleccogjers" + + "tadotsuruokakamigaharaukraanghkembuchikumagayagawakayamagentosit" + + "ecnologiajudygarlanddnskingdyniamunemurorangecloudplatform0emmaf" + + "ann-arboretumbriamallamaceiobbcg120001wwwbq-abogadobeaemcloud-fr" + + "1337xn--trgstad-r1axn--trna-woaxn--troms-zuaxn--tysvr-vraxn--uc0" + + "atvestvagoyxn--uc0ay4axn--uist22hamurakamigoris-a-geekautokeinot" + + "iceablewismillerxn--uisz3gxn--unjrga-rtargithubusercontentryclou" + + "dflareportrentinsuedtirolxn--unup4yxn--uuwu58axn--vads-jraxn--va" + + "lle-aoste-ebbtrysiljanxn--valle-d-aoste-ehbodoes-itcouldbeworldx" + + "n--valleaoste-e7axn--valledaoste-ebbvadsoccertmgrazerbaijan-maye" + + "ngerdalcesvelvikomvuxn--32vp30hagakhanamigawaxn--vard-jraxn--veg" + + "rshei-c0axn--vermgensberater-ctbitsvizzeraxn--vermgensberatung-p" + + "wblogoiplatformshangrilanxessooxn--vestvgy-ixa6oxn--vg-yiabkhazi" + + "axn--vgan-qoaxn--vgsy-qoa0jelenia-goraxn--vgu402colognexus-3xn--" + + "vhquvevelstadxn--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadxn--vry-" + + "yla5gxn--vuq861bilbaokinawashirosatobishimagazineues3-website-ap" + + "-southeast-2xn--w4r85el8fhu5dnraxn--w4rs40lxn--wcvs22dxn--wgbh1c" + + "olonialwilliamsburgrongausdalvivanovoldaxn--wgbl6axn--xhq521bill" + + "ustrationredumbrellair-traffic-controlleyoriikarasjokarasuyamarn" + + "ardalombardiadembetsukubankaratexn--xkc2al3hye2axn--xkc2dl3a5ee0" + + "handsonyxn--y9a3aquariumisakis-a-therapistoiaxn--yer-znaturhisto" + + "rischesvn-reposoundcastronomy-routerxn--yfro4i67oxn--ygarden-p1a" + + "xn--ygbi2ammxn--45brj9civilizationxn--ystre-slidre-ujbioceanogra" + + "phiquexn--zbx025dxn--zf0ao64axn--zf0avxlxn--zfr164bipanasonicath" + + "olicaxiaskimitsubatamibudejjuedischesapeakebayernirasakindianmar" + + "ketingliwicexnbayxz" // nodes is the list of nodes. Each node is represented as a uint32, which // encodes the node's children, wildcard bit and node type (as an index into @@ -540,1825 +540,1827 @@ const text = "9guacuiababia-goracleaningroks-theatree164-balsfjordd-dnshome-we" // An I denotes an ICANN domain. // // The layout within the uint32, from MSB to LSB, is: +// // [ 0 bits] unused // [10 bits] children index // [ 1 bits] ICANN bit // [15 bits] text index // [ 6 bits] text length var nodes = [...]uint32{ - 0x3346c3, - 0x358784, - 0x2ed746, - 0x21cb43, - 0x21cb46, - 0x399c86, - 0x3c3043, - 0x221ec4, - 0x205687, - 0x2ed388, + 0x330b03, + 0x3b6e44, + 0x2e8c86, + 0x350003, + 0x350006, + 0x392c06, + 0x3b9283, + 0x21a084, + 0x3deb07, + 0x2e88c8, 0x1a000c2, - 0x1f44d87, - 0x385a09, - 0x2e460a, - 0x2e460b, - 0x238883, - 0x241b45, - 0x2204502, - 0x204504, - 0x2cdbc3, - 0x252f05, - 0x2602142, - 0x36c683, - 0x2a20c04, - 0x202145, - 0x2e03702, - 0x219e8e, - 0x267743, - 0x3bdcc6, - 0x3203f42, - 0x2ed8c7, - 0x244206, - 0x3603802, - 0x2979c3, - 0x235c86, - 0x21d4c8, - 0x29e686, - 0x3aa2c4, + 0x1f42f07, + 0x37f0c9, + 0x2ddc4a, + 0x2ddc4b, + 0x233b83, + 0x236ac5, + 0x2213c82, + 0x3d6204, + 0x2c8983, + 0x231c05, + 0x2601ac2, + 0x367443, + 0x2a2ffc4, + 0x201ac5, + 0x2e06482, + 0x20648e, + 0x25b543, + 0x3b32c6, + 0x3204782, + 0x3e57c7, + 0x23a206, + 0x3603682, + 0x2909c3, + 0x22c386, + 0x2691c8, + 0x295546, + 0x276dc4, 0x3a00b02, - 0x354109, - 0x224ac7, - 0x3804c6, - 0x3704c9, - 0x391a48, - 0x24fcc4, - 0x349446, - 0x3d4146, - 0x3e01902, - 0x2fe906, - 0x218e0f, - 0x3e960e, - 0x311c44, - 0x228685, - 0x339845, - 0x3b1ec9, - 0x24a949, - 0x236487, - 0x207a06, - 0x207943, - 0x4204302, - 0x216183, - 0x2b990a, - 0x4604d03, - 0x347a45, - 0x314102, - 0x3ac849, - 0x4e01d42, - 0x20ad44, - 0x2ffcc6, - 0x258405, - 0x37ce44, - 0x5721084, - 0x205d83, - 0x241004, - 0x5a016c2, - 0x300b84, - 0x5e02084, - 0x35030a, + 0x350889, + 0x21a3c7, + 0x2ff486, + 0x369ac9, + 0x2ca948, + 0x246004, + 0x320146, + 0x3d8b46, + 0x3e01c02, + 0x2fc746, + 0x212d4f, + 0x3d99ce, + 0x2e4804, + 0x20d105, + 0x335fc5, + 0x3a8989, + 0x2427c9, + 0x22cb87, + 0x2239c6, + 0x22edc3, + 0x4216302, + 0x216303, + 0x2a868a, + 0x4615c43, + 0x3456c5, + 0x2f45c2, + 0x3a5c49, + 0x4e028c2, + 0x208844, + 0x3c9a86, + 0x2968c5, + 0x376c04, + 0x570fdc4, + 0x2028c3, + 0x235fc4, + 0x5a01942, + 0x357344, + 0x5e01a04, + 0x214f0a, 0x6200882, - 0x2631c7, - 0x2339c8, - 0x7a0c502, - 0x33e407, - 0x237c44, - 0x36ddc7, - 0x237c45, - 0x387787, - 0x35ca86, - 0x2a1784, - 0x3b9245, - 0x27a907, - 0x9218682, - 0x2fea83, - 0x9620102, - 0x3dabc3, - 0x9a0f202, - 0x289b85, + 0x20bd07, + 0x3be8c8, + 0x7a08b82, + 0x33a387, + 0x22da04, + 0x31b047, + 0x22da05, + 0x380e47, + 0x34d986, + 0x358c84, + 0x36af05, + 0x274707, + 0x9205982, + 0x2b0403, + 0x961f9c2, + 0x3d3583, + 0x9a03602, + 0x254845, 0x9e00202, - 0x37fe84, - 0x23cfc5, - 0x311b87, - 0x30420e, - 0x2ca444, - 0x28fac4, - 0x204243, - 0x324fc9, - 0x2ec50b, - 0x2fd348, - 0x335848, - 0x33b708, - 0x3d6448, - 0xa37030a, - 0x387687, - 0x2542c6, - 0xa61cb82, - 0x378743, - 0x3e0b43, - 0x3e2084, - 0x378783, - 0x397143, - 0x1740a82, - 0xaa02742, - 0x292d05, - 0x35a086, - 0x2aa1c4, - 0x3a9487, - 0x251c86, - 0x2da804, - 0x3c5787, - 0x202743, - 0xb6e7fc2, - 0xba1da82, - 0xbe16c02, - 0x21db46, + 0x3793c4, + 0x3ccb05, + 0x2e4747, + 0x2b294e, + 0x2c3904, + 0x235044, + 0x207843, + 0x301889, + 0x306acb, + 0x391a88, + 0x331f88, + 0x337bc8, + 0x3ceec8, + 0xa36990a, + 0x380d47, + 0x3f3ac6, + 0xa65a502, + 0x3de703, + 0x3e32c3, + 0x3e4884, + 0x3de743, + 0x354783, + 0x173ec82, + 0xaa08a42, + 0x28b785, + 0x2ac746, + 0x2a29c4, + 0x3a1f47, + 0x237906, + 0x2d7f04, + 0x3bb3c7, + 0x221bc3, + 0xb6e2082, + 0xba69782, + 0xbe16d82, + 0x217b46, 0xc200282, - 0x3676c5, - 0x341fc3, - 0x3dc584, - 0x305544, - 0x305545, - 0x3f2583, - 0xc60bec3, - 0xca0aa82, - 0x20e485, - 0x20e48b, - 0x30f70b, - 0x211d44, - 0x20ed49, - 0x20fdc4, - 0xce10482, - 0x210cc3, - 0x211243, - 0xd211f02, - 0x216f8a, - 0xd602642, - 0x204785, - 0x2f8cca, - 0x24f984, - 0x2139c3, - 0x2153c4, - 0x218043, - 0x218044, - 0x218047, - 0x219285, - 0x21a286, - 0x21ae86, - 0x21cbc3, - 0x2234c8, - 0x215a03, - 0xda03ac2, - 0x365d08, - 0x29e90b, - 0x22c908, - 0x22d286, - 0x22d907, - 0x22f608, + 0x266485, + 0x3401c3, + 0x3d7244, + 0x303a84, + 0x303a85, + 0x3f1d43, + 0xc650b03, + 0xca05a42, + 0x207fc5, + 0x207fcb, + 0x31228b, + 0x206204, + 0x208909, + 0x209544, + 0xce09902, + 0x20a143, + 0x20a6c3, + 0xd20b4c2, + 0x21710a, + 0xd60b782, + 0x3d6485, + 0x2f258a, + 0x245cc4, + 0x20d603, + 0x20e404, + 0x211443, + 0x211444, + 0x211447, + 0x213d45, + 0x214506, + 0x2156c6, + 0x217503, + 0x21b748, + 0x21e083, + 0xda02fc2, + 0x241708, + 0x2957cb, + 0x224788, + 0x225106, + 0x225287, + 0x227b48, 0xf201002, - 0xf629b02, - 0x27f688, - 0x23b007, - 0x213f05, - 0xfb1cc08, - 0xffb11c8, - 0x285f03, - 0x235504, - 0x399d02, - 0x10235982, - 0x1060b282, - 0x10e36f02, - 0x236f03, - 0x11203d82, - 0x315983, - 0x254ac4, - 0x203d83, - 0x24fc84, - 0x25198b, - 0x2063c3, - 0x301806, - 0x26c004, - 0x2d85ce, - 0x3259c5, - 0x279e08, - 0x3bddc7, - 0x3bddca, - 0x23c843, - 0x358587, - 0x2ec6c5, - 0x23c844, - 0x266e86, - 0x266e87, - 0x376204, - 0x1171c644, - 0x3f3784, - 0x251584, - 0x209f46, - 0x213cc3, - 0x213cc8, - 0x21ff08, - 0x2a55c3, - 0x216f43, - 0x34d4c4, - 0x35ee03, - 0x11e06282, - 0x12227e82, - 0x205206, - 0x349543, - 0x27b604, - 0x12611582, - 0x211583, - 0x23d283, - 0x21f9c2, - 0x12a045c2, - 0x2e0c86, - 0x22ad87, - 0x233747, - 0x2fc645, - 0x3b7c84, - 0x2e0085, - 0x2d5187, - 0x3594c9, - 0x3b1646, - 0x2fc546, - 0x13a12f82, - 0x320588, - 0x32c046, - 0x333c45, - 0x317507, - 0x3bb044, - 0x3bb045, - 0x3bf004, - 0x3bf008, - 0x13e02882, - 0x14200482, - 0x38e506, + 0xf620302, + 0x27a748, + 0x3dab47, + 0x31ba45, + 0xfb1ba48, + 0xfedf508, + 0x27d5c3, + 0x22bfc4, + 0x392c82, + 0x1022cdc2, + 0x10668142, + 0x10e2d3c2, + 0x22d3c3, + 0x11201782, + 0x313a43, + 0x24a844, + 0x201783, + 0x245fc4, + 0x23760b, + 0x202f03, + 0x2f9446, + 0x214d84, + 0x2d368e, + 0x2ff905, + 0x273c08, + 0x3b33c7, + 0x3b33ca, + 0x231543, + 0x3b6c47, + 0x306c85, + 0x231544, + 0x25c046, + 0x25c047, + 0x36ff44, + 0x1171b484, + 0x381dc4, + 0x238904, + 0x3c1386, + 0x20f543, + 0x3c1748, + 0x3f2f08, + 0x29dc43, + 0x2170c3, + 0x34a7c4, + 0x35b203, + 0x11e02dc2, + 0x12621942, + 0x202986, + 0x320243, + 0x23a9c4, + 0x12a13282, + 0x213283, + 0x3818c3, + 0x218442, + 0x12e03402, + 0x2d95c6, + 0x22b987, + 0x2ff287, + 0x2f5d45, + 0x3cb8c4, + 0x370c05, + 0x2c9747, + 0x3582c9, + 0x2df986, + 0x2f5c46, + 0x13e04102, + 0x30f188, + 0x32a0c6, + 0x22ad85, + 0x3b1f07, + 0x3b5d04, + 0x3b5d05, + 0x3a24c4, + 0x3a24c8, + 0x14205202, + 0x14600482, + 0x238ac6, 0x200488, - 0x3402c5, - 0x357386, - 0x361608, - 0x3653c8, - 0x14605985, - 0x1722f8c4, - 0x2849c7, - 0x17607e42, - 0x17b6e3c2, - 0x18e0b642, - 0x2ffdc5, - 0x19a9a145, - 0x27a446, - 0x3dafc7, - 0x3e6887, - 0x19e1a043, - 0x34af07, - 0x28f9c8, - 0x27a38d49, - 0x21a047, - 0x239447, - 0x34be48, - 0x239fc6, - 0x23c346, - 0x23e30c, - 0x24000a, - 0x2404c7, - 0x241a0b, - 0x242707, - 0x24270e, - 0x27e43444, - 0x243544, - 0x245687, - 0x38df47, - 0x249e06, - 0x249e07, - 0x33bfc7, - 0x288583, - 0x28203682, - 0x24c806, - 0x24c80a, - 0x24d24b, - 0x24e8c7, - 0x24f505, - 0x250943, - 0x250cc6, - 0x250cc7, - 0x21d9c3, - 0x28600102, - 0x2512ca, - 0x28b347c2, - 0x28fa8a82, - 0x2924a282, - 0x2963cc82, - 0x254705, - 0x255504, - 0x2a203402, - 0x300c05, - 0x24d843, - 0x3cabc5, - 0x205104, - 0x22f4c4, - 0x2e3a86, - 0x267ac6, - 0x20e683, - 0x3d8a84, - 0x35cd43, - 0x2b2101c2, - 0x22dc84, - 0x22dc86, - 0x25bb85, - 0x2bc906, - 0x317608, - 0x215b84, - 0x3289c8, - 0x38f745, - 0x294ec8, - 0x2de106, - 0x318747, - 0x282a44, - 0x2c682a46, - 0x2ca24dc3, - 0x3ad7c3, - 0x2c5608, - 0x33c744, - 0x2ce15487, - 0x28b246, - 0x2f55c9, - 0x36ea08, - 0x371dc8, - 0x37b1c4, - 0x223403, - 0x2304c2, - 0x2d664842, - 0x2da30902, - 0x329e83, - 0x2de057c2, - 0x21d944, - 0x29ef86, - 0x241543, - 0x2d1ec7, - 0x20cec3, - 0x2ca508, - 0x231645, - 0x2724c3, - 0x23cf45, - 0x23d084, - 0x3bad46, - 0x2366c6, - 0x311ac6, - 0x2e2904, - 0x242ac3, - 0x2e217e02, - 0x2e642185, - 0x200843, + 0x33e305, + 0x353686, + 0x35d788, + 0x361888, + 0x14a02c45, + 0x176204c4, + 0x2576c7, + 0x17a08fc2, + 0x17f547c2, + 0x19202202, + 0x3c9b85, + 0x19ee9e05, + 0x274246, + 0x2dc247, + 0x3e8c07, + 0x1a206643, + 0x321c47, + 0x289a48, + 0x2822e709, + 0x206647, + 0x22ef07, + 0x349208, + 0x22f706, + 0x231046, + 0x23240c, + 0x23324a, + 0x233bc7, + 0x23698b, + 0x237c87, + 0x237c8e, + 0x286391c4, + 0x2392c4, + 0x23b287, + 0x271d87, + 0x240086, + 0x240087, + 0x332dc7, + 0x21dac3, + 0x28a2dd42, + 0x243106, + 0x24310a, + 0x2439cb, + 0x2457c7, + 0x247105, + 0x2473c3, + 0x247746, + 0x247747, + 0x2696c3, + 0x28e00102, + 0x247e0a, + 0x29330c02, + 0x297a1542, + 0x29a41402, + 0x29e31982, + 0x24a485, + 0x24b704, + 0x2aa54302, + 0x3573c5, + 0x231bc3, + 0x374145, + 0x361b84, + 0x226f84, + 0x2dd186, + 0x25cb86, + 0x2081c3, + 0x3d1404, + 0x358fc3, + 0x2ba023c2, + 0x225604, + 0x225606, + 0x24fd45, + 0x399fc6, + 0x3b2008, + 0x21de44, + 0x257208, + 0x3267c5, + 0x28e348, + 0x2d8d86, + 0x2b9b07, + 0x27cf44, + 0x2d67cf46, + 0x2da1a6c3, + 0x3a5603, + 0x371008, + 0x338504, + 0x2de0e4c7, + 0x2862c6, + 0x2f0109, + 0x302208, + 0x375208, + 0x381944, + 0x2180c3, + 0x228b02, + 0x2e656442, + 0x2ea014c2, + 0x328243, 0x2ee060c2, - 0x21c0c3, - 0x300a45, - 0x2f226783, - 0x2fa410c9, - 0x2fe00942, - 0x30612002, - 0x29fe85, - 0x221206, - 0x2bd3c6, - 0x3171c8, - 0x3171cb, - 0x34fb0b, - 0x2fc845, - 0x2e8549, + 0x269644, + 0x295e46, + 0x2328c3, + 0x2cb1c7, + 0x3dc083, + 0x2c39c8, + 0x3816c5, + 0x26aa03, + 0x3cca85, + 0x3ccbc4, + 0x3b1c06, + 0x3b7406, + 0x2e4686, + 0x2db944, + 0x238043, + 0x2f25f042, + 0x2f637105, + 0x200843, + 0x2fe02c02, + 0x20f343, + 0x258c05, + 0x3021f603, + 0x30a36089, + 0x30e00942, + 0x3160b5c2, + 0x299245, + 0x2193c6, + 0x2924c6, + 0x30d788, + 0x30d78b, + 0x34cc8b, + 0x2f5f45, + 0x2e2609, 0x1601082, - 0x2cee08, - 0x20f044, - 0x30e01b42, - 0x346043, - 0x316e82c6, - 0x31a02182, - 0x3d6a48, - 0x31e0a842, - 0x2738ca, - 0x32679783, - 0x32f86046, - 0x31de08, - 0x221b86, - 0x396707, - 0x219007, - 0x3d3cca, - 0x24fa04, - 0x36c404, - 0x385109, - 0x333bd905, - 0x219ec6, - 0x2115c3, - 0x2872c4, - 0x33601d04, - 0x201d07, - 0x33bae987, - 0x264f44, - 0x2424c5, - 0x27a508, - 0x256007, - 0x256287, - 0x33e1b5c2, - 0x2ae1c4, - 0x2a99c8, - 0x259284, - 0x25d444, - 0x25d845, - 0x25d987, - 0x34b68049, - 0x23be84, - 0x25f649, - 0x2607c8, - 0x262104, - 0x262107, - 0x264643, - 0x265cc7, - 0x34e00bc2, - 0x16ccd82, - 0x266946, - 0x2c48c7, - 0x2672c4, - 0x268887, - 0x269387, - 0x26a303, - 0x352698c2, - 0x215ac2, - 0x26b7c3, - 0x26b7c4, - 0x26b7cb, - 0x335948, - 0x215ac4, - 0x26ca05, - 0x26e147, - 0x2fa885, - 0x34deca, - 0x270903, - 0x35605b02, - 0x2727c4, - 0x274309, - 0x277c03, - 0x277cc7, - 0x244b49, - 0x20e288, - 0x203743, - 0x291e47, - 0x244603, - 0x299704, - 0x29adc9, - 0x29dc86, - 0x32b303, - 0x203f82, - 0x2ccb83, - 0x2ccb87, - 0x39ab45, - 0x3a3c06, - 0x2d1704, - 0x39b945, - 0x2927c3, - 0x21f0c6, - 0x2094c3, - 0x20ef42, - 0x25c904, - 0x35a03942, - 0x35f339c3, - 0x36206582, - 0x243b43, - 0x21b304, - 0x25a807, - 0x2a8606, - 0x201cc2, - 0x36601c82, - 0x372004, - 0x36e181c2, - 0x37203d02, - 0x2af084, - 0x2af085, - 0x20db45, - 0x3d4d06, - 0x37607282, - 0x370985, - 0x3dccc5, - 0x207283, - 0x2feb46, - 0x2140c5, - 0x21dac2, - 0x363205, - 0x21dac4, - 0x222343, - 0x222583, - 0x37a0e002, - 0x27ab07, - 0x26e304, - 0x26e309, - 0x2871c4, - 0x299fc3, - 0x2c97c8, - 0x37e99fc4, - 0x299fc6, - 0x2bc303, - 0x23f783, - 0x20f583, - 0x3830f1c2, - 0x317442, - 0x38600642, - 0x343e08, - 0x2157c8, - 0x3c9706, - 0x3b6e45, - 0x230185, - 0x349707, - 0x38a62fc5, - 0x216e82, - 0x38eaca82, - 0x39200042, - 0x28f288, - 0x3204c5, - 0x309c84, - 0x242e05, - 0x24ad47, - 0x3df244, - 0x25aec2, - 0x3963ff82, - 0x35a8c4, - 0x362607, - 0x2a0407, - 0x387744, - 0x3e1243, - 0x2a5504, - 0x2a5508, - 0x39a3c686, - 0x266d0a, - 0x3af884, - 0x2a9408, - 0x242344, - 0x22da06, - 0x2aca44, - 0x3000c6, - 0x26e5c9, - 0x2bba87, - 0x3a80c3, - 0x39e01742, - 0x2830c3, - 0x210682, - 0x3a209bc2, - 0x257c86, - 0x28adc8, - 0x2bd547, - 0x317a89, - 0x2bd709, - 0x2bf805, - 0x2c0d09, - 0x2c2005, - 0x2c3205, - 0x2c3fc8, - 0x3a616c44, - 0x3aa16c47, - 0x239803, - 0x2c41c7, - 0x239806, - 0x2c4e47, - 0x2bb585, - 0x2390c3, - 0x3ae30fc2, - 0x213c04, - 0x3b20e9c2, - 0x3b607142, - 0x376406, - 0x233945, - 0x2c7e07, - 0x33be43, - 0x3d6e44, - 0x213903, - 0x23ad43, - 0x3ba06502, - 0x3c202502, - 0x399d84, - 0x269883, - 0x30e905, - 0x3c613f82, - 0x3ce04182, - 0x3a0fc6, - 0x304144, - 0x310f44, - 0x310f4a, - 0x3d6005c2, - 0x20f2c3, - 0x22838a, - 0x231a48, - 0x3da5c204, + 0x2e8f88, + 0x203f04, + 0x31e01342, + 0x3441c3, + 0x32671f46, + 0x32a01b02, + 0x3cf4c8, + 0x32e04c02, + 0x26c74a, + 0x336220c3, + 0x33f7f706, + 0x31cec8, + 0x219d46, + 0x38f207, + 0x212f47, + 0x3d86ca, + 0x245d44, + 0x3671c4, + 0x37e709, + 0x343b2f05, + 0x2064c6, + 0x2132c3, + 0x255ec4, + 0x346e2504, + 0x33b487, + 0x34ba6807, + 0x280984, + 0x35dec5, + 0x274308, + 0x24c387, + 0x24c607, + 0x34e0fd02, + 0x31f0c4, + 0x2a21c8, + 0x24e304, + 0x251604, + 0x2519c5, + 0x251b07, + 0x35b51789, + 0x253144, + 0x253e09, + 0x2554c8, + 0x255c44, + 0x255c47, + 0x256243, + 0x256d47, + 0x35e00bc2, + 0x16c5fc2, + 0x25bb06, + 0x2bdd07, + 0x25c384, + 0x25de87, + 0x25f687, + 0x260483, + 0x362596c2, + 0x21e142, + 0x2619c3, + 0x2619c4, + 0x2619cb, + 0x332088, + 0x21e144, + 0x262c05, + 0x264687, + 0x2f3d05, + 0x32920a, + 0x267c83, + 0x36608102, + 0x23e644, + 0x26d209, + 0x270c43, + 0x270d07, + 0x3613c9, + 0x34f6c8, + 0x264d43, + 0x28a7c7, + 0x291103, + 0x292644, + 0x293349, + 0x297786, + 0x2ae103, + 0x208782, + 0x2c5dc3, + 0x2c5dc7, + 0x389d85, + 0x357186, + 0x212804, + 0x395305, + 0x28b243, + 0x217746, + 0x272fc3, + 0x208b02, + 0x250ac4, + 0x36a34382, + 0x36e34383, + 0x372030c2, + 0x20bfc3, + 0x215b44, + 0x252a07, + 0x2a0786, + 0x26d1c2, + 0x3766d602, + 0x3b2204, + 0x37e115c2, + 0x3820c782, + 0x20c784, + 0x20c785, + 0x33c345, + 0x3c3dc6, + 0x38610202, + 0x2fdf45, + 0x3323c5, + 0x2e9d43, + 0x2fc986, + 0x210205, + 0x217ac2, + 0x35e485, + 0x217ac4, + 0x21dd83, + 0x21dfc3, + 0x38a074c2, + 0x274907, + 0x2556c4, + 0x2556c9, + 0x255dc4, + 0x2b6943, + 0x2c2c88, + 0x38ee9c84, + 0x2e9c86, + 0x2b4843, + 0x263643, + 0x205503, + 0x393034c2, + 0x38c902, + 0x39600642, + 0x341f88, + 0x3d2408, + 0x3c01c6, + 0x29a7c5, + 0x2bb385, + 0x3c7f87, + 0x39a86e45, + 0x2062c2, + 0x39ea4542, + 0x3a200042, + 0x287c08, + 0x30f0c5, + 0x308604, + 0x389605, + 0x394147, + 0x29ee04, + 0x2594c2, + 0x3a6331c2, + 0x356044, + 0x30f447, + 0x2997c7, + 0x380e04, + 0x3e3a43, + 0x29db84, + 0x29db88, + 0x3aa31386, + 0x25beca, + 0x351644, + 0x2a1c08, + 0x2372c4, + 0x225386, + 0x2a4504, + 0x3c9e86, + 0x255989, + 0x2b3fc7, + 0x3a0dc3, + 0x3ae17382, + 0x27e1c3, + 0x209b02, + 0x3b20af02, + 0x254606, + 0x285e48, + 0x2b6687, + 0x35f289, + 0x2b6849, + 0x2b8005, + 0x2b9fc9, + 0x2bb4c5, + 0x2bc045, + 0x2bd508, + 0x3b610084, + 0x3ba10087, + 0x22f2c3, + 0x2bd707, + 0x22f2c6, + 0x2be1c7, + 0x2b3805, + 0x22ea83, + 0x3be29602, + 0x381d04, + 0x3c21fec2, + 0x3c615fc2, + 0x37cd06, + 0x3be845, + 0x2c1107, + 0x2fd603, + 0x354704, + 0x201603, + 0x3be503, + 0x3ca03042, + 0x3d601442, + 0x392d04, + 0x259683, + 0x30d445, + 0x3da04142, + 0x3e206a42, + 0x389806, + 0x2fbf04, + 0x30ecc4, + 0x30ecca, + 0x3ea005c2, + 0x252383, + 0x20ce0a, + 0x20fc88, + 0x3ee503c4, 0x2005c3, - 0x251a83, - 0x2d1fc9, - 0x27cfc9, - 0x231c06, - 0x3de0bc83, - 0x23bb4d, - 0x23dbc6, - 0x2497cb, - 0x3e20b882, - 0x349288, - 0x432235c2, - 0x43603202, - 0x2c6405, - 0x43a040c2, - 0x2b3307, - 0x209a83, - 0x214288, - 0x43e01ac2, - 0x32a7c4, - 0x22cc83, - 0x24d946, - 0x22b9c4, - 0x216f03, - 0x45202382, - 0x2fc7c4, - 0x2cb785, - 0x2cc787, - 0x290943, - 0x2cd143, - 0x1626b42, - 0x2cd803, - 0x2cde03, - 0x45600c02, - 0x279504, - 0x242cc6, - 0x363983, - 0x2ce203, - 0x45a5cf02, - 0x25cf08, - 0x2cf5c4, - 0x2206c6, - 0x393f87, - 0x391d06, - 0x2c5584, - 0x53e01782, - 0x2396cb, - 0x3cdfce, - 0x222f8f, - 0x2e0403, - 0x546dbe82, - 0x164f082, - 0x54a04082, - 0x2b6103, - 0x3cc144, - 0x220243, - 0x359746, - 0x248286, - 0x2b46c7, - 0x390e44, - 0x54e21342, - 0x55232ac2, - 0x309345, - 0x3e4e07, - 0x3cedc6, - 0x5567a6c2, - 0x390744, - 0x2d4783, - 0x55a0af02, - 0x55f82443, - 0x2d5b84, - 0x2dbdc9, - 0x562e3dc2, - 0x5661c4c2, - 0x259605, - 0x56ae42c2, - 0x57203e02, - 0x3698c7, - 0x385c8b, - 0x218dc5, - 0x2682c9, - 0x26f6c6, - 0x57609004, - 0x379289, - 0x377647, - 0x393347, - 0x237b43, - 0x2fe046, - 0x37ea87, - 0x21e803, - 0x2b93c6, - 0x57e16202, - 0x5820b602, - 0x21cd43, - 0x3aca05, - 0x3b14c7, - 0x248386, - 0x39aac5, - 0x26e284, - 0x2ba945, - 0x3141c4, - 0x58609a42, - 0x2e2544, - 0x2d4544, - 0x3a73cd, - 0x2d4549, - 0x260e88, - 0x259884, - 0x3ebb05, - 0x3b80c7, - 0x3d1184, - 0x370c87, - 0x22c4c5, - 0x58abea84, - 0x2be3c5, - 0x58e768c4, - 0x31a606, - 0x3dadc5, - 0x592032c2, - 0x336a83, - 0x251f83, - 0x2459c4, - 0x2459c5, - 0x20d706, - 0x38de05, - 0x26eb44, - 0x59713103, - 0x59a14746, - 0x223d05, - 0x225845, - 0x3daec4, - 0x304c03, - 0x3af90c, - 0x59ecc882, - 0x5a200b42, - 0x5a612a82, - 0x222043, - 0x222044, - 0x5aa0fe02, - 0x302888, - 0x22be04, - 0x3301c6, - 0x5ae24902, - 0x5b216902, - 0x5b603f02, - 0x2a4a45, - 0x300346, - 0x238044, - 0x2361c6, - 0x212506, - 0x26ac03, - 0x5ba9d60a, - 0x299f05, - 0x2b98c3, - 0x213606, - 0x5be13609, - 0x22e147, - 0x3c8548, - 0x391909, - 0x3bfe88, - 0x2a3c46, - 0x20a2c3, - 0x5c205942, - 0x3b0148, - 0x5c6593c2, - 0x5ca00ec2, - 0x2384c3, - 0x2fc3c5, - 0x2b1244, - 0x2bdf89, - 0x23ca84, - 0x255308, - 0x5d20b4c3, - 0x5d66b484, - 0x221248, - 0x5da15142, - 0x23d8c2, - 0x3397c5, - 0x3bba89, - 0x214e43, - 0x32eb84, - 0x3f0484, - 0x2202c3, - 0x29558a, - 0x5df9b302, - 0x5e213a42, - 0x2e7f43, - 0x39d383, - 0x161c182, - 0x377f43, - 0x5e62ab02, - 0x5ea01942, - 0x5ee30944, - 0x296ac6, - 0x281884, - 0x28f0c3, - 0x3da783, - 0x5f30c783, - 0x24d5c6, - 0x339b85, - 0x2eba87, - 0x2eb9c6, - 0x2ec108, - 0x2ec306, - 0x201944, - 0x2b2dcb, - 0x2eea43, - 0x2eea45, - 0x5f60ffc2, - 0x369bc2, - 0x5fa54782, - 0x5fe0d3c2, - 0x221383, - 0x60282182, - 0x282183, - 0x2f0343, - 0x60a067c2, - 0x60ef3c06, - 0x2f4005, - 0x2b7346, - 0x6127c082, - 0x61611282, - 0x61a225c2, - 0x61e736c2, - 0x622130c2, - 0x62602202, - 0x21c603, - 0x3a9686, - 0x62a25a04, - 0x3b52c6, - 0x2907c4, - 0x2ec4c3, - 0x63603642, - 0x201f42, - 0x238cc3, - 0x63a14883, - 0x3cec47, - 0x3dacc7, - 0x6965c3c7, - 0x316147, - 0x218943, - 0x69a7a004, - 0x327e04, - 0x327e0a, - 0x3e69c5, - 0x69e31a82, - 0x268843, - 0x6a200602, - 0x262243, - 0x283083, - 0x6aa00582, - 0x28f944, - 0x349904, - 0x3cb645, - 0x32bd85, - 0x311f06, - 0x311186, - 0x6ae18882, - 0x6b2025c2, - 0x2fb405, - 0x2b7052, - 0x326ac6, - 0x22a783, - 0x22a786, - 0x269b85, - 0x1616fc2, - 0x73611f42, - 0x336783, - 0x211f43, - 0x2ac1c3, - 0x73a17a02, - 0x21fe83, - 0x73e07982, - 0x230983, - 0x37b608, - 0x248803, - 0x248806, - 0x3e8187, - 0x3271c6, - 0x3271cb, - 0x290707, - 0x313084, - 0x74600e82, - 0x3a3b45, - 0x74a14843, - 0x247043, - 0x20b8c5, - 0x218843, - 0x75218846, - 0x2ac403, - 0x203584, + 0x237703, + 0x2cb2c9, + 0x26b289, + 0x20fe46, + 0x3f211e43, + 0x32054d, + 0x230886, + 0x247a4b, + 0x3f605cc2, + 0x31ff88, + 0x4421b842, + 0x44602802, + 0x2bfe45, + 0x44a02b82, + 0x2aaac7, + 0x20adc3, + 0x2103c8, + 0x44e04b02, + 0x2bc5c4, + 0x224b03, + 0x2440c6, + 0x230a84, + 0x217083, + 0x46201d02, + 0x2f5ec4, + 0x2c4c45, + 0x2c59c7, + 0x288e83, + 0x2c7003, + 0x16c76c2, + 0x2c76c3, + 0x2c7b43, + 0x46600c02, + 0x221e44, + 0x34d006, + 0x27d843, + 0x2c7fc3, + 0x46a510c2, + 0x2510c8, + 0x2c8c84, + 0x3b6686, + 0x38ca87, + 0x3ae1c6, + 0x370f84, + 0x54e01302, + 0x22f18b, + 0x2c650e, + 0x21b1cf, + 0x3a9cc3, + 0x556d5782, + 0x1646c82, + 0x55a06002, + 0x242443, + 0x3bf3c4, + 0x288983, + 0x358546, + 0x389c06, + 0x3c3087, + 0x244804, + 0x55e19502, + 0x56229d02, + 0x307cc5, + 0x302d47, + 0x3ba846, + 0x566744c2, + 0x389544, + 0x2cda83, + 0x56a06982, + 0x56f7bc03, + 0x2ce904, + 0x2d56c9, + 0x572dd4c2, + 0x57639842, + 0x24e685, + 0x57add802, + 0x58204fc2, + 0x363ec7, + 0x37f34b, + 0x212d05, + 0x248009, + 0x265e06, + 0x5861cd44, + 0x3c58c9, + 0x3e7587, + 0x38be47, + 0x22d903, + 0x2f8406, + 0x325a07, + 0x2721c3, + 0x2c0686, + 0x58e0d9c2, + 0x5922a2c2, + 0x3b7203, + 0x3a5e05, + 0x2df807, + 0x38ffc6, + 0x389d05, + 0x255644, + 0x2b2085, + 0x311944, + 0x59601282, + 0x2db584, + 0x26b184, + 0x26b18d, + 0x2d92c9, + 0x393f88, + 0x201284, + 0x267945, + 0x2ff707, + 0x3c22c4, + 0x2fe247, + 0x226505, + 0x59ab7284, + 0x2ba645, + 0x59e6f904, + 0x318046, + 0x2dc045, + 0x5a2663c2, + 0x22a283, + 0x30cf03, + 0x23b5c4, + 0x23b5c5, + 0x21c2c6, + 0x389e45, + 0x264cc4, + 0x5a700ec3, + 0x5aa10886, + 0x20a8c5, + 0x218f45, + 0x2dc144, + 0x3516c3, + 0x3516cc, + 0x5aec5ac2, + 0x5b200b42, + 0x5b606b42, + 0x20f743, + 0x20f744, + 0x5ba09582, + 0x2fa4c8, + 0x2665c4, + 0x32ea06, + 0x5be1a202, + 0x5c2065c2, + 0x5c605e42, + 0x29d5c5, + 0x3ca106, + 0x35ed44, + 0x22c8c6, + 0x20bac6, + 0x228343, + 0x5ca9748a, + 0x2e9bc5, + 0x2a8643, + 0x225ac6, + 0x5cff3f49, + 0x225ac7, + 0x28f848, + 0x2ca809, + 0x3a3348, + 0x29ca06, + 0x206a83, + 0x5d202042, + 0x3a7ac8, + 0x5d64e442, + 0x5da00ec2, + 0x23ddc3, + 0x2dfa85, + 0x2a7d84, + 0x2bd2c9, + 0x231784, + 0x235ac8, + 0x5e209b43, + 0x5e65f304, + 0x219408, + 0x5eac7f42, + 0x230582, + 0x335f45, + 0x234e09, + 0x206543, + 0x32c584, + 0x3a7f44, + 0x255a83, + 0x28e94a, + 0x5ef94cc2, + 0x5f20d682, + 0x2e2003, + 0x396ec3, + 0x160f402, + 0x3b3083, + 0x5f61cf02, + 0x5fa01502, + 0x5fe28f84, + 0x28f406, + 0x27c704, + 0x287a43, + 0x208483, + 0x6030b843, + 0x243d46, + 0x336305, + 0x2e6947, + 0x2e6886, + 0x2e7588, + 0x2e7786, + 0x220084, + 0x2a9ccb, + 0x2ea443, + 0x2ea445, + 0x606066c2, + 0x3641c2, + 0x60a4a502, + 0x60e03c42, + 0x206e83, + 0x6127d202, + 0x27d203, + 0x2eaf83, + 0x61a03302, + 0x61eee6c6, + 0x2eeac5, + 0x29acc6, + 0x62275a82, + 0x6260a702, + 0x62a1e002, + 0x62e070c2, + 0x6320f8c2, + 0x63601b82, + 0x24b083, + 0x3d3446, + 0x63a94744, + 0x3ac646, + 0x288d04, + 0x301843, + 0x646024c2, + 0x2018c2, + 0x22e683, + 0x64a109c3, + 0x3d3687, + 0x2dbf47, + 0x6aa50587, + 0x314207, + 0x212343, + 0x6ae73e04, + 0x2ecf44, + 0x2ecf4a, + 0x3e8d45, + 0x6b20fcc2, + 0x25de43, + 0x6b600602, + 0x22b643, + 0x27e183, + 0x6be00582, + 0x2899c4, + 0x335904, + 0x3afb45, + 0x3226c5, + 0x22d006, + 0x2b9286, + 0x6c212282, + 0x6c601f42, + 0x2c6d85, + 0x29a9d2, + 0x2ad8c6, + 0x203d43, + 0x3d1f46, + 0x366905, + 0x1617142, + 0x74a0b502, + 0x3baec3, + 0x20b503, + 0x2afb03, + 0x74e03902, + 0x218903, + 0x75216282, + 0x228fc3, + 0x3afdc8, + 0x243503, + 0x243506, + 0x3ea507, + 0x333ac6, + 0x333acb, + 0x288c47, + 0x300e44, + 0x75a00e82, + 0x3570c5, + 0x75e01883, + 0x23c483, + 0x3c52c5, + 0x212243, + 0x76612246, + 0x2b1343, + 0x22c284, 0x2003c6, - 0x334046, - 0x7564acc3, - 0x285c07, - 0x244747, - 0x2b54c5, - 0x24eb06, - 0x21cc03, - 0x782cebc3, - 0x78607002, - 0x78a30704, - 0x3f3589, - 0x21b645, - 0x3af684, - 0x303a08, - 0x23d505, - 0x78e407c5, - 0x24f689, - 0x380583, - 0x3dca84, - 0x792035c2, - 0x221583, - 0x79681142, - 0x281146, - 0x168e5c2, - 0x79a15882, - 0x2a4948, - 0x2a54c3, - 0x2be307, - 0x39fc85, - 0x2fddc5, - 0x331a0b, - 0x2fddc6, - 0x331c06, - 0x24bb04, - 0x218386, - 0x79f00dc8, - 0x26c0c3, - 0x274003, - 0x274004, - 0x3e4d44, - 0x304e07, - 0x31ea05, - 0x7a324e02, - 0x7a608782, - 0x7ae08785, - 0x2e6ac4, - 0x2e6acb, - 0x305448, - 0x268f84, - 0x7b25cf42, - 0x7b609ec2, - 0x209ec3, - 0x306744, - 0x306a05, - 0x307387, - 0x7bb097c4, - 0x21bd84, - 0x7be05442, - 0x38a3c9, - 0x30a905, - 0x219085, - 0x30b185, - 0x7c205443, - 0x244e04, - 0x244e0b, - 0x30be44, - 0x30c10b, - 0x30c6c5, - 0x2230ca, - 0x30ce88, - 0x30d08a, - 0x30d883, - 0x30d88a, - 0x7ca1b482, - 0x7ce21e42, - 0x7d229a83, - 0x7d6cc442, - 0x310c43, - 0x7db129c2, - 0x7df42742, - 0x313e44, - 0x223606, - 0x235f05, - 0x317483, - 0x23b886, - 0x212c85, - 0x235804, - 0x7e200902, - 0x21d784, - 0x2e81ca, - 0x2cb0c7, - 0x351e86, - 0x2516c7, - 0x24c843, - 0x2d5bc8, - 0x34c64b, - 0x226445, - 0x3f05c5, - 0x3f05c6, - 0x304704, - 0x236d08, - 0x2221c3, - 0x28b8c4, - 0x3d4047, - 0x312cc6, - 0x346906, - 0x2d840a, - 0x25f6c4, - 0x2a1a8a, - 0x7e6f7b86, - 0x2f7b87, - 0x26ca87, - 0x28db44, - 0x28db49, - 0x230dc5, - 0x377483, - 0x236883, - 0x7ea06f83, - 0x234344, - 0x7ee00682, - 0x366906, - 0x7f2d9445, - 0x22a9c5, - 0x246646, - 0x215084, - 0x7f601a42, - 0x246744, - 0x7fe03b02, - 0x379105, - 0x230f44, - 0x8122ea03, - 0x81611f82, - 0x211f83, - 0x3bb206, - 0x81a02fc2, - 0x339288, - 0x22dfc4, - 0x22dfc6, - 0x39dc06, - 0x81e6e204, - 0x220f05, - 0x22f7c8, - 0x230007, - 0x286287, - 0x28628f, - 0x2a98c6, - 0x247943, - 0x249f84, - 0x234c03, - 0x22db44, - 0x3a23c4, - 0x8220b242, - 0x2625c3, - 0x33fc03, - 0x82606382, + 0x3dd9c6, + 0x76a1f143, + 0x3545c7, + 0x360fc7, + 0x2abc05, + 0x329dc6, + 0x20a903, + 0x796c88c3, + 0x79a06702, + 0x79e28d44, + 0x3f2d09, + 0x222b85, + 0x23d9c4, + 0x2fb7c8, + 0x245ac5, + 0x7a247285, + 0x260fc9, + 0x2ff543, + 0x3d7744, + 0x7a6020c2, + 0x219743, + 0x7aa795c2, + 0x2795c6, + 0x1686f42, + 0x7ae06fc2, + 0x29d4c8, + 0x29db43, + 0x2ba587, + 0x333d45, + 0x2cc285, + 0x2cc28b, + 0x2f8186, + 0x2cc486, + 0x244f04, + 0x211786, + 0x7b2f8a08, + 0x2622c3, + 0x267103, + 0x267104, + 0x302c84, + 0x30e087, + 0x341845, + 0x7b768e82, + 0x7ba04f82, + 0x7c204f85, + 0x2d23c4, + 0x2e32cb, + 0x303988, + 0x271c84, + 0x7c634dc2, + 0x7ca71c02, + 0x373dc3, + 0x304c84, + 0x304f45, + 0x3058c7, + 0x7cf08144, + 0x20f004, + 0x7d202b02, + 0x383b89, + 0x3096c5, + 0x212fc5, + 0x30a245, + 0x7d619683, + 0x23ab84, + 0x23ab8b, + 0x30af04, + 0x30b1cb, + 0x30b785, + 0x21b30a, + 0x30bec8, + 0x30c0ca, + 0x30c943, + 0x30c94a, + 0x7de15cc2, + 0x7e21a002, + 0x7e620283, + 0x7eb0e9c2, + 0x30e9c3, + 0x7ef104c2, + 0x7f340942, + 0x3115c4, + 0x21b886, + 0x22c605, + 0x3db3c6, + 0x3c1f05, + 0x30f784, + 0x7f600902, + 0x269484, + 0x2e228a, + 0x2c4587, + 0x3be686, + 0x237347, + 0x243143, + 0x2ce948, + 0x3ed24b, + 0x2d61c5, + 0x21d505, + 0x21d506, + 0x3a8084, + 0x3b7a48, + 0x214143, + 0x2a7e84, + 0x3d8a47, + 0x300a86, + 0x3e2106, + 0x2d34ca, + 0x23d704, + 0x23d70a, + 0x7fb70486, + 0x370487, + 0x262c87, + 0x267784, + 0x267789, + 0x229405, + 0x3e7503, + 0x20c4c3, + 0x7fe22b03, + 0x80200682, + 0x239ac6, + 0x806d7105, + 0x3d2185, + 0x236746, + 0x2c7e84, + 0x80a12482, + 0x236844, + 0x81210002, + 0x3c5745, + 0x229584, + 0x82627103, + 0x82a0b542, + 0x20b543, + 0x3b5ec6, + 0x82e04842, + 0x39ac48, + 0x225944, + 0x225946, + 0x33ca86, + 0x83264744, + 0x20e905, + 0x2203c8, + 0x225c47, + 0x228087, + 0x22808f, + 0x2a20c6, + 0x23ae03, + 0x23f044, + 0x227543, + 0x2254c4, + 0x382e44, + 0x8363f602, + 0x2a0f03, + 0x33d7c3, + 0x83a02ec2, + 0x202ec3, + 0x269703, + 0x213dca, + 0x31bc07, + 0x3a60cc, + 0x3a6386, + 0x251e86, + 0x259307, + 0x83e5d447, + 0x263789, + 0x84241844, + 0x84a06ec2, + 0x84e01042, + 0x2d3886, + 0x3543c4, + 0x2d4746, + 0x26abc8, + 0x3a5ec4, + 0x33da06, + 0x292485, + 0x8567e608, + 0x247843, + 0x282245, + 0x285c83, + 0x2130c3, + 0x2130c4, + 0x26b683, + 0x85a51502, + 0x85e00e02, + 0x3e73c9, + 0x28cb45, + 0x28cec4, + 0x298ac5, + 0x203544, + 0x2e6f07, + 0x35ea45, + 0x8661bc04, + 0x2f9f48, + 0x2c9bc6, + 0x2cf104, + 0x2cff48, + 0x86a01a42, + 0x2e3184, + 0x31c344, + 0x351387, + 0x86e04ac4, + 0x201cc2, + 0x87210a82, + 0x24e583, + 0x24e584, + 0x239803, + 0x38f6c5, + 0x87655182, + 0x2f4a85, + 0x27ccc2, + 0x317585, + 0x2e1085, + 0x87a03d02, + 0x381844, + 0x87e03c82, + 0x3e49c6, + 0x2d7c06, + 0x234f48, + 0x296048, + 0x37cc84, + 0x2f8bc5, + 0x8822a9c9, + 0x2e90c4, + 0x3ef104, + 0x2776c3, + 0x20e7c3, + 0x8860e7c5, + 0x275485, + 0x2e9f04, + 0x2b26c2, + 0x3315c3, + 0x88a02e82, + 0x88e01982, + 0x39a705, + 0x285b07, + 0x283d44, + 0x2caa09, + 0x2e23c9, + 0x202183, + 0x286d88, + 0x2a8c49, + 0x222607, + 0x8933d845, + 0x359b86, + 0x35b2c6, + 0x35c0c5, + 0x2d93c5, + 0x89605682, + 0x259205, + 0x2d8f88, + 0x2d5fc6, + 0x89b0b9c7, + 0x3a6744, + 0x371587, + 0x3b1106, + 0x89e0de02, + 0x21bfc6, + 0x317485, + 0x8a2429c2, + 0x8a618b82, + 0x27aec6, + 0x8aa99987, + 0x8ae38742, + 0x21a043, + 0x23e186, + 0x2d8e44, + 0x269c46, + 0x341606, + 0x2fdb0a, + 0x350145, + 0x21ef46, + 0x21f983, + 0x21f984, + 0x8b2021c2, + 0x32a083, + 0x8b60f782, + 0x333883, + 0x8ba0d084, + 0x2dfbc4, + 0x8bedfbca, 0x206383, - 0x21da03, - 0x21930a, - 0x31cdc7, - 0x3ae24c, - 0x3ae506, - 0x25dd06, - 0x269507, - 0x82a6ffc7, - 0x272589, - 0x82f65e44, - 0x836213c2, - 0x83a01042, - 0x2d87c6, - 0x285a04, - 0x2db286, - 0x277f48, - 0x3acac4, - 0x33a6c6, - 0x2bd385, - 0x842833c8, - 0x250dc3, - 0x287385, - 0x28d283, - 0x219183, - 0x219184, - 0x272983, - 0x846291c2, - 0x84a00e02, - 0x377349, - 0x2936c5, - 0x293a44, - 0x29f705, - 0x20f144, - 0x2eadc7, - 0x3637c5, - 0x85223984, - 0x302308, - 0x2cf686, - 0x2d4a04, - 0x2d4a08, - 0x85601a82, - 0x2dc104, - 0x31d504, - 0x354fc7, - 0x85a01a84, - 0x202342, - 0x85e14942, - 0x220203, - 0x259504, - 0x243a83, - 0x396bc5, - 0x8621e7c2, - 0x2f93c5, - 0x2827c2, - 0x319cc5, - 0x2e6805, - 0x8662c602, - 0x23d204, - 0x86a075c2, - 0x3e21c6, - 0x212f06, - 0x3bbbc8, - 0x29c8c8, - 0x376384, - 0x300f85, - 0x312649, - 0x2cef44, - 0x3effc4, - 0x27c243, - 0x289f03, - 0x86e89f05, - 0x26ed05, - 0x29a244, - 0x2a7382, - 0x334a03, - 0x87206342, - 0x87601b82, - 0x338d45, - 0x28d107, - 0x20d944, - 0x391b09, - 0x2e8309, - 0x28e403, - 0x28e408, - 0x2ab4c9, - 0x3d3b47, - 0x87b3a505, - 0x35d3c6, - 0x35da06, - 0x35eec5, - 0x2d4645, - 0x87e02802, - 0x202805, - 0x2e0788, - 0x2e1306, - 0x8830c907, - 0x3ae8c4, - 0x2df487, - 0x3a8246, - 0x88609202, - 0x20d406, - 0x31934a, - 0x319bc5, - 0x88a15982, - 0x88e37dc2, - 0x27fe06, - 0x892a05c7, - 0x89603382, - 0x221e83, - 0x3f38c6, - 0x2de1c4, - 0x253846, - 0x324bc6, - 0x20184a, - 0x336e05, - 0x3c7b06, - 0x3c8703, - 0x3c8704, - 0x89a05e02, - 0x32c003, - 0x89e22082, - 0x32bc83, - 0x8a228604, - 0x2dfc04, - 0x8a7b188a, - 0x219d83, - 0x387c47, - 0x3de4c6, - 0x328b44, - 0x2372c2, - 0x2184c2, - 0x8aa007c2, - 0x2ef983, - 0x26c847, + 0x2096c7, + 0x366c46, + 0x3888c4, + 0x22cec2, + 0x2298c2, + 0x8c2007c2, + 0x30fc43, + 0x262a47, 0x2007c7, - 0x29b784, - 0x220d87, - 0x307486, - 0x23b147, - 0x21dc44, - 0x223f05, - 0x2031c5, - 0x8ae09b02, - 0x226b06, - 0x22b203, - 0x231282, - 0x231286, - 0x8b229b42, - 0x8b649902, - 0x254905, - 0x8ba021c2, - 0x8be019c2, - 0x398c45, - 0x2eed85, - 0x313b85, - 0x8c673143, - 0x2f2505, - 0x2fde87, - 0x2bb945, - 0x336fc5, - 0x279f04, - 0x240646, - 0x253004, - 0x8ca008c2, - 0x8d6d0e85, - 0x215e07, - 0x203788, - 0x27b8c6, - 0x27b8cd, - 0x27cd89, - 0x27cd92, - 0x33c805, - 0x3465c3, - 0x8da0ea02, - 0x3247c4, - 0x23dc43, - 0x38a6c5, - 0x31a945, - 0x8de2ccc2, - 0x272503, - 0x8e25c442, - 0x8ea2b942, - 0x8ee00082, - 0x3f4005, - 0x3a81c3, - 0x8f20dfc2, - 0x8f60ba42, - 0x28f906, - 0x26b54a, - 0x22a743, - 0x245943, - 0x2ed243, - 0x91203342, - 0x9fa096c2, - 0xa0203b42, - 0x207882, - 0x334809, - 0x2e31c4, - 0x283dc8, - 0xa0627e42, - 0xa0e01102, - 0x271dc5, - 0x241e48, - 0x24d048, - 0x2f29cc, - 0x246143, - 0xa1276282, - 0xa160b382, - 0x2dac86, - 0x31be45, - 0x2f4e83, - 0x26aa06, - 0x31bf86, - 0x251a43, - 0x31d443, - 0x31d886, - 0x31f304, - 0x2637c6, - 0x3afc04, - 0x31f9c4, - 0x32134a, - 0xa1a561c2, - 0x2647c5, - 0x32290a, - 0x322845, - 0x323904, - 0x323a06, - 0x323b84, - 0x221846, - 0xa1e02402, - 0x21c7c6, - 0x325785, - 0x3c7987, - 0x3d0286, - 0x269704, - 0x2f5107, - 0x20d445, - 0x2477c7, - 0x22abc7, - 0x22abce, - 0x290106, - 0x248b85, - 0x2080c7, - 0x3dcb47, - 0x212105, - 0x2152c4, - 0x333502, - 0x28ac87, - 0x28d304, - 0x260644, - 0x2d568b, - 0xa22270c3, - 0x30dcc7, - 0x2270c4, - 0x30dfc7, - 0x224303, - 0x35680d, - 0x328848, - 0xa2656bc4, - 0x256bc5, - 0x3e1685, - 0x329083, - 0xa2a2dec2, - 0x32bfc3, - 0x32c803, - 0x2159c4, - 0x226c85, - 0x226d87, - 0x3c8786, - 0x39b403, - 0x2313cb, - 0x377b8b, - 0x2b87cb, - 0x2c144b, - 0x2c1d8a, - 0x3cce4b, - 0x3012cb, - 0x31c20c, - 0x31fdcb, - 0x36a851, - 0x37e70a, - 0x3c120b, - 0x3f1dcc, - 0x32d34b, - 0x32e2ca, - 0x32e94a, - 0x32fd0e, - 0x33034b, - 0x33060a, - 0x331d91, - 0x3321ca, - 0x3326cb, - 0x332c0e, - 0x334acc, - 0x334f4b, - 0x33520e, - 0x33558c, - 0x33750a, - 0x33870c, - 0xa2f3948a, - 0x339cc8, - 0x33a989, - 0x33c9ca, - 0x33cc4a, - 0x33cecb, - 0x33f38e, - 0x33fed1, - 0x34a749, - 0x34a98a, - 0x34b6cb, - 0x34cd4d, - 0x34dbca, - 0x34e396, - 0x34f70b, - 0x350b8a, - 0x3514ca, - 0x35250b, - 0x353f89, - 0x357189, - 0x358b0d, - 0x35994b, - 0x35b40b, - 0x35b8c9, - 0x35bf0e, - 0x35c54a, - 0x35d18a, - 0x35d7ca, - 0x35decb, - 0x35e70b, - 0x35f98d, - 0x36130d, - 0x362e90, - 0x36334b, - 0x363e4c, - 0x36514b, - 0x3693cb, - 0x36ce0e, - 0x36e0cb, - 0x36e0cd, - 0x3745cb, - 0x37504f, - 0x37540b, - 0x375dca, - 0x377889, - 0x37a2c9, - 0xa337a64b, - 0x37a90e, - 0x37ac8e, - 0x37c54b, - 0x37d2cf, - 0x38078b, - 0x380a4b, - 0x380d0a, - 0x385889, - 0x38820f, - 0x38d40c, - 0x38d9cc, - 0x38e94e, - 0x38ef8f, - 0x38f34e, - 0x38fd10, - 0x39010f, - 0x39110e, - 0x391fcc, - 0x3922d1, - 0x392712, - 0x393b11, - 0x39414e, - 0x39498b, - 0x39498e, - 0x394d0f, - 0x3950ce, - 0x395450, - 0x395853, - 0x395d11, - 0x39614c, - 0x39644e, - 0x3968cc, - 0x396d13, - 0x3977d0, - 0x397c4c, - 0x397f4c, - 0x39880b, - 0x39998e, - 0x399e8b, - 0x39a5cb, - 0x39bc8c, - 0x3a280a, - 0x3a2c4c, - 0x3a2f4c, - 0x3a3249, - 0x3a560b, - 0x3a58c8, - 0x3a6089, - 0x3a608f, - 0x3a7acb, - 0xa37a890a, - 0x3ab34c, - 0x3ac28b, - 0xa3bac549, - 0x3ad1c8, - 0x3ad58b, - 0x3aee0a, - 0x3af08a, - 0x3af30b, - 0x3afecc, - 0x3b1b09, - 0x3b1d48, - 0x3b464b, - 0x3b6f8b, - 0x3bcd0e, - 0x3be20b, - 0x3c0b8b, - 0x3cc50b, - 0x3cc7c9, - 0x3cd3cd, - 0x3dfeca, - 0x3e3357, - 0x3e4398, - 0x3e6b89, - 0x3e7dcb, - 0x3ed6d4, - 0x3edbcb, - 0x3ee14a, - 0x3eed0a, - 0x3eef8b, - 0x3ef6d0, - 0x3efad1, - 0x3f00ca, - 0x3f13cd, - 0x3f1acd, - 0x3f328b, - 0x226c03, - 0xa3e05503, - 0x21a846, - 0x209545, - 0x2f0b07, - 0x2c6b06, - 0xa420b2c2, - 0x2c0209, - 0x23b684, - 0x2fcdc8, - 0x206ec3, - 0x324707, - 0xa4603482, - 0x2c7e43, - 0xa4a079c2, - 0x2e8dc6, - 0x2e9b84, - 0x230ac4, - 0x204e83, - 0xa52e4302, - 0xa562fd04, - 0x28da87, - 0xa5a371c2, - 0x21a043, - 0x358c3, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x113508, - 0x208c43, + 0x295284, + 0x230147, + 0x3059c6, + 0x3dac87, + 0x217c44, + 0x21c505, + 0x210785, + 0x8c60ae42, + 0x361dc6, + 0x2309c3, + 0x231d02, + 0x231d06, + 0x8ca20342, + 0x8ce3d942, + 0x24a685, + 0x8d201b42, + 0x8d60c642, + 0x8df925c5, + 0x2e3e85, + 0x311305, + 0x8e26bfc3, + 0x2d9e05, + 0x2f8247, + 0x2b6cc5, + 0x350305, + 0x273d04, + 0x245946, + 0x254f84, + 0x8e6008c2, + 0x8f2b5585, + 0x37b547, + 0x2f8788, + 0x28e506, + 0x28e50d, + 0x28fa09, + 0x28fa12, + 0x387e05, + 0x391543, + 0x8f609a02, + 0x324704, + 0x230903, + 0x318785, + 0x319345, + 0x8fa24b42, + 0x26aa43, + 0x8fe50602, + 0x90624302, + 0x90a00082, + 0x3ee585, + 0x3a0ec3, + 0x90e07482, + 0x91205fc2, + 0x289986, + 0x277a0a, + 0x2056c3, + 0x23b543, + 0x2f0ac3, + 0x92e02642, + 0xa1641d82, + 0xa1e18182, + 0x2046c2, + 0x330c49, + 0x2dc8c4, + 0x3a0208, + 0xa2221902, + 0xa2a01102, + 0x282145, + 0x236dc8, + 0x32b148, + 0x2f0d4c, + 0x23ba43, + 0xa2e6f2c2, + 0xa320c302, + 0x2d4146, + 0x31a605, + 0x2ef943, + 0x273706, + 0x31a746, + 0x2376c3, + 0x31c283, + 0x31c946, + 0x31de04, + 0x20c306, + 0x3ec744, + 0x31e5c4, + 0x320bca, + 0xa364c542, + 0x2563c5, + 0x3229ca, + 0x322905, + 0x3236c4, + 0x3237c6, + 0x323944, + 0x219a06, + 0xa3a01d82, + 0x39e8c6, + 0x302045, + 0x3bd5c7, + 0x3c9246, + 0x259504, + 0x2efc47, + 0x21c005, + 0x25d2c7, + 0x22b7c7, + 0x22b7ce, + 0x288646, + 0x243885, + 0x204a07, + 0x3c2c87, + 0x20b6c5, + 0x214404, + 0x244b82, + 0x285d07, + 0x293244, + 0x24cf44, + 0x2e78cb, + 0xa3e20b83, + 0x326f07, + 0x220b84, + 0x327207, + 0x21c903, + 0x352b0d, + 0x326648, + 0xa424d404, + 0x24d405, + 0x3e3e85, + 0x326e83, + 0xa4625842, + 0x32a043, + 0x32ae03, + 0x21e044, + 0x361f45, + 0x362047, + 0x21fa06, + 0x394dc3, + 0x233e8b, + 0x3727cb, + 0x2aeccb, + 0x2badcb, + 0x2c78ca, + 0x2d594b, + 0x2f8f0b, + 0x3274cc, + 0x31e9cb, + 0x36534a, + 0x39c74b, + 0x3b558c, + 0x3f130b, + 0x32b74a, + 0x32c34a, + 0x32d68e, + 0x32de0b, + 0x32e0ca, + 0x32f191, + 0x32f5ca, + 0x32facb, + 0x33000e, + 0x33130c, + 0x33168b, + 0x33194e, + 0x331ccc, + 0x33324a, + 0x33500c, + 0xa4b35c0a, + 0x336448, + 0x336e49, + 0x33894a, + 0x338bca, + 0x338e4b, + 0x33cf4e, + 0x33df11, + 0x348109, + 0x34834a, + 0x348a8b, + 0x34a04d, + 0x34aeca, + 0x34b516, + 0x34c88b, + 0x34e18a, + 0x34e9ca, + 0x34f8cb, + 0x350709, + 0x353489, + 0x354a4d, + 0x35520b, + 0x356b8b, + 0x357509, + 0x357b4e, + 0x35874a, + 0x35940a, + 0x35994a, + 0x35a2cb, + 0x35ab0b, + 0x35b8cd, + 0x35d48d, + 0x35e110, + 0x35e5cb, + 0x35fc4c, + 0x36160b, + 0x3639cb, + 0x367bce, + 0x3682cb, + 0x3682cd, + 0x36e30b, + 0x36ed8f, + 0x36f14b, + 0x36fb0a, + 0x3724c9, + 0x374309, + 0xa4f7468b, + 0x37494e, + 0x374cce, + 0x37638b, + 0x37708f, + 0x379b0b, + 0x379dcb, + 0x37a08a, + 0x37ef49, + 0x38280f, + 0x386b0c, + 0x38748c, + 0x387ace, + 0x387fcf, + 0x38838e, + 0x388b10, + 0x388f0f, + 0x38a00e, + 0x38ab4c, + 0x38ae51, + 0x38b292, + 0x38c611, + 0x38cc4e, + 0x38d48b, + 0x38d48e, + 0x38d80f, + 0x38dbce, + 0x38df50, + 0x38e353, + 0x38e811, + 0x38ec4c, + 0x38ef4e, + 0x38f3cc, + 0x38f813, + 0x390990, + 0x390e0c, + 0x39110c, + 0x39218b, + 0x39290e, + 0x392e0b, + 0x39354b, + 0x39564c, + 0x39b18a, + 0x39bf4c, + 0x39c24c, + 0x39c549, + 0x39e04b, + 0x39e308, + 0x39eec9, + 0x39eecf, + 0x3a07cb, + 0xa53a13ca, + 0x3a360c, + 0x3a454b, + 0xa57a4809, + 0x3a5008, + 0x3a53cb, + 0x3a6c8a, + 0x3a6f0a, + 0x3a718b, + 0x3a784c, + 0x3a85c9, + 0x3a8808, + 0x3ab9cb, + 0x3ae48b, + 0x3b230e, + 0x3b380b, + 0x3b4f0b, + 0x3c698b, + 0x3c6c49, + 0x3c714d, + 0x3e264a, + 0x3e6257, + 0x3e6a98, + 0x3e8f09, + 0x3ea14b, + 0x3eb314, + 0x3eb80b, + 0x3ebd8a, + 0x3eca0a, + 0x3ecc8b, + 0x3ee810, + 0x3eec11, + 0x3ef20a, + 0x3f090d, + 0x3f100d, + 0x3f2a0b, + 0x361ec3, + 0xa5bd5603, + 0x27d646, + 0x286845, + 0x2eb907, + 0x2de506, + 0xa5e3c402, + 0x2b8a09, + 0x3db1c4, + 0x2f64c8, + 0x222a43, + 0x324647, + 0xa62428c2, + 0x2c1143, + 0xa6603642, + 0x2e2ec6, + 0x2e5184, + 0x229104, + 0x3d6b83, + 0xa6edd842, + 0xa7201844, + 0x2676c7, + 0xa762c082, + 0x206643, + 0x2cd03, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x11c748, + 0x21d783, 0x2000c2, - 0x1c3448, - 0x20b642, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x219303, - 0x345796, - 0x373113, - 0x220c09, - 0x2848c8, - 0x3a39c9, - 0x322a86, - 0x35a910, - 0x3d24d3, - 0x312d88, - 0x291087, - 0x29ba47, - 0x2ba68a, - 0x3b95c9, - 0x336809, - 0x265a0b, - 0x35ca86, - 0x335a4a, - 0x22d286, - 0x23a103, - 0x27aa45, - 0x213cc8, - 0x29464d, - 0x2ffe8c, - 0x325447, - 0x3bc70d, - 0x22f8c4, - 0x23e08a, - 0x23fb4a, - 0x24000a, - 0x2ae887, - 0x249c47, - 0x24e084, - 0x282a46, - 0x325944, - 0x226788, - 0x23cac9, - 0x3171c6, - 0x3171c8, - 0x25248d, - 0x2e8549, - 0x31de08, - 0x219007, - 0x254b4a, - 0x2c48c6, - 0x3766c4, - 0x212747, - 0x366b0a, - 0x3ee84e, - 0x262fc5, - 0x2a014b, - 0x2ef6c9, - 0x27cfc9, - 0x2098c7, - 0x2098ca, - 0x36df07, - 0x3ce109, - 0x233e08, - 0x20bc0b, - 0x2fc3c5, - 0x260d4a, - 0x222389, - 0x370e0a, - 0x20700b, - 0x21264b, - 0x265795, - 0x2dbfc5, - 0x219085, - 0x244e0a, - 0x27468a, - 0x36f207, - 0x2190c3, - 0x2d8748, - 0x2f2d4a, - 0x22dfc6, - 0x271ec9, - 0x2833c8, - 0x2d4a04, - 0x28e189, - 0x29c8c8, - 0x2de047, - 0x2d0e86, - 0x215e07, - 0x2cfb07, - 0x24d3c5, - 0x262e0c, - 0x256bc5, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x20b642, - 0x21a043, - 0x214883, - 0x208c43, - 0x24acc3, - 0x21a043, - 0x214883, - 0x248803, - 0x24acc3, - 0x1e0283, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x1c3448, - 0x20b642, - 0x21a043, - 0x238b87, - 0x33f84, - 0x214883, - 0x3b284, - 0x24acc3, - 0x12c85, - 0x20b642, - 0x203142, - 0x313002, - 0x201ac2, - 0x203cc2, - 0x20ea82, - 0x1874a, - 0x12c105, - 0x12c10a, - 0x152aa49, - 0x14bd4b, - 0x5f887, - 0x1bc3c6, - 0xa5286, - 0x67409, - 0x12b1c7, - 0x3504, - 0x14a150a, - 0x1540e, - 0x134309, - 0x482ea03, - 0x9e747, - 0x152986, + 0x1b9688, + 0x202202, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x213dc3, + 0x343916, + 0x36c653, + 0x22ffc9, + 0x2575c8, + 0x356f49, + 0x322b46, + 0x356090, + 0x3ed4d3, + 0x300b48, + 0x289647, + 0x293c47, + 0x2b1dca, + 0x36b289, + 0x3d3dc9, + 0x25364b, + 0x34d986, + 0x33218a, + 0x225106, + 0x22f843, + 0x274845, + 0x3c1748, + 0x28dacd, + 0x3c9c4c, + 0x301d07, + 0x31ec4d, + 0x2204c4, + 0x23218a, + 0x232d8a, + 0x23324a, + 0x31f787, + 0x23fec7, + 0x244ac4, + 0x27cf46, + 0x2ff884, + 0x21f608, + 0x2317c9, + 0x30d786, + 0x30d788, + 0x24848d, + 0x2e2609, + 0x31cec8, + 0x212f47, + 0x24a8ca, + 0x2bdd06, + 0x37cfc4, + 0x21dc07, + 0x239cca, + 0x23f70e, + 0x286e45, + 0x29950b, + 0x30f989, + 0x26b289, + 0x20ac07, + 0x20ac0a, + 0x31b187, + 0x2c6649, + 0x3eaa48, + 0x37360b, + 0x2dfa85, + 0x393e4a, + 0x21ddc9, + 0x2fe3ca, + 0x215e8b, + 0x21db0b, + 0x2533d5, + 0x2f6985, + 0x212fc5, + 0x23ab8a, + 0x2722ca, + 0x3107c7, + 0x213003, + 0x2d3808, + 0x2ed6ca, + 0x225946, + 0x25f809, + 0x27e608, + 0x2cf104, + 0x286b09, + 0x296048, + 0x2d8cc7, + 0x2b5586, + 0x37b547, + 0x2ca047, + 0x243b45, + 0x2a174c, + 0x24d405, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x202202, + 0x206643, + 0x2109c3, + 0x21d783, + 0x21f143, + 0x206643, + 0x2109c3, + 0x243503, + 0x21f143, + 0x1e2a03, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x1b9688, + 0x202202, + 0x206643, + 0x22e547, + 0x2b044, + 0x2109c3, + 0x1dadc4, + 0x21f143, + 0x1c1f05, + 0x202202, + 0x201482, + 0x300dc2, + 0x204b02, + 0x206282, + 0x2061c2, + 0x1214a, + 0x12a185, + 0x12a18a, + 0x1528d09, + 0x14910b, + 0x54047, + 0x1b1786, + 0x9d286, + 0x5c4c9, + 0xadfc7, + 0xf8504, + 0x15adf8a, + 0xe44e, + 0x18150c, + 0x1ddc89, + 0x4827103, + 0x95607, + 0x1106, 0xf83, - 0x127dc5, + 0xecf05, 0xc1, - 0x521a043, - 0x226783, - 0x204703, - 0x20f583, - 0x20bc83, - 0x214e43, - 0x2f4006, - 0x214883, - 0x24acc3, - 0x23ae43, - 0x1c3448, + 0x221bc3, + 0x5206643, + 0x2392c4, + 0x21f603, + 0x3d6403, + 0x205503, + 0x211e43, + 0x206543, + 0x2eeac6, + 0x29acc6, + 0x2109c3, + 0x21f143, + 0x2b6006, + 0x236e83, + 0x1b9688, 0x200984, - 0x26b247, - 0x204ec3, - 0x271984, - 0x206f43, - 0x209943, - 0x20f583, - 0xf5d87, - 0x1bfd04, - 0x2d03, - 0x1bee85, + 0x25f0c7, + 0x3d6bc3, + 0x291904, + 0x20aa83, + 0x20ac83, + 0x205503, + 0xf08c7, + 0x1a31c4, + 0x1d45c3, + 0x1a2345, 0x66000c2, - 0xbec3, - 0x6a0b642, - 0x6e99909, - 0x709f509, - 0x9fa0d, - 0x9fd4d, - 0x313002, - 0x5c204, - 0x1beec9, - 0x10210c, + 0x50b03, + 0x6a02202, + 0x6e92849, + 0x70988c9, + 0x98dcd, + 0x9910d, + 0x300dc2, + 0x503c4, + 0x1a2389, + 0xf9d4c, 0x2003c2, - 0x765c108, - 0x10b844, - 0x32b843, - 0x1c3448, - 0x8d304, - 0x1419002, + 0x76502c8, + 0x10a904, + 0x3295c3, + 0x1b9688, + 0x93244, + 0x1412f42, 0x14005c2, - 0x1419002, - 0x151fbc6, - 0x2405c3, - 0x2507c3, - 0x7e1a043, - 0x23e084, - 0x8626783, - 0x8e0f583, - 0x206502, - 0x25c204, - 0x214883, - 0x2100c3, - 0x201802, - 0x24acc3, - 0x225542, - 0x313783, - 0x202fc2, - 0x201683, - 0x224e43, - 0x20d442, - 0x1c3448, - 0x82a2449, - 0x10210c, - 0x29083, - 0x2405c3, - 0x21ff08, - 0x8a100c3, - 0x201802, - 0x313783, - 0x202fc2, - 0x201683, - 0x224e43, - 0x20d442, - 0x3ae507, - 0x313783, - 0x202fc2, - 0x201683, - 0x224e43, - 0x20d442, - 0x21a043, - 0x2742, - 0x13cc3, - 0x1b42, - 0xa842, - 0x1c82, - 0x5942, - 0x3342, - 0x5502, - 0x20bec3, - 0x21a043, - 0x226783, - 0x20f583, - 0x25c204, - 0x20bc83, - 0x214e43, - 0x225a04, - 0x214883, - 0x24acc3, - 0x204d42, - 0x205443, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x1a42, - 0xc503, - 0x7982, - 0x20bec3, - 0x20b642, - 0x21a043, - 0x226783, - 0x20f583, - 0x25c204, - 0x214883, - 0x24acc3, - 0x33a505, - 0x22ccc2, + 0x1412f42, + 0x151e7c6, + 0x233cc3, + 0x276803, + 0x7e06643, + 0x232184, + 0x861f603, + 0x8e05503, + 0x203042, + 0x2503c4, + 0x2109c3, + 0x21bf83, + 0x201582, + 0x21f143, + 0x219142, + 0x310f03, + 0x204842, + 0x2019c3, + 0x21a743, + 0x2059c2, + 0x1b9688, + 0x829b1c9, + 0xf9d4c, + 0x22403, + 0x233cc3, + 0x3f2f08, + 0x8a1bf83, + 0x201582, + 0x310f03, + 0x204842, + 0x2019c3, + 0x21a743, + 0x2059c2, + 0x3a6387, + 0x310f03, + 0x204842, + 0x2019c3, + 0x21a743, + 0x2059c2, + 0x206643, + 0x8a42, + 0xf543, + 0x1342, + 0x4c02, + 0x6d602, + 0x2042, + 0x2642, + 0x13142, + 0x250b03, + 0x206643, + 0x21f603, + 0x205503, + 0x2503c4, + 0x211e43, + 0x206543, + 0x294744, + 0x2109c3, + 0x21f143, + 0x215c82, + 0x219683, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x12482, + 0xab643, + 0x16282, + 0x250b03, + 0x202202, + 0x206643, + 0x21f603, + 0x205503, + 0x2503c4, + 0x2109c3, + 0x21f143, + 0x33d845, + 0x224b42, 0x2000c2, - 0x1c3448, - 0xaf12412, - 0xb2d9f88, - 0x10210c, - 0x1470708, - 0x16b8a, - 0x5985, - 0x53c7, - 0x20f583, - 0x201601, + 0x1b9688, + 0xae2a792, + 0xb3c2588, + 0xf9d4c, + 0x147e248, + 0x16d0a, + 0x2c45, + 0x1d54c7, + 0x205503, + 0x202701, 0x2009c1, - 0x202d01, - 0x201501, + 0x2026c1, + 0x202741, 0x200a41, - 0x22d881, + 0x226181, 0x200a01, - 0x205c41, - 0x24a501, + 0x232041, + 0x202781, 0x200001, 0x2000c1, 0x200201, - 0x14f985, - 0x1c3448, + 0x14cb05, + 0x1b9688, 0x200101, 0x200cc1, 0x200501, @@ -2372,7511 +2374,7524 @@ var nodes = [...]uint32{ 0x200ec1, 0x200581, 0x2003c1, - 0x2015c1, - 0x207a81, + 0x201401, + 0x207141, 0x200401, 0x200741, 0x2007c1, 0x200081, 0x201101, 0x200f81, - 0x202d81, - 0x203481, - 0x2033c1, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x20b642, - 0x21a043, - 0x226783, + 0x208f81, + 0x205381, + 0x201841, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x202202, + 0x206643, + 0x21f603, 0x2003c2, - 0x24acc3, - 0xf5d87, - 0x89207, - 0x38286, - 0x473ca, - 0x9e208, - 0x6bd08, - 0x6c747, - 0xc8b04, - 0x177f46, - 0xfaf05, - 0x1a4045, - 0xb8743, - 0x1b506, - 0x5f986, - 0x265a04, - 0x33e2c7, - 0x1c3448, - 0x2eef84, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0xb642, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x339688, - 0x3496c4, - 0x241004, - 0x211d44, - 0x2dab87, - 0x2f1a07, - 0x21a043, - 0x24354b, - 0x3b43ca, - 0x3a9b07, - 0x3f11c8, - 0x21e908, - 0x226783, - 0x33ba07, - 0x204703, - 0x217b48, - 0x225d89, - 0x25c204, - 0x20bc83, - 0x297b48, - 0x214e43, - 0x2eeb8a, - 0x2f4006, - 0x3b52c7, - 0x214883, - 0x2fe146, - 0x3e4088, - 0x24acc3, - 0x25e906, - 0x30568d, - 0x3070c8, - 0x30be4b, - 0x30f646, - 0x20d847, - 0x223305, - 0x3e890a, - 0x365905, - 0x26ec0a, - 0x22ccc2, + 0x21f143, + 0xf08c7, + 0x82b87, + 0x34106, + 0x3c80a, + 0x97d08, + 0x61f08, + 0x62947, + 0xc1e04, + 0x1ddf06, + 0xf4245, + 0x1cf805, + 0xaec43, + 0x15d46, + 0x54146, + 0x214f04, + 0x33a247, + 0x1b9688, + 0x2e4084, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x2202, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x335e08, + 0x3c7f44, + 0x235fc4, + 0x206204, + 0x2d4047, + 0x2ec587, + 0x206643, + 0x2392cb, + 0x3ab74a, + 0x388787, + 0x315b08, + 0x2afec8, + 0x21f603, + 0x373887, + 0x3d6403, + 0x203a48, + 0x20b289, + 0x2503c4, + 0x211e43, + 0x25ce88, + 0x206543, + 0x2ea58a, + 0x2eeac6, + 0x3ac647, + 0x2109c3, + 0x3becc6, + 0x2bea08, + 0x21f143, + 0x264506, + 0x303bcd, + 0x305608, + 0x30af0b, + 0x3121c6, + 0x33c047, + 0x217fc5, + 0x3dcfca, + 0x233d45, + 0x27538a, + 0x224b42, 0x200f83, - 0x260644, + 0x24cf44, 0x200006, - 0x3c3043, - 0x2b3c83, - 0x2332c3, - 0x23ac83, - 0x3ec3c3, - 0x201902, - 0x3a52c5, - 0x2bfbc9, - 0x204d03, - 0x24da43, - 0x205d83, - 0x20cb03, + 0x3b9283, + 0x2b4c83, + 0x38a7c3, + 0x23c0c3, + 0x3dd203, + 0x201c02, + 0x3a1085, + 0x2b83c9, + 0x215c43, + 0x2441c3, + 0x2028c3, + 0x213743, 0x200201, - 0x2ced07, - 0x2f2345, - 0x3ca803, - 0x262603, - 0x3f2583, - 0x211d44, - 0x33be83, - 0x214188, - 0x377ac3, - 0x31c8cd, - 0x2901c8, - 0x2200c6, - 0x304103, - 0x38bc43, - 0x3af583, - 0xde1a043, - 0x240908, - 0x243544, - 0x24a083, - 0x24e8c3, + 0x2e8e87, + 0x2d9c45, + 0x3c12c3, + 0x266483, + 0x3f1d43, + 0x206204, + 0x2fd643, + 0x2102c8, + 0x372703, + 0x31b70d, + 0x288708, + 0x3f30c6, + 0x2fbec3, + 0x385383, + 0x3a7403, + 0xde06643, + 0x234788, + 0x2392c4, + 0x240c03, + 0x2457c3, 0x200106, - 0x252c48, - 0x242ec3, - 0x220ac3, - 0x2c5383, - 0x224dc3, - 0x3e8943, - 0x21c0c3, - 0x226783, - 0x20ff83, - 0x25aa43, - 0x265883, - 0x2307c3, - 0x340403, - 0x213703, - 0x201d03, - 0x3ac745, - 0x2673c4, - 0x268507, - 0x2698c2, - 0x26a803, - 0x26ee86, - 0x270683, - 0x270a03, - 0x28e3c3, - 0x378803, - 0x221943, - 0x201c83, - 0x2ad347, - 0xea0f583, - 0x240243, - 0x20afc3, - 0x211983, - 0x231a43, - 0x21cb03, - 0x22b2c5, - 0x388583, - 0x24e349, + 0x249248, + 0x2023c3, + 0x21ce03, + 0x2be703, + 0x21a6c3, + 0x3dd003, + 0x20f343, + 0x21f603, + 0x216503, + 0x24e0c3, + 0x2534c3, + 0x228e03, + 0x33e443, + 0x39bac3, + 0x244bc3, + 0x3a5b45, + 0x25c484, + 0x25db07, + 0x2596c2, + 0x260983, + 0x265506, + 0x267a83, + 0x267d83, + 0x286d43, + 0x3de7c3, + 0x219b03, + 0x33b403, + 0x2a4e07, + 0xea05503, + 0x20ffc3, + 0x206a43, + 0x2036c3, + 0x20fc83, + 0x34ffc3, + 0x369d05, + 0x382b83, + 0x24dd09, 0x200c03, - 0x31ac43, - 0xee5b543, - 0x22bd83, - 0x203c83, - 0x219608, - 0x2bfb06, - 0x3785c6, - 0x2ca886, - 0x271607, - 0x2252c3, - 0x2384c3, - 0x214e43, - 0x29e306, - 0x20ffc2, - 0x2f33c3, - 0x344245, - 0x214883, - 0x32ad07, - 0x1608c43, - 0x2a1943, - 0x241a83, - 0x241503, - 0x247043, - 0x24acc3, - 0x366386, - 0x3bfdc6, - 0x389a83, - 0x3407c3, - 0x205443, - 0x21dcc3, - 0x31d4c3, - 0x310483, - 0x314143, - 0x212c85, - 0x2423c3, - 0x2423c6, - 0x21bd03, - 0x3c3688, - 0x236883, - 0x236889, - 0x263988, - 0x224888, - 0x22e2c5, - 0x23c04a, - 0x23d60a, - 0x24174b, - 0x245088, - 0x2ce083, - 0x216ec3, - 0x314183, - 0x2edd03, - 0x315888, - 0x334d83, - 0x3c8704, - 0x205e02, - 0x23fac3, - 0x265603, + 0x319643, + 0xee4f703, + 0x266543, + 0x206243, + 0x211a08, + 0x2b8306, + 0x3de586, + 0x2c3d46, + 0x268d87, + 0x213ac3, + 0x23ddc3, + 0x206543, + 0x297e06, + 0x2066c2, + 0x2eddc3, + 0x3423c5, + 0x2109c3, + 0x328fc7, + 0x161d783, + 0x23d5c3, + 0x236a03, + 0x2364c3, + 0x23c483, + 0x21f143, + 0x23e806, + 0x3a3286, + 0x383183, + 0x3cbd03, + 0x219683, + 0x217cc3, + 0x31c303, + 0x30e243, + 0x3118c3, + 0x3c1f05, + 0x237343, + 0x35ddc6, + 0x20ef83, + 0x3b98c8, + 0x20c4c3, + 0x3b75c9, + 0x20c4c8, + 0x21a188, + 0x21e605, + 0x22f40a, + 0x2302ca, + 0x232acb, + 0x234448, + 0x325383, + 0x217043, + 0x311903, + 0x2f2983, + 0x313948, + 0x336c83, + 0x21f984, + 0x2021c2, + 0x240b83, + 0x260e43, 0x2007c3, - 0x3af603, - 0x283143, - 0x23ae43, - 0x22ccc2, - 0x2233c3, - 0x246143, - 0x31fd43, - 0x321d84, - 0x260644, - 0x2355c3, - 0x1c3448, - 0xe31e00c, - 0xe6ea545, - 0xdefc5, + 0x23d943, + 0x2976c3, + 0x236e83, + 0x224b42, + 0x218083, + 0x23ba43, + 0x31e943, + 0x321744, + 0x24cf44, + 0x224343, + 0x1b9688, + 0xe31d0cc, + 0xe658b05, + 0xde305, 0x2000c2, 0x200b02, - 0x201902, - 0x2029c2, + 0x201c02, + 0x206182, 0x200202, - 0x205202, - 0x244b02, - 0x201b42, + 0x2011c2, + 0x278d02, + 0x201342, 0x200382, - 0x203f02, - 0x215142, - 0x20d3c2, - 0x282182, - 0x207002, - 0x20ea82, - 0x2035c2, - 0x216402, - 0x205442, - 0x24bf42, - 0x209982, + 0x205e42, + 0x2c7f42, + 0x203c42, + 0x27d202, + 0x206702, + 0x2061c2, + 0x2020c2, + 0x201402, + 0x202b02, + 0x245342, + 0x203f42, 0x200682, - 0x217ac2, - 0x201a42, - 0x206382, + 0x2039c2, + 0x212482, + 0x202ec2, 0x201042, - 0x230802, - 0x2019c2, + 0x20e7c2, + 0x20c642, 0xc2, 0xb02, - 0x1902, - 0x29c2, + 0x1c02, + 0x6182, 0x202, - 0x5202, - 0x44b02, - 0x1b42, + 0x11c2, + 0x78d02, + 0x1342, 0x382, - 0x3f02, - 0x15142, - 0xd3c2, - 0x82182, - 0x7002, - 0xea82, - 0x35c2, - 0x16402, - 0x5442, - 0x4bf42, - 0x9982, + 0x5e42, + 0xc7f42, + 0x3c42, + 0x7d202, + 0x6702, + 0x61c2, + 0x20c2, + 0x1402, + 0x2b02, + 0x45342, + 0x3f42, 0x682, - 0x17ac2, - 0x1a42, - 0x6382, + 0x39c2, + 0x12482, + 0x2ec2, 0x1042, - 0x30802, - 0x19c2, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, + 0xe7c2, + 0xc642, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, 0xf82, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0xa0789, - 0xb642, - 0x20b642, - 0x24acc3, - 0x10a1a043, - 0x20f583, - 0x1b1749, - 0x214e43, - 0xf5d07, - 0x2445c2, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x16e83, - 0x214883, - 0x24acc3, - 0x79c2, - 0x2001c2, - 0x1427d45, - 0x14f985, - 0x213c82, - 0x1c3448, - 0xb642, - 0x242882, - 0x206442, - 0x10210c, - 0x20da42, - 0x231a82, - 0x218882, - 0x1a4045, - 0x200dc2, - 0x201802, - 0x217a02, - 0x208e02, - 0x2035c2, - 0x24a242, - 0x214942, - 0x2b60c2, - 0x11a7f604, - 0x142, - 0xf5d87, - 0x15943, - 0x1db18d, - 0xfaf89, - 0xf140b, - 0xfdd48, - 0x73ec9, - 0x11b446, - 0x20f583, - 0x1c3448, - 0x1bfd04, - 0x2d03, - 0x1bee85, - 0x1c3448, - 0x1ec6c7, - 0x12c5ea87, - 0x13269384, - 0x6d446, - 0x1beec9, - 0xbea8e, - 0x10210c, - 0x146087, - 0x15bc683, - 0x13602142, - 0x149f49, - 0x1ed5c4, - 0x2000c2, - 0x265a04, - 0x20b642, - 0x21a043, - 0x203142, - 0x226783, - 0x26dc3, - 0x200382, - 0x2eef84, - 0x20bc83, - 0x2593c2, - 0x214883, - 0x18882, - 0x2003c2, - 0x24acc3, - 0x219086, - 0x33d48f, - 0x733483, - 0x1c3448, - 0x20b642, - 0x204703, - 0x20f583, - 0x214e43, - 0x14bdabc7, - 0x14a7606, - 0x1f3d06, - 0xf2389, - 0x14fcd6c8, - 0x1e6304, - 0x152cab0a, - 0x163988, - 0x15c16a87, - 0xd9f88, - 0xbea88, - 0x15e86cb, - 0x147fb0a, - 0x16070943, - 0x103189, - 0x1650b188, - 0x16b8e487, - 0x1463d4a, - 0x1507c07, - 0xba74b, - 0x16e8a2cc, - 0x16bf05, - 0xdc4c5, - 0x123409, - 0x1dbf44, - 0x11d443, - 0x156cac45, - 0x12ee43, - 0x15a35ac3, - 0x12ee43, - 0x15942, - 0x21c2, - 0xba42, - 0xba42, - 0x3d82, - 0xba42, - 0x3342, - 0x45c2, - 0x101c2, - 0x14f985, - 0xf5d87, - 0x1e6304, - 0x109484, - 0x20b642, - 0x21a043, - 0x20f583, - 0x214883, - 0x2000c2, - 0x209582, - 0x20aa82, - 0x17e1a043, - 0x24a202, - 0x226783, - 0x200bc2, - 0x203942, - 0x20f583, - 0x216e82, - 0x261042, - 0x22fcc2, - 0x20ad02, - 0x2a4fc2, - 0x200802, - 0x204142, - 0x201742, - 0x21dd82, - 0x209bc2, - 0x4484c, - 0x2cd142, - 0x283382, - 0x22b242, - 0x202582, - 0x214e43, - 0x201942, - 0x214883, - 0x20b482, - 0x24fdc2, - 0x24acc3, - 0x24dac2, - 0x206382, - 0x2213c2, - 0x200e02, - 0x22c602, - 0x215982, - 0x209b02, - 0x25c442, - 0x22b282, - 0x33060a, - 0x375dca, - 0x3a8f8a, - 0x3f43c2, - 0x2039c2, - 0x22b982, - 0x182fe909, - 0x187d6f0a, - 0x154be47, - 0x18a00fc2, - 0x1446b83, - 0x2902, - 0x1d6f0a, - 0x16e3ce, - 0x2346c4, - 0x107245, - 0x1921a043, - 0x4b8c3, - 0x226783, - 0x2607c4, - 0x20f583, - 0x25c204, - 0x20bc83, - 0x145e89, - 0x51fc6, - 0x214e43, - 0x100d44, - 0x1443, - 0x214883, - 0x9bf05, - 0x208c43, - 0x24acc3, - 0x1440704, - 0x2423c3, - 0x195547c4, - 0xd2a48, - 0x200f83, - 0x1c3448, - 0x6502, - 0x1527143, - 0x1333c6, - 0x1577ec4, - 0x4c85, - 0x1dbd4a, - 0x138682, - 0x1a00578d, - 0x1bdcc6, - 0x152051, - 0x1a6fe909, - 0x15d4ca, - 0x4d08, - 0x167d48, - 0x152e8e, - 0x89e53, - 0x210a78c7, - 0x1d42, - 0x148210, - 0x152c8c, - 0xfea94, - 0x1b87c7, - 0x24c0e, - 0x14f98b, - 0x1519cb, - 0x1c740a, - 0x133907, - 0x1c3448, - 0xb3d88, - 0xf747, - 0x21422bcb, - 0x23e46, - 0x26647, - 0x3ac2, - 0xef7cd, - 0x13e705, - 0x1d647, - 0x133c4a, - 0x1402cc, - 0x14048f, - 0xae74f, - 0x16e3c2, - 0xb642, - 0x9a148, - 0x21903e8c, - 0x1b204a, - 0x21f656ca, - 0xf638a, - 0x86cca, - 0x8ffc8, - 0x2d785, - 0x728c8, - 0xf6848, - 0x1ec688, - 0x153648, - 0x101c2, - 0xae4cf, - 0x1427dcd, - 0x6d8b, - 0xd5448, - 0x42b87, - 0x5940a, - 0x3e7cb, - 0xa9cc9, - 0x59307, - 0xf8506, - 0x2d688, - 0x3d7cc, - 0x1e9987, - 0x244ca, - 0xa3c8, - 0x11780e, - 0x12078e, - 0x13374b, - 0x16600b, - 0x3828b, - 0x3d309, - 0x4318b, - 0x4864d, - 0x4b94b, - 0x4ca4d, - 0x4cdcd, - 0x5a30a, - 0x6048b, - 0x56a0b, - 0x5a045, - 0x221cd710, - 0x80392, - 0x33011, - 0x176752, - 0x35f8f, - 0x7f7cf, - 0x15118d, - 0x85250, - 0xa842, - 0x22620948, - 0x1e9808, - 0x64f50, - 0x12c88e, - 0x22b77a85, - 0x5e68b, - 0x144f90, - 0xaaecb, - 0x1bc3cc, - 0x729ca, - 0x1661c9, - 0x735c8, - 0x78887, - 0x78bc7, - 0x78d87, - 0x79cc7, - 0x7b747, - 0x7bc07, - 0x7c307, - 0x7c747, - 0x7d207, - 0x7d587, - 0x7da47, - 0x7dc07, - 0x7ddc7, - 0x7df87, - 0x7e307, - 0x7e687, - 0x7ff87, - 0x80807, - 0x812c7, - 0x81587, - 0x81747, - 0x81a47, - 0x82047, - 0x82247, - 0x82bc7, - 0x82d87, - 0x82f47, - 0x83207, - 0x83847, - 0x83fc7, - 0x86b07, - 0x86f47, - 0x87747, - 0x87907, - 0x87f47, - 0x882c7, - 0x88c87, - 0x89087, - 0x893c7, - 0x89587, - 0x899c7, - 0x8a5c7, - 0x8b707, - 0x8bcc7, - 0x8be87, - 0x8c307, - 0x8cc47, - 0xef42, - 0xf694a, - 0x1b308, - 0x1c41cc, - 0x124c87, - 0x58f85, - 0x61591, - 0x7286, - 0x137bca, - 0x99fca, - 0x6d446, - 0x3f78b, - 0x642, - 0x3c691, - 0x131809, - 0xab8c9, - 0xace06, - 0x1742, - 0x70d0a, - 0xbf0c9, - 0xbf80f, - 0xbfe0e, - 0xc1bc8, - 0x22f53092, - 0x18208, - 0x232737c7, - 0xc468f, - 0x7142, - 0x178409, - 0x10044a, - 0x2361a389, - 0xdaec9, - 0xdaecc, - 0x19a4b, - 0x5824e, - 0x11c0c, - 0x102e8f, - 0x1c980e, - 0x50fcc, - 0x64d49, - 0x71a11, - 0x88448, - 0x92f12, - 0x94d8d, - 0x993cd, - 0x9ee4b, - 0x167f15, - 0x191549, - 0x1b6d0a, - 0x1df109, - 0xa27d0, - 0xa914b, - 0xb1c8f, - 0xb928b, - 0xc710c, - 0xc77d0, - 0xdfdca, - 0xf884d, - 0x12b38e, - 0x19f6ca, - 0xc8bcc, - 0xcf7d4, - 0x131491, - 0x1c470b, - 0xd82cf, - 0xd930d, - 0xda3ce, - 0xddf0c, - 0xde64c, - 0xdfacb, - 0xe1c0e, - 0xe4490, - 0xe534b, - 0xf740d, - 0x10fd8f, - 0x10eacc, - 0x11704e, - 0x185451, - 0x12ae8c, - 0x169d07, - 0x16bb8d, - 0x17600c, - 0x180f50, - 0x19b74d, - 0x19c3c7, - 0x1a5c90, - 0x1b3048, - 0xc814b, - 0xca18f, - 0x1c4448, - 0x57b8d, - 0x119c50, - 0x182fc9, - 0x23bcd6c8, - 0x23ece206, - 0xcf503, - 0x1ade89, - 0xade49, - 0xd4345, - 0xaf02, - 0x59889, - 0x6de0a, - 0x242933c6, - 0x14933cd, - 0x24706444, - 0x1e4986, - 0x28b4a, - 0x2af0d, - 0x24ae5b8b, - 0x1e9e08, - 0x24c65589, - 0x24343, - 0x17c7ca, - 0xf53d1, - 0xf5809, - 0xf6307, - 0xf7148, - 0xf8b87, - 0x736c8, - 0xae5cb, - 0x13b509, - 0x101590, - 0x101a4c, - 0x101ec9, - 0x10210c, - 0x2530250d, - 0x1037c8, - 0x103cc5, - 0x1d0fc8, - 0x1a4f4a, - 0x1b8ec7, - 0x25c2, - 0x25679555, - 0x145c8a, - 0x13e549, - 0x1ef4c8, - 0xae009, - 0x9605, - 0x12ab8a, - 0x1a07, - 0xa050f, - 0x16bf8b, - 0x1ec90c, - 0x30712, - 0xc0906, - 0x1580588, - 0x8e5c5, - 0x11d688, - 0x1e4acb, - 0xe6ad1, - 0x179d47, - 0x6e40a, - 0x18784c, - 0x25b0b045, - 0x1b72cc, - 0x25d129ce, - 0x142743, - 0x19ec86, - 0x4a242, - 0x11468b, - 0x11564a, - 0x151640c, - 0x1e9d08, - 0x4cc08, - 0x263ef546, - 0x17ef87, - 0x23f8e, - 0x1534c7, - 0x3b02, - 0x2fc2, - 0x188850, - 0x77e47, - 0x77f4f, - 0x1b506, - 0xa8b4e, - 0xb424b, - 0x5e0c8, - 0xaa089, - 0x150652, - 0x11dccd, - 0x11e848, - 0xf12c9, - 0x1a718d, - 0xe889, - 0x782cb, - 0x7ae88, - 0x7e488, - 0x80f88, - 0x81bc9, - 0x81dca, - 0x8254c, - 0x2398a, - 0xe094a, - 0x11d507, - 0x43a8a, - 0xf90c8, - 0x1d3e0d, - 0x62ad1, - 0x266da6c6, - 0x16d20b, - 0x3b48c, - 0xff48, - 0x1dc8c9, - 0x16548d, - 0x79f10, - 0x150dcc, - 0x15450d, - 0x10384f, - 0xba42, - 0x1df30d, - 0x3342, - 0x96c2, - 0x11d44a, - 0x26bd0d0a, - 0x32e4a, - 0x26e8bfc8, - 0x137aca, - 0x12460b, - 0x126c47, - 0x1b41cc, - 0x120a0c, - 0x12940a, - 0x2712968f, - 0x129a4c, - 0x129d47, - 0x12b70e, - 0x275f4285, - 0x1eab88, - 0x79c2, - 0x1424dc3, - 0x1aa0494e, - 0x1b2029ce, - 0x1bb2658a, - 0x1c33718e, - 0x1ca082ce, - 0x1d353c8c, - 0x154be47, - 0x155d589, - 0x1446b83, - 0x1db5ce8c, - 0x1e20a849, - 0x1ebd7e09, - 0x1f3dbb49, - 0x2902, - 0x4891, - 0x2911, - 0x1264cd, - 0x1370d1, - 0x1d4fd1, - 0x153bcf, - 0x15cdcf, - 0x1cc20c, - 0x1d7d4c, - 0x1dba8c, - 0xec7cd, - 0xfd515, - 0x13c14c, - 0x13e80c, - 0x179ed0, - 0x1c5acc, - 0x1c8a8c, - 0x1d17d9, - 0x1d9759, - 0x8019, - 0xa594, - 0xf8d4, - 0x107d4, - 0x10d54, - 0x1a994, - 0x1fa0fb89, - 0x20010a89, - 0x20b3e8c9, - 0x1ae88649, - 0x2902, - 0x1b688649, - 0x2902, - 0x800a, - 0x2902, - 0x1be88649, - 0x2902, - 0x800a, - 0x2902, - 0x1c688649, - 0x2902, - 0x1ce88649, - 0x2902, - 0x1d688649, - 0x2902, - 0x800a, - 0x2902, - 0x1de88649, - 0x2902, - 0x800a, - 0x2902, - 0x1e688649, - 0x2902, - 0x1ee88649, - 0x2902, - 0x800a, - 0x2902, - 0x1f688649, - 0x2902, - 0x800a, - 0x2902, - 0x1fe88649, - 0x2902, - 0x20688649, - 0x2902, - 0x20e88649, - 0x2902, - 0x800a, - 0x2902, - 0x1400401, - 0x152045, - 0x1c7404, - 0x1412f43, - 0x15f2603, - 0x141d983, - 0x94ec4, - 0x13b848, - 0x494e, - 0x29ce, - 0x9280e, - 0x12658a, - 0x13718e, - 0x82ce, - 0x153c8c, - 0x15ce8c, - 0xa849, - 0x1d7e09, - 0x1dbb49, - 0xfb89, - 0x10a89, - 0x13e8c9, - 0xfd70d, - 0x11009, - 0x1ac49, - 0x150a84, - 0x1720c4, - 0x199884, - 0x1cacc4, - 0xbaa04, - 0x1b9944, - 0x1e6a84, - 0x69004, - 0x1b404, - 0x642c4, - 0x334c9, - 0x334cc, - 0x159186, - 0x15918e, - 0x94ec4, - 0x159bf43, - 0x7e87, - 0x149440c, - 0x4d03, - 0x642c4, - 0xa842, - 0x51887, - 0x103e88, - 0x191dc8, - 0x4fd44, - 0x1cb8c6, - 0x54d47, - 0xe8b44, - 0x11c0c6, - 0x216c2, - 0x2d81, - 0x1d3a44, - 0x89cc6, - 0x22603, - 0xa842, - 0x4d03, - 0xe0143, - 0x30503, - 0x14743, - 0x117783, - 0x30705, - 0x83382, - 0x151682, - 0x1bf708, - 0xfa807, - 0x15743, - 0x13b587, - 0x101c2, - 0xf2389, - 0x2000c2, - 0x20b642, - 0x203142, - 0x21b5c2, - 0x200382, - 0x2003c2, - 0x202fc2, - 0x21a043, - 0x226783, - 0x20f583, - 0x231a43, - 0x214883, - 0x24acc3, - 0x1c3448, - 0x21a043, - 0x226783, - 0x214883, - 0x24acc3, - 0x13b83, - 0x20f583, - 0x5c204, - 0x2000c2, - 0x20bec3, - 0x29a1a043, - 0x3acb47, - 0x20f583, - 0x222043, - 0x225a04, - 0x214883, - 0x24acc3, - 0x228d8a, - 0x219085, - 0x205443, - 0x249902, - 0x1c3448, - 0x29eea54a, - 0xc01, - 0x1c3448, - 0xb642, - 0x140242, - 0x2a66530b, - 0x2aa1c1c4, - 0x106385, - 0x1405985, - 0x103e86, - 0x2ae05985, - 0x6a043, - 0xa7343, - 0x1bfd04, - 0x2d03, - 0x1bee85, - 0x14f985, - 0x1c3448, - 0x26647, - 0x1a043, - 0x38d4d, - 0x2b647207, - 0xcc6, - 0x2b953ac5, - 0x1b7892, - 0xd87, - 0x2f38a, - 0x2cf48, - 0x2f287, - 0x170aca, - 0x1becc8, - 0x7ac47, - 0x15ef8f, - 0x574c7, - 0x68e06, - 0x144f90, - 0x148e0c6, - 0x5058f, - 0x1bc09, - 0x1e4a04, - 0x2bc00e4e, - 0x51bc9, - 0x7e0c6, - 0xeb09, - 0x119186, - 0x9dc6, - 0xc3acc, - 0x3e9ca, - 0xa9e47, - 0x115f4a, - 0x1249, - 0x10514c, - 0x2b74a, - 0x5b00a, - 0x1beec9, - 0x1e4986, - 0xa9f0a, - 0x11edca, - 0xb6b4a, - 0x16f909, - 0xf4dc8, - 0xf5046, - 0xfb54d, - 0x10210c, - 0x6700b, - 0xd4905, - 0x2c38a7cc, - 0x146087, - 0x1e3989, - 0xdea07, - 0xbe494, - 0x11a04b, - 0xd528a, - 0x1504ca, - 0xbc64d, - 0x1524809, - 0x11da8c, - 0x11e64b, - 0x16a157, - 0x16ac95, - 0x3983, - 0x3983, - 0x38286, - 0x3983, - 0x103e88, - 0x15ee43, - 0x53544, - 0x1f184, - 0x1f18c, - 0x6a303, - 0x14b6c07, - 0xf79cd, - 0xaa045, - 0x151e183, - 0x1536ac8, - 0x67409, - 0x1b1749, - 0x30705, - 0x1e4acb, - 0x1c49cb, - 0x150ed43, - 0x150ed48, - 0x152986, - 0x145a4c7, - 0xa2a47, - 0x2d0a7789, - 0x14746, - 0xbec3, - 0x1c3448, - 0xb642, - 0x607c4, - 0x10210c, - 0x31d03, - 0x13a505, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x205d83, - 0x21a043, - 0x226783, - 0x204703, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x319283, - 0x200f83, - 0x205d83, - 0x265a04, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x211b43, - 0x212f03, - 0x249902, - 0x2e8a7885, - 0x1437143, - 0x21a043, - 0x226783, - 0x226dc3, - 0x204703, - 0x20f583, - 0x25c204, - 0x20de83, - 0x2384c3, - 0x214e43, - 0x214883, - 0x24acc3, - 0x205443, - 0x2f629e03, - 0x30609, - 0xb642, - 0x3f3903, - 0x3021a043, - 0x226783, - 0x259f43, - 0x20f583, - 0x224b03, - 0x2384c3, - 0x24acc3, - 0x205fc3, - 0x3c80c4, - 0x1c3448, - 0x30a1a043, - 0x226783, - 0x2c1c83, - 0x20f583, - 0x214e43, - 0x225a04, - 0x214883, - 0x24acc3, - 0x227603, - 0x1c3448, - 0x3121a043, - 0x226783, - 0x204703, - 0x10210c, - 0x208c43, - 0x24acc3, - 0x1c3448, - 0x154be47, - 0x20bec3, - 0x21a043, - 0x226783, - 0x20f583, - 0x25c204, - 0x225a04, - 0x214883, - 0x24acc3, - 0x14f985, - 0xf5d87, - 0xbe6cb, - 0x32241546, - 0xf5c04, - 0xd4905, - 0x1470708, - 0x2facd, - 0x1cd6c8, - 0x32a407c5, - 0x2af84, - 0xb642, - 0x18b43, - 0x159085, - 0x445c2, - 0x35cc45, - 0x1c3448, - 0x343341cd, - 0x3460510a, - 0x3982, - 0x20883, - 0x10210c, - 0x17290f, - 0x1b5c2, - 0x94ec4, - 0x642c4, - 0xb642, - 0x2000c2, - 0x20bec3, - 0x21a043, - 0x20f583, - 0x25c204, - 0x214e43, - 0x225a04, - 0x214883, - 0x24acc3, - 0x205443, - 0x21a043, - 0x226783, - 0x214883, - 0x24acc3, - 0x12c85, - 0x339e48, - 0x265a04, - 0x3d4506, - 0x3d7c06, - 0x1c3448, - 0x320543, - 0x23ab49, - 0x318455, - 0x11845f, - 0x21a043, - 0x9ebc7, - 0x221b92, - 0x18dc86, - 0x190485, - 0x729ca, - 0x1661c9, - 0x22194f, - 0xf5207, - 0x2eef84, - 0x225105, - 0x31aa10, - 0x284ac7, - 0x10210c, - 0x208c43, - 0x2a1948, - 0x64146, - 0x2937ca, - 0x2311c4, - 0x30ad83, - 0x249902, - 0x30614b, - 0x1c3203, - 0x226783, - 0x20f583, - 0x197184, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x310783, - 0x20b642, - 0x3cc83, - 0x100b04, - 0x214883, - 0x24acc3, - 0x36846ac5, - 0x1dc686, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x24acc3, - 0x21a043, - 0x226783, - 0x20f583, - 0x222043, - 0x222383, - 0x24acc3, - 0xbec3, - 0x20b642, - 0x21a043, - 0x226783, - 0x214883, - 0x24acc3, - 0x26c02, - 0x2000c2, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x5985, - 0x6a0c9, - 0x4d03, - 0x265a04, - 0x21a043, - 0x226783, - 0x230944, - 0x214883, - 0x24acc3, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x13bf09, - 0x11d44, - 0x21a043, - 0x101c2, - 0x226783, - 0x204703, - 0x211983, - 0x214e43, - 0x214883, - 0x24acc3, - 0x19c2, - 0x21a043, - 0x226783, - 0x20f583, - 0x3b9544, - 0x25c204, - 0x214883, - 0x24acc3, - 0x200f83, - 0x2742, - 0x20b642, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x161243, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x37ee83, - 0xf2c3, - 0x22043, - 0x214883, - 0x24acc3, - 0x3a086, - 0x33060a, - 0x34e149, - 0x369a8b, - 0x369eca, - 0x375dca, - 0x386bcb, - 0x39b20a, - 0x3a280a, - 0x3a8f8a, - 0x3a920b, - 0x3ce989, - 0x3de04a, - 0x3de88b, - 0x3ede8b, - 0x3f2fca, - 0x6282, - 0x21a043, - 0x226783, - 0x204703, - 0x214e43, - 0x214883, - 0x24acc3, - 0x610b, - 0x12c887, - 0x73b48, - 0x1a72c4, - 0x1e6304, - 0xa2388, - 0xf9b06, - 0xae706, - 0x23b87, - 0x12a947, - 0x3589, - 0x1c3448, - 0x21a043, - 0x727c4, - 0x278884, - 0x204e42, - 0x225a04, - 0x252f05, - 0x205d83, - 0x265a04, - 0x21a043, - 0x243544, - 0x226783, - 0x2607c4, - 0x2eef84, - 0x25c204, - 0x2384c3, - 0x214883, - 0x24acc3, - 0x2cf905, - 0x211b43, - 0x205443, - 0x236d03, - 0x223984, - 0x333344, - 0x246c85, - 0x1c3448, - 0x3ebc44, - 0x209f46, - 0x3bf004, - 0x20b642, - 0x230b07, - 0x256387, - 0x25d444, - 0x2fa885, - 0x39b945, - 0x239805, - 0x25c204, - 0x2716c8, - 0x2680c6, - 0x32f248, - 0x2f8245, - 0x2fc3c5, - 0x27a004, - 0x24acc3, - 0x30b844, - 0x385bc6, - 0x219183, - 0x223984, - 0x26ed05, - 0x259804, - 0x2b7944, - 0x249902, - 0x3a1ec6, - 0x3c1786, - 0x31be45, - 0x2000c2, - 0x20bec3, - 0xf9c86, - 0x3be0b642, - 0x220ac4, - 0x1981c4, - 0x6f005, - 0x200382, - 0x214e43, - 0x2736c2, - 0x214883, - 0x2003c2, - 0x308746, - 0x219303, - 0x1e4905, - 0x200f83, - 0x1c3448, - 0x1c3448, - 0x20f583, - 0x10210c, - 0x2000c2, - 0x3ca0b642, - 0x20f583, - 0x27dd43, - 0x20de83, - 0x21c1c4, - 0x214883, - 0x24acc3, - 0x1c3448, - 0xc0847, - 0x2000c2, - 0x3d20b642, - 0x21a043, - 0x214883, - 0x24acc3, - 0x682, - 0x20ea02, - 0x22ccc2, - 0x222043, - 0x305103, - 0x2000c2, - 0x14f985, - 0x1c3448, - 0xf5d87, - 0x20b642, - 0x226783, - 0x2607c4, - 0x207783, - 0x20f583, - 0x211983, - 0x214e43, - 0x214883, - 0x21c243, - 0x24acc3, - 0x2190c3, - 0xd2a48, - 0xf83, - 0x147593, - 0x14b954, - 0x14f985, - 0xf5d87, - 0x2f389, - 0x11c806, - 0x16f34b, - 0x38286, - 0x6bb47, - 0x1bc006, - 0x649, - 0x16278a, - 0x9e0cd, - 0x1dae8c, - 0x11f74a, - 0xab348, - 0x1a4045, - 0x2f3c8, - 0x1b506, - 0x1d9206, - 0x5f986, - 0x20a842, - 0x178884, - 0xe0146, - 0x14e754e, - 0x5086, - 0x7a60c, - 0x3e6a760b, - 0x14f985, - 0x15278b, - 0x3eb67b87, - 0x3ef67b8a, - 0x3f3d9144, - 0x88c9, - 0xfdc8, - 0x1c75c7, - 0x2de11, - 0x130dca, - 0x21a043, - 0x3f694308, - 0x170a45, - 0x1a0e88, - 0x36604, - 0x6e005, - 0xb8647, - 0x3f9d6d46, - 0xe044b, - 0x3ffc7cc9, - 0x181c5, - 0x61586, - 0x168e86, - 0xa528a, - 0xd184c, - 0x1ca843, - 0x1e6304, - 0x403d2484, - 0x67409, - 0x113107, - 0x10070a, - 0x14ea449, - 0x605, - 0x120703, - 0x406420c7, - 0x9bf05, - 0x1573546, - 0x14638c6, - 0x3f84c, - 0x10d308, - 0x40930fc5, - 0x40c4a243, - 0x113844, - 0x1d78b, - 0x14b0cb, - 0x4125ac0c, - 0x142d843, - 0xd61c8, - 0x1c49cb, - 0xb8509, - 0xd5603, - 0x124908, - 0x1428a86, - 0x9e747, - 0x41765489, - 0x42af0c48, - 0xbaf47, - 0xdc4ca, - 0x42f6a688, - 0x11e30d, - 0x1cc989, - 0x112c8, - 0x4d03, - 0x1486089, - 0x642c4, - 0x187d45, - 0x47143, - 0x38286, - 0x103e88, - 0x6502, - 0x1b404, - 0xaa345, - 0x1addc4, - 0x1437dc3, - 0x24dc7, - 0x41a24dc3, - 0x41fb8246, - 0x42244e04, - 0x42601b07, - 0x103e84, - 0x17ef87, - 0x103e84, - 0x17ef87, - 0x103e84, - 0x103e84, - 0x17ef87, - 0x5989, - 0x41, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x2000c2, - 0x20b642, - 0x20f583, - 0x206502, - 0x214883, - 0x24acc3, - 0x219303, - 0x38ef8f, - 0x38f34e, - 0x1c3448, - 0x21a043, - 0x52a87, - 0x226783, - 0x20f583, - 0x20bc83, - 0x214883, - 0x24acc3, - 0x4fc4, - 0x2e44, - 0xa04, - 0x203a83, - 0x203a87, - 0x203f42, - 0x27ee89, - 0x200b02, - 0x388b4b, - 0x2b154a, - 0x2b7d09, - 0x200542, - 0x2369c6, - 0x25ed95, - 0x388c95, - 0x261ad3, - 0x389213, - 0x204302, - 0x22bb45, - 0x3ea8cc, - 0x287c8b, - 0x269e45, - 0x2029c2, - 0x314102, - 0x377546, - 0x201d42, - 0x29ca06, - 0x36640d, - 0x3a3dcc, - 0x3cd784, - 0x200882, - 0x214202, - 0x2932c8, - 0x200202, - 0x202f06, - 0x3a480f, - 0x202f10, - 0x2ff204, - 0x25ef55, - 0x261c53, - 0x217143, - 0x35c78a, - 0x392b47, - 0x398a89, - 0x315cc7, - 0x21da82, - 0x200282, - 0x3d2386, - 0x20b102, - 0x1c3448, - 0x211f02, - 0x202642, - 0x2121c7, - 0x398e07, - 0x398e11, - 0x225505, - 0x22550e, - 0x225fcf, - 0x203ac2, - 0x227547, - 0x227708, - 0x201002, - 0x229b02, - 0x2143c6, - 0x2143cf, - 0x27b1d0, - 0x236f02, - 0x203d82, - 0x230c48, - 0x203d83, - 0x29b148, - 0x247d4d, - 0x2063c3, - 0x3d7a48, - 0x26c00f, - 0x26c3ce, - 0x35018a, - 0x2f4111, - 0x2f4590, - 0x3b0b8d, - 0x3b0ecc, - 0x3f3787, - 0x35c907, - 0x3d45c9, - 0x216f42, - 0x205202, - 0x26d8cc, - 0x26dbcb, - 0x2045c2, - 0x2dfc86, - 0x212f82, - 0x200482, - 0x36e3c2, - 0x20b642, - 0x239244, - 0x246887, - 0x203682, - 0x24d507, - 0x24f347, - 0x215942, - 0x218402, - 0x252945, - 0x203402, - 0x2d0bce, - 0x215b8d, - 0x226783, - 0x25880e, - 0x231e8d, - 0x34cc83, - 0x2017c2, - 0x2990c4, - 0x211542, - 0x22e042, - 0x3add05, - 0x3b3c47, - 0x257682, - 0x21b5c2, - 0x25f487, - 0x267788, - 0x2698c2, - 0x28e646, - 0x26d74c, - 0x26da8b, - 0x205b02, - 0x274b0f, - 0x274ed0, - 0x2752cf, - 0x275695, - 0x275bd4, - 0x2760ce, - 0x27644e, - 0x2767cf, - 0x276b8e, - 0x276f14, - 0x277413, - 0x2778cd, - 0x28ce09, - 0x2a0083, - 0x206582, - 0x364805, - 0x207786, - 0x200382, - 0x2e4f47, - 0x20f583, - 0x200642, - 0x38bcc8, - 0x2f4351, - 0x2f4790, - 0x204182, - 0x29f347, - 0x2040c2, - 0x271107, - 0x20af02, - 0x254e89, - 0x377507, - 0x29f808, - 0x3d6b86, - 0x305003, - 0x39e645, - 0x20b602, - 0x2004c2, - 0x34cb85, - 0x370845, - 0x209a42, - 0x237743, - 0x352b07, - 0x3d9487, - 0x203c82, - 0x39ac04, - 0x20a243, - 0x3f3b89, - 0x20a248, - 0x212a82, - 0x20fe02, - 0x22e807, - 0x3584c5, - 0x285788, - 0x286547, - 0x20ddc3, - 0x2dffc6, - 0x3b0a0d, - 0x3b0d8c, - 0x3a1086, - 0x206442, - 0x205942, - 0x200ec2, - 0x26be8f, - 0x26c28e, - 0x39b9c7, - 0x2024c2, - 0x214e45, - 0x214e46, - 0x22ab02, - 0x201942, - 0x2a0d06, - 0x24fb03, - 0x3d1206, - 0x2e8b05, - 0x2e8b0d, - 0x2e9095, - 0x2e990c, - 0x2e9c8d, - 0x2e9fd2, - 0x20d3c2, - 0x282182, - 0x10210c, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x99b49, + 0x2202, 0x202202, - 0x379cc6, - 0x211ac6, - 0x4429eb44, - 0x2025c2, - 0x207806, - 0x217a02, - 0x254405, - 0x203cc2, - 0x215c89, - 0x2161cc, - 0x21650b, - 0x2003c2, - 0x268908, - 0x201982, - 0x207002, - 0x287a46, - 0x2885c5, - 0x394447, - 0x358845, - 0x27a8c5, - 0x204d82, - 0x22f482, - 0x2035c2, - 0x2b1f87, - 0x30880d, - 0x308b8c, - 0x2517c7, - 0x28e5c2, - 0x216402, - 0x379688, - 0x259a08, - 0x327448, - 0x3c4404, - 0x2e1e87, - 0x3064c3, - 0x209ec2, - 0x211b42, - 0x309589, - 0x317c07, - 0x205442, - 0x288085, - 0x221e42, - 0x223c42, - 0x30f203, - 0x30f206, - 0x310482, - 0x313702, - 0x200402, - 0x234586, - 0x357f07, - 0x21d602, - 0x200902, - 0x29af8f, - 0x25864d, - 0x2db38e, - 0x231d0c, - 0x20c802, - 0x2026c2, - 0x3d69c5, - 0x32eb06, - 0x201d82, - 0x209982, - 0x200682, - 0x232004, - 0x354204, - 0x360a46, - 0x202fc2, - 0x29bdc7, - 0x234683, - 0x249088, - 0x249a48, - 0x250e47, - 0x38e646, - 0x201a82, - 0x232603, - 0x232607, - 0x2875c6, - 0x2d6385, - 0x257ec8, - 0x2075c2, - 0x2fc8c7, - 0x230802, - 0x2a7382, - 0x206342, - 0x2030c9, - 0x209202, - 0x111908, - 0x201682, - 0x2b0b43, - 0x336e87, - 0x201b02, - 0x21634c, - 0x21664b, - 0x3a1106, - 0x30f905, - 0x4462b803, - 0x2021c2, - 0x2019c2, - 0x2d7cc6, - 0x234b83, - 0x3b92c7, - 0x20ea42, - 0x2008c2, - 0x25ec15, - 0x388e55, - 0x261993, - 0x389393, - 0x279a47, - 0x28b891, - 0x295090, - 0x29a312, - 0x29d851, - 0x2a1cc8, - 0x2a1cd0, - 0x2a5d0f, - 0x2b1313, - 0x2b7ad2, - 0x2c3490, - 0x376b8f, - 0x39c552, - 0x2c83d1, - 0x2cb893, - 0x2ce352, - 0x2e874f, - 0x2eb08e, - 0x2efed2, - 0x2f2f91, - 0x2f384f, - 0x2f6dce, - 0x2f96d1, - 0x2fbd50, - 0x3047d2, - 0x307e91, - 0x30ca90, - 0x30d4cf, - 0x310811, - 0x314290, - 0x314d46, - 0x327a47, - 0x2284c7, - 0x2027c2, - 0x296485, - 0x3e0bc7, - 0x22ccc2, - 0x205a42, - 0x3d0f05, - 0x20c703, - 0x378306, - 0x3089cd, - 0x308d0c, - 0x207882, - 0x3ea74b, - 0x287b4a, - 0x28a70a, - 0x22ba49, - 0x2d6e8b, - 0x30798d, - 0x28668c, - 0x31ae8a, - 0x25018c, - 0x25360b, - 0x269c8c, - 0x28414e, - 0x28c48b, - 0x2acb0c, - 0x2ccf43, - 0x37ef06, - 0x36a682, - 0x227e42, - 0x26fd83, - 0x201102, - 0x220983, - 0x2da0c6, - 0x275847, - 0x2dd0c6, - 0x3b2208, - 0x352988, - 0x32cb46, - 0x20b382, - 0x31b80d, - 0x31bb4c, - 0x34b287, - 0x31f587, - 0x226402, - 0x2216c2, - 0x209142, - 0x292602, - 0x33f716, - 0x344395, - 0x347056, - 0x34d093, - 0x34d752, - 0x35e9d3, - 0x35f512, - 0x3c048f, - 0x3cfb98, - 0x3d1e17, - 0x3d5419, - 0x3d7198, - 0x3d8058, - 0x3d8bd7, - 0x3d9d97, - 0x3dc056, - 0x3e0713, - 0x3e0d95, - 0x3e17d2, - 0x3e1c53, - 0x16f02, - 0x44a03584, - 0x44fcd6c8, - 0x5985, - 0x20b642, - 0x214883, - 0x445c2, - 0x24acc3, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x225a04, - 0x214883, - 0x24acc3, - 0x219303, + 0x21f143, + 0x10a06643, + 0x205503, + 0xdfa89, + 0x206543, + 0xf0847, + 0x2232c2, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x17003, + 0x2109c3, + 0x21f143, + 0x3642, + 0x2001c2, + 0x1421805, + 0x14cb05, + 0x2886c2, + 0x1b9688, + 0x2202, + 0x237e02, + 0x202f82, + 0xf9d4c, + 0x2104c2, + 0x20fcc2, + 0x212282, + 0x1cf805, + 0x200dc2, + 0x201582, + 0x203902, + 0x201542, + 0x2020c2, + 0x2413c2, + 0x210a82, + 0x242402, + 0x11a7a6c4, + 0x142, + 0xf08c7, + 0x42983, + 0xdc40d, + 0xf42c9, + 0x1280b, + 0xf8108, + 0x66fc9, + 0x122ece45, + 0x119e46, + 0x137d09, + 0x205503, + 0x1b9688, + 0x1a31c4, + 0x1d45c3, + 0x1a2345, + 0x1b9688, + 0x1dd507, + 0x13053907, + 0x1365f684, + 0x63646, + 0x1a2389, + 0xb728e, + 0xf9d4c, + 0x144207, + 0x15b5c83, + 0x13a01ac2, + 0x147849, + 0x1d5004, 0x2000c2, - 0x204502, - 0x45ea6b05, - 0x462a6305, - 0x46653946, - 0x1c3448, - 0x46ace985, - 0x20b642, - 0x203142, - 0x46f25e05, - 0x47294c85, - 0x47695b87, - 0x47af7ec9, - 0x47fbb404, + 0x214f04, + 0x202202, + 0x206643, + 0x201482, + 0x21f603, + 0xfd03, + 0x200382, + 0x2e4084, + 0x211e43, + 0x24e442, + 0x2109c3, + 0x12282, + 0x2003c2, + 0x21f143, + 0x212fc6, + 0x33940f, + 0x7de983, + 0x1b9688, + 0x202202, + 0x3d6403, + 0x205503, + 0x206543, + 0x14fd3587, + 0x1572a46, + 0x1ee286, + 0xd9c89, + 0x153c7448, + 0x1e8684, + 0x156c3fca, + 0x7d848, + 0x16016c07, + 0x1c2588, + 0xb7288, + 0x15dcd8b, + 0x147abca, + 0x16467cc3, + 0xfac49, + 0x1690a248, + 0x16e38a47, + 0x14eb44a, + 0x1506147, + 0xb1e8b, + 0x1729e38c, + 0x164685, + 0xe0405, + 0x1231c9, + 0x1029c4, + 0x11c283, + 0x15ac4105, + 0x12c843, + 0x15e2c1c3, + 0x12c843, + 0x42982, + 0x1b42, + 0x5fc2, + 0x5fc2, + 0x1782, + 0x5fc2, + 0x2642, + 0x3402, + 0x23c2, + 0x14cb05, + 0xf08c7, + 0x1e8684, + 0x107e04, + 0x202202, + 0x206643, + 0x205503, + 0x2109c3, + 0x2000c2, + 0x2087c2, + 0x205a42, + 0x18206643, + 0x241382, + 0x21f603, + 0x200bc2, + 0x234382, + 0x205503, + 0x2062c2, + 0x2697c2, + 0x2208c2, + 0x207002, + 0x29cfc2, + 0x200802, + 0x203582, + 0x217382, + 0x20bd82, + 0x20af02, + 0x1610cc, + 0x2c7002, + 0x27e5c2, + 0x230a02, + 0x201f02, + 0x206543, + 0x201502, + 0x2109c3, + 0x239e02, + 0x246102, + 0x21f143, + 0x244242, + 0x202ec2, + 0x206ec2, + 0x200e02, + 0x203d02, + 0x2429c2, + 0x20ae42, + 0x250602, + 0x230a42, + 0x32e0ca, + 0x36fb0a, + 0x3a1a4a, + 0x3f4442, + 0x205382, + 0x369cc2, + 0x186fc749, + 0x18b547ca, + 0x1549207, + 0x18e00fc2, + 0x143bfc3, + 0x4942, + 0x1547ca, + 0x1685ce, + 0x204884, + 0x105785, + 0x19606643, + 0x42dc3, + 0x21f603, + 0x2554c4, + 0x205503, + 0x2503c4, + 0x211e43, + 0x144009, + 0x1d4086, + 0x206543, + 0xf8984, + 0x146ec3, + 0x2109c3, + 0x1f45, + 0x21d783, + 0x21f143, + 0x1445a04, + 0x237343, + 0x1994e6c4, + 0xcbd48, + 0x200f83, + 0x1b9688, + 0x3042, + 0x1533a43, + 0x1de8c6, + 0x15dde84, + 0x1d6985, + 0x1027ca, + 0x134f82, + 0x1a5dec0d, + 0x1b32c6, + 0x6f51, + 0x1aafc749, + 0x159c8a, + 0x1d6a08, + 0x8c1c8, + 0x145cce, + 0x54b13, + 0x21572d07, + 0x28c2, + 0x13a810, + 0x145acc, + 0xfc8d4, + 0xb0407, + 0x1a50e, + 0x14cb0b, + 0x14eecb, + 0x1bd04a, + 0x342c7, + 0x1b9688, + 0xb4d88, + 0x8ec7, + 0x2181ae0b, + 0x1c446, + 0x1f4c7, + 0x2fc2, + 0x10fa8d, + 0x149b45, + 0x69347, + 0x2ad8a, + 0x13e30c, + 0x13e4cf, + 0x11f64f, + 0x1547c2, + 0x2202, + 0xe9e08, + 0x21cfbc4c, + 0x1a8b0a, + 0x22361b8a, + 0xf10ca, + 0x800ca, + 0x88508, + 0x26085, + 0x6b5c8, + 0xf1588, + 0x1dd4c8, + 0x146488, + 0x23c2, + 0x11f3cf, + 0x142188d, + 0x140e4d2, + 0x1ccf8b, + 0xc9a08, + 0x38107, + 0x4e48a, + 0x12bccb, + 0xa24c9, + 0x4e387, + 0x76706, + 0x25f88, + 0x3048c, + 0x1d9d47, + 0x1caca, + 0x7908, + 0x15f00e, + 0x19028e, + 0x3410b, + 0x3e48b, + 0x3ed0b, + 0x41a09, + 0x42e4b, + 0x4334d, + 0x44d4b, + 0x4978d, + 0x49b0d, + 0x5250a, + 0x4cd8b, + 0x4d24b, + 0x52185, + 0x225c7490, + 0x2c68f, + 0x7a88f, + 0x10ff4d, + 0x57f50, + 0x4c02, + 0x22a2fd08, + 0x1d9bc8, + 0x80990, + 0x12ae8e, + 0x22f726c5, + 0x5314b, + 0x143110, + 0x59bc5, + 0xa380b, + 0x1b178c, + 0x6b6ca, + 0x3e649, + 0x6c448, + 0x72547, + 0x72887, + 0x72a47, + 0x73ac7, + 0x75207, + 0x75607, + 0x77787, + 0x77c87, + 0x78187, + 0x78507, + 0x789c7, + 0x78b87, + 0x78d47, + 0x78f07, + 0x79287, + 0x79747, + 0x7b047, + 0x7b507, + 0x7c107, + 0x7c407, + 0x7c5c7, + 0x7c8c7, + 0x7d0c7, + 0x7d2c7, + 0x7dcc7, + 0x7de87, + 0x7e047, + 0x7e447, + 0x7ea87, + 0x7f447, + 0x7ff07, + 0x80347, + 0x81087, + 0x81247, + 0x81887, + 0x81c07, + 0x82607, + 0x82a07, + 0x82d47, + 0x82f07, + 0x83347, + 0x83a47, + 0x842c7, + 0x846c7, + 0x84887, + 0x84d07, + 0x85647, + 0xf168a, + 0x15b48, + 0x1ba40c, + 0x1416c7, + 0x98385, + 0x1e1a51, + 0x14d146, + 0x12428a, + 0xe9c8a, + 0x63646, + 0x15cdcb, + 0x642, + 0x31391, + 0x168c89, + 0xd1e49, + 0xa48c6, + 0x17382, + 0x6808a, + 0xb78c9, + 0xb800f, + 0xb860e, + 0xbac08, + 0x23345ed2, + 0x11608, + 0x2366c647, + 0xbdacf, + 0x15fc2, + 0x1de3c9, + 0x1ca20a, + 0x23a14609, + 0xd4389, + 0xd438c, + 0x604b, + 0x9670e, + 0x1cdb8c, + 0xfa94f, + 0x1c02ce, + 0x56a4c, + 0x80789, + 0x81d91, + 0x8b988, + 0x8c392, + 0x8e20d, + 0x9198d, + 0x95d0b, + 0x18a455, + 0x1e0b49, + 0x9a68a, + 0x9ecc9, + 0xa3d50, + 0xae18b, + 0xb0a0f, + 0xc054b, + 0xc0bcc, + 0x19bb50, + 0x17094a, + 0x17a88d, + 0x197cce, + 0xc1eca, + 0x12cd4c, + 0xc9d14, + 0xd1ad1, + 0xd228b, + 0xd338f, + 0xd6fcd, + 0xd7ace, + 0xd8b8c, + 0xda10c, + 0x19b84b, + 0x1ef70e, + 0xddad0, + 0xf218b, + 0xf728d, + 0x11290f, + 0x1090cc, + 0x10d60e, + 0x115111, + 0x1b124c, + 0x14b107, + 0x16430d, + 0x16fd4c, + 0x17a2d0, + 0x19510d, + 0x195f07, + 0x199490, + 0x1a9b08, + 0xc144b, + 0xc364f, + 0x1ba688, + 0x5450d, + 0x117510, + 0x17c789, + 0x23fc7448, + 0x242c7fc6, + 0xc8bc3, + 0x1aa949, + 0xa5909, + 0xcd6c5, + 0x6982, + 0x1289, + 0x4e90a, + 0x2468c846, + 0x148c84d, + 0x24b283d1, + 0x24f04984, + 0x1e7086, + 0x2294a, + 0x1ec4d, + 0x252e098b, + 0x1da1c8, + 0x25460dc9, + 0x1c943, + 0x14880a, + 0xeff11, + 0xf0349, + 0xf1047, + 0xf1ec8, + 0xf2447, + 0x6c548, + 0x70cb, + 0x1379c9, + 0xf91d0, + 0xf968c, + 0xf9b09, + 0xf9d4c, + 0x25afa14d, + 0xfb588, + 0xfba85, + 0x88088, + 0x19dc8a, + 0x16ab87, + 0x1f42, + 0x25e21e95, + 0x143e0a, + 0x149989, + 0xa5ac8, + 0x11ef09, + 0x86905, + 0x128e4a, + 0xfdcc7, + 0x998cf, + 0x16470b, + 0x13ba0c, + 0x28d52, + 0x126a06, + 0x14ff548, + 0x86f45, + 0x1282c8, + 0x10154b, + 0xe32d1, + 0x100507, + 0x557ca, + 0x180f0c, + 0x2630a105, + 0x1ae7cc, + 0x265104ce, + 0x140943, + 0x198e46, + 0x413c2, + 0x111e8b, + 0x11370a, + 0x15144cc, + 0x1da0c8, + 0x49948, + 0x26aa5b46, + 0x125f07, + 0x1c58e, + 0x146307, + 0x10002, + 0x4842, + 0x5a590, + 0x6aac7, + 0x6abcf, + 0x15d46, + 0xaa4ce, + 0xbc10b, + 0x5a3c8, + 0xa2889, + 0x15252, + 0x11cd8d, + 0x11d908, + 0x126c9, + 0x6af4d, + 0x6b909, + 0x6cd4b, + 0x70e88, + 0x77f88, + 0x79408, + 0x7bc89, + 0x7be8a, + 0x7ca4c, + 0x1bc0a, + 0xe3007, + 0xe824a, + 0x11c347, + 0x3980a, + 0xf4788, + 0x1d880d, + 0xa1411, + 0x26ed7dc6, + 0x16cbcb, + 0x1dafcc, + 0x1be08, + 0x1d7589, + 0x16194d, + 0x73d10, + 0x6a28c, + 0x1e1e4d, + 0xfb60f, + 0x5fc2, + 0x9eecd, + 0x2642, + 0x41d82, + 0x11c28a, + 0x272948ca, + 0x2a08a, + 0x276849c8, + 0x12418a, + 0x12454b, + 0x125507, + 0x1ab54c, + 0x19050c, + 0x1277ca, + 0x27927a4f, + 0x127e0c, + 0x128107, + 0x12948e, + 0x27df4305, + 0x1a20c8, + 0x3642, + 0x141a6c3, + 0x1afc660e, + 0x1b7d428e, + 0x1bf47e8a, + 0x1c7c414e, + 0x1cf4de0e, + 0x1d75910c, + 0x1549207, + 0x1559d49, + 0x143bfc3, + 0x1dfbf54c, + 0x1e604c09, + 0x1ef00749, + 0x1f7025c9, + 0x4942, + 0x1d6591, + 0x1d41d1, + 0x147dcd, + 0x1c4091, + 0x14dd51, + 0x15904f, + 0x1bf48f, + 0x1d06cc, + 0x10068c, + 0x10250c, + 0x106d8d, + 0x191c55, + 0x132f4c, + 0x137f0c, + 0x149c50, + 0x15040c, + 0x1bb70c, + 0x1c6359, + 0x1d25d9, + 0x1eacd9, + 0x4954, + 0x7ad4, + 0x9054, + 0x9c54, + 0xa1d4, + 0x1fe07d89, + 0x20409309, + 0x20f37fc9, + 0x1b28bb89, + 0x4942, + 0x1ba8bb89, + 0x4942, + 0x494a, + 0x4942, + 0x1c28bb89, + 0x4942, + 0x494a, + 0x4942, + 0x1ca8bb89, + 0x4942, + 0x1d28bb89, + 0x4942, + 0x1da8bb89, + 0x4942, + 0x494a, + 0x4942, + 0x1e28bb89, + 0x4942, + 0x494a, + 0x4942, + 0x1ea8bb89, + 0x4942, + 0x1f28bb89, + 0x4942, + 0x494a, + 0x4942, + 0x1fa8bb89, + 0x4942, + 0x494a, + 0x4942, + 0x2028bb89, + 0x4942, + 0x20a8bb89, + 0x4942, + 0x2128bb89, + 0x4942, + 0x494a, + 0x4942, + 0x1400401, + 0x6f45, + 0x1bd044, + 0x1414fc3, + 0x141da83, + 0x1469683, + 0x8e344, + 0x137d08, + 0x1c660e, + 0x1d428e, + 0x8b28e, + 0x147e8a, + 0x1c414e, + 0x14de0e, + 0x15910c, + 0x1bf54c, + 0x4c09, + 0x100749, + 0x1025c9, + 0x7d89, + 0x9309, + 0x137fc9, + 0x149d0d, + 0x9f09, + 0xa489, + 0x175544, + 0x182384, + 0x192804, + 0x1a2284, + 0xb2144, + 0x16b604, + 0x1e8e04, + 0x189f04, + 0x15c44, + 0x4ac44, + 0xff009, + 0xff00c, + 0x157f86, + 0x157f8e, + 0x8e344, + 0x1595903, + 0x2b447, + 0x148d88c, + 0x15e42, + 0x15c43, + 0x4ac44, + 0x4c02, + 0x37507, + 0xfbc48, + 0x1ae288, + 0x46084, + 0x5746, + 0x13a4c7, + 0xe2c44, + 0x127386, + 0x19882, + 0x8f81, + 0x22504, + 0x54986, + 0x27303, + 0x4c02, + 0x15c43, + 0x124403, + 0x28b43, + 0xe983, + 0x1c80c3, + 0x28d45, + 0x7e5c2, + 0x14eb82, + 0x1a2bc8, + 0xf3c87, + 0x56603, + 0x137a47, + 0x23c2, + 0xd9c89, + 0x2000c2, + 0x202202, + 0x201482, + 0x20fd02, + 0x200382, + 0x2003c2, + 0x204842, + 0x206643, + 0x21f603, + 0x205503, + 0x20fc83, + 0x2109c3, + 0x21f143, + 0x1b9688, + 0x206643, + 0x21f603, + 0x211e43, + 0x262784, + 0x21f143, + 0x206643, + 0x21f603, + 0x2109c3, + 0x21f143, + 0xbd03, + 0x205503, + 0x503c4, + 0x2000c2, + 0x250b03, + 0x2a206643, + 0x3a5f47, + 0x205503, + 0x20f743, + 0x294744, + 0x2109c3, + 0x21f143, + 0x3b6f0a, + 0x212fc5, + 0x219683, + 0x23d942, + 0x1b9688, + 0x2a6e5b4a, + 0xc01, + 0x1b9688, + 0x2202, + 0x13e282, + 0x2ae60b4b, + 0x2b20f444, + 0x1048c5, + 0x1402c45, + 0xfbc46, + 0x2b602c45, + 0x5fb83, + 0xb2683, + 0x1a31c4, + 0x1d45c3, + 0x1a2345, + 0x14cb05, + 0x1b9688, + 0x1f4c7, + 0x6643, + 0x2e70d, + 0x2be3c647, + 0xcc6, + 0x2c14dc45, + 0x1cb4d2, + 0xd87, + 0x26e4a, + 0x24dc8, + 0x26d47, + 0xfe08a, + 0x1b42c8, + 0x74a47, + 0x15c18f, + 0x4ed47, + 0x71b06, + 0x143110, + 0x1486a46, + 0x124c8f, + 0xee89, + 0x1e7104, + 0x2c400e4e, + 0x2ca0d84c, + 0x37849, + 0x79046, + 0x6bb89, + 0x116a86, + 0x173cc6, + 0xbc98c, + 0x12beca, + 0xa2647, + 0x11400a, + 0x146cc9, + 0x10368c, + 0x2410a, + 0x4deca, + 0x1a2389, + 0x1e7086, + 0xa270a, + 0x1aae8a, + 0xad3ca, + 0x1f06c9, + 0xef888, + 0xefb86, + 0xf4bcd, + 0xf9d4c, + 0x55f8b, + 0xdd585, + 0x2d322c8c, + 0x144207, + 0x1f0189, + 0xda4c7, + 0xba714, + 0x117a8b, + 0xc984a, + 0x150ca, + 0xb500d, + 0x1524749, + 0x11cb4c, + 0x11d70b, + 0x164c57, + 0x165ed5, + 0x7903, + 0x7903, + 0x34106, + 0x7903, + 0x2ce04b02, + 0x28d45, + 0xfbc48, + 0x15b243, + 0x49f04, + 0x17804, + 0x1780c, + 0x60483, + 0x14ad487, + 0x1702cd, + 0x15205, + 0x142a2c3, + 0x142a2c8, + 0x5c4c9, + 0xdfa89, + 0x28d45, + 0x10154b, + 0xd254b, + 0x1509343, + 0x1509348, + 0x1106, + 0x14526c7, + 0xa3fc7, + 0x2e172bc9, + 0x10886, + 0x50b03, + 0x1b9688, + 0x2202, + 0x554c4, + 0xf9d4c, + 0xff43, + 0x13d845, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x2028c3, + 0x206643, + 0x21f603, + 0x3d6403, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x2d2003, + 0x200f83, + 0x2028c3, + 0x214f04, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x2330c3, + 0x214f83, + 0x23d942, + 0x2f972cc5, + 0x142d603, + 0x206643, + 0x21f603, + 0x20fd03, + 0x3d6403, + 0x205503, + 0x2503c4, + 0x33c683, + 0x23ddc3, + 0x206543, + 0x2109c3, + 0x21f143, + 0x219683, + 0x30623443, + 0x28c49, + 0x2202, + 0x23e1c3, + 0x31206643, + 0x21f603, + 0x24ec43, + 0x205503, + 0x21a403, + 0x23ddc3, + 0x21f143, + 0x202b03, + 0x3eda84, + 0x1b9688, + 0x31a06643, + 0x21f603, + 0x2bacc3, + 0x205503, + 0x206543, + 0x294744, + 0x2109c3, + 0x21f143, + 0x2210c3, + 0x1b9688, + 0x32206643, + 0x21f603, + 0x3d6403, + 0xf9d4c, + 0x21d783, + 0x21f143, + 0x1b9688, + 0x1549207, + 0x250b03, + 0x206643, + 0x21f603, + 0x205503, + 0x2503c4, + 0x294744, + 0x2109c3, + 0x21f143, + 0x14cb05, + 0xf08c7, + 0xba94b, + 0x332328c6, + 0xf0744, + 0xdd585, + 0x147e248, + 0x206cd, + 0x1c7448, + 0x33a47285, + 0x1ecc4, + 0x2202, + 0x1c36c3, + 0x157e85, + 0x232c2, + 0x34db45, + 0x1b9688, + 0x353ddb4d, + 0x357d520a, + 0x7902, + 0x21483, + 0xf9d4c, + 0x16be4f, + 0xfd02, + 0x8e344, + 0x4ac44, + 0x2202, + 0x2000c2, + 0x250b03, + 0x206643, + 0x205503, + 0x2503c4, + 0x206543, + 0x294744, + 0x2109c3, + 0x21f143, + 0x219683, + 0x206643, + 0x21f603, + 0x2109c3, + 0x21f143, + 0x1c1f05, + 0x3365c8, + 0x214f04, + 0x3c2986, + 0x3d0586, + 0x1b9688, + 0x30f143, + 0x3be309, + 0x2b9815, + 0xb981f, + 0x206643, + 0x95a87, + 0x219d52, + 0x187746, + 0x189285, + 0x6b6ca, + 0x3e649, + 0x219b0f, + 0xefd47, + 0x2e4084, + 0x2243c5, + 0x319410, + 0x2577c7, + 0xf9d4c, + 0x21d783, + 0x23d5c8, + 0x4aac6, + 0x28cc4a, + 0x229804, + 0x309b43, + 0x23d942, + 0x30468b, + 0x1b9443, + 0x21f603, + 0x205503, + 0x18fc84, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x30e543, + 0x202202, + 0x31983, + 0x58cc4, + 0x2109c3, + 0x21f143, + 0x3783bf05, + 0x1d7346, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x21f143, + 0x206643, + 0x21f603, + 0x205503, + 0x20f743, + 0x21ddc3, + 0x21f143, + 0x50b03, + 0x202202, + 0x206643, + 0x21f603, + 0x2109c3, + 0x21f143, + 0x31e02, + 0x2000c2, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x2c45, + 0x74fc9, + 0x141eccb, + 0x15c43, + 0x214f04, + 0x206643, + 0x21f603, + 0x228f84, + 0x2109c3, + 0x21f143, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x132d09, + 0x6204, + 0x206643, + 0x23c2, + 0x21f603, + 0x3d6403, + 0x2036c3, + 0x206543, + 0x2109c3, + 0x21f143, + 0xc642, + 0x206643, + 0x21f603, + 0x205503, + 0x36b204, + 0x2503c4, + 0x2109c3, + 0x21f143, + 0x200f83, + 0x8a42, + 0x202202, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x15d3c3, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x325e03, + 0x52383, + 0xf743, + 0x2109c3, + 0x21f143, + 0x2f7c6, + 0x32e0ca, + 0x34b2c9, + 0x36408b, + 0x3649ca, + 0x36fb0a, + 0x38028b, + 0x394bca, + 0x39b18a, + 0x3a1a4a, + 0x3a1ccb, + 0x3c7d89, + 0x3dfe4a, + 0x3e02cb, + 0x3ebacb, + 0x3f274a, + 0x2dc2, + 0x206643, + 0x21f603, + 0x3d6403, + 0x206543, + 0x2109c3, + 0x21f143, + 0x2c4b, + 0x12ae87, + 0x6c9c8, + 0x6b084, + 0x1e8684, + 0x9b108, + 0xf2f86, + 0x7206, + 0x3bb07, + 0x128c07, + 0xf8589, + 0x1b9688, + 0x206643, + 0x3e644, + 0x272544, + 0x20b082, + 0x294744, + 0x231c05, + 0x2028c3, + 0x214f04, + 0x206643, + 0x2392c4, + 0x21f603, + 0x2554c4, + 0x2e4084, + 0x2503c4, + 0x23ddc3, + 0x2109c3, + 0x21f143, + 0x29f085, + 0x2330c3, + 0x219683, + 0x27b403, + 0x21bc04, + 0x3de844, + 0x23c0c5, + 0x1b9688, + 0x3c3704, + 0x3c1386, + 0x3a24c4, + 0x202202, + 0x229147, + 0x24c707, + 0x251604, + 0x2f3d05, + 0x395305, + 0x22f2c5, + 0x2503c4, + 0x268e48, + 0x238646, + 0x365588, + 0x276445, + 0x2dfa85, + 0x273e04, + 0x21f143, + 0x30a904, + 0x37f286, + 0x2130c3, + 0x21bc04, + 0x275485, + 0x24e884, + 0x2adec4, + 0x23d942, + 0x257106, + 0x3b5b46, + 0x31a605, + 0x2000c2, + 0x250b03, + 0xf3106, + 0x3ce02202, + 0x21ce04, + 0x191384, + 0x65685, + 0x200382, + 0x206543, + 0x3d2070c2, + 0x2109c3, + 0x2003c2, + 0x3070c6, + 0x213dc3, + 0x1e7005, + 0x200f83, + 0x1b9688, + 0x14f8cc3, + 0x1b9688, + 0x205503, + 0xf9d4c, + 0x2000c2, + 0x3de02202, + 0x205503, + 0x278cc3, + 0x33c683, + 0x20f444, + 0x2109c3, + 0x21f143, + 0x1b9688, + 0x126947, + 0x5860a, + 0x2000c2, + 0x3e602202, + 0x206643, + 0x2109c3, + 0x21f143, + 0x682, + 0x209a02, + 0x224b42, + 0x20f743, + 0x303643, + 0x2000c2, + 0x14cb05, + 0x1b9688, + 0xf08c7, + 0x202202, + 0x21f603, + 0x2554c4, + 0x203b43, + 0x205503, + 0x2036c3, + 0x206543, + 0x2109c3, + 0x20f4c3, + 0x21f143, + 0x213003, + 0xcbd48, + 0xf83, + 0x145213, + 0x148d14, + 0x14cb05, + 0xf08c7, + 0x26e49, + 0x11b646, + 0x11090b, + 0x34106, + 0x61d47, + 0x1dbac6, + 0x649, + 0x18540a, + 0x97bcd, + 0xdc10c, + 0x11e34a, + 0xa8ac8, + 0x1cf805, + 0x26e88, + 0x15d46, + 0x1d1b86, + 0x54146, + 0x204c02, + 0x26c4, + 0x170cc6, + 0x14e160e, + 0x1d5186, + 0x7440c, + 0x3fb72a4b, + 0x14cb05, + 0x14fb4b, + 0x3fe8c007, + 0x4028c00a, + 0x407d1ac4, + 0x50c9, + 0x9548, + 0x1bd207, + 0x25791, + 0x13064a, + 0x206643, + 0x40a8d788, + 0xfe005, + 0x1896c8, + 0x1b7344, + 0x4eb05, + 0xaeb47, + 0x1a9d0b, + 0x40e1f109, + 0x115c5, + 0x1702c6, + 0x163486, + 0x9d28a, + 0x10320c, + 0x1c1303, + 0x1e8684, + 0x413ed484, + 0x5c4c9, + 0x100ec7, + 0x588ca, + 0x14e5a49, + 0x605, + 0x10f303, + 0x41637047, + 0x1f45, + 0x156ca86, + 0x140c406, + 0x15ce8c, + 0x10c348, + 0x41930845, + 0x41c413c3, + 0x110fc4, + 0x6948b, + 0x121e0b, + 0x4224f04c, + 0x1426143, + 0xcef48, + 0xd254b, + 0xaea09, + 0xd9143, + 0x124848, + 0x1422886, + 0x95607, + 0x42761949, + 0x30147, + 0x43aeba48, + 0xa19c4, + 0x1178c7, + 0xe040a, + 0x43f65188, + 0x11d3cd, + 0x1c6e09, + 0x1d7808, + 0x15c43, + 0x14493c9, + 0x4ac44, + 0x97c5, + 0x3c583, + 0x34106, + 0x3042, + 0x15c44, + 0x2a385, + 0x1aa884, + 0x142db83, + 0x1a6c7, + 0x42a1a6c3, + 0x42fcc386, + 0x4323ab84, + 0x436fddc7, + 0xfbc44, + 0x125f07, + 0xfbc44, + 0x125f07, + 0xfbc44, + 0xfbc44, + 0x125f07, + 0x1dee09, + 0x41, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x2000c2, + 0x202202, + 0x205503, + 0x203042, + 0x2109c3, + 0x21f143, + 0x213dc3, + 0x387fcf, + 0x38838e, + 0x1b9688, + 0x206643, + 0x49087, + 0x21f603, + 0x205503, + 0x211e43, + 0x2109c3, + 0x21f143, + 0x1d50c4, + 0x1d4704, + 0xa04, + 0x220fc3, + 0x3d5787, + 0x204782, + 0x279f49, + 0x200b02, + 0x25a88b, + 0x2ed3ca, + 0x3289c9, + 0x200542, + 0x3b7706, + 0x25fd95, + 0x25a9d5, + 0x264ed3, + 0x25af53, + 0x216302, + 0x228645, + 0x3c340c, + 0x2815cb, + 0x259e85, + 0x206182, + 0x2f45c2, + 0x2f45c6, + 0x2028c2, + 0x296186, + 0x23e88d, + 0x258d4c, + 0x3c7504, + 0x200882, + 0x210342, + 0x28c748, + 0x200202, + 0x33d3c6, + 0x39d54f, + 0x3d47d0, + 0x2fd044, + 0x25ff55, + 0x265053, + 0x214ec3, + 0x35898a, + 0x38b6c7, + 0x392409, + 0x313d87, + 0x269782, + 0x200282, + 0x3caa06, + 0x206202, + 0x1b9688, + 0x20b4c2, + 0x20b782, + 0x20b787, + 0x3aeb47, + 0x3aeb51, + 0x21d0c5, + 0x21d0ce, + 0x21e8cf, + 0x202fc2, + 0x221007, + 0x2211c8, + 0x201002, + 0x220302, + 0x210506, + 0x21050f, + 0x2711d0, + 0x22d3c2, + 0x201782, + 0x229288, + 0x201783, + 0x26d748, + 0x23decd, + 0x202f03, + 0x3d03c8, + 0x26220f, + 0x2625ce, + 0x214d8a, + 0x2eebd1, + 0x2ef050, + 0x2deecd, + 0x2df20c, + 0x381dc7, + 0x358b07, + 0x3c2a49, + 0x2170c2, + 0x2011c2, + 0x263b4c, + 0x263e4b, + 0x203402, + 0x39ba06, + 0x204102, + 0x200482, + 0x3547c2, + 0x202202, + 0x22ec04, + 0x23bcc7, + 0x22dd42, + 0x243c87, + 0x246f47, + 0x242982, + 0x211802, + 0x248f45, + 0x254302, + 0x2b52ce, + 0x37b2cd, + 0x21f603, + 0x2936ce, + 0x2d49cd, + 0x374243, + 0x202482, + 0x240dc4, + 0x213242, + 0x202442, + 0x3aa7c5, + 0x24c1c7, + 0x24dc42, + 0x20fd02, + 0x253c47, + 0x25c848, + 0x2596c2, + 0x286fc6, + 0x2639cc, + 0x263d0b, + 0x208102, + 0x26db4f, + 0x26df10, + 0x26e30f, + 0x26e6d5, + 0x26ec14, + 0x26f10e, + 0x26f48e, + 0x26f80f, + 0x26fbce, + 0x26ff54, + 0x270453, + 0x27090d, + 0x285809, + 0x299443, + 0x2030c2, + 0x360605, + 0x2045c6, + 0x200382, + 0x2f7c47, + 0x205503, + 0x200642, + 0x233488, + 0x2eee11, + 0x2ef250, + 0x206a42, + 0x298707, + 0x202b82, + 0x259887, + 0x206982, + 0x33a609, + 0x2f4587, + 0x298bc8, + 0x3cf606, + 0x303543, + 0x398805, + 0x22a2c2, + 0x2004c2, + 0x3c5ec5, + 0x3dbd85, + 0x201282, + 0x211f83, + 0x2a1a47, + 0x3d1e07, + 0x201702, + 0x3878c4, + 0x207783, + 0x3ee109, + 0x207788, + 0x206b42, + 0x209582, + 0x22bb07, + 0x3b6b85, + 0x258488, + 0x228347, + 0x225ac3, + 0x370b46, + 0x2ded4d, + 0x2df0cc, + 0x3898c6, + 0x202f82, + 0x202042, + 0x200ec2, + 0x26208f, + 0x26248e, + 0x395387, + 0x201e42, + 0x23d4c5, + 0x23d4c6, + 0x21cf02, + 0x201502, + 0x29a0c6, + 0x245e43, + 0x3c2346, + 0x2e2c05, + 0x2e2c0d, + 0x2e3915, + 0x2e4f0c, + 0x2e528d, + 0x2e55d2, + 0x203c42, + 0x27d202, + 0xf9d4c, + 0x201b82, + 0x300486, + 0x3cda46, + 0x45295a04, + 0x201f42, + 0x204646, + 0x203902, + 0x25f385, + 0x206282, + 0x2b5409, + 0x21634c, + 0x21668b, + 0x2003c2, + 0x25df08, + 0x205842, + 0x206702, + 0x281386, + 0x28bb05, + 0x38cf47, + 0x33e845, + 0x2746c5, + 0x207202, + 0x226f42, + 0x2020c2, + 0x2b0d07, + 0x30718d, + 0x30750c, + 0x237447, + 0x286f42, + 0x201402, + 0x3cac08, + 0x201408, + 0x2ec9c8, + 0x3ba644, + 0x3ef987, + 0x304a03, + 0x271c02, + 0x20bc02, + 0x307f09, + 0x35f407, + 0x202b02, + 0x2819c5, + 0x21a002, + 0x21ec82, + 0x30dd03, + 0x30dd06, + 0x30e242, + 0x310e82, + 0x200402, + 0x204746, + 0x240d07, + 0x201182, + 0x200902, + 0x26d58f, + 0x29350d, + 0x296b0e, + 0x2d484c, + 0x208ac2, + 0x202b42, + 0x3cf445, + 0x32c506, + 0x225402, + 0x203f42, + 0x200682, + 0x2282c4, + 0x2dfa04, + 0x35ccc6, + 0x204842, + 0x293fc7, + 0x204843, + 0x23b6c8, + 0x23da88, + 0x2478c7, + 0x2611c6, + 0x201a42, + 0x204083, + 0x204087, + 0x282486, + 0x2d9985, + 0x283508, + 0x203c82, + 0x2f5fc7, + 0x20e7c2, + 0x2b26c2, + 0x202e82, + 0x21ea49, + 0x20de02, + 0x18b88, + 0x2019c2, + 0x25b383, + 0x3501c7, + 0x202a42, + 0x2164cc, + 0x2167cb, + 0x389946, + 0x312485, + 0x45606b83, + 0x201b42, + 0x20c642, + 0x2d0a06, + 0x2274c3, + 0x36af87, + 0x26bac2, + 0x2008c2, + 0x25fc15, + 0x25ab95, + 0x264d93, + 0x25b0d3, + 0x284447, + 0x2a7e51, + 0x2c2290, + 0x396092, + 0x2c16d1, + 0x2c4d48, + 0x2c4d50, + 0x2c810f, + 0x2ed193, + 0x3a8152, + 0x2e2810, + 0x2e71cf, + 0x2e9fd2, + 0x2eab51, + 0x2ed913, + 0x2ee252, + 0x2f1b0f, + 0x2f2c0e, + 0x2f53d2, + 0x3287d1, + 0x3063cf, + 0x30bb4e, + 0x30c511, + 0x30e5d0, + 0x311a12, + 0x3132d1, + 0x330f10, + 0x33db4f, + 0x37eb11, + 0x3e2250, + 0x32a506, + 0x3385c7, + 0x20cf47, + 0x204042, + 0x290285, + 0x319187, + 0x224b42, + 0x202d02, + 0x294ac5, + 0x223683, + 0x3de2c6, + 0x30734d, + 0x30768c, + 0x2046c2, + 0x3c328b, + 0x28148a, + 0x283b8a, + 0x230b09, + 0x2cfa4b, + 0x305ecd, + 0x22848c, + 0x31988a, + 0x2464cc, + 0x249fcb, + 0x259ccc, + 0x27f5ce, + 0x284e8b, + 0x2a45cc, + 0x2cad83, + 0x325e86, + 0x365182, + 0x221902, + 0x25eb03, + 0x201102, + 0x22fd43, + 0x3c26c6, + 0x26e887, + 0x2d69c6, + 0x3a8cc8, + 0x201108, + 0x214786, + 0x20c302, + 0x319fcd, + 0x31a30c, + 0x321fc7, + 0x31e187, + 0x211202, + 0x219882, + 0x204002, + 0x28b082, + 0x33d2d6, + 0x342515, + 0x344cd6, + 0x34a393, + 0x34aa52, + 0x35add3, + 0x35b452, + 0x3b480f, + 0x3c8b58, + 0x3ca497, + 0x3cde99, + 0x3cfb18, + 0x3d09d8, + 0x3d1557, + 0x3d2c17, + 0x3d6d16, + 0x3e2e93, + 0x3e3595, + 0x3e3fd2, + 0x3e4453, + 0x17082, + 0x45a2c284, + 0x45fc7448, + 0x2c45, + 0x202202, + 0x2109c3, + 0x232c2, + 0x21f143, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x294744, + 0x2109c3, + 0x21f143, + 0x213dc3, + 0x2000c2, + 0x213c82, + 0x46e9f385, + 0x4724bf85, + 0x47669d46, + 0x1b9688, + 0x47ac8685, + 0x202202, + 0x201482, + 0x47f69f05, + 0x4828e105, + 0x4868ef07, + 0x48a760c9, + 0x48fb60c4, 0x200382, 0x200642, - 0x4826ab45, - 0x486a6449, - 0x48baaf08, - 0x48ec7645, - 0x49359c47, - 0x4961e1c8, - 0x49b14945, - 0x49eb0206, - 0x4a2564c9, - 0x4a78d7c8, - 0x4aade488, - 0x4aeb0c4a, - 0x4b23cdc4, - 0x4b6bd045, - 0x4bab9cc8, - 0x4be59605, - 0x21f082, - 0x4c2024c3, - 0x4c6bbc86, - 0x4ca4c1c8, - 0x4ceffb06, - 0x4d358048, - 0x4d7a9686, - 0x4da43e44, - 0x4de01f42, - 0x4e6ee3c7, - 0x4eac2644, - 0x4ee909c7, - 0x4f3e8187, + 0x4925b745, + 0x4969ea09, + 0x49a11008, + 0x49ec0a45, + 0x4a355507, + 0x4a613388, + 0x4ab1db05, + 0x4aea6d46, + 0x4b24c849, + 0x4b79ecc8, + 0x4bad8288, + 0x4bea778a, + 0x4c3cc904, + 0x4c6b5cc5, + 0x4cab3ac8, + 0x4ce4e685, + 0x217702, + 0x4d201e43, + 0x4d6b41c6, + 0x4da48908, + 0x4dfc98c6, + 0x4e214888, + 0x4e7d3446, + 0x4ea52d84, + 0x4ee018c2, + 0x4f6e9907, + 0x4fabbb04, + 0x4fe88f07, + 0x503ea507, 0x2003c2, - 0x4f6b54c5, - 0x4fa84804, - 0x4ffb69c7, - 0x50247947, - 0x50698f06, - 0x50a1a705, - 0x50eaf707, - 0x513ce308, - 0x51663b07, - 0x51ac4449, - 0x51eeed85, - 0x52316ec7, - 0x526a6146, - 0x2af8b, - 0x52a33c88, - 0x22ec0d, - 0x261089, - 0x28970b, - 0x2a66cb, - 0x2bf2cb, - 0x2cd90b, - 0x32ed0b, - 0x32efcb, - 0x32f9c9, - 0x33088b, - 0x330b4b, - 0x33110b, - 0x33244a, - 0x33298a, - 0x332f8c, - 0x337e8b, - 0x33848a, - 0x34ac0a, - 0x354ace, - 0x35570e, - 0x355a8a, - 0x358e4a, - 0x35a38b, - 0x35a64b, - 0x35b14b, - 0x37ca4b, - 0x37d04a, - 0x37dd0b, - 0x37dfca, - 0x37e24a, - 0x37e4ca, - 0x39c14b, - 0x3a360b, - 0x3a678e, - 0x3a6b0b, - 0x3aeb4b, - 0x3b034b, - 0x3b490a, - 0x3b4b89, - 0x3b4dca, - 0x3b66ca, - 0x3cf58b, - 0x3deb4b, - 0x3df64a, - 0x3e014b, - 0x3e660b, - 0x3f2a0b, - 0x52e96f08, - 0x5329d189, - 0x536b8389, - 0x53afcdc8, - 0x3607c5, - 0x203ec3, - 0x267c44, - 0x397685, - 0x3bb146, - 0x3574c5, - 0x29c844, - 0x2e4e48, - 0x328f45, - 0x2a88c4, - 0x206a87, - 0x2b74ca, - 0x325b4a, - 0x39bac7, - 0x23f147, - 0x2f7287, - 0x26acc7, - 0x3bfb05, - 0x3bbd86, - 0x249647, - 0x2606c4, - 0x2d2d86, - 0x302a46, - 0x3cb6c5, - 0x37b304, - 0x2b5106, - 0x2b6407, - 0x22ef06, - 0x320307, - 0x242d03, - 0x3cb3c6, - 0x230e85, - 0x295c87, - 0x27e84a, - 0x362244, - 0x21b988, - 0x2c3d89, - 0x381307, - 0x356306, - 0x28d588, - 0x3e8509, - 0x3622c4, - 0x287144, - 0x2d01c5, - 0x225908, - 0x2e7187, - 0x3138c9, - 0x23de88, - 0x321f06, - 0x240646, - 0x2b1a08, - 0x37bb06, - 0x2a6305, - 0x298fc6, - 0x290d88, - 0x297a46, - 0x26cc0b, - 0x2a2e06, - 0x2b3f8d, - 0x209805, - 0x2c2506, - 0x21e285, - 0x2d0389, - 0x32a287, - 0x214cc8, - 0x2c2ac6, - 0x2b2549, - 0x3a3886, - 0x27e7c5, - 0x21e4c6, - 0x2e4146, - 0x2eb409, - 0x2d4e06, - 0x214f47, - 0x2ac7c5, - 0x204343, - 0x264a45, - 0x2d2bc7, - 0x3db5c6, - 0x209709, - 0x253946, - 0x299206, - 0x24db09, - 0x2989c9, - 0x2ba547, - 0x36b208, - 0x2a4649, - 0x296108, - 0x2e5606, - 0x2f4b85, - 0x28f48a, - 0x299286, - 0x3d0646, - 0x2ee305, - 0x266b88, - 0x3af747, - 0x23c48a, - 0x262186, - 0x328245, - 0x313fc6, - 0x2a71c7, - 0x3561c7, - 0x2aec85, - 0x27e985, - 0x27b046, - 0x27bd86, - 0x285d86, - 0x245f84, - 0x297389, - 0x29f106, - 0x2ed9ca, - 0x21f648, - 0x316bc8, - 0x325b4a, - 0x24c385, - 0x2b6345, - 0x2093c8, - 0x32c608, - 0x24e687, - 0x2dd546, - 0x342288, - 0x220247, - 0x296808, - 0x2d3dc6, - 0x299c88, - 0x2ad906, - 0x2f83c7, - 0x317e46, - 0x2b5106, - 0x234eca, - 0x2392c6, - 0x2f4b89, - 0x371946, - 0x21230a, - 0x243e49, - 0x3091c6, - 0x2d5a44, - 0x3648cd, - 0x294ac7, - 0x20b986, - 0x2de345, - 0x3a3905, - 0x39dc06, - 0x383609, - 0x39fe87, - 0x291786, - 0x376546, - 0x27d809, - 0x360d04, - 0x3092c4, - 0x3ec208, - 0x38fb86, - 0x2ac248, - 0x2f20c8, - 0x288a47, - 0x2ff509, - 0x3d5d07, - 0x2ce84a, - 0x30a04f, - 0x24eaca, - 0x3d67c5, - 0x290fc5, - 0x214c85, - 0x2ff147, - 0x292403, - 0x36b408, - 0x23a546, - 0x23a649, - 0x359646, - 0x22a647, - 0x2b2309, - 0x214bc8, - 0x2d0547, - 0x32cfc3, - 0x360845, - 0x2a6d05, - 0x245dcb, - 0x2596c4, - 0x381204, - 0x28ec46, - 0x32d187, - 0x39e18a, - 0x25d687, - 0x2318c7, - 0x294c85, - 0x3dc5c5, - 0x391749, - 0x2b5106, - 0x25d50d, - 0x300285, - 0x2d1d83, - 0x208e03, - 0x220b45, - 0x342b85, - 0x28d588, - 0x291f47, - 0x24b286, - 0x2b8006, - 0x235205, - 0x241387, - 0x3d30c7, - 0x267f87, - 0x2bd0ca, - 0x3cb488, - 0x245f84, - 0x2977c7, - 0x293e47, - 0x367346, - 0x2acf87, - 0x36da88, - 0x362948, - 0x29c146, - 0x23f388, - 0x2d4e84, - 0x249646, - 0x28d846, - 0x302c46, - 0x349986, - 0x2198c4, - 0x26ad86, - 0x2dd246, - 0x2b1146, - 0x234ec6, - 0x208cc6, - 0x2fe846, - 0x24b188, - 0x2cfec8, - 0x2f16c8, - 0x3576c8, - 0x209346, - 0x20f0c5, - 0x264a06, - 0x2c76c5, - 0x338e87, - 0x23df45, - 0x2180c3, - 0x312185, - 0x320d44, - 0x208e05, - 0x201983, - 0x35b707, - 0x2e5188, - 0x3203c6, - 0x2c57cd, - 0x290f86, - 0x2b06c5, - 0x2030c3, - 0x2d9949, - 0x360e86, - 0x2afcc6, - 0x21e5c4, - 0x24ea47, - 0x3db7c6, - 0x328485, - 0x258dc3, - 0x20e744, - 0x294006, - 0x3bbe84, - 0x3c7808, - 0x3da549, - 0x29c609, - 0x2b960a, - 0x25588d, - 0x38c147, - 0x39b606, - 0x22f4c4, - 0x2f7ec9, - 0x29b548, - 0x29d006, - 0x2476c6, - 0x2acf87, - 0x2f7746, - 0x222986, - 0x371346, - 0x3e820a, - 0x21e1c8, - 0x237505, - 0x371149, - 0x3e8f0a, - 0x398548, - 0x2b5d08, - 0x2afc48, - 0x3034cc, - 0x331385, - 0x2b8288, - 0x2d4046, - 0x375c46, - 0x2e5a47, - 0x25d585, - 0x299145, - 0x29c4c9, - 0x20f447, - 0x23a605, - 0x229507, - 0x208e03, - 0x2e7b45, - 0x229bc8, - 0x2ee7c7, - 0x2b5bc9, - 0x3e4245, - 0x303bc4, - 0x322fc8, - 0x248007, - 0x2d0708, - 0x257148, - 0x39f5c5, - 0x279386, - 0x2b8106, - 0x23ef49, - 0x28d947, - 0x2c7c06, - 0x3cbe87, - 0x20bd43, - 0x3bb404, - 0x36b845, - 0x2414c4, - 0x24e2c4, - 0x298447, - 0x27d6c7, - 0x291944, - 0x2b5a10, - 0x325f87, - 0x3dc5c5, - 0x20d0cc, - 0x256f04, - 0x2c4c48, - 0x2f82c9, - 0x2cb606, - 0x324a48, - 0x264984, - 0x28ef48, - 0x234386, - 0x234d48, - 0x2b69c6, - 0x2cf24b, - 0x3c3845, - 0x36b6c8, - 0x21b184, - 0x3da98a, - 0x2b5bc9, - 0x268b86, - 0x3b0888, - 0x29ed45, - 0x2d8f44, - 0x2c4b46, - 0x267e48, - 0x296f08, - 0x33d7c6, - 0x37b484, - 0x28f406, - 0x3d5d87, - 0x2908c7, - 0x2acf8f, - 0x34fcc7, - 0x39f007, - 0x375b05, - 0x336705, - 0x2ba209, - 0x2ed686, - 0x295dc5, - 0x298cc7, - 0x2eac88, - 0x245c05, - 0x317e46, - 0x21f488, - 0x2ffb0a, - 0x20bfc8, - 0x2a0a87, - 0x30a486, - 0x371106, - 0x2003c3, - 0x21c543, - 0x3e90c9, - 0x2a44c9, - 0x2c4346, - 0x3e4245, - 0x303348, - 0x3b0888, - 0x2b4d48, - 0x3713cb, - 0x2c5a07, - 0x326909, - 0x2ad208, - 0x2402c4, - 0x3d2a08, - 0x2a4189, - 0x2c7f05, - 0x2632c7, - 0x3bb485, - 0x296e08, - 0x2a698b, - 0x2af450, - 0x2c2145, - 0x21b0cc, - 0x24b445, - 0x294d03, - 0x2d78c6, - 0x2dc744, - 0x29ce86, - 0x2b6407, - 0x209344, - 0x3c4c48, - 0x36b2cd, - 0x3b0745, - 0x255d84, - 0x364644, - 0x39ed49, - 0x2af188, - 0x33ab87, - 0x234408, - 0x297448, - 0x291a85, - 0x3e9407, - 0x291a07, - 0x23a907, - 0x27e989, - 0x33bb89, - 0x264346, - 0x3b10c6, - 0x298d86, - 0x32e605, - 0x3cb204, - 0x3d8606, - 0x3da306, - 0x291ac8, - 0x2a6e8b, - 0x362107, - 0x22f4c4, - 0x3db706, - 0x3f3e07, - 0x2fe445, - 0x300645, - 0x28de04, - 0x33bb06, - 0x3d8688, - 0x2f7ec9, - 0x257906, - 0x29b348, - 0x328546, - 0x36c748, - 0x2df20c, - 0x291946, - 0x2b038d, - 0x2b080b, - 0x215005, - 0x3d3207, - 0x2d4f06, - 0x356088, - 0x2643c9, - 0x2c5d08, - 0x3dc5c5, - 0x2adb87, - 0x296208, - 0x3b85c9, - 0x21d3c6, - 0x25780a, - 0x355e08, - 0x2c5b4b, - 0x3a044c, - 0x28f048, - 0x292c06, - 0x348c48, - 0x2ff787, - 0x3581c9, - 0x2a634d, - 0x2b5006, - 0x2d0048, - 0x2cfd89, - 0x2da988, - 0x299d88, - 0x2ddc4c, - 0x2df647, - 0x2e0bc7, - 0x27e7c5, - 0x2b9f47, - 0x2eab48, - 0x2c4bc6, - 0x26990c, - 0x30c788, - 0x2ecb08, - 0x357986, - 0x333f87, - 0x264544, - 0x3576c8, - 0x29e40c, - 0x258b0c, - 0x3d6845, - 0x3cb747, - 0x37b406, - 0x333f06, - 0x3a5388, - 0x227984, - 0x22ef0b, - 0x2025cb, - 0x30a486, - 0x36b147, - 0x3495c5, - 0x287085, - 0x22f046, - 0x29ed05, - 0x259685, - 0x2ebf47, - 0x2298c9, - 0x206744, - 0x24a0c5, - 0x30f585, - 0x21a5c8, - 0x361c45, - 0x2e1149, - 0x2c6447, - 0x2c644b, - 0x308f06, - 0x24aec9, - 0x37b248, - 0x292e05, - 0x23aa08, - 0x33bbc8, - 0x367a47, - 0x234187, - 0x2984c9, - 0x234c87, - 0x2a2bc9, - 0x2bd90c, - 0x2c4348, - 0x3a0289, - 0x2deb87, - 0x297509, - 0x228087, - 0x3a0548, - 0x2ff6c5, - 0x2495c6, - 0x2de388, - 0x30a588, - 0x3e8dc9, - 0x2596c7, - 0x2b9805, - 0x3d4209, - 0x3a84c6, - 0x2a6144, - 0x315186, - 0x24c048, - 0x252787, - 0x2a7088, - 0x23f449, - 0x32dc47, - 0x2b4e86, - 0x3d2d44, - 0x312209, - 0x3e9288, - 0x357847, - 0x29ab46, - 0x2a6dc6, - 0x3d05c4, - 0x381b86, - 0x208d83, - 0x203ec9, - 0x3c3806, - 0x23f6c5, - 0x2b8006, - 0x2d0845, - 0x296688, - 0x220787, - 0x297d46, - 0x325e46, - 0x316bc8, - 0x2ba387, - 0x2b5045, - 0x2b5808, - 0x3def48, - 0x355e08, - 0x24b305, - 0x249646, - 0x29c3c9, - 0x23edc4, - 0x30fa8b, - 0x22268b, - 0x237409, - 0x208e03, - 0x26e945, - 0x39bfc6, - 0x24bbc8, - 0x311244, - 0x3203c6, - 0x2bd209, - 0x3762c5, - 0x2ebe86, - 0x248006, - 0x217604, - 0x2c26ca, - 0x23f608, - 0x30a586, - 0x37fdc5, - 0x3eb247, - 0x342dc7, - 0x279384, - 0x2228c7, - 0x23df04, - 0x23df06, - 0x20d183, - 0x27e985, - 0x2ca445, - 0x34ff08, - 0x297985, - 0x291689, - 0x2bba87, - 0x35750b, - 0x2bba8c, - 0x2bc08a, - 0x359c47, - 0x206b43, - 0x2902c8, - 0x309285, - 0x245c85, - 0x360904, - 0x3a0446, - 0x2f82c6, - 0x381bc7, - 0x28884b, - 0x2198c4, - 0x3aae84, - 0x2e4a84, - 0x2ea9c6, - 0x209344, - 0x225a08, - 0x360705, - 0x255ec5, - 0x2b4c87, - 0x3d3309, - 0x342b85, - 0x39dc0a, - 0x2ac6c9, - 0x2ab14a, - 0x3e8349, - 0x328744, - 0x376605, - 0x2f7848, - 0x3b6a8b, - 0x2d01c5, - 0x2f2246, - 0x24f404, - 0x291bc6, - 0x32dac9, - 0x3f3f07, - 0x253b08, - 0x255c06, - 0x3d5d07, - 0x296f08, - 0x386686, - 0x3d2dc4, - 0x270b47, - 0x391445, - 0x3a0a47, - 0x264884, - 0x2d4e86, - 0x342f08, - 0x2b09c8, - 0x3e4e07, - 0x32cc48, - 0x2ad9c5, - 0x208c44, - 0x325a48, - 0x2d79c4, - 0x2174c5, - 0x3a5184, - 0x220347, - 0x29f1c7, - 0x297648, - 0x2d0886, - 0x297905, - 0x291488, - 0x20c1c8, - 0x2b9549, - 0x222986, - 0x23c508, - 0x3da80a, - 0x2fe4c8, - 0x314945, - 0x264c06, - 0x2ac588, - 0x2adc4a, - 0x237f47, - 0x29b985, - 0x2a9588, - 0x2c0644, - 0x266c06, - 0x2e1a48, - 0x208cc6, - 0x3dfcc8, - 0x26cf47, - 0x206986, - 0x2d5a44, - 0x2445c7, - 0x2d1044, - 0x32da87, - 0x357b8d, - 0x237485, - 0x38340b, - 0x258d86, - 0x268a08, - 0x3636c4, - 0x285f86, - 0x294006, - 0x348f87, - 0x2b004d, - 0x30e947, - 0x2d1cc8, - 0x2a0f85, - 0x2d1608, - 0x2e7106, - 0x2ada48, - 0x23da86, - 0x20ce47, - 0x2251c9, - 0x3636c7, - 0x29d2c8, - 0x289b05, - 0x235288, - 0x333e45, - 0x317d85, - 0x378d45, - 0x21e503, - 0x299044, - 0x2a9785, - 0x2564c9, - 0x381986, - 0x36db88, - 0x3a13c5, - 0x2d3047, - 0x32a58a, - 0x2ebdc9, - 0x2e404a, - 0x2f1748, - 0x22934c, - 0x298d4d, - 0x3777c3, - 0x3dfbc8, - 0x20e705, - 0x2ff8c6, - 0x214a46, - 0x364585, - 0x3cbf89, - 0x3ea105, - 0x291488, - 0x26fa46, - 0x37a4c6, - 0x2bac89, - 0x233387, - 0x2a6c46, - 0x32a508, - 0x302b48, - 0x2fcfc7, - 0x2eb64e, - 0x2e7345, - 0x3b84c5, - 0x208bc8, - 0x3b90c7, - 0x229942, - 0x2dda04, - 0x29cd8a, - 0x357908, - 0x33bd06, - 0x2b2448, - 0x2b8106, - 0x336588, - 0x2c7c08, - 0x317d44, - 0x2d3805, - 0x7bf004, - 0x7bf004, - 0x7bf004, - 0x204043, - 0x206586, - 0x291946, - 0x2b6dcc, - 0x2069c3, - 0x264886, - 0x20d144, - 0x360e08, - 0x2bd045, - 0x29ce86, - 0x2b9dc8, - 0x2f2cc6, - 0x297cc6, - 0x21d148, - 0x36b8c7, - 0x234a49, - 0x32438a, - 0x263b44, - 0x23df45, - 0x313885, - 0x360b86, - 0x38c186, - 0x3d3746, - 0x385306, - 0x234b84, - 0x234b8b, - 0x23dd04, - 0x22a6c5, - 0x2c7005, - 0x288b06, - 0x20ac08, - 0x298c07, - 0x204284, - 0x273443, - 0x2c0145, - 0x315047, - 0x298b0b, - 0x34fe07, - 0x2b9cc8, - 0x2d8147, - 0x281406, - 0x261348, - 0x2d75cb, - 0x3975c6, - 0x210249, - 0x2d7745, - 0x32cfc3, - 0x2ebe86, - 0x26ce48, - 0x211903, - 0x2a17c3, - 0x233d86, - 0x2b8106, - 0x3848ca, - 0x292c45, - 0x293e4b, - 0x2b7f4b, - 0x242e83, - 0x201f03, + 0x506abc05, + 0x50a57504, + 0x50f70607, + 0x5123ae07, + 0x51692306, + 0x51a8eb05, + 0x51ea5f87, + 0x522c8d48, + 0x5260c647, + 0x52abdf89, + 0x52ee3e85, + 0x53314f87, + 0x5369e706, + 0x1eccb, + 0x53bdcc08, + 0x231e4d, + 0x269809, + 0x28308b, + 0x29c10b, + 0x2b7acb, + 0x3e550b, + 0x32c70b, + 0x32c9cb, + 0x32d349, + 0x32e34b, + 0x32e60b, + 0x32eb8b, + 0x32f84a, + 0x32fd8a, + 0x33038c, + 0x33434b, + 0x334d8a, + 0x3485ca, + 0x350e8e, + 0x351f8e, + 0x35230a, + 0x354d8a, + 0x355b0b, + 0x355dcb, + 0x3568cb, + 0x37680b, + 0x376e0a, + 0x377acb, + 0x377d8a, + 0x37800a, + 0x37828a, + 0x395c8b, + 0x39ca0b, + 0x39f5ce, + 0x39f94b, + 0x3a69cb, + 0x3a7ccb, + 0x3abc8a, + 0x3abf09, + 0x3ac14a, + 0x3ada4a, + 0x3c854b, + 0x3e058b, + 0x3e140a, + 0x3e28cb, + 0x3e898b, + 0x3f218b, + 0x53e90e08, + 0x54297009, + 0x546ae889, + 0x54af64c8, + 0x35ca45, + 0x20ba83, + 0x256884, + 0x382285, + 0x3b5e06, + 0x3537c5, + 0x295fc4, + 0x2f7b48, + 0x326d45, + 0x2a0a44, + 0x3cb1c7, + 0x2ada4a, + 0x2ffa8a, + 0x395487, + 0x241d07, + 0x2f2007, + 0x25b8c7, + 0x3a2fc5, + 0x275b46, + 0x2d6e47, + 0x24cfc4, + 0x2cd406, + 0x2fb206, + 0x3afbc5, + 0x381a84, + 0x2ab846, + 0x2acc87, + 0x2269c6, + 0x30ef07, + 0x2a0303, + 0x3c4ac6, + 0x2294c5, + 0x28f007, + 0x27990a, + 0x233584, + 0x20ec08, + 0x2bd889, + 0x2c5787, + 0x334c06, + 0x2e9a48, + 0x3ea889, + 0x23a704, + 0x280544, + 0x213785, + 0x2d1508, + 0x2e1247, + 0x311049, + 0x2455c8, + 0x3218c6, + 0x245946, + 0x2a84c8, + 0x375946, + 0x24bf85, + 0x2923c6, + 0x289348, + 0x25cd86, + 0x262e0b, + 0x29b606, + 0x2aa20d, + 0x20ab45, + 0x2bb9c6, + 0x20e0c5, + 0x235249, + 0x371cc7, + 0x210e08, + 0x2be906, + 0x2a9449, + 0x356e06, + 0x279885, + 0x213686, + 0x2f3f06, + 0x2e62c9, + 0x2cde86, + 0x2c7d47, + 0x2b1705, + 0x211d03, + 0x262f85, + 0x3c2447, + 0x375406, + 0x20aa49, + 0x269d46, + 0x2805c6, + 0x244289, + 0x291dc9, + 0x2b1c87, + 0x366448, + 0x29d849, + 0x28ff08, + 0x2de7c6, + 0x2ef645, + 0x287e0a, + 0x280646, + 0x3542c6, + 0x2e9845, + 0x25bd48, + 0x351507, + 0x23118a, + 0x255cc6, + 0x24a205, + 0x311746, + 0x29fa47, + 0x334ac7, + 0x31fb85, + 0x279a45, + 0x271046, + 0x275786, + 0x27d446, + 0x2390c4, + 0x291209, + 0x2984c6, + 0x3e58ca, + 0x21ac08, + 0x314c88, + 0x2ffa8a, + 0x248ac5, + 0x2acbc5, + 0x3cc688, + 0x384008, + 0x241147, + 0x39b706, + 0x340488, + 0x3f3247, + 0x28f148, + 0x2cd306, + 0x292bc8, + 0x2a53c6, + 0x2765c7, + 0x35f646, + 0x2ab846, + 0x22780a, + 0x22ec86, + 0x2ef649, + 0x2fef06, + 0x20b8ca, + 0x252d89, + 0x307b46, 0x2ce7c4, - 0x32a3c7, - 0x26cec4, - 0x23ee44, - 0x2d3ec4, - 0x2fe7c8, - 0x37fd08, - 0x21c4c9, - 0x2eee08, - 0x378fc7, - 0x234ec6, - 0x36d7cf, - 0x2e7486, - 0x2f0e44, - 0x37fb4a, - 0x314f47, - 0x2d1146, - 0x2a6189, - 0x21c445, - 0x27be45, - 0x21c586, - 0x2353c3, - 0x2c0689, - 0x21e346, - 0x23f209, - 0x39e186, - 0x27e985, - 0x3d6c45, - 0x206043, - 0x347e48, - 0x33ad47, - 0x23a544, - 0x360c88, - 0x3aac04, - 0x3e3f86, - 0x2d78c6, - 0x24a886, - 0x36b589, - 0x245c05, - 0x2b5106, - 0x2839c9, - 0x2e6246, - 0x2fe846, - 0x3b2f06, - 0x204105, - 0x3a5186, - 0x20ce44, - 0x2ff6c5, - 0x2de384, - 0x2d2586, - 0x300244, - 0x2027c3, - 0x29b605, + 0x3606cd, + 0x28df47, + 0x3c5386, + 0x2d8145, + 0x356e85, + 0x33ca86, + 0x2c6a49, + 0x2da647, + 0x28a106, + 0x37ce46, + 0x278789, + 0x24bec4, + 0x307c44, + 0x3bdc48, + 0x35fac6, + 0x2b1188, + 0x2f6dc8, + 0x261787, + 0x2fd349, + 0x3ce787, + 0x2c854a, + 0x3089cf, + 0x3a4d8a, + 0x3cf245, + 0x289585, + 0x20cb45, + 0x2fcf87, + 0x28ae83, + 0x366648, + 0x273146, + 0x273249, + 0x358446, + 0x3667c7, + 0x2a9209, + 0x210d08, + 0x235407, + 0x32b3c3, + 0x35cac5, + 0x29f585, + 0x238f0b, + 0x24e744, + 0x315904, + 0x2875c6, + 0x32b587, + 0x39834a, + 0x280ec7, + 0x3467c7, + 0x28e105, + 0x3d7285, + 0x28f689, + 0x2ab846, + 0x280d4d, + 0x3ca045, + 0x2cb083, + 0x21da03, + 0x22ff05, + 0x340d85, + 0x2e9a48, + 0x28a8c7, + 0x2405c6, + 0x2ae506, + 0x22bcc5, + 0x236347, + 0x36a2c7, + 0x238507, + 0x2b5d4a, + 0x3c4b88, + 0x2390c4, + 0x2907c7, + 0x28d2c7, + 0x362686, + 0x2a4a47, + 0x31ad08, + 0x3855c8, + 0x27ed46, 0x241f48, - 0x235707, - 0x3112c9, - 0x29b888, - 0x2b17d1, - 0x24808a, - 0x30a3c7, - 0x26d086, - 0x20d144, - 0x2de488, - 0x3e5088, - 0x2b198a, - 0x2e0f0d, - 0x21e4c6, - 0x21d246, - 0x244686, - 0x2aeb07, - 0x2d1d85, - 0x325147, - 0x360d45, - 0x2c6584, - 0x3d1306, - 0x249487, - 0x2c038d, - 0x2ac4c7, - 0x2e4d48, - 0x291789, - 0x264b06, - 0x21d345, - 0x245b84, - 0x24c146, - 0x2ff406, - 0x357a86, - 0x2b2cc8, - 0x216143, - 0x209503, - 0x3ead45, - 0x262286, - 0x2c7bc5, - 0x255e08, - 0x2b65ca, - 0x279484, - 0x360e08, - 0x2afc48, - 0x32a787, - 0x234009, - 0x2d9c88, - 0x2c44c7, - 0x2dd3c6, - 0x208cca, - 0x24c1c8, - 0x322e89, - 0x2af248, - 0x21fb49, - 0x362b47, - 0x3837c5, - 0x3715c6, - 0x2c4a48, - 0x297088, - 0x359f08, - 0x217608, - 0x22a6c5, - 0x204584, - 0x240a08, - 0x24f184, - 0x3e8144, - 0x27e985, - 0x2a8907, - 0x3d30c9, - 0x348d87, - 0x23c545, - 0x28ee46, - 0x37f5c6, - 0x20ad04, - 0x2bb106, - 0x294284, - 0x293b86, - 0x3d2e86, - 0x211746, - 0x3dc5c5, - 0x255cc7, - 0x206b43, - 0x32e089, - 0x3169c8, - 0x2f7dc4, - 0x2f7dcd, - 0x2b0ac8, - 0x2f6108, - 0x322e06, - 0x2252c9, - 0x2ebdc9, - 0x32d7c5, - 0x2b66ca, - 0x2abc0a, - 0x3cd0cc, - 0x3cd246, - 0x28fec6, - 0x2e7a86, - 0x3a1209, - 0x2ffb06, - 0x2ba3c6, - 0x3ea1c6, - 0x3576c8, - 0x20bfc6, - 0x2f060b, - 0x2a8a85, - 0x255ec5, - 0x2909c5, - 0x3ebf86, - 0x208c83, - 0x24a806, - 0x2ac447, - 0x2de345, - 0x3c35c5, - 0x3a3905, - 0x2fb286, - 0x32d884, - 0x33ee46, - 0x2a8e89, - 0x3ebe0c, - 0x2c62c8, - 0x267dc4, - 0x38d6c6, - 0x258e86, - 0x26ce48, - 0x3b0888, - 0x3ebd09, - 0x3eb247, - 0x38f8c9, - 0x288146, - 0x237004, - 0x361784, - 0x2987c4, - 0x296f08, - 0x3d2f0a, - 0x342b06, - 0x3759c7, - 0x3a0cc7, - 0x24afc5, - 0x2bb8c4, - 0x2a4146, - 0x2d1dc6, - 0x220883, - 0x316807, - 0x257048, - 0x32d90a, - 0x358908, - 0x358048, - 0x300285, - 0x22e485, - 0x362205, - 0x24b386, - 0x24f886, - 0x350045, - 0x204109, - 0x2bb6cc, - 0x318007, - 0x2b1a08, - 0x2a2f45, - 0x7bf004, - 0x2ca484, - 0x2ee904, - 0x213346, - 0x2b8e4e, - 0x27bec7, - 0x2aed05, - 0x23ed4c, - 0x2b4587, - 0x249407, - 0x24de49, - 0x21ba49, - 0x29b985, - 0x3169c8, - 0x29c3c9, - 0x355cc5, - 0x2de288, - 0x3ce506, - 0x325cc6, - 0x243e44, - 0x2ce008, - 0x255783, - 0x206184, - 0x2c01c5, - 0x3a5b07, - 0x355145, - 0x3da6c9, - 0x2a398d, - 0x2b3046, - 0x3f3684, - 0x2dd4c8, - 0x22970a, - 0x3cba07, - 0x246205, - 0x2061c3, - 0x2b810e, - 0x347f4c, - 0x398647, - 0x2b9007, - 0x4e3a4e47, - 0x136c46, - 0x2af84, - 0x203f43, - 0x2ffb45, - 0x2ee905, - 0x2b2808, - 0x2afa89, - 0x267cc6, - 0x26cec4, - 0x30a306, - 0x390c0b, - 0x2fa98c, - 0x26e6c7, - 0x2f08c5, - 0x3dee48, - 0x2fcd85, - 0x37fb47, - 0x2ee3c7, - 0x255785, - 0x208c83, - 0x246384, - 0x3638c5, - 0x206645, - 0x206646, - 0x2a4d08, - 0x249487, - 0x214d46, - 0x3d04c6, - 0x378c86, - 0x2d5009, - 0x3e9507, - 0x267b46, - 0x2fab06, - 0x23ccc6, - 0x2c2605, - 0x2185c6, - 0x3b7205, - 0x361cc8, - 0x2a81cb, - 0x2a36c6, - 0x3a0d04, - 0x2fefc9, - 0x2bba84, - 0x3ce488, - 0x318dc7, - 0x299c84, - 0x2d9148, - 0x2e0704, - 0x2c2644, - 0x2f7d05, - 0x3b0786, - 0x2fe707, - 0x234643, - 0x2b4f45, - 0x250504, - 0x3b8506, - 0x32d848, - 0x20bec5, - 0x2a7e89, - 0x359c45, - 0x264888, - 0x23ec07, - 0x3c3908, - 0x2d8d87, - 0x39f0c9, - 0x26ac06, - 0x2e4346, - 0x2a4784, - 0x30f9c5, - 0x3de58c, - 0x2909c7, - 0x290e87, - 0x38bdc8, - 0x2b3046, - 0x2ac384, - 0x327b84, - 0x298349, - 0x2e7b86, - 0x2b2387, - 0x3490c4, - 0x2bb206, - 0x3b7645, - 0x2ee247, - 0x2f0586, - 0x2576c9, - 0x2cec47, - 0x2acf87, - 0x2bab06, - 0x29aa85, - 0x295708, - 0x21e1c8, - 0x37be06, - 0x20bf05, - 0x3936c6, - 0x206b03, - 0x2b2689, - 0x3d34ce, - 0x2d7fc8, - 0x3aad08, - 0x37bc0b, - 0x2a80c6, - 0x3a0bc4, - 0x297cc4, - 0x3d35ca, - 0x21afc7, - 0x267c05, - 0x210249, - 0x2dd305, - 0x3e8187, - 0x246444, - 0x2a2647, - 0x2f1fc8, - 0x3813c6, - 0x2da1c9, - 0x2d9d8a, - 0x21af46, - 0x2b0606, - 0x2c6f85, - 0x3a70c5, - 0x399347, - 0x255108, - 0x3b7588, - 0x317d46, - 0x3d6cc5, - 0x38bf0e, - 0x245f84, - 0x2b2785, - 0x28e7c9, - 0x2ed488, - 0x2a09c6, - 0x2b530c, - 0x2b61d0, - 0x2b8a8f, - 0x2ba108, - 0x359c47, - 0x3dc5c5, - 0x2a9785, - 0x2fe589, - 0x2a9789, - 0x28f506, - 0x2d0247, - 0x3a5285, - 0x24e689, - 0x3673c6, - 0x2ff94d, - 0x298689, - 0x23ee44, - 0x2d7bc8, - 0x240ac9, - 0x342cc6, - 0x2904c5, - 0x2e4346, - 0x2539c9, - 0x233b08, - 0x20f0c5, - 0x2a4c84, - 0x2b54cb, - 0x342b85, - 0x24bc46, - 0x299086, - 0x3ae7c6, - 0x24b60b, - 0x2a7f89, - 0x2281c5, - 0x338d87, - 0x248006, - 0x2718c6, - 0x2ee688, - 0x225b89, - 0x2e4b0c, - 0x314e48, - 0x323c06, - 0x33d7c3, - 0x23c1c6, - 0x309205, - 0x294988, - 0x3d66c6, - 0x2d0608, - 0x25d705, - 0x2715c5, - 0x3a0048, - 0x3aaac7, - 0x214987, - 0x381bc7, - 0x324a48, - 0x359d88, - 0x2d1506, - 0x2d23c7, - 0x3bb2c7, - 0x39ee4a, - 0x203cc3, - 0x3ebf86, - 0x267f05, - 0x284804, - 0x291789, - 0x39f044, - 0x235784, - 0x2b6a44, - 0x2b900b, - 0x33ac87, - 0x2fb245, - 0x2ad6c8, - 0x28ee46, - 0x28ee48, - 0x292b86, - 0x2a1445, - 0x2a20c5, - 0x2a5106, - 0x279208, - 0x2a60c8, - 0x291946, - 0x2ad50f, - 0x2b2150, - 0x209805, - 0x206b43, - 0x2856c5, - 0x326848, - 0x2a9689, - 0x355e08, - 0x21e448, - 0x26afc8, - 0x33ad47, - 0x28eb09, - 0x2d0808, - 0x2a56c4, - 0x2b68c8, - 0x21a689, - 0x2d2907, - 0x2d2d04, - 0x348e48, - 0x255a8a, - 0x3221c6, - 0x21e4c6, - 0x222849, - 0x2b6407, - 0x2ebc48, - 0x2464c8, - 0x3d0b88, - 0x279b85, - 0x3b7e85, - 0x255ec5, - 0x2ee8c5, - 0x3cf007, - 0x208c85, - 0x2de345, - 0x207906, - 0x355d47, - 0x3b69c7, - 0x255d86, - 0x2f1c85, - 0x24bc46, - 0x220805, - 0x2e4888, - 0x32c584, - 0x2e62c6, - 0x398c44, - 0x2d8f48, - 0x2e63ca, - 0x291f4c, - 0x2b7685, - 0x2aebc6, - 0x2e4cc6, - 0x3e9fc6, - 0x323c84, - 0x3c8045, - 0x292447, - 0x2b6489, - 0x2eb507, - 0x7bf004, - 0x7bf004, - 0x33ab05, - 0x315d84, - 0x2b4aca, - 0x28ecc6, - 0x39ffc4, - 0x3cb6c5, - 0x3c4605, - 0x2d1cc4, - 0x298cc7, - 0x3d4387, - 0x2ea9c8, - 0x3937c8, - 0x20f0c9, - 0x2d79c8, - 0x29d40b, - 0x20cf04, - 0x317f45, - 0x295e45, - 0x381b49, - 0x225b89, - 0x2feec8, - 0x23dd08, - 0x288b04, - 0x258ec5, - 0x203ec3, - 0x360b45, - 0x2b5186, - 0x2af8cc, - 0x21e246, - 0x2903c6, - 0x2a0c45, - 0x2fb308, - 0x2e9786, - 0x26d206, - 0x21e4c6, - 0x22a3cc, - 0x286c44, - 0x378dca, - 0x2a0b88, - 0x2af707, - 0x250406, - 0x267d87, - 0x309f05, - 0x29ab46, - 0x368d86, - 0x381847, - 0x2357c4, - 0x220445, - 0x28e7c4, - 0x2c6607, - 0x28ea08, - 0x28fd4a, - 0x296087, - 0x2c2207, - 0x359bc7, - 0x2fcec9, - 0x2af8ca, - 0x234b43, - 0x2356c5, - 0x211783, - 0x2d3f09, - 0x362c88, - 0x375b07, - 0x355f09, - 0x21e2c6, - 0x227a08, - 0x35b685, - 0x20c2ca, - 0x3839c9, - 0x29c009, - 0x2e5a47, - 0x3e5189, - 0x211648, - 0x3d2c06, - 0x2aed88, - 0x204407, - 0x234c87, - 0x2ac6c7, - 0x3ce308, - 0x386186, - 0x255845, - 0x292447, - 0x2b0108, - 0x378c04, - 0x2ed884, - 0x2a6b47, - 0x2c7f87, - 0x29c24a, - 0x3d2b86, - 0x3c834a, - 0x2dd947, - 0x245d47, - 0x220504, - 0x2a2c84, - 0x2ee146, - 0x3e9a84, - 0x3e9a8c, - 0x318d05, - 0x217449, - 0x2af004, - 0x2d1d85, - 0x229688, - 0x20bb45, - 0x39dc06, - 0x237e44, - 0x2aa98a, - 0x2c6a06, - 0x2afdca, - 0x263b07, - 0x2a71c5, - 0x2353c5, - 0x24b00a, - 0x28d4c5, - 0x2b9606, - 0x24f184, - 0x2ce946, - 0x399405, - 0x3d6786, - 0x3e4e0c, - 0x3f278a, - 0x2abd04, - 0x234ec6, - 0x2b6407, - 0x2f0504, - 0x3576c8, - 0x2d6446, - 0x3a0b49, - 0x2f8649, - 0x2c4449, - 0x30fc46, - 0x204506, - 0x2aeec7, - 0x204048, - 0x204309, - 0x33ac87, - 0x2ad846, - 0x3d5d87, - 0x244545, - 0x245f84, - 0x2aea87, - 0x3bb485, - 0x29ccc5, - 0x394687, - 0x255648, - 0x3dedc6, - 0x2b0f8d, - 0x2b2a0f, - 0x2b7f4d, - 0x222744, - 0x242046, - 0x2f3508, - 0x3ea185, - 0x24b4c8, - 0x36790a, - 0x23ee44, - 0x2d2686, - 0x217e87, - 0x2198c7, - 0x36b989, - 0x2aed45, - 0x2d1cc4, - 0x2d374a, - 0x2d9849, - 0x3e5287, - 0x36be46, - 0x342cc6, - 0x258e06, - 0x270c06, - 0x32f48f, - 0x2f33c9, - 0x20bfc6, - 0x271506, - 0x23b6c9, - 0x2d24c7, - 0x200e83, - 0x22a546, - 0x21c543, - 0x364448, - 0x285e47, - 0x2ba309, - 0x2b9b48, - 0x214ac8, - 0x318146, - 0x232c89, - 0x38f805, - 0x23c104, - 0x383887, - 0x3a1285, - 0x222744, - 0x38c208, - 0x21b284, - 0x2d2207, - 0x2e5106, - 0x27b105, - 0x2af248, - 0x342b8b, - 0x316ec7, - 0x24b286, - 0x2e7504, - 0x3a9606, - 0x27e985, - 0x3bb485, - 0x295489, - 0x2988c9, - 0x234cc4, - 0x234d05, - 0x214b85, - 0x20c146, - 0x316ac8, - 0x2dcc46, - 0x256e8b, - 0x2cb48a, - 0x2d8e85, - 0x2a2146, - 0x23a245, - 0x357e45, - 0x2b5e87, - 0x3ec208, - 0x279284, - 0x260c46, - 0x2a6146, - 0x211807, - 0x32cf84, - 0x294006, - 0x2ff245, - 0x2ff249, - 0x204704, - 0x3139c9, - 0x291946, - 0x2df708, - 0x214b85, - 0x3a0dc5, - 0x3d6786, - 0x2e4a09, - 0x21ba49, - 0x290446, - 0x2ed588, - 0x23ee48, - 0x23a204, - 0x2d3bc4, - 0x2d3bc8, - 0x20ba88, - 0x38f9c9, - 0x2b5106, - 0x21e4c6, - 0x34214d, - 0x3203c6, - 0x2df0c9, - 0x228285, - 0x21c586, - 0x233c88, - 0x33ed85, - 0x3bb304, - 0x27e985, - 0x2981c8, - 0x2b4889, - 0x28e884, - 0x2d4e86, - 0x2f098a, - 0x398548, - 0x29c3c9, - 0x290b0a, - 0x355e86, - 0x2b2bc8, - 0x37f905, - 0x2a0e08, - 0x309f85, - 0x21e189, - 0x344849, - 0x231e42, - 0x2d7745, - 0x295f06, - 0x291887, - 0x284805, - 0x328146, - 0x31f388, - 0x2b3046, - 0x2f7709, + 0x2cdf04, + 0x2d6e46, + 0x267486, + 0x2fb406, + 0x335986, + 0x211cc4, + 0x25b986, + 0x2d6b46, + 0x2a7c86, + 0x227806, + 0x3cbf86, + 0x2fc686, + 0x2404c8, + 0x2c92c8, + 0x2ec248, + 0x3539c8, + 0x3cc606, + 0x2034c5, + 0x294106, + 0x2c0ac5, + 0x39a847, + 0x245685, + 0x2114c3, + 0x3202c5, + 0x3ec504, + 0x3cc0c5, + 0x2200c3, + 0x3525c7, + 0x2dd908, + 0x30efc6, + 0x2bf20d, + 0x289546, + 0x2a7205, + 0x21ea43, + 0x2d2c89, + 0x24c046, + 0x2a6546, + 0x2afb84, + 0x3a4d07, + 0x347b06, + 0x2da905, + 0x261643, + 0x212584, + 0x28d486, + 0x3aae04, + 0x3bd448, + 0x208249, + 0x27f209, + 0x2b0f8a, + 0x2b2e8d, + 0x233907, + 0x394fc6, + 0x226f84, + 0x2760c9, + 0x295048, + 0x296e86, + 0x23cb06, + 0x2a4a47, + 0x370046, + 0x21d946, + 0x2fe906, + 0x3ea58a, + 0x213388, + 0x22a685, + 0x2fe709, + 0x3d92ca, + 0x318ec8, + 0x2ac448, + 0x2a64c8, + 0x3721cc, + 0x32cc45, + 0x2ae788, + 0x2ce3c6, + 0x36f986, + 0x2dec07, + 0x280dc5, + 0x25ccc5, + 0x27f0c9, + 0x2053c7, + 0x273205, + 0x21fd07, + 0x21da03, + 0x2e1c05, + 0x21b548, + 0x263307, + 0x2ac309, + 0x2cf105, + 0x2fb984, + 0x329e48, + 0x3d8147, + 0x2355c8, + 0x20e208, + 0x397bc5, + 0x273046, + 0x213a46, + 0x3af7c9, + 0x267587, + 0x2c0f06, + 0x3bf107, + 0x203b83, + 0x3b60c4, + 0x3cd5c5, + 0x236484, + 0x24dc84, + 0x24bc07, + 0x278647, + 0x28a2c4, + 0x2ac150, + 0x346947, + 0x3d7285, + 0x3dc28c, + 0x20dfc4, + 0x2bedc8, + 0x2764c9, + 0x2c4ac6, + 0x324988, + 0x256584, + 0x2878c8, + 0x2e0c46, + 0x227688, + 0x2ad246, + 0x2e93cb, + 0x3b9a85, + 0x3cd448, + 0x208684, + 0x20868a, + 0x2ac309, 0x290f86, - 0x2ee508, - 0x2c3945, - 0x2533c6, - 0x20cf48, - 0x296f08, - 0x362a48, - 0x321f88, - 0x2185c4, - 0x232783, - 0x2f7944, - 0x296286, - 0x244584, - 0x3aac47, - 0x26d109, - 0x2e6645, - 0x2464c6, - 0x22a546, - 0x2a4b4b, - 0x2d1086, - 0x285906, - 0x2e9608, - 0x240646, - 0x2a6fc3, - 0x211483, - 0x245f84, - 0x23c405, - 0x328387, - 0x28ea08, - 0x28ea0f, - 0x29234b, - 0x3168c8, - 0x2d4f06, - 0x316bce, - 0x24b443, - 0x328304, - 0x2d1005, - 0x2d1b46, - 0x2a424b, - 0x2a89c6, - 0x21f509, - 0x27b105, - 0x38e748, - 0x209c08, - 0x21b90c, - 0x2b9046, - 0x360b86, - 0x3e4245, - 0x29d088, - 0x20cf45, - 0x2402c8, - 0x2b568a, - 0x2b8389, - 0x7bf004, - 0x2000c2, - 0x5420b642, - 0x200382, - 0x25c204, - 0x200ec2, - 0x230944, - 0x201f42, - 0x2003c2, - 0x206382, - 0x1c3448, - 0x11d44, - 0x21a043, - 0x226783, - 0x20f583, - 0xb882, - 0x5cf02, - 0x214e43, - 0x214883, - 0x24acc3, - 0x2ccc2, - 0xba42, - 0x3342, - 0x20bec3, - 0x21a043, - 0x226783, - 0x20f583, - 0x25c204, - 0x214883, - 0x24acc3, - 0x24f6c3, - 0x265a04, - 0x21a043, - 0x243544, - 0x226783, - 0x2eef84, - 0x20f583, - 0x284ac7, - 0x214e43, - 0x208c43, - 0x2a1948, - 0x24acc3, - 0x2937cb, - 0x30ad83, - 0x219086, - 0x249902, - 0x30614b, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x21a043, - 0x226783, - 0x20f583, - 0x24acc3, - 0x21bd03, - 0x203783, - 0x2000c2, - 0x1c3448, - 0x235d45, - 0x3bb508, - 0x2ef0c8, - 0x20b642, - 0x3b9485, - 0x3d5ec7, - 0x201b42, - 0x3c4e47, - 0x200382, - 0x2696c7, - 0x246f89, - 0x27f1c8, - 0x3d0a09, - 0x213c02, - 0x20f2c7, - 0x393f04, - 0x3d5f87, - 0x2cb387, - 0x2dbe82, - 0x214e43, - 0x20d3c2, - 0x201f42, - 0x2003c2, - 0x2035c2, - 0x200902, - 0x206382, - 0x283b85, - 0x214405, - 0xb642, - 0x26783, - 0x21a043, - 0x226783, - 0x207ec3, - 0x20f583, - 0x211983, - 0x214883, - 0x24acc3, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x21a043, - 0x226783, - 0x20f583, - 0x159186, - 0x56ea590b, - 0x214e43, - 0x214883, - 0x24acc3, - 0x1a3d05, - 0x11f03, - 0x101, - 0x21a043, - 0x226783, - 0x20f583, - 0x25c204, - 0x20bc83, - 0x214883, - 0x24acc3, - 0x221c03, - 0x57889cc6, - 0x24dc3, - 0x1a85, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x20b642, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0xabc2, - 0x1c3448, - 0x3a103, - 0x550c4, - 0x148c0c4, - 0xfd185, - 0x1ad803, - 0x2000c2, - 0x339144, - 0x21a043, - 0x226783, - 0x20f583, - 0x23b9c3, - 0x239805, - 0x20bc83, - 0x222043, - 0x214883, - 0x262243, - 0x24acc3, - 0x219303, - 0x212f03, - 0x200f83, - 0x15103, - 0x5c2, - 0x445c2, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x2000c2, - 0x20bec3, - 0x20b642, - 0x101c2, - 0x226783, - 0x20f583, - 0x25c204, - 0x214883, - 0x24acc3, - 0x206382, - 0x1c3448, - 0x20f583, - 0x1c3448, - 0x2507c3, - 0x21a043, - 0x23e084, - 0x226783, - 0x20f583, - 0x206502, - 0x214e43, - 0x214883, - 0x24acc3, - 0x21a043, - 0x226783, - 0x20f583, - 0x206502, - 0x2384c3, - 0x214883, - 0x24acc3, - 0x305103, - 0x219303, - 0x2000c2, - 0x20b642, - 0x20f583, - 0x214883, - 0x24acc3, - 0x219085, - 0x16f9c6, - 0x78884, - 0xc47c4, - 0x265a04, - 0x249902, - 0x882, - 0x1c3448, - 0x101c2, - 0x5cf02, - 0x19c2, - 0x2000c2, - 0x14f985, - 0x27348, - 0x104543, - 0x20b642, - 0x49344, - 0x5cd61806, - 0x2d784, - 0xbe6cb, - 0x47306, - 0x89207, - 0x629c9, - 0x226783, - 0x5b4c8, - 0x5b4cb, - 0x5b94b, - 0x5c6cb, - 0x5ca0b, - 0x5cccb, - 0x5d10b, - 0x128c6, - 0x20f583, - 0x100185, - 0x1c0044, - 0x220303, - 0x121dc7, - 0x12f3c6, - 0x13b0c5, - 0xca04, - 0xf9004, - 0x82384, - 0x214883, - 0x90546, - 0x149204, - 0x24acc3, - 0x30b844, - 0x13b587, - 0x16f5c9, - 0xbe488, - 0x1e3885, - 0xf644, - 0x1d60c4, - 0x467c3, - 0x1d4803, - 0x5f986, - 0x112c8, - 0x198d45, - 0x1bf7c9, - 0x15ac3, - 0x112cc6, - 0x14f985, - 0x20b642, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x208c43, - 0x24acc3, - 0x30ad83, - 0x249902, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x231a43, - 0x225a04, - 0x214883, - 0x24acc3, - 0x21a043, - 0x226783, - 0x2eef84, - 0x20f583, - 0x214883, - 0x24acc3, - 0x219086, - 0x226783, - 0x20f583, - 0x1fe83, - 0x24acc3, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x14f985, - 0x89207, - 0x9043, - 0x15ac3, - 0xba02, - 0x1c3448, - 0x20f583, - 0x21a043, - 0x226783, - 0x20f583, - 0x3e03, - 0x1a2a48, - 0x214883, - 0x24acc3, - 0x6061a043, - 0x226783, - 0x214883, - 0x24acc3, - 0x1c3448, - 0x2000c2, - 0x20b642, - 0x21a043, - 0x20f583, - 0x214883, - 0x2003c2, - 0x24acc3, - 0x344d87, - 0x23ac8b, - 0x217f43, - 0x28f1c8, - 0x203dc7, - 0x392fc6, - 0x228745, - 0x3b95c9, - 0x218e08, - 0x284ec9, - 0x284ed0, - 0x38a44b, - 0x3b1ec9, - 0x209043, - 0x207b09, - 0x23fd06, - 0x23fd0c, - 0x235e08, - 0x3f02c8, - 0x378149, - 0x2d884e, - 0x246d4b, - 0x2cae4c, - 0x205d83, - 0x2828cc, - 0x205d89, - 0x3f10c7, - 0x24100c, - 0x2ccaca, - 0x2346c4, - 0x2c5fcd, - 0x282788, - 0x3dcd4d, - 0x2874c6, - 0x265a0b, - 0x36f749, - 0x271787, - 0x20c506, - 0x326109, - 0x3a97ca, - 0x3bc848, - 0x30a984, - 0x2c8a07, - 0x252dc7, - 0x349b04, - 0x224c04, - 0x3ed149, - 0x324fc9, - 0x3d6448, - 0x33a645, - 0x213b45, - 0x20ef86, - 0x2c5e89, - 0x37ebcd, - 0x21c688, - 0x20ee87, - 0x2287c8, - 0x251c86, - 0x241804, - 0x3676c5, - 0x3e8046, - 0x3ef204, - 0x205c87, - 0x20864a, - 0x217384, - 0x21ae86, - 0x21ee89, - 0x21ee8f, - 0x21f84d, - 0x21fd86, - 0x226f50, - 0x227346, - 0x2289c7, - 0x229dc7, - 0x229dcf, - 0x22b509, - 0x22e9c6, - 0x22f607, - 0x22f608, - 0x22fe09, - 0x213f08, - 0x3133c7, - 0x2327c3, - 0x238a06, - 0x33a348, - 0x2d8b0a, - 0x2063c9, - 0x218f43, - 0x3b9386, - 0x260a8a, - 0x245207, - 0x3f0f0a, - 0x3ca8ce, - 0x22b646, - 0x34afc7, - 0x364ec6, - 0x205206, - 0x3b7c8b, - 0x2129ca, - 0x25404d, - 0x2045c7, - 0x3ea348, - 0x3ea349, - 0x3ea34f, - 0x31144c, - 0x387a89, - 0x2c16ce, - 0x284bca, - 0x380186, - 0x303dc6, - 0x32004c, - 0x3240cc, - 0x32d5c8, - 0x3635c7, - 0x20d6c5, - 0x3d6144, - 0x34a24e, - 0x224444, - 0x3eb647, - 0x3be48a, - 0x3ee394, - 0x23790f, - 0x229f88, - 0x2388c8, - 0x21c10d, - 0x21c10e, - 0x238d49, - 0x34be48, - 0x34be4f, - 0x240d0c, - 0x240d0f, - 0x241d87, - 0x24408a, - 0x2453cb, - 0x246088, - 0x247b07, - 0x38df4d, - 0x36eac6, - 0x2c6186, - 0x24a689, - 0x274708, - 0x252248, - 0x25224e, - 0x23ad87, - 0x30e505, - 0x254705, - 0x224a84, - 0x393286, - 0x3d6348, - 0x26b343, - 0x2cc04e, - 0x38e308, - 0x3a1fcb, - 0x3a9ec7, - 0x317b85, - 0x282a46, - 0x2c5387, - 0x36f048, - 0x371dc9, - 0x241645, - 0x29b648, - 0x362546, - 0x3bdbca, - 0x34a149, - 0x2410c9, - 0x2410cb, - 0x343608, - 0x3499c9, - 0x2cdc86, - 0x2801ca, - 0x28c9ca, - 0x24428c, - 0x371c47, - 0x27efca, - 0x20b30b, - 0x20b319, - 0x2dcdc8, - 0x219105, - 0x2e82c6, - 0x2e2f49, - 0x242586, - 0x311cca, - 0x219ec6, - 0x201d04, - 0x2e844d, - 0x201d07, - 0x333549, - 0x259f45, - 0x25aac8, - 0x25b289, - 0x25d444, - 0x25db47, - 0x25db48, - 0x25de87, - 0x27c888, - 0x267987, - 0x21d585, - 0x26f44c, - 0x26f849, - 0x34deca, - 0x270f89, - 0x207c09, - 0x2712cc, - 0x27330b, - 0x274108, - 0x274908, - 0x277cc4, - 0x299708, - 0x29adc9, - 0x2ccb87, - 0x21f0c6, - 0x2b6c07, - 0x2e0209, - 0x24fa8b, + 0x3011c8, + 0x295c05, + 0x3c27c4, + 0x2becc6, + 0x2383c8, + 0x290e08, + 0x339746, + 0x34d704, + 0x287d86, + 0x3ce807, + 0x288e07, + 0x2a4a4f, + 0x34ce47, 0x3991c7, - 0x2a8707, - 0x263c47, - 0x3dccc4, - 0x3dccc5, - 0x2f4f05, - 0x35ff0b, - 0x3e23c4, - 0x3db408, - 0x2bdd8a, - 0x362607, - 0x3efec7, - 0x2a3252, - 0x293a86, - 0x23c686, - 0x33610e, - 0x29f746, - 0x2a9408, - 0x2aa48f, - 0x3dd108, - 0x2584c8, - 0x31004a, - 0x310051, - 0x2bb38e, - 0x280cca, - 0x280ccc, - 0x2704c7, - 0x34c050, + 0x36f845, + 0x3da505, + 0x2b1949, + 0x2e8bc6, + 0x28ec45, + 0x2920c7, + 0x2e6dc8, + 0x238d45, + 0x35f646, + 0x21aa48, + 0x3c98ca, + 0x24d6c8, + 0x299e47, + 0x308e06, + 0x2fe6c6, + 0x2003c3, + 0x213b83, + 0x3d9489, + 0x29d6c9, + 0x2bde86, + 0x2cf105, + 0x23d0c8, + 0x3011c8, + 0x2ab488, + 0x2fe98b, + 0x2bf447, + 0x325149, + 0x2a4cc8, + 0x2738c4, + 0x205bc8, + 0x29c409, + 0x2c1205, + 0x20be07, + 0x3b6145, + 0x290d08, + 0x29f20b, + 0x2a5cd0, + 0x2bb605, + 0x21590c, + 0x240785, + 0x28e183, + 0x2d0606, + 0x2d6144, + 0x27fd86, + 0x2acc87, + 0x20df44, + 0x2d27c8, + 0x36650d, + 0x39b545, + 0x233944, + 0x360444, + 0x398f09, + 0x2a9f48, + 0x337047, + 0x2e0cc8, + 0x2912c8, + 0x28a405, + 0x3d97c7, + 0x28a387, + 0x3be0c7, + 0x279a49, + 0x373a09, + 0x24acc6, + 0x2df406, + 0x292186, + 0x32dac5, + 0x3c4904, + 0x3d0f86, + 0x3d3186, + 0x28a448, + 0x29f70b, + 0x23a547, + 0x226f84, + 0x347a46, + 0x3ee387, + 0x2fc285, + 0x258805, + 0x2266c4, + 0x373986, + 0x3d1008, + 0x2760c9, + 0x251846, + 0x294e48, + 0x2da9c6, + 0x367508, + 0x37130c, + 0x28a2c6, + 0x2a6ecd, + 0x2a734b, + 0x2c7e05, + 0x36a407, + 0x2cdf86, + 0x334988, + 0x24ad49, + 0x2bf748, + 0x3d7285, + 0x2a5647, + 0x290008, + 0x25d109, + 0x2690c6, + 0x26694a, + 0x334708, + 0x2bf58b, + 0x2dad8c, + 0x2879c8, + 0x28b686, + 0x3dc788, + 0x3c9547, + 0x3b6889, + 0x29e90d, + 0x2ab746, + 0x2c9448, + 0x2c9189, + 0x2d3e48, + 0x292cc8, + 0x2d780c, + 0x2d8707, + 0x2d9507, + 0x279885, + 0x2d1187, + 0x2e6c88, + 0x2bed46, + 0x2516cc, + 0x30b848, + 0x2e7b88, + 0x353c86, + 0x3dd907, + 0x24aec4, + 0x3539c8, + 0x2939cc, + 0x297f0c, + 0x3cf2c5, + 0x3afc47, + 0x34d686, + 0x3dd886, + 0x3a1148, + 0x221444, + 0x2269cb, + 0x258fcb, + 0x308e06, + 0x366387, + 0x34d885, + 0x280485, + 0x226b06, + 0x295bc5, + 0x24e705, + 0x223247, + 0x2200c9, + 0x203284, + 0x240c45, + 0x312105, + 0x3aab88, + 0x34f385, + 0x2d5e09, + 0x2bfe87, + 0x2bfe8b, + 0x307886, + 0x240209, + 0x3819c8, + 0x28b885, + 0x3be1c8, + 0x373a48, + 0x28bec7, + 0x22b247, + 0x24bc89, + 0x2275c7, + 0x29b3c9, + 0x2bcc4c, + 0x2bde88, + 0x2dabc9, + 0x2ddec7, + 0x291389, + 0x221b47, + 0x2dae88, + 0x3c9485, + 0x2d6dc6, + 0x2d8188, + 0x246748, + 0x3d9189, + 0x24e747, + 0x3ade05, + 0x3d8c09, + 0x387046, + 0x29e704, + 0x32a946, + 0x248788, + 0x253a87, + 0x29f908, + 0x242009, + 0x2b64c7, + 0x2ab5c6, + 0x205f04, + 0x320349, + 0x3d9648, + 0x353b47, + 0x37b106, + 0x29f646, + 0x354244, + 0x2d17c6, + 0x23be43, + 0x3d5bc9, + 0x3b9a46, + 0x275dc5, + 0x2ae506, + 0x235705, + 0x290488, + 0x3b6747, + 0x240ec6, + 0x369f46, + 0x314c88, + 0x2b1ac7, + 0x2ab785, + 0x2abf48, + 0x3e0988, + 0x334708, + 0x240645, + 0x2d6e46, + 0x27efc9, + 0x3af644, + 0x31260b, + 0x21d64b, + 0x22a589, + 0x21da03, + 0x264ac5, + 0x320a46, + 0x244fc8, + 0x2b9344, + 0x30efc6, + 0x2b5e89, + 0x37cbc5, + 0x223186, + 0x3d8146, + 0x20cc04, + 0x2fae0a, + 0x275d08, + 0x246746, + 0x379305, + 0x2055c7, + 0x340fc7, + 0x273044, + 0x21d887, + 0x245644, + 0x245646, + 0x206503, + 0x279a45, + 0x2c3905, + 0x214b08, + 0x290985, + 0x28a009, + 0x2b3fc7, + 0x35380b, + 0x2b3fcc, + 0x2b45ca, + 0x355507, + 0x210cc3, + 0x288808, + 0x307c05, + 0x238dc5, + 0x35cb84, + 0x2dad86, + 0x2764c6, + 0x2d1807, + 0x26158b, + 0x211cc4, + 0x210f84, + 0x2e0ec4, + 0x2e5fc6, + 0x20df44, + 0x2d1608, + 0x35c985, + 0x28ac85, + 0x2ab3c7, + 0x36a509, + 0x340d85, + 0x33ca8a, + 0x2b1609, + 0x2a88ca, + 0x3ea6c9, + 0x318884, + 0x37cf05, + 0x370148, + 0x3706cb, + 0x213785, + 0x2d9b46, + 0x247004, + 0x28a546, + 0x2b6349, + 0x3ee487, + 0x269f08, + 0x2b3206, + 0x3ce787, + 0x290e08, + 0x37fd46, + 0x205f84, + 0x267ec7, + 0x38a345, + 0x399b87, + 0x256484, + 0x2cdf06, + 0x341108, + 0x2a7508, + 0x302d47, + 0x34d3c8, + 0x2a5485, + 0x21d784, + 0x2ff988, + 0x316684, + 0x20cac5, + 0x3a0f44, + 0x3f3347, + 0x298587, + 0x2914c8, + 0x235746, + 0x290905, + 0x289e08, + 0x24d8c8, + 0x2b0ec9, + 0x21d946, + 0x231208, + 0x20850a, + 0x2fc308, + 0x31db05, + 0x256906, + 0x2b14c8, + 0x2a570a, + 0x35ec47, + 0x295485, + 0x2a1d88, + 0x2b8e44, + 0x25bdc6, + 0x2d9f48, + 0x3cbf86, + 0x3c38c8, + 0x2a6747, + 0x3cb0c6, + 0x2ce7c4, + 0x360e47, + 0x2ca244, + 0x2b6307, + 0x353e8d, + 0x22a605, + 0x2c684b, + 0x298186, + 0x25e008, + 0x2d2784, + 0x2319c6, + 0x28d486, + 0x3dcac7, + 0x2a6b8d, + 0x30d487, + 0x2cafc8, + 0x3adec5, + 0x302fc8, + 0x2e11c6, + 0x2a5508, + 0x230746, + 0x3dc007, + 0x3557c9, + 0x35e947, + 0x297148, + 0x2547c5, + 0x22bd48, + 0x22af85, + 0x35f585, + 0x373385, + 0x2136c3, + 0x21d584, + 0x2a1f85, + 0x24c849, + 0x37b006, + 0x31ae08, + 0x3d83c5, + 0x2cc607, + 0x371fca, + 0x2230c9, + 0x2f3e0a, + 0x2ec2c8, + 0x21fb4c, + 0x29214d, + 0x3e7703, + 0x3c37c8, + 0x212545, + 0x3c9686, + 0x210b86, + 0x360385, + 0x3bf209, + 0x2ffd45, + 0x289e08, + 0x266186, + 0x374506, + 0x2b23c9, + 0x268887, + 0x29f4c6, + 0x371f48, + 0x2fb308, + 0x2f66c7, + 0x2e650e, + 0x2e1405, + 0x25d005, + 0x3cbe88, + 0x36ad87, + 0x2084c2, + 0x2d75c4, + 0x27fc8a, + 0x353c08, + 0x373b86, + 0x2a9348, + 0x213a46, 0x3da388, - 0x2bb585, - 0x2c67ca, - 0x3ef24c, - 0x2633cd, - 0x211986, - 0x211987, - 0x21198c, - 0x21348c, - 0x23760c, - 0x2c8d8b, - 0x3ac7c4, - 0x20b3c4, - 0x2ca709, - 0x327c07, - 0x239d89, - 0x28c809, - 0x2cc787, - 0x2cc946, - 0x2cc949, - 0x2ccd43, - 0x2b314a, - 0x33a207, - 0x3ec40b, - 0x253eca, - 0x269804, - 0x3f4106, - 0x296309, - 0x3cc144, - 0x2f0eca, - 0x309345, - 0x2db705, - 0x2db70d, - 0x2dba4e, - 0x368f45, - 0x343a46, - 0x218c87, - 0x2514ca, - 0x224746, - 0x282484, - 0x301007, - 0x2e5f8b, - 0x370c87, - 0x367e04, - 0x31a606, - 0x31a60d, - 0x2f64cc, - 0x214746, - 0x21c88a, - 0x226346, - 0x3d39c8, - 0x27b587, - 0x22be0a, - 0x363cc6, - 0x2044c3, - 0x300346, - 0x254948, - 0x37beca, - 0x2a37c7, - 0x2a37c8, - 0x2a6604, - 0x293c87, - 0x3a8548, - 0x2d0988, - 0x32f7c8, - 0x2d318a, - 0x2fc3c5, - 0x247c47, - 0x280b13, - 0x28b3c6, - 0x255308, - 0x22dac9, - 0x3c4d08, - 0x3181cb, - 0x2d4148, - 0x2e60c4, - 0x3a0146, - 0x32eb86, - 0x3b05c9, - 0x2e5e47, - 0x26f548, - 0x29ac46, - 0x394584, - 0x339b85, - 0x3dc748, - 0x259b0a, - 0x2e80c8, - 0x2ec306, - 0x2b2dca, - 0x2067c8, - 0x2e0508, - 0x2f1148, - 0x2f1946, - 0x2f3706, - 0x3b564c, - 0x2f3c10, - 0x2f4005, - 0x23bc88, - 0x23bc90, - 0x3dcf10, - 0x284d4e, - 0x3b52ce, - 0x3b52d4, - 0x3ba58f, - 0x3ba946, - 0x3f0991, - 0x349bd3, - 0x20c688, - 0x3ea6c5, - 0x28f708, - 0x3263c5, - 0x351c0c, - 0x218949, - 0x224289, - 0x231107, - 0x3bdfc9, - 0x3619c7, - 0x3bfb86, - 0x3674c7, - 0x202a85, - 0x211f43, - 0x21fe83, - 0x284704, - 0x21564d, - 0x39950f, - 0x3945c5, - 0x218846, - 0x236787, - 0x235b87, - 0x2e1686, - 0x2e168b, - 0x2bc245, - 0x215a46, - 0x3baec7, - 0x268649, - 0x22b386, - 0x22e385, - 0x3ecbcb, - 0x3f2686, - 0x21b645, - 0x243cc8, - 0x2a4948, - 0x2b38cc, - 0x2b38d0, - 0x2bc389, - 0x2c12c7, - 0x331a0b, - 0x2dbfc6, - 0x31328a, - 0x3b890b, - 0x35484a, - 0x329f06, - 0x304fc5, - 0x339f46, - 0x29bb08, - 0x2a5aca, - 0x21bd9c, - 0x3b8c0c, - 0x30ae48, - 0x219085, - 0x226987, - 0x2d8486, - 0x2dab05, - 0x223606, - 0x2e1848, - 0x2d9ac7, - 0x2d8748, - 0x28b48a, - 0x2fc9cc, - 0x2544c9, - 0x3c7e07, - 0x232004, - 0x297206, - 0x25804a, - 0x28c905, - 0x22488c, - 0x224f48, - 0x311fc8, - 0x333a8c, - 0x2385cc, - 0x239949, - 0x239b87, - 0x2509cc, - 0x365984, - 0x25e28a, - 0x21dd0c, - 0x288dcb, - 0x3acf0b, - 0x3ae506, - 0x26d587, - 0x26ffc7, - 0x34c28f, - 0x319791, - 0x2fa352, - 0x26ffcd, - 0x26ffce, - 0x27030e, - 0x3ba748, - 0x3ba752, - 0x365e48, - 0x25c007, - 0x265e4a, - 0x260048, - 0x29f705, - 0x3cee4a, - 0x227887, - 0x2dc104, - 0x220203, - 0x397405, - 0x3102c7, - 0x301d07, - 0x2635ce, - 0x3e3b8d, - 0x31a2c9, - 0x289f05, - 0x3291c3, - 0x346086, - 0x272405, - 0x3a2208, - 0x20d949, - 0x2e8305, - 0x38e14f, - 0x2be7c7, - 0x2285c5, - 0x3aa88a, - 0x209ac6, - 0x2ab4c9, - 0x35c24c, - 0x36ed09, - 0x20e786, - 0x2bdb8c, - 0x373686, - 0x3e2a48, - 0x210106, - 0x27fe06, - 0x2d1204, - 0x207e03, - 0x3b188a, - 0x2a3d11, - 0x263f4a, - 0x3a9c45, - 0x26f0c7, - 0x26c847, - 0x2d4b04, - 0x3a864b, - 0x3d0888, - 0x2d7cc6, - 0x38be45, - 0x279f04, - 0x26ec09, - 0x2008c4, - 0x3d2887, - 0x33c805, - 0x33c807, - 0x336345, - 0x25ff03, - 0x25bec8, - 0x26b54a, - 0x234643, - 0x235d8a, - 0x234646, - 0x38decf, - 0x2744c9, - 0x2cbfd0, - 0x229188, - 0x2ecc09, - 0x2b0dc7, - 0x31a58f, - 0x3562c4, - 0x2ef004, - 0x2271c6, - 0x358686, - 0x3ae00a, - 0x26aa06, - 0x2c9407, - 0x31d888, - 0x31da87, - 0x31f147, - 0x32134a, - 0x31fa4b, - 0x325785, - 0x2f9f88, - 0x229783, - 0x3d880c, - 0x20d44f, - 0x32dd8d, - 0x2b7187, - 0x237209, - 0x24e147, - 0x2d4448, - 0x3ee58c, - 0x308548, - 0x256bc8, - 0x33c44e, - 0x34e914, - 0x34ee24, - 0x36c50a, - 0x38aacb, - 0x361a84, - 0x361a89, - 0x2d2708, - 0x255545, - 0x203bca, - 0x29cb07, - 0x220c04, - 0x20bec3, - 0x21a043, - 0x243544, - 0x226783, - 0x20f583, - 0x25c204, - 0x20bc83, - 0x214e43, - 0x2f3c06, - 0x225a04, - 0x214883, - 0x24acc3, - 0x205443, + 0x2c0f08, + 0x35f544, + 0x2cca05, + 0x7a24c4, + 0x7a24c4, + 0x7a24c4, + 0x2149c3, + 0x2030c6, + 0x28a2c6, + 0x2ad64c, + 0x2085c3, + 0x256486, + 0x213604, + 0x24bfc8, + 0x2b5cc5, + 0x27fd86, + 0x2b3bc8, + 0x2ed646, + 0x240e46, + 0x3d7f48, + 0x3cd647, + 0x227389, + 0x31024a, + 0x20c684, + 0x245685, + 0x311005, + 0x275ec6, + 0x233946, + 0x36a946, + 0x386dc6, + 0x2274c4, + 0x2274cb, + 0x245444, + 0x205645, + 0x2c0445, + 0x261846, + 0x20d408, + 0x292007, + 0x3d5f84, + 0x26c2c3, + 0x2b8945, + 0x32a807, + 0x291f0b, + 0x214a07, + 0x2b3ac8, + 0x2d1947, + 0x291086, + 0x269ac8, + 0x2d030b, + 0x3821c6, + 0x208c89, + 0x2d0485, + 0x32b3c3, + 0x223186, + 0x2a6648, + 0x205fc3, + 0x2ce043, + 0x290e06, + 0x213a46, + 0x37deca, + 0x28b6c5, + 0x28d2cb, + 0x2ae44b, + 0x285503, + 0x212303, + 0x2c84c4, + 0x371e07, + 0x2879c4, + 0x24bfc4, + 0x2ce244, + 0x2fc608, + 0x379248, + 0x39e5c9, + 0x2e3f08, + 0x3c5607, + 0x227806, + 0x31aa4f, + 0x2e1546, + 0x2ebc44, + 0x37908a, + 0x32a707, + 0x2ca346, + 0x29e749, + 0x39e545, + 0x275845, + 0x39e686, + 0x22be83, + 0x2b8e89, + 0x213506, + 0x241dc9, + 0x398346, + 0x279a45, + 0x3cf6c5, + 0x202b83, + 0x213948, + 0x337207, + 0x273144, + 0x24be48, + 0x23d244, + 0x316586, + 0x2d0606, + 0x242706, + 0x3cd309, + 0x238d45, + 0x2ab846, + 0x259709, + 0x2e0686, + 0x2fc686, + 0x3a99c6, + 0x223005, + 0x3a0f46, + 0x3dc004, + 0x3c9485, + 0x246744, + 0x2cb886, + 0x3ca004, + 0x205643, + 0x295105, + 0x236ec8, + 0x30f687, + 0x2b93c9, + 0x295388, + 0x2a8291, + 0x3d81ca, + 0x308d47, + 0x2a6886, + 0x213604, + 0x2d8288, + 0x365b08, + 0x2a844a, + 0x2d5bcd, + 0x213686, + 0x3d8046, + 0x360f06, + 0x31fa07, + 0x2cb085, + 0x301a07, + 0x24bf05, + 0x2bffc4, + 0x2ec0c6, + 0x23cf87, + 0x2b8b8d, + 0x2b1407, + 0x2f7a48, + 0x28a109, + 0x221d46, + 0x269045, + 0x238cc4, + 0x248886, + 0x2fd246, + 0x353d86, + 0x2a9bc8, + 0x2162c3, + 0x22b183, + 0x3329c5, + 0x290a46, + 0x2c0ec5, + 0x2b3408, + 0x2ace4a, + 0x34cf84, + 0x24bfc8, + 0x2a64c8, + 0x2bc587, + 0x22b0c9, + 0x2d2fc8, + 0x276147, + 0x2d6cc6, + 0x3cbf8a, + 0x248908, + 0x329d09, + 0x2aa008, + 0x2185c9, + 0x3857c7, + 0x3add45, + 0x2feb86, + 0x2bebc8, + 0x224488, + 0x2ac5c8, + 0x308f08, + 0x205645, + 0x229f04, + 0x234888, + 0x246d84, + 0x3ea4c4, + 0x279a45, + 0x2a0a87, + 0x36a2c9, + 0x3dc8c7, + 0x208545, + 0x2877c6, + 0x378b06, + 0x208804, + 0x2b2d46, + 0x28d704, + 0x28d006, + 0x36a086, + 0x20b046, + 0x3d7285, + 0x2b32c7, + 0x210cc3, + 0x32c109, + 0x314a88, + 0x24be44, + 0x275fcd, + 0x2a7608, + 0x2fa688, + 0x329c86, + 0x3558c9, + 0x2230c9, + 0x32bb85, + 0x2acf4a, + 0x2b07ca, + 0x37d1cc, + 0x37d346, + 0x288406, + 0x2e1b46, + 0x389a49, + 0x3c98c6, + 0x2b1b06, + 0x2ffe06, + 0x3539c8, + 0x24d6c6, + 0x2eb24b, + 0x2a0c05, + 0x28ac85, + 0x288f05, + 0x3bd9c6, + 0x21d7c3, + 0x242686, + 0x2b1387, + 0x2d8145, + 0x3b9805, + 0x356e85, + 0x2c6c06, + 0x2b6104, + 0x31de86, + 0x2a3a89, + 0x3bd84c, + 0x2bfd08, + 0x238344, + 0x39ebc6, + 0x298286, + 0x2a6648, + 0x3011c8, + 0x3bd749, + 0x2055c7, + 0x35f809, + 0x281a86, + 0x22d4c4, + 0x35d904, + 0x290744, + 0x290e08, + 0x36a10a, + 0x340d06, + 0x36f707, + 0x399e07, + 0x240305, + 0x2b6c44, + 0x29c3c6, + 0x2cb0c6, + 0x221483, + 0x3148c7, + 0x20e108, + 0x2b618a, + 0x301348, + 0x214888, + 0x3ca045, + 0x22d285, + 0x23a645, + 0x2406c6, + 0x245bc6, + 0x214c45, + 0x3d5e09, + 0x2b6a4c, + 0x360987, + 0x2a84c8, + 0x29fbc5, + 0x7a24c4, + 0x227d44, + 0x263444, + 0x20fb46, + 0x2af34e, + 0x2758c7, + 0x31fc05, + 0x3af5cc, + 0x2bc447, + 0x23cf07, + 0x23fc89, + 0x20ecc9, + 0x295485, + 0x314a88, + 0x27efc9, + 0x3345c5, + 0x2d8088, + 0x2c8f46, + 0x2ffc06, + 0x252d84, + 0x325308, + 0x24b983, + 0x202cc4, + 0x2b89c5, + 0x397747, + 0x22b5c5, + 0x2083c9, + 0x29c74d, + 0x2aa806, + 0x3f2e04, + 0x39b688, + 0x21ff0a, + 0x205887, + 0x257385, + 0x202d03, + 0x2ae60e, + 0x213a4c, + 0x318fc7, + 0x2af507, + 0x4f39db87, + 0x2a446, + 0x1ecc4, + 0x20b903, + 0x3c9905, + 0x263445, + 0x2a9708, + 0x2a6309, + 0x238246, + 0x2879c4, + 0x308c86, + 0x2445cb, + 0x36d18c, + 0x255a87, + 0x2eb6c5, + 0x3e0888, + 0x2f6485, + 0x379087, + 0x2e9907, + 0x24b985, + 0x21d7c3, + 0x32bc44, + 0x27d785, + 0x203185, + 0x203186, + 0x2a3348, + 0x23cf87, + 0x210e86, + 0x354146, + 0x3732c6, + 0x2c95c9, + 0x3d98c7, + 0x25cc06, + 0x36d306, + 0x3cc806, + 0x2bbac5, + 0x218146, + 0x3ae705, + 0x34f408, + 0x2a034b, + 0x29bf46, + 0x399e44, + 0x2fce09, + 0x2b3fc4, + 0x2c8ec8, + 0x24a2c7, + 0x292bc4, + 0x2d20c8, + 0x2d8f04, + 0x2bbb04, + 0x283685, + 0x39b586, + 0x2fc547, + 0x204803, + 0x2ab685, + 0x324c04, + 0x25d046, + 0x2b60c8, + 0x34d2c5, + 0x2a0009, + 0x355505, + 0x256488, + 0x235107, + 0x3b9b48, + 0x2d1347, + 0x399289, + 0x25b806, + 0x3ef5c6, + 0x29d984, + 0x312545, + 0x366d0c, + 0x288f07, + 0x289447, + 0x233588, + 0x2aa806, + 0x2b12c4, + 0x338704, + 0x24bb09, + 0x2e1c46, + 0x28f707, + 0x3beb84, + 0x2cd906, + 0x3d7a85, + 0x2e9787, + 0x2eb1c6, + 0x266809, + 0x2e8dc7, + 0x2a4a47, + 0x2b2246, + 0x2cd845, + 0x28eac8, + 0x213388, + 0x375c46, + 0x34d305, + 0x38c1c6, + 0x206003, + 0x2a9589, + 0x36a6ce, + 0x2d1008, + 0x23d348, + 0x375a4b, + 0x2a0246, + 0x399d04, + 0x240e44, + 0x36a7ca, + 0x215807, + 0x256845, + 0x208c89, + 0x2d6c05, + 0x3ea507, + 0x236544, + 0x29a507, + 0x2f6cc8, + 0x2c5846, + 0x2ce089, + 0x2d30ca, + 0x215786, + 0x2a7146, + 0x2c03c5, + 0x39ff05, + 0x3af087, + 0x24b008, + 0x3d79c8, + 0x35f546, + 0x3cf745, + 0x2336ce, + 0x2390c4, + 0x2a9685, + 0x287149, + 0x2e89c8, + 0x299d86, + 0x2aba4c, + 0x2aca50, + 0x2aef8f, + 0x2b1848, + 0x355507, + 0x3d7285, + 0x2a1f85, + 0x2fc3c9, + 0x2a1f89, + 0x287e86, + 0x213807, + 0x3a1045, + 0x241149, + 0x362706, + 0x3c970d, + 0x290609, + 0x24bfc4, + 0x2d0908, + 0x234949, + 0x340ec6, + 0x288a05, + 0x3ef5c6, + 0x269dc9, + 0x3bea08, + 0x2034c5, + 0x208604, + 0x2abc0b, + 0x340d85, + 0x245046, + 0x256786, + 0x3a6646, + 0x24094b, + 0x2a0109, + 0x221c85, + 0x39a747, + 0x3d8146, + 0x291846, + 0x2631c8, + 0x20cc09, + 0x2f780c, + 0x32a608, + 0x3239c6, + 0x339743, + 0x22f586, + 0x307b85, + 0x28de08, + 0x3cf146, + 0x2354c8, + 0x280f45, + 0x235805, + 0x315f48, + 0x3c2f47, + 0x210ac7, + 0x2d1807, + 0x324988, + 0x355648, + 0x2ca706, + 0x2cb6c7, + 0x3b5f87, + 0x39900a, + 0x245f03, + 0x3bd9c6, + 0x233645, + 0x257504, + 0x28a109, + 0x399204, + 0x2c5844, + 0x2ad2c4, + 0x2af50b, + 0x337147, + 0x233905, + 0x2a5188, + 0x2877c6, + 0x2877c8, + 0x28b606, + 0x29a905, + 0x29ae45, + 0x29d106, + 0x272ec8, + 0x29e688, + 0x28a2c6, + 0x2a4fcf, + 0x2a9050, + 0x20ab45, + 0x210cc3, + 0x2583c5, + 0x325088, + 0x2a1e89, + 0x334708, + 0x213608, + 0x25ee48, + 0x337207, + 0x287489, + 0x2356c8, + 0x29dd44, + 0x2ad148, + 0x3aac49, + 0x2cbc07, + 0x2d32c4, + 0x3dc988, + 0x2b308a, + 0x316d06, + 0x213686, + 0x21d809, + 0x2acc87, + 0x2e6b08, + 0x2365c8, + 0x294748, + 0x284585, + 0x3cbac5, + 0x28ac85, + 0x263405, + 0x3baa87, + 0x21d7c5, + 0x2d8145, + 0x22ed86, + 0x334647, + 0x370607, + 0x2b3386, + 0x2ec805, + 0x245046, + 0x2888c5, + 0x2f7588, + 0x383f84, + 0x2e0706, + 0x3925c4, + 0x3c27c8, + 0x21900a, + 0x28a8cc, + 0x2adc05, + 0x31fac6, + 0x2f79c6, + 0x3926c6, + 0x323a44, + 0x3eda05, + 0x28aec7, + 0x2acd09, + 0x2e63c7, + 0x7a24c4, + 0x7a24c4, + 0x336fc5, + 0x2ea844, + 0x2ab20a, + 0x287646, + 0x315ec4, + 0x3afbc5, + 0x39cc85, + 0x2cafc4, + 0x2920c7, + 0x3d8d87, + 0x2e5fc8, + 0x38c2c8, + 0x2034c9, + 0x316688, + 0x29728b, + 0x275ec4, + 0x35f745, + 0x28ecc5, + 0x2d1789, + 0x20cc09, + 0x2fcd08, + 0x245448, + 0x261844, + 0x2982c5, + 0x20ba83, + 0x275e85, + 0x2ab8c6, + 0x2a614c, + 0x213406, + 0x288906, + 0x29a005, + 0x2c6c88, + 0x2e6146, + 0x2a6a06, + 0x213686, + 0x222e4c, + 0x280044, + 0x37340a, + 0x299f48, + 0x2a5f87, + 0x324b06, + 0x238307, + 0x308885, + 0x37b106, + 0x363386, + 0x37aec7, + 0x2d2dc4, + 0x3f3445, + 0x287144, + 0x2c0047, + 0x287388, + 0x28828a, + 0x28fe87, + 0x2bb6c7, + 0x355487, + 0x2f65c9, + 0x2a614a, + 0x227483, + 0x30f645, + 0x20b083, + 0x2ce289, + 0x385908, + 0x36f847, + 0x334809, + 0x213486, + 0x2214c8, + 0x352545, + 0x24d9ca, + 0x2f7089, + 0x27ec09, + 0x2dec07, + 0x365c09, + 0x20af48, + 0x205dc6, + 0x31fc88, + 0x3d6107, + 0x2275c7, + 0x2b1607, + 0x2c8d48, + 0x39dec6, + 0x2b2e45, + 0x28aec7, + 0x2a6c48, + 0x373244, + 0x3e5784, + 0x29f3c7, + 0x2c1287, + 0x27ee4a, + 0x205d46, + 0x3edd0a, + 0x2d7507, + 0x238e87, + 0x3f3504, + 0x29b484, + 0x2e9686, + 0x3d9e44, + 0x3d9e4c, + 0x315e05, + 0x20ca49, + 0x256604, + 0x2cb085, + 0x21fe88, + 0x29e745, + 0x33ca86, + 0x2a20c4, + 0x2a414a, + 0x2de406, + 0x2bbb8a, + 0x20c647, + 0x29fa45, + 0x22be85, + 0x24034a, + 0x24ba45, + 0x2b0f86, + 0x246d84, + 0x2c8646, + 0x3af145, + 0x3cf206, + 0x302d4c, + 0x33e90a, + 0x2b08c4, + 0x227806, + 0x2acc87, + 0x2eb144, + 0x3539c8, + 0x2d9a46, + 0x399c89, + 0x37a689, + 0x2bdf89, + 0x3127c6, + 0x3d6206, + 0x31fdc7, + 0x3d5d48, + 0x3d6009, + 0x337147, + 0x2a5306, + 0x3ce807, + 0x360dc5, + 0x2390c4, + 0x31f987, + 0x3b6145, + 0x296445, + 0x38d187, + 0x24b848, + 0x3e0806, + 0x2a7acd, + 0x2a990f, + 0x2ae44d, + 0x208584, + 0x236fc6, + 0x2edf08, + 0x2ffdc5, + 0x240808, + 0x28bd8a, + 0x24bfc4, + 0x2cb986, + 0x2d4e47, + 0x211cc7, + 0x3cd709, + 0x31fc45, + 0x2cafc4, + 0x2cc94a, + 0x2d2b89, + 0x365d07, + 0x3645c6, + 0x340ec6, + 0x298206, + 0x267f86, + 0x3657cf, + 0x2eddc9, + 0x24d6c6, + 0x268c86, + 0x3db209, + 0x2cb7c7, + 0x200e83, + 0x222fc6, + 0x213b83, + 0x360248, + 0x27d507, + 0x2b1a49, + 0x2b3948, + 0x210c08, + 0x360ac6, + 0x229ec9, + 0x25e185, + 0x22f4c4, + 0x2f6f47, + 0x389ac5, + 0x208584, + 0x2339c8, + 0x215ac4, + 0x2cb507, + 0x2dd886, + 0x271105, + 0x2aa008, + 0x340d8b, + 0x314f87, + 0x2405c6, + 0x2e15c4, + 0x3d33c6, + 0x279a45, + 0x3b6145, + 0x28e849, + 0x291cc9, + 0x227604, + 0x227645, + 0x210cc5, + 0x24d846, + 0x314b88, + 0x2d6546, + 0x20df4b, + 0x2c494a, + 0x2d1445, + 0x29aec6, + 0x22f985, + 0x326885, + 0x2421c7, + 0x3bdc48, + 0x272f44, + 0x393d46, + 0x29e706, + 0x20b107, + 0x32b384, + 0x28d486, + 0x2fd085, + 0x2fd089, + 0x3d6404, + 0x311149, + 0x28a2c6, + 0x2d87c8, + 0x210cc5, + 0x399f05, + 0x3cf206, + 0x2f7709, + 0x20ecc9, + 0x288986, + 0x2e8ac8, + 0x29c888, + 0x22f944, + 0x2cd104, + 0x2cd108, + 0x3c5488, + 0x35f909, + 0x2ab846, + 0x213686, + 0x34034d, + 0x30efc6, + 0x3711c9, + 0x2fd505, + 0x39e686, + 0x3dcc08, + 0x33c9c5, + 0x3b5fc4, + 0x279a45, + 0x2916c8, + 0x2aafc9, + 0x287204, + 0x2cdf06, + 0x2eb78a, + 0x318ec8, + 0x27efc9, + 0x28ab4a, + 0x334786, + 0x2a9ac8, + 0x378e45, + 0x29a1c8, + 0x308905, + 0x213349, + 0x3429c9, + 0x226942, + 0x2d0485, + 0x28ed86, + 0x28a207, + 0x257505, + 0x2f6bc6, + 0x3833c8, + 0x2aa806, + 0x370009, + 0x289546, + 0x263048, + 0x2bc805, + 0x255346, + 0x3dc108, + 0x290e08, + 0x3856c8, + 0x321948, + 0x218144, + 0x22bc83, + 0x370244, + 0x290086, + 0x360e04, + 0x23d287, + 0x2a6909, + 0x2e0ec5, + 0x2365c6, + 0x222fc6, + 0x2a318b, + 0x2ca286, + 0x294206, + 0x2e0808, + 0x245946, + 0x29f843, + 0x213183, + 0x2390c4, + 0x231105, + 0x2da807, + 0x287388, + 0x28738f, + 0x28adcb, + 0x314988, + 0x2cdf86, + 0x314c8e, + 0x2110c3, + 0x2da784, + 0x2ca205, + 0x2cae46, + 0x29c4cb, + 0x2a0b46, + 0x21aac9, + 0x271105, + 0x2612c8, + 0x3f3c08, + 0x20eb8c, + 0x2af546, + 0x275ec6, + 0x2cf105, + 0x296f08, + 0x28a8c5, + 0x2738c8, + 0x2abdca, + 0x2ae889, + 0x7a24c4, 0x2000c2, - 0x20bec3, - 0x20b642, - 0x21a043, - 0x243544, - 0x226783, - 0x20f583, - 0x20bc83, - 0x2f3c06, - 0x214883, - 0x24acc3, - 0x1c3448, - 0x21a043, - 0x226783, - 0x204703, - 0x214883, - 0x24acc3, - 0x20bec3, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x225a04, - 0x214883, - 0x24acc3, - 0x2000c2, - 0x2332c3, - 0x20b642, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x203d82, - 0x206282, - 0x20b642, - 0x21a043, - 0x20c942, - 0x2005c2, - 0x25c204, - 0x230944, - 0x2225c2, - 0x225a04, + 0x55202202, + 0x200382, + 0x2503c4, + 0x200ec2, + 0x228f84, + 0x2018c2, 0x2003c2, - 0x24acc3, - 0x205443, - 0x3ae506, - 0x22ccc2, - 0x203342, - 0x22dec2, - 0x62e2acc3, - 0x632584c3, - 0x6d386, - 0x6d386, - 0x265a04, - 0x208c43, - 0x578d, - 0x1d61ca, - 0x1a5486, - 0x1d784c, - 0x63eae24d, - 0x9694c, - 0x64489b8f, - 0x1e8b4d, - 0x177e04, - 0x7e204, - 0xee044, - 0x14f985, - 0x9e849, - 0x6268c, - 0x133907, - 0x18b86, - 0x210c8, - 0x26647, - 0x2cb08, - 0x1c588a, - 0x11c647, - 0x628c9, - 0x64adb105, - 0xf9209, - 0x64c428cb, - 0x133248, - 0x154e0b, - 0x610b, - 0xa7788, - 0x44a0a, - 0x1830ce, - 0x650becca, - 0xe6dcd, - 0x38d4d, - 0x15c4b0b, - 0xf638a, - 0x2d784, - 0x91cc6, - 0x1a0e88, - 0xd5448, - 0x42b87, - 0x2f385, - 0x1e1307, - 0xa9cc9, - 0x1e9987, - 0xa3c8, - 0xef589, - 0x5fe44, - 0x66605, - 0x85a4e, - 0x147947, - 0x6562eac6, - 0xc398d, - 0x1e9808, - 0xf9b88, - 0x65a64f46, - 0x664a7448, - 0x18860a, - 0xb3708, - 0x144f90, - 0x6a30c, - 0x78f47, - 0x7a307, - 0x7ebc7, - 0x845c7, - 0xef42, - 0x12c307, - 0x12b8c, - 0x150105, - 0x19fb07, - 0xbe1c6, - 0xbf0c9, - 0xc1bc8, - 0x7142, + 0x202ec2, + 0x1b9688, + 0x6204, + 0x206643, + 0x21f603, + 0x205503, + 0x5cc2, + 0x510c2, + 0x206543, + 0x2109c3, + 0x21f143, + 0x24b42, + 0x5fc2, + 0x2642, + 0x250b03, + 0x206643, + 0x21f603, + 0x205503, + 0x2503c4, + 0x2109c3, + 0x21f143, + 0x214f03, + 0x214f04, + 0x206643, + 0x2392c4, + 0x21f603, + 0x2e4084, + 0x205503, + 0x2577c7, + 0x206543, + 0x21d783, + 0x23d5c8, + 0x21f143, + 0x28cc4b, + 0x309b43, + 0x212fc6, + 0x23d942, + 0x30468b, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x206643, + 0x21f603, + 0x205503, + 0x21f143, + 0x20ef83, + 0x224cc3, + 0x2000c2, + 0x1b9688, + 0x22c445, + 0x3b61c8, + 0x2e41c8, + 0x202202, + 0x36b145, + 0x3ce947, + 0x201342, + 0x2d29c7, + 0x200382, + 0x2594c7, + 0x23c3c9, + 0x27a288, + 0x2945c9, + 0x20d842, + 0x3af9c7, + 0x38ca04, + 0x3cea07, + 0x2c4847, + 0x2d5782, + 0x206543, + 0x203c42, + 0x2018c2, + 0x2003c2, + 0x2020c2, + 0x200902, + 0x202ec2, + 0x39ffc5, + 0x210545, + 0x2202, + 0x1f603, + 0x206643, + 0x21f603, + 0x22b483, + 0x205503, + 0x2036c3, + 0x2109c3, + 0x21f143, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x206643, + 0x21f603, + 0x205503, + 0x157f86, + 0x57e9df8b, + 0x206543, + 0x2109c3, + 0x21f143, + 0x157285, + 0xb4c3, + 0x101, + 0x206643, + 0x21f603, + 0x205503, + 0x2503c4, + 0x211e43, + 0x2109c3, + 0x21f143, + 0x219dc3, + 0x58854986, + 0x1a6c3, + 0xfdd45, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x202202, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x5b82, + 0x1b9688, + 0x2f843, + 0x4afc4, + 0x1484ac4, + 0xf6885, + 0x1a5643, + 0x2000c2, + 0x39ab04, + 0x206643, + 0x21f603, + 0x205503, + 0x252b83, + 0x22f2c5, + 0x211e43, + 0x20f743, + 0x2109c3, + 0x22b643, + 0x21f143, + 0x213dc3, + 0x214f83, + 0x200f83, + 0xc7f03, 0x5c2, - 0x119186, - 0x19b44b, - 0x9dc6, - 0x1786c4, - 0x1a4107, - 0x64d49, - 0x191549, - 0x1c4448, - 0x5cf02, - 0x138fc9, - 0x18108, - 0xf280a, - 0xd5dc8, - 0x66ae5b8b, - 0x1bbf09, - 0x5ff86, - 0xea449, - 0xf6307, - 0xf6bc9, - 0xf9508, - 0xfad47, - 0xfc349, - 0x1011c5, - 0x101590, - 0x10210c, - 0x1c88c6, - 0x1a4045, - 0x1d95c7, - 0x4880d, - 0x36a89, - 0x672cebc3, - 0x4f585, - 0x140806, - 0x106587, - 0x10b858, - 0x1e9d08, - 0x8b1ca, - 0x23f8e, - 0x3b02, - 0x6766020b, - 0x67aea54a, - 0x1accca, - 0x72c0d, + 0x232c2, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x2000c2, + 0x250b03, + 0x202202, + 0x23c2, + 0x21f603, + 0x205503, + 0x2503c4, + 0x2109c3, + 0x21f143, + 0x202ec2, + 0x1b9688, + 0x205503, + 0x1b9688, + 0x276803, + 0x206643, + 0x232184, + 0x21f603, + 0x205503, + 0x203042, + 0x206543, + 0x2109c3, + 0x21f143, + 0x206643, + 0x21f603, + 0x205503, + 0x203042, + 0x23ddc3, + 0x2109c3, + 0x21f143, + 0x303643, + 0x213dc3, + 0x2000c2, + 0x202202, + 0x205503, + 0x2109c3, + 0x21f143, + 0x212fc5, + 0x1f0786, + 0x72544, + 0xbdc04, + 0x214f04, + 0x23d942, + 0x882, + 0x1b9688, + 0x23c2, + 0x510c2, + 0xc642, + 0x2000c2, + 0x14cb05, + 0x20e08, + 0xb2c83, + 0x202202, + 0x3fbc4, + 0x5dd5d986, + 0x26084, + 0xba94b, + 0x3c746, + 0x82b87, + 0xa1309, + 0x21f603, + 0x4f688, + 0x4f68b, + 0x4fb0b, + 0x5088b, + 0x50bcb, + 0x50e8b, + 0x512cb, + 0x1c1b46, + 0x205503, + 0x1c9f45, + 0x1a3504, + 0x21bd03, + 0x121787, + 0x165706, + 0x137585, + 0x2044, + 0xf28c4, + 0x2109c3, + 0x88a86, + 0x11ff04, + 0x21f143, + 0x30a904, + 0x137a47, + 0x1f0389, + 0xba708, + 0x1e6785, + 0x23dc4, + 0x1ceb44, + 0x368c3, + 0x1dea03, + 0x54146, + 0x1d7808, + 0x1aea85, + 0x1a2c89, + 0x1e143, + 0x100a86, + 0x14cb05, + 0x202202, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x21d783, + 0x21f143, + 0x309b43, + 0x23d942, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x20fc83, + 0x294744, + 0x2109c3, + 0x21f143, + 0x206643, + 0x21f603, + 0x2e4084, + 0x205503, + 0x2109c3, + 0x21f143, + 0x212fc6, + 0x21f603, + 0x205503, + 0x18903, + 0x21f143, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x14cb05, + 0x82b87, + 0xc043, + 0x1e143, + 0x7442, + 0x1b9688, + 0x205503, + 0x206643, + 0x21f603, + 0x205503, + 0x6d7c3, + 0x176608, + 0x2109c3, + 0x21f143, + 0x61606643, + 0x21f603, + 0x2109c3, + 0x21f143, + 0x1b9688, + 0x2000c2, + 0x202202, + 0x206643, + 0x205503, + 0x2109c3, + 0x2003c2, + 0x21f143, + 0x342f07, + 0x3be44b, + 0x22c383, + 0x287b48, + 0x3d5ac7, + 0x38bac6, + 0x20d1c5, + 0x36b289, + 0x212d48, + 0x257bc9, + 0x257bd0, + 0x383c0b, + 0x3a8989, + 0x20c043, + 0x223ac9, + 0x232f46, + 0x232f4c, + 0x22c508, + 0x3ef408, + 0x3de109, + 0x2d390e, + 0x23c18b, + 0x2c430c, + 0x2028c3, + 0x27cdcc, + 0x2028c9, + 0x315a07, + 0x235fcc, + 0x2c5d0a, + 0x204884, + 0x2bfa0d, + 0x27cc88, + 0x33244d, + 0x282386, + 0x25364b, + 0x3f0509, + 0x268f07, + 0x3c3a86, + 0x3d3bc9, + 0x358c8a, + 0x31ed88, + 0x309744, + 0x2c1d07, + 0x231ac7, + 0x335b04, + 0x21a504, + 0x206ac9, + 0x301889, + 0x3ceec8, + 0x2cbe45, + 0x20d785, + 0x208b46, + 0x2bf8c9, + 0x325b4d, + 0x39e788, + 0x208a47, + 0x20d248, + 0x237906, + 0x232b84, + 0x266485, + 0x3ea3c6, + 0x3ecf04, + 0x2027c7, + 0x204e4a, + 0x20eac4, + 0x2156c6, + 0x217509, + 0x21750f, + 0x2182cd, + 0x218806, + 0x220a10, + 0x220e06, + 0x2227c7, + 0x223407, + 0x22340f, + 0x223ec9, + 0x2270c6, + 0x227b47, + 0x227b48, + 0x227e89, + 0x3c1988, + 0x31c607, + 0x229a03, + 0x22e3c6, + 0x336ac8, + 0x2d3bca, + 0x202f09, + 0x212e83, + 0x36b046, + 0x393b8a, + 0x2345c7, + 0x31584a, + 0x373e4e, + 0x224006, + 0x321d07, + 0x25e586, + 0x202986, + 0x3cb8cb, + 0x3c1c4a, + 0x3f384d, + 0x3d62c7, + 0x2fff88, + 0x2fff89, + 0x2fff8f, + 0x2b954c, + 0x381149, + 0x2bb04e, + 0x2578ca, + 0x3796c6, + 0x2fbb86, + 0x323e8c, + 0x3f158c, + 0x32b988, + 0x35e847, + 0x21c285, + 0x3cebc4, + 0x20220e, + 0x21ca44, + 0x3d3907, + 0x3b3a8a, + 0x3ebfd4, + 0x22d6cf, + 0x2235c8, + 0x22e288, + 0x20f38d, + 0x20f38e, + 0x22e709, + 0x349208, + 0x34920f, + 0x235ccc, + 0x235ccf, + 0x236d07, + 0x23a08a, + 0x23afcb, + 0x23b988, + 0x23dc87, + 0x271d8d, + 0x3022c6, + 0x2bfbc6, + 0x242509, + 0x272348, + 0x248248, + 0x24824e, + 0x26d447, + 0x30d045, + 0x24a485, + 0x21a384, + 0x38bd86, + 0x3cedc8, + 0x25f1c3, + 0x2c544e, + 0x272148, + 0x21e20b, + 0x2769c7, + 0x35f385, + 0x27cf46, + 0x2be707, + 0x34e508, + 0x375209, + 0x2329c5, + 0x295148, + 0x30f386, + 0x3b31ca, + 0x202109, + 0x236089, + 0x23608b, + 0x347308, + 0x3359c9, + 0x2c8a46, + 0x27b28a, + 0x2853ca, + 0x23a28c, + 0x273407, + 0x27a08a, + 0x3c4d0b, + 0x3c4d19, + 0x2d66c8, + 0x213045, + 0x271f46, + 0x3798c9, + 0x35df86, + 0x2e488a, + 0x2064c6, + 0x2e2504, + 0x2e250d, + 0x33b487, + 0x35ee09, + 0x24ec45, + 0x24ef08, + 0x24f449, + 0x251604, + 0x251cc7, + 0x251cc8, + 0x252007, + 0x277dc8, + 0x25ca47, + 0x269285, + 0x265b8c, + 0x265f89, + 0x32920a, + 0x268709, + 0x223bc9, + 0x268a4c, + 0x26c18b, + 0x26d008, + 0x26d948, + 0x270d04, + 0x292648, + 0x293349, + 0x2c5dc7, + 0x217746, + 0x2ad487, + 0x370d89, + 0x245dcb, + 0x3aef07, + 0x2a0887, + 0x256687, + 0x3323c4, + 0x3323c5, + 0x3ab045, + 0x35be4b, + 0x3e4bc4, + 0x2dc688, + 0x2bd0ca, + 0x30f447, + 0x3ef007, + 0x29bad2, + 0x28cf06, + 0x231386, + 0x3da74e, + 0x298b06, + 0x2a1c08, + 0x2a2c8f, + 0x332808, + 0x296988, + 0x312bca, + 0x312bd1, + 0x2b360e, + 0x27b9ca, + 0x27b9cc, + 0x25d947, + 0x349410, + 0x3d3208, + 0x2b3805, + 0x2befca, + 0x3ecf4c, + 0x20bf0d, + 0x3cd906, + 0x3cd907, + 0x3cd90c, + 0x3f3dcc, + 0x211e4c, + 0x32cf0b, + 0x3a5bc4, + 0x21d984, + 0x2c3bc9, + 0x338787, + 0x22e049, + 0x285209, + 0x2c59c7, + 0x2c5b86, + 0x2c5b89, + 0x2c5f83, + 0x2aa90a, + 0x336987, + 0x3dd24b, + 0x3f36ca, + 0x259604, + 0x3ee686, + 0x290109, + 0x3bf3c4, + 0x2ebcca, + 0x307cc5, + 0x2d5005, + 0x2d500d, + 0x2d534e, + 0x363545, + 0x341bc6, + 0x212bc7, + 0x23884a, + 0x21cd46, + 0x2f46c4, + 0x2f8c47, + 0x3e114b, + 0x2fe247, + 0x28c284, + 0x318046, + 0x31804d, + 0x2f120c, + 0x210886, + 0x39e98a, + 0x21d406, + 0x222488, + 0x23a947, + 0x2665ca, + 0x351986, + 0x28d503, + 0x3ca106, + 0x24a6c8, + 0x375d0a, + 0x29a347, + 0x29a348, + 0x29c044, + 0x28d107, + 0x3870c8, + 0x235848, + 0x2cc748, + 0x2ccb4a, + 0x2dfa85, + 0x23ddc7, + 0x27b813, + 0x286446, + 0x235ac8, + 0x225449, + 0x2d2888, + 0x360b4b, + 0x2ce4c8, + 0x30ce84, + 0x316046, + 0x32c586, + 0x39b3c9, + 0x2dfe47, + 0x265c88, + 0x36aa46, + 0x38d084, + 0x336305, + 0x3d7408, + 0x20150a, + 0x2e2188, + 0x2e7786, + 0x2a9cca, + 0x203308, + 0x3a9dc8, + 0x2ebf48, + 0x2ec4c6, + 0x2ee106, + 0x3ac9cc, + 0x2ee6d0, + 0x2eeac5, + 0x320688, + 0x320690, + 0x332610, + 0x257a4e, + 0x3ac64e, + 0x3ac654, + 0x3b0b0f, + 0x3b0ec6, + 0x3efd91, + 0x3474d3, + 0x3c3c08, + 0x3c3205, + 0x289788, + 0x3eabc5, + 0x34f10c, + 0x212349, + 0x21c889, + 0x229747, + 0x3b35c9, + 0x35db47, + 0x3a3046, + 0x266287, + 0x28b345, + 0x20b503, + 0x218903, + 0x27fb84, + 0x3d228d, + 0x3f1dcf, + 0x38d0c5, + 0x212246, + 0x3b74c7, + 0x22c287, + 0x2d0c46, + 0x2d0c4b, + 0x2b4785, + 0x21e0c6, + 0x3b1d87, + 0x25dc49, + 0x369dc6, + 0x21e6c5, + 0x33bccb, + 0x3cd206, + 0x222b85, + 0x252c08, + 0x29d4c8, + 0x2b48cc, + 0x2b48d0, + 0x2b6f49, + 0x2c7747, + 0x2cc28b, + 0x2f6986, + 0x31c4ca, + 0x2b054b, + 0x34e74a, + 0x371946, + 0x303505, + 0x3366c6, + 0x293d08, + 0x29e14a, + 0x20f01c, + 0x309c0c, + 0x309f08, + 0x212fc5, + 0x21f807, + 0x2b2b46, + 0x2d3fc5, + 0x21b886, + 0x2d0e08, + 0x2d2e07, + 0x2d3808, + 0x28650a, + 0x2f60cc, + 0x25f449, + 0x21f247, + 0x2282c4, + 0x224606, + 0x29650a, + 0x285305, + 0x21a18c, + 0x21a848, + 0x22d0c8, + 0x22abcc, + 0x39598c, + 0x22dc09, + 0x22de47, + 0x24744c, + 0x233dc4, + 0x24b48a, + 0x217d0c, + 0x28274b, + 0x39450b, + 0x3a6386, + 0x25c1c7, + 0x25d447, + 0x34964f, + 0x317051, + 0x2f37d2, + 0x25d44d, + 0x25d44e, + 0x25d78e, + 0x3b0cc8, + 0x3b0cd2, + 0x241848, + 0x2501c7, + 0x256eca, + 0x24b2c8, + 0x298ac5, + 0x3ba8ca, + 0x221347, + 0x2e3184, + 0x24e583, + 0x38ff05, + 0x312e47, + 0x2f9947, + 0x20c10e, + 0x31618d, + 0x317d09, + 0x20e7c5, + 0x326403, + 0x344206, + 0x26a945, + 0x21e448, + 0x33c149, + 0x271f85, + 0x271f8f, + 0x2baa47, + 0x20d045, + 0x27738a, + 0x20ae06, + 0x2a8c49, + 0x35964c, + 0x37e909, + 0x2125c6, + 0x2bcecc, + 0x37f846, + 0x3e6888, + 0x315546, + 0x27aec6, + 0x2ca404, + 0x222383, + 0x2dfbca, + 0x29cad1, + 0x38130a, + 0x265745, + 0x268287, + 0x262a47, + 0x2d0044, + 0x3871cb, + 0x294448, + 0x2d0a06, + 0x233605, + 0x273d04, + 0x275389, + 0x2008c4, + 0x3ed887, + 0x387e05, + 0x387e07, + 0x3da985, + 0x260ac3, + 0x250088, + 0x277a0a, + 0x204803, + 0x22c48a, + 0x204806, + 0x271d0f, + 0x26d3c9, + 0x2c53d0, + 0x3a7648, + 0x2e7c89, + 0x2a7907, + 0x317fcf, + 0x334bc4, + 0x2e4104, + 0x220c86, + 0x3b6d46, + 0x34fd4a, + 0x273706, + 0x2c28c7, + 0x31c948, + 0x31cb47, + 0x31dc47, + 0x320bca, + 0x31e64b, + 0x302045, + 0x2f3408, + 0x21ff83, + 0x3d118c, + 0x21c00f, + 0x23cc0d, + 0x29ab07, + 0x22ce09, + 0x284107, + 0x2d91c8, + 0x3ec1cc, + 0x30cd88, + 0x24d408, + 0x33820e, + 0x34ba94, + 0x34bfa4, + 0x3672ca, + 0x38420b, + 0x35dc04, + 0x35dc09, + 0x2cba08, + 0x24b745, + 0x3d58ca, + 0x296287, + 0x22ffc4, + 0x250b03, + 0x206643, + 0x2392c4, + 0x21f603, + 0x205503, + 0x2503c4, + 0x211e43, + 0x206543, + 0x2ee6c6, + 0x294744, + 0x2109c3, + 0x21f143, + 0x219683, + 0x2000c2, + 0x250b03, + 0x202202, + 0x206643, + 0x2392c4, + 0x21f603, + 0x205503, + 0x211e43, + 0x2ee6c6, + 0x2109c3, + 0x21f143, + 0x1b9688, + 0x206643, + 0x21f603, + 0x3d6403, + 0x2109c3, + 0x21f143, + 0x250b03, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x294744, + 0x2109c3, + 0x21f143, + 0x2000c2, + 0x38a7c3, + 0x202202, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x201782, + 0x202dc2, + 0x202202, + 0x206643, + 0x211ac2, + 0x2005c2, + 0x2503c4, + 0x228f84, + 0x21e002, + 0x294744, + 0x2003c2, + 0x21f143, + 0x219683, + 0x3a6386, + 0x224b42, + 0x202642, + 0x225842, + 0x63e03ec3, + 0x64255983, + 0x63586, + 0x63586, + 0x214f04, + 0x21d783, + 0x1dec0d, + 0x1cec4a, + 0x1a1246, + 0x1d01cc, + 0x64f1f14d, + 0x8f28c, + 0x6545484f, + 0x1d8f0d, + 0x79184, + 0x169044, + 0xcdc84, + 0x14cb05, + 0x95709, + 0xa0fcc, + 0x342c7, + 0x12ac6, + 0x19288, + 0x1f4c7, + 0x24988, + 0x1bb4ca, + 0x11b487, + 0xa1209, + 0x65ad45c5, + 0xf48c9, + 0x65c37e4b, + 0x1511cb, + 0x2c4b, + 0x172bc8, + 0x16128a, + 0x17c88e, + 0x660b74ca, + 0xe35cd, + 0x2e70d, + 0x14d268b, + 0xf10ca, + 0x26084, + 0x8a646, + 0x1896c8, + 0xc9a08, + 0x38107, + 0x26e45, + 0x1e3b07, + 0xa24c9, + 0x1d9d47, + 0x7908, + 0x10f849, + 0x60a04, + 0x685c5, + 0x15440e, + 0x1455c7, + 0x666271c6, + 0xbc84d, + 0x1d9bc8, + 0xf3008, + 0x66a80986, + 0x674b2788, + 0x182c0a, + 0x64348, + 0x143110, + 0x6048c, + 0x72c07, + 0x74107, + 0x79c87, + 0x7fa47, + 0x8b02, + 0x12a387, + 0x1c1e0c, + 0x14d05, + 0xcc107, + 0xb6e06, + 0xb78c9, + 0xbac08, + 0x15fc2, + 0x5c2, + 0x116a86, + 0x194e0b, + 0x173cc6, + 0x1de684, + 0x1cf8c7, + 0x80789, + 0x1e0b49, + 0x1ba688, + 0x510c2, + 0x19a989, + 0x11508, + 0xf0b8a, + 0xceb48, + 0x67ae098b, + 0x1db9c9, + 0x4b206, + 0xe5a49, + 0xf1047, + 0xf1909, + 0xf2a48, + 0xf4087, + 0xf5a49, + 0xf8e05, + 0xf91d0, + 0xf9d4c, + 0x181b86, + 0x1cf805, + 0xd9807, + 0x4350d, + 0x1b77c9, + 0x682c88c3, + 0x47185, + 0x1cbd46, + 0x104ac7, + 0x10a918, + 0x1da0c8, + 0x8624a, + 0x1c58e, + 0x10002, + 0x6865228b, + 0x68ae5b4a, + 0x1942ca, + 0x6584d, 0x1042, - 0xe39c6, - 0x1b506, - 0xc32c8, - 0xc0e0a, - 0x5e0c8, - 0x1c3309, - 0x11e848, - 0x7ca4e, - 0x19d08, - 0x146087, - 0x67ea7384, - 0xd708d, - 0xd2a48, - 0x115785, - 0x14c8, - 0x42248, - 0x680268ca, - 0x686bad88, - 0x11b446, - 0xba42, - 0xd77c4, - 0x7ad46, - 0x68923d88, - 0x5f986, - 0x690c6b0b, - 0x79c2, - 0x64244e04, - 0x27e83, - 0x1b9789, - 0x1f88, - 0x14a587, - 0x359ca, - 0xc0b47, + 0xdd0c6, + 0x15d46, + 0xc20c8, + 0xba0ca, + 0x5a3c8, + 0x1b9549, + 0x11d908, + 0x74c8e, + 0x6308, + 0x144207, + 0x68eb26c4, + 0xcfc4d, + 0xcbd48, + 0x113845, + 0x146f48, + 0x69381f09, + 0x371c8, + 0x6941f74a, + 0x4042, + 0x69ab24c8, + 0x119e46, + 0x5fc2, + 0xd0504, + 0x74b46, + 0x69d23b48, + 0x54146, + 0x6a4de50b, + 0x3642, + 0x6523ab84, + 0x21943, + 0x16b449, + 0x1908, + 0x2547, + 0x2c0ca, + 0x71687, 0x401, 0x81, - 0x18f607, - 0x11a408, - 0xcd208, - 0xcd408, - 0xcd608, - 0x73d47, - 0xb98c3, - 0x65e44e04, - 0x662aba43, + 0x188647, + 0x117e48, + 0xc70c8, + 0xc72c8, + 0xc74c8, + 0x6cbc7, + 0xa8643, + 0x66e3ab84, + 0x672d1fc3, 0xc1, - 0xfeb46, + 0xfc986, 0xc1, 0x201, - 0xfeb46, - 0xb98c3, - 0x66e642c4, - 0x197b44, - 0x20f85, - 0x166d85, - 0x1a4244, - 0x1a184, - 0x5d344, - 0x1416c47, - 0x1464207, - 0x1cd6c8, - 0x161e4c, + 0xfc986, + 0xa8643, + 0x67e4ac44, + 0x190d04, + 0xe985, + 0x39f45, + 0x1cfa04, + 0x6784, + 0x51504, + 0x1410087, + 0x144ab87, + 0x1c7448, + 0x1c148c, 0xc01, - 0x12f03, - 0x2af84, - 0x30705, - 0x1cd6c8, - 0x68fcd6c8, - 0x71783, - 0x83343, - 0x18ec3, - 0x1d3b47, - 0x80c7, - 0x15e2945, - 0x64744, - 0x79087, - 0xb642, - 0x166d44, - 0xc2bca, - 0x2346c4, - 0x21a043, - 0x2607c4, - 0x25c204, - 0x214883, - 0x22d985, - 0x221c03, - 0x2423c3, - 0x33a505, + 0x14f83, + 0x1ecc4, + 0x1bd044, + 0x28d45, + 0x1c7448, + 0x6a3c7448, + 0x68f03, + 0x7e583, + 0x12e03, + 0x22607, + 0x4a07, + 0x15e5145, + 0x56344, + 0x72d47, + 0x2202, + 0x39f04, + 0x1e0f4a, + 0x204884, + 0x206643, + 0x2554c4, + 0x2503c4, + 0x2109c3, + 0x225305, + 0x219dc3, + 0x237343, + 0x33d845, 0x200f83, - 0x29f83, - 0x6a61a043, - 0x226783, - 0x607c4, - 0x7783, - 0x20f583, + 0x235c3, + 0x6ba06643, + 0x21f603, + 0x554c4, + 0x3b43, + 0x205503, 0x200181, - 0x22043, - 0x214e43, - 0x230944, - 0x225a04, - 0x214883, - 0x62243, - 0x24acc3, - 0x219303, - 0x1c3448, + 0xf743, + 0x206543, + 0x228f84, + 0x294744, + 0x2109c3, + 0x2b643, + 0x21f143, + 0x213dc3, + 0x1b9688, 0x2000c2, - 0x20bec3, - 0x20b642, - 0x21a043, - 0x226783, - 0x204703, + 0x250b03, + 0x202202, + 0x206643, + 0x21f603, + 0x3d6403, 0x2005c2, - 0x25c204, - 0x20bc83, - 0x214e43, - 0x214883, - 0x208c43, - 0x24acc3, + 0x2503c4, + 0x211e43, + 0x206543, + 0x2109c3, + 0x21d783, + 0x21f143, 0x200f83, - 0xd384, - 0x1c3448, - 0x110cc7, - 0xb642, - 0x139b05, - 0x6a44f, - 0xe6a46, - 0x10210c, - 0x1470708, - 0x11eb4e, - 0x6b602242, - 0x23b308, - 0x3d6906, - 0x2e20c6, - 0x3a4c07, - 0x6ba09582, - 0x6becbe48, - 0x232a8a, - 0x2789c8, + 0x1b9688, + 0x10ea47, + 0x2202, + 0x136285, + 0x605cf, + 0xe3246, + 0xf9d4c, + 0x147e248, + 0x6ca01bc2, + 0x3dae48, + 0x3cf386, + 0x2db106, + 0x39d947, + 0x6ce087c2, + 0x6d2c5248, + 0x229cca, + 0x272688, 0x200b02, - 0x33a049, - 0x3257c7, - 0x21f046, - 0x25bc09, - 0x247d84, - 0x392ec6, - 0x2e24c4, - 0x201904, - 0x26e989, - 0x31cb06, - 0x312885, - 0x27d445, - 0x239547, - 0x2cc4c7, - 0x381d44, - 0x364606, - 0x3cdf45, - 0x2201c5, - 0x23a185, - 0x251e47, - 0x3a9d05, - 0x25b709, - 0x348a05, - 0x36f184, - 0x224687, - 0x3d490e, - 0x3eb909, - 0x335fc9, - 0x3cbb86, - 0x24d7c8, - 0x37f6cb, - 0x3716cc, - 0x32e686, - 0x2cad07, - 0x2fdfc5, - 0x315a0a, - 0x3d6549, + 0x3367c9, + 0x302087, + 0x2176c6, + 0x24fdc9, + 0x23df04, + 0x38b9c6, + 0x2db504, + 0x220044, + 0x264b09, + 0x31b946, + 0x227d45, + 0x2783c5, + 0x22f007, + 0x334087, + 0x3edf44, + 0x360406, + 0x2c6485, + 0x3f31c5, + 0x22f8c5, + 0x237ac7, + 0x276805, + 0x24f8c9, + 0x3dc545, + 0x34e644, + 0x21cc87, + 0x33b00e, + 0x346ac9, + 0x3da609, + 0x3bde06, + 0x243f48, + 0x378c0b, + 0x2fec8c, + 0x32db46, + 0x2c41c7, + 0x2f8385, + 0x313aca, + 0x3cefc9, 0x200ac9, - 0x20b046, - 0x3bac85, - 0x255205, - 0x37afc9, - 0x23a30b, - 0x23ce46, - 0x35ba46, - 0x20cc44, - 0x25a746, - 0x30e588, - 0x3d7746, - 0x363b86, - 0x207408, - 0x20aa87, - 0x20ae09, - 0x20df45, - 0x1c3448, - 0x3e1284, - 0x31f6c4, - 0x2139c5, - 0x34d509, - 0x22d407, - 0x22d40b, - 0x22e5ca, - 0x231045, - 0x6c208982, - 0x220587, - 0x6c6327c8, - 0x3791c7, - 0x3b1405, - 0x2457ca, - 0xb642, - 0x29258b, - 0x29410a, - 0x27c446, - 0x211343, - 0x21784d, - 0x2090cc, - 0x21ce8d, - 0x246405, - 0x3ab085, - 0x26b387, - 0x22c209, - 0x232986, - 0x26a885, - 0x315448, - 0x25a643, - 0x2ef3c8, - 0x25a648, - 0x3cb287, - 0x3f39c8, - 0x362349, - 0x2e0d87, - 0x23a807, - 0x3e27c8, - 0x380384, - 0x380387, - 0x2873c8, - 0x36d0c6, - 0x3d144f, - 0x238107, - 0x364106, - 0x239cc5, - 0x22e043, - 0x257347, - 0x396b43, - 0x25e506, - 0x264646, - 0x266206, - 0x2a7c85, - 0x27c883, - 0x338c48, - 0x3ab5c9, - 0x26638b, - 0x266748, - 0x267645, - 0x269105, - 0x6ca698c2, - 0x367589, - 0x3d9307, - 0x215ac5, - 0x26e887, - 0x26fe86, - 0x270ac5, - 0x27224b, - 0x274104, - 0x278585, - 0x2786c7, - 0x28d046, - 0x28d405, - 0x299b47, - 0x29a787, - 0x383744, - 0x26248a, - 0x2beec8, - 0x37f989, - 0x349405, - 0x27c006, - 0x30e74a, - 0x27d346, - 0x320dc7, - 0x27f34d, - 0x2bbd89, - 0x38ae05, - 0x3d4e47, - 0x20c848, - 0x20cd08, - 0x3485c7, - 0x335c86, - 0x215f87, - 0x26e303, - 0x31ca84, - 0x38c645, - 0x3b9c87, - 0x3c4049, - 0x22c048, - 0x320cc5, - 0x240244, - 0x25a985, - 0x39080d, - 0x20ad02, - 0x2264c6, - 0x2cdb86, - 0x31050a, - 0x3a8b46, - 0x3b6905, - 0x3938c5, - 0x3938c7, - 0x3bda0c, - 0x2b358a, - 0x2a22c6, - 0x20d2c5, - 0x25a586, - 0x2a3087, - 0x2a57c6, - 0x2a7b8c, - 0x25bd49, - 0x6ce4dcc7, - 0x2aa845, - 0x2aa846, - 0x2aac08, - 0x25a205, - 0x2bc5c5, - 0x2bca88, - 0x2bcc8a, - 0x6d21dd82, - 0x6d610682, - 0x21e645, - 0x244583, - 0x33ef48, - 0x21ffc3, - 0x2bcf04, - 0x2ab60b, - 0x371ac8, - 0x39fcc8, - 0x6db5cb49, - 0x2c2fc9, - 0x2c3886, - 0x2c5008, - 0x2c5209, - 0x2c6dc6, - 0x2c6f45, - 0x259106, - 0x2c7409, - 0x2da7c7, - 0x253286, - 0x359787, - 0x3a9987, - 0x3a8104, - 0x6dfe2609, - 0x2dad48, - 0x2cbd48, - 0x3947c7, - 0x2e7d46, - 0x208ec9, - 0x2e2787, - 0x347c4a, - 0x3c8188, - 0x27c147, - 0x2efac6, - 0x2a174a, - 0x3db8c8, - 0x2ed305, - 0x2c11c5, - 0x30b487, - 0x38ed49, - 0x32258b, - 0x338108, - 0x348a89, - 0x266a47, - 0x2d5fcc, - 0x2d668c, - 0x2d698a, - 0x2d6c0c, - 0x2e2048, - 0x2e2248, - 0x2e2444, - 0x2e3189, - 0x2e33c9, - 0x2e360a, - 0x2e3889, - 0x2e3c07, - 0x34c88c, - 0x379586, - 0x27ed08, - 0x27d406, - 0x2f5fc6, - 0x38ad07, - 0x39d088, - 0x39348b, - 0x20b147, - 0x26f209, - 0x296bc9, - 0x24e507, - 0x2e2704, - 0x367787, - 0x2cf0c6, - 0x2194c6, - 0x21ca45, - 0x2c2dc8, - 0x3618c4, - 0x3618c6, - 0x2b344b, - 0x28dd09, - 0x251d46, - 0x22c4c9, - 0x213a86, - 0x39ac08, - 0x20a243, - 0x3bae05, - 0x222149, - 0x3cb985, - 0x302884, - 0x390f86, - 0x3bcbc5, - 0x26a686, - 0x323247, - 0x2fe346, - 0x3bb84b, - 0x2800c7, - 0x28d706, - 0x2921c6, - 0x239606, - 0x381d09, - 0x2d394a, - 0x2fac05, - 0x24bd4d, - 0x2bcd86, - 0x2d4b86, - 0x229086, - 0x3d3945, - 0x301887, - 0x268c87, - 0x31ce8e, - 0x214e43, - 0x2e7d09, - 0x3bf489, - 0x315e07, - 0x281887, - 0x3d3845, - 0x2d0b05, - 0x6e3ed28f, - 0x2ece47, - 0x2ed008, - 0x2edc44, - 0x2eddc6, - 0x6e654782, - 0x2f1bc6, - 0x2f3c06, - 0x10210c, - 0x20220e, - 0x2ef20a, - 0x232146, - 0x21978a, - 0x206b89, - 0x249205, - 0x32a108, - 0x3e3e46, - 0x2ca908, - 0x379b48, - 0x2911cb, - 0x3a4d05, - 0x3a9d88, - 0x20754c, - 0x3b12c7, - 0x265d86, - 0x3bca08, - 0x393148, - 0x6ea18882, - 0x392c8b, - 0x20e149, - 0x20a049, - 0x3b7f47, - 0x3666c8, - 0x6efeae08, - 0x25fbcb, - 0x257a09, - 0x26fb4d, - 0x32cd48, - 0x2d7dc8, - 0x6f201802, - 0x222ac4, - 0x6f6445c2, - 0x36d586, - 0x6fa03282, - 0x308fca, - 0x273186, - 0x22f0c8, - 0x25c4c8, - 0x26b9c6, - 0x2cb206, - 0x30f086, - 0x3a2185, - 0x2468c4, - 0x6ff8dd84, - 0x360946, - 0x269e87, - 0x70290607, - 0x39f3cb, - 0x3793c9, - 0x3ab0ca, - 0x393a04, - 0x2e2a48, - 0x25304d, - 0x3098c9, - 0x309b08, - 0x309d89, - 0x30b844, - 0x2bc884, - 0x295a45, - 0x253c8b, - 0x371a46, - 0x360785, - 0x248449, - 0x3646c8, - 0x270b04, - 0x315b89, - 0x3bb785, - 0x2cc508, - 0x23aec7, - 0x3363c8, - 0x296506, - 0x213dc7, - 0x2f8dc9, - 0x3ecd49, - 0x21b6c5, - 0x2462c5, - 0x70623cc2, - 0x36ef44, - 0x2fcc45, - 0x3a4b06, - 0x328085, - 0x2691c7, - 0x328645, - 0x28a984, - 0x3cbc46, - 0x26a907, - 0x2547c6, - 0x371f85, - 0x21dfc8, - 0x3d6b05, - 0x221fc7, - 0x22c6c9, - 0x28de4a, - 0x234787, - 0x23478c, - 0x312846, - 0x24ab49, - 0x252105, - 0x25a148, - 0x21b503, - 0x2cdc45, - 0x2fc705, - 0x243007, - 0x70a00b82, - 0x305cc7, - 0x2d7386, - 0x389c86, - 0x2e8f06, - 0x393086, - 0x256848, - 0x28f845, - 0x3641c7, - 0x3641cd, - 0x220203, - 0x379a45, - 0x3aa647, - 0x306008, - 0x3aa205, - 0x221708, - 0x230406, - 0x2aba87, - 0x2f5f05, - 0x3a4d86, - 0x3391c5, - 0x35388a, - 0x2fb186, - 0x2dda87, - 0x2350c5, - 0x2fdb87, - 0x300f84, - 0x302806, - 0x32a045, - 0x23628b, - 0x2cef49, - 0x36838a, - 0x21b748, - 0x30c4c8, - 0x30e14c, - 0x313c87, - 0x3166c8, - 0x35f308, - 0x36d6c5, - 0x322bca, - 0x3291c9, - 0x70e01b82, - 0x2a8506, - 0x22bbc4, - 0x22bbc9, - 0x2868c9, - 0x31b047, - 0x284407, - 0x28c689, - 0x2d3388, - 0x2d338f, - 0x216986, - 0x2f594b, - 0x272085, - 0x272087, - 0x33fc89, - 0x22ce06, - 0x315b07, - 0x2fa6c5, - 0x23e6c4, - 0x358386, - 0x21cdc4, - 0x2d2e87, - 0x33d8c8, - 0x713bab88, - 0x3c18c5, - 0x3ccb87, - 0x2dcf49, - 0x21c584, - 0x24f148, - 0x7170b2c8, - 0x2d4b04, - 0x312f48, - 0x20c5c4, - 0x21cc89, - 0x228fc5, - 0x71a49902, - 0x2169c5, - 0x2d6545, - 0x20cb48, - 0x241bc7, - 0x71e008c2, - 0x3b8405, - 0x2f0386, - 0x266086, - 0x36ef08, - 0x346a48, - 0x328046, - 0x32c486, - 0x310d89, - 0x389bc6, - 0x22cccb, - 0x351f85, - 0x3ae706, - 0x35a188, - 0x36ebc6, - 0x2a9b46, - 0x222dca, - 0x283c4a, - 0x390b05, - 0x27c587, - 0x257e46, - 0x72207882, - 0x3aa787, - 0x3e2105, - 0x30e6c4, - 0x30e6c5, - 0x2e2946, - 0x328bc7, - 0x2271c5, - 0x283dc4, - 0x3cdc48, - 0x2a9c05, - 0x2fbbc7, - 0x334e05, - 0x3537c5, - 0x231704, - 0x231709, - 0x3cdd88, - 0x201106, - 0x21a506, - 0x20dbc6, - 0x726c8fc8, - 0x30c347, - 0x34664d, - 0x3de28c, - 0x3e6d89, - 0x31b5c9, - 0x72b84342, - 0x3e60c3, - 0x24e603, - 0x2cf185, - 0x3b9d8a, - 0x346486, - 0x3afd85, - 0x323644, - 0x32364b, - 0x33d18c, - 0x33dacc, - 0x33ddd5, - 0x33eb0d, - 0x34098f, - 0x340d52, - 0x3411cf, - 0x341592, - 0x341a13, - 0x341ecd, - 0x34248d, - 0x34280e, - 0x34310e, - 0x34380c, - 0x343bcc, - 0x34400b, - 0x344a8e, - 0x345392, - 0x34624c, - 0x346c50, - 0x355292, - 0x35648c, - 0x356b4d, - 0x356e8c, - 0x35ad11, - 0x35bbcd, - 0x35db8d, - 0x35e18a, - 0x35e40c, - 0x35fccc, - 0x36048c, - 0x36100c, - 0x366ed3, - 0x368610, - 0x368a10, - 0x36908d, - 0x36968c, - 0x36c249, - 0x36fb4d, - 0x36fe93, - 0x3724d1, - 0x372cd3, - 0x37380f, - 0x373bcc, - 0x373ecf, - 0x37428d, - 0x37488f, - 0x374c50, - 0x3756ce, - 0x37b80e, - 0x37c150, - 0x37cd0d, - 0x37d68e, - 0x37da0c, - 0x37f153, - 0x38154e, - 0x381f50, - 0x382351, - 0x38278f, - 0x382b53, - 0x383ecd, - 0x38420f, - 0x3845ce, - 0x384b50, - 0x384f49, - 0x386310, - 0x38680f, - 0x386e8f, - 0x387252, - 0x387e8e, - 0x38984d, - 0x389e0d, - 0x38a14d, - 0x38af4d, - 0x38b28d, - 0x38b5d0, - 0x38b9cb, - 0x38c40c, - 0x38c78c, - 0x38cd8c, - 0x38d08e, - 0x39ae10, - 0x39c9d2, - 0x39ce4b, - 0x39d28e, - 0x39d60e, - 0x39de8e, - 0x39e40b, - 0x72f9e796, - 0x3a074d, - 0x3a1714, - 0x3a24cd, - 0x3a4355, - 0x3a644d, - 0x3a6dcf, - 0x3a770f, - 0x3ab80f, - 0x3abbce, - 0x3abf4d, - 0x3ad911, - 0x3b240c, - 0x3b270c, - 0x3b2a0b, - 0x3b2ccc, - 0x3b344f, - 0x3b3812, - 0x3b3e0d, - 0x3b504c, - 0x3b594c, - 0x3b5c4d, - 0x3b5f8f, - 0x3b634e, - 0x3b9a4c, - 0x3ba00d, - 0x3ba34b, - 0x3bc18c, - 0x3bd08d, - 0x3bd3ce, - 0x3bd749, - 0x3be713, - 0x3c014d, - 0x3c084d, - 0x3c0e4c, - 0x3c14ce, - 0x3c1a0f, - 0x3c1dcc, - 0x3c20cd, - 0x3c240f, - 0x3c27cc, - 0x3c2dcc, - 0x3c3b0c, - 0x3c3e0c, - 0x3c500d, - 0x3c5352, - 0x3c5dcc, - 0x3c60cc, - 0x3c63d1, - 0x3c680f, - 0x3c6bcf, - 0x3c6f93, - 0x3c8d8e, - 0x3c910f, - 0x3c94cc, - 0x733c9b8e, - 0x3c9f0f, - 0x3ca2d6, - 0x3cadd2, - 0x3ce68c, - 0x3cf1cf, - 0x3cf84d, - 0x3dd30f, - 0x3dd6cc, - 0x3dd9cd, - 0x3ddd0d, - 0x3df8ce, - 0x3e040c, - 0x3e2c4c, - 0x3e2f50, - 0x3e5451, - 0x3e588b, - 0x3e5ccc, - 0x3e5fce, - 0x3e72d1, - 0x3e770e, - 0x3e7a8d, - 0x3f074b, - 0x3f170f, - 0x3f20d4, - 0x216e82, - 0x216e82, - 0x206c43, - 0x216e82, - 0x206c43, - 0x216e82, - 0x214f82, - 0x259145, - 0x3e6fcc, - 0x216e82, - 0x216e82, - 0x214f82, - 0x216e82, - 0x2ac905, - 0x28de45, - 0x216e82, - 0x216e82, - 0x202642, - 0x2ac905, - 0x33f149, - 0x3721cc, - 0x216e82, - 0x216e82, - 0x216e82, - 0x216e82, - 0x259145, - 0x216e82, - 0x216e82, - 0x216e82, - 0x216e82, - 0x202642, - 0x33f149, - 0x216e82, - 0x216e82, - 0x216e82, - 0x28de45, - 0x216e82, - 0x28de45, - 0x3721cc, - 0x3e6fcc, - 0x20bec3, - 0x21a043, - 0x226783, - 0x20f583, - 0x25c204, - 0x214883, - 0x24acc3, - 0x5e8f, - 0x1dc8, - 0x7cb84, - 0xeaec8, - 0x2000c2, - 0x7420b642, - 0x24e8c3, - 0x23eb44, + 0x2fbfc6, + 0x3b1b45, + 0x24b105, + 0x375009, + 0x22fa4b, + 0x3cc986, + 0x357686, + 0x208a44, + 0x252946, + 0x30d0c8, + 0x3d00c6, + 0x27da46, + 0x204248, + 0x205a47, + 0x206889, + 0x207405, + 0x1b9688, + 0x3e3a84, + 0x31e2c4, + 0x20d605, + 0x34a809, + 0x20da07, + 0x20da0b, + 0x22620a, + 0x229685, + 0x6d605182, + 0x3f3587, + 0x6da29a08, + 0x3c5807, + 0x2df745, + 0x23b3ca, + 0x2202, + 0x28b00b, + 0x28d58a, + 0x2778c6, + 0x35f383, + 0x20374d, + 0x3d7ccc, + 0x20dc8d, + 0x236505, + 0x211185, + 0x25f207, + 0x218d49, + 0x229bc6, + 0x273585, + 0x32ac08, + 0x23a783, + 0x2e44c8, + 0x252848, + 0x3c4987, + 0x23a788, + 0x23e289, + 0x37d047, + 0x3bdfc7, + 0x3e4fc8, + 0x211884, + 0x211887, + 0x282288, + 0x367e86, + 0x3c5fcf, + 0x244bc7, + 0x35ff06, + 0x22df85, + 0x2259c3, + 0x24d0c7, + 0x38f643, + 0x252fc6, + 0x256246, + 0x259a46, + 0x29fe05, + 0x277dc3, + 0x39a608, + 0x3a3889, + 0x25a08b, + 0x25b588, + 0x25c705, + 0x25e805, + 0x6de596c2, + 0x266349, + 0x3d1c87, + 0x21e145, + 0x264a07, + 0x266e86, + 0x267e45, + 0x26a78b, + 0x26d004, + 0x271845, + 0x271987, + 0x285a46, + 0x286785, + 0x292a87, + 0x292fc7, + 0x2c6b84, + 0x2a0dca, + 0x2b76c8, + 0x378ec9, + 0x320105, + 0x275a06, + 0x30d28a, + 0x2782c6, + 0x3ec587, + 0x27a40d, + 0x2b42c9, + 0x384545, + 0x3c3f07, + 0x3db508, + 0x3dbec8, + 0x33abc7, + 0x3c2e06, + 0x216107, + 0x2556c3, + 0x31b8c4, + 0x385d45, + 0x3b0207, + 0x3ba289, + 0x225dc8, + 0x3ec485, + 0x273844, + 0x24f305, + 0x25ea4d, + 0x207002, + 0x2d6246, + 0x2c8946, + 0x30e2ca, + 0x3a1606, + 0x3adc85, + 0x38c3c5, + 0x38c3c7, + 0x3b300c, + 0x2641ca, + 0x29b046, + 0x2e0dc5, + 0x252786, + 0x29b907, + 0x29de46, + 0x29fd0c, + 0x24ff09, + 0x6e244447, + 0x2a3045, + 0x2a3046, + 0x2a3548, + 0x249685, + 0x2b4f85, + 0x2b5708, + 0x2b590a, + 0x6e60bd82, + 0x6ea09b02, + 0x2afc05, + 0x31c703, + 0x31df88, + 0x285e43, + 0x2b5b84, + 0x2a8d8b, + 0x2b90c8, + 0x333d88, + 0x6ef4da49, + 0x2bbe09, + 0x2bc746, + 0x2be388, + 0x2be589, + 0x2c0206, + 0x2c0385, + 0x24e186, + 0x2c0809, + 0x2d7ec7, + 0x255206, + 0x358587, + 0x358e47, + 0x3a0e04, + 0x6f3e4e09, + 0x2d4208, + 0x2c5148, + 0x38d2c7, + 0x2e1e06, + 0x3cc189, + 0x2db7c7, + 0x3af3ca, + 0x3edb48, + 0x2775c7, + 0x2e4d86, + 0x3e0d4a, + 0x347c08, + 0x2e8845, + 0x2ba485, + 0x30a547, + 0x318549, + 0x318a4b, + 0x32ee08, + 0x3dc5c9, + 0x25bc07, + 0x2ced4c, + 0x2cf24c, + 0x2cf54a, + 0x2cf7cc, + 0x2db088, + 0x2db288, + 0x2db484, + 0x2dc889, + 0x2dcac9, + 0x2dcd0a, + 0x2dcf89, + 0x2dd307, + 0x3c5bcc, + 0x3cab06, + 0x279dc8, + 0x278386, + 0x318406, + 0x384447, + 0x396bc8, + 0x38bf8b, + 0x2fc0c7, + 0x2647c9, + 0x2683c9, + 0x28f507, + 0x2db744, + 0x267307, + 0x2e9246, + 0x213f86, + 0x34ff05, + 0x230e48, + 0x35da44, + 0x35da46, + 0x26408b, + 0x2aac09, + 0x2379c6, + 0x226509, + 0x20d6c6, + 0x3878c8, 0x207783, - 0x20f584, - 0x23c686, - 0x213883, - 0x390e44, - 0x2b1b85, - 0x214e43, - 0x214883, - 0x24acc3, - 0x228d8a, - 0x3ae506, - 0x39d98c, - 0x1c3448, - 0x20b642, - 0x21a043, - 0x226783, - 0x20f583, - 0x2384c3, - 0x2f3c06, - 0x214883, - 0x24acc3, - 0x205443, - 0x15ac3, - 0xbe988, - 0x74d4c5c5, - 0x833c7, - 0x5bec5, - 0x1f2c7, - 0x14f985, - 0xaa204, - 0xaa20a, - 0x6249, - 0x2142, - 0x1d02ca, - 0x75b26305, - 0x14f985, - 0x133907, - 0x19c08, - 0x1048e, - 0x9dd52, - 0x13990b, - 0x11c746, - 0x75edb105, - 0x762db10c, - 0x1e2287, - 0xf5d87, - 0x1dafca, - 0x48cd0, - 0x153ac5, - 0xbe6cb, - 0xd5448, - 0x42b87, - 0x3e7cb, - 0xa9cc9, - 0x59307, - 0x1e9987, - 0x3d087, - 0x42ac6, - 0xa3c8, - 0x76838286, - 0x5e007, - 0x30546, - 0xc398d, - 0xe2bd0, - 0x76c0a842, - 0x1e9808, - 0x19a110, - 0x19a84c, - 0x773a1bcd, - 0x727c8, - 0x72f4b, - 0x809c7, - 0xd1709, - 0x6d446, - 0xaae08, - 0x1742, - 0x70d0a, - 0x38447, - 0x19fb07, - 0xbf0c9, - 0xc1bc8, - 0x100185, - 0xe9c7, - 0x119186, - 0x9dc6, - 0x10aa0e, - 0x4c48e, - 0x164d8f, - 0x64d49, - 0x191549, - 0xabe4b, - 0xded0f, - 0x183bcc, - 0xdd68b, - 0x14de08, - 0x19f2c7, - 0x1ad388, - 0xc880b, - 0xc91cc, - 0xc95cc, - 0xc99cc, - 0xc9ccd, - 0x1c4448, - 0x83382, - 0x138fc9, - 0xab348, - 0xe578b, - 0xe7f46, - 0xefc4b, - 0x144ecb, - 0xf9e0a, - 0xfaf05, - 0x101590, - 0x104606, - 0x1cbd86, - 0x1a4045, - 0x1d95c7, - 0xf1e48, - 0x106587, - 0x106847, - 0xa79c7, - 0x29a86, - 0x16d3ca, - 0xb3c0a, - 0x1b506, - 0x19f8cd, - 0x5e0c8, - 0x11e848, - 0xf12c9, - 0x8af89, - 0xd4905, - 0x16018c, - 0xc9ecb, - 0x1c7bc9, - 0x18ec84, - 0x11b209, - 0x11b446, - 0x11506, - 0x3342, - 0x5f986, - 0x8b10b, - 0x127647, - 0x127807, - 0x79c2, - 0xe9545, - 0x19d84, + 0x3b1cc5, + 0x2140c9, + 0x205805, + 0x2fa4c4, + 0x244946, + 0x27db85, + 0x260806, + 0x323007, + 0x3beec6, + 0x234bcb, + 0x27b187, + 0x289046, + 0x292e46, + 0x22f0c6, + 0x3edf09, + 0x2b3d4a, + 0x36d405, + 0x24514d, + 0x2b5a06, + 0x2d00c6, + 0x3a7546, + 0x222405, + 0x2f94c7, + 0x27c247, + 0x31bcce, + 0x206543, + 0x2e1dc9, + 0x3a2949, + 0x313ec7, + 0x27c707, + 0x2359c5, + 0x37b205, + 0x6f606c0f, + 0x2e7ec7, + 0x2e8088, + 0x2e84c4, + 0x2e8706, + 0x6fa4a502, + 0x2ec746, + 0x2ee6c6, + 0xf9d4c, + 0x201b8e, + 0x2e430a, + 0x203bc6, + 0x211b8a, + 0x3cb2c9, + 0x23b845, + 0x371b48, + 0x316446, + 0x2c3dc8, + 0x300308, + 0x294b8b, + 0x39da45, + 0x276888, + 0x20438c, + 0x2df607, + 0x256e06, + 0x2e4ac8, + 0x38bc48, + 0x6fe12282, + 0x3d4dcb, + 0x34f589, + 0x38b809, + 0x207607, + 0x3cbb88, + 0x7023eb48, + 0x332a8b, + 0x254389, + 0x266b4d, + 0x34d4c8, + 0x2d0708, + 0x70601582, + 0x21e7c4, + 0x70a232c2, + 0x36cf46, + 0x70e0b7c2, + 0x30794a, + 0x26c006, + 0x226b88, + 0x250688, + 0x261bc6, + 0x2c46c6, + 0x30db86, + 0x21e3c5, + 0x23bd04, + 0x71387844, + 0x35cbc6, + 0x259ec7, + 0x71688b47, + 0x3979cb, + 0x3c5a09, + 0x2111ca, + 0x38c504, + 0x2dba88, + 0x254fcd, + 0x308249, + 0x308488, + 0x308709, + 0x30a904, + 0x241744, + 0x283905, + 0x3b644b, + 0x2b9046, + 0x35ca05, + 0x390089, + 0x3604c8, + 0x267e84, + 0x313c49, + 0x234b05, + 0x3340c8, + 0x3daa07, + 0x320d88, + 0x290306, + 0x3c1847, + 0x2f2689, + 0x33be49, + 0x222c05, + 0x257445, + 0x71a1cd02, + 0x34e404, + 0x2f6345, + 0x39d846, + 0x383305, + 0x25e8c7, + 0x2daac5, + 0x283e04, + 0x3bdec6, + 0x273607, + 0x24a546, + 0x3b2185, + 0x20c888, + 0x3cf585, + 0x20f6c7, + 0x21ce89, + 0x2aad4a, + 0x226707, + 0x22670c, + 0x227d06, + 0x23f509, + 0x247cc5, + 0x2495c8, + 0x215d43, + 0x2c8a05, + 0x2f5e05, + 0x290b47, + 0x71e00b82, + 0x304207, + 0x2dd686, + 0x3e3406, + 0x2e8586, + 0x38bb86, + 0x24cbc8, + 0x2898c5, + 0x35ffc7, + 0x35ffcd, + 0x24e583, + 0x3cafc5, + 0x277147, + 0x304548, + 0x276d05, + 0x2198c8, + 0x228a46, + 0x316b87, + 0x2f44c5, + 0x39dac6, + 0x39ab85, + 0x3ccd4a, + 0x2f6ac6, + 0x2d7647, + 0x227a05, + 0x2f7f47, + 0x2f8bc4, + 0x2fa446, + 0x371a85, + 0x22c98b, + 0x2e90c9, + 0x38a8ca, + 0x222c88, + 0x30b588, + 0x310b8c, + 0x311407, + 0x314788, + 0x35c508, + 0x36d085, + 0x329a4a, + 0x326409, + 0x72201982, + 0x2a0686, + 0x230c84, + 0x230c89, + 0x2286c9, + 0x319a47, + 0x27f887, + 0x285089, + 0x2ccd48, + 0x2ccd4f, + 0x216b06, + 0x2f048b, + 0x25f9c5, + 0x25f9c7, + 0x354fc9, + 0x224c86, + 0x313bc7, + 0x2f3b45, + 0x2327c4, + 0x3b6a46, + 0x20dbc4, + 0x2cd507, + 0x339848, + 0x727b1a48, + 0x3c7005, + 0x3e5247, + 0x2d6849, + 0x20e204, + 0x246d48, + 0x72b0a388, + 0x2d0044, + 0x300d08, + 0x3c3b44, + 0x3b7149, + 0x3a7485, + 0x72e3d942, + 0x216b45, + 0x2ea785, + 0x33b788, + 0x236b47, + 0x732008c2, + 0x3cc545, + 0x2eafc6, + 0x267b06, + 0x34e3c8, + 0x350c88, + 0x3832c6, + 0x383e86, + 0x30eb09, + 0x3e3346, + 0x224b4b, + 0x2ff3c5, + 0x3a6586, + 0x2ac848, + 0x3023c6, + 0x2a2346, + 0x21b00a, + 0x3a008a, + 0x25ed45, + 0x29b747, + 0x283486, + 0x736046c2, + 0x277287, + 0x3e4905, + 0x30d204, + 0x30d205, + 0x2db986, + 0x388947, + 0x220c85, + 0x228784, + 0x2c6188, + 0x2a2405, + 0x2f5247, + 0x336d05, + 0x381785, + 0x212784, + 0x346609, + 0x2c62c8, + 0x249d86, + 0x3aaac6, + 0x33c3c6, + 0x73b2d148, + 0x30b407, + 0x3915cd, + 0x366a0c, + 0x3e0089, + 0x3e9109, + 0x73f7d942, + 0x3e8443, + 0x228183, + 0x2e9305, + 0x3b030a, + 0x344606, + 0x3ec8c5, + 0x323404, + 0x32340b, + 0x33910c, + 0x339a4c, + 0x339d55, + 0x33c74d, + 0x33eb8f, + 0x33ef52, + 0x33f3cf, + 0x33f792, + 0x33fc13, + 0x3400cd, + 0x34068d, + 0x340a0e, + 0x34130e, + 0x34198c, + 0x341d4c, + 0x34218b, + 0x342c0e, + 0x343512, + 0x3443cc, + 0x3448d0, + 0x351b12, + 0x35278c, + 0x352e4d, + 0x35318c, + 0x356491, + 0x35780d, + 0x359f8d, + 0x35a58a, + 0x35a80c, + 0x35bc0c, + 0x35c70c, + 0x35d18c, + 0x362213, + 0x362c10, + 0x363010, + 0x36368d, + 0x363c8c, + 0x367009, + 0x36914d, + 0x369493, + 0x36ba11, + 0x36c213, + 0x36d54f, + 0x36d90c, + 0x36dc0f, + 0x36dfcd, + 0x36e5cf, + 0x36e990, + 0x36f40e, + 0x37564e, + 0x375f90, + 0x376acd, + 0x37744e, + 0x3777cc, + 0x378693, + 0x37abce, + 0x37b710, + 0x37bb11, + 0x37bf4f, + 0x37c313, + 0x37d4cd, + 0x37d80f, + 0x37dbce, + 0x37e150, + 0x37e549, + 0x37f9d0, + 0x37fecf, + 0x38054f, + 0x380912, + 0x38248e, + 0x382f4d, + 0x3835cd, + 0x38390d, + 0x38468d, + 0x3849cd, + 0x384d10, + 0x38510b, + 0x385b0c, + 0x385e8c, + 0x38648c, + 0x38678e, + 0x3947d0, + 0x396512, + 0x39698b, + 0x396dce, + 0x39714e, + 0x39804e, + 0x3985cb, + 0x74398956, + 0x39988d, + 0x39a154, + 0x39ae4d, + 0x39d095, + 0x39f28d, + 0x39fc0f, + 0x3a040f, + 0x3a3acf, + 0x3a3e8e, + 0x3a420d, + 0x3a5751, + 0x3a8ecc, + 0x3a91cc, + 0x3a94cb, + 0x3a978c, + 0x3a9fcf, + 0x3aa392, + 0x3ab18d, + 0x3ac3cc, + 0x3acccc, + 0x3acfcd, + 0x3ad30f, + 0x3ad6ce, + 0x3affcc, + 0x3b058d, + 0x3b08cb, + 0x3b154c, + 0x3b268d, + 0x3b29ce, + 0x3b2d49, + 0x3b3d13, + 0x3b44cd, + 0x3b4bcd, + 0x3b51cc, + 0x3b588e, + 0x3b7c4f, + 0x3b800c, + 0x3b830d, + 0x3b864f, + 0x3b8a0c, + 0x3b900c, + 0x3b9d4c, + 0x3ba04c, + 0x3bac4d, + 0x3baf92, + 0x3bba0c, + 0x3bbd0c, + 0x3bc011, + 0x3bc44f, + 0x3bc80f, + 0x3bcbd3, + 0x3bf84e, + 0x3bfbcf, + 0x3bff8c, + 0x747c064e, + 0x3c09cf, + 0x3c0d96, + 0x3c44d2, + 0x3c7a8c, + 0x3c818f, + 0x3c880d, + 0x3df10f, + 0x3df4cc, + 0x3df7cd, + 0x3dfb0d, + 0x3e168e, + 0x3e2b8c, + 0x3e5b4c, + 0x3e5e50, + 0x3e77d1, + 0x3e7c0b, + 0x3e804c, + 0x3e834e, + 0x3e9651, + 0x3e9a8e, + 0x3e9e0d, + 0x3efb4b, + 0x3f0c4f, + 0x3f1894, + 0x2062c2, + 0x2062c2, + 0x204383, + 0x2062c2, + 0x204383, + 0x2062c2, + 0x203cc2, + 0x24e1c5, + 0x3e934c, + 0x2062c2, + 0x2062c2, + 0x203cc2, + 0x2062c2, + 0x2a43c5, + 0x2aad45, + 0x2062c2, + 0x2062c2, + 0x20b782, + 0x2a43c5, + 0x33cd09, + 0x36b70c, + 0x2062c2, + 0x2062c2, + 0x2062c2, + 0x2062c2, + 0x24e1c5, + 0x2062c2, + 0x2062c2, + 0x2062c2, + 0x2062c2, + 0x20b782, + 0x33cd09, + 0x2062c2, + 0x2062c2, + 0x2062c2, + 0x2aad45, + 0x2062c2, + 0x2aad45, + 0x36b70c, + 0x3e934c, + 0x250b03, + 0x206643, + 0x21f603, + 0x205503, + 0x2503c4, + 0x2109c3, + 0x21f143, + 0x29cf, + 0x13b548, + 0x74dc4, + 0xe7008, + 0x2000c2, + 0x75602202, + 0x2457c3, + 0x2f1684, + 0x203b43, + 0x205504, + 0x231386, + 0x244843, + 0x244804, + 0x29ebc5, + 0x206543, + 0x2109c3, + 0x21f143, + 0x3b6f0a, + 0x3a6386, + 0x3974cc, + 0x1b9688, + 0x202202, + 0x206643, + 0x21f603, + 0x205503, + 0x23ddc3, + 0x2ee6c6, + 0x2109c3, + 0x21f143, + 0x219683, + 0x1e143, + 0xb7188, + 0x761ed1c5, + 0x7e607, + 0x50085, + 0x17947, + 0x14cb05, + 0xa2a04, + 0xa2a0a, + 0x2d89, + 0x1ac2, + 0x1c928a, + 0x76fdd7c5, + 0x14cb05, + 0x342c7, + 0x6208, + 0x990e, + 0x97852, + 0x13608b, + 0x11b586, + 0x772d45c5, + 0x776d45cc, + 0x1e4a87, + 0xf08c7, + 0xdc24a, + 0x3f150, + 0x14dc45, + 0xba94b, + 0xc9a08, + 0x38107, + 0x12bccb, + 0xa24c9, + 0x4e387, + 0x1d9d47, + 0x1ccbc7, + 0x38046, + 0x7908, + 0x77c34106, + 0x5a307, + 0x28b86, + 0xbc84d, + 0xdbc10, + 0x78004c02, + 0x1d9bc8, + 0x193090, + 0x1937cc, + 0x787a4a0d, + 0x6b4c8, + 0x6bdcb, + 0x7b6c7, + 0x1030c9, + 0x63646, + 0xa3748, + 0x17382, + 0x6808a, + 0x3eec7, + 0xcc107, + 0xb78c9, + 0xbac08, + 0x1c9f45, + 0x6ba47, + 0x116a86, + 0x173cc6, + 0x1097ce, + 0x48bce, + 0x5e44f, + 0x80789, + 0x1e0b49, + 0xaf78b, + 0xde04f, + 0x19cd8c, + 0xd844b, + 0x129148, + 0x1978c7, + 0x1a51c8, + 0xc1b0b, + 0xc268c, + 0xc2a8c, + 0xc2e8c, + 0xc318d, + 0x1ba688, + 0x7e5c2, + 0x19a989, + 0xa8ac8, + 0xde94b, + 0xe2006, + 0xea8cb, + 0x14304b, + 0xf328a, + 0xf4245, + 0xf91d0, + 0x100986, + 0x1bf006, + 0x1cf805, + 0xd9807, + 0x101048, + 0x104ac7, + 0x104d87, + 0x172e07, + 0x20286, + 0x16cd8a, + 0xb4c0a, + 0x15d46, + 0xcbecd, + 0x5a3c8, + 0x11d908, + 0x126c9, + 0x86009, + 0xdd585, + 0x167fcc, + 0xc338b, + 0x1f009, + 0x118984, + 0x119c09, + 0x119e46, + 0x13206, + 0x2642, + 0x54146, + 0x8618b, + 0x1260c7, + 0x126287, + 0x3642, + 0xe3dc5, + 0x6384, 0x101, - 0x66fc3, - 0x76644746, - 0xaba43, + 0x5c183, + 0x77b60fc6, + 0xd1fc3, 0x382, 0xe44, 0xb02, - 0x65a04, + 0x14f04, 0x882, - 0xc502, - 0x2742, - 0x1da82, - 0x3d82, - 0x27e82, - 0x45c2, - 0x16e3c2, - 0x3cc82, + 0x8b82, + 0x8a42, + 0x69782, + 0x1782, + 0x21942, 0x3402, - 0x101c2, - 0x64842, - 0x26783, + 0x1547c2, + 0x31982, + 0x54302, + 0x23c2, + 0x56442, + 0x1f603, 0x942, - 0x1b42, - 0x1b5c2, - 0x5b02, + 0x1342, + 0xfd02, + 0x8102, 0x642, - 0x30fc2, - 0x7142, - 0x2502, - 0x13f82, + 0x29602, + 0x15fc2, + 0x1442, + 0x4142, 0x5c2, - 0xbc83, - 0x40c2, - 0x1ac2, - 0x5cf02, - 0xaf02, - 0x12a82, - 0xfe02, - 0x24902, - 0x5942, + 0x11e43, + 0x2b82, + 0x4b02, + 0x510c2, + 0x6982, + 0x6b42, + 0x9582, + 0x1a202, + 0x2042, 0xec2, - 0x19b302, - 0x82182, - 0x736c2, - 0x14883, + 0x194cc2, + 0x7d202, + 0x70c2, + 0x109c3, 0x602, - 0x18882, - 0x25c2, - 0x7982, - 0x1b645, - 0x8782, - 0x21e42, - 0x1d4883, + 0x12282, + 0x1f42, + 0x16282, + 0x22b85, + 0x4f82, + 0x1a002, + 0x1dea83, 0x682, - 0x3b02, + 0x10002, 0x1042, - 0x1a82, - 0x14942, + 0x1a42, + 0x10a82, 0x8c2, - 0xba42, - 0x3342, - 0x5985, - 0x77614f82, - 0x77b0ed43, - 0x4d03, - 0x77e14f82, - 0x4d03, - 0xe7807, - 0x205683, + 0x5fc2, + 0x2642, + 0x2c45, + 0x78a03cc2, + 0x78f09343, + 0x15c43, + 0x79203cc2, + 0x15c43, + 0xe18c7, + 0x20d5c3, 0x2000c2, - 0x21a043, - 0x226783, - 0x204703, + 0x206643, + 0x21f603, + 0x3d6403, 0x2005c3, - 0x2384c3, - 0x214883, - 0x208c43, - 0x24acc3, - 0x319283, - 0x1ad803, - 0x1ad804, - 0x180286, - 0xd4944, - 0x179d45, - 0x10e445, - 0x18b43, - 0x1c3448, - 0x21a043, - 0x226783, - 0x204703, - 0x214e43, - 0x214883, - 0x208c43, - 0x24acc3, - 0x21a043, - 0x226783, - 0x24acc3, - 0x21a043, - 0x226783, - 0x20f583, + 0x23ddc3, + 0x2109c3, + 0x21d783, + 0x21f143, + 0x2d2003, + 0x1a5643, + 0x1a5644, + 0x1797c6, + 0xdd5c4, + 0x100505, + 0x10cf85, + 0x1c36c3, + 0x1b9688, + 0x206643, + 0x21f603, + 0x3d6403, + 0x206543, + 0x2109c3, + 0x21d783, + 0x21f143, + 0x206643, + 0x21f603, + 0x21f143, + 0x206643, + 0x21f603, + 0x205503, 0x200181, - 0x214e43, - 0x214883, - 0x262243, - 0x24acc3, - 0x5b84, - 0x20bec3, - 0x21a043, - 0x226783, - 0x219ec3, - 0x204703, - 0x262283, - 0x245143, - 0x2bc303, - 0x220783, - 0x20f583, - 0x25c204, - 0x214883, - 0x24acc3, + 0x206543, + 0x2109c3, + 0x22b643, + 0x21f143, + 0x1df004, + 0x250b03, + 0x206643, + 0x21f603, + 0x2064c3, + 0x3d6403, + 0x290a43, + 0x234503, + 0x2b4843, + 0x24c8c3, + 0x205503, + 0x2503c4, + 0x2109c3, + 0x21f143, 0x200f83, - 0x3496c4, - 0x235843, - 0x5d83, - 0x2548c3, - 0x337908, - 0x2a1784, + 0x3c7f44, + 0x211103, + 0x28c3, + 0x24a643, + 0x333648, + 0x358c84, 0x20020a, - 0x26b146, - 0xdcd44, - 0x3beb87, - 0x22a0ca, - 0x216849, - 0x3d0147, - 0x3d5a0a, - 0x20bec3, - 0x21e6cb, - 0x37ff09, - 0x3a8445, - 0x3c30c7, - 0xb642, - 0x21a043, - 0x321187, - 0x351105, - 0x2e25c9, - 0x2370e, - 0x226783, - 0x246b86, - 0x322c83, - 0xcf003, - 0x122446, - 0x3946, - 0x13807, - 0x215186, - 0x21f445, - 0x20e007, - 0x31ef87, - 0x7aa0f583, - 0x3566c7, - 0x28af43, - 0xc1089, + 0x25efc6, + 0xd6644, + 0x3b4187, + 0x22370a, + 0x2169c9, + 0x3c9107, + 0x3ce48a, + 0x250b03, + 0x2afc8b, + 0x379449, + 0x386fc5, + 0x3b9307, + 0x2202, + 0x206643, + 0x26a5c7, + 0x30fec5, + 0x2db609, + 0x1b98e, + 0x21f603, + 0x23bfc6, + 0x2d96c3, + 0xdd703, + 0x122506, + 0x1dd686, + 0x1f4147, + 0x2142c6, + 0x21aa05, + 0x2074c7, + 0x2ef9c7, + 0x7be05503, + 0x3529c7, + 0x285fc3, + 0xba349, + 0x301f85, + 0x2503c4, + 0x2c7bc8, + 0x3e868c, + 0x2c6ec5, + 0x2b4446, + 0x30fd87, + 0x21f307, + 0x289187, + 0x289c08, + 0x32118f, + 0x3bec05, + 0x205247, + 0x2d4d07, + 0x3d848a, + 0x32aa49, + 0x322645, + 0x33390a, + 0x1270c6, + 0xcdd87, + 0x2d9745, + 0x3913c4, + 0x345786, + 0x1820c6, + 0x393a47, + 0x2dff87, + 0x33ad48, + 0x20f845, + 0x26a4c6, + 0x20508, + 0x27d9c5, + 0x26446, + 0x271585, + 0x243004, + 0x240fc7, + 0x24ca0a, + 0x2add88, + 0x205e46, + 0x3ddc3, + 0x2dfa85, + 0x2b0006, + 0x3c5e06, + 0x201e46, + 0x206543, + 0x3ab407, + 0xf9d4c, + 0x2d4c85, + 0x2109c3, + 0x2f354d, + 0x21d783, + 0x33ae48, + 0x27fc04, + 0x2b0305, + 0x2b5bc6, + 0x3d4b46, + 0x3a6487, + 0x254247, + 0x27e945, + 0x21f143, + 0x36ac87, + 0x3a2e09, + 0x323c89, + 0x38934a, + 0x207202, + 0x301f44, + 0x324444, + 0x303f07, + 0x3040c8, + 0x305b49, + 0x3cae89, + 0x306787, + 0x111609, + 0x20bc06, + 0x109546, + 0x30a904, + 0x22e98a, + 0x30cbc8, + 0x30da49, + 0x30de86, + 0x2cb145, + 0x2adc48, + 0x2e228a, + 0x27b403, + 0x335846, + 0x306887, + 0x35eb45, + 0x82b48, + 0x3bd345, + 0x2130c3, + 0x21bc04, + 0x4d509, + 0x2ba445, + 0x2930c7, + 0x2c6405, + 0x2f0a46, + 0x1062c5, + 0x203c83, + 0x203c89, + 0x2b00cc, + 0x2d720c, + 0x3142c8, + 0x2a3bc7, + 0x3156c8, + 0x115d07, + 0x31688a, + 0x316e8b, + 0x379588, + 0x3d4c48, + 0x238746, + 0x3e1985, + 0x34710a, + 0x2298c5, + 0x23d942, + 0x2e0f47, + 0x28e506, + 0x37f205, + 0x318d09, + 0x3be785, + 0x1d7b08, + 0x2bc385, + 0x301b49, + 0x32bac6, + 0x3d3a08, + 0x2b03c3, + 0x20b586, + 0x244886, 0x3256c5, - 0x25c204, - 0x2cde88, - 0x3e630c, - 0x2cd005, - 0x2bbf06, - 0x321047, - 0x3c7ec7, - 0x28fb87, - 0x297fc8, - 0x3217cf, - 0x349145, - 0x208a47, - 0x217d47, - 0x3a148a, - 0x315289, - 0x32bd05, - 0x32700a, - 0x10de86, - 0xd4d07, - 0x2e1485, - 0x398204, - 0x347b06, - 0x1974c6, - 0x260947, - 0x2e68c7, - 0x348748, - 0x213045, - 0x351006, - 0x2f908, - 0x363b05, - 0x2c406, - 0x2c0a45, - 0x243344, - 0x297e47, - 0x25668a, - 0x2b7808, - 0x3d2c86, - 0x384c3, - 0x2fc3c5, - 0x21ea46, - 0x34cac6, - 0x2024c6, - 0x214e43, - 0x3b4087, - 0x10210c, - 0x217cc5, - 0x214883, - 0x2fa0cd, - 0x208c43, - 0x348848, - 0x284784, - 0x21ed45, - 0x2bcf46, - 0x203286, - 0x3ae607, - 0x25fa87, - 0x283705, - 0x24acc3, - 0x3b8fc7, - 0x3bf949, - 0x323ec9, - 0x39054a, - 0x204d82, - 0x325684, - 0x337d84, - 0x3059c7, - 0x305b88, - 0x307609, - 0x379909, - 0x3082c7, - 0x113e89, - 0x2630c6, - 0x10a786, - 0x30b844, - 0x238fca, - 0x30db08, - 0x30ef49, - 0x30f386, - 0x2d1e45, - 0x2b76c8, - 0x2e81ca, - 0x236d03, - 0x349846, - 0x3083c7, - 0x237e45, - 0x891c8, - 0x3c7705, - 0x219183, - 0x223984, - 0x56cc9, - 0x2c1185, - 0x29a887, - 0x3cdec5, - 0x2ed1c6, - 0x107d85, - 0x232203, - 0x232209, - 0x21eb0c, - 0x2d954c, - 0x316208, - 0x2a8fc7, - 0x3f0d88, - 0x118c07, - 0x318f8a, - 0x3195cb, - 0x380048, - 0x203388, - 0x2681c6, - 0x2614c5, - 0x34340a, - 0x2184c5, - 0x249902, - 0x2e66c7, - 0x27b8c6, - 0x385b45, - 0x398389, - 0x233885, - 0x1b76c8, - 0x2b44c5, - 0x325289, - 0x32d706, - 0x3eb748, - 0x324583, - 0x211fc6, - 0x390ec6, - 0x326e05, - 0x326e09, - 0x28aa89, - 0x261247, - 0x12ba84, - 0x32ba87, - 0x379809, - 0x22a2c5, - 0x469c8, - 0x3d4705, - 0x205585, - 0x3706c9, - 0x2029c2, - 0x235644, - 0x203d42, - 0x2040c2, - 0x2edf05, - 0x37e948, - 0x2d4845, - 0x2e3dc3, - 0x2e3dc5, - 0x2f1dc3, - 0x211282, - 0x2342c4, - 0x206743, - 0x207002, - 0x2fd284, - 0x314903, - 0x211b42, - 0x289ec3, - 0x21b484, - 0x30f503, - 0x269644, - 0x202fc2, - 0x2213c3, - 0x219883, - 0x2075c2, - 0x2a7382, - 0x28a8c9, - 0x20dfc2, - 0x29f2c4, - 0x206782, - 0x288904, - 0x263084, - 0x30c944, - 0x203342, - 0x24a8c2, - 0x239b03, - 0x2ae143, - 0x29aa04, - 0x2ec444, - 0x329104, - 0x32bc04, - 0x326803, - 0x2f7cc3, - 0x30de04, - 0x32cf44, - 0x32d086, - 0x205402, - 0xb642, - 0x4f583, - 0x20b642, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x177c5, + 0x3256c9, + 0x283f09, + 0x2699c7, + 0x129804, + 0x329807, + 0x3cad89, + 0x223905, + 0x3be08, + 0x3c2b85, + 0x3d5685, + 0x3dbc09, + 0x206182, + 0x30f5c4, + 0x201602, + 0x202b82, + 0x2ecd85, + 0x3258c8, + 0x2cdb45, + 0x2dd4c3, + 0x2dd4c5, + 0x2ec943, + 0x20a702, + 0x22b384, + 0x203283, + 0x206702, + 0x3017c4, + 0x31dac3, + 0x20bc02, + 0x254b83, + 0x215cc4, + 0x30e003, + 0x259444, + 0x204842, + 0x219583, + 0x211c83, + 0x203c82, + 0x2b26c2, + 0x283d49, + 0x207482, + 0x298684, + 0x202002, + 0x261644, + 0x20bbc4, + 0x30ba04, + 0x202642, + 0x238382, + 0x22ddc3, + 0x31f043, + 0x2cd7c4, + 0x306a04, + 0x329984, + 0x333804, + 0x325043, + 0x3705c3, + 0x327044, + 0x32b344, + 0x32b486, + 0x3d5502, + 0x2202, + 0x47183, + 0x202202, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x36c5, 0x2000c2, - 0x20bec3, - 0x21a043, - 0x226783, - 0x201b43, - 0x20f583, - 0x25c204, - 0x28ab84, - 0x225a04, - 0x214883, - 0x24acc3, - 0x205443, - 0x30be44, - 0x3346c3, - 0x251943, - 0x389b04, - 0x3d4506, - 0x204243, - 0x14f985, - 0xf5d87, - 0x288583, - 0x7c62d088, - 0x265883, - 0x2cfcc3, - 0x21e803, - 0x2384c3, - 0x3b8305, - 0x1c3083, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x2113c3, - 0x206083, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x20bc83, - 0x214883, - 0x26c584, - 0x24acc3, - 0x2d8484, - 0x14f985, - 0x36dd05, - 0xf5d87, - 0x20b642, - 0x203142, + 0x250b03, + 0x206643, + 0x21f603, + 0x204d03, + 0x205503, + 0x2503c4, + 0x284004, + 0x294744, + 0x2109c3, + 0x21f143, + 0x219683, + 0x30af04, + 0x330b03, + 0x2375c3, + 0x383204, + 0x3c2986, + 0x207843, + 0x14cb05, + 0xf08c7, + 0x21dac3, + 0x7da24f08, + 0x2534c3, + 0x2c90c3, + 0x2721c3, + 0x23ddc3, + 0x3cc445, + 0x1b92c3, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x26a483, + 0x202bc3, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x211e43, + 0x2109c3, + 0x262784, + 0x21f143, + 0x2b2b44, + 0x14cb05, + 0x31af85, + 0xf08c7, + 0x202202, + 0x201482, 0x200382, - 0x201f42, + 0x2018c2, 0x2003c2, - 0x2d84, - 0x21a043, - 0x243544, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x225a04, - 0x214883, - 0x24acc3, - 0x219303, - 0x265a04, - 0x1c3448, - 0x21a043, - 0x208c43, - 0x18b43, - 0x12e504, - 0x2346c4, - 0x1c3448, - 0xb642, - 0x21a043, - 0x2607c4, - 0x25c204, - 0x208c43, - 0x201802, - 0x24acc3, - 0x2423c3, - 0x23984, - 0x33a505, - 0x249902, - 0x333483, - 0x1beec9, - 0xf67c6, - 0x8c108, + 0x1d4644, + 0x206643, + 0x2392c4, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x294744, + 0x2109c3, + 0x21f143, + 0x213dc3, + 0x214f04, + 0x1b9688, + 0x206643, + 0x21d783, + 0x1c36c3, + 0x12d9c4, + 0x204884, + 0x14cb05, + 0x1b9688, + 0x2202, + 0x206643, + 0x2554c4, + 0x2503c4, + 0x21d783, + 0x201582, + 0x21f143, + 0x237343, + 0x1bc04, + 0x33d845, + 0x23d942, + 0x3de983, + 0x1a2389, + 0xf1506, + 0x84b08, 0x2000c2, - 0x1c3448, - 0x7fafe207, - 0x20b642, - 0x226783, - 0x20f583, + 0x1b9688, + 0x80fbed87, + 0x202202, + 0x21f603, + 0x205503, 0x2005c2, - 0x24acc3, - 0x54c2, + 0x21f143, + 0x8f42, 0x82, - 0x23984, + 0x1bc04, 0xc2, - 0x1d5bc7, - 0x17149, - 0x5c83, - 0x1c3448, - 0x1da43, - 0x80330047, - 0x1a043, - 0xa8408, - 0x26783, - 0x85587, - 0xf583, - 0x1eeb86, - 0xbc83, - 0xb5fc8, - 0xdf908, - 0x1d8b03, - 0x8f606, - 0x8053b0c5, - 0x1b8b85, - 0x14e43, - 0xa2388, - 0xea7c8, - 0x69243, - 0x808fb886, - 0x102dc5, - 0x1bf644, - 0x412c7, - 0x14883, - 0x7803, - 0x4acc3, - 0x4d42, - 0x19720a, - 0x9c83, - 0x80edc7cc, - 0xedfc3, - 0x1b04, - 0x1215cb, - 0x121b88, - 0xa4fc2, - 0x123d83, - 0x1416c47, - 0x15d4b87, - 0x14e3e88, - 0x1523d83, - 0x1cd6c8, - 0x149a144, - 0x1eafcb, - 0x13c02, - 0x13b587, - 0x1547c4, + 0x1ce647, + 0x172c9, + 0x27c3, + 0x1b9688, + 0x69743, + 0x8172e887, + 0x6643, + 0xa0588, + 0x1f603, + 0x58287, + 0x5503, + 0x3fa46, + 0x11e43, + 0x42308, + 0xd89c8, + 0x1d1483, + 0x87f86, + 0x81937585, + 0x1db6c5, + 0x6543, + 0x9b108, + 0xe5dc8, + 0x5e943, + 0x81cf4f06, + 0xfa885, + 0x1a2b04, + 0x36287, + 0x109c3, + 0x4643, + 0x1f143, + 0x15c82, + 0x18fd0a, + 0x20e43, + 0x8220ff4c, + 0xcdc03, + 0x150c4, + 0x120f8b, + 0x121548, + 0x9cfc2, + 0x123b43, + 0x1410087, + 0x153b287, + 0x151a888, + 0x1523b43, + 0x1c7448, + 0x14e9e04, + 0xfd6cb, + 0xd842, + 0x137a47, + 0x14e6c4, + 0xf0c87, 0x2000c2, - 0x20b642, - 0x243544, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x21a043, - 0x226783, - 0x20f583, - 0x2384c3, - 0x214883, - 0x24acc3, - 0x229a83, - 0x219303, - 0x15ac3, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x18b43, - 0x26783, - 0x8300f583, - 0x833c7, - 0x21a043, - 0x226783, - 0x20f583, - 0x25c204, - 0x2384c3, - 0x214883, - 0x24acc3, - 0x22ccc2, + 0x202202, + 0x2392c4, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x206643, + 0x21f603, + 0x205503, + 0x23ddc3, + 0x2109c3, + 0x21f143, + 0x220283, + 0x213dc3, + 0x1e143, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x1c36c3, + 0x1f603, + 0x84405503, + 0x7e607, + 0x206643, + 0x21f603, + 0x205503, + 0x2503c4, + 0x23ddc3, + 0x2109c3, + 0x21f143, + 0x224b42, 0x2000c1, 0x2000c2, 0x200201, - 0x340a82, - 0x1c3448, - 0x226f45, + 0x33ec82, + 0x1b9688, + 0x220a05, 0x200101, - 0x1a043, - 0x3e084, + 0x6643, + 0x32184, 0x200cc1, 0x200501, 0x200bc1, - 0x2590c2, - 0x396b44, - 0x2590c3, + 0x24e142, + 0x38f644, + 0x24e143, 0x200041, 0x200801, 0x200181, - 0x37d06, - 0x1e144c, + 0x2dac6, + 0x1e3c4c, 0x200701, - 0x324e47, - 0x306d0f, - 0x3ccd06, + 0x368ec7, + 0x30524f, + 0x3e53c6, 0x2004c1, - 0x32e546, + 0x32da06, 0x200ec1, - 0x10210c, + 0xf9d4c, 0x200581, - 0x3c2a4e, + 0x3b8c8e, 0x2003c1, - 0x24acc3, - 0x2015c1, - 0x83ed2ac4, - 0x23ba45, - 0x204d42, - 0x219085, + 0x21f143, + 0x201401, + 0x852cbdc4, + 0x241c05, + 0x215c82, + 0x212fc5, 0x200401, 0x200741, 0x2007c1, - 0x249902, + 0x23d942, 0x200081, 0x200f81, - 0x202d81, - 0x203481, - 0x2033c1, - 0x2802, - 0x67409, - 0x1c3448, - 0x21a043, - 0x226783, - 0x1008c8, - 0x20f583, - 0x214883, - 0x24acc3, - 0x221c03, - 0x1f3503, - 0x21a043, - 0x20f583, - 0xa4f08, - 0x214e43, - 0x214883, - 0x2a783, - 0x24acc3, - 0x84f34308, - 0x1f31c3, - 0x112c8, - 0x13c82, - 0x17c3, - 0xa842, - 0x3342, - 0x14f985, - 0x1c3448, - 0xa4806, - 0x1ec847, - 0x14f985, - 0xb284, - 0x19a3c8, - 0x550c4, - 0x12c887, - 0x6af04, - 0x5c28c, - 0x1e6304, - 0x2bd85, - 0x67409, - 0x1f0487, - 0xe1548, - 0x2aac6, - 0x12e0a, - 0x157714a, - 0x127984, - 0x15886c3, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x214883, - 0x24acc3, - 0x205d83, - 0x1c3448, - 0x21a043, - 0x226783, - 0x2eef84, - 0x24acc3, - 0x2cf905, - 0x26b544, - 0x21a043, - 0x226783, - 0x20f583, + 0x208f81, + 0x205381, + 0x201841, + 0x5682, + 0x5c4c9, + 0x1b9688, + 0x206643, + 0x21f603, + 0x58a88, + 0x205503, + 0x2109c3, + 0x21f143, + 0x219dc3, + 0x1f2c83, + 0x206643, + 0x205503, + 0x9cf08, + 0x206543, + 0x2109c3, + 0x3d43, + 0x21f143, + 0x863ddc88, + 0x1f2943, + 0x1d7808, + 0x886c2, + 0x29c3, + 0x4c02, + 0x2642, + 0x14cb05, + 0x1b9688, + 0x9da06, + 0x13b947, + 0x14cb05, + 0xfc204, + 0x1593348, + 0x4afc4, + 0x12ae87, + 0x614c4, + 0x5044c, + 0x1e8684, + 0x66545, + 0x5c4c9, + 0x1a7f47, + 0xd0b08, + 0x2b6c6, + 0x1c208a, + 0x15e71ca, + 0x130e44, + 0x1582cc3, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x2109c3, + 0x21f143, + 0x2028c3, + 0x1b9688, + 0x206643, + 0x21f603, + 0x2e4084, + 0x21f143, + 0x29f085, + 0x277a04, + 0x206643, + 0x21f603, + 0x205503, 0x200ec2, - 0x214883, - 0x24acc3, - 0x19303, - 0xf9b06, - 0xc8204, - 0x12fb86, - 0x20bec3, - 0x21a043, - 0x226783, - 0x20f583, + 0x2109c3, + 0x21f143, + 0x13dc3, + 0x1568c05, + 0xf2f86, + 0xc1504, + 0x12d506, + 0x250b03, + 0x206643, + 0x21f603, + 0x205503, 0x200ec2, - 0x214883, - 0x24acc3, - 0x219303, - 0x20b642, - 0x21a043, - 0x23e609, - 0x226783, - 0x2c22c9, - 0x214e43, - 0x214883, - 0x90544, - 0x24acc3, - 0x30b648, - 0x245ac7, - 0x33a505, - 0x62386, - 0xcc388, - 0x13a509, - 0x1e5ac8, - 0x1d5bc7, - 0x105e0a, - 0x1a9fcb, - 0x12e787, - 0x4d688, - 0x1e244a, - 0xcea48, - 0x17149, - 0x302c7, - 0x1bb647, - 0x1ec048, - 0xa8408, - 0x4ee4f, - 0xb79c5, - 0xa8707, - 0x1eeb86, - 0x1afc47, - 0x12be46, - 0xb5fc8, - 0xc28c6, - 0x1eb547, - 0x135dc9, - 0x36c87, - 0x1b3209, - 0xd5949, - 0xdcac6, - 0xdf908, - 0xcc645, - 0xf808a, - 0xea7c8, - 0x69243, - 0xf2648, - 0x412c7, - 0x171045, - 0xa1050, - 0x7803, - 0x1eb3c7, - 0x16085, - 0x106b48, - 0x1ea2c5, - 0xedfc3, - 0x1688, - 0x52c6, - 0x164b89, - 0xc5407, - 0x1bf18b, - 0x82404, - 0x11ae04, - 0x1215cb, - 0x121b88, - 0x122347, - 0x14f985, - 0x21a043, - 0x226783, - 0x204703, - 0x24acc3, - 0x24c843, - 0x20f583, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0xabf8b, + 0x2109c3, + 0x21f143, + 0x213dc3, + 0x202202, + 0x206643, + 0x232709, + 0x21f603, + 0x2bb789, + 0x206543, + 0x2109c3, + 0x88a84, + 0x21f143, + 0x30a708, + 0x238c07, + 0x33d845, + 0xa0cc6, + 0x133f48, + 0x13d849, + 0x1e7e48, + 0x1ce647, + 0x10434a, + 0x76acb, + 0x12dc47, + 0x43e08, + 0x1e4c4a, + 0xc8748, + 0x172c9, + 0x28907, + 0x1b6307, + 0x1bda88, + 0xa0588, + 0x46a4f, + 0xadf45, + 0xa0887, + 0x3fa46, + 0x1ec787, + 0x122786, + 0x42308, + 0xfb006, + 0x1d3807, + 0x1458c9, + 0x1b79c7, + 0x1c7849, + 0xce6c9, + 0xd63c6, + 0xd89c8, + 0x134205, + 0x7628a, + 0xe5dc8, + 0x5e943, + 0xecbc8, + 0x36287, + 0xfe605, + 0x162810, + 0x4643, + 0x1af247, + 0x16205, + 0x105088, + 0xfff05, + 0xcdc03, + 0xfd948, + 0x1d53c6, + 0x5e249, + 0xbe787, + 0x1a264b, + 0x118384, + 0x119804, + 0x120f8b, + 0x121548, + 0x122407, + 0x14cb05, + 0x206643, + 0x21f603, + 0x3d6403, + 0x21f143, + 0x243143, + 0x205503, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0xaf8cb, 0x2000c2, - 0x20b642, - 0x24acc3, - 0x45c2, + 0x202202, + 0x21f143, + 0x3402, 0xec2, 0xf82, - 0x1c3448, - 0x13bf09, - 0x1cd6c8, - 0xb642, + 0x1b9688, + 0x132d09, + 0x1c7448, + 0x2202, 0x2000c2, - 0x20b642, + 0x202202, 0x200382, 0x2005c2, - 0x2024c2, - 0x214883, - 0x18846, + 0x201e42, + 0x2109c3, + 0x12246, 0x2003c2, - 0x23984, + 0x1bc04, 0x2000c2, - 0x20bec3, - 0x20b642, - 0x21a043, - 0x226783, + 0x250b03, + 0x202202, + 0x206643, + 0x21f603, 0x200382, - 0x20f583, - 0x20bc83, - 0x214e43, - 0x225a04, - 0x214883, - 0x21c243, - 0x24acc3, - 0x201b04, + 0x205503, + 0x211e43, + 0x206543, + 0x294744, + 0x2109c3, + 0x20f4c3, + 0x21f143, + 0x2150c4, 0x200f83, - 0x20f583, - 0x20b642, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x208c43, - 0x24acc3, - 0x3ceb47, - 0x21a043, - 0x242ec7, - 0x32b106, - 0x212e83, - 0x226dc3, - 0x20f583, - 0x211983, - 0x25c204, - 0x2580c4, - 0x34ae46, - 0x23bc83, - 0x214883, - 0x13404b, - 0x24acc3, - 0x2cf905, - 0x336d44, - 0x3db4c3, - 0x2543c3, - 0x2e66c7, - 0x23ae45, - 0x4f43, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x1c77c4, - 0x24acc3, - 0xbb43, - 0x8c314a8c, - 0xe28c3, - 0x68ec7, - 0x8b246, - 0x1d95c7, - 0x1369c5, - 0x214202, - 0x25e203, - 0x21c683, - 0x20bec3, - 0x8ce1a043, - 0x20c942, - 0x226783, - 0x207783, - 0x20f583, - 0x25c204, - 0x20de83, - 0x349143, - 0x214e43, - 0x225a04, - 0x8d203642, - 0x214883, - 0x24acc3, - 0x211b43, - 0x219d83, - 0x214903, - 0x22ccc2, + 0x205503, + 0x202202, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x21d783, + 0x21f143, + 0x206643, + 0x214183, + 0x20fd03, + 0x205503, + 0x2036c3, + 0x2503c4, + 0x296584, + 0x321b86, + 0x241f83, + 0x2109c3, + 0x1dd9cb, + 0x21f143, + 0x29f085, + 0x2e0f47, + 0x1d6c43, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x1bd404, + 0x21f143, + 0x19a43, + 0x8db1300c, + 0xdb903, + 0x71bc7, + 0x862c6, + 0x1db74c, + 0xd9807, + 0x1d3f85, + 0x210342, + 0x25a503, + 0x2d9c43, + 0x250b03, + 0x8ea06643, + 0x211ac2, + 0x21f603, + 0x203b43, + 0x205503, + 0x2503c4, + 0x33c683, + 0x3bec03, + 0x206543, + 0x294744, + 0x8ee024c2, + 0x2109c3, + 0x21f143, + 0x2330c3, + 0x206383, + 0x210a43, + 0x224b42, 0x200f83, - 0x1c3448, - 0x20f583, - 0x18b43, - 0x220c04, - 0x20bec3, - 0x20b642, - 0x21a043, - 0x243544, - 0x226783, - 0x20f583, - 0x25c204, - 0x20bc83, - 0x279504, - 0x230944, - 0x2f3c06, - 0x225a04, - 0x214883, - 0x24acc3, - 0x205443, - 0x27b8c6, - 0x474cb, - 0x38286, - 0x489ca, - 0x128d8a, - 0x1c3448, - 0x22f8c4, - 0x8e61a043, - 0x20be84, - 0x226783, - 0x2d1704, - 0x20f583, - 0x37ee83, - 0x214e43, - 0x214883, - 0x24acc3, - 0x23c83, - 0x35174b, - 0x3de04a, - 0x3f2ccc, - 0xfc148, + 0x1b9688, + 0x205503, + 0x1c36c3, + 0x22ffc4, + 0x250b03, + 0x202202, + 0x206643, + 0x2392c4, + 0x21f603, + 0x205503, + 0x2503c4, + 0x211e43, + 0x221e44, + 0x228f84, + 0x2ee6c6, + 0x294744, + 0x2109c3, + 0x21f143, + 0x219683, + 0x28e506, + 0x3c90b, + 0x34106, + 0x436ca, + 0x126b8a, + 0x1b9688, + 0x2204c4, + 0x90206643, + 0x34d284, + 0x21f603, + 0x212804, + 0x205503, + 0x325e03, + 0x206543, + 0x2109c3, + 0x21f143, + 0x1ccc3, + 0x34ec4b, + 0x3dfe4a, + 0x3f244c, + 0xf5848, 0x2000c2, - 0x20b642, + 0x202202, 0x200382, - 0x239805, - 0x25c204, + 0x22f2c5, + 0x2503c4, 0x200ec2, - 0x214e43, - 0x230944, - 0x201f42, + 0x206543, + 0x228f84, + 0x2018c2, 0x2003c2, - 0x206382, - 0x22ccc2, - 0xbec3, - 0x6282, - 0x2de849, - 0x27fc88, - 0x366989, - 0x3a7f49, - 0x23240a, - 0x31170a, - 0x202882, - 0x36e3c2, - 0xb642, - 0x21a043, - 0x203682, - 0x24ed46, - 0x3347c2, - 0x4a282, + 0x202ec2, + 0x224b42, + 0x50b03, + 0x2dc2, + 0x2da309, + 0x27ad48, + 0x239b49, + 0x3a0c49, + 0x203e8a, + 0x21898a, + 0x205202, + 0x3547c2, + 0x2202, + 0x206643, + 0x22dd42, + 0x246946, + 0x330c02, + 0x41402, 0x200d82, - 0x3aa34e, - 0x22140e, - 0x214807, - 0x218342, - 0x226783, - 0x20f583, - 0x2380c2, + 0x276e4e, + 0x2195ce, + 0x210947, + 0x211742, + 0x21f603, + 0x205503, + 0x20c7c2, 0x2005c2, - 0x31a43, - 0x24374f, - 0x24f082, - 0x3cdac7, - 0x2ccdc7, - 0x3382c7, - 0x2d12cc, - 0x2dc1cc, - 0x2208c4, - 0x29588a, - 0x221342, - 0x20af02, - 0x2d7504, + 0xfc83, + 0x2394cf, + 0x246c82, + 0x2c6007, + 0x2cac07, + 0x32efc7, + 0x2ca4cc, + 0x2e010c, + 0x22fc84, + 0x28374a, + 0x219502, + 0x206982, + 0x2d0244, 0x200702, - 0x251ec2, - 0x2dc404, - 0x21f082, - 0x212a82, - 0x22043, - 0x2c2947, - 0x320f45, - 0x224902, - 0x31f984, - 0x39b302, - 0x2fba08, - 0x214883, - 0x385ec8, - 0x207602, - 0x220a85, - 0x3a5a06, - 0x24acc3, - 0x208782, - 0x307847, - 0x4d42, - 0x256145, - 0x37b505, + 0x237b42, + 0x2e0344, + 0x217702, + 0x206b42, + 0xf743, + 0x2fb087, + 0x2e4c85, + 0x21a202, + 0x31e584, + 0x394cc2, + 0x2f5088, + 0x2109c3, + 0x37f588, + 0x201f82, + 0x22fe45, + 0x39e446, + 0x21f143, + 0x204f82, + 0x305d87, + 0x15c82, + 0x24c4c5, + 0x34d785, 0x2010c2, - 0x20b242, - 0x3d074a, - 0x28358a, - 0x2827c2, - 0x2b6ac4, - 0x201b02, - 0x325548, - 0x203b42, - 0x22a888, + 0x23f602, + 0x29430a, + 0x27e7ca, + 0x27ccc2, + 0x2ad344, + 0x202a42, + 0x301e08, + 0x218182, + 0x3d2048, 0x1101, - 0x31c507, - 0x31d209, - 0x2561c2, - 0x3231c5, - 0x381a85, - 0x21310b, - 0x34b3cc, - 0x236f48, - 0x33b3c8, - 0x205402, - 0x2a5982, + 0x31b347, + 0x31c049, + 0x24c542, + 0x322f85, + 0x275c45, + 0x20f90b, + 0x32210c, + 0x22d408, + 0x337888, + 0x3d5502, + 0x29e002, 0x2000c2, - 0x1c3448, - 0x20b642, - 0x21a043, + 0x1b9688, + 0x202202, + 0x206643, 0x200382, - 0x201f42, + 0x2018c2, 0x2003c2, - 0x24acc3, - 0x206382, + 0x21f143, + 0x202ec2, 0x2000c2, - 0x14f985, - 0x8fa0b642, - 0x114bc4, - 0x44d85, - 0x90a0f583, - 0xc3fc4, - 0x222043, + 0x14cb05, + 0x91602202, + 0x113144, + 0x3ab05, + 0x92605503, + 0xbd504, + 0x20f743, 0x200ec2, - 0x214883, - 0x3c8a03, - 0x90e4acc3, - 0x305103, - 0x2e7906, - 0x198285, - 0x1619303, - 0x1bf3c5, - 0x14f985, - 0x1519cb, - 0x1c3448, - 0x8fe0dcc8, - 0x5aec7, - 0x903c488a, - 0x10210c, - 0x1c3247, - 0x1a4045, - 0x907ecf49, - 0x2facd, - 0x8a3c2, - 0x122182, + 0x2109c3, + 0x381cc3, + 0x92a1f143, + 0x303643, + 0x2e19c6, + 0x191445, + 0x1613dc3, + 0x1a2885, + 0x14cb05, + 0x14eecb, + 0x1b9688, + 0x91b3c4c8, + 0x671c7, + 0x91ed240a, + 0xf9d4c, + 0x1b9487, + 0x1cf805, + 0x92391889, + 0x206cd, + 0x3f842, + 0x121b42, 0xc01, - 0x103e84, - 0xbf58a, - 0x833c7, - 0x16dc4, - 0x16e03, - 0x16e04, - 0x91604042, - 0x91a00b02, - 0x91e01d42, - 0x922016c2, - 0x9260f202, - 0x92a03d82, - 0xf5d87, - 0x92e0b642, - 0x93218402, - 0x9362b602, - 0x93a101c2, - 0x221403, - 0x36604, - 0x93f008c8, - 0x239cc3, - 0x94219482, - 0x727c8, - 0x94603f82, - 0x871c7, - 0x1c1087, - 0x94a00042, - 0x94e04142, - 0x95200182, - 0x95606502, - 0x95a13f82, - 0x95e005c2, - 0x1a8385, - 0x21e503, - 0x3cc144, - 0x96200702, - 0x9661c4c2, - 0x96a03e02, - 0x9bc0b, - 0x96e03f02, - 0x976593c2, - 0x97a00ec2, - 0x97e024c2, - 0xa2388, - 0x9822ab02, - 0x98601942, - 0x98a0d3c2, - 0x98e82182, - 0x99203642, - 0x99609082, - 0x99a01f42, - 0x99e12b42, - 0x9a209882, - 0x9a60b482, - 0x149204, - 0x23d1c3, - 0x9aa0b342, - 0x9ae1a182, - 0x9b206a42, - 0x9b6006c2, - 0x9ba003c2, - 0x9be07002, - 0x104c48, - 0xac107, - 0x9c205442, - 0x9c6026c2, - 0x9ca06382, - 0x9ce213c2, - 0x16018c, - 0x9d2021c2, - 0x9d62ebc2, - 0x9da07182, - 0x9de07882, - 0x9e20b382, - 0x9e609142, - 0x9ea0d442, - 0x9ee138c2, - 0x9f28c442, - 0x9f68cd82, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x24b03, - 0xcd883, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x9720de83, - 0x224b03, - 0x3b8384, - 0x366886, - 0x310783, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x378049, - 0x206282, - 0x370903, - 0x2d5c43, - 0x20cac5, - 0x207783, - 0x20de83, - 0x224b03, - 0x2f33c3, - 0x23fac3, - 0x227b89, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x20de83, - 0x224b03, - 0x206282, - 0x206282, - 0x20de83, - 0x224b03, - 0x9fe1a043, - 0x226783, - 0x3a8183, - 0x214e43, - 0x214883, - 0x24acc3, - 0x1c3448, - 0x20b642, - 0x21a043, - 0x214883, - 0x24acc3, - 0x14e5c2, - 0x21a043, - 0x226783, - 0x20f583, - 0xa0913002, - 0x214e43, - 0x214883, - 0x24acc3, + 0xfbc44, + 0xb7d8a, + 0x7e607, + 0x13550f, + 0x16f44, + 0x16f83, + 0x16f84, + 0x6a08b, + 0xa74d, + 0x9320bb02, + 0x93600b02, + 0x93a028c2, + 0x93e01942, + 0x94203602, + 0x94601782, + 0xf08c7, + 0x94a02202, + 0x94e11802, + 0x95223fc2, + 0x956023c2, + 0x2195c3, + 0x1b7344, + 0x95a58a88, + 0x22df83, + 0x95e13f42, + 0x6b4c8, + 0x96208782, + 0x55dc7, + 0x1b5407, + 0x96600042, + 0x96a03582, + 0x96e00182, + 0x97203042, + 0x97604142, + 0x97a005c2, + 0x186f05, + 0x2136c3, + 0x3bf3c4, + 0x97e00702, + 0x98239842, + 0x98604fc2, + 0x93e0b, + 0x98a05e42, + 0x9924e442, + 0x99600ec2, + 0x99a01e42, + 0x9b108, + 0x99e1cf02, + 0x9a201502, + 0x9a603c42, + 0x9aa7d202, + 0x9ae024c2, + 0x9b203702, + 0x9b6018c2, + 0x9ba1e342, + 0x9be0abc2, + 0x9c239e02, + 0x11ff04, + 0x3ccd03, + 0x9c636d82, + 0x9ca06782, + 0x9ce0aec2, + 0x9d2006c2, + 0x9d6003c2, + 0x9da06702, + 0x102ac8, + 0xafa47, + 0x9de02b02, + 0x9e202b42, + 0x9e602ec2, + 0x9ea06ec2, + 0x167fcc, + 0x9ee01b42, + 0x9f2272c2, + 0x9f616002, + 0x9fa046c2, + 0x9fe0c302, + 0xa0204002, + 0xa06059c2, + 0xa0a03dc2, + 0xa0e84e42, + 0xa1285782, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x1a403, + 0xd58c3, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x98f3c683, + 0x21a403, + 0x3cc4c4, + 0x239a46, + 0x30e543, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x3de009, + 0x202dc2, + 0x3dbe43, + 0x2ce9c3, + 0x33b705, + 0x203b43, + 0x33c683, + 0x21a403, + 0x2eddc3, + 0x240b83, + 0x221649, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x33c683, + 0x21a403, + 0x202dc2, + 0x202dc2, + 0x33c683, + 0x21a403, + 0xa1a06643, + 0x21f603, + 0x3a0e83, + 0x206543, + 0x2109c3, + 0x21f143, + 0x1b9688, + 0x202202, + 0x206643, + 0x2109c3, + 0x21f143, + 0x14b742, + 0x206643, + 0x21f603, + 0x205503, + 0xa2500dc2, + 0x206543, + 0x2109c3, + 0x21f143, 0xcc1, - 0x2346c4, - 0x262603, - 0x20b642, - 0x21a043, - 0x3bfcc3, - 0x226783, - 0x2607c4, - 0x204703, - 0x20f583, - 0x25c204, - 0x20bc83, - 0x214e43, - 0x214883, - 0x208c43, - 0x24acc3, - 0x240f03, - 0x2423c3, - 0x33a505, - 0x23fac3, + 0x204884, + 0x266483, + 0x202202, + 0x206643, + 0x3a3183, + 0x21f603, + 0x2554c4, + 0x3d6403, + 0x205503, + 0x2503c4, + 0x211e43, + 0x206543, + 0x2109c3, + 0x21d783, + 0x21f143, + 0x235ec3, + 0x237343, + 0x33d845, + 0x240b83, 0x200f83, 0x882, - 0x20b642, - 0x21a043, - 0x20de83, - 0x214883, - 0x24acc3, + 0x202202, + 0x206643, + 0x33c683, + 0x2109c3, + 0x21f143, 0x2000c2, - 0x20bec3, - 0x1c3448, - 0x21a043, - 0x226783, - 0x20f583, - 0x23c686, - 0x25c204, - 0x20bc83, - 0x225a04, - 0x214883, - 0x24acc3, - 0x205443, - 0x11d44, - 0x16e3c2, - 0x21a043, - 0x24dc3, - 0x226783, + 0x250b03, + 0x1b9688, + 0x206643, + 0x21f603, + 0x205503, + 0x231386, + 0x2503c4, + 0x211e43, + 0x294744, + 0x2109c3, + 0x21f143, + 0x219683, + 0x6204, + 0x1547c2, + 0x206643, + 0x1a6c3, + 0x21f603, 0xec2, - 0x214883, - 0x24acc3, - 0x791c4, - 0x78884, - 0x19c2, - 0x1568287, - 0x152347, - 0x21a043, - 0x38286, - 0x226783, - 0x20f583, - 0xfda46, - 0x214883, - 0x24acc3, - 0x337788, - 0x33b209, - 0x34a749, - 0x354348, - 0x3a7d88, - 0x3a7d89, - 0x33060a, - 0x369eca, - 0x3a280a, - 0x3a8f8a, - 0x3de04a, - 0x3ede8b, - 0x365a4d, - 0x24a2cf, - 0x24fe10, - 0x36e74d, - 0x38ca8c, - 0x3a8ccb, - 0x1a3447, - 0x13454e, - 0x138a0a, - 0x13af09, - 0x14a749, - 0x16c949, - 0x16cb8a, - 0x176f49, - 0x177889, - 0x17898b, - 0x19c08, - 0x112e48, - 0x59d09, - 0x149e747, - 0xe9545, - 0x21a043, - 0x226783, - 0x20f583, - 0x214e43, - 0x214883, - 0x24acc3, - 0x4acc3, + 0x2109c3, + 0x21f143, + 0x72e84, + 0x72544, + 0xc642, + 0x158a7c7, + 0x7247, + 0x206643, + 0x34106, + 0x21f603, + 0x205503, + 0xf7e06, + 0x2109c3, + 0x21f143, + 0x3334c8, + 0x3376c9, + 0x348109, + 0x350ac8, + 0x3a0a88, + 0x3a0a89, + 0x32e0ca, + 0x3649ca, + 0x39b18a, + 0x3a1a4a, + 0x3dfe4a, + 0x3ebacb, + 0x24144d, + 0x242a0f, + 0x246150, + 0x36894d, + 0x38618c, + 0x3a178b, + 0x1784c7, + 0x13098e, + 0x13530a, + 0x1373c9, + 0x148109, + 0x167709, + 0x16794a, + 0x171749, + 0x1724c9, + 0x172fcb, + 0x6208, + 0x100c08, + 0x1709, + 0x1495607, + 0xe3dc5, + 0x206643, + 0x21f603, + 0x205503, + 0x206543, + 0x2109c3, + 0x21f143, + 0x1f143, 0x2000c2, - 0x23ac85, - 0x222003, - 0xa4e0b642, - 0x226783, - 0x20f583, - 0x2c1a07, - 0x21e803, - 0x214e43, - 0x214883, - 0x262243, - 0x21c243, - 0x20f0c3, - 0x208c43, - 0x24acc3, - 0x3ae506, - 0x249902, + 0x3be445, + 0x206b03, + 0xa6a02202, + 0x21f603, + 0x205503, + 0x3907c7, + 0x2721c3, + 0x206543, + 0x2109c3, + 0x22b643, + 0x20f4c3, + 0x2034c3, + 0x21d783, + 0x21f143, + 0x3a6386, + 0x23d942, 0x200f83, - 0x1c3448, + 0x1b9688, 0x2000c2, - 0x20bec3, - 0x20b642, - 0x21a043, - 0x226783, - 0x20f583, - 0x25c204, - 0x214e43, - 0x214883, - 0x24acc3, - 0x219303, - 0x152347, - 0x13c02, - 0x148744, - 0x153a806, + 0x250b03, + 0x202202, + 0x206643, + 0x21f603, + 0x205503, + 0x2503c4, + 0x206543, + 0x2109c3, + 0x21f143, + 0x213dc3, + 0x7247, + 0xd842, + 0x13ad44, + 0x1544746, 0x2000c2, - 0x20b642, - 0x20f583, - 0x214e43, - 0x24acc3, + 0x202202, + 0x205503, + 0x206543, + 0x21f143, } // children is the list of nodes' children, the parent's wildcard bit and the @@ -9884,6 +9899,7 @@ var nodes = [...]uint32{ // will be in the range [0, 6), depending on the wildcard bit and node type. // // The layout within the uint32, from MSB to LSB, is: +// // [ 1 bits] unused // [ 1 bits] wildcard bit // [ 2 bits] node type @@ -9896,667 +9912,674 @@ var children = [...]uint32{ 0x40000000, 0x50000000, 0x60000000, - 0x17ac5e4, - 0x17b05eb, - 0x17b45ec, - 0x17d45ed, - 0x192c5f5, - 0x194064b, - 0x1954650, - 0x1968655, - 0x198465a, - 0x19a8661, - 0x19c066a, - 0x1a0c670, - 0x1a10683, - 0x1a38684, - 0x1a3c68e, - 0x1a5468f, - 0x1a58695, + 0x179c5e0, + 0x17a05e7, + 0x17a45e8, + 0x17c45e9, + 0x191c5f1, + 0x1930647, + 0x194464c, + 0x1958651, + 0x1974656, + 0x199865d, + 0x19b0666, + 0x1a0066c, + 0x1a04680, + 0x1a3c681, + 0x1a4068f, + 0x1a58690, 0x1a5c696, - 0x1aa0697, - 0x1aa46a8, + 0x1a60697, + 0x1aa4698, 0x1aa86a9, - 0x21aac6aa, - 0x61ab46ab, - 0x21abc6ad, - 0x1b046af, - 0x1b106c1, - 0x21b146c4, - 0x1b386c5, - 0x1b3c6ce, - 0x1b506cf, - 0x1b546d4, - 0x1b746d5, - 0x1ba46dd, - 0x1bc46e9, - 0x1bcc6f1, - 0x1bf46f3, - 0x1c106fd, - 0x21c14704, + 0x1aac6aa, + 0x21ab06ab, + 0x61ab86ac, + 0x21ac06ae, + 0x1b086b0, + 0x1b146c2, + 0x21b186c5, + 0x1b3c6c6, + 0x1b406cf, + 0x1b546d0, + 0x1b586d5, + 0x1b786d6, + 0x1ba86de, + 0x1bc86ea, + 0x1bd06f2, + 0x1bf86f4, + 0x1c146fe, 0x21c18705, - 0x1c1c706, - 0x1cb4707, - 0x1cc872d, - 0x1cdc732, - 0x1d14737, - 0x1d24745, - 0x1d38749, - 0x1d5074e, - 0x1df4754, - 0x202877d, - 0x203080a, - 0x2203480c, + 0x21c1c706, + 0x1c20707, + 0x1cb8708, + 0x1ccc72e, + 0x1ce0733, + 0x1d18738, + 0x1d28746, + 0x1d3c74a, + 0x1d5474f, + 0x1df8755, + 0x202c77e, + 0x203480b, 0x2203880d, - 0x20a480e, - 0x2110829, - 0x2128844, - 0x213c84a, - 0x214084f, + 0x2203c80e, + 0x20a880f, + 0x211482a, + 0x212c845, + 0x214084b, 0x2144850, - 0x214c851, - 0x2164853, - 0x2168859, - 0x218485a, - 0x21d8861, - 0x21dc876, - 0x221e0877, - 0x2200878, - 0x2204880, - 0x2208881, - 0x2238882, - 0x6223c88e, - 0x2224488f, - 0x22248891, - 0x228c892, - 0x622908a3, - 0x22a48a4, - 0x23048a9, - 0x223088c1, - 0x2230c8c2, - 0x223148c3, + 0x2148851, + 0x2150852, + 0x2168854, + 0x216c85a, + 0x218885b, + 0x21dc862, + 0x21e0877, + 0x221e4878, + 0x2208879, + 0x2220c882, + 0x2210883, + 0x2214884, + 0x2244885, + 0x62248891, + 0x22250892, + 0x22254894, + 0x2298895, + 0x6229c8a6, + 0x22b08a7, + 0x23108ac, + 0x223148c4, 0x223188c5, - 0x2231c8c6, - 0x23208c7, - 0x23288c8, + 0x223208c6, + 0x223248c8, + 0x223288c9, 0x232c8ca, - 0x223388cb, - 0x223408ce, - 0x23508d0, - 0x23608d4, - 0x24148d8, - 0x2418905, - 0x22428906, - 0x2242c90a, - 0x2243490b, - 0x249090d, - 0x2494924, - 0x2498925, - 0x249c926, - 0x2a90927, - 0x2a94aa4, - 0x22b3caa5, - 0x22b40acf, - 0x22b44ad0, - 0x22b50ad1, - 0x22b54ad4, - 0x22b60ad5, - 0x22b64ad8, - 0x22b68ad9, - 0x22b6cada, + 0x23348cb, + 0x23388cd, + 0x223448ce, + 0x2234c8d1, + 0x235c8d3, + 0x236c8d7, + 0x24208db, + 0x2424908, + 0x22434909, + 0x2243890d, + 0x2244090e, + 0x249c910, + 0x24a0927, + 0x24a4928, + 0x24a8929, + 0x2a9c92a, + 0x2aa0aa7, + 0x22b48aa8, + 0x22b4cad2, + 0x22b50ad3, + 0x22b5cad4, + 0x22b60ad7, + 0x22b6cad8, 0x22b70adb, 0x22b74adc, - 0x22b80add, - 0x22b84ae0, - 0x22b90ae1, - 0x22b94ae4, - 0x22b98ae5, - 0x22b9cae6, - 0x22ba8ae7, - 0x22bacaea, - 0x22bb8aeb, - 0x22bbcaee, - 0x22bc0aef, - 0x22bc4af0, - 0x2bc8af1, + 0x22b78add, + 0x22b7cade, + 0x22b80adf, + 0x22b8cae0, + 0x22b90ae3, + 0x22b9cae4, + 0x22ba0ae7, + 0x22ba4ae8, + 0x22ba8ae9, + 0x22bb4aea, + 0x22bb8aed, + 0x22bc4aee, + 0x22bc8af1, 0x22bccaf2, - 0x22bd8af3, - 0x22bdcaf6, - 0x2be0af7, - 0x2be8af8, - 0x62bf4afa, - 0x22bfcafd, - 0x2c40aff, - 0x22c60b10, - 0x22c64b18, - 0x22c68b19, - 0x22c70b1a, - 0x22c78b1c, - 0x22c7cb1e, - 0x22c80b1f, - 0x22c88b20, + 0x22bd0af3, + 0x2bd4af4, + 0x22bd8af5, + 0x22be4af6, + 0x22be8af9, + 0x2becafa, + 0x2bf4afb, + 0x62c00afd, + 0x22c08b00, + 0x2c4cb02, + 0x22c6cb13, + 0x22c70b1b, + 0x22c74b1c, + 0x22c7cb1d, + 0x22c84b1f, + 0x22c88b21, 0x22c8cb22, - 0x22c90b23, - 0x2c94b24, - 0x22cc0b25, - 0x22cc4b30, - 0x22cc8b31, - 0x2cccb32, - 0x22cd0b33, + 0x22c94b23, + 0x22c98b25, + 0x22c9cb26, + 0x22ca0b27, + 0x2ca4b28, + 0x22cd0b29, 0x22cd4b34, - 0x22ce0b35, + 0x22cd8b35, + 0x2cdcb36, + 0x22ce0b37, 0x22ce4b38, - 0x2ce8b39, - 0x2cf0b3a, - 0x2cfcb3c, - 0x2d04b3f, - 0x2d20b41, - 0x2d38b48, - 0x2d3cb4e, - 0x2d4cb4f, - 0x2d58b53, - 0x2d8cb56, - 0x2d94b63, - 0x22d98b65, - 0x2db0b66, - 0x22db8b6c, + 0x22cf0b39, + 0x22cf4b3c, + 0x2cf8b3d, + 0x2d00b3e, + 0x2d0cb40, + 0x2d14b43, + 0x2d30b45, + 0x2d48b4c, + 0x2d60b52, + 0x2d70b58, + 0x2d7cb5c, + 0x2db0b5f, + 0x2db8b6c, 0x22dbcb6e, - 0x22dc4b6f, - 0x2ed0b71, - 0x22ed4bb4, - 0x2edcbb5, - 0x2ee0bb7, - 0x22ee4bb8, - 0x2ee8bb9, - 0x2f34bba, - 0x2f38bcd, - 0x2f3cbce, - 0x2f58bcf, - 0x2f6cbd6, - 0x2f94bdb, - 0x2fbcbe5, - 0x2fc0bef, - 0x62fc4bf0, - 0x2ff4bf1, - 0x2ff8bfd, - 0x22ffcbfe, - 0x3000bff, - 0x3028c00, - 0x302cc0a, - 0x3050c0b, - 0x3054c14, - 0x306cc15, - 0x3070c1b, - 0x3074c1c, - 0x3094c1d, - 0x30b4c25, - 0x230b8c2d, - 0x30bcc2e, - 0x230c0c2f, - 0x30c4c30, - 0x30c8c31, - 0x30ccc32, - 0x30d0c33, - 0x30f0c34, - 0x230f4c3c, - 0x230fcc3d, + 0x2dd4b6f, + 0x22ddcb75, + 0x22de0b77, + 0x22de8b78, + 0x2ef8b7a, + 0x22efcbbe, + 0x2f04bbf, + 0x2f08bc1, + 0x22f0cbc2, + 0x22f10bc3, + 0x22f14bc4, + 0x2f18bc5, + 0x2f64bc6, + 0x2f68bd9, + 0x2f6cbda, + 0x2f88bdb, + 0x2f9cbe2, + 0x2fc4be7, + 0x2fecbf1, + 0x2ff0bfb, + 0x62ff4bfc, + 0x3024bfd, + 0x3028c09, + 0x2302cc0a, + 0x3030c0b, + 0x3058c0c, + 0x305cc16, + 0x3080c17, + 0x3084c20, + 0x309cc21, + 0x30a0c27, + 0x30a4c28, + 0x30c4c29, + 0x30e4c31, + 0x230e8c39, + 0x30ecc3a, + 0x230f0c3b, + 0x30f4c3c, + 0x30f8c3d, + 0x30fcc3e, 0x3100c3f, - 0x3128c40, - 0x313cc4a, - 0x31bcc4f, - 0x31c4c6f, - 0x31c8c71, - 0x31e4c72, - 0x31fcc79, - 0x3200c7f, - 0x3214c80, + 0x3120c40, + 0x23124c48, + 0x2312cc49, + 0x3130c4b, + 0x3158c4c, + 0x316cc56, + 0x31ecc5b, + 0x31f4c7b, + 0x31f8c7d, + 0x3214c7e, 0x322cc85, - 0x3248c8b, - 0x3260c92, - 0x3268c98, - 0x3284c9a, - 0x329cca1, - 0x32a0ca7, - 0x32c8ca8, - 0x32e8cb2, - 0x3304cba, - 0x3308cc1, - 0x336ccc2, - 0x3388cdb, - 0x33b0ce2, - 0x33b4cec, - 0x33ccced, - 0x3410cf3, - 0x3490d04, - 0x34d0d24, - 0x34d4d34, - 0x34e0d35, - 0x3500d38, - 0x3508d40, - 0x3528d42, - 0x3530d4a, - 0x3574d4c, - 0x35c8d5d, - 0x35ccd72, - 0x36dcd73, - 0x236e4db7, - 0x236e8db9, - 0x236ecdba, - 0x236f0dbb, - 0x236f4dbc, - 0x36f8dbd, - 0x236fcdbe, - 0x23700dbf, - 0x23704dc0, - 0x3708dc1, - 0x370cdc2, - 0x23710dc3, - 0x23720dc4, - 0x23728dc8, - 0x23730dca, + 0x3230c8b, + 0x3244c8c, + 0x325cc91, + 0x3278c97, + 0x3290c9e, + 0x329cca4, + 0x32b8ca7, + 0x32d0cae, + 0x32d4cb4, + 0x32fccb5, + 0x331ccbf, + 0x3338cc7, + 0x333ccce, + 0x33a0ccf, + 0x33bcce8, + 0x33e4cef, + 0x33e8cf9, + 0x3400cfa, + 0x3444d00, + 0x34c4d11, + 0x3504d31, + 0x3508d41, + 0x350cd42, + 0x3518d43, + 0x3538d46, + 0x3544d4e, + 0x3564d51, + 0x356cd59, + 0x35b0d5b, + 0x3604d6c, + 0x3608d81, + 0x371cd82, + 0x23724dc7, + 0x23728dc9, + 0x2372cdca, + 0x23730dcb, 0x23734dcc, - 0x2373cdcd, + 0x23738dcd, + 0x2373cdce, 0x23740dcf, - 0x23744dd0, - 0x375cdd1, - 0x3780dd7, - 0x37a0de0, - 0x3e18de8, - 0x23e1cf86, - 0x23e20f87, - 0x23e24f88, - 0x23e28f89, - 0x3e38f8a, - 0x3e58f8e, - 0x4018f96, - 0x40e9006, - 0x415903a, - 0x41b1056, - 0x429906c, - 0x42f10a6, - 0x432d0bc, - 0x44290cb, - 0x44f510a, - 0x458d13d, - 0x461d163, - 0x4681187, - 0x48b91a0, - 0x497122e, - 0x4a3d25c, - 0x4a8928f, - 0x4b112a2, - 0x4b4d2c4, - 0x4b9d2d3, - 0x4c152e7, - 0x64c19305, - 0x64c1d306, - 0x64c21307, - 0x4c9d308, - 0x4cf9327, - 0x4d7533e, - 0x4ded35d, - 0x4e6d37b, - 0x4ed939b, - 0x50053b6, - 0x505d401, - 0x65061417, - 0x50f9418, - 0x510143e, - 0x25105440, - 0x518d441, - 0x51d9463, - 0x5241476, - 0x52e9490, - 0x53b14ba, - 0x54194ec, - 0x552d506, - 0x6553154b, - 0x6553554c, - 0x559154d, - 0x55ed564, - 0x567d57b, - 0x56f959f, - 0x573d5be, - 0x58215cf, - 0x5855608, - 0x58b5615, - 0x592962d, - 0x59b164a, - 0x59f166c, - 0x5a6167c, - 0x65a65698, - 0x5a89699, - 0x5a8d6a2, - 0x5abd6a3, - 0x5ad96af, - 0x5b1d6b6, - 0x5b2d6c7, - 0x5b456cb, - 0x5bbd6d1, - 0x5bc56ef, - 0x5be16f1, - 0x5bf56f8, - 0x5c156fd, - 0x25c19705, - 0x5c41706, - 0x5c45710, - 0x5c4d711, - 0x5c61713, - 0x5c7d718, - 0x5c8571f, - 0x5c91721, - 0x5c95724, - 0x5cd1725, - 0x5cd5734, - 0x5cdd735, - 0x5cf1737, - 0x5d1973c, - 0x5d21746, - 0x5d25748, - 0x5d49749, - 0x5d6d752, - 0x5d8575b, - 0x5d89761, - 0x5d91762, - 0x5d99764, - 0x5dad766, - 0x5e6976b, - 0x5e6d79a, - 0x5e7579b, - 0x5e7979d, - 0x5e9d79e, - 0x5ebd7a7, - 0x5ed97af, - 0x5ee97b6, - 0x5efd7ba, - 0x5f057bf, - 0x5f0d7c1, - 0x5f117c3, - 0x5f197c4, - 0x5f357c6, - 0x5f457cd, + 0x3744dd0, + 0x3748dd1, + 0x2374cdd2, + 0x2375cdd3, + 0x23764dd7, + 0x2376cdd9, + 0x23770ddb, + 0x23778ddc, + 0x2377cdde, + 0x23780ddf, + 0x3798de0, + 0x37bcde6, + 0x37dcdef, + 0x3e54df7, + 0x23e58f95, + 0x23e5cf96, + 0x23e60f97, + 0x23e64f98, + 0x3e74f99, + 0x3e94f9d, + 0x4054fa5, + 0x4125015, + 0x4195049, + 0x41ed065, + 0x42d507b, + 0x432d0b5, + 0x43690cb, + 0x44650da, + 0x4531119, + 0x45c914c, + 0x4659172, + 0x46bd196, + 0x48f51af, + 0x49ad23d, + 0x4a7926b, + 0x4ac529e, + 0x4b4d2b1, + 0x4b892d3, + 0x4bd92e2, + 0x4c512f6, + 0x64c55314, + 0x64c59315, + 0x64c5d316, + 0x4cd9317, + 0x4d35336, + 0x4db134d, + 0x4e2936c, + 0x4ea938a, + 0x4f153aa, + 0x50413c5, + 0x5099410, + 0x6509d426, + 0x5135427, + 0x513d44d, + 0x2514144f, + 0x51c9450, + 0x5215472, + 0x527d485, + 0x532549f, + 0x53ed4c9, + 0x54554fb, + 0x5569515, + 0x6556d55a, + 0x6557155b, + 0x55cd55c, + 0x5629573, + 0x56b958a, + 0x57355ae, + 0x57795cd, + 0x585d5de, + 0x5891617, + 0x58f1624, + 0x596563c, + 0x59ed659, + 0x5a2d67b, + 0x5a9d68b, + 0x65aa16a7, + 0x5ac56a8, + 0x5ac96b1, + 0x5af96b2, + 0x5b156be, + 0x5b596c5, + 0x5b696d6, + 0x5b816da, + 0x5bf96e0, + 0x5c016fe, + 0x5c1d700, + 0x5c31707, + 0x5c5170c, + 0x25c55714, + 0x5c7d715, + 0x5c8171f, + 0x5c89720, + 0x5c9d722, + 0x5cb9727, + 0x5cc172e, + 0x5ccd730, + 0x5cd1733, + 0x5d0d734, + 0x5d11743, + 0x5d19744, + 0x5d2d746, + 0x5d5574b, + 0x5d5d755, + 0x5d61757, + 0x5d85758, + 0x5da9761, + 0x5dc176a, + 0x5dc5770, + 0x5dcd771, + 0x5dd5773, + 0x5de9775, + 0x5ea177a, + 0x5ea57a8, + 0x5ead7a9, + 0x5eb17ab, + 0x5ed57ac, + 0x5ef57b5, + 0x5f117bd, + 0x5f217c4, + 0x5f357c8, + 0x5f3d7cd, + 0x5f457cf, 0x5f497d1, - 0x5f657d2, - 0x67ed7d9, - 0x68259fb, - 0x6851a09, - 0x6869a14, - 0x688da1a, - 0x68ada23, - 0x68f1a2b, - 0x68f9a3c, - 0x268fda3e, - 0x26901a3f, - 0x6909a40, - 0x6b4da42, - 0x26b51ad3, - 0x26b55ad4, - 0x6b69ad5, - 0x26b6dada, - 0x6b71adb, - 0x6b79adc, - 0x26b85ade, - 0x26b95ae1, - 0x26b9dae5, - 0x26ba9ae7, + 0x5f517d2, + 0x5f6d7d4, + 0x5f7d7db, + 0x5f817df, + 0x5f9d7e0, + 0x68257e7, + 0x685da09, + 0x6889a17, + 0x68a1a22, + 0x68c5a28, + 0x68e5a31, + 0x6929a39, + 0x6931a4a, + 0x26935a4c, + 0x26939a4d, + 0x6941a4e, + 0x6b89a50, + 0x26b8dae2, + 0x26b91ae3, + 0x6ba5ae4, + 0x26ba9ae9, 0x6badaea, - 0x26bb1aeb, - 0x26bc9aec, - 0x26bd1af2, + 0x6bb5aeb, + 0x26bc1aed, + 0x26bd1af0, 0x26bd9af4, - 0x26bddaf6, - 0x26be5af7, + 0x26be5af6, 0x6be9af9, 0x26bedafa, - 0x6bf1afb, - 0x26bfdafc, - 0x6c05aff, - 0x6c19b01, - 0x6c1db06, - 0x6c45b07, - 0x6c81b11, - 0x6c85b20, - 0x6cbdb21, - 0x6ce5b2f, - 0x7841b39, - 0x7845e10, - 0x7849e11, - 0x2784de12, - 0x7851e13, - 0x27855e14, - 0x7859e15, - 0x27865e16, - 0x7869e19, - 0x786de1a, - 0x27871e1b, - 0x7875e1c, - 0x2787de1d, + 0x26c05afb, + 0x26c0db01, + 0x26c15b03, + 0x26c19b05, + 0x26c21b06, + 0x26c25b08, + 0x6c29b09, + 0x26c2db0a, + 0x6c31b0b, + 0x26c3db0c, + 0x6c45b0f, + 0x6c59b11, + 0x6c5db16, + 0x6c85b17, + 0x6cc1b21, + 0x6cc5b30, + 0x6cfdb31, + 0x6d1db3f, + 0x7879b47, + 0x787de1e, 0x7881e1f, - 0x7885e20, - 0x27895e21, - 0x7899e25, - 0x789de26, + 0x27885e20, + 0x7889e21, + 0x2788de22, + 0x7891e23, + 0x2789de24, 0x78a1e27, 0x78a5e28, 0x278a9e29, 0x78ade2a, - 0x78b1e2b, - 0x78b5e2c, + 0x278b5e2b, 0x78b9e2d, - 0x278c1e2e, - 0x78c5e30, - 0x78c9e31, - 0x78cde32, - 0x278d1e33, + 0x78bde2e, + 0x278cde2f, + 0x78d1e33, 0x78d5e34, - 0x278dde35, + 0x78d9e35, + 0x78dde36, 0x278e1e37, - 0x78fde38, - 0x790de3f, - 0x794de43, - 0x7951e53, - 0x7975e54, - 0x7989e5d, - 0x798de62, - 0x7999e63, - 0x7b61e66, - 0x27b65ed8, - 0x27b6ded9, - 0x27b71edb, - 0x27b75edc, - 0x7b7dedd, - 0x7c59edf, - 0x27c65f16, - 0x27c69f19, - 0x27c6df1a, - 0x27c71f1b, - 0x7c75f1c, - 0x7ca1f1d, - 0x7cb9f28, - 0x7cbdf2e, - 0x7cddf2f, - 0x7ce9f37, - 0x7d09f3a, - 0x7d0df42, - 0x7d45f43, - 0x800df51, - 0x80ca003, - 0x80ce032, - 0x80d2033, - 0x80e6034, - 0x80ea039, - 0x811e03a, - 0x8156047, - 0x2815a055, - 0x8176056, - 0x819a05d, - 0x819e066, - 0x81be067, - 0x81da06f, - 0x81fe076, - 0x820e07f, - 0x8212083, - 0x8216084, - 0x824e085, - 0x825a093, - 0x8282096, - 0x282860a0, - 0x83220a1, - 0x283260c8, - 0x832a0c9, - 0x833a0ca, - 0x2833e0ce, - 0x83520cf, - 0x836e0d4, - 0x838e0db, - 0x83920e3, - 0x83a60e4, - 0x83ba0e9, - 0x83be0ee, - 0x83c60ef, - 0x83ca0f1, - 0x83ea0f2, - 0x84a20fa, - 0x284a6128, - 0x84aa129, - 0x84ca12a, - 0x84f6132, - 0x2850613d, - 0x850a141, - 0x8516142, - 0x855a145, - 0x855e156, - 0x8572157, - 0x859215c, - 0x85ae164, - 0x85ba16b, - 0x85da16e, - 0x860a176, - 0x8616182, - 0x86e6185, - 0x86ea1b9, - 0x86fe1ba, - 0x87021bf, - 0x871a1c0, - 0x871e1c6, - 0x872a1c7, - 0x87361ca, - 0x873a1cd, - 0x87421ce, + 0x78e5e38, + 0x78e9e39, + 0x78ede3a, + 0x78f1e3b, + 0x278f9e3c, + 0x78fde3e, + 0x7901e3f, + 0x7905e40, + 0x27909e41, + 0x790de42, + 0x27915e43, + 0x27919e45, + 0x7935e46, + 0x7945e4d, + 0x7985e51, + 0x7989e61, + 0x79ade62, + 0x79c1e6b, + 0x79c5e70, + 0x79d1e71, + 0x7b99e74, + 0x27b9dee6, + 0x27ba5ee7, + 0x27ba9ee9, + 0x27badeea, + 0x7bb5eeb, + 0x7c91eed, + 0x27c9df24, + 0x27ca1f27, + 0x27ca5f28, + 0x27ca9f29, + 0x7cadf2a, + 0x7cd9f2b, + 0x7cf1f36, + 0x7cf5f3c, + 0x7d15f3d, + 0x7d21f45, + 0x7d41f48, + 0x7d45f50, + 0x7d7df51, + 0x8045f5f, + 0x8102011, + 0x8106040, + 0x810a041, + 0x811e042, + 0x8122047, + 0x8156048, + 0x818e055, + 0x28192063, + 0x81ae064, + 0x81d206b, + 0x81d6074, + 0x81f6075, + 0x821207d, + 0x8236084, + 0x824608d, + 0x824a091, + 0x824e092, + 0x828a093, + 0x82960a2, + 0x82be0a5, + 0x282c20af, + 0x835e0b0, + 0x283620d7, + 0x83660d8, + 0x83760d9, + 0x2837a0dd, + 0x83920de, + 0x83ae0e4, + 0x83ce0eb, + 0x83d20f3, + 0x83e60f4, + 0x83fa0f9, + 0x83fe0fe, + 0x84060ff, + 0x840a101, + 0x842a102, + 0x84e210a, + 0x284e6138, + 0x84ea139, + 0x850a13a, + 0x8536142, + 0x2854614d, + 0x854a151, + 0x8556152, + 0x859a155, + 0x859e166, + 0x85b2167, + 0x85d216c, + 0x85ee174, + 0x85f217b, + 0x85fe17c, + 0x861e17f, + 0x864e187, + 0x865a193, + 0x872a196, + 0x872e1ca, + 0x87421cb, 0x87461d0, - 0x876a1d1, - 0x87a61da, - 0x87aa1e9, - 0x87ca1ea, - 0x881e1f2, - 0x884e207, - 0x28852213, - 0x885a214, - 0x88b2216, - 0x88b622c, - 0x88ba22d, - 0x88be22e, - 0x890222f, - 0x8912240, - 0x894e244, - 0x8952253, - 0x8982254, - 0x8ace260, - 0x8af22b3, - 0x8b322bc, - 0x8b622cc, - 0x28b6a2d8, - 0x28b6e2da, - 0x28b722db, - 0x8b7a2dc, - 0x8b862de, - 0x8caa2e1, - 0x8cb632a, - 0x8cc232d, - 0x8cce330, - 0x8cda333, - 0x8ce6336, - 0x8cf2339, - 0x8cfe33c, - 0x8d0a33f, - 0x8d16342, - 0x8d22345, - 0x28d26348, - 0x8d32349, - 0x8d3e34c, - 0x8d4a34f, - 0x8d52352, - 0x8d5e354, + 0x875e1d1, + 0x87621d7, + 0x876e1d8, + 0x877a1db, + 0x877e1de, + 0x87861df, + 0x878a1e1, + 0x87ae1e2, + 0x87ea1eb, + 0x87ee1fa, + 0x880e1fb, + 0x8846203, + 0x8876211, + 0x2887a21d, + 0x887e21e, + 0x888621f, + 0x88de221, + 0x88e2237, + 0x88e6238, + 0x88ea239, + 0x892e23a, + 0x893e24b, + 0x897a24f, + 0x897e25e, + 0x89ae25f, + 0x8afa26b, + 0x8b1e2be, + 0x8b5e2c7, + 0x8b8e2d7, + 0x28b962e3, + 0x28b9a2e5, + 0x28b9e2e6, + 0x8ba62e7, + 0x8bbe2e9, + 0x8ce22ef, + 0x8cee338, + 0x8cfa33b, + 0x8d0633e, + 0x8d12341, + 0x8d1e344, + 0x8d2a347, + 0x8d3634a, + 0x8d4234d, + 0x8d4e350, + 0x8d5a353, + 0x28d5e356, 0x8d6a357, 0x8d7635a, 0x8d8235d, - 0x8d8e360, - 0x8d9a363, - 0x8da6366, - 0x8db2369, - 0x8dbe36c, - 0x8dca36f, - 0x8dd6372, - 0x8e02375, + 0x8d8a360, + 0x8d96362, + 0x8da2365, + 0x8dae368, + 0x8dba36b, + 0x8dc636e, + 0x8dd2371, + 0x8dde374, + 0x8dea377, + 0x8df637a, + 0x8e0237d, 0x8e0e380, - 0x8e1a383, - 0x8e26386, - 0x8e32389, - 0x8e3e38c, - 0x8e4638f, + 0x8e3a383, + 0x8e4638e, 0x8e52391, 0x8e5e394, 0x8e6a397, 0x8e7639a, - 0x8e8239d, - 0x8e8e3a0, - 0x8e9a3a3, - 0x8ea63a6, - 0x8eb23a9, - 0x8ebe3ac, - 0x8eca3af, - 0x8ed23b2, + 0x8e7e39d, + 0x8e8a39f, + 0x8e963a2, + 0x8ea23a5, + 0x8eae3a8, + 0x8eba3ab, + 0x8ec63ae, + 0x8ed23b1, 0x8ede3b4, - 0x8ee63b7, - 0x8ef23b9, - 0x8efe3bc, - 0x8f0a3bf, + 0x8eea3b7, + 0x8ef63ba, + 0x8f023bd, + 0x8f0a3c0, 0x8f163c2, - 0x8f223c5, - 0x8f2e3c8, - 0x8f3a3cb, - 0x8f463ce, - 0x8f4a3d1, - 0x8f563d2, - 0x8f6e3d5, - 0x8f723db, - 0x8f823dc, - 0x8fa23e0, - 0x8fa63e8, - 0x8ff63e9, - 0x8ffa3fd, - 0x900e3fe, - 0x9042403, - 0x9062410, - 0x9066418, - 0x906e419, - 0x909241b, - 0x90aa424, - 0x90c242a, - 0x90da430, - 0x9102436, - 0x9116440, - 0x912e445, - 0x913244b, - 0x2917a44c, - 0x917e45e, - 0x91aa45f, - 0x91ba46a, - 0x91ce46e, + 0x8f1e3c5, + 0x8f2a3c7, + 0x8f363ca, + 0x8f423cd, + 0x8f4e3d0, + 0x8f5a3d3, + 0x8f663d6, + 0x8f723d9, + 0x8f7e3dc, + 0x8f823df, + 0x8f8e3e0, + 0x8fa63e3, + 0x8faa3e9, + 0x8fba3ea, + 0x8fda3ee, + 0x8fde3f6, + 0x902e3f7, + 0x903240b, + 0x904640c, + 0x907a411, + 0x909a41e, + 0x909e426, + 0x90a6427, + 0x90ca429, + 0x90e2432, + 0x90fa438, + 0x911243e, + 0x913a444, + 0x914e44e, + 0x9166453, + 0x916a459, + 0x291b245a, + 0x91b646c, + 0x91e246d, + 0x91f2478, + 0x920647c, } -// max children 662 (capacity 1023) -// max text offset 32015 (capacity 32767) +// max children 669 (capacity 1023) +// max text offset 32017 (capacity 32767) // max text length 36 (capacity 63) -// max hi 9331 (capacity 16383) -// max lo 9326 (capacity 16383) +// max hi 9345 (capacity 16383) +// max lo 9340 (capacity 16383) diff --git a/vendor/golang.org/x/sys/AUTHORS b/vendor/golang.org/x/sys/AUTHORS deleted file mode 100644 index 15167cd74..000000000 --- a/vendor/golang.org/x/sys/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/sys/CONTRIBUTORS b/vendor/golang.org/x/sys/CONTRIBUTORS deleted file mode 100644 index 1c4577e96..000000000 --- a/vendor/golang.org/x/sys/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/sys/cpu/byteorder.go b/vendor/golang.org/x/sys/cpu/byteorder.go index dcbb14ef3..271055be0 100644 --- a/vendor/golang.org/x/sys/cpu/byteorder.go +++ b/vendor/golang.org/x/sys/cpu/byteorder.go @@ -46,6 +46,7 @@ func hostByteOrder() byteOrder { case "386", "amd64", "amd64p32", "alpha", "arm", "arm64", + "loong64", "mipsle", "mips64le", "mips64p32le", "nios2", "ppc64le", diff --git a/vendor/golang.org/x/sys/cpu/cpu.go b/vendor/golang.org/x/sys/cpu/cpu.go index b56886f26..83f112c4c 100644 --- a/vendor/golang.org/x/sys/cpu/cpu.go +++ b/vendor/golang.org/x/sys/cpu/cpu.go @@ -106,8 +106,8 @@ var ARM64 struct { // ARM contains the supported CPU features of the current ARM (32-bit) platform. // All feature flags are false if: -// 1. the current platform is not arm, or -// 2. the current operating system is not Linux. +// 1. the current platform is not arm, or +// 2. the current operating system is not Linux. var ARM struct { _ CacheLinePad HasSWP bool // SWP instruction support diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_arm64.go index 87dd5e302..bbaba18bc 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_arm64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_arm64.go @@ -41,13 +41,10 @@ func archInit() { switch runtime.GOOS { case "freebsd": readARM64Registers() - case "linux", "netbsd": + case "linux", "netbsd", "openbsd": doinit() default: - // Most platforms don't seem to allow reading these registers. - // - // OpenBSD: - // See https://golang.org/issue/31746 + // Many platforms don't seem to allow reading these registers. setMinimalFeatures() } } diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c b/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c index e363c7d13..a4605e6d1 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c @@ -7,6 +7,7 @@ #include #include +#include // Need to wrap __get_cpuid_count because it's declared as static. int @@ -17,27 +18,21 @@ gccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf, return __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx); } +#pragma GCC diagnostic ignored "-Wunknown-pragmas" +#pragma GCC push_options +#pragma GCC target("xsave") +#pragma clang attribute push (__attribute__((target("xsave"))), apply_to=function) + // xgetbv reads the contents of an XCR (Extended Control Register) // specified in the ECX register into registers EDX:EAX. // Currently, the only supported value for XCR is 0. -// -// TODO: Replace with a better alternative: -// -// #include -// -// #pragma GCC target("xsave") -// -// void gccgoXgetbv(uint32_t *eax, uint32_t *edx) { -// unsigned long long x = _xgetbv(0); -// *eax = x & 0xffffffff; -// *edx = (x >> 32) & 0xffffffff; -// } -// -// Note that _xgetbv is defined starting with GCC 8. void gccgoXgetbv(uint32_t *eax, uint32_t *edx) { - __asm(" xorl %%ecx, %%ecx\n" - " xgetbv" - : "=a"(*eax), "=d"(*edx)); + uint64_t v = _xgetbv(0); + *eax = v & 0xffffffff; + *edx = v >> 32; } + +#pragma clang attribute pop +#pragma GCC pop_options diff --git a/vendor/golang.org/x/sys/cpu/cpu_loong64.go b/vendor/golang.org/x/sys/cpu/cpu_loong64.go new file mode 100644 index 000000000..0f57b05bd --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_loong64.go @@ -0,0 +1,13 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build loong64 +// +build loong64 + +package cpu + +const cacheLineSize = 64 + +func initOptions() { +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go new file mode 100644 index 000000000..85b64d5cc --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go @@ -0,0 +1,65 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "syscall" + "unsafe" +) + +// Minimal copy of functionality from x/sys/unix so the cpu package can call +// sysctl without depending on x/sys/unix. + +const ( + // From OpenBSD's sys/sysctl.h. + _CTL_MACHDEP = 7 + + // From OpenBSD's machine/cpu.h. + _CPU_ID_AA64ISAR0 = 2 + _CPU_ID_AA64ISAR1 = 3 +) + +// Implemented in the runtime package (runtime/sys_openbsd3.go) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//go:linkname syscall_syscall6 syscall.syscall6 + +func sysctl(mib []uint32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + _, _, errno := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(unsafe.Pointer(&mib[0])), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if errno != 0 { + return errno + } + return nil +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +func sysctlUint64(mib []uint32) (uint64, bool) { + var out uint64 + nout := unsafe.Sizeof(out) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); err != nil { + return 0, false + } + return out, true +} + +func doinit() { + setMinimalFeatures() + + // Get ID_AA64ISAR0 and ID_AA64ISAR1 from sysctl. + isar0, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR0}) + if !ok { + return + } + isar1, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR1}) + if !ok { + return + } + parseARM64SystemRegisters(isar0, isar1, 0) + + Initialized = true +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s b/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s new file mode 100644 index 000000000..054ba05d6 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s @@ -0,0 +1,11 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) + +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go index f8c484f58..f3cde129b 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !linux && !netbsd && arm64 -// +build !linux,!netbsd,arm64 +//go:build !linux && !netbsd && !openbsd && arm64 +// +build !linux,!netbsd,!openbsd,arm64 package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go b/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go new file mode 100644 index 000000000..dd10eb79f --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go @@ -0,0 +1,12 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux && riscv64 +// +build !linux,riscv64 + +package cpu + +func archInit() { + Initialized = true +} diff --git a/vendor/golang.org/x/sys/execabs/execabs.go b/vendor/golang.org/x/sys/execabs/execabs.go index 78192498d..b981cfbb4 100644 --- a/vendor/golang.org/x/sys/execabs/execabs.go +++ b/vendor/golang.org/x/sys/execabs/execabs.go @@ -53,7 +53,7 @@ func relError(file, path string) error { // LookPath instead returns an error. func LookPath(file string) (string, error) { path, err := exec.LookPath(file) - if err != nil { + if err != nil && !isGo119ErrDot(err) { return "", err } if filepath.Base(file) == file && !filepath.IsAbs(path) { diff --git a/vendor/golang.org/x/sys/execabs/execabs_go118.go b/vendor/golang.org/x/sys/execabs/execabs_go118.go new file mode 100644 index 000000000..6ab5f5089 --- /dev/null +++ b/vendor/golang.org/x/sys/execabs/execabs_go118.go @@ -0,0 +1,12 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.19 +// +build !go1.19 + +package execabs + +func isGo119ErrDot(err error) bool { + return false +} diff --git a/vendor/golang.org/x/sys/execabs/execabs_go119.go b/vendor/golang.org/x/sys/execabs/execabs_go119.go new file mode 100644 index 000000000..1e7a9ada0 --- /dev/null +++ b/vendor/golang.org/x/sys/execabs/execabs_go119.go @@ -0,0 +1,15 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.19 +// +build go1.19 + +package execabs + +import "strings" + +func isGo119ErrDot(err error) bool { + // TODO: return errors.Is(err, exec.ErrDot) + return strings.Contains(err.Error(), "current directory") +} diff --git a/vendor/golang.org/x/sys/plan9/syscall.go b/vendor/golang.org/x/sys/plan9/syscall.go index 602473cba..a25223b8f 100644 --- a/vendor/golang.org/x/sys/plan9/syscall.go +++ b/vendor/golang.org/x/sys/plan9/syscall.go @@ -113,5 +113,6 @@ func (tv *Timeval) Nano() int64 { // use is a no-op, but the compiler cannot see that it is. // Calling use(p) ensures that p is kept live until that point. +// //go:noescape func use(p unsafe.Pointer) diff --git a/vendor/golang.org/x/sys/plan9/syscall_plan9.go b/vendor/golang.org/x/sys/plan9/syscall_plan9.go index 723b1f400..d079d8116 100644 --- a/vendor/golang.org/x/sys/plan9/syscall_plan9.go +++ b/vendor/golang.org/x/sys/plan9/syscall_plan9.go @@ -115,6 +115,7 @@ func Write(fd int, p []byte) (n int, err error) { var ioSync int64 //sys fd2path(fd int, buf []byte) (err error) + func Fd2path(fd int) (path string, err error) { var buf [512]byte @@ -126,6 +127,7 @@ func Fd2path(fd int) (path string, err error) { } //sys pipe(p *[2]int32) (err error) + func Pipe(p []int) (err error) { if len(p) != 2 { return syscall.ErrorString("bad arg in system call") @@ -180,6 +182,7 @@ func (w Waitmsg) ExitStatus() int { } //sys await(s []byte) (n int, err error) + func Await(w *Waitmsg) (err error) { var buf [512]byte var f [5][]byte @@ -301,42 +304,49 @@ func Getgroups() (gids []int, err error) { } //sys open(path string, mode int) (fd int, err error) + func Open(path string, mode int) (fd int, err error) { fixwd() return open(path, mode) } //sys create(path string, mode int, perm uint32) (fd int, err error) + func Create(path string, mode int, perm uint32) (fd int, err error) { fixwd() return create(path, mode, perm) } //sys remove(path string) (err error) + func Remove(path string) error { fixwd() return remove(path) } //sys stat(path string, edir []byte) (n int, err error) + func Stat(path string, edir []byte) (n int, err error) { fixwd() return stat(path, edir) } //sys bind(name string, old string, flag int) (err error) + func Bind(name string, old string, flag int) (err error) { fixwd() return bind(name, old, flag) } //sys mount(fd int, afd int, old string, flag int, aname string) (err error) + func Mount(fd int, afd int, old string, flag int, aname string) (err error) { fixwd() return mount(fd, afd, old, flag, aname) } //sys wstat(path string, edir []byte) (err error) + func Wstat(path string, edir []byte) (err error) { fixwd() return wstat(path, edir) diff --git a/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s b/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s new file mode 100644 index 000000000..d560019ea --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s @@ -0,0 +1,29 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || freebsd || netbsd || openbsd) && gc +// +build darwin freebsd netbsd openbsd +// +build gc + +#include "textflag.h" + +// System call support for RISCV64 BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/asm_linux_loong64.s b/vendor/golang.org/x/sys/unix/asm_linux_loong64.s new file mode 100644 index 000000000..565357288 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_loong64.s @@ -0,0 +1,54 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && loong64 && gc +// +build linux +// +build loong64 +// +build gc + +#include "textflag.h" + + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + JAL runtime·entersyscall(SB) + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R11 // syscall entry + SYSCALL + MOVV R4, r1+32(FP) + MOVV R0, r2+40(FP) // r2 is not used. Always set to 0 + JAL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R11 // syscall entry + SYSCALL + MOVV R4, r1+32(FP) + MOVV R0, r2+40(FP) // r2 is not used. Always set to 0 + RET diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go index 4362f47e2..b0f2bc4ae 100644 --- a/vendor/golang.org/x/sys/unix/endian_little.go +++ b/vendor/golang.org/x/sys/unix/endian_little.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // -//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh -// +build 386 amd64 amd64p32 alpha arm arm64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh +//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh +// +build 386 amd64 amd64p32 alpha arm arm64 loong64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh package unix diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_386.go b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go deleted file mode 100644 index 761db66ef..000000000 --- a/vendor/golang.org/x/sys/unix/errors_freebsd_386.go +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep -// them here for backwards compatibility. - -package unix - -const ( - DLT_HHDLC = 0x79 - IFF_SMART = 0x20 - IFT_1822 = 0x2 - IFT_A12MPPSWITCH = 0x82 - IFT_AAL2 = 0xbb - IFT_AAL5 = 0x31 - IFT_ADSL = 0x5e - IFT_AFLANE8023 = 0x3b - IFT_AFLANE8025 = 0x3c - IFT_ARAP = 0x58 - IFT_ARCNET = 0x23 - IFT_ARCNETPLUS = 0x24 - IFT_ASYNC = 0x54 - IFT_ATM = 0x25 - IFT_ATMDXI = 0x69 - IFT_ATMFUNI = 0x6a - IFT_ATMIMA = 0x6b - IFT_ATMLOGICAL = 0x50 - IFT_ATMRADIO = 0xbd - IFT_ATMSUBINTERFACE = 0x86 - IFT_ATMVCIENDPT = 0xc2 - IFT_ATMVIRTUAL = 0x95 - IFT_BGPPOLICYACCOUNTING = 0xa2 - IFT_BSC = 0x53 - IFT_CCTEMUL = 0x3d - IFT_CEPT = 0x13 - IFT_CES = 0x85 - IFT_CHANNEL = 0x46 - IFT_CNR = 0x55 - IFT_COFFEE = 0x84 - IFT_COMPOSITELINK = 0x9b - IFT_DCN = 0x8d - IFT_DIGITALPOWERLINE = 0x8a - IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba - IFT_DLSW = 0x4a - IFT_DOCSCABLEDOWNSTREAM = 0x80 - IFT_DOCSCABLEMACLAYER = 0x7f - IFT_DOCSCABLEUPSTREAM = 0x81 - IFT_DS0 = 0x51 - IFT_DS0BUNDLE = 0x52 - IFT_DS1FDL = 0xaa - IFT_DS3 = 0x1e - IFT_DTM = 0x8c - IFT_DVBASILN = 0xac - IFT_DVBASIOUT = 0xad - IFT_DVBRCCDOWNSTREAM = 0x93 - IFT_DVBRCCMACLAYER = 0x92 - IFT_DVBRCCUPSTREAM = 0x94 - IFT_ENC = 0xf4 - IFT_EON = 0x19 - IFT_EPLRS = 0x57 - IFT_ESCON = 0x49 - IFT_ETHER = 0x6 - IFT_FAITH = 0xf2 - IFT_FAST = 0x7d - IFT_FASTETHER = 0x3e - IFT_FASTETHERFX = 0x45 - IFT_FDDI = 0xf - IFT_FIBRECHANNEL = 0x38 - IFT_FRAMERELAYINTERCONNECT = 0x3a - IFT_FRAMERELAYMPI = 0x5c - IFT_FRDLCIENDPT = 0xc1 - IFT_FRELAY = 0x20 - IFT_FRELAYDCE = 0x2c - IFT_FRF16MFRBUNDLE = 0xa3 - IFT_FRFORWARD = 0x9e - IFT_G703AT2MB = 0x43 - IFT_G703AT64K = 0x42 - IFT_GIF = 0xf0 - IFT_GIGABITETHERNET = 0x75 - IFT_GR303IDT = 0xb2 - IFT_GR303RDT = 0xb1 - IFT_H323GATEKEEPER = 0xa4 - IFT_H323PROXY = 0xa5 - IFT_HDH1822 = 0x3 - IFT_HDLC = 0x76 - IFT_HDSL2 = 0xa8 - IFT_HIPERLAN2 = 0xb7 - IFT_HIPPI = 0x2f - IFT_HIPPIINTERFACE = 0x39 - IFT_HOSTPAD = 0x5a - IFT_HSSI = 0x2e - IFT_HY = 0xe - IFT_IBM370PARCHAN = 0x48 - IFT_IDSL = 0x9a - IFT_IEEE80211 = 0x47 - IFT_IEEE80212 = 0x37 - IFT_IEEE8023ADLAG = 0xa1 - IFT_IFGSN = 0x91 - IFT_IMT = 0xbe - IFT_INTERLEAVE = 0x7c - IFT_IP = 0x7e - IFT_IPFORWARD = 0x8e - IFT_IPOVERATM = 0x72 - IFT_IPOVERCDLC = 0x6d - IFT_IPOVERCLAW = 0x6e - IFT_IPSWITCH = 0x4e - IFT_IPXIP = 0xf9 - IFT_ISDN = 0x3f - IFT_ISDNBASIC = 0x14 - IFT_ISDNPRIMARY = 0x15 - IFT_ISDNS = 0x4b - IFT_ISDNU = 0x4c - IFT_ISO88022LLC = 0x29 - IFT_ISO88023 = 0x7 - IFT_ISO88024 = 0x8 - IFT_ISO88025 = 0x9 - IFT_ISO88025CRFPINT = 0x62 - IFT_ISO88025DTR = 0x56 - IFT_ISO88025FIBER = 0x73 - IFT_ISO88026 = 0xa - IFT_ISUP = 0xb3 - IFT_L3IPXVLAN = 0x89 - IFT_LAPB = 0x10 - IFT_LAPD = 0x4d - IFT_LAPF = 0x77 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 - IFT_MODEM = 0x30 - IFT_MPC = 0x71 - IFT_MPLS = 0xa6 - IFT_MPLSTUNNEL = 0x96 - IFT_MSDSL = 0x8f - IFT_MVL = 0xbf - IFT_MYRINET = 0x63 - IFT_NFAS = 0xaf - IFT_NSIP = 0x1b - IFT_OPTICALCHANNEL = 0xc3 - IFT_OPTICALTRANSPORT = 0xc4 - IFT_OTHER = 0x1 - IFT_P10 = 0xc - IFT_P80 = 0xd - IFT_PARA = 0x22 - IFT_PFLOG = 0xf6 - IFT_PFSYNC = 0xf7 - IFT_PLC = 0xae - IFT_POS = 0xab - IFT_PPPMULTILINKBUNDLE = 0x6c - IFT_PROPBWAP2MP = 0xb8 - IFT_PROPCNLS = 0x59 - IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 - IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 - IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 - IFT_PROPMUX = 0x36 - IFT_PROPWIRELESSP2P = 0x9d - IFT_PTPSERIAL = 0x16 - IFT_PVC = 0xf1 - IFT_QLLC = 0x44 - IFT_RADIOMAC = 0xbc - IFT_RADSL = 0x5f - IFT_REACHDSL = 0xc0 - IFT_RFC1483 = 0x9f - IFT_RS232 = 0x21 - IFT_RSRB = 0x4f - IFT_SDLC = 0x11 - IFT_SDSL = 0x60 - IFT_SHDSL = 0xa9 - IFT_SIP = 0x1f - IFT_SLIP = 0x1c - IFT_SMDSDXI = 0x2b - IFT_SMDSICIP = 0x34 - IFT_SONET = 0x27 - IFT_SONETOVERHEADCHANNEL = 0xb9 - IFT_SONETPATH = 0x32 - IFT_SONETVT = 0x33 - IFT_SRP = 0x97 - IFT_SS7SIGLINK = 0x9c - IFT_STACKTOSTACK = 0x6f - IFT_STARLAN = 0xb - IFT_STF = 0xd7 - IFT_T1 = 0x12 - IFT_TDLC = 0x74 - IFT_TERMPAD = 0x5b - IFT_TR008 = 0xb0 - IFT_TRANSPHDLC = 0x7b - IFT_TUNNEL = 0x83 - IFT_ULTRA = 0x1d - IFT_USB = 0xa0 - IFT_V11 = 0x40 - IFT_V35 = 0x2d - IFT_V36 = 0x41 - IFT_V37 = 0x78 - IFT_VDSL = 0x61 - IFT_VIRTUALIPADDRESS = 0x70 - IFT_VOICEEM = 0x64 - IFT_VOICEENCAP = 0x67 - IFT_VOICEFXO = 0x65 - IFT_VOICEFXS = 0x66 - IFT_VOICEOVERATM = 0x98 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 - IFT_X25HUNTGROUP = 0x7a - IFT_X25MLP = 0x79 - IFT_X25PLE = 0x28 - IFT_XETHER = 0x1a - IPPROTO_MAXID = 0x34 - IPV6_FAITH = 0x1d - IPV6_MIN_MEMBERSHIPS = 0x1f - IP_FAITH = 0x16 - IP_MAX_SOURCE_FILTER = 0x400 - IP_MIN_MEMBERSHIPS = 0x1f - MAP_NORESERVE = 0x40 - MAP_RENAME = 0x20 - NET_RT_MAXID = 0x6 - RTF_PRCLONING = 0x10000 - RTM_OLDADD = 0x9 - RTM_OLDDEL = 0xa - RT_CACHING_CONTEXT = 0x1 - RT_NORTREF = 0x2 - SIOCADDRT = 0x8030720a - SIOCALIFADDR = 0x8118691b - SIOCDELRT = 0x8030720b - SIOCDLIFADDR = 0x8118691d - SIOCGLIFADDR = 0xc118691c - SIOCGLIFPHYADDR = 0xc118694b - SIOCSLIFPHYADDR = 0x8118694a -) diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go deleted file mode 100644 index 070f44b65..000000000 --- a/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep -// them here for backwards compatibility. - -package unix - -const ( - DLT_HHDLC = 0x79 - IFF_SMART = 0x20 - IFT_1822 = 0x2 - IFT_A12MPPSWITCH = 0x82 - IFT_AAL2 = 0xbb - IFT_AAL5 = 0x31 - IFT_ADSL = 0x5e - IFT_AFLANE8023 = 0x3b - IFT_AFLANE8025 = 0x3c - IFT_ARAP = 0x58 - IFT_ARCNET = 0x23 - IFT_ARCNETPLUS = 0x24 - IFT_ASYNC = 0x54 - IFT_ATM = 0x25 - IFT_ATMDXI = 0x69 - IFT_ATMFUNI = 0x6a - IFT_ATMIMA = 0x6b - IFT_ATMLOGICAL = 0x50 - IFT_ATMRADIO = 0xbd - IFT_ATMSUBINTERFACE = 0x86 - IFT_ATMVCIENDPT = 0xc2 - IFT_ATMVIRTUAL = 0x95 - IFT_BGPPOLICYACCOUNTING = 0xa2 - IFT_BSC = 0x53 - IFT_CCTEMUL = 0x3d - IFT_CEPT = 0x13 - IFT_CES = 0x85 - IFT_CHANNEL = 0x46 - IFT_CNR = 0x55 - IFT_COFFEE = 0x84 - IFT_COMPOSITELINK = 0x9b - IFT_DCN = 0x8d - IFT_DIGITALPOWERLINE = 0x8a - IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba - IFT_DLSW = 0x4a - IFT_DOCSCABLEDOWNSTREAM = 0x80 - IFT_DOCSCABLEMACLAYER = 0x7f - IFT_DOCSCABLEUPSTREAM = 0x81 - IFT_DS0 = 0x51 - IFT_DS0BUNDLE = 0x52 - IFT_DS1FDL = 0xaa - IFT_DS3 = 0x1e - IFT_DTM = 0x8c - IFT_DVBASILN = 0xac - IFT_DVBASIOUT = 0xad - IFT_DVBRCCDOWNSTREAM = 0x93 - IFT_DVBRCCMACLAYER = 0x92 - IFT_DVBRCCUPSTREAM = 0x94 - IFT_ENC = 0xf4 - IFT_EON = 0x19 - IFT_EPLRS = 0x57 - IFT_ESCON = 0x49 - IFT_ETHER = 0x6 - IFT_FAITH = 0xf2 - IFT_FAST = 0x7d - IFT_FASTETHER = 0x3e - IFT_FASTETHERFX = 0x45 - IFT_FDDI = 0xf - IFT_FIBRECHANNEL = 0x38 - IFT_FRAMERELAYINTERCONNECT = 0x3a - IFT_FRAMERELAYMPI = 0x5c - IFT_FRDLCIENDPT = 0xc1 - IFT_FRELAY = 0x20 - IFT_FRELAYDCE = 0x2c - IFT_FRF16MFRBUNDLE = 0xa3 - IFT_FRFORWARD = 0x9e - IFT_G703AT2MB = 0x43 - IFT_G703AT64K = 0x42 - IFT_GIF = 0xf0 - IFT_GIGABITETHERNET = 0x75 - IFT_GR303IDT = 0xb2 - IFT_GR303RDT = 0xb1 - IFT_H323GATEKEEPER = 0xa4 - IFT_H323PROXY = 0xa5 - IFT_HDH1822 = 0x3 - IFT_HDLC = 0x76 - IFT_HDSL2 = 0xa8 - IFT_HIPERLAN2 = 0xb7 - IFT_HIPPI = 0x2f - IFT_HIPPIINTERFACE = 0x39 - IFT_HOSTPAD = 0x5a - IFT_HSSI = 0x2e - IFT_HY = 0xe - IFT_IBM370PARCHAN = 0x48 - IFT_IDSL = 0x9a - IFT_IEEE80211 = 0x47 - IFT_IEEE80212 = 0x37 - IFT_IEEE8023ADLAG = 0xa1 - IFT_IFGSN = 0x91 - IFT_IMT = 0xbe - IFT_INTERLEAVE = 0x7c - IFT_IP = 0x7e - IFT_IPFORWARD = 0x8e - IFT_IPOVERATM = 0x72 - IFT_IPOVERCDLC = 0x6d - IFT_IPOVERCLAW = 0x6e - IFT_IPSWITCH = 0x4e - IFT_IPXIP = 0xf9 - IFT_ISDN = 0x3f - IFT_ISDNBASIC = 0x14 - IFT_ISDNPRIMARY = 0x15 - IFT_ISDNS = 0x4b - IFT_ISDNU = 0x4c - IFT_ISO88022LLC = 0x29 - IFT_ISO88023 = 0x7 - IFT_ISO88024 = 0x8 - IFT_ISO88025 = 0x9 - IFT_ISO88025CRFPINT = 0x62 - IFT_ISO88025DTR = 0x56 - IFT_ISO88025FIBER = 0x73 - IFT_ISO88026 = 0xa - IFT_ISUP = 0xb3 - IFT_L3IPXVLAN = 0x89 - IFT_LAPB = 0x10 - IFT_LAPD = 0x4d - IFT_LAPF = 0x77 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 - IFT_MODEM = 0x30 - IFT_MPC = 0x71 - IFT_MPLS = 0xa6 - IFT_MPLSTUNNEL = 0x96 - IFT_MSDSL = 0x8f - IFT_MVL = 0xbf - IFT_MYRINET = 0x63 - IFT_NFAS = 0xaf - IFT_NSIP = 0x1b - IFT_OPTICALCHANNEL = 0xc3 - IFT_OPTICALTRANSPORT = 0xc4 - IFT_OTHER = 0x1 - IFT_P10 = 0xc - IFT_P80 = 0xd - IFT_PARA = 0x22 - IFT_PFLOG = 0xf6 - IFT_PFSYNC = 0xf7 - IFT_PLC = 0xae - IFT_POS = 0xab - IFT_PPPMULTILINKBUNDLE = 0x6c - IFT_PROPBWAP2MP = 0xb8 - IFT_PROPCNLS = 0x59 - IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 - IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 - IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 - IFT_PROPMUX = 0x36 - IFT_PROPWIRELESSP2P = 0x9d - IFT_PTPSERIAL = 0x16 - IFT_PVC = 0xf1 - IFT_QLLC = 0x44 - IFT_RADIOMAC = 0xbc - IFT_RADSL = 0x5f - IFT_REACHDSL = 0xc0 - IFT_RFC1483 = 0x9f - IFT_RS232 = 0x21 - IFT_RSRB = 0x4f - IFT_SDLC = 0x11 - IFT_SDSL = 0x60 - IFT_SHDSL = 0xa9 - IFT_SIP = 0x1f - IFT_SLIP = 0x1c - IFT_SMDSDXI = 0x2b - IFT_SMDSICIP = 0x34 - IFT_SONET = 0x27 - IFT_SONETOVERHEADCHANNEL = 0xb9 - IFT_SONETPATH = 0x32 - IFT_SONETVT = 0x33 - IFT_SRP = 0x97 - IFT_SS7SIGLINK = 0x9c - IFT_STACKTOSTACK = 0x6f - IFT_STARLAN = 0xb - IFT_STF = 0xd7 - IFT_T1 = 0x12 - IFT_TDLC = 0x74 - IFT_TERMPAD = 0x5b - IFT_TR008 = 0xb0 - IFT_TRANSPHDLC = 0x7b - IFT_TUNNEL = 0x83 - IFT_ULTRA = 0x1d - IFT_USB = 0xa0 - IFT_V11 = 0x40 - IFT_V35 = 0x2d - IFT_V36 = 0x41 - IFT_V37 = 0x78 - IFT_VDSL = 0x61 - IFT_VIRTUALIPADDRESS = 0x70 - IFT_VOICEEM = 0x64 - IFT_VOICEENCAP = 0x67 - IFT_VOICEFXO = 0x65 - IFT_VOICEFXS = 0x66 - IFT_VOICEOVERATM = 0x98 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 - IFT_X25HUNTGROUP = 0x7a - IFT_X25MLP = 0x79 - IFT_X25PLE = 0x28 - IFT_XETHER = 0x1a - IPPROTO_MAXID = 0x34 - IPV6_FAITH = 0x1d - IPV6_MIN_MEMBERSHIPS = 0x1f - IP_FAITH = 0x16 - IP_MAX_SOURCE_FILTER = 0x400 - IP_MIN_MEMBERSHIPS = 0x1f - MAP_NORESERVE = 0x40 - MAP_RENAME = 0x20 - NET_RT_MAXID = 0x6 - RTF_PRCLONING = 0x10000 - RTM_OLDADD = 0x9 - RTM_OLDDEL = 0xa - RT_CACHING_CONTEXT = 0x1 - RT_NORTREF = 0x2 - SIOCADDRT = 0x8040720a - SIOCALIFADDR = 0x8118691b - SIOCDELRT = 0x8040720b - SIOCDLIFADDR = 0x8118691d - SIOCGLIFADDR = 0xc118691c - SIOCGLIFPHYADDR = 0xc118694b - SIOCSLIFPHYADDR = 0x8118694a -) diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go deleted file mode 100644 index 856dca325..000000000 --- a/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package unix - -const ( - IFT_1822 = 0x2 - IFT_A12MPPSWITCH = 0x82 - IFT_AAL2 = 0xbb - IFT_AAL5 = 0x31 - IFT_ADSL = 0x5e - IFT_AFLANE8023 = 0x3b - IFT_AFLANE8025 = 0x3c - IFT_ARAP = 0x58 - IFT_ARCNET = 0x23 - IFT_ARCNETPLUS = 0x24 - IFT_ASYNC = 0x54 - IFT_ATM = 0x25 - IFT_ATMDXI = 0x69 - IFT_ATMFUNI = 0x6a - IFT_ATMIMA = 0x6b - IFT_ATMLOGICAL = 0x50 - IFT_ATMRADIO = 0xbd - IFT_ATMSUBINTERFACE = 0x86 - IFT_ATMVCIENDPT = 0xc2 - IFT_ATMVIRTUAL = 0x95 - IFT_BGPPOLICYACCOUNTING = 0xa2 - IFT_BSC = 0x53 - IFT_CCTEMUL = 0x3d - IFT_CEPT = 0x13 - IFT_CES = 0x85 - IFT_CHANNEL = 0x46 - IFT_CNR = 0x55 - IFT_COFFEE = 0x84 - IFT_COMPOSITELINK = 0x9b - IFT_DCN = 0x8d - IFT_DIGITALPOWERLINE = 0x8a - IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba - IFT_DLSW = 0x4a - IFT_DOCSCABLEDOWNSTREAM = 0x80 - IFT_DOCSCABLEMACLAYER = 0x7f - IFT_DOCSCABLEUPSTREAM = 0x81 - IFT_DS0 = 0x51 - IFT_DS0BUNDLE = 0x52 - IFT_DS1FDL = 0xaa - IFT_DS3 = 0x1e - IFT_DTM = 0x8c - IFT_DVBASILN = 0xac - IFT_DVBASIOUT = 0xad - IFT_DVBRCCDOWNSTREAM = 0x93 - IFT_DVBRCCMACLAYER = 0x92 - IFT_DVBRCCUPSTREAM = 0x94 - IFT_ENC = 0xf4 - IFT_EON = 0x19 - IFT_EPLRS = 0x57 - IFT_ESCON = 0x49 - IFT_ETHER = 0x6 - IFT_FAST = 0x7d - IFT_FASTETHER = 0x3e - IFT_FASTETHERFX = 0x45 - IFT_FDDI = 0xf - IFT_FIBRECHANNEL = 0x38 - IFT_FRAMERELAYINTERCONNECT = 0x3a - IFT_FRAMERELAYMPI = 0x5c - IFT_FRDLCIENDPT = 0xc1 - IFT_FRELAY = 0x20 - IFT_FRELAYDCE = 0x2c - IFT_FRF16MFRBUNDLE = 0xa3 - IFT_FRFORWARD = 0x9e - IFT_G703AT2MB = 0x43 - IFT_G703AT64K = 0x42 - IFT_GIF = 0xf0 - IFT_GIGABITETHERNET = 0x75 - IFT_GR303IDT = 0xb2 - IFT_GR303RDT = 0xb1 - IFT_H323GATEKEEPER = 0xa4 - IFT_H323PROXY = 0xa5 - IFT_HDH1822 = 0x3 - IFT_HDLC = 0x76 - IFT_HDSL2 = 0xa8 - IFT_HIPERLAN2 = 0xb7 - IFT_HIPPI = 0x2f - IFT_HIPPIINTERFACE = 0x39 - IFT_HOSTPAD = 0x5a - IFT_HSSI = 0x2e - IFT_HY = 0xe - IFT_IBM370PARCHAN = 0x48 - IFT_IDSL = 0x9a - IFT_IEEE80211 = 0x47 - IFT_IEEE80212 = 0x37 - IFT_IEEE8023ADLAG = 0xa1 - IFT_IFGSN = 0x91 - IFT_IMT = 0xbe - IFT_INTERLEAVE = 0x7c - IFT_IP = 0x7e - IFT_IPFORWARD = 0x8e - IFT_IPOVERATM = 0x72 - IFT_IPOVERCDLC = 0x6d - IFT_IPOVERCLAW = 0x6e - IFT_IPSWITCH = 0x4e - IFT_ISDN = 0x3f - IFT_ISDNBASIC = 0x14 - IFT_ISDNPRIMARY = 0x15 - IFT_ISDNS = 0x4b - IFT_ISDNU = 0x4c - IFT_ISO88022LLC = 0x29 - IFT_ISO88023 = 0x7 - IFT_ISO88024 = 0x8 - IFT_ISO88025 = 0x9 - IFT_ISO88025CRFPINT = 0x62 - IFT_ISO88025DTR = 0x56 - IFT_ISO88025FIBER = 0x73 - IFT_ISO88026 = 0xa - IFT_ISUP = 0xb3 - IFT_L3IPXVLAN = 0x89 - IFT_LAPB = 0x10 - IFT_LAPD = 0x4d - IFT_LAPF = 0x77 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 - IFT_MODEM = 0x30 - IFT_MPC = 0x71 - IFT_MPLS = 0xa6 - IFT_MPLSTUNNEL = 0x96 - IFT_MSDSL = 0x8f - IFT_MVL = 0xbf - IFT_MYRINET = 0x63 - IFT_NFAS = 0xaf - IFT_NSIP = 0x1b - IFT_OPTICALCHANNEL = 0xc3 - IFT_OPTICALTRANSPORT = 0xc4 - IFT_OTHER = 0x1 - IFT_P10 = 0xc - IFT_P80 = 0xd - IFT_PARA = 0x22 - IFT_PFLOG = 0xf6 - IFT_PFSYNC = 0xf7 - IFT_PLC = 0xae - IFT_POS = 0xab - IFT_PPPMULTILINKBUNDLE = 0x6c - IFT_PROPBWAP2MP = 0xb8 - IFT_PROPCNLS = 0x59 - IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 - IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 - IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 - IFT_PROPMUX = 0x36 - IFT_PROPWIRELESSP2P = 0x9d - IFT_PTPSERIAL = 0x16 - IFT_PVC = 0xf1 - IFT_QLLC = 0x44 - IFT_RADIOMAC = 0xbc - IFT_RADSL = 0x5f - IFT_REACHDSL = 0xc0 - IFT_RFC1483 = 0x9f - IFT_RS232 = 0x21 - IFT_RSRB = 0x4f - IFT_SDLC = 0x11 - IFT_SDSL = 0x60 - IFT_SHDSL = 0xa9 - IFT_SIP = 0x1f - IFT_SLIP = 0x1c - IFT_SMDSDXI = 0x2b - IFT_SMDSICIP = 0x34 - IFT_SONET = 0x27 - IFT_SONETOVERHEADCHANNEL = 0xb9 - IFT_SONETPATH = 0x32 - IFT_SONETVT = 0x33 - IFT_SRP = 0x97 - IFT_SS7SIGLINK = 0x9c - IFT_STACKTOSTACK = 0x6f - IFT_STARLAN = 0xb - IFT_STF = 0xd7 - IFT_T1 = 0x12 - IFT_TDLC = 0x74 - IFT_TERMPAD = 0x5b - IFT_TR008 = 0xb0 - IFT_TRANSPHDLC = 0x7b - IFT_TUNNEL = 0x83 - IFT_ULTRA = 0x1d - IFT_USB = 0xa0 - IFT_V11 = 0x40 - IFT_V35 = 0x2d - IFT_V36 = 0x41 - IFT_V37 = 0x78 - IFT_VDSL = 0x61 - IFT_VIRTUALIPADDRESS = 0x70 - IFT_VOICEEM = 0x64 - IFT_VOICEENCAP = 0x67 - IFT_VOICEFXO = 0x65 - IFT_VOICEFXS = 0x66 - IFT_VOICEOVERATM = 0x98 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 - IFT_X25HUNTGROUP = 0x7a - IFT_X25MLP = 0x79 - IFT_X25PLE = 0x28 - IFT_XETHER = 0x1a - - // missing constants on FreeBSD-11.1-RELEASE, copied from old values in ztypes_freebsd_arm.go - IFF_SMART = 0x20 - IFT_FAITH = 0xf2 - IFT_IPXIP = 0xf9 - IPPROTO_MAXID = 0x34 - IPV6_FAITH = 0x1d - IP_FAITH = 0x16 - MAP_NORESERVE = 0x40 - MAP_RENAME = 0x20 - NET_RT_MAXID = 0x6 - RTF_PRCLONING = 0x10000 - RTM_OLDADD = 0x9 - RTM_OLDDEL = 0xa - SIOCADDRT = 0x8030720a - SIOCALIFADDR = 0x8118691b - SIOCDELRT = 0x8030720b - SIOCDLIFADDR = 0x8118691d - SIOCGLIFADDR = 0xc118691c - SIOCGLIFPHYADDR = 0xc118694b - SIOCSLIFPHYADDR = 0x8118694a -) diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go deleted file mode 100644 index 946dcf3fc..000000000 --- a/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep -// them here for backwards compatibility. - -package unix - -const ( - DLT_HHDLC = 0x79 - IPV6_MIN_MEMBERSHIPS = 0x1f - IP_MAX_SOURCE_FILTER = 0x400 - IP_MIN_MEMBERSHIPS = 0x1f - RT_CACHING_CONTEXT = 0x1 - RT_NORTREF = 0x2 -) diff --git a/vendor/golang.org/x/sys/unix/ifreq_linux.go b/vendor/golang.org/x/sys/unix/ifreq_linux.go index 934af313c..15721a510 100644 --- a/vendor/golang.org/x/sys/unix/ifreq_linux.go +++ b/vendor/golang.org/x/sys/unix/ifreq_linux.go @@ -8,7 +8,6 @@ package unix import ( - "bytes" "unsafe" ) @@ -45,13 +44,7 @@ func NewIfreq(name string) (*Ifreq, error) { // Name returns the interface name associated with the Ifreq. func (ifr *Ifreq) Name() string { - // BytePtrToString requires a NULL terminator or the program may crash. If - // one is not present, just return the empty string. - if !bytes.Contains(ifr.raw.Ifrn[:], []byte{0x00}) { - return "" - } - - return BytePtrToString(&ifr.raw.Ifrn[0]) + return ByteSliceToString(ifr.raw.Ifrn[:]) } // According to netdevice(7), only AF_INET addresses are returned for numerous diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh index ee7362348..2cd0e9166 100644 --- a/vendor/golang.org/x/sys/unix/mkall.sh +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -73,12 +73,12 @@ aix_ppc64) darwin_amd64) mkerrors="$mkerrors -m64" mktypes="GOARCH=$GOARCH go tool cgo -godefs" - mkasm="go run mkasm_darwin.go" + mkasm="go run mkasm.go" ;; darwin_arm64) mkerrors="$mkerrors -m64" mktypes="GOARCH=$GOARCH go tool cgo -godefs" - mkasm="go run mkasm_darwin.go" + mkasm="go run mkasm.go" ;; dragonfly_amd64) mkerrors="$mkerrors -m64" @@ -89,25 +89,30 @@ dragonfly_amd64) freebsd_386) mkerrors="$mkerrors -m32" mksyscall="go run mksyscall.go -l32" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; freebsd_amd64) mkerrors="$mkerrors -m64" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; freebsd_arm) mkerrors="$mkerrors" mksyscall="go run mksyscall.go -l32 -arm" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" # Let the type of C char be signed for making the bare syscall # API consistent across platforms. mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" ;; freebsd_arm64) mkerrors="$mkerrors -m64" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +freebsd_riscv64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" ;; netbsd_386) @@ -227,5 +232,5 @@ esac if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go"; fi - if [ -n "$mkasm" ]; then echo "$mkasm $GOARCH"; fi + if [ -n "$mkasm" ]; then echo "$mkasm $GOOS $GOARCH"; fi ) | $run diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index 72f65a9af..2ab44aa65 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -128,6 +128,7 @@ includes_FreeBSD=' #include #include #include +#include #include #include #include @@ -202,6 +203,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -215,6 +217,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -294,6 +297,10 @@ struct ltchars { #define SOL_NETLINK 270 #endif +#ifndef SOL_SMC +#define SOL_SMC 286 +#endif + #ifdef SOL_BLUETOOTH // SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h // but it is already in bluetooth_linux.go @@ -528,7 +535,7 @@ ccflags="$@" $2 ~ /^(MS|MNT|MOUNT|UMOUNT)_/ || $2 ~ /^NS_GET_/ || $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || - $2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|TFD)_/ || + $2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|PIOD|TFD)_/ || $2 ~ /^KEXEC_/ || $2 ~ /^LINUX_REBOOT_CMD_/ || $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ || @@ -552,6 +559,7 @@ ccflags="$@" $2 ~ /^CLONE_[A-Z_]+/ || $2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+)$/ && $2 ~ /^(BPF|DLT)_/ || + $2 ~ /^AUDIT_/ || $2 ~ /^(CLOCK|TIMER)_/ || $2 ~ /^CAN_/ || $2 ~ /^CAP_/ || @@ -574,7 +582,6 @@ ccflags="$@" $2 ~ /^SEEK_/ || $2 ~ /^SPLICE_/ || $2 ~ /^SYNC_FILE_RANGE_/ || - $2 !~ /^AUDIT_RECORD_MAGIC/ && $2 !~ /IOC_MAGIC/ && $2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ || $2 ~ /^(VM|VMADDR)_/ || @@ -613,6 +620,7 @@ ccflags="$@" $2 ~ /^OTP/ || $2 ~ /^MEM/ || $2 ~ /^WG/ || + $2 ~ /^FIB_RULE_/ || $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)} $2 ~ /^__WCOREFLAG$/ {next} $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go index f2a114fc2..2db1b51e9 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -37,6 +37,7 @@ func Creat(path string, mode uint32) (fd int, err error) { } //sys utimes(path string, times *[2]Timeval) (err error) + func Utimes(path string, tv []Timeval) error { if len(tv) != 2 { return EINVAL @@ -45,6 +46,7 @@ func Utimes(path string, tv []Timeval) error { } //sys utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) + func UtimesNano(path string, ts []Timespec) error { if len(ts) != 2 { return EINVAL @@ -215,14 +217,63 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { return } -func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { - // Recvmsg not implemented on AIX - return -1, -1, -1, ENOSYS +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = recvmsg(fd, &msg, flags); n == -1 { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + return } -func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { - // SendmsgN not implemented on AIX - return -1, ENOSYS +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var dummy byte + var empty bool + if len(oob) > 0 { + // send at least one normal byte + empty = emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && empty { + n = 0 + } + return n, nil } func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { @@ -300,11 +351,13 @@ func direntNamlen(buf []byte) (uint64, bool) { } //sys getdirent(fd int, buf []byte) (n int, err error) + func Getdents(fd int, buf []byte) (n int, err error) { return getdirent(fd, buf) } //sys wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) + func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { var status _C_int var r Pid_t @@ -372,6 +425,7 @@ func (w WaitStatus) TrapCause() int { return -1 } //sys fcntl(fd int, cmd int, arg int) (val int, err error) //sys fsyncRange(fd int, how int, start int64, length int64) (err error) = fsync_range + func Fsync(fd int) error { return fsyncRange(fd, O_SYNC, 0, 0) } @@ -536,6 +590,7 @@ func Poll(fds []PollFd, timeout int) (n int, err error) { //sys Getsystemcfg(label int) (n uint64) //sys umount(target string) (err error) + func Unmount(target string, flags int) (err error) { if flags != 0 { // AIX doesn't have any flags for umount. diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index 9c87c5f07..eda42671f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -325,27 +325,26 @@ func GetsockoptString(fd, level, opt int) (string, error) { //sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) //sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) -func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { var msg Msghdr msg.Name = (*byte)(unsafe.Pointer(rsa)) msg.Namelen = uint32(SizeofSockaddrAny) - var iov Iovec - if len(p) > 0 { - iov.Base = (*byte)(unsafe.Pointer(&p[0])) - iov.SetLen(len(p)) - } var dummy byte if len(oob) > 0 { // receive at least one normal byte - if len(p) == 0 { - iov.Base = &dummy - iov.SetLen(1) + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] } msg.Control = (*byte)(unsafe.Pointer(&oob[0])) msg.SetControllen(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = recvmsg(fd, &msg, flags); err != nil { return } @@ -356,31 +355,32 @@ func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) -func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { var msg Msghdr msg.Name = (*byte)(unsafe.Pointer(ptr)) msg.Namelen = uint32(salen) - var iov Iovec - if len(p) > 0 { - iov.Base = (*byte)(unsafe.Pointer(&p[0])) - iov.SetLen(len(p)) - } var dummy byte + var empty bool if len(oob) > 0 { // send at least one normal byte - if len(p) == 0 { - iov.Base = &dummy - iov.SetLen(1) + empty = emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] } msg.Control = (*byte)(unsafe.Pointer(&oob[0])) msg.SetControllen(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = sendmsg(fd, &msg, flags); err != nil { return 0, err } - if len(oob) > 0 && len(p) == 0 { + if len(oob) > 0 && empty { n = 0 } return n, nil diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 09a25c653..4f87f16ea 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -393,6 +393,13 @@ func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { return x, err } +func GetsockoptTCPConnectionInfo(fd, level, opt int) (*TCPConnectionInfo, error) { + var value TCPConnectionInfo + vallen := _Socklen(SizeofTCPConnectionInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + func SysctlKinfoProc(name string, args ...int) (*KinfoProc, error) { mib, err := sysctlmib(name, args...) if err != nil { @@ -504,6 +511,7 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { //sys Mkdirat(dirfd int, path string, mode uint32) (err error) //sys Mkfifo(path string, mode uint32) (err error) //sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) //sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) //sys Pathconf(path string, name int) (val int, err error) @@ -572,7 +580,6 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { // Nfssvc // Getfh // Quotactl -// Mount // Csops // Waitid // Add_profil diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index c61e27498..61c0d0de1 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -125,11 +125,13 @@ func Pipe2(p []int, flags int) (err error) { } //sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error) + func pread(fd int, p []byte, offset int64) (n int, err error) { return extpread(fd, p, 0, offset) } //sys extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) + func pwrite(fd int, p []byte, offset int64) (n int, err error) { return extpwrite(fd, p, 0, offset) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index 6f6c510f4..de7c23e06 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -17,25 +17,12 @@ import ( "unsafe" ) -const ( - SYS_FSTAT_FREEBSD12 = 551 // { int fstat(int fd, _Out_ struct stat *sb); } - SYS_FSTATAT_FREEBSD12 = 552 // { int fstatat(int fd, _In_z_ char *path, \ - SYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \ - SYS_STATFS_FREEBSD12 = 555 // { int statfs(_In_z_ char *path, \ - SYS_FSTATFS_FREEBSD12 = 556 // { int fstatfs(int fd, \ - SYS_GETFSSTAT_FREEBSD12 = 557 // { int getfsstat( \ - SYS_MKNODAT_FREEBSD12 = 559 // { int mknodat(int fd, _In_z_ char *path, \ -) - // See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html. var ( osreldateOnce sync.Once osreldate uint32 ) -// INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h -const _ino64First = 1200031 - func supportsABI(ver uint32) bool { osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) return osreldate >= ver @@ -159,38 +146,18 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { var ( - _p0 unsafe.Pointer - bufsize uintptr - oldBuf []statfs_freebsd11_t - needsConvert bool + _p0 unsafe.Pointer + bufsize uintptr ) - if len(buf) > 0 { - if supportsABI(_ino64First) { - _p0 = unsafe.Pointer(&buf[0]) - bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) - } else { - n := len(buf) - oldBuf = make([]statfs_freebsd11_t, n) - _p0 = unsafe.Pointer(&oldBuf[0]) - bufsize = unsafe.Sizeof(statfs_freebsd11_t{}) * uintptr(n) - needsConvert = true - } + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) } - var sysno uintptr = SYS_GETFSSTAT - if supportsABI(_ino64First) { - sysno = SYS_GETFSSTAT_FREEBSD12 - } - r0, _, e1 := Syscall(sysno, uintptr(_p0), bufsize, uintptr(flags)) + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) n = int(r0) if e1 != 0 { err = e1 } - if e1 == 0 && needsConvert { - for i := range oldBuf { - buf[i].convertFrom(&oldBuf[i]) - } - } return } @@ -245,87 +212,11 @@ func Uname(uname *Utsname) error { } func Stat(path string, st *Stat_t) (err error) { - var oldStat stat_freebsd11_t - if supportsABI(_ino64First) { - return fstatat_freebsd12(AT_FDCWD, path, st, 0) - } - err = stat(path, &oldStat) - if err != nil { - return err - } - - st.convertFrom(&oldStat) - return nil + return Fstatat(AT_FDCWD, path, st, 0) } func Lstat(path string, st *Stat_t) (err error) { - var oldStat stat_freebsd11_t - if supportsABI(_ino64First) { - return fstatat_freebsd12(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW) - } - err = lstat(path, &oldStat) - if err != nil { - return err - } - - st.convertFrom(&oldStat) - return nil -} - -func Fstat(fd int, st *Stat_t) (err error) { - var oldStat stat_freebsd11_t - if supportsABI(_ino64First) { - return fstat_freebsd12(fd, st) - } - err = fstat(fd, &oldStat) - if err != nil { - return err - } - - st.convertFrom(&oldStat) - return nil -} - -func Fstatat(fd int, path string, st *Stat_t, flags int) (err error) { - var oldStat stat_freebsd11_t - if supportsABI(_ino64First) { - return fstatat_freebsd12(fd, path, st, flags) - } - err = fstatat(fd, path, &oldStat, flags) - if err != nil { - return err - } - - st.convertFrom(&oldStat) - return nil -} - -func Statfs(path string, st *Statfs_t) (err error) { - var oldStatfs statfs_freebsd11_t - if supportsABI(_ino64First) { - return statfs_freebsd12(path, st) - } - err = statfs(path, &oldStatfs) - if err != nil { - return err - } - - st.convertFrom(&oldStatfs) - return nil -} - -func Fstatfs(fd int, st *Statfs_t) (err error) { - var oldStatfs statfs_freebsd11_t - if supportsABI(_ino64First) { - return fstatfs_freebsd12(fd, st) - } - err = fstatfs(fd, &oldStatfs) - if err != nil { - return err - } - - st.convertFrom(&oldStatfs) - return nil + return Fstatat(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW) } func Getdents(fd int, buf []byte) (n int, err error) { @@ -333,162 +224,25 @@ func Getdents(fd int, buf []byte) (n int, err error) { } func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - if supportsABI(_ino64First) { - if basep == nil || unsafe.Sizeof(*basep) == 8 { - return getdirentries_freebsd12(fd, buf, (*uint64)(unsafe.Pointer(basep))) - } - // The freebsd12 syscall needs a 64-bit base. On 32-bit machines - // we can't just use the basep passed in. See #32498. - var base uint64 = uint64(*basep) - n, err = getdirentries_freebsd12(fd, buf, &base) - *basep = uintptr(base) - if base>>32 != 0 { - // We can't stuff the base back into a uintptr, so any - // future calls would be suspect. Generate an error. - // EIO is allowed by getdirentries. - err = EIO - } - return + if basep == nil || unsafe.Sizeof(*basep) == 8 { + return getdirentries(fd, buf, (*uint64)(unsafe.Pointer(basep))) } - - // The old syscall entries are smaller than the new. Use 1/4 of the original - // buffer size rounded up to DIRBLKSIZ (see /usr/src/lib/libc/sys/getdirentries.c). - oldBufLen := roundup(len(buf)/4, _dirblksiz) - oldBuf := make([]byte, oldBufLen) - n, err = getdirentries(fd, oldBuf, basep) - if err == nil && n > 0 { - n = convertFromDirents11(buf, oldBuf[:n]) + // The syscall needs a 64-bit base. On 32-bit machines + // we can't just use the basep passed in. See #32498. + var base uint64 = uint64(*basep) + n, err = getdirentries(fd, buf, &base) + *basep = uintptr(base) + if base>>32 != 0 { + // We can't stuff the base back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO is allowed by getdirentries. + err = EIO } return } func Mknod(path string, mode uint32, dev uint64) (err error) { - var oldDev int - if supportsABI(_ino64First) { - return mknodat_freebsd12(AT_FDCWD, path, mode, dev) - } - oldDev = int(dev) - return mknod(path, mode, oldDev) -} - -func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { - var oldDev int - if supportsABI(_ino64First) { - return mknodat_freebsd12(fd, path, mode, dev) - } - oldDev = int(dev) - return mknodat(fd, path, mode, oldDev) -} - -// round x to the nearest multiple of y, larger or equal to x. -// -// from /usr/include/sys/param.h Macros for counting and rounding. -// #define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) -func roundup(x, y int) int { - return ((x + y - 1) / y) * y -} - -func (s *Stat_t) convertFrom(old *stat_freebsd11_t) { - *s = Stat_t{ - Dev: uint64(old.Dev), - Ino: uint64(old.Ino), - Nlink: uint64(old.Nlink), - Mode: old.Mode, - Uid: old.Uid, - Gid: old.Gid, - Rdev: uint64(old.Rdev), - Atim: old.Atim, - Mtim: old.Mtim, - Ctim: old.Ctim, - Btim: old.Btim, - Size: old.Size, - Blocks: old.Blocks, - Blksize: old.Blksize, - Flags: old.Flags, - Gen: uint64(old.Gen), - } -} - -func (s *Statfs_t) convertFrom(old *statfs_freebsd11_t) { - *s = Statfs_t{ - Version: _statfsVersion, - Type: old.Type, - Flags: old.Flags, - Bsize: old.Bsize, - Iosize: old.Iosize, - Blocks: old.Blocks, - Bfree: old.Bfree, - Bavail: old.Bavail, - Files: old.Files, - Ffree: old.Ffree, - Syncwrites: old.Syncwrites, - Asyncwrites: old.Asyncwrites, - Syncreads: old.Syncreads, - Asyncreads: old.Asyncreads, - // Spare - Namemax: old.Namemax, - Owner: old.Owner, - Fsid: old.Fsid, - // Charspare - // Fstypename - // Mntfromname - // Mntonname - } - - sl := old.Fstypename[:] - n := clen(*(*[]byte)(unsafe.Pointer(&sl))) - copy(s.Fstypename[:], old.Fstypename[:n]) - - sl = old.Mntfromname[:] - n = clen(*(*[]byte)(unsafe.Pointer(&sl))) - copy(s.Mntfromname[:], old.Mntfromname[:n]) - - sl = old.Mntonname[:] - n = clen(*(*[]byte)(unsafe.Pointer(&sl))) - copy(s.Mntonname[:], old.Mntonname[:n]) -} - -func convertFromDirents11(buf []byte, old []byte) int { - const ( - fixedSize = int(unsafe.Offsetof(Dirent{}.Name)) - oldFixedSize = int(unsafe.Offsetof(dirent_freebsd11{}.Name)) - ) - - dstPos := 0 - srcPos := 0 - for dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) { - var dstDirent Dirent - var srcDirent dirent_freebsd11 - - // If multiple direntries are written, sometimes when we reach the final one, - // we may have cap of old less than size of dirent_freebsd11. - copy((*[unsafe.Sizeof(srcDirent)]byte)(unsafe.Pointer(&srcDirent))[:], old[srcPos:]) - - reclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8) - if dstPos+reclen > len(buf) { - break - } - - dstDirent.Fileno = uint64(srcDirent.Fileno) - dstDirent.Off = 0 - dstDirent.Reclen = uint16(reclen) - dstDirent.Type = srcDirent.Type - dstDirent.Pad0 = 0 - dstDirent.Namlen = uint16(srcDirent.Namlen) - dstDirent.Pad1 = 0 - - copy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen]) - copy(buf[dstPos:], (*[unsafe.Sizeof(dstDirent)]byte)(unsafe.Pointer(&dstDirent))[:]) - padding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen] - for i := range padding { - padding[i] = 0 - } - - dstPos += int(dstDirent.Reclen) - srcPos += int(srcDirent.Reclen) - } - - return dstPos + return Mknodat(AT_FDCWD, path, mode, dev) } func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { @@ -501,31 +255,31 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys ptrace(request int, pid int, addr uintptr, data int) (err error) func PtraceAttach(pid int) (err error) { - return ptrace(PTRACE_ATTACH, pid, 0, 0) + return ptrace(PT_ATTACH, pid, 0, 0) } func PtraceCont(pid int, signal int) (err error) { - return ptrace(PTRACE_CONT, pid, 1, signal) + return ptrace(PT_CONTINUE, pid, 1, signal) } func PtraceDetach(pid int) (err error) { - return ptrace(PTRACE_DETACH, pid, 1, 0) + return ptrace(PT_DETACH, pid, 1, 0) } func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) { - return ptrace(PTRACE_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0) + return ptrace(PT_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0) } func PtraceGetRegs(pid int, regsout *Reg) (err error) { - return ptrace(PTRACE_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0) + return ptrace(PT_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0) } func PtraceLwpEvents(pid int, enable int) (err error) { - return ptrace(PTRACE_LWPEVENTS, pid, 0, enable) + return ptrace(PT_LWP_EVENTS, pid, 0, enable) } func PtraceLwpInfo(pid int, info uintptr) (err error) { - return ptrace(PTRACE_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{}))) + return ptrace(PT_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{}))) } func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { @@ -545,11 +299,11 @@ func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { } func PtraceSetRegs(pid int, regs *Reg) (err error) { - return ptrace(PTRACE_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0) + return ptrace(PT_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0) } func PtraceSingleStep(pid int) (err error) { - return ptrace(PTRACE_SINGLESTEP, pid, 1, 0) + return ptrace(PT_STEP, pid, 1, 0) } /* @@ -591,16 +345,12 @@ func PtraceSingleStep(pid int) (err error) { //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) //sys Flock(fd int, how int) (err error) //sys Fpathconf(fd int, name int) (val int, err error) -//sys fstat(fd int, stat *stat_freebsd11_t) (err error) -//sys fstat_freebsd12(fd int, stat *Stat_t) (err error) -//sys fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) -//sys fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) -//sys fstatfs(fd int, stat *statfs_freebsd11_t) (err error) -//sys fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) //sys Fsync(fd int) (err error) //sys Ftruncate(fd int, length int64) (err error) -//sys getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) -//sys getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) +//sys getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) //sys Getdtablesize() (size int) //sysnb Getegid() (egid int) //sysnb Geteuid() (uid int) @@ -622,13 +372,10 @@ func PtraceSingleStep(pid int) (err error) { //sys Link(path string, link string) (err error) //sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) //sys Listen(s int, backlog int) (err error) -//sys lstat(path string, stat *stat_freebsd11_t) (err error) //sys Mkdir(path string, mode uint32) (err error) //sys Mkdirat(dirfd int, path string, mode uint32) (err error) //sys Mkfifo(path string, mode uint32) (err error) -//sys mknod(path string, mode uint32, dev int) (err error) -//sys mknodat(fd int, path string, mode uint32, dev int) (err error) -//sys mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) +//sys Mknodat(fd int, path string, mode uint32, dev uint64) (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) //sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) @@ -658,9 +405,7 @@ func PtraceSingleStep(pid int) (err error) { //sysnb Setsid() (pid int, err error) //sysnb Settimeofday(tp *Timeval) (err error) //sysnb Setuid(uid int) (err error) -//sys stat(path string, stat *stat_freebsd11_t) (err error) -//sys statfs(path string, stat *statfs_freebsd11_t) (err error) -//sys statfs_freebsd12(path string, stat *Statfs_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) //sys Symlink(path string, link string) (err error) //sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) //sys Sync() (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go index 342fc32b1..c3c4c698e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -57,11 +57,11 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) func PtraceGetFsBase(pid int, fsbase *int64) (err error) { - return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) + return ptrace(PT_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) } func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)} - err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go index a32d5aa4a..82be61a2f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -57,11 +57,11 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) func PtraceGetFsBase(pid int, fsbase *int64) (err error) { - return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) + return ptrace(PT_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) } func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)} - err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go index 1e36d39ab..cd58f1026 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -58,6 +58,6 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)} - err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go index a09a1537b..d6f538f9e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -58,6 +58,6 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)} - err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go new file mode 100644 index 000000000..8ea6e9610 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go @@ -0,0 +1,63 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 && freebsd +// +build riscv64,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { + ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)} + err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + return int(ioDesc.Len), err +} diff --git a/vendor/golang.org/x/sys/unix/syscall_illumos.go b/vendor/golang.org/x/sys/unix/syscall_illumos.go index 8d5f294c4..e48244a9c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_illumos.go +++ b/vendor/golang.org/x/sys/unix/syscall_illumos.go @@ -20,10 +20,9 @@ func bytes2iovec(bs [][]byte) []Iovec { for i, b := range bs { iovecs[i].SetLen(len(b)) if len(b) > 0 { - // somehow Iovec.Base on illumos is (*int8), not (*byte) - iovecs[i].Base = (*int8)(unsafe.Pointer(&b[0])) + iovecs[i].Base = &b[0] } else { - iovecs[i].Base = (*int8)(unsafe.Pointer(&_zero)) + iovecs[i].Base = (*byte)(unsafe.Pointer(&_zero)) } } return iovecs diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index bda98498b..ecb0f27fb 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -512,24 +512,24 @@ func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { // // Server example: // -// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) -// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ -// Channel: 1, -// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 -// }) -// _ = Listen(fd, 1) -// nfd, sa, _ := Accept(fd) -// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) -// Read(nfd, buf) +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 +// }) +// _ = Listen(fd, 1) +// nfd, sa, _ := Accept(fd) +// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) +// Read(nfd, buf) // // Client example: // -// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) -// _ = Connect(fd, &SockaddrRFCOMM{ -// Channel: 1, -// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 -// }) -// Write(fd, []byte(`hello`)) +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = Connect(fd, &SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 +// }) +// Write(fd, []byte(`hello`)) type SockaddrRFCOMM struct { // Addr represents a bluetooth address, byte ordering is little-endian. Addr [6]uint8 @@ -556,12 +556,12 @@ func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) { // The SockaddrCAN struct must be bound to the socket file descriptor // using Bind before the CAN socket can be used. // -// // Read one raw CAN frame -// fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) -// addr := &SockaddrCAN{Ifindex: index} -// Bind(fd, addr) -// frame := make([]byte, 16) -// Read(fd, frame) +// // Read one raw CAN frame +// fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) +// addr := &SockaddrCAN{Ifindex: index} +// Bind(fd, addr) +// frame := make([]byte, 16) +// Read(fd, frame) // // The full SocketCAN documentation can be found in the linux kernel // archives at: https://www.kernel.org/doc/Documentation/networking/can.txt @@ -632,13 +632,13 @@ func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) { // Here is an example of using an AF_ALG socket with SHA1 hashing. // The initial socket setup process is as follows: // -// // Open a socket to perform SHA1 hashing. -// fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) -// addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} -// unix.Bind(fd, addr) -// // Note: unix.Accept does not work at this time; must invoke accept() -// // manually using unix.Syscall. -// hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) +// // Open a socket to perform SHA1 hashing. +// fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) +// addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} +// unix.Bind(fd, addr) +// // Note: unix.Accept does not work at this time; must invoke accept() +// // manually using unix.Syscall. +// hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) // // Once a file descriptor has been returned from Accept, it may be used to // perform SHA1 hashing. The descriptor is not safe for concurrent use, but @@ -647,39 +647,39 @@ func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) { // When hashing a small byte slice or string, a single Write and Read may // be used: // -// // Assume hashfd is already configured using the setup process. -// hash := os.NewFile(hashfd, "sha1") -// // Hash an input string and read the results. Each Write discards -// // previous hash state. Read always reads the current state. -// b := make([]byte, 20) -// for i := 0; i < 2; i++ { -// io.WriteString(hash, "Hello, world.") -// hash.Read(b) -// fmt.Println(hex.EncodeToString(b)) -// } -// // Output: -// // 2ae01472317d1935a84797ec1983ae243fc6aa28 -// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// // Assume hashfd is already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash an input string and read the results. Each Write discards +// // previous hash state. Read always reads the current state. +// b := make([]byte, 20) +// for i := 0; i < 2; i++ { +// io.WriteString(hash, "Hello, world.") +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// } +// // Output: +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 // // For hashing larger byte slices, or byte streams such as those read from // a file or socket, use Sendto with MSG_MORE to instruct the kernel to update // the hash digest instead of creating a new one for a given chunk and finalizing it. // -// // Assume hashfd and addr are already configured using the setup process. -// hash := os.NewFile(hashfd, "sha1") -// // Hash the contents of a file. -// f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") -// b := make([]byte, 4096) -// for { -// n, err := f.Read(b) -// if err == io.EOF { -// break -// } -// unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) -// } -// hash.Read(b) -// fmt.Println(hex.EncodeToString(b)) -// // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 +// // Assume hashfd and addr are already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash the contents of a file. +// f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") +// b := make([]byte, 4096) +// for { +// n, err := f.Read(b) +// if err == io.EOF { +// break +// } +// unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) +// } +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 // // For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html. type SockaddrALG struct { @@ -1499,18 +1499,13 @@ func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error //sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL //sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL -func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { var msg Msghdr msg.Name = (*byte)(unsafe.Pointer(rsa)) msg.Namelen = uint32(SizeofSockaddrAny) - var iov Iovec - if len(p) > 0 { - iov.Base = &p[0] - iov.SetLen(len(p)) - } var dummy byte if len(oob) > 0 { - if len(p) == 0 { + if emptyIovecs(iov) { var sockType int sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) if err != nil { @@ -1518,15 +1513,19 @@ func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn } // receive at least one normal byte if sockType != SOCK_DGRAM { - iov.Base = &dummy - iov.SetLen(1) + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] } } msg.Control = &oob[0] msg.SetControllen(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = recvmsg(fd, &msg, flags); err != nil { return } @@ -1535,18 +1534,15 @@ func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn return } -func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { var msg Msghdr msg.Name = (*byte)(ptr) msg.Namelen = uint32(salen) - var iov Iovec - if len(p) > 0 { - iov.Base = &p[0] - iov.SetLen(len(p)) - } var dummy byte + var empty bool if len(oob) > 0 { - if len(p) == 0 { + empty = emptyIovecs(iov) + if empty { var sockType int sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) if err != nil { @@ -1554,19 +1550,22 @@ func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags i } // send at least one normal byte if sockType != SOCK_DGRAM { - iov.Base = &dummy - iov.SetLen(1) + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) } } msg.Control = &oob[0] msg.SetControllen(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = sendmsg(fd, &msg, flags); err != nil { return 0, err } - if len(oob) > 0 && len(p) == 0 { + if len(oob) > 0 && empty { n = 0 } return n, nil @@ -1829,6 +1828,9 @@ func Dup2(oldfd, newfd int) error { //sys Fremovexattr(fd int, attr string) (err error) //sys Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) //sys Fsync(fd int) (err error) +//sys Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) +//sys Fsopen(fsName string, flags int) (fd int, err error) +//sys Fspick(dirfd int, pathName string, flags int) (fd int, err error) //sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64 //sysnb Getpgid(pid int) (pgid int, err error) @@ -1859,7 +1861,9 @@ func Getpgrp() (pid int) { //sys MemfdCreate(name string, flags int) (fd int, err error) //sys Mkdirat(dirfd int, path string, mode uint32) (err error) //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys OpenTree(dfd int, fileName string, flags uint) (r int, err error) //sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) //sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT //sysnb Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 @@ -2184,7 +2188,7 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { gid = Getgid() } - if uint32(gid) == st.Gid || isGroupMember(gid) { + if uint32(gid) == st.Gid || isGroupMember(int(st.Gid)) { fmode = (st.Mode >> 3) & 7 } else { fmode = st.Mode & 7 diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index b945ab254..f5e9d6bef 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -28,6 +28,7 @@ func Lstat(path string, stat *Stat_t) (err error) { return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) } +//sys MemfdSecret(flags int) (fd int, err error) //sys Pause() (err error) //sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 //sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index 81db4833a..d83e2c657 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -22,6 +22,7 @@ import "unsafe" //sysnb getrlimit(resource int, rlim *Rlimit) (err error) //sysnb Getuid() (uid int) //sys Listen(s int, n int) (err error) +//sys MemfdSecret(flags int) (fd int, err error) //sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 //sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go new file mode 100644 index 000000000..0b69c3eff --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go @@ -0,0 +1,226 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build loong64 && linux +// +build loong64,linux + +package unix + +import "unsafe" + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func timespecFromStatxTimestamp(x StatxTimestamp) Timespec { + return Timespec{ + Sec: x.Sec, + Nsec: int64(x.Nsec), + } +} + +func Fstatat(fd int, path string, stat *Stat_t, flags int) error { + var r Statx_t + // Do it the glibc way, add AT_NO_AUTOMOUNT. + if err := Statx(fd, path, AT_NO_AUTOMOUNT|flags, STATX_BASIC_STATS, &r); err != nil { + return err + } + + stat.Dev = Mkdev(r.Dev_major, r.Dev_minor) + stat.Ino = r.Ino + stat.Mode = uint32(r.Mode) + stat.Nlink = r.Nlink + stat.Uid = r.Uid + stat.Gid = r.Gid + stat.Rdev = Mkdev(r.Rdev_major, r.Rdev_minor) + // hope we don't get to process files so large to overflow these size + // fields... + stat.Size = int64(r.Size) + stat.Blksize = int32(r.Blksize) + stat.Blocks = int64(r.Blocks) + stat.Atim = timespecFromStatxTimestamp(r.Atime) + stat.Mtim = timespecFromStatxTimestamp(r.Mtime) + stat.Ctim = timespecFromStatxTimestamp(r.Ctime) + + return nil +} + +func Fstat(fd int, stat *Stat_t) (err error) { + return Fstatat(fd, "", stat, AT_EMPTY_PATH) +} + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + return +} + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, rlim, nil) + return +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func (r *PtraceRegs) PC() uint64 { return r.Era } + +func (r *PtraceRegs) SetPC(era uint64) { r.Era = era } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index 8ff7adba0..925a748a3 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -22,6 +22,7 @@ import "unsafe" //sysnb Getrlimit(resource int, rlim *Rlimit) (err error) //sysnb Getuid() (uid int) //sys Listen(s int, n int) (err error) +//sys MemfdSecret(flags int) (fd int, err error) //sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 //sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index 15d637d63..78daceb33 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -81,6 +81,7 @@ func Pipe(p []int) (err error) { } //sysnb pipe2(p *[2]_C_int, flags int) (err error) + func Pipe2(p []int, flags int) error { if len(p) != 2 { return EINVAL @@ -95,6 +96,7 @@ func Pipe2(p []int, flags int) error { } //sys Getdents(fd int, buf []byte) (n int, err error) + func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { n, err = Getdents(fd, buf) if err != nil || basep == nil { diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go index 30f285343..1378489f8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go @@ -26,6 +26,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index 5c2003cec..b5ec457cd 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -451,26 +451,25 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { //sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg -func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { var msg Msghdr msg.Name = (*byte)(unsafe.Pointer(rsa)) msg.Namelen = uint32(SizeofSockaddrAny) - var iov Iovec - if len(p) > 0 { - iov.Base = (*int8)(unsafe.Pointer(&p[0])) - iov.SetLen(len(p)) - } - var dummy int8 + var dummy byte if len(oob) > 0 { // receive at least one normal byte - if len(p) == 0 { - iov.Base = &dummy - iov.SetLen(1) + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] } msg.Accrightslen = int32(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = recvmsg(fd, &msg, flags); n == -1 { return } @@ -480,30 +479,31 @@ func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg -func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { var msg Msghdr msg.Name = (*byte)(unsafe.Pointer(ptr)) msg.Namelen = uint32(salen) - var iov Iovec - if len(p) > 0 { - iov.Base = (*int8)(unsafe.Pointer(&p[0])) - iov.SetLen(len(p)) - } - var dummy int8 + var dummy byte + var empty bool if len(oob) > 0 { // send at least one normal byte - if len(p) == 0 { - iov.Base = &dummy - iov.SetLen(1) + empty = emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] } msg.Accrightslen = int32(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = sendmsg(fd, &msg, flags); err != nil { return 0, err } - if len(oob) > 0 && len(p) == 0 { + if len(oob) > 0 && empty { n = 0 } return n, nil @@ -618,6 +618,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Getpriority(which int, who int) (n int, err error) //sysnb Getrlimit(which int, lim *Rlimit) (err error) //sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) //sysnb Gettimeofday(tv *Timeval) (err error) //sysnb Getuid() (uid int) //sys Kill(pid int, signum syscall.Signal) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go index 70508afc1..1ff5060b5 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -338,8 +338,13 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { } func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var iov [1]Iovec + if len(p) > 0 { + iov[0].Base = &p[0] + iov[0].SetLen(len(p)) + } var rsa RawSockaddrAny - n, oobn, recvflags, err = recvmsgRaw(fd, p, oob, flags, &rsa) + n, oobn, recvflags, err = recvmsgRaw(fd, iov[:], oob, flags, &rsa) // source address is only specified if the socket is unconnected if rsa.Addr.Family != AF_UNSPEC { from, err = anyToSockaddr(fd, &rsa) @@ -347,12 +352,42 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from return } +// RecvmsgBuffers receives a message from a socket using the recvmsg +// system call. The flags are passed to recvmsg. Any non-control data +// read is scattered into the buffers slices. The results are: +// - n is the number of non-control data read into bufs +// - oobn is the number of control data read into oob; this may be interpreted using [ParseSocketControlMessage] +// - recvflags is flags returned by recvmsg +// - from is the address of the sender +func RecvmsgBuffers(fd int, buffers [][]byte, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + iov := make([]Iovec, len(buffers)) + for i := range buffers { + if len(buffers[i]) > 0 { + iov[i].Base = &buffers[i][0] + iov[i].SetLen(len(buffers[i])) + } else { + iov[i].Base = (*byte)(unsafe.Pointer(&_zero)) + } + } + var rsa RawSockaddrAny + n, oobn, recvflags, err = recvmsgRaw(fd, iov, oob, flags, &rsa) + if err == nil && rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { _, err = SendmsgN(fd, p, oob, to, flags) return } func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var iov [1]Iovec + if len(p) > 0 { + iov[0].Base = &p[0] + iov[0].SetLen(len(p)) + } var ptr unsafe.Pointer var salen _Socklen if to != nil { @@ -361,7 +396,32 @@ func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) return 0, err } } - return sendmsgN(fd, p, oob, ptr, salen, flags) + return sendmsgN(fd, iov[:], oob, ptr, salen, flags) +} + +// SendmsgBuffers sends a message on a socket to an address using the sendmsg +// system call. The flags are passed to sendmsg. Any non-control data written +// is gathered from buffers. The function returns the number of bytes written +// to the socket. +func SendmsgBuffers(fd int, buffers [][]byte, oob []byte, to Sockaddr, flags int) (n int, err error) { + iov := make([]Iovec, len(buffers)) + for i := range buffers { + if len(buffers[i]) > 0 { + iov[i].Base = &buffers[i][0] + iov[i].SetLen(len(buffers[i])) + } else { + iov[i].Base = (*byte)(unsafe.Pointer(&_zero)) + } + } + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + return sendmsgN(fd, iov, oob, ptr, salen, flags) } func Send(s int, buf []byte, flags int) (err error) { @@ -484,3 +544,13 @@ func Lutimes(path string, tv []Timeval) error { } return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW) } + +// emptyIovec reports whether there are no bytes in the slice of Iovec. +func emptyIovecs(iov []Iovec) bool { + for i := range iov { + if iov[i].Len > 0 { + return false + } + } + return true +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index 440900112..f8c2c5138 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -151,6 +151,7 @@ const ( BIOCSETF = 0x80084267 BIOCSETFNR = 0x80084282 BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 BIOCSETWF = 0x8008427b BIOCSETZBUF = 0x800c4281 BIOCSHDRCMPLT = 0x80044275 @@ -447,7 +448,7 @@ const ( DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 DLT_INFINIBAND = 0xf7 DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 + DLT_IPMB_KONTRON = 0xc7 DLT_IPMB_LINUX = 0xd1 DLT_IPMI_HPM_2 = 0x104 DLT_IPNET = 0xe2 @@ -487,10 +488,11 @@ const ( DLT_LINUX_LAPD = 0xb1 DLT_LINUX_PPP_WITHDIRECTION = 0xa6 DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 DLT_LOOP = 0x6c DLT_LORATAP = 0x10e DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0x113 + DLT_MATCHING_MAX = 0x114 DLT_MATCHING_MIN = 0x68 DLT_MFR = 0xb6 DLT_MOST = 0xd3 @@ -734,6 +736,7 @@ const ( IPPROTO_CMTP = 0x26 IPPROTO_CPHB = 0x49 IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 IPPROTO_DDP = 0x25 IPPROTO_DGP = 0x56 IPPROTO_DIVERT = 0x102 @@ -814,7 +817,6 @@ const ( IPPROTO_SCTP = 0x84 IPPROTO_SDRP = 0x2a IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 IPPROTO_SHIM6 = 0x8c IPPROTO_SKIP = 0x39 IPPROTO_SPACER = 0x7fff @@ -911,6 +913,7 @@ const ( IPV6_V6ONLY = 0x1b IPV6_VERSION = 0x60 IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b IP_ADD_MEMBERSHIP = 0xc IP_ADD_SOURCE_MEMBERSHIP = 0x46 IP_BINDANY = 0x18 @@ -989,8 +992,12 @@ const ( IP_TOS = 0x3 IP_TTL = 0x4 IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b ISIG = 0x80 ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 @@ -1000,7 +1007,6 @@ const ( KERN_VERSION = 0x4 LOCAL_CONNWAIT = 0x4 LOCAL_CREDS = 0x2 - LOCAL_CREDS_PERSISTENT = 0x3 LOCAL_PEERCRED = 0x1 LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 @@ -1179,6 +1185,8 @@ const ( O_NONBLOCK = 0x4 O_RDONLY = 0x0 O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 O_SHLOCK = 0x10 O_SYNC = 0x80 O_TRUNC = 0x400 @@ -1189,6 +1197,10 @@ const ( PARMRK = 0x8 PARODD = 0x2000 PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 @@ -1196,6 +1208,60 @@ const ( PROT_NONE = 0x0 PROT_READ = 0x1 PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETFSBASE = 0x47 + PT_GETGSBASE = 0x49 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETXMMREGS = 0x40 + PT_GETXSTATE = 0x45 + PT_GETXSTATE_INFO = 0x44 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETFSBASE = 0x48 + PT_SETGSBASE = 0x4a + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETXMMREGS = 0x41 + PT_SETXSTATE = 0x46 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc RLIMIT_AS = 0xa RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1320,10 +1386,12 @@ const ( SIOCGHWADDR = 0xc020693e SIOCGI2C = 0xc020693d SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d SIOCGIFBRDADDR = 0xc0206923 SIOCGIFCAP = 0xc020691f SIOCGIFCONF = 0xc0086924 SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a SIOCGIFDSTADDR = 0xc0206922 SIOCGIFFIB = 0xc020695c SIOCGIFFLAGS = 0xc0206911 @@ -1414,6 +1482,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_REUSEPORT_LB = 0x10000 @@ -1472,22 +1541,40 @@ const ( TCOFLUSH = 0x2 TCOOFF = 0x1 TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b TCP_BBR_DRAIN_INC_EXTRA = 0x43c TCP_BBR_DRAIN_PG = 0x42e TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 TCP_BBR_IWINTSO = 0x42b TCP_BBR_LOWGAIN_FD = 0x436 TCP_BBR_LOWGAIN_HALF = 0x435 TCP_BBR_LOWGAIN_THRESH = 0x434 TCP_BBR_MAX_RTO = 0x439 TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 TCP_BBR_ONE_RETRAN = 0x431 TCP_BBR_PACE_CROSS = 0x442 TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 TCP_BBR_PACE_PER_SEC = 0x43e TCP_BBR_PACE_SEG_MAX = 0x440 TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 TCP_BBR_PROBE_RTT_GAIN = 0x44d TCP_BBR_PROBE_RTT_INT = 0x430 TCP_BBR_PROBE_RTT_LEN = 0x44e @@ -1496,12 +1583,18 @@ const ( TCP_BBR_REC_OVER_HPTS = 0x43a TCP_BBR_RETRAN_WTSO = 0x44b TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d TCP_BBR_STARTUP_LOSS_EXIT = 0x432 TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 TCP_BBR_UNLIMITED = 0x43b TCP_BBR_USEDEL_RATE = 0x437 TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 TCP_CA_NAME_MAX = 0x10 TCP_CCALGOOPT = 0x41 TCP_CONGESTION = 0x40 @@ -1541,6 +1634,7 @@ const ( TCP_PCAP_OUT = 0x800 TCP_RACK_EARLY_RECOV = 0x423 TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 TCP_RACK_IDLE_REDUCE_HIGH = 0x444 TCP_RACK_MIN_PACE = 0x445 TCP_RACK_MIN_PACE_SEG = 0x446 @@ -1554,7 +1648,6 @@ const ( TCP_RACK_PRR_SENDALOT = 0x421 TCP_RACK_REORD_FADE = 0x426 TCP_RACK_REORD_THRESH = 0x425 - TCP_RACK_SESS_CWV = 0x42a TCP_RACK_TLP_INC_VAR = 0x429 TCP_RACK_TLP_REDUCE = 0x41c TCP_RACK_TLP_THRESH = 0x427 @@ -1694,12 +1787,13 @@ const ( EIDRM = syscall.Errno(0x52) EILSEQ = syscall.Errno(0x56) EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) EINTR = syscall.Errno(0x4) EINVAL = syscall.Errno(0x16) EIO = syscall.Errno(0x5) EISCONN = syscall.Errno(0x38) EISDIR = syscall.Errno(0x15) - ELAST = syscall.Errno(0x60) + ELAST = syscall.Errno(0x61) ELOOP = syscall.Errno(0x3e) EMFILE = syscall.Errno(0x18) EMLINK = syscall.Errno(0x1f) @@ -1842,7 +1936,7 @@ var errorList = [...]struct { {32, "EPIPE", "broken pipe"}, {33, "EDOM", "numerical argument out of domain"}, {34, "ERANGE", "result too large"}, - {35, "EAGAIN", "resource temporarily unavailable"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, {36, "EINPROGRESS", "operation now in progress"}, {37, "EALREADY", "operation already in progress"}, {38, "ENOTSOCK", "socket operation on non-socket"}, @@ -1904,6 +1998,7 @@ var errorList = [...]struct { {94, "ECAPMODE", "not permitted in capability mode"}, {95, "ENOTRECOVERABLE", "state not recoverable"}, {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, } // Signal table diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index 64520d312..96310c3be 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -151,6 +151,7 @@ const ( BIOCSETF = 0x80104267 BIOCSETFNR = 0x80104282 BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 BIOCSETWF = 0x8010427b BIOCSETZBUF = 0x80184281 BIOCSHDRCMPLT = 0x80044275 @@ -447,7 +448,7 @@ const ( DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 DLT_INFINIBAND = 0xf7 DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 + DLT_IPMB_KONTRON = 0xc7 DLT_IPMB_LINUX = 0xd1 DLT_IPMI_HPM_2 = 0x104 DLT_IPNET = 0xe2 @@ -487,10 +488,11 @@ const ( DLT_LINUX_LAPD = 0xb1 DLT_LINUX_PPP_WITHDIRECTION = 0xa6 DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 DLT_LOOP = 0x6c DLT_LORATAP = 0x10e DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0x113 + DLT_MATCHING_MAX = 0x114 DLT_MATCHING_MIN = 0x68 DLT_MFR = 0xb6 DLT_MOST = 0xd3 @@ -734,6 +736,7 @@ const ( IPPROTO_CMTP = 0x26 IPPROTO_CPHB = 0x49 IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 IPPROTO_DDP = 0x25 IPPROTO_DGP = 0x56 IPPROTO_DIVERT = 0x102 @@ -814,7 +817,6 @@ const ( IPPROTO_SCTP = 0x84 IPPROTO_SDRP = 0x2a IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 IPPROTO_SHIM6 = 0x8c IPPROTO_SKIP = 0x39 IPPROTO_SPACER = 0x7fff @@ -911,6 +913,7 @@ const ( IPV6_V6ONLY = 0x1b IPV6_VERSION = 0x60 IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b IP_ADD_MEMBERSHIP = 0xc IP_ADD_SOURCE_MEMBERSHIP = 0x46 IP_BINDANY = 0x18 @@ -989,8 +992,12 @@ const ( IP_TOS = 0x3 IP_TTL = 0x4 IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b ISIG = 0x80 ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 @@ -1000,7 +1007,6 @@ const ( KERN_VERSION = 0x4 LOCAL_CONNWAIT = 0x4 LOCAL_CREDS = 0x2 - LOCAL_CREDS_PERSISTENT = 0x3 LOCAL_PEERCRED = 0x1 LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 @@ -1180,6 +1186,8 @@ const ( O_NONBLOCK = 0x4 O_RDONLY = 0x0 O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 O_SHLOCK = 0x10 O_SYNC = 0x80 O_TRUNC = 0x400 @@ -1190,6 +1198,10 @@ const ( PARMRK = 0x8 PARODD = 0x2000 PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 @@ -1197,6 +1209,58 @@ const ( PROT_NONE = 0x0 PROT_READ = 0x1 PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETFSBASE = 0x47 + PT_GETGSBASE = 0x49 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETXSTATE = 0x45 + PT_GETXSTATE_INFO = 0x44 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETFSBASE = 0x48 + PT_SETGSBASE = 0x4a + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETXSTATE = 0x46 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc RLIMIT_AS = 0xa RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1321,10 +1385,12 @@ const ( SIOCGHWADDR = 0xc020693e SIOCGI2C = 0xc020693d SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d SIOCGIFBRDADDR = 0xc0206923 SIOCGIFCAP = 0xc020691f SIOCGIFCONF = 0xc0106924 SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a SIOCGIFDSTADDR = 0xc0206922 SIOCGIFFIB = 0xc020695c SIOCGIFFLAGS = 0xc0206911 @@ -1415,6 +1481,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_REUSEPORT_LB = 0x10000 @@ -1473,22 +1540,40 @@ const ( TCOFLUSH = 0x2 TCOOFF = 0x1 TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b TCP_BBR_DRAIN_INC_EXTRA = 0x43c TCP_BBR_DRAIN_PG = 0x42e TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 TCP_BBR_IWINTSO = 0x42b TCP_BBR_LOWGAIN_FD = 0x436 TCP_BBR_LOWGAIN_HALF = 0x435 TCP_BBR_LOWGAIN_THRESH = 0x434 TCP_BBR_MAX_RTO = 0x439 TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 TCP_BBR_ONE_RETRAN = 0x431 TCP_BBR_PACE_CROSS = 0x442 TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 TCP_BBR_PACE_PER_SEC = 0x43e TCP_BBR_PACE_SEG_MAX = 0x440 TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 TCP_BBR_PROBE_RTT_GAIN = 0x44d TCP_BBR_PROBE_RTT_INT = 0x430 TCP_BBR_PROBE_RTT_LEN = 0x44e @@ -1497,12 +1582,18 @@ const ( TCP_BBR_REC_OVER_HPTS = 0x43a TCP_BBR_RETRAN_WTSO = 0x44b TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d TCP_BBR_STARTUP_LOSS_EXIT = 0x432 TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 TCP_BBR_UNLIMITED = 0x43b TCP_BBR_USEDEL_RATE = 0x437 TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 TCP_CA_NAME_MAX = 0x10 TCP_CCALGOOPT = 0x41 TCP_CONGESTION = 0x40 @@ -1542,6 +1633,7 @@ const ( TCP_PCAP_OUT = 0x800 TCP_RACK_EARLY_RECOV = 0x423 TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 TCP_RACK_IDLE_REDUCE_HIGH = 0x444 TCP_RACK_MIN_PACE = 0x445 TCP_RACK_MIN_PACE_SEG = 0x446 @@ -1555,7 +1647,6 @@ const ( TCP_RACK_PRR_SENDALOT = 0x421 TCP_RACK_REORD_FADE = 0x426 TCP_RACK_REORD_THRESH = 0x425 - TCP_RACK_SESS_CWV = 0x42a TCP_RACK_TLP_INC_VAR = 0x429 TCP_RACK_TLP_REDUCE = 0x41c TCP_RACK_TLP_THRESH = 0x427 @@ -1693,12 +1784,13 @@ const ( EIDRM = syscall.Errno(0x52) EILSEQ = syscall.Errno(0x56) EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) EINTR = syscall.Errno(0x4) EINVAL = syscall.Errno(0x16) EIO = syscall.Errno(0x5) EISCONN = syscall.Errno(0x38) EISDIR = syscall.Errno(0x15) - ELAST = syscall.Errno(0x60) + ELAST = syscall.Errno(0x61) ELOOP = syscall.Errno(0x3e) EMFILE = syscall.Errno(0x18) EMLINK = syscall.Errno(0x1f) @@ -1841,7 +1933,7 @@ var errorList = [...]struct { {32, "EPIPE", "broken pipe"}, {33, "EDOM", "numerical argument out of domain"}, {34, "ERANGE", "result too large"}, - {35, "EAGAIN", "resource temporarily unavailable"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, {36, "EINPROGRESS", "operation now in progress"}, {37, "EALREADY", "operation already in progress"}, {38, "ENOTSOCK", "socket operation on non-socket"}, @@ -1903,6 +1995,7 @@ var errorList = [...]struct { {94, "ECAPMODE", "not permitted in capability mode"}, {95, "ENOTRECOVERABLE", "state not recoverable"}, {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, } // Signal table diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index 99e9a0e06..777b69def 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -151,6 +151,7 @@ const ( BIOCSETF = 0x80084267 BIOCSETFNR = 0x80084282 BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 BIOCSETWF = 0x8008427b BIOCSETZBUF = 0x800c4281 BIOCSHDRCMPLT = 0x80044275 @@ -362,7 +363,7 @@ const ( CTL_KERN = 0x1 CTL_MAXNAME = 0x18 CTL_NET = 0x4 - DIOCGATTR = 0xc144648e + DIOCGATTR = 0xc148648e DIOCGDELETE = 0x80106488 DIOCGFLUSH = 0x20006487 DIOCGFRONTSTUFF = 0x40086486 @@ -377,7 +378,7 @@ const ( DIOCGSTRIPESIZE = 0x4008648b DIOCSKERNELDUMP = 0x804c6490 DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 - DIOCZONECMD = 0xc06c648f + DIOCZONECMD = 0xc078648f DLT_A429 = 0xb8 DLT_A653_ICM = 0xb9 DLT_AIRONET_HEADER = 0x78 @@ -407,7 +408,9 @@ const ( DLT_C_HDLC_WITH_DIR = 0xcd DLT_DBUS = 0xe7 DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 DLT_DVB_CI = 0xeb DLT_ECONET = 0x73 DLT_EN10MB = 0x1 @@ -417,6 +420,7 @@ const ( DLT_ERF = 0xc5 DLT_ERF_ETH = 0xaf DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 DLT_FC_2 = 0xe0 DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 DLT_FDDI = 0xa @@ -444,7 +448,7 @@ const ( DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 DLT_INFINIBAND = 0xf7 DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 + DLT_IPMB_KONTRON = 0xc7 DLT_IPMB_LINUX = 0xd1 DLT_IPMI_HPM_2 = 0x104 DLT_IPNET = 0xe2 @@ -484,9 +488,11 @@ const ( DLT_LINUX_LAPD = 0xb1 DLT_LINUX_PPP_WITHDIRECTION = 0xa6 DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0x109 + DLT_MATCHING_MAX = 0x114 DLT_MATCHING_MIN = 0x68 DLT_MFR = 0xb6 DLT_MOST = 0xd3 @@ -502,7 +508,9 @@ const ( DLT_NFC_LLCP = 0xf5 DLT_NFLOG = 0xef DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b DLT_PCI_EXP = 0x7d DLT_PFLOG = 0x75 DLT_PFSYNC = 0x79 @@ -526,15 +534,18 @@ const ( DLT_RTAC_SERIAL = 0xfa DLT_SCCP = 0x8e DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c DLT_SITA = 0xc4 DLT_SLIP = 0x8 DLT_SLIP_BSDOS = 0xd DLT_STANAG_5066_D_PDU = 0xed DLT_SUNATM = 0x7b DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d DLT_TZSP = 0x80 DLT_USB = 0xba DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a DLT_USB_FREEBSD = 0xba DLT_USB_LINUX = 0xbd DLT_USB_LINUX_MMAPPED = 0xdc @@ -554,6 +565,7 @@ const ( DLT_USER7 = 0x9a DLT_USER8 = 0x9b DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f DLT_WATTSTOPPER_DLM = 0x107 DLT_WIHART = 0xdf DLT_WIRESHARK_UPPER_PDU = 0xfc @@ -578,6 +590,7 @@ const ( ECHONL = 0x10 ECHOPRT = 0x20 EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd EVFILT_FS = -0x9 EVFILT_LIO = -0xa EVFILT_PROC = -0x5 @@ -585,11 +598,12 @@ const ( EVFILT_READ = -0x1 EVFILT_SENDFILE = -0xc EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xc + EVFILT_SYSCOUNT = 0xd EVFILT_TIMER = -0x7 EVFILT_USER = -0xb EVFILT_VNODE = -0x4 EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 EV_ADD = 0x1 EV_CLEAR = 0x20 EV_DELETE = 0x2 @@ -606,6 +620,7 @@ const ( EV_RECEIPT = 0x40 EV_SYSFLAGS = 0xf000 EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff EXTATTR_NAMESPACE_EMPTY = 0x0 EXTATTR_NAMESPACE_SYSTEM = 0x2 EXTATTR_NAMESPACE_USER = 0x1 @@ -647,6 +662,7 @@ const ( IEXTEN = 0x400 IFAN_ARRIVAL = 0x0 IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 IFF_ALLMULTI = 0x200 IFF_ALTPHYS = 0x4000 IFF_BROADCAST = 0x2 @@ -663,6 +679,7 @@ const ( IFF_MONITOR = 0x40000 IFF_MULTICAST = 0x8000 IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 IFF_OACTIVE = 0x400 IFF_POINTOPOINT = 0x10 IFF_PPROMISC = 0x20000 @@ -719,6 +736,7 @@ const ( IPPROTO_CMTP = 0x26 IPPROTO_CPHB = 0x49 IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 IPPROTO_DDP = 0x25 IPPROTO_DGP = 0x56 IPPROTO_DIVERT = 0x102 @@ -799,7 +817,6 @@ const ( IPPROTO_SCTP = 0x84 IPPROTO_SDRP = 0x2a IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 IPPROTO_SHIM6 = 0x8c IPPROTO_SKIP = 0x39 IPPROTO_SPACER = 0x7fff @@ -837,6 +854,7 @@ const ( IPV6_DSTOPTS = 0x32 IPV6_FLOWID = 0x43 IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWTYPE = 0x44 IPV6_FRAGTTL = 0x78 @@ -857,13 +875,13 @@ const ( IPV6_MAX_GROUP_SRC_FILTER = 0x200 IPV6_MAX_MEMBERSHIPS = 0xfff IPV6_MAX_SOCK_SRC_FILTER = 0x80 - IPV6_MIN_MEMBERSHIPS = 0x1f IPV6_MMTU = 0x500 IPV6_MSFILTER = 0x4a IPV6_MULTICAST_HOPS = 0xa IPV6_MULTICAST_IF = 0x9 IPV6_MULTICAST_LOOP = 0xb IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 IPV6_PATHMTU = 0x2c IPV6_PKTINFO = 0x2e IPV6_PORTRANGE = 0xe @@ -875,6 +893,7 @@ const ( IPV6_RECVFLOWID = 0x46 IPV6_RECVHOPLIMIT = 0x25 IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 IPV6_RECVPATHMTU = 0x2b IPV6_RECVPKTINFO = 0x24 IPV6_RECVRSSBUCKETID = 0x47 @@ -894,6 +913,7 @@ const ( IPV6_V6ONLY = 0x1b IPV6_VERSION = 0x60 IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b IP_ADD_MEMBERSHIP = 0xc IP_ADD_SOURCE_MEMBERSHIP = 0x46 IP_BINDANY = 0x18 @@ -935,10 +955,8 @@ const ( IP_MAX_MEMBERSHIPS = 0xfff IP_MAX_SOCK_MUTE_FILTER = 0x80 IP_MAX_SOCK_SRC_FILTER = 0x80 - IP_MAX_SOURCE_FILTER = 0x400 IP_MF = 0x2000 IP_MINTTL = 0x42 - IP_MIN_MEMBERSHIPS = 0x1f IP_MSFILTER = 0x4a IP_MSS = 0x240 IP_MULTICAST_IF = 0x9 @@ -948,6 +966,7 @@ const ( IP_OFFMASK = 0x1fff IP_ONESBCAST = 0x17 IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b IP_PORTRANGE = 0x13 IP_PORTRANGE_DEFAULT = 0x0 IP_PORTRANGE_HIGH = 0x1 @@ -956,6 +975,7 @@ const ( IP_RECVFLOWID = 0x5d IP_RECVIF = 0x14 IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b IP_RECVRETOPTS = 0x6 IP_RECVRSSBUCKETID = 0x5e IP_RECVTOS = 0x44 @@ -972,8 +992,12 @@ const ( IP_TOS = 0x3 IP_TTL = 0x4 IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b ISIG = 0x80 ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 @@ -983,7 +1007,6 @@ const ( KERN_VERSION = 0x4 LOCAL_CONNWAIT = 0x4 LOCAL_CREDS = 0x2 - LOCAL_CREDS_PERSISTENT = 0x3 LOCAL_PEERCRED = 0x1 LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 @@ -1071,10 +1094,12 @@ const ( MNT_SUSPEND = 0x4 MNT_SYNCHRONOUS = 0x2 MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 MNT_UPDATE = 0x10000 - MNT_UPDATEMASK = 0x2d8d0807e + MNT_UPDATEMASK = 0xad8d0807e MNT_USER = 0x8000 - MNT_VISFLAGMASK = 0x3fef0ffff + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff MNT_WAIT = 0x1 MSG_CMSG_CLOEXEC = 0x40000 MSG_COMPAT = 0x8000 @@ -1103,6 +1128,7 @@ const ( NFDBITS = 0x20 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 NOTE_CLOSE = 0x100 @@ -1159,6 +1185,8 @@ const ( O_NONBLOCK = 0x4 O_RDONLY = 0x0 O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 O_SHLOCK = 0x10 O_SYNC = 0x80 O_TRUNC = 0x400 @@ -1169,6 +1197,10 @@ const ( PARMRK = 0x8 PARODD = 0x2000 PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 @@ -1176,6 +1208,53 @@ const ( PROT_NONE = 0x0 PROT_READ = 0x1 PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETVFPREGS = 0x40 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETVFPREGS = 0x41 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc RLIMIT_AS = 0xa RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1257,7 +1336,6 @@ const ( RTV_WEIGHT = 0x100 RT_ALL_FIBS = -0x1 RT_BLACKHOLE = 0x40 - RT_CACHING_CONTEXT = 0x1 RT_DEFAULT_FIB = 0x0 RT_HAS_GW = 0x80 RT_HAS_HEADER = 0x10 @@ -1267,15 +1345,17 @@ const ( RT_LLE_CACHE = 0x100 RT_MAY_LOOP = 0x8 RT_MAY_LOOP_BIT = 0x3 - RT_NORTREF = 0x2 RT_REJECT = 0x20 RUSAGE_CHILDREN = -0x1 RUSAGE_SELF = 0x0 RUSAGE_THREAD = 0x1 SCM_BINTIME = 0x4 SCM_CREDS = 0x3 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 SEEK_CUR = 0x1 SEEK_DATA = 0x3 SEEK_END = 0x2 @@ -1299,10 +1379,12 @@ const ( SIOCGHWADDR = 0xc020693e SIOCGI2C = 0xc020693d SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d SIOCGIFBRDADDR = 0xc0206923 SIOCGIFCAP = 0xc020691f SIOCGIFCONF = 0xc0086924 SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a SIOCGIFDSTADDR = 0xc0206922 SIOCGIFFIB = 0xc020695c SIOCGIFFLAGS = 0xc0206911 @@ -1318,8 +1400,11 @@ const ( SIOCGIFPDSTADDR = 0xc0206948 SIOCGIFPHYS = 0xc0206935 SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 SIOCGIFSTATUS = 0xc331693b SIOCGIFXMEDIA = 0xc028698b + SIOCGLANPCP = 0xc0206998 SIOCGLOWAT = 0x40047303 SIOCGPGRP = 0x40047309 SIOCGPRIVATE_0 = 0xc0206950 @@ -1350,6 +1435,7 @@ const ( SIOCSIFPHYS = 0x80206936 SIOCSIFRVNET = 0xc020695b SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 SIOCSLOWAT = 0x80047302 SIOCSPGRP = 0x80047308 SIOCSTUNFIB = 0x8020695f @@ -1369,6 +1455,7 @@ const ( SO_BINTIME = 0x2000 SO_BROADCAST = 0x20 SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 SO_KEEPALIVE = 0x8 @@ -1377,6 +1464,7 @@ const ( SO_LISTENINCQLEN = 0x1013 SO_LISTENQLEN = 0x1012 SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 SO_NOSIGPIPE = 0x800 SO_NO_DDP = 0x8000 SO_NO_OFFLOAD = 0x4000 @@ -1387,13 +1475,22 @@ const ( SO_RCVBUF = 0x1002 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 SO_SETFIB = 0x1014 SO_SNDBUF = 0x1001 SO_SNDLOWAT = 0x1003 SO_SNDTIMEO = 0x1005 SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 SO_USER_COOKIE = 0x1015 @@ -1437,10 +1534,69 @@ const ( TCOFLUSH = 0x2 TCOOFF = 0x1 TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 TCP_CA_NAME_MAX = 0x10 TCP_CCALGOOPT = 0x41 TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DELACK = 0x48 TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 TCP_FUNCTION_BLK = 0x2000 TCP_FUNCTION_NAME_LEN_MAX = 0x20 TCP_INFO = 0x20 @@ -1448,6 +1604,12 @@ const ( TCP_KEEPIDLE = 0x100 TCP_KEEPINIT = 0x80 TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOG_ID_LEN = 0x40 TCP_MAXBURST = 0x4 TCP_MAXHLEN = 0x3c TCP_MAXOLEN = 0x28 @@ -1463,8 +1625,30 @@ const ( TCP_NOPUSH = 0x4 TCP_PCAP_IN = 0x1000 TCP_PCAP_OUT = 0x800 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 TCP_VENDOR = 0x80000000 TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 TIOCCBRK = 0x2000747a TIOCCDTR = 0x20007478 TIOCCONS = 0x80047462 @@ -1528,6 +1712,8 @@ const ( TIOCTIMESTAMP = 0x40107459 TIOCUCNTL = 0x80047466 TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 VDISCARD = 0xf VDSUSP = 0xb VEOF = 0x0 @@ -1592,12 +1778,13 @@ const ( EIDRM = syscall.Errno(0x52) EILSEQ = syscall.Errno(0x56) EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) EINTR = syscall.Errno(0x4) EINVAL = syscall.Errno(0x16) EIO = syscall.Errno(0x5) EISCONN = syscall.Errno(0x38) EISDIR = syscall.Errno(0x15) - ELAST = syscall.Errno(0x60) + ELAST = syscall.Errno(0x61) ELOOP = syscall.Errno(0x3e) EMFILE = syscall.Errno(0x18) EMLINK = syscall.Errno(0x1f) @@ -1740,7 +1927,7 @@ var errorList = [...]struct { {32, "EPIPE", "broken pipe"}, {33, "EDOM", "numerical argument out of domain"}, {34, "ERANGE", "result too large"}, - {35, "EAGAIN", "resource temporarily unavailable"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, {36, "EINPROGRESS", "operation now in progress"}, {37, "EALREADY", "operation already in progress"}, {38, "ENOTSOCK", "socket operation on non-socket"}, @@ -1802,6 +1989,7 @@ var errorList = [...]struct { {94, "ECAPMODE", "not permitted in capability mode"}, {95, "ENOTRECOVERABLE", "state not recoverable"}, {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, } // Signal table diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go index 4c8377114..c557ac2db 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -151,6 +151,7 @@ const ( BIOCSETF = 0x80104267 BIOCSETFNR = 0x80104282 BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 BIOCSETWF = 0x8010427b BIOCSETZBUF = 0x80184281 BIOCSHDRCMPLT = 0x80044275 @@ -447,7 +448,7 @@ const ( DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 DLT_INFINIBAND = 0xf7 DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 + DLT_IPMB_KONTRON = 0xc7 DLT_IPMB_LINUX = 0xd1 DLT_IPMI_HPM_2 = 0x104 DLT_IPNET = 0xe2 @@ -487,10 +488,11 @@ const ( DLT_LINUX_LAPD = 0xb1 DLT_LINUX_PPP_WITHDIRECTION = 0xa6 DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 DLT_LOOP = 0x6c DLT_LORATAP = 0x10e DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0x113 + DLT_MATCHING_MAX = 0x114 DLT_MATCHING_MIN = 0x68 DLT_MFR = 0xb6 DLT_MOST = 0xd3 @@ -734,6 +736,7 @@ const ( IPPROTO_CMTP = 0x26 IPPROTO_CPHB = 0x49 IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 IPPROTO_DDP = 0x25 IPPROTO_DGP = 0x56 IPPROTO_DIVERT = 0x102 @@ -814,7 +817,6 @@ const ( IPPROTO_SCTP = 0x84 IPPROTO_SDRP = 0x2a IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 IPPROTO_SHIM6 = 0x8c IPPROTO_SKIP = 0x39 IPPROTO_SPACER = 0x7fff @@ -911,6 +913,7 @@ const ( IPV6_V6ONLY = 0x1b IPV6_VERSION = 0x60 IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b IP_ADD_MEMBERSHIP = 0xc IP_ADD_SOURCE_MEMBERSHIP = 0x46 IP_BINDANY = 0x18 @@ -989,8 +992,12 @@ const ( IP_TOS = 0x3 IP_TTL = 0x4 IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b ISIG = 0x80 ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 @@ -1000,7 +1007,6 @@ const ( KERN_VERSION = 0x4 LOCAL_CONNWAIT = 0x4 LOCAL_CREDS = 0x2 - LOCAL_CREDS_PERSISTENT = 0x3 LOCAL_PEERCRED = 0x1 LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 @@ -1180,6 +1186,8 @@ const ( O_NONBLOCK = 0x4 O_RDONLY = 0x0 O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 O_SHLOCK = 0x10 O_SYNC = 0x80 O_TRUNC = 0x400 @@ -1190,6 +1198,10 @@ const ( PARMRK = 0x8 PARODD = 0x2000 PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 @@ -1197,6 +1209,51 @@ const ( PROT_NONE = 0x0 PROT_READ = 0x1 PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc RLIMIT_AS = 0xa RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1321,10 +1378,12 @@ const ( SIOCGHWADDR = 0xc020693e SIOCGI2C = 0xc020693d SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d SIOCGIFBRDADDR = 0xc0206923 SIOCGIFCAP = 0xc020691f SIOCGIFCONF = 0xc0106924 SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a SIOCGIFDSTADDR = 0xc0206922 SIOCGIFFIB = 0xc020695c SIOCGIFFLAGS = 0xc0206911 @@ -1415,6 +1474,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_REUSEPORT_LB = 0x10000 @@ -1473,22 +1533,40 @@ const ( TCOFLUSH = 0x2 TCOOFF = 0x1 TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b TCP_BBR_DRAIN_INC_EXTRA = 0x43c TCP_BBR_DRAIN_PG = 0x42e TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 TCP_BBR_IWINTSO = 0x42b TCP_BBR_LOWGAIN_FD = 0x436 TCP_BBR_LOWGAIN_HALF = 0x435 TCP_BBR_LOWGAIN_THRESH = 0x434 TCP_BBR_MAX_RTO = 0x439 TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 TCP_BBR_ONE_RETRAN = 0x431 TCP_BBR_PACE_CROSS = 0x442 TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 TCP_BBR_PACE_PER_SEC = 0x43e TCP_BBR_PACE_SEG_MAX = 0x440 TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 TCP_BBR_PROBE_RTT_GAIN = 0x44d TCP_BBR_PROBE_RTT_INT = 0x430 TCP_BBR_PROBE_RTT_LEN = 0x44e @@ -1497,12 +1575,18 @@ const ( TCP_BBR_REC_OVER_HPTS = 0x43a TCP_BBR_RETRAN_WTSO = 0x44b TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d TCP_BBR_STARTUP_LOSS_EXIT = 0x432 TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 TCP_BBR_UNLIMITED = 0x43b TCP_BBR_USEDEL_RATE = 0x437 TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 TCP_CA_NAME_MAX = 0x10 TCP_CCALGOOPT = 0x41 TCP_CONGESTION = 0x40 @@ -1542,6 +1626,7 @@ const ( TCP_PCAP_OUT = 0x800 TCP_RACK_EARLY_RECOV = 0x423 TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 TCP_RACK_IDLE_REDUCE_HIGH = 0x444 TCP_RACK_MIN_PACE = 0x445 TCP_RACK_MIN_PACE_SEG = 0x446 @@ -1555,7 +1640,6 @@ const ( TCP_RACK_PRR_SENDALOT = 0x421 TCP_RACK_REORD_FADE = 0x426 TCP_RACK_REORD_THRESH = 0x425 - TCP_RACK_SESS_CWV = 0x42a TCP_RACK_TLP_INC_VAR = 0x429 TCP_RACK_TLP_REDUCE = 0x41c TCP_RACK_TLP_THRESH = 0x427 @@ -1694,12 +1778,13 @@ const ( EIDRM = syscall.Errno(0x52) EILSEQ = syscall.Errno(0x56) EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) EINTR = syscall.Errno(0x4) EINVAL = syscall.Errno(0x16) EIO = syscall.Errno(0x5) EISCONN = syscall.Errno(0x38) EISDIR = syscall.Errno(0x15) - ELAST = syscall.Errno(0x60) + ELAST = syscall.Errno(0x61) ELOOP = syscall.Errno(0x3e) EMFILE = syscall.Errno(0x18) EMLINK = syscall.Errno(0x1f) @@ -1842,7 +1927,7 @@ var errorList = [...]struct { {32, "EPIPE", "broken pipe"}, {33, "EDOM", "numerical argument out of domain"}, {34, "ERANGE", "result too large"}, - {35, "EAGAIN", "resource temporarily unavailable"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, {36, "EINPROGRESS", "operation now in progress"}, {37, "EALREADY", "operation already in progress"}, {38, "ENOTSOCK", "socket operation on non-socket"}, @@ -1904,6 +1989,7 @@ var errorList = [...]struct { {94, "ECAPMODE", "not permitted in capability mode"}, {95, "ENOTRECOVERABLE", "state not recoverable"}, {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, } // Signal table diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go new file mode 100644 index 000000000..341b4d962 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go @@ -0,0 +1,2148 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd +// +build riscv64,freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_HYPERV = 0x2b + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B1000000 = 0xf4240 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1500000 = 0x16e360 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B2000000 = 0x1e8480 + B230400 = 0x38400 + B2400 = 0x960 + B2500000 = 0x2625a0 + B28800 = 0x7080 + B300 = 0x12c + B3000000 = 0x2dc6c0 + B3500000 = 0x3567e0 + B38400 = 0x9600 + B4000000 = 0x3d0900 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B500000 = 0x7a120 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x5 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_COARSE = 0xc + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_COARSE = 0xa + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc148648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGKERNELDUMP = 0xc0986492 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x80986491 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCSKERNELDUMP_FREEBSD12 = 0x80506490 + DIOCZONECMD = 0xc080648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EHE_DEAD_PRIORITY = -0x1 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_NONE = -0xc8 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_ADD_SEALS = 0x13 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_GET_SEALS = 0x14 + F_ISUNIONSTACK = 0x15 + F_KINFO = 0x16 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f72 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_KNOWSEPOCH = 0x20 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_NETMASK_DEFAULT = 0xffffff00 + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0xfc000000 + MFD_HUGE_SHIFT = 0x1a + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0x300d0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EMPTYDIR = 0x2000000000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_EXTLS = 0x4000000000 + MNT_EXTLSCERT = 0x8000000000 + MNT_EXTLSCERTUSER = 0x10000000000 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOCOVER = 0x1000000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NET_RT_NHGRP = 0x7 + NET_RT_NHOP = 0x6 + NFDBITS = 0x40 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x1000000 + O_EMPTY_PATH = 0x2000000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_PATH = 0x400000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_COREDUMP = 0x1d + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_DEFAULT_WEIGHT = 0x1 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAX_WEIGHT = 0xffffff + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_CREDS2 = 0x8 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0x8020692c + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_INIT_RATE = 0x458 + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_USE_RACK_RR = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DEFER_OPTIONS = 0x470 + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FAST_RSM_HACK = 0x471 + TCP_FIN_IS_RST = 0x49 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_HDWR_RATE_CAP = 0x46a + TCP_HDWR_UP_ONLY = 0x46c + TCP_IDLE_REDUCE = 0x46 + TCP_INFO = 0x20 + TCP_IWND_NB = 0x2b + TCP_IWND_NSEG = 0x2c + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOGID_CNT = 0x2e + TCP_LOG_ID_LEN = 0x40 + TCP_LOG_LIMIT = 0x4a + TCP_LOG_TAG = 0x2f + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXPEAKRATE = 0x45 + TCP_MAXSEG = 0x2 + TCP_MAXUNACKTIME = 0x44 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NO_PRR = 0x462 + TCP_PACING_RATE_CAP = 0x46b + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_PERF_INFO = 0x4e + TCP_PROC_ACCOUNTING = 0x4c + TCP_RACK_ABC_VAL = 0x46d + TCP_RACK_CHEAT_NOT_CONF_RATE = 0x459 + TCP_RACK_DO_DETECTION = 0x449 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_FORCE_MSEG = 0x45d + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_GP_INCREASE_CA = 0x45a + TCP_RACK_GP_INCREASE_REC = 0x45c + TCP_RACK_GP_INCREASE_SS = 0x45b + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MBUF_QUEUE = 0x41a + TCP_RACK_MEASURE_CNT = 0x46f + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_NONRXT_CFG_RATE = 0x463 + TCP_RACK_NO_PUSH_AT_MAX = 0x466 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_RATE_CA = 0x45e + TCP_RACK_PACE_RATE_REC = 0x460 + TCP_RACK_PACE_RATE_SS = 0x45f + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PACE_TO_FILL = 0x467 + TCP_RACK_PACING_BETA = 0x472 + TCP_RACK_PACING_BETA_ECN = 0x473 + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROFILE = 0x469 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_RR_CONF = 0x459 + TCP_RACK_TIMER_SLOP = 0x474 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_REC_ABC_VAL = 0x46e + TCP_REMOTE_UDP_ENCAPS_PORT = 0x47 + TCP_REUSPORT_LB_NUMA = 0x402 + TCP_REUSPORT_LB_NUMA_CURDOM = -0x1 + TCP_REUSPORT_LB_NUMA_NODOM = -0x2 + TCP_RXTLS_ENABLE = 0x29 + TCP_RXTLS_MODE = 0x2a + TCP_SHARED_CWND_ALLOWED = 0x4b + TCP_SHARED_CWND_ENABLE = 0x464 + TCP_SHARED_CWND_TIME_LIMIT = 0x468 + TCP_STATS = 0x21 + TCP_TIMELY_DYN_ADJ = 0x465 + TCP_TLS_MODE_IFNET = 0x2 + TCP_TLS_MODE_NONE = 0x0 + TCP_TLS_MODE_SW = 0x1 + TCP_TLS_MODE_TOE = 0x3 + TCP_TXTLS_ENABLE = 0x27 + TCP_TXTLS_MODE = 0x28 + TCP_USER_LOG = 0x30 + TCP_USE_CMP_ACKS = 0x4d + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 36a89c643..785d693eb 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -140,6 +140,306 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUDIT_ADD = 0x3eb + AUDIT_ADD_RULE = 0x3f3 + AUDIT_ALWAYS = 0x2 + AUDIT_ANOM_ABEND = 0x6a5 + AUDIT_ANOM_CREAT = 0x6a7 + AUDIT_ANOM_LINK = 0x6a6 + AUDIT_ANOM_PROMISCUOUS = 0x6a4 + AUDIT_ARCH = 0xb + AUDIT_ARCH_AARCH64 = 0xc00000b7 + AUDIT_ARCH_ALPHA = 0xc0009026 + AUDIT_ARCH_ARCOMPACT = 0x4000005d + AUDIT_ARCH_ARCOMPACTBE = 0x5d + AUDIT_ARCH_ARCV2 = 0x400000c3 + AUDIT_ARCH_ARCV2BE = 0xc3 + AUDIT_ARCH_ARM = 0x40000028 + AUDIT_ARCH_ARMEB = 0x28 + AUDIT_ARCH_C6X = 0x4000008c + AUDIT_ARCH_C6XBE = 0x8c + AUDIT_ARCH_CRIS = 0x4000004c + AUDIT_ARCH_CSKY = 0x400000fc + AUDIT_ARCH_FRV = 0x5441 + AUDIT_ARCH_H8300 = 0x2e + AUDIT_ARCH_HEXAGON = 0xa4 + AUDIT_ARCH_I386 = 0x40000003 + AUDIT_ARCH_IA64 = 0xc0000032 + AUDIT_ARCH_LOONGARCH32 = 0x40000102 + AUDIT_ARCH_LOONGARCH64 = 0xc0000102 + AUDIT_ARCH_M32R = 0x58 + AUDIT_ARCH_M68K = 0x4 + AUDIT_ARCH_MICROBLAZE = 0xbd + AUDIT_ARCH_MIPS = 0x8 + AUDIT_ARCH_MIPS64 = 0x80000008 + AUDIT_ARCH_MIPS64N32 = 0xa0000008 + AUDIT_ARCH_MIPSEL = 0x40000008 + AUDIT_ARCH_MIPSEL64 = 0xc0000008 + AUDIT_ARCH_MIPSEL64N32 = 0xe0000008 + AUDIT_ARCH_NDS32 = 0x400000a7 + AUDIT_ARCH_NDS32BE = 0xa7 + AUDIT_ARCH_NIOS2 = 0x40000071 + AUDIT_ARCH_OPENRISC = 0x5c + AUDIT_ARCH_PARISC = 0xf + AUDIT_ARCH_PARISC64 = 0x8000000f + AUDIT_ARCH_PPC = 0x14 + AUDIT_ARCH_PPC64 = 0x80000015 + AUDIT_ARCH_PPC64LE = 0xc0000015 + AUDIT_ARCH_RISCV32 = 0x400000f3 + AUDIT_ARCH_RISCV64 = 0xc00000f3 + AUDIT_ARCH_S390 = 0x16 + AUDIT_ARCH_S390X = 0x80000016 + AUDIT_ARCH_SH = 0x2a + AUDIT_ARCH_SH64 = 0x8000002a + AUDIT_ARCH_SHEL = 0x4000002a + AUDIT_ARCH_SHEL64 = 0xc000002a + AUDIT_ARCH_SPARC = 0x2 + AUDIT_ARCH_SPARC64 = 0x8000002b + AUDIT_ARCH_TILEGX = 0xc00000bf + AUDIT_ARCH_TILEGX32 = 0x400000bf + AUDIT_ARCH_TILEPRO = 0x400000bc + AUDIT_ARCH_UNICORE = 0x4000006e + AUDIT_ARCH_X86_64 = 0xc000003e + AUDIT_ARCH_XTENSA = 0x5e + AUDIT_ARG0 = 0xc8 + AUDIT_ARG1 = 0xc9 + AUDIT_ARG2 = 0xca + AUDIT_ARG3 = 0xcb + AUDIT_AVC = 0x578 + AUDIT_AVC_PATH = 0x57a + AUDIT_BITMASK_SIZE = 0x40 + AUDIT_BIT_MASK = 0x8000000 + AUDIT_BIT_TEST = 0x48000000 + AUDIT_BPF = 0x536 + AUDIT_BPRM_FCAPS = 0x529 + AUDIT_CAPSET = 0x52a + AUDIT_CLASS_CHATTR = 0x2 + AUDIT_CLASS_CHATTR_32 = 0x3 + AUDIT_CLASS_DIR_WRITE = 0x0 + AUDIT_CLASS_DIR_WRITE_32 = 0x1 + AUDIT_CLASS_READ = 0x4 + AUDIT_CLASS_READ_32 = 0x5 + AUDIT_CLASS_SIGNAL = 0x8 + AUDIT_CLASS_SIGNAL_32 = 0x9 + AUDIT_CLASS_WRITE = 0x6 + AUDIT_CLASS_WRITE_32 = 0x7 + AUDIT_COMPARE_AUID_TO_EUID = 0x10 + AUDIT_COMPARE_AUID_TO_FSUID = 0xe + AUDIT_COMPARE_AUID_TO_OBJ_UID = 0x5 + AUDIT_COMPARE_AUID_TO_SUID = 0xf + AUDIT_COMPARE_EGID_TO_FSGID = 0x17 + AUDIT_COMPARE_EGID_TO_OBJ_GID = 0x4 + AUDIT_COMPARE_EGID_TO_SGID = 0x18 + AUDIT_COMPARE_EUID_TO_FSUID = 0x12 + AUDIT_COMPARE_EUID_TO_OBJ_UID = 0x3 + AUDIT_COMPARE_EUID_TO_SUID = 0x11 + AUDIT_COMPARE_FSGID_TO_OBJ_GID = 0x9 + AUDIT_COMPARE_FSUID_TO_OBJ_UID = 0x8 + AUDIT_COMPARE_GID_TO_EGID = 0x14 + AUDIT_COMPARE_GID_TO_FSGID = 0x15 + AUDIT_COMPARE_GID_TO_OBJ_GID = 0x2 + AUDIT_COMPARE_GID_TO_SGID = 0x16 + AUDIT_COMPARE_SGID_TO_FSGID = 0x19 + AUDIT_COMPARE_SGID_TO_OBJ_GID = 0x7 + AUDIT_COMPARE_SUID_TO_FSUID = 0x13 + AUDIT_COMPARE_SUID_TO_OBJ_UID = 0x6 + AUDIT_COMPARE_UID_TO_AUID = 0xa + AUDIT_COMPARE_UID_TO_EUID = 0xb + AUDIT_COMPARE_UID_TO_FSUID = 0xc + AUDIT_COMPARE_UID_TO_OBJ_UID = 0x1 + AUDIT_COMPARE_UID_TO_SUID = 0xd + AUDIT_CONFIG_CHANGE = 0x519 + AUDIT_CWD = 0x51b + AUDIT_DAEMON_ABORT = 0x4b2 + AUDIT_DAEMON_CONFIG = 0x4b3 + AUDIT_DAEMON_END = 0x4b1 + AUDIT_DAEMON_START = 0x4b0 + AUDIT_DEL = 0x3ec + AUDIT_DEL_RULE = 0x3f4 + AUDIT_DEVMAJOR = 0x64 + AUDIT_DEVMINOR = 0x65 + AUDIT_DIR = 0x6b + AUDIT_DM_CTRL = 0x53a + AUDIT_DM_EVENT = 0x53b + AUDIT_EGID = 0x6 + AUDIT_EOE = 0x528 + AUDIT_EQUAL = 0x40000000 + AUDIT_EUID = 0x2 + AUDIT_EVENT_LISTENER = 0x537 + AUDIT_EXE = 0x70 + AUDIT_EXECVE = 0x51d + AUDIT_EXIT = 0x67 + AUDIT_FAIL_PANIC = 0x2 + AUDIT_FAIL_PRINTK = 0x1 + AUDIT_FAIL_SILENT = 0x0 + AUDIT_FANOTIFY = 0x533 + AUDIT_FD_PAIR = 0x525 + AUDIT_FEATURE_BITMAP_ALL = 0x7f + AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT = 0x1 + AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME = 0x2 + AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND = 0x8 + AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH = 0x4 + AUDIT_FEATURE_BITMAP_FILTER_FS = 0x40 + AUDIT_FEATURE_BITMAP_LOST_RESET = 0x20 + AUDIT_FEATURE_BITMAP_SESSIONID_FILTER = 0x10 + AUDIT_FEATURE_CHANGE = 0x530 + AUDIT_FEATURE_LOGINUID_IMMUTABLE = 0x1 + AUDIT_FEATURE_ONLY_UNSET_LOGINUID = 0x0 + AUDIT_FEATURE_VERSION = 0x1 + AUDIT_FIELD_COMPARE = 0x6f + AUDIT_FILETYPE = 0x6c + AUDIT_FILTERKEY = 0xd2 + AUDIT_FILTER_ENTRY = 0x2 + AUDIT_FILTER_EXCLUDE = 0x5 + AUDIT_FILTER_EXIT = 0x4 + AUDIT_FILTER_FS = 0x6 + AUDIT_FILTER_PREPEND = 0x10 + AUDIT_FILTER_TASK = 0x1 + AUDIT_FILTER_TYPE = 0x5 + AUDIT_FILTER_URING_EXIT = 0x7 + AUDIT_FILTER_USER = 0x0 + AUDIT_FILTER_WATCH = 0x3 + AUDIT_FIRST_KERN_ANOM_MSG = 0x6a4 + AUDIT_FIRST_USER_MSG = 0x44c + AUDIT_FIRST_USER_MSG2 = 0x834 + AUDIT_FSGID = 0x8 + AUDIT_FSTYPE = 0x1a + AUDIT_FSUID = 0x4 + AUDIT_GET = 0x3e8 + AUDIT_GET_FEATURE = 0x3fb + AUDIT_GID = 0x5 + AUDIT_GREATER_THAN = 0x20000000 + AUDIT_GREATER_THAN_OR_EQUAL = 0x60000000 + AUDIT_INODE = 0x66 + AUDIT_INTEGRITY_DATA = 0x708 + AUDIT_INTEGRITY_EVM_XATTR = 0x70e + AUDIT_INTEGRITY_HASH = 0x70b + AUDIT_INTEGRITY_METADATA = 0x709 + AUDIT_INTEGRITY_PCR = 0x70c + AUDIT_INTEGRITY_POLICY_RULE = 0x70f + AUDIT_INTEGRITY_RULE = 0x70d + AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_IPC = 0x517 + AUDIT_IPC_SET_PERM = 0x51f + AUDIT_KERNEL = 0x7d0 + AUDIT_KERNEL_OTHER = 0x524 + AUDIT_KERN_MODULE = 0x532 + AUDIT_LAST_FEATURE = 0x1 + AUDIT_LAST_KERN_ANOM_MSG = 0x707 + AUDIT_LAST_USER_MSG = 0x4af + AUDIT_LAST_USER_MSG2 = 0xbb7 + AUDIT_LESS_THAN = 0x10000000 + AUDIT_LESS_THAN_OR_EQUAL = 0x50000000 + AUDIT_LIST = 0x3ea + AUDIT_LIST_RULES = 0x3f5 + AUDIT_LOGIN = 0x3ee + AUDIT_LOGINUID = 0x9 + AUDIT_LOGINUID_SET = 0x18 + AUDIT_MAC_CALIPSO_ADD = 0x58a + AUDIT_MAC_CALIPSO_DEL = 0x58b + AUDIT_MAC_CIPSOV4_ADD = 0x57f + AUDIT_MAC_CIPSOV4_DEL = 0x580 + AUDIT_MAC_CONFIG_CHANGE = 0x57d + AUDIT_MAC_IPSEC_ADDSA = 0x583 + AUDIT_MAC_IPSEC_ADDSPD = 0x585 + AUDIT_MAC_IPSEC_DELSA = 0x584 + AUDIT_MAC_IPSEC_DELSPD = 0x586 + AUDIT_MAC_IPSEC_EVENT = 0x587 + AUDIT_MAC_MAP_ADD = 0x581 + AUDIT_MAC_MAP_DEL = 0x582 + AUDIT_MAC_POLICY_LOAD = 0x57b + AUDIT_MAC_STATUS = 0x57c + AUDIT_MAC_UNLBL_ALLOW = 0x57e + AUDIT_MAC_UNLBL_STCADD = 0x588 + AUDIT_MAC_UNLBL_STCDEL = 0x589 + AUDIT_MAKE_EQUIV = 0x3f7 + AUDIT_MAX_FIELDS = 0x40 + AUDIT_MAX_FIELD_COMPARE = 0x19 + AUDIT_MAX_KEY_LEN = 0x100 + AUDIT_MESSAGE_TEXT_MAX = 0x2170 + AUDIT_MMAP = 0x52b + AUDIT_MQ_GETSETATTR = 0x523 + AUDIT_MQ_NOTIFY = 0x522 + AUDIT_MQ_OPEN = 0x520 + AUDIT_MQ_SENDRECV = 0x521 + AUDIT_MSGTYPE = 0xc + AUDIT_NEGATE = 0x80000000 + AUDIT_NETFILTER_CFG = 0x52d + AUDIT_NETFILTER_PKT = 0x52c + AUDIT_NEVER = 0x0 + AUDIT_NLGRP_MAX = 0x1 + AUDIT_NOT_EQUAL = 0x30000000 + AUDIT_NR_FILTERS = 0x8 + AUDIT_OBJ_GID = 0x6e + AUDIT_OBJ_LEV_HIGH = 0x17 + AUDIT_OBJ_LEV_LOW = 0x16 + AUDIT_OBJ_PID = 0x526 + AUDIT_OBJ_ROLE = 0x14 + AUDIT_OBJ_TYPE = 0x15 + AUDIT_OBJ_UID = 0x6d + AUDIT_OBJ_USER = 0x13 + AUDIT_OPENAT2 = 0x539 + AUDIT_OPERATORS = 0x78000000 + AUDIT_PATH = 0x516 + AUDIT_PERM = 0x6a + AUDIT_PERM_ATTR = 0x8 + AUDIT_PERM_EXEC = 0x1 + AUDIT_PERM_READ = 0x4 + AUDIT_PERM_WRITE = 0x2 + AUDIT_PERS = 0xa + AUDIT_PID = 0x0 + AUDIT_POSSIBLE = 0x1 + AUDIT_PPID = 0x12 + AUDIT_PROCTITLE = 0x52f + AUDIT_REPLACE = 0x531 + AUDIT_SADDR_FAM = 0x71 + AUDIT_SECCOMP = 0x52e + AUDIT_SELINUX_ERR = 0x579 + AUDIT_SESSIONID = 0x19 + AUDIT_SET = 0x3e9 + AUDIT_SET_FEATURE = 0x3fa + AUDIT_SGID = 0x7 + AUDIT_SID_UNSET = 0xffffffff + AUDIT_SIGNAL_INFO = 0x3f2 + AUDIT_SOCKADDR = 0x51a + AUDIT_SOCKETCALL = 0x518 + AUDIT_STATUS_BACKLOG_LIMIT = 0x10 + AUDIT_STATUS_BACKLOG_WAIT_TIME = 0x20 + AUDIT_STATUS_BACKLOG_WAIT_TIME_ACTUAL = 0x80 + AUDIT_STATUS_ENABLED = 0x1 + AUDIT_STATUS_FAILURE = 0x2 + AUDIT_STATUS_LOST = 0x40 + AUDIT_STATUS_PID = 0x4 + AUDIT_STATUS_RATE_LIMIT = 0x8 + AUDIT_SUBJ_CLR = 0x11 + AUDIT_SUBJ_ROLE = 0xe + AUDIT_SUBJ_SEN = 0x10 + AUDIT_SUBJ_TYPE = 0xf + AUDIT_SUBJ_USER = 0xd + AUDIT_SUCCESS = 0x68 + AUDIT_SUID = 0x3 + AUDIT_SYSCALL = 0x514 + AUDIT_SYSCALL_CLASSES = 0x10 + AUDIT_TIME_ADJNTPVAL = 0x535 + AUDIT_TIME_INJOFFSET = 0x534 + AUDIT_TRIM = 0x3f6 + AUDIT_TTY = 0x527 + AUDIT_TTY_GET = 0x3f8 + AUDIT_TTY_SET = 0x3f9 + AUDIT_UID = 0x1 + AUDIT_UID_UNSET = 0xffffffff + AUDIT_UNUSED_BITS = 0x7fffc00 + AUDIT_URINGOP = 0x538 + AUDIT_USER = 0x3ed + AUDIT_USER_AVC = 0x453 + AUDIT_USER_TTY = 0x464 + AUDIT_VERSION_BACKLOG_LIMIT = 0x1 + AUDIT_VERSION_BACKLOG_WAIT_TIME = 0x2 + AUDIT_VERSION_LATEST = 0x7f + AUDIT_WATCH = 0x69 + AUDIT_WATCH_INS = 0x3ef + AUDIT_WATCH_LIST = 0x3f1 + AUDIT_WATCH_REM = 0x3f0 AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B110 = 0x3 @@ -184,6 +484,7 @@ const ( BPF_F_ALLOW_MULTI = 0x2 BPF_F_ALLOW_OVERRIDE = 0x1 BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_KPROBE_MULTI_RETURN = 0x1 BPF_F_QUERY_EFFECTIVE = 0x1 BPF_F_REPLACE = 0x4 BPF_F_SLEEPABLE = 0x10 @@ -191,6 +492,8 @@ const ( BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TEST_RUN_ON_CPU = 0x1 BPF_F_TEST_STATE_FREQ = 0x8 + BPF_F_TEST_XDP_LIVE_FRAMES = 0x2 + BPF_F_XDP_HAS_FRAGS = 0x20 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -393,9 +696,11 @@ const ( CAP_SYS_TIME = 0x19 CAP_SYS_TTY_CONFIG = 0x1a CAP_WAKE_ALARM = 0x23 + CEPH_SUPER_MAGIC = 0xc36400 CFLUSH = 0xf CGROUP2_SUPER_MAGIC = 0x63677270 CGROUP_SUPER_MAGIC = 0x27e0eb + CIFS_SUPER_MAGIC = 0xff534d42 CLOCK_BOOTTIME = 0x7 CLOCK_BOOTTIME_ALARM = 0x9 CLOCK_DEFAULT = 0x0 @@ -515,9 +820,9 @@ const ( DM_UUID_FLAG = 0x4000 DM_UUID_LEN = 0x81 DM_VERSION = 0xc138fd00 - DM_VERSION_EXTRA = "-ioctl (2021-03-22)" + DM_VERSION_EXTRA = "-ioctl (2022-02-22)" DM_VERSION_MAJOR = 0x4 - DM_VERSION_MINOR = 0x2d + DM_VERSION_MINOR = 0x2e DM_VERSION_PATCHLEVEL = 0x0 DT_BLK = 0x6 DT_CHR = 0x2 @@ -533,6 +838,55 @@ const ( EFD_SEMAPHORE = 0x1 EFIVARFS_MAGIC = 0xde5e81e4 EFS_SUPER_MAGIC = 0x414a53 + EM_386 = 0x3 + EM_486 = 0x6 + EM_68K = 0x4 + EM_860 = 0x7 + EM_88K = 0x5 + EM_AARCH64 = 0xb7 + EM_ALPHA = 0x9026 + EM_ALTERA_NIOS2 = 0x71 + EM_ARCOMPACT = 0x5d + EM_ARCV2 = 0xc3 + EM_ARM = 0x28 + EM_BLACKFIN = 0x6a + EM_BPF = 0xf7 + EM_CRIS = 0x4c + EM_CSKY = 0xfc + EM_CYGNUS_M32R = 0x9041 + EM_CYGNUS_MN10300 = 0xbeef + EM_FRV = 0x5441 + EM_H8_300 = 0x2e + EM_HEXAGON = 0xa4 + EM_IA_64 = 0x32 + EM_LOONGARCH = 0x102 + EM_M32 = 0x1 + EM_M32R = 0x58 + EM_MICROBLAZE = 0xbd + EM_MIPS = 0x8 + EM_MIPS_RS3_LE = 0xa + EM_MIPS_RS4_BE = 0xa + EM_MN10300 = 0x59 + EM_NDS32 = 0xa7 + EM_NONE = 0x0 + EM_OPENRISC = 0x5c + EM_PARISC = 0xf + EM_PPC = 0x14 + EM_PPC64 = 0x15 + EM_RISCV = 0xf3 + EM_S390 = 0x16 + EM_S390_OLD = 0xa390 + EM_SH = 0x2a + EM_SPARC = 0x2 + EM_SPARC32PLUS = 0x12 + EM_SPARCV9 = 0x2b + EM_SPU = 0x17 + EM_TILEGX = 0xbf + EM_TILEPRO = 0xbc + EM_TI_C6000 = 0x8c + EM_UNICORE = 0x6e + EM_X86_64 = 0x3e + EM_XTENSA = 0x5e ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -710,6 +1064,7 @@ const ( ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be ETH_P_ERSPAN2 = 0x22eb + ETH_P_ETHERCAT = 0x88a4 ETH_P_FCOE = 0x8906 ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 @@ -747,6 +1102,7 @@ const ( ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 ETH_P_PREAUTH = 0x88c7 + ETH_P_PROFINET = 0x8892 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -784,6 +1140,7 @@ const ( EV_SYN = 0x0 EV_VERSION = 0x10001 EXABYTE_ENABLE_NEST = 0xf0 + EXFAT_SUPER_MAGIC = 0x2011bab0 EXT2_SUPER_MAGIC = 0xef53 EXT3_SUPER_MAGIC = 0xef53 EXT4_SUPER_MAGIC = 0xef53 @@ -826,12 +1183,15 @@ const ( FAN_EVENT_INFO_TYPE_DFID_NAME = 0x2 FAN_EVENT_INFO_TYPE_ERROR = 0x5 FAN_EVENT_INFO_TYPE_FID = 0x1 + FAN_EVENT_INFO_TYPE_NEW_DFID_NAME = 0xc + FAN_EVENT_INFO_TYPE_OLD_DFID_NAME = 0xa FAN_EVENT_INFO_TYPE_PIDFD = 0x4 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_FS_ERROR = 0x8000 FAN_MARK_ADD = 0x1 FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_EVICTABLE = 0x200 FAN_MARK_FILESYSTEM = 0x100 FAN_MARK_FLUSH = 0x80 FAN_MARK_IGNORED_MASK = 0x20 @@ -854,17 +1214,27 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_RENAME = 0x10000000 FAN_REPORT_DFID_NAME = 0xc00 + FAN_REPORT_DFID_NAME_TARGET = 0x1e00 FAN_REPORT_DIR_FID = 0x400 FAN_REPORT_FID = 0x200 FAN_REPORT_NAME = 0x800 FAN_REPORT_PIDFD = 0x80 + FAN_REPORT_TARGET_FID = 0x1000 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 FD_CLOEXEC = 0x1 FD_SETSIZE = 0x400 FF0 = 0x0 + FIB_RULE_DEV_DETACHED = 0x8 + FIB_RULE_FIND_SADDR = 0x10000 + FIB_RULE_IIF_DETACHED = 0x8 + FIB_RULE_INVERT = 0x2 + FIB_RULE_OIF_DETACHED = 0x10 + FIB_RULE_PERMANENT = 0x1 + FIB_RULE_UNRESOLVED = 0x4 FIDEDUPERANGE = 0xc0189436 FSCRYPT_KEY_DESCRIPTOR_SIZE = 0x8 FSCRYPT_KEY_DESC_PREFIX = "fscrypt:" @@ -927,6 +1297,7 @@ const ( FS_VERITY_METADATA_TYPE_DESCRIPTOR = 0x2 FS_VERITY_METADATA_TYPE_MERKLE_TREE = 0x1 FS_VERITY_METADATA_TYPE_SIGNATURE = 0x3 + FUSE_SUPER_MAGIC = 0x65735546 FUTEXFS_SUPER_MAGIC = 0xbad1dea F_ADD_SEALS = 0x409 F_DUPFD = 0x0 @@ -1039,7 +1410,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0xa + IFA_MAX = 0xb IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -1294,6 +1665,7 @@ const ( KEXEC_ARCH_ARM = 0x280000 KEXEC_ARCH_DEFAULT = 0x0 KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_LOONGARCH = 0x1020000 KEXEC_ARCH_MASK = 0xffff0000 KEXEC_ARCH_MIPS = 0x80000 KEXEC_ARCH_MIPS_LE = 0xa0000 @@ -1386,6 +1758,7 @@ const ( LANDLOCK_ACCESS_FS_MAKE_SYM = 0x1000 LANDLOCK_ACCESS_FS_READ_DIR = 0x8 LANDLOCK_ACCESS_FS_READ_FILE = 0x4 + LANDLOCK_ACCESS_FS_REFER = 0x2000 LANDLOCK_ACCESS_FS_REMOVE_DIR = 0x10 LANDLOCK_ACCESS_FS_REMOVE_FILE = 0x20 LANDLOCK_ACCESS_FS_WRITE_FILE = 0x2 @@ -1495,6 +1868,7 @@ const ( MNT_DETACH = 0x2 MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 + MODULE_INIT_COMPRESSED_FILE = 0x4 MODULE_INIT_IGNORE_MODVERSIONS = 0x1 MODULE_INIT_IGNORE_VERMAGIC = 0x2 MOUNT_ATTR_IDMAP = 0x100000 @@ -1740,6 +2114,7 @@ const ( NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_BULK = 0x200 NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 @@ -1849,6 +2224,9 @@ const ( PERF_MEM_BLK_NA = 0x1 PERF_MEM_BLK_SHIFT = 0x28 PERF_MEM_HOPS_0 = 0x1 + PERF_MEM_HOPS_1 = 0x2 + PERF_MEM_HOPS_2 = 0x3 + PERF_MEM_HOPS_3 = 0x4 PERF_MEM_HOPS_SHIFT = 0x2b PERF_MEM_LOCK_LOCKED = 0x2 PERF_MEM_LOCK_NA = 0x1 @@ -2052,6 +2430,13 @@ const ( PR_SET_TIMING = 0xe PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 + PR_SET_VMA = 0x53564d41 + PR_SET_VMA_ANON_NAME = 0x0 + PR_SME_GET_VL = 0x40 + PR_SME_SET_VL = 0x3f + PR_SME_SET_VL_ONEXEC = 0x40000 + PR_SME_VL_INHERIT = 0x20000 + PR_SME_VL_LEN_MASK = 0xffff PR_SPEC_DISABLE = 0x4 PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 @@ -2204,8 +2589,9 @@ const ( RTC_FEATURE_ALARM = 0x0 RTC_FEATURE_ALARM_RES_2S = 0x3 RTC_FEATURE_ALARM_RES_MINUTE = 0x1 + RTC_FEATURE_ALARM_WAKEUP_ONLY = 0x7 RTC_FEATURE_BACKUP_SWITCH_MODE = 0x6 - RTC_FEATURE_CNT = 0x7 + RTC_FEATURE_CNT = 0x8 RTC_FEATURE_CORRECTION = 0x5 RTC_FEATURE_NEED_WEEK_DAY = 0x2 RTC_FEATURE_UPDATE_INTERRUPT = 0x4 @@ -2279,6 +2665,7 @@ const ( RTM_DELRULE = 0x21 RTM_DELTCLASS = 0x29 RTM_DELTFILTER = 0x2d + RTM_DELTUNNEL = 0x79 RTM_DELVLAN = 0x71 RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 @@ -2311,8 +2698,9 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e + RTM_GETTUNNEL = 0x7a RTM_GETVLAN = 0x72 - RTM_MAX = 0x77 + RTM_MAX = 0x7b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -2336,11 +2724,13 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x1a - RTM_NR_MSGTYPES = 0x68 + RTM_NEWTUNNEL = 0x78 + RTM_NR_FAMILIES = 0x1b + RTM_NR_MSGTYPES = 0x6c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 + RTM_SETSTATS = 0x5f RTNH_ALIGNTO = 0x4 RTNH_COMPARE_MASK = 0x59 RTNH_F_DEAD = 0x1 @@ -2509,6 +2899,7 @@ const ( SMART_STATUS = 0xda SMART_WRITE_LOG_SECTOR = 0xd6 SMART_WRITE_THRESHOLDS = 0xd7 + SMB2_SUPER_MAGIC = 0xfe534d42 SMB_SUPER_MAGIC = 0x517b SOCKFS_MAGIC = 0x534f434b SOCK_BUF_LOCK_MASK = 0x3 @@ -2520,6 +2911,9 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_SNDBUF_LOCK = 0x1 + SOCK_TXREHASH_DEFAULT = 0xff + SOCK_TXREHASH_DISABLED = 0x0 + SOCK_TXREHASH_ENABLED = 0x1 SOL_AAL = 0x109 SOL_ALG = 0x117 SOL_ATM = 0x108 @@ -2535,6 +2929,8 @@ const ( SOL_IUCV = 0x115 SOL_KCM = 0x119 SOL_LLC = 0x10c + SOL_MCTP = 0x11d + SOL_MPTCP = 0x11c SOL_NETBEUI = 0x10b SOL_NETLINK = 0x10e SOL_NFC = 0x118 @@ -2544,6 +2940,7 @@ const ( SOL_RAW = 0xff SOL_RDS = 0x114 SOL_RXRPC = 0x110 + SOL_SMC = 0x11e SOL_TCP = 0x6 SOL_TIPC = 0x10f SOL_TLS = 0x11a @@ -2650,7 +3047,7 @@ const ( TASKSTATS_GENL_NAME = "TASKSTATS" TASKSTATS_GENL_VERSION = 0x1 TASKSTATS_TYPE_MAX = 0x6 - TASKSTATS_VERSION = 0xa + TASKSTATS_VERSION = 0xd TCIFLUSH = 0x0 TCIOFF = 0x2 TCIOFLUSH = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 234fd4a5d..36c0dfc7c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include -m32 +// mkerrors.sh -Wall -Werror -static -I/tmp/386/include -m32 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && linux // +build 386,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/386/include -m32 _const.go package unix @@ -326,6 +326,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -350,6 +351,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index 58619b758..4ff942703 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include -m64 +// mkerrors.sh -Wall -Werror -static -I/tmp/amd64/include -m64 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && linux // +build amd64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/amd64/include -m64 _const.go package unix @@ -327,6 +327,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -351,6 +352,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index 3a64ff59d..3eaa0fb78 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/arm/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && linux // +build arm,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/arm/include _const.go package unix @@ -333,6 +333,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -357,6 +358,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index abe0b9257..d7995bdc3 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// mkerrors.sh -Wall -Werror -static -I/tmp/arm64/include -fsigned-char // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && linux // +build arm64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char _const.go package unix @@ -323,6 +323,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -347,6 +348,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 @@ -511,6 +513,7 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + ZA_MAGIC = 0x54366345 _HIDIOCGRAWNAME = 0x80804804 _HIDIOCGRAWPHYS = 0x80404805 _HIDIOCGRAWUNIQ = 0x80404808 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go new file mode 100644 index 000000000..928e24c20 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -0,0 +1,818 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/loong64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux +// +build loong64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/loong64/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FPU_CTX_MAGIC = 0x46505501 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 14d7a8439..179bffb47 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/mips/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips && linux // +build mips,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips/include _const.go package unix @@ -326,6 +326,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 @@ -351,6 +352,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 99e7c4ac0..1fba17bd7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/mips64/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && linux // +build mips64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64/include _const.go package unix @@ -326,6 +326,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 @@ -351,6 +352,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 496364c33..b77dde315 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/mips64le/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64le && linux // +build mips64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64le/include _const.go package unix @@ -326,6 +326,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 @@ -351,6 +352,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 3e4083085..78c6c751b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/mipsle/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mipsle && linux // +build mipsle,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/mipsle/include _const.go package unix @@ -326,6 +326,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 @@ -351,6 +352,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index 1151a7dfa..1c0d31f0b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && linux // +build ppc,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc/include _const.go package unix @@ -381,6 +381,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 @@ -405,6 +406,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index ed17f249e..959dd9bb8 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && linux // +build ppc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64/include _const.go package unix @@ -385,6 +385,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 @@ -409,6 +410,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index d84a37c1a..5a873cdbc 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64le/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64le && linux // +build ppc64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64le/include _const.go package unix @@ -385,6 +385,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 @@ -409,6 +410,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 5cafba83f..e336d141e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/riscv64/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && linux // +build riscv64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/riscv64/include _const.go package unix @@ -314,6 +314,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -338,6 +339,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 6d122da41..390c01d92 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// mkerrors.sh -Wall -Werror -static -I/tmp/s390x/include -fsigned-char // Code generated by the command above; see README.md. DO NOT EDIT. //go:build s390x && linux // +build s390x,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char _const.go package unix @@ -389,6 +389,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -413,6 +414,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index 6bd19e51d..98a6e5f11 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -1,11 +1,11 @@ -// mkerrors.sh -Wall -Werror -static -I/tmp/include +// mkerrors.sh -Wall -Werror -static -I/tmp/sparc64/include // Code generated by the command above; see README.md. DO NOT EDIT. //go:build sparc64 && linux // +build sparc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/sparc64/include _const.go package unix @@ -380,6 +380,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x100b SO_RCVLOWAT = 0x800 + SO_RCVMARK = 0x54 SO_RCVTIMEO = 0x2000 SO_RCVTIMEO_NEW = 0x44 SO_RCVTIMEO_OLD = 0x2000 @@ -404,6 +405,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x42 SO_TIMESTAMPNS_OLD = 0x21 SO_TIMESTAMP_NEW = 0x46 + SO_TXREHASH = 0x53 SO_TXTIME = 0x3f SO_TYPE = 0x1008 SO_WIFI_STATUS = 0x25 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s index d6c3e25c0..f5bb40eda 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s @@ -1,4 +1,4 @@ -// go run mkasm_darwin.go amd64 +// go run mkasm.go darwin amd64 // Code generated by the command above; DO NOT EDIT. //go:build go1.13 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 879376589..467deed76 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -1643,6 +1643,30 @@ var libc_mknod_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Open(path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index 8da90cf0e..b41467a0e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -1,4 +1,4 @@ -// go run mkasm_darwin.go amd64 +// go run mkasm.go darwin amd64 // Code generated by the command above; DO NOT EDIT. //go:build go1.12 @@ -600,6 +600,12 @@ TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) + +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_open(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s index 357989722..0c3f76bc2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s @@ -1,4 +1,4 @@ -// go run mkasm_darwin.go arm64 +// go run mkasm.go darwin arm64 // Code generated by the command above; DO NOT EDIT. //go:build go1.13 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index f47eedd5a..35938d34f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -1643,6 +1643,30 @@ var libc_mknod_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Open(path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index 4d26f7d01..e1f9204a2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -1,4 +1,4 @@ -// go run mkasm_darwin.go arm64 +// go run mkasm.go darwin arm64 // Code generated by the command above; DO NOT EDIT. //go:build go1.12 @@ -600,6 +600,12 @@ TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) + +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_open(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index e9d9997ee..039c4aa06 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat(fd int, stat *stat_freebsd11_t) (err error) { +func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -922,17 +922,7 @@ func fstat(fd int, stat *stat_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat_freebsd12(fd int, stat *Stat_t) (err error) { - _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -947,22 +937,7 @@ func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { +func Fstatfs(fd int, stat *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -972,16 +947,6 @@ func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1002,7 +967,7 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1019,23 +984,6 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getdtablesize() (size int) { r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) size = int(r0) @@ -1257,21 +1205,6 @@ func Listen(s int, backlog int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func lstat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mkdir(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1317,43 +1250,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknod(path string, mode uint32, dev int) (err error) { +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat(fd int, path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0) + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0) if e1 != 0 { err = errnoErr(e1) } @@ -1753,22 +1656,7 @@ func Setuid(uid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func stat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func statfs(path string, stat *statfs_freebsd11_t) (err error) { +func Statfs(path string, stat *Statfs_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1783,21 +1671,6 @@ func statfs(path string, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func statfs_freebsd12(path string, stat *Statfs_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Symlink(path string, link string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index edd373b1a..0535d3cfd 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat(fd int, stat *stat_freebsd11_t) (err error) { +func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -922,17 +922,7 @@ func fstat(fd int, stat *stat_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat_freebsd12(fd int, stat *Stat_t) (err error) { - _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -947,22 +937,7 @@ func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { +func Fstatfs(fd int, stat *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -972,16 +947,6 @@ func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1002,7 +967,7 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1019,23 +984,6 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getdtablesize() (size int) { r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) size = int(r0) @@ -1257,21 +1205,6 @@ func Listen(s int, backlog int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func lstat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mkdir(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1317,22 +1250,7 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknod(path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat(fd int, path string, mode uint32, dev int) (err error) { +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1347,21 +1265,6 @@ func mknodat(fd int, path string, mode uint32, dev int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { @@ -1753,22 +1656,7 @@ func Setuid(uid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func stat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func statfs(path string, stat *statfs_freebsd11_t) (err error) { +func Statfs(path string, stat *Statfs_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1783,21 +1671,6 @@ func statfs(path string, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func statfs_freebsd12(path string, stat *Statfs_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Symlink(path string, link string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index 82e9764b2..1018b5221 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -351,22 +351,6 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { @@ -404,6 +388,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data int) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat(fd int, stat *stat_freebsd11_t) (err error) { +func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -922,17 +922,7 @@ func fstat(fd int, stat *stat_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat_freebsd12(fd int, stat *Stat_t) (err error) { - _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -947,22 +937,7 @@ func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { +func Fstatfs(fd int, stat *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -972,16 +947,6 @@ func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1002,7 +967,7 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1019,23 +984,6 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getdtablesize() (size int) { r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) size = int(r0) @@ -1257,21 +1205,6 @@ func Listen(s int, backlog int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func lstat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mkdir(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1317,43 +1250,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknod(path string, mode uint32, dev int) (err error) { +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat(fd int, path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, uintptr(dev), uintptr(dev>>32)) if e1 != 0 { err = errnoErr(e1) } @@ -1753,22 +1656,7 @@ func Setuid(uid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func stat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func statfs(path string, stat *statfs_freebsd11_t) (err error) { +func Statfs(path string, stat *Statfs_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1783,21 +1671,6 @@ func statfs(path string, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func statfs_freebsd12(path string, stat *Statfs_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Symlink(path string, link string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go index a6479acd1..3802f4b37 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat(fd int, stat *stat_freebsd11_t) (err error) { +func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -922,17 +922,7 @@ func fstat(fd int, stat *stat_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat_freebsd12(fd int, stat *Stat_t) (err error) { - _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -947,22 +937,7 @@ func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { +func Fstatfs(fd int, stat *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -972,16 +947,6 @@ func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1002,7 +967,7 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1019,23 +984,6 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getdtablesize() (size int) { r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) size = int(r0) @@ -1257,21 +1205,6 @@ func Listen(s int, backlog int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func lstat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mkdir(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1317,22 +1250,7 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknod(path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat(fd int, path string, mode uint32, dev int) (err error) { +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1347,21 +1265,6 @@ func mknodat(fd int, path string, mode uint32, dev int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { @@ -1753,22 +1656,7 @@ func Setuid(uid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func stat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func statfs(path string, stat *statfs_freebsd11_t) (err error) { +func Statfs(path string, stat *Statfs_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1783,21 +1671,6 @@ func statfs(path string, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func statfs_freebsd12(path string, stat *Statfs_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Symlink(path string, link string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go new file mode 100644 index 000000000..8a2db7da9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go @@ -0,0 +1,1889 @@ +// go run mksyscall.go -tags freebsd,riscv64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && riscv64 +// +build freebsd,riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 78d74520b..bc4a27531 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -828,6 +828,49 @@ func Fsync(fd int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) { + r0, _, e1 := Syscall(SYS_FSMOUNT, uintptr(fd), uintptr(flags), uintptr(mountAttrs)) + fsfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsopen(fsName string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsName) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_FSOPEN, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fspick(dirfd int, pathName string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathName) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_FSPICK, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -1205,6 +1248,26 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fromPathName) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(toPathName) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOVE_MOUNT, uintptr(fromDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(toDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { @@ -1215,6 +1278,22 @@ func Nanosleep(time *Timespec, leftover *Timespec) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func OpenTree(dfd int, fileName string, flags uint) (r int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fileName) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN_TREE, uintptr(dfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + r = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) fd = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index c947a4d10..2a0c4aa6a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -215,6 +215,17 @@ func Listen(s int, n int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func MemfdSecret(flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Pause() (err error) { _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index dd15284d8..9f8c24e43 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -180,6 +180,17 @@ func Listen(s int, n int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func MemfdSecret(flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pread(fd int, p []byte, offset int64) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go new file mode 100644 index 000000000..523f2ba03 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go @@ -0,0 +1,527 @@ +// go run mksyscall.go -tags linux,loong64 syscall_linux.go syscall_linux_loong64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && loong64 +// +build linux,loong64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go index a1a9bcbbd..1239cc2de 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -180,6 +180,17 @@ func Listen(s int, n int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func MemfdSecret(flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pread(fd int, p []byte, offset int64) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index d12f4fbfe..fdf53f8da 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -66,6 +66,7 @@ import ( //go:cgo_import_dynamic libc_getpriority getpriority "libc.so" //go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" //go:cgo_import_dynamic libc_getrusage getrusage "libc.so" +//go:cgo_import_dynamic libc_getsid getsid "libc.so" //go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" //go:cgo_import_dynamic libc_getuid getuid "libc.so" //go:cgo_import_dynamic libc_kill kill "libc.so" @@ -202,6 +203,7 @@ import ( //go:linkname procGetpriority libc_getpriority //go:linkname procGetrlimit libc_getrlimit //go:linkname procGetrusage libc_getrusage +//go:linkname procGetsid libc_getsid //go:linkname procGettimeofday libc_gettimeofday //go:linkname procGetuid libc_getuid //go:linkname procKill libc_kill @@ -339,6 +341,7 @@ var ( procGetpriority, procGetrlimit, procGetrusage, + procGetsid, procGettimeofday, procGetuid, procKill, @@ -1044,6 +1047,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + sid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go index 59d5dfc20..4e0d96107 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && freebsd @@ -19,10 +19,9 @@ const ( SYS_UNLINK = 10 // { int unlink(char *path); } SYS_CHDIR = 12 // { int chdir(char *path); } SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } SYS_CHMOD = 15 // { int chmod(char *path, int mode); } SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_BREAK = 17 // { caddr_t break(char *nsize); } SYS_GETPID = 20 // { pid_t getpid(void); } SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } @@ -43,7 +42,6 @@ const ( SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } @@ -58,15 +56,14 @@ const ( SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_UMASK = 60 // { int umask(int newmask); } SYS_CHROOT = 61 // { int chroot(char *path); } SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } SYS_VFORK = 66 // { int vfork(void); } SYS_SBRK = 69 // { int sbrk(int incr); } SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } @@ -124,14 +121,10 @@ const ( SYS_SETGID = 181 // { int setgid(gid_t gid); } SYS_SETEGID = 182 // { int setegid(gid_t egid); } SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -143,12 +136,12 @@ const ( SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } - SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } - SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } @@ -157,50 +150,44 @@ const ( SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } SYS_ISSETUGID = 253 // { int issetugid(void); } SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } - SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } SYS_MODFNEXT = 302 // { int modfnext(int modid); } SYS_MODFIND = 303 // { int modfind(const char *name); } SYS_KLDLOAD = 304 // { int kldload(const char *file); } SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } SYS_KLDFIND = 306 // { int kldfind(const char *file); } SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } - SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } @@ -226,14 +213,13 @@ const ( SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } @@ -251,10 +237,6 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } - SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } @@ -267,14 +249,14 @@ const ( SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } - SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } SYS_SWAPOFF = 424 // { int swapoff(const char *name); } SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } @@ -288,10 +270,10 @@ const ( SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } - SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } SYS_THR_WAKE = 443 // { int thr_wake(long id); } SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } @@ -300,17 +282,17 @@ const ( SYS_SETAUID = 448 // { int setauid(uid_t *auid); } SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } SYS_AUDITCTL = 453 // { int auditctl(char *path); } SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } - SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } - SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } - SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} - SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } @@ -319,7 +301,7 @@ const ( SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } @@ -338,14 +320,12 @@ const ( SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } @@ -391,7 +371,24 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } - SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } - SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go index 342d471d2..01636b838 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && freebsd @@ -19,10 +19,9 @@ const ( SYS_UNLINK = 10 // { int unlink(char *path); } SYS_CHDIR = 12 // { int chdir(char *path); } SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } SYS_CHMOD = 15 // { int chmod(char *path, int mode); } SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_BREAK = 17 // { caddr_t break(char *nsize); } SYS_GETPID = 20 // { pid_t getpid(void); } SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } @@ -43,7 +42,6 @@ const ( SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } @@ -58,15 +56,14 @@ const ( SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_UMASK = 60 // { int umask(int newmask); } SYS_CHROOT = 61 // { int chroot(char *path); } SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } SYS_VFORK = 66 // { int vfork(void); } SYS_SBRK = 69 // { int sbrk(int incr); } SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } @@ -124,14 +121,10 @@ const ( SYS_SETGID = 181 // { int setgid(gid_t gid); } SYS_SETEGID = 182 // { int setegid(gid_t egid); } SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -143,12 +136,12 @@ const ( SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } - SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } - SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } @@ -157,50 +150,44 @@ const ( SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } SYS_ISSETUGID = 253 // { int issetugid(void); } SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } - SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } SYS_MODFNEXT = 302 // { int modfnext(int modid); } SYS_MODFIND = 303 // { int modfind(const char *name); } SYS_KLDLOAD = 304 // { int kldload(const char *file); } SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } SYS_KLDFIND = 306 // { int kldfind(const char *file); } SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } - SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } @@ -226,14 +213,13 @@ const ( SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } @@ -251,10 +237,6 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } - SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } @@ -267,14 +249,14 @@ const ( SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } - SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } SYS_SWAPOFF = 424 // { int swapoff(const char *name); } SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } @@ -288,10 +270,10 @@ const ( SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } - SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } SYS_THR_WAKE = 443 // { int thr_wake(long id); } SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } @@ -300,17 +282,17 @@ const ( SYS_SETAUID = 448 // { int setauid(uid_t *auid); } SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } SYS_AUDITCTL = 453 // { int auditctl(char *path); } SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } - SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } - SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } - SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} - SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } @@ -319,7 +301,7 @@ const ( SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } @@ -338,14 +320,12 @@ const ( SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } @@ -391,7 +371,24 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } - SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } - SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go index e2e3d72c5..ad99bc106 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && freebsd @@ -19,10 +19,9 @@ const ( SYS_UNLINK = 10 // { int unlink(char *path); } SYS_CHDIR = 12 // { int chdir(char *path); } SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } SYS_CHMOD = 15 // { int chmod(char *path, int mode); } SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_BREAK = 17 // { caddr_t break(char *nsize); } SYS_GETPID = 20 // { pid_t getpid(void); } SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } @@ -43,7 +42,6 @@ const ( SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } @@ -58,15 +56,14 @@ const ( SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_UMASK = 60 // { int umask(int newmask); } SYS_CHROOT = 61 // { int chroot(char *path); } SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } SYS_VFORK = 66 // { int vfork(void); } SYS_SBRK = 69 // { int sbrk(int incr); } SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } @@ -124,14 +121,10 @@ const ( SYS_SETGID = 181 // { int setgid(gid_t gid); } SYS_SETEGID = 182 // { int setegid(gid_t egid); } SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -143,12 +136,12 @@ const ( SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } - SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } - SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } @@ -157,50 +150,44 @@ const ( SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } SYS_ISSETUGID = 253 // { int issetugid(void); } SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } - SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } SYS_MODFNEXT = 302 // { int modfnext(int modid); } SYS_MODFIND = 303 // { int modfind(const char *name); } SYS_KLDLOAD = 304 // { int kldload(const char *file); } SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } SYS_KLDFIND = 306 // { int kldfind(const char *file); } SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } - SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } @@ -226,14 +213,13 @@ const ( SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } @@ -251,10 +237,6 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } - SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } @@ -267,14 +249,14 @@ const ( SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } - SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } SYS_SWAPOFF = 424 // { int swapoff(const char *name); } SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } @@ -288,10 +270,10 @@ const ( SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } - SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } SYS_THR_WAKE = 443 // { int thr_wake(long id); } SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } @@ -300,17 +282,17 @@ const ( SYS_SETAUID = 448 // { int setauid(uid_t *auid); } SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } SYS_AUDITCTL = 453 // { int auditctl(char *path); } SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } - SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } - SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } - SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} - SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } @@ -319,7 +301,7 @@ const ( SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } @@ -338,14 +320,12 @@ const ( SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } @@ -391,7 +371,24 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } - SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } - SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go index 61ad5ca3c..89dcc4274 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && freebsd @@ -19,10 +19,9 @@ const ( SYS_UNLINK = 10 // { int unlink(char *path); } SYS_CHDIR = 12 // { int chdir(char *path); } SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } SYS_CHMOD = 15 // { int chmod(char *path, int mode); } SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_BREAK = 17 // { caddr_t break(char *nsize); } SYS_GETPID = 20 // { pid_t getpid(void); } SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } @@ -43,7 +42,6 @@ const ( SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } @@ -58,15 +56,14 @@ const ( SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_UMASK = 60 // { int umask(int newmask); } SYS_CHROOT = 61 // { int chroot(char *path); } SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } SYS_VFORK = 66 // { int vfork(void); } SYS_SBRK = 69 // { int sbrk(int incr); } SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } @@ -124,14 +121,10 @@ const ( SYS_SETGID = 181 // { int setgid(gid_t gid); } SYS_SETEGID = 182 // { int setegid(gid_t egid); } SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -143,12 +136,12 @@ const ( SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } - SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } - SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } @@ -157,50 +150,44 @@ const ( SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } SYS_ISSETUGID = 253 // { int issetugid(void); } SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } - SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } SYS_MODFNEXT = 302 // { int modfnext(int modid); } SYS_MODFIND = 303 // { int modfind(const char *name); } SYS_KLDLOAD = 304 // { int kldload(const char *file); } SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } SYS_KLDFIND = 306 // { int kldfind(const char *file); } SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } - SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } @@ -226,14 +213,13 @@ const ( SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } @@ -251,10 +237,6 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } - SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } @@ -267,14 +249,14 @@ const ( SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } - SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } SYS_SWAPOFF = 424 // { int swapoff(const char *name); } SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } @@ -288,10 +270,10 @@ const ( SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } - SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } SYS_THR_WAKE = 443 // { int thr_wake(long id); } SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } @@ -300,17 +282,17 @@ const ( SYS_SETAUID = 448 // { int setauid(uid_t *auid); } SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } SYS_AUDITCTL = 453 // { int auditctl(char *path); } SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } - SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } - SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } - SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} - SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } @@ -319,7 +301,7 @@ const ( SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } @@ -338,14 +320,12 @@ const ( SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } @@ -391,7 +371,24 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } - SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } - SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go new file mode 100644 index 000000000..ee37aaa0c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go @@ -0,0 +1,394 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd +// +build riscv64,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index cac1f758b..c9c4ad031 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/386/include -m32 /tmp/386/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && linux @@ -446,4 +446,5 @@ const ( SYS_MEMFD_SECRET = 447 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index f327e4a0b..12ff3417c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/amd64/include -m64 /tmp/amd64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && linux @@ -368,4 +368,5 @@ const ( SYS_MEMFD_SECRET = 447 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index fb06a08d4..c3fb5e77a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm/include /tmp/arm/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && linux @@ -410,4 +410,5 @@ const ( SYS_LANDLOCK_RESTRICT_SELF = 446 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index 58285646e..358c847a4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm64/include -fsigned-char /tmp/arm64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && linux @@ -313,4 +313,5 @@ const ( SYS_MEMFD_SECRET = 447 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go new file mode 100644 index 000000000..81c4849b1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -0,0 +1,311 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/loong64/include /tmp/loong64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux +// +build loong64,linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index 3b0418e68..202a57e90 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips/include /tmp/mips/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips && linux @@ -430,4 +430,5 @@ const ( SYS_LANDLOCK_RESTRICT_SELF = 4446 SYS_PROCESS_MRELEASE = 4448 SYS_FUTEX_WAITV = 4449 + SYS_SET_MEMPOLICY_HOME_NODE = 4450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 314ebf166..1fbceb52d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64/include /tmp/mips64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && linux @@ -360,4 +360,5 @@ const ( SYS_LANDLOCK_RESTRICT_SELF = 5446 SYS_PROCESS_MRELEASE = 5448 SYS_FUTEX_WAITV = 5449 + SYS_SET_MEMPOLICY_HOME_NODE = 5450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index b8fbb937a..b4ffb7a20 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64le/include /tmp/mips64le/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64le && linux @@ -360,4 +360,5 @@ const ( SYS_LANDLOCK_RESTRICT_SELF = 5446 SYS_PROCESS_MRELEASE = 5448 SYS_FUTEX_WAITV = 5449 + SYS_SET_MEMPOLICY_HOME_NODE = 5450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index ee309b2ba..867985f9b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mipsle/include /tmp/mipsle/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mipsle && linux @@ -430,4 +430,5 @@ const ( SYS_LANDLOCK_RESTRICT_SELF = 4446 SYS_PROCESS_MRELEASE = 4448 SYS_FUTEX_WAITV = 4449 + SYS_SET_MEMPOLICY_HOME_NODE = 4450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go index ac3748104..a8cce69ed 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc/include /tmp/ppc/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && linux @@ -437,4 +437,5 @@ const ( SYS_LANDLOCK_RESTRICT_SELF = 446 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index 5aa472111..d44c5b39d 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64/include /tmp/ppc64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && linux @@ -409,4 +409,5 @@ const ( SYS_LANDLOCK_RESTRICT_SELF = 446 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 0793ac1a6..4214dd9c0 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64le/include /tmp/ppc64le/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64le && linux @@ -409,4 +409,5 @@ const ( SYS_LANDLOCK_RESTRICT_SELF = 446 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index a520962e3..3e594a8c0 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/riscv64/include /tmp/riscv64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && linux @@ -309,6 +309,8 @@ const ( SYS_LANDLOCK_CREATE_RULESET = 444 SYS_LANDLOCK_ADD_RULE = 445 SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index d1738586b..7ea465204 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/s390x/include -fsigned-char /tmp/s390x/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build s390x && linux @@ -374,4 +374,5 @@ const ( SYS_LANDLOCK_RESTRICT_SELF = 446 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index dfd5660f9..92f628ef4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -1,4 +1,4 @@ -// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/sparc64/include /tmp/sparc64/include/asm/unistd.h // Code generated by the command above; see README.md. DO NOT EDIT. //go:build sparc64 && linux @@ -388,4 +388,5 @@ const ( SYS_LANDLOCK_RESTRICT_SELF = 446 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index 885842c0e..e2a64f099 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -366,30 +366,57 @@ type ICMPv6Filter struct { Filt [8]uint32 } +type TCPConnectionInfo struct { + State uint8 + Snd_wscale uint8 + Rcv_wscale uint8 + _ uint8 + Options uint32 + Flags uint32 + Rto uint32 + Maxseg uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Snd_wnd uint32 + Snd_sbbytes uint32 + Rcv_wnd uint32 + Rttcur uint32 + Srtt uint32 + Rttvar uint32 + Txpackets uint64 + Txbytes uint64 + Txretransmitbytes uint64 + Rxpackets uint64 + Rxbytes uint64 + Rxoutoforderbytes uint64 + Txretransmitpackets uint64 +} + const ( - SizeofSockaddrInet4 = 0x10 - SizeofSockaddrInet6 = 0x1c - SizeofSockaddrAny = 0x6c - SizeofSockaddrUnix = 0x6a - SizeofSockaddrDatalink = 0x14 - SizeofSockaddrCtl = 0x20 - SizeofSockaddrVM = 0xc - SizeofXvsockpcb = 0xa8 - SizeofXSocket = 0x64 - SizeofXSockbuf = 0x18 - SizeofXVSockPgen = 0x20 - SizeofXucred = 0x4c - SizeofLinger = 0x8 - SizeofIovec = 0x10 - SizeofIPMreq = 0x8 - SizeofIPMreqn = 0xc - SizeofIPv6Mreq = 0x14 - SizeofMsghdr = 0x30 - SizeofCmsghdr = 0xc - SizeofInet4Pktinfo = 0xc - SizeofInet6Pktinfo = 0x14 - SizeofIPv6MTUInfo = 0x20 - SizeofICMPv6Filter = 0x20 + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofSockaddrCtl = 0x20 + SizeofSockaddrVM = 0xc + SizeofXvsockpcb = 0xa8 + SizeofXSocket = 0x64 + SizeofXSockbuf = 0x18 + SizeofXVSockPgen = 0x20 + SizeofXucred = 0x4c + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofTCPConnectionInfo = 0x70 ) const ( diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index b23c02337..34aa77521 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -366,30 +366,57 @@ type ICMPv6Filter struct { Filt [8]uint32 } +type TCPConnectionInfo struct { + State uint8 + Snd_wscale uint8 + Rcv_wscale uint8 + _ uint8 + Options uint32 + Flags uint32 + Rto uint32 + Maxseg uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Snd_wnd uint32 + Snd_sbbytes uint32 + Rcv_wnd uint32 + Rttcur uint32 + Srtt uint32 + Rttvar uint32 + Txpackets uint64 + Txbytes uint64 + Txretransmitbytes uint64 + Rxpackets uint64 + Rxbytes uint64 + Rxoutoforderbytes uint64 + Txretransmitpackets uint64 +} + const ( - SizeofSockaddrInet4 = 0x10 - SizeofSockaddrInet6 = 0x1c - SizeofSockaddrAny = 0x6c - SizeofSockaddrUnix = 0x6a - SizeofSockaddrDatalink = 0x14 - SizeofSockaddrCtl = 0x20 - SizeofSockaddrVM = 0xc - SizeofXvsockpcb = 0xa8 - SizeofXSocket = 0x64 - SizeofXSockbuf = 0x18 - SizeofXVSockPgen = 0x20 - SizeofXucred = 0x4c - SizeofLinger = 0x8 - SizeofIovec = 0x10 - SizeofIPMreq = 0x8 - SizeofIPMreqn = 0xc - SizeofIPv6Mreq = 0x14 - SizeofMsghdr = 0x30 - SizeofCmsghdr = 0xc - SizeofInet4Pktinfo = 0xc - SizeofInet6Pktinfo = 0x14 - SizeofIPv6MTUInfo = 0x20 - SizeofICMPv6Filter = 0x20 + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofSockaddrCtl = 0x20 + SizeofSockaddrVM = 0xc + SizeofXvsockpcb = 0xa8 + SizeofXSocket = 0x64 + SizeofXSockbuf = 0x18 + SizeofXVSockPgen = 0x20 + SizeofXucred = 0x4c + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofTCPConnectionInfo = 0x70 ) const ( diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 4eec078e5..dea0c9a60 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -90,27 +90,6 @@ type Stat_t struct { Spare [10]uint64 } -type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Btim Timespec - _ [8]byte -} - type Statfs_t struct { Version uint32 Type uint32 @@ -136,31 +115,6 @@ type Statfs_t struct { Mntonname [1024]byte } -type statfs_freebsd11_t struct { - Version uint32 - Type uint32 - Flags uint64 - Bsize uint64 - Iosize uint64 - Blocks uint64 - Bfree uint64 - Bavail int64 - Files uint64 - Ffree int64 - Syncwrites uint64 - Asyncwrites uint64 - Syncreads uint64 - Asyncreads uint64 - Spare [10]uint64 - Namemax uint32 - Owner uint32 - Fsid Fsid - Charspare [80]int8 - Fstypename [16]byte - Mntfromname [88]byte - Mntonname [88]byte -} - type Flock_t struct { Start int64 Len int64 @@ -181,14 +135,6 @@ type Dirent struct { Name [256]int8 } -type dirent_freebsd11 struct { - Fileno uint32 - Reclen uint16 - Type uint8 - Namlen uint8 - Name [256]int8 -} - type Fsid struct { Val [2]int32 } @@ -337,41 +283,9 @@ const ( ) const ( - PTRACE_ATTACH = 0xa - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0xb - PTRACE_GETFPREGS = 0x23 - PTRACE_GETFSBASE = 0x47 - PTRACE_GETLWPLIST = 0xf - PTRACE_GETNUMLWPS = 0xe - PTRACE_GETREGS = 0x21 - PTRACE_GETXSTATE = 0x45 - PTRACE_IO = 0xc - PTRACE_KILL = 0x8 - PTRACE_LWPEVENTS = 0x18 - PTRACE_LWPINFO = 0xd - PTRACE_SETFPREGS = 0x24 - PTRACE_SETREGS = 0x22 - PTRACE_SINGLESTEP = 0x9 - PTRACE_TRACEME = 0x0 -) - -const ( - PIOD_READ_D = 0x1 - PIOD_WRITE_D = 0x2 - PIOD_READ_I = 0x3 - PIOD_WRITE_I = 0x4 -) - -const ( - PL_FLAG_BORN = 0x100 - PL_FLAG_EXITED = 0x200 - PL_FLAG_SI = 0x20 -) - -const ( - TRAP_BRKPT = 0x1 - TRAP_TRACE = 0x2 + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 ) type PtraceLwpInfoStruct struct { @@ -432,6 +346,8 @@ type FpReg struct { Pad [64]uint8 } +type FpExtendedPrecision struct{} + type PtraceIoDesc struct { Op int32 Offs *byte @@ -444,8 +360,9 @@ type Kevent_t struct { Filter int16 Flags uint16 Fflags uint32 - Data int32 + Data int64 Udata *byte + Ext [4]uint64 } type FdSet struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index 7622904a5..da0ea0d60 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -86,26 +86,6 @@ type Stat_t struct { Spare [10]uint64 } -type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Btim Timespec -} - type Statfs_t struct { Version uint32 Type uint32 @@ -131,31 +111,6 @@ type Statfs_t struct { Mntonname [1024]byte } -type statfs_freebsd11_t struct { - Version uint32 - Type uint32 - Flags uint64 - Bsize uint64 - Iosize uint64 - Blocks uint64 - Bfree uint64 - Bavail int64 - Files uint64 - Ffree int64 - Syncwrites uint64 - Asyncwrites uint64 - Syncreads uint64 - Asyncreads uint64 - Spare [10]uint64 - Namemax uint32 - Owner uint32 - Fsid Fsid - Charspare [80]int8 - Fstypename [16]byte - Mntfromname [88]byte - Mntonname [88]byte -} - type Flock_t struct { Start int64 Len int64 @@ -177,14 +132,6 @@ type Dirent struct { Name [256]int8 } -type dirent_freebsd11 struct { - Fileno uint32 - Reclen uint16 - Type uint8 - Namlen uint8 - Name [256]int8 -} - type Fsid struct { Val [2]int32 } @@ -333,41 +280,9 @@ const ( ) const ( - PTRACE_ATTACH = 0xa - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0xb - PTRACE_GETFPREGS = 0x23 - PTRACE_GETFSBASE = 0x47 - PTRACE_GETLWPLIST = 0xf - PTRACE_GETNUMLWPS = 0xe - PTRACE_GETREGS = 0x21 - PTRACE_GETXSTATE = 0x45 - PTRACE_IO = 0xc - PTRACE_KILL = 0x8 - PTRACE_LWPEVENTS = 0x18 - PTRACE_LWPINFO = 0xd - PTRACE_SETFPREGS = 0x24 - PTRACE_SETREGS = 0x22 - PTRACE_SINGLESTEP = 0x9 - PTRACE_TRACEME = 0x0 -) - -const ( - PIOD_READ_D = 0x1 - PIOD_WRITE_D = 0x2 - PIOD_READ_I = 0x3 - PIOD_WRITE_I = 0x4 -) - -const ( - PL_FLAG_BORN = 0x100 - PL_FLAG_EXITED = 0x200 - PL_FLAG_SI = 0x20 -) - -const ( - TRAP_BRKPT = 0x1 - TRAP_TRACE = 0x2 + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 ) type PtraceLwpInfoStruct struct { @@ -435,6 +350,8 @@ type FpReg struct { Spare [12]uint64 } +type FpExtendedPrecision struct{} + type PtraceIoDesc struct { Op int32 Offs *byte @@ -449,6 +366,7 @@ type Kevent_t struct { Fflags uint32 Data int64 Udata *byte + Ext [4]uint64 } type FdSet struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index 19223ce8e..da8f74045 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -33,7 +33,7 @@ type Timeval struct { _ [4]byte } -type Time_t int32 +type Time_t int64 type Rusage struct { Utime Timeval @@ -88,26 +88,6 @@ type Stat_t struct { Spare [10]uint64 } -type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Btim Timespec -} - type Statfs_t struct { Version uint32 Type uint32 @@ -133,31 +113,6 @@ type Statfs_t struct { Mntonname [1024]byte } -type statfs_freebsd11_t struct { - Version uint32 - Type uint32 - Flags uint64 - Bsize uint64 - Iosize uint64 - Blocks uint64 - Bfree uint64 - Bavail int64 - Files uint64 - Ffree int64 - Syncwrites uint64 - Asyncwrites uint64 - Syncreads uint64 - Asyncreads uint64 - Spare [10]uint64 - Namemax uint32 - Owner uint32 - Fsid Fsid - Charspare [80]int8 - Fstypename [16]byte - Mntfromname [88]byte - Mntonname [88]byte -} - type Flock_t struct { Start int64 Len int64 @@ -179,14 +134,6 @@ type Dirent struct { Name [256]int8 } -type dirent_freebsd11 struct { - Fileno uint32 - Reclen uint16 - Type uint8 - Namlen uint8 - Name [256]int8 -} - type Fsid struct { Val [2]int32 } @@ -335,41 +282,9 @@ const ( ) const ( - PTRACE_ATTACH = 0xa - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0xb - PTRACE_GETFPREGS = 0x23 - PTRACE_GETFSBASE = 0x47 - PTRACE_GETLWPLIST = 0xf - PTRACE_GETNUMLWPS = 0xe - PTRACE_GETREGS = 0x21 - PTRACE_GETXSTATE = 0x45 - PTRACE_IO = 0xc - PTRACE_KILL = 0x8 - PTRACE_LWPEVENTS = 0x18 - PTRACE_LWPINFO = 0xd - PTRACE_SETFPREGS = 0x24 - PTRACE_SETREGS = 0x22 - PTRACE_SINGLESTEP = 0x9 - PTRACE_TRACEME = 0x0 -) - -const ( - PIOD_READ_D = 0x1 - PIOD_WRITE_D = 0x2 - PIOD_READ_I = 0x3 - PIOD_WRITE_I = 0x4 -) - -const ( - PL_FLAG_BORN = 0x100 - PL_FLAG_EXITED = 0x200 - PL_FLAG_SI = 0x20 -) - -const ( - TRAP_BRKPT = 0x1 - TRAP_TRACE = 0x2 + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 ) type PtraceLwpInfoStruct struct { @@ -386,15 +301,15 @@ type PtraceLwpInfoStruct struct { } type __Siginfo struct { - Signo int32 - Errno int32 - Code int32 - Pid int32 - Uid uint32 - Status int32 - Addr *byte - Value [4]byte - X_reason [32]byte + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [4]byte + _ [32]byte } type Sigset_t struct { @@ -402,16 +317,22 @@ type Sigset_t struct { } type Reg struct { - R [13]uint32 - R_sp uint32 - R_lr uint32 - R_pc uint32 - R_cpsr uint32 + R [13]uint32 + Sp uint32 + Lr uint32 + Pc uint32 + Cpsr uint32 } type FpReg struct { - Fpr_fpsr uint32 - Fpr [8][3]uint32 + Fpsr uint32 + Fpr [8]FpExtendedPrecision +} + +type FpExtendedPrecision struct { + Exponent uint32 + Mantissa_hi uint32 + Mantissa_lo uint32 } type PtraceIoDesc struct { @@ -426,8 +347,11 @@ type Kevent_t struct { Filter int16 Flags uint16 Fflags uint32 - Data int32 + _ [4]byte + Data int64 Udata *byte + _ [4]byte + Ext [4]uint64 } type FdSet struct { @@ -453,7 +377,7 @@ type ifMsghdr struct { Addrs int32 Flags int32 Index uint16 - _ [2]byte + _ uint16 Data ifData } @@ -464,7 +388,6 @@ type IfMsghdr struct { Addrs int32 Flags int32 Index uint16 - _ [2]byte Data IfData } @@ -532,7 +455,7 @@ type IfaMsghdr struct { Addrs int32 Flags int32 Index uint16 - _ [2]byte + _ uint16 Metric int32 } @@ -543,7 +466,7 @@ type IfmaMsghdr struct { Addrs int32 Flags int32 Index uint16 - _ [2]byte + _ uint16 } type IfAnnounceMsghdr struct { @@ -560,7 +483,7 @@ type RtMsghdr struct { Version uint8 Type uint8 Index uint16 - _ [2]byte + _ uint16 Flags int32 Addrs int32 Pid int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index 8e3e33f67..d69988e5e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -86,26 +86,6 @@ type Stat_t struct { Spare [10]uint64 } -type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Btim Timespec -} - type Statfs_t struct { Version uint32 Type uint32 @@ -131,31 +111,6 @@ type Statfs_t struct { Mntonname [1024]byte } -type statfs_freebsd11_t struct { - Version uint32 - Type uint32 - Flags uint64 - Bsize uint64 - Iosize uint64 - Blocks uint64 - Bfree uint64 - Bavail int64 - Files uint64 - Ffree int64 - Syncwrites uint64 - Asyncwrites uint64 - Syncreads uint64 - Asyncreads uint64 - Spare [10]uint64 - Namemax uint32 - Owner uint32 - Fsid Fsid - Charspare [80]int8 - Fstypename [16]byte - Mntfromname [88]byte - Mntonname [88]byte -} - type Flock_t struct { Start int64 Len int64 @@ -177,14 +132,6 @@ type Dirent struct { Name [256]int8 } -type dirent_freebsd11 struct { - Fileno uint32 - Reclen uint16 - Type uint8 - Namlen uint8 - Name [256]int8 -} - type Fsid struct { Val [2]int32 } @@ -333,39 +280,9 @@ const ( ) const ( - PTRACE_ATTACH = 0xa - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0xb - PTRACE_GETFPREGS = 0x23 - PTRACE_GETLWPLIST = 0xf - PTRACE_GETNUMLWPS = 0xe - PTRACE_GETREGS = 0x21 - PTRACE_IO = 0xc - PTRACE_KILL = 0x8 - PTRACE_LWPEVENTS = 0x18 - PTRACE_LWPINFO = 0xd - PTRACE_SETFPREGS = 0x24 - PTRACE_SETREGS = 0x22 - PTRACE_SINGLESTEP = 0x9 - PTRACE_TRACEME = 0x0 -) - -const ( - PIOD_READ_D = 0x1 - PIOD_WRITE_D = 0x2 - PIOD_READ_I = 0x3 - PIOD_WRITE_I = 0x4 -) - -const ( - PL_FLAG_BORN = 0x100 - PL_FLAG_EXITED = 0x200 - PL_FLAG_SI = 0x20 -) - -const ( - TRAP_BRKPT = 0x1 - TRAP_TRACE = 0x2 + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 ) type PtraceLwpInfoStruct struct { @@ -413,6 +330,8 @@ type FpReg struct { _ [8]byte } +type FpExtendedPrecision struct{} + type PtraceIoDesc struct { Op int32 Offs *byte @@ -427,6 +346,7 @@ type Kevent_t struct { Fflags uint32 Data int64 Udata *byte + Ext [4]uint64 } type FdSet struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go new file mode 100644 index 000000000..d6fd9e883 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go @@ -0,0 +1,626 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd +// +build riscv64,freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Time_t int64 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __Siginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + _ [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + Ra uint64 + Sp uint64 + Gp uint64 + Tp uint64 + T [7]uint64 + S [12]uint64 + A [8]uint64 + Sepc uint64 + Sstatus uint64 +} + +type FpReg struct { + X [32][2]uint64 + Fcsr uint64 +} + +type FpExtendedPrecision struct{} + +type PtraceIoDesc struct { + Op int32 + Offs *byte + Addr *byte + Len uint64 +} + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Nhidx uint64 + Filler [2]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 2c26466e0..ff6881167 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -754,6 +754,25 @@ const ( AT_SYMLINK_NOFOLLOW = 0x100 AT_EACCESS = 0x200 + + OPEN_TREE_CLONE = 0x1 + + MOVE_MOUNT_F_SYMLINKS = 0x1 + MOVE_MOUNT_F_AUTOMOUNTS = 0x2 + MOVE_MOUNT_F_EMPTY_PATH = 0x4 + MOVE_MOUNT_T_SYMLINKS = 0x10 + MOVE_MOUNT_T_AUTOMOUNTS = 0x20 + MOVE_MOUNT_T_EMPTY_PATH = 0x40 + MOVE_MOUNT_SET_GROUP = 0x100 + + FSOPEN_CLOEXEC = 0x1 + + FSPICK_CLOEXEC = 0x1 + FSPICK_SYMLINK_NOFOLLOW = 0x2 + FSPICK_NO_AUTOMOUNT = 0x4 + FSPICK_EMPTY_PATH = 0x8 + + FSMOUNT_CLOEXEC = 0x1 ) type OpenHow struct { @@ -926,6 +945,9 @@ type PerfEventAttr struct { Aux_watermark uint32 Sample_max_stack uint16 _ uint16 + Aux_sample_size uint32 + _ uint32 + Sig_data uint64 } type PerfEventMmapPage struct { @@ -1108,7 +1130,9 @@ const ( PERF_BR_SYSRET = 0x8 PERF_BR_COND_CALL = 0x9 PERF_BR_COND_RET = 0xa - PERF_BR_MAX = 0xb + PERF_BR_ERET = 0xb + PERF_BR_IRQ = 0xc + PERF_BR_MAX = 0xd PERF_SAMPLE_REGS_ABI_NONE = 0x0 PERF_SAMPLE_REGS_ABI_32 = 0x1 PERF_SAMPLE_REGS_ABI_64 = 0x2 @@ -1442,6 +1466,11 @@ const ( IFLA_ALT_IFNAME = 0x35 IFLA_PERM_ADDRESS = 0x36 IFLA_PROTO_DOWN_REASON = 0x37 + IFLA_PARENT_DEV_NAME = 0x38 + IFLA_PARENT_DEV_BUS_NAME = 0x39 + IFLA_GRO_MAX_SIZE = 0x3a + IFLA_TSO_MAX_SIZE = 0x3b + IFLA_TSO_MAX_SEGS = 0x3c IFLA_PROTO_DOWN_REASON_UNSPEC = 0x0 IFLA_PROTO_DOWN_REASON_MASK = 0x1 IFLA_PROTO_DOWN_REASON_VALUE = 0x2 @@ -2950,7 +2979,7 @@ const ( DEVLINK_CMD_TRAP_POLICER_NEW = 0x47 DEVLINK_CMD_TRAP_POLICER_DEL = 0x48 DEVLINK_CMD_HEALTH_REPORTER_TEST = 0x49 - DEVLINK_CMD_MAX = 0x4d + DEVLINK_CMD_MAX = 0x51 DEVLINK_PORT_TYPE_NOTSET = 0x0 DEVLINK_PORT_TYPE_AUTO = 0x1 DEVLINK_PORT_TYPE_ETH = 0x2 @@ -3179,7 +3208,7 @@ const ( DEVLINK_ATTR_RATE_NODE_NAME = 0xa8 DEVLINK_ATTR_RATE_PARENT_NODE_NAME = 0xa9 DEVLINK_ATTR_REGION_MAX_SNAPSHOTS = 0xaa - DEVLINK_ATTR_MAX = 0xaa + DEVLINK_ATTR_MAX = 0xae DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0 DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1 DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0 @@ -3619,7 +3648,11 @@ const ( ETHTOOL_A_RINGS_RX_MINI = 0x7 ETHTOOL_A_RINGS_RX_JUMBO = 0x8 ETHTOOL_A_RINGS_TX = 0x9 - ETHTOOL_A_RINGS_MAX = 0x9 + ETHTOOL_A_RINGS_RX_BUF_LEN = 0xa + ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 0xb + ETHTOOL_A_RINGS_CQE_SIZE = 0xc + ETHTOOL_A_RINGS_TX_PUSH = 0xd + ETHTOOL_A_RINGS_MAX = 0xd ETHTOOL_A_CHANNELS_UNSPEC = 0x0 ETHTOOL_A_CHANNELS_HEADER = 0x1 ETHTOOL_A_CHANNELS_RX_MAX = 0x2 @@ -4304,7 +4337,7 @@ const ( NL80211_ATTR_MAC_HINT = 0xc8 NL80211_ATTR_MAC_MASK = 0xd7 NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca - NL80211_ATTR_MAX = 0x133 + NL80211_ATTR_MAX = 0x137 NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 NL80211_ATTR_MAX_CSA_COUNTERS = 0xce NL80211_ATTR_MAX_MATCH_SETS = 0x85 @@ -4530,7 +4563,7 @@ const ( NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY = 0x3 NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE = 0x5 NL80211_BAND_IFTYPE_ATTR_IFTYPES = 0x1 - NL80211_BAND_IFTYPE_ATTR_MAX = 0x7 + NL80211_BAND_IFTYPE_ATTR_MAX = 0xb NL80211_BAND_S1GHZ = 0x4 NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE = 0x2 NL80211_BITRATE_ATTR_MAX = 0x2 @@ -4645,7 +4678,7 @@ const ( NL80211_CMD_LEAVE_IBSS = 0x2c NL80211_CMD_LEAVE_MESH = 0x45 NL80211_CMD_LEAVE_OCB = 0x6d - NL80211_CMD_MAX = 0x92 + NL80211_CMD_MAX = 0x93 NL80211_CMD_MICHAEL_MIC_FAILURE = 0x29 NL80211_CMD_NAN_MATCH = 0x78 NL80211_CMD_NEW_BEACON = 0xf @@ -4868,7 +4901,7 @@ const ( NL80211_FREQUENCY_ATTR_GO_CONCURRENT = 0xf NL80211_FREQUENCY_ATTR_INDOOR_ONLY = 0xe NL80211_FREQUENCY_ATTR_IR_CONCURRENT = 0xf - NL80211_FREQUENCY_ATTR_MAX = 0x19 + NL80211_FREQUENCY_ATTR_MAX = 0x1b NL80211_FREQUENCY_ATTR_MAX_TX_POWER = 0x6 NL80211_FREQUENCY_ATTR_NO_10MHZ = 0x11 NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc @@ -5235,7 +5268,7 @@ const ( NL80211_RATE_INFO_HE_RU_ALLOC_52 = 0x1 NL80211_RATE_INFO_HE_RU_ALLOC_996 = 0x5 NL80211_RATE_INFO_HE_RU_ALLOC = 0x11 - NL80211_RATE_INFO_MAX = 0x11 + NL80211_RATE_INFO_MAX = 0x16 NL80211_RATE_INFO_MCS = 0x2 NL80211_RATE_INFO_SHORT_GI = 0x4 NL80211_RATE_INFO_VHT_MCS = 0x6 @@ -5532,3 +5565,45 @@ const ( NL80211_WPA_VERSION_2 = 0x2 NL80211_WPA_VERSION_3 = 0x4 ) + +const ( + FRA_UNSPEC = 0x0 + FRA_DST = 0x1 + FRA_SRC = 0x2 + FRA_IIFNAME = 0x3 + FRA_GOTO = 0x4 + FRA_UNUSED2 = 0x5 + FRA_PRIORITY = 0x6 + FRA_UNUSED3 = 0x7 + FRA_UNUSED4 = 0x8 + FRA_UNUSED5 = 0x9 + FRA_FWMARK = 0xa + FRA_FLOW = 0xb + FRA_TUN_ID = 0xc + FRA_SUPPRESS_IFGROUP = 0xd + FRA_SUPPRESS_PREFIXLEN = 0xe + FRA_TABLE = 0xf + FRA_FWMASK = 0x10 + FRA_OIFNAME = 0x11 + FRA_PAD = 0x12 + FRA_L3MDEV = 0x13 + FRA_UID_RANGE = 0x14 + FRA_PROTOCOL = 0x15 + FRA_IP_PROTO = 0x16 + FRA_SPORT_RANGE = 0x17 + FRA_DPORT_RANGE = 0x18 + FR_ACT_UNSPEC = 0x0 + FR_ACT_TO_TBL = 0x1 + FR_ACT_GOTO = 0x2 + FR_ACT_NOP = 0x3 + FR_ACT_RES3 = 0x4 + FR_ACT_RES4 = 0x5 + FR_ACT_BLACKHOLE = 0x6 + FR_ACT_UNREACHABLE = 0x7 + FR_ACT_PROHIBIT = 0x8 +) + +const ( + AUDIT_NLGRP_NONE = 0x0 + AUDIT_NLGRP_READLOG = 0x1 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 531aefab7..263604401 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/386/cgo -- -Wall -Werror -static -I/tmp/386/include -m32 linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && linux @@ -240,6 +240,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -318,6 +322,15 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index 727f664bb..8187489d1 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/amd64/cgo -- -Wall -Werror -static -I/tmp/amd64/include -m64 linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && linux @@ -255,6 +255,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -332,6 +336,14 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index 639141b1e..d1612335f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/arm/cgo -- -Wall -Werror -static -I/tmp/arm/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && linux @@ -231,6 +231,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -309,6 +313,15 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 6cb03b1d9..c28e5556b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/arm64/cgo -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && linux @@ -234,6 +234,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -311,6 +315,14 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go new file mode 100644 index 000000000..187061f9f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -0,0 +1,685 @@ +// cgo -godefs -objdir=/tmp/loong64/cgo -- -Wall -Werror -static -I/tmp/loong64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux +// +build loong64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [32]uint64 + Orig_a0 uint64 + Era uint64 + Badv uint64 + Reserved [10]uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 + Flags uint32 + _ [4]byte +} + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 4a1555455..369129917 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/mips/cgo -- -Wall -Werror -static -I/tmp/mips/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips && linux @@ -236,6 +236,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -314,6 +318,15 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index e1084926f..7473468d7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/mips64/cgo -- -Wall -Werror -static -I/tmp/mips64/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && linux @@ -237,6 +237,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -314,6 +318,14 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index 8904ac84e..ed9448524 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/mips64le/cgo -- -Wall -Werror -static -I/tmp/mips64le/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64le && linux @@ -237,6 +237,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -314,6 +318,14 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index a1a28cc7d..0892a73a4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/mipsle/cgo -- -Wall -Werror -static -I/tmp/mipsle/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mipsle && linux @@ -236,6 +236,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -314,6 +318,15 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index abdc53452..e1dd48333 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/ppc/cgo -- -Wall -Werror -static -I/tmp/ppc/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && linux @@ -243,6 +243,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -321,6 +325,15 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index f4afbbe00..d9f654c7b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/ppc64/cgo -- -Wall -Werror -static -I/tmp/ppc64/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && linux @@ -244,6 +244,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -321,6 +325,14 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index ea0b8406d..74acda9fe 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/ppc64le/cgo -- -Wall -Werror -static -I/tmp/ppc64le/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64le && linux @@ -244,6 +244,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -321,6 +325,14 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 85d0a0d50..50ebe69eb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/riscv64/cgo -- -Wall -Werror -static -I/tmp/riscv64/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && linux @@ -262,6 +262,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -339,6 +343,14 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 81dd9c22c..75b34c259 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/s390x/cgo -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build s390x && linux @@ -257,6 +257,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + const ( POLLRDHUP = 0x2000 ) @@ -334,6 +338,14 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 6991b00b5..429c3bf7d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -objdir=/tmp/sparc64/cgo -- -Wall -Werror -static -I/tmp/sparc64/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build sparc64 && linux @@ -239,6 +239,10 @@ type EpollEvent struct { Pad int32 } +const ( + OPEN_TREE_CLOEXEC = 0x400000 +) + const ( POLLRDHUP = 0x800 ) @@ -316,6 +320,14 @@ type Taskstats struct { Thrashing_count uint64 Thrashing_delay_total uint64 Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index baf5fe650..2ed718ca0 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -94,10 +94,10 @@ type Statfs_t struct { F_namemax uint32 F_owner uint32 F_ctime uint64 - F_fstypename [16]int8 - F_mntonname [90]int8 - F_mntfromname [90]int8 - F_mntfromspec [90]int8 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte Pad_cgo_0 [2]byte Mount_info [160]byte } diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index e21ae8ecf..b4fb97ebe 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -96,10 +96,10 @@ type Statfs_t struct { F_namemax uint32 F_owner uint32 F_ctime uint64 - F_fstypename [16]int8 - F_mntonname [90]int8 - F_mntfromname [90]int8 - F_mntfromspec [90]int8 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte _ [2]byte Mount_info [160]byte } diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index f190651cd..2c4675040 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -98,10 +98,10 @@ type Statfs_t struct { F_namemax uint32 F_owner uint32 F_ctime uint64 - F_fstypename [16]int8 - F_mntonname [90]int8 - F_mntfromname [90]int8 - F_mntfromspec [90]int8 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte _ [2]byte Mount_info [160]byte } diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go index 84747c582..ddee04514 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -94,10 +94,10 @@ type Statfs_t struct { F_namemax uint32 F_owner uint32 F_ctime uint64 - F_fstypename [16]int8 - F_mntonname [90]int8 - F_mntfromname [90]int8 - F_mntfromspec [90]int8 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte _ [2]byte Mount_info [160]byte } diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go index ac5c8b637..eb13d4e8b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go @@ -94,10 +94,10 @@ type Statfs_t struct { F_namemax uint32 F_owner uint32 F_ctime uint64 - F_fstypename [16]int8 - F_mntonname [90]int8 - F_mntfromname [90]int8 - F_mntfromspec [90]int8 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte _ [2]byte Mount_info [160]byte } diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index ad4aad279..c1a9b83ad 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -178,7 +178,7 @@ type Linger struct { } type Iovec struct { - Base *int8 + Base *byte Len uint64 } diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go index 855698bb2..75980fd44 100644 --- a/vendor/golang.org/x/sys/windows/exec_windows.go +++ b/vendor/golang.org/x/sys/windows/exec_windows.go @@ -15,11 +15,11 @@ import ( // in http://msdn.microsoft.com/en-us/library/ms880421. // This function returns "" (2 double quotes) if s is empty. // Alternatively, these transformations are done: -// - every back slash (\) is doubled, but only if immediately -// followed by double quote ("); -// - every double quote (") is escaped by back slash (\); -// - finally, s is wrapped with double quotes (arg -> "arg"), -// but only if there is space or tab inside s. +// - every back slash (\) is doubled, but only if immediately +// followed by double quote ("); +// - every double quote (") is escaped by back slash (\); +// - finally, s is wrapped with double quotes (arg -> "arg"), +// but only if there is space or tab inside s. func EscapeArg(s string) string { if len(s) == 0 { return "\"\"" diff --git a/vendor/golang.org/x/sys/windows/svc/service.go b/vendor/golang.org/x/sys/windows/svc/service.go index 5b05c3e33..806baa055 100644 --- a/vendor/golang.org/x/sys/windows/svc/service.go +++ b/vendor/golang.org/x/sys/windows/svc/service.go @@ -6,7 +6,6 @@ // +build windows // Package svc provides everything required to build Windows service. -// package svc import ( diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index ce3075c45..e27913817 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -417,6 +417,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation //sys GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW //sys GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW +//sys QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSetEx // NT Native APIs //sys rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb @@ -623,7 +624,6 @@ var ( func getStdHandle(stdhandle uint32) (fd Handle) { r, _ := GetStdHandle(stdhandle) - CloseOnExec(r) return r } @@ -862,6 +862,7 @@ const socket_error = uintptr(^uint32(0)) //sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses //sys GetACP() (acp uint32) = kernel32.GetACP //sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar +//sys getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx // For testing: clients can set this flag to force // creation of IPv6 sockets to return EAFNOSUPPORT. @@ -971,6 +972,32 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) { return unsafe.Pointer(&sa.raw), sl, nil } +type RawSockaddrBth struct { + AddressFamily [2]byte + BtAddr [8]byte + ServiceClassId [16]byte + Port [4]byte +} + +type SockaddrBth struct { + BtAddr uint64 + ServiceClassId GUID + Port uint32 + + raw RawSockaddrBth +} + +func (sa *SockaddrBth) sockaddr() (unsafe.Pointer, int32, error) { + family := AF_BTH + sa.raw = RawSockaddrBth{ + AddressFamily: *(*[2]byte)(unsafe.Pointer(&family)), + BtAddr: *(*[8]byte)(unsafe.Pointer(&sa.BtAddr)), + Port: *(*[4]byte)(unsafe.Pointer(&sa.Port)), + ServiceClassId: *(*[16]byte)(unsafe.Pointer(&sa.ServiceClassId)), + } + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { switch rsa.Addr.Family { case AF_UNIX: @@ -1046,6 +1073,14 @@ func Connect(fd Handle, sa Sockaddr) (err error) { return connect(fd, ptr, n) } +func GetBestInterfaceEx(sa Sockaddr, pdwBestIfIndex *uint32) (err error) { + ptr, _, err := sa.sockaddr() + if err != nil { + return err + } + return getBestInterfaceEx(ptr, pdwBestIfIndex) +} + func Getsockname(fd Handle) (sa Sockaddr, err error) { var rsa RawSockaddrAny l := int32(unsafe.Sizeof(rsa)) @@ -1699,3 +1734,71 @@ func LoadResourceData(module, resInfo Handle) (data []byte, err error) { h.Cap = int(size) return } + +// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page. +type PSAPI_WORKING_SET_EX_BLOCK uint64 + +// Valid returns the validity of this page. +// If this bit is 1, the subsequent members are valid; otherwise they should be ignored. +func (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool { + return (b & 1) == 1 +} + +// ShareCount is the number of processes that share this page. The maximum value of this member is 7. +func (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 { + return b.intField(1, 3) +} + +// Win32Protection is the memory protection attributes of the page. For a list of values, see +// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants +func (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 { + return b.intField(4, 11) +} + +// Shared returns the shared status of this page. +// If this bit is 1, the page can be shared. +func (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool { + return (b & (1 << 15)) == 1 +} + +// Node is the NUMA node. The maximum value of this member is 63. +func (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 { + return b.intField(16, 6) +} + +// Locked returns the locked status of this page. +// If this bit is 1, the virtual page is locked in physical memory. +func (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool { + return (b & (1 << 22)) == 1 +} + +// LargePage returns the large page status of this page. +// If this bit is 1, the page is a large page. +func (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool { + return (b & (1 << 23)) == 1 +} + +// Bad returns the bad status of this page. +// If this bit is 1, the page is has been reported as bad. +func (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool { + return (b & (1 << 31)) == 1 +} + +// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union. +func (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 { + var mask PSAPI_WORKING_SET_EX_BLOCK + for pos := start; pos < start+length; pos++ { + mask |= (1 << pos) + } + + masked := b & mask + return uint64(masked >> start) +} + +// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process. +type PSAPI_WORKING_SET_EX_INFORMATION struct { + // The virtual address. + VirtualAddress Pointer + // A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress. + VirtualAttributes PSAPI_WORKING_SET_EX_BLOCK +} diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index e19471c6a..f9eaca528 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -160,6 +160,10 @@ const ( MAX_COMPUTERNAME_LENGTH = 15 + MAX_DHCPV6_DUID_LENGTH = 130 + + MAX_DNS_SUFFIX_STRING_LENGTH = 256 + TIME_ZONE_ID_UNKNOWN = 0 TIME_ZONE_ID_STANDARD = 1 @@ -2000,27 +2004,62 @@ type IpAdapterPrefix struct { } type IpAdapterAddresses struct { - Length uint32 - IfIndex uint32 - Next *IpAdapterAddresses - AdapterName *byte - FirstUnicastAddress *IpAdapterUnicastAddress - FirstAnycastAddress *IpAdapterAnycastAddress - FirstMulticastAddress *IpAdapterMulticastAddress - FirstDnsServerAddress *IpAdapterDnsServerAdapter - DnsSuffix *uint16 - Description *uint16 - FriendlyName *uint16 - PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte - PhysicalAddressLength uint32 - Flags uint32 - Mtu uint32 - IfType uint32 - OperStatus uint32 - Ipv6IfIndex uint32 - ZoneIndices [16]uint32 - FirstPrefix *IpAdapterPrefix - /* more fields might be present here. */ + Length uint32 + IfIndex uint32 + Next *IpAdapterAddresses + AdapterName *byte + FirstUnicastAddress *IpAdapterUnicastAddress + FirstAnycastAddress *IpAdapterAnycastAddress + FirstMulticastAddress *IpAdapterMulticastAddress + FirstDnsServerAddress *IpAdapterDnsServerAdapter + DnsSuffix *uint16 + Description *uint16 + FriendlyName *uint16 + PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte + PhysicalAddressLength uint32 + Flags uint32 + Mtu uint32 + IfType uint32 + OperStatus uint32 + Ipv6IfIndex uint32 + ZoneIndices [16]uint32 + FirstPrefix *IpAdapterPrefix + TransmitLinkSpeed uint64 + ReceiveLinkSpeed uint64 + FirstWinsServerAddress *IpAdapterWinsServerAddress + FirstGatewayAddress *IpAdapterGatewayAddress + Ipv4Metric uint32 + Ipv6Metric uint32 + Luid uint64 + Dhcpv4Server SocketAddress + CompartmentId uint32 + NetworkGuid GUID + ConnectionType uint32 + TunnelType uint32 + Dhcpv6Server SocketAddress + Dhcpv6ClientDuid [MAX_DHCPV6_DUID_LENGTH]byte + Dhcpv6ClientDuidLength uint32 + Dhcpv6Iaid uint32 + FirstDnsSuffix *IpAdapterDNSSuffix +} + +type IpAdapterWinsServerAddress struct { + Length uint32 + Reserved uint32 + Next *IpAdapterWinsServerAddress + Address SocketAddress +} + +type IpAdapterGatewayAddress struct { + Length uint32 + Reserved uint32 + Next *IpAdapterGatewayAddress + Address SocketAddress +} + +type IpAdapterDNSSuffix struct { + Next *IpAdapterDNSSuffix + String [MAX_DNS_SUFFIX_STRING_LENGTH]uint16 } const ( diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 68f52c1e6..52d4742cb 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -177,6 +177,7 @@ var ( procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") + procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx") procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject") procCancelIo = modkernel32.NewProc("CancelIo") @@ -407,6 +408,7 @@ var ( procGetModuleBaseNameW = modpsapi.NewProc("GetModuleBaseNameW") procGetModuleFileNameExW = modpsapi.NewProc("GetModuleFileNameExW") procGetModuleInformation = modpsapi.NewProc("GetModuleInformation") + procQueryWorkingSetEx = modpsapi.NewProc("QueryWorkingSetEx") procSubscribeServiceChangeNotifications = modsechost.NewProc("SubscribeServiceChangeNotifications") procUnsubscribeServiceChangeNotifications = modsechost.NewProc("UnsubscribeServiceChangeNotifications") procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") @@ -1539,6 +1541,14 @@ func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { return } +func getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) { + r0, _, _ := syscall.Syscall(procGetBestInterfaceEx.Addr(), 2, uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + func GetIfEntry(pIfRow *MibIfRow) (errcode error) { r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0) if r0 != 0 { @@ -3495,6 +3505,14 @@ func GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb return } +func QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) { + r1, _, e1 := syscall.Syscall(procQueryWorkingSetEx.Addr(), 3, uintptr(process), uintptr(pv), uintptr(cb)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) { ret = procSubscribeServiceChangeNotifications.Find() if ret != nil { diff --git a/vendor/golang.org/x/tools/AUTHORS b/vendor/golang.org/x/tools/AUTHORS deleted file mode 100644 index 15167cd74..000000000 --- a/vendor/golang.org/x/tools/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/tools/CONTRIBUTORS b/vendor/golang.org/x/tools/CONTRIBUTORS deleted file mode 100644 index 1c4577e96..000000000 --- a/vendor/golang.org/x/tools/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go index a5c6d6d4f..9fa5aa192 100644 --- a/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go +++ b/vendor/golang.org/x/tools/go/ast/astutil/enclosing.go @@ -22,9 +22,9 @@ import ( // additional whitespace abutting a node to be enclosed by it. // In this example: // -// z := x + y // add them -// <-A-> -// <----B-----> +// z := x + y // add them +// <-A-> +// <----B-----> // // the ast.BinaryExpr(+) node is considered to enclose interval B // even though its [Pos()..End()) is actually only interval A. @@ -43,10 +43,10 @@ import ( // interior whitespace of path[0]. // In this example: // -// z := x + y // add them -// <--C--> <---E--> -// ^ -// D +// z := x + y // add them +// <--C--> <---E--> +// ^ +// D // // intervals C, D and E are inexact. C is contained by the // z-assignment statement, because it spans three of its children (:=, @@ -54,12 +54,11 @@ import ( // interior whitespace of the assignment. E is considered interior // whitespace of the BlockStmt containing the assignment. // -// Precondition: [start, end) both lie within the same file as root. -// TODO(adonovan): return (nil, false) in this case and remove precond. -// Requires FileSet; see loader.tokenFileContainsPos. -// -// Postcondition: path is never nil; it always contains at least 'root'. -// +// The resulting path is never empty; it always contains at least the +// 'root' *ast.File. Ideally PathEnclosingInterval would reject +// intervals that lie wholly or partially outside the range of the +// file, but unfortunately ast.File records only the token.Pos of +// the 'package' keyword, but not of the start of the file itself. func PathEnclosingInterval(root *ast.File, start, end token.Pos) (path []ast.Node, exact bool) { // fmt.Printf("EnclosingInterval %d %d\n", start, end) // debugging @@ -135,6 +134,7 @@ func PathEnclosingInterval(root *ast.File, start, end token.Pos) (path []ast.Nod return false // inexact: overlaps multiple children } + // Ensure [start,end) is nondecreasing. if start > end { start, end = end, start } @@ -162,7 +162,6 @@ func PathEnclosingInterval(root *ast.File, start, end token.Pos) (path []ast.Nod // tokenNode is a dummy implementation of ast.Node for a single token. // They are used transiently by PathEnclosingInterval but never escape // this package. -// type tokenNode struct { pos token.Pos end token.Pos @@ -183,7 +182,6 @@ func tok(pos token.Pos, len int) ast.Node { // childrenOf returns the direct non-nil children of ast.Node n. // It may include fake ast.Node implementations for bare tokens. // it is not safe to call (e.g.) ast.Walk on such nodes. -// func childrenOf(n ast.Node) []ast.Node { var children []ast.Node @@ -488,7 +486,6 @@ func (sl byPos) Swap(i, j int) { // TODO(adonovan): in some cases (e.g. Field, FieldList, Ident, // StarExpr) we could be much more specific given the path to the AST // root. Perhaps we should do that. -// func NodeDescription(n ast.Node) string { switch n := n.(type) { case *ast.ArrayType: diff --git a/vendor/golang.org/x/tools/go/ast/astutil/imports.go b/vendor/golang.org/x/tools/go/ast/astutil/imports.go index 2087ceec9..18d1adb05 100644 --- a/vendor/golang.org/x/tools/go/ast/astutil/imports.go +++ b/vendor/golang.org/x/tools/go/ast/astutil/imports.go @@ -22,8 +22,11 @@ func AddImport(fset *token.FileSet, f *ast.File, path string) (added bool) { // If name is not empty, it is used to rename the import. // // For example, calling +// // AddNamedImport(fset, f, "pathpkg", "path") +// // adds +// // import pathpkg "path" func AddNamedImport(fset *token.FileSet, f *ast.File, name, path string) (added bool) { if imports(f, name, path) { @@ -270,8 +273,8 @@ func DeleteNamedImport(fset *token.FileSet, f *ast.File, name, path string) (del } if j > 0 { lastImpspec := gen.Specs[j-1].(*ast.ImportSpec) - lastLine := fset.Position(lastImpspec.Path.ValuePos).Line - line := fset.Position(impspec.Path.ValuePos).Line + lastLine := fset.PositionFor(lastImpspec.Path.ValuePos, false).Line + line := fset.PositionFor(impspec.Path.ValuePos, false).Line // We deleted an entry but now there may be // a blank line-sized hole where the import was. diff --git a/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go b/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go index 6d9ca23e2..f430b21b9 100644 --- a/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go +++ b/vendor/golang.org/x/tools/go/ast/astutil/rewrite.go @@ -41,7 +41,6 @@ type ApplyFunc func(*Cursor) bool // Children are traversed in the order in which they appear in the // respective node's struct definition. A package's files are // traversed in the filenames' alphabetical order. -// func Apply(root ast.Node, pre, post ApplyFunc) (result ast.Node) { parent := &struct{ ast.Node }{root} defer func() { @@ -65,8 +64,8 @@ var abort = new(int) // singleton, to signal termination of Apply // c.Parent(), and f is the field identifier with name c.Name(), // the following invariants hold: // -// p.f == c.Node() if c.Index() < 0 -// p.f[c.Index()] == c.Node() if c.Index() >= 0 +// p.f == c.Node() if c.Index() < 0 +// p.f[c.Index()] == c.Node() if c.Index() >= 0 // // The methods Replace, Delete, InsertBefore, and InsertAfter // can be used to change the AST without disrupting Apply. @@ -294,6 +293,9 @@ func (a *application) apply(parent ast.Node, name string, iter *iterator, n ast. a.apply(n, "Fields", nil, n.Fields) case *ast.FuncType: + if tparams := typeparams.ForFuncType(n); tparams != nil { + a.apply(n, "TypeParams", nil, tparams) + } a.apply(n, "Params", nil, n.Params) a.apply(n, "Results", nil, n.Results) @@ -406,6 +408,9 @@ func (a *application) apply(parent ast.Node, name string, iter *iterator, n ast. case *ast.TypeSpec: a.apply(n, "Doc", nil, n.Doc) a.apply(n, "Name", nil, n.Name) + if tparams := typeparams.ForTypeSpec(n); tparams != nil { + a.apply(n, "TypeParams", nil, tparams) + } a.apply(n, "Type", nil, n.Type) a.apply(n, "Comment", nil, n.Comment) diff --git a/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go index cec819d64..2ed25a750 100644 --- a/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go +++ b/vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go @@ -17,32 +17,47 @@ // developer tools, which will then be able to consume both Go 1.7 and // Go 1.8 export data files, so they will work before and after the // Go update. (See discussion at https://golang.org/issue/15651.) -// package gcexportdata // import "golang.org/x/tools/go/gcexportdata" import ( "bufio" "bytes" + "encoding/json" "fmt" "go/token" "go/types" "io" "io/ioutil" + "os/exec" "golang.org/x/tools/go/internal/gcimporter" ) // Find returns the name of an object (.o) or archive (.a) file // containing type information for the specified import path, -// using the workspace layout conventions of go/build. +// using the go command. // If no file was found, an empty filename is returned. // // A relative srcDir is interpreted relative to the current working directory. // // Find also returns the package's resolved (canonical) import path, // reflecting the effects of srcDir and vendoring on importPath. +// +// Deprecated: Use the higher-level API in golang.org/x/tools/go/packages, +// which is more efficient. func Find(importPath, srcDir string) (filename, path string) { - return gcimporter.FindPkg(importPath, srcDir) + cmd := exec.Command("go", "list", "-json", "-export", "--", importPath) + cmd.Dir = srcDir + out, err := cmd.CombinedOutput() + if err != nil { + return "", "" + } + var data struct { + ImportPath string + Export string + } + json.Unmarshal(out, &data) + return data.Export, data.ImportPath } // NewReader returns a reader for the export data section of an object @@ -101,13 +116,29 @@ func Read(in io.Reader, fset *token.FileSet, imports map[string]*types.Package, // The indexed export format starts with an 'i'; the older // binary export format starts with a 'c', 'd', or 'v' // (from "version"). Select appropriate importer. - if len(data) > 0 && data[0] == 'i' { - _, pkg, err := gcimporter.IImportData(fset, imports, data[1:], path) - return pkg, err - } + if len(data) > 0 { + switch data[0] { + case 'i': + _, pkg, err := gcimporter.IImportData(fset, imports, data[1:], path) + return pkg, err - _, pkg, err := gcimporter.BImportData(fset, imports, data, path) - return pkg, err + case 'v', 'c', 'd': + _, pkg, err := gcimporter.BImportData(fset, imports, data, path) + return pkg, err + + case 'u': + _, pkg, err := gcimporter.UImportData(fset, imports, data[1:], path) + return pkg, err + + default: + l := len(data) + if l > 10 { + l = 10 + } + return nil, fmt.Errorf("unexpected export data with prefix %q for path %s", string(data[:l]), path) + } + } + return nil, fmt.Errorf("empty export data for %s", path) } // Write writes encoded type information for the specified package to out. diff --git a/vendor/golang.org/x/tools/go/gcexportdata/importer.go b/vendor/golang.org/x/tools/go/gcexportdata/importer.go index efe221e7e..37a7247e2 100644 --- a/vendor/golang.org/x/tools/go/gcexportdata/importer.go +++ b/vendor/golang.org/x/tools/go/gcexportdata/importer.go @@ -23,6 +23,8 @@ import ( // or to control the FileSet or access the imports map populated during // package loading. // +// Deprecated: Use the higher-level API in golang.org/x/tools/go/packages, +// which is more efficient. func NewImporter(fset *token.FileSet, imports map[string]*types.Package) types.ImporterFrom { return importer{fset, imports} } diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go index 0a3cdb9a3..196cb3f9b 100644 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/bexport.go @@ -35,16 +35,18 @@ import ( const debugFormat = false // default: false // Current export format version. Increase with each format change. +// // Note: The latest binary (non-indexed) export format is at version 6. -// This exporter is still at level 4, but it doesn't matter since -// the binary importer can handle older versions just fine. -// 6: package height (CL 105038) -- NOT IMPLEMENTED HERE -// 5: improved position encoding efficiency (issue 20080, CL 41619) -- NOT IMPLEMEMTED HERE -// 4: type name objects support type aliases, uses aliasTag -// 3: Go1.8 encoding (same as version 2, aliasTag defined but never used) -// 2: removed unused bool in ODCL export (compiler only) -// 1: header format change (more regular), export package for _ struct fields -// 0: Go1.7 encoding +// This exporter is still at level 4, but it doesn't matter since +// the binary importer can handle older versions just fine. +// +// 6: package height (CL 105038) -- NOT IMPLEMENTED HERE +// 5: improved position encoding efficiency (issue 20080, CL 41619) -- NOT IMPLEMENTED HERE +// 4: type name objects support type aliases, uses aliasTag +// 3: Go1.8 encoding (same as version 2, aliasTag defined but never used) +// 2: removed unused bool in ODCL export (compiler only) +// 1: header format change (more regular), export package for _ struct fields +// 0: Go1.7 encoding const exportVersion = 4 // trackAllTypes enables cycle tracking for all types, not just named diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go index 3ab66830d..e96c39600 100644 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/gcimporter.go @@ -45,7 +45,6 @@ var pkgExts = [...]string{".a", ".o"} // the build.Default build.Context). A relative srcDir is interpreted // relative to the current working directory. // If no file was found, an empty filename is returned. -// func FindPkg(path, srcDir string) (filename, id string) { if path == "" { return @@ -109,7 +108,6 @@ func FindPkg(path, srcDir string) (filename, id string) { // If packages[id] contains the completely imported package, that package // can be used directly, and there is no need to call this function (but // there is also no harm but for extra time used). -// func ImportData(packages map[string]*types.Package, filename, id string, data io.Reader) (pkg *types.Package, err error) { // support for parser error handling defer func() { @@ -133,7 +131,6 @@ func ImportData(packages map[string]*types.Package, filename, id string, data io // Import imports a gc-generated package given its import path and srcDir, adds // the corresponding package object to the packages map, and returns the object. // The packages map must contain all packages already imported. -// func Import(packages map[string]*types.Package, path, srcDir string, lookup func(path string) (io.ReadCloser, error)) (pkg *types.Package, err error) { var rc io.ReadCloser var filename, id string @@ -184,8 +181,9 @@ func Import(packages map[string]*types.Package, path, srcDir string, lookup func defer rc.Close() var hdr string + var size int64 buf := bufio.NewReader(rc) - if hdr, _, err = FindExportData(buf); err != nil { + if hdr, size, err = FindExportData(buf); err != nil { return } @@ -213,10 +211,27 @@ func Import(packages map[string]*types.Package, path, srcDir string, lookup func // The indexed export format starts with an 'i'; the older // binary export format starts with a 'c', 'd', or 'v' // (from "version"). Select appropriate importer. - if len(data) > 0 && data[0] == 'i' { - _, pkg, err = IImportData(fset, packages, data[1:], id) - } else { - _, pkg, err = BImportData(fset, packages, data, id) + if len(data) > 0 { + switch data[0] { + case 'i': + _, pkg, err := IImportData(fset, packages, data[1:], id) + return pkg, err + + case 'v', 'c', 'd': + _, pkg, err := BImportData(fset, packages, data, id) + return pkg, err + + case 'u': + _, pkg, err := UImportData(fset, packages, data[1:size], id) + return pkg, err + + default: + l := len(data) + if l > 10 { + l = 10 + } + return nil, fmt.Errorf("unexpected export data with prefix %q for path %s", string(data[:l]), id) + } } default: @@ -348,8 +363,9 @@ func (p *parser) expectKeyword(keyword string) { // ---------------------------------------------------------------------------- // Qualified and unqualified names -// PackageId = string_lit . +// parsePackageID parses a PackageId: // +// PackageId = string_lit . func (p *parser) parsePackageID() string { id, err := strconv.Unquote(p.expect(scanner.String)) if err != nil { @@ -363,13 +379,16 @@ func (p *parser) parsePackageID() string { return id } -// PackageName = ident . +// parsePackageName parse a PackageName: // +// PackageName = ident . func (p *parser) parsePackageName() string { return p.expect(scanner.Ident) } -// dotIdentifier = ( ident | '·' ) { ident | int | '·' } . +// parseDotIdent parses a dotIdentifier: +// +// dotIdentifier = ( ident | '·' ) { ident | int | '·' } . func (p *parser) parseDotIdent() string { ident := "" if p.tok != scanner.Int { @@ -386,8 +405,9 @@ func (p *parser) parseDotIdent() string { return ident } -// QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . +// parseQualifiedName parses a QualifiedName: // +// QualifiedName = "@" PackageId "." ( "?" | dotIdentifier ) . func (p *parser) parseQualifiedName() (id, name string) { p.expect('@') id = p.parsePackageID() @@ -410,7 +430,6 @@ func (p *parser) parseQualifiedName() (id, name string) { // id identifies a package, usually by a canonical package path like // "encoding/json" but possibly by a non-canonical import path like // "./json". -// func (p *parser) getPkg(id, name string) *types.Package { // package unsafe is not in the packages maps - handle explicitly if id == "unsafe" { @@ -446,7 +465,6 @@ func (p *parser) getPkg(id, name string) *types.Package { // parseExportedName is like parseQualifiedName, but // the package id is resolved to an imported *types.Package. -// func (p *parser) parseExportedName() (pkg *types.Package, name string) { id, name := p.parseQualifiedName() pkg = p.getPkg(id, "") @@ -456,8 +474,9 @@ func (p *parser) parseExportedName() (pkg *types.Package, name string) { // ---------------------------------------------------------------------------- // Types -// BasicType = identifier . +// parseBasicType parses a BasicType: // +// BasicType = identifier . func (p *parser) parseBasicType() types.Type { id := p.expect(scanner.Ident) obj := types.Universe.Lookup(id) @@ -468,8 +487,9 @@ func (p *parser) parseBasicType() types.Type { return nil } -// ArrayType = "[" int_lit "]" Type . +// parseArrayType parses an ArrayType: // +// ArrayType = "[" int_lit "]" Type . func (p *parser) parseArrayType(parent *types.Package) types.Type { // "[" already consumed and lookahead known not to be "]" lit := p.expect(scanner.Int) @@ -482,8 +502,9 @@ func (p *parser) parseArrayType(parent *types.Package) types.Type { return types.NewArray(elem, n) } -// MapType = "map" "[" Type "]" Type . +// parseMapType parses a MapType: // +// MapType = "map" "[" Type "]" Type . func (p *parser) parseMapType(parent *types.Package) types.Type { p.expectKeyword("map") p.expect('[') @@ -493,7 +514,9 @@ func (p *parser) parseMapType(parent *types.Package) types.Type { return types.NewMap(key, elem) } -// Name = identifier | "?" | QualifiedName . +// parseName parses a Name: +// +// Name = identifier | "?" | QualifiedName . // // For unqualified and anonymous names, the returned package is the parent // package unless parent == nil, in which case the returned package is the @@ -505,7 +528,6 @@ func (p *parser) parseMapType(parent *types.Package) types.Type { // it doesn't exist yet) unless materializePkg is set (which creates an // unnamed package with valid package path). In the latter case, a // subsequent import clause is expected to provide a name for the package. -// func (p *parser) parseName(parent *types.Package, materializePkg bool) (pkg *types.Package, name string) { pkg = parent if pkg == nil { @@ -539,8 +561,9 @@ func deref(typ types.Type) types.Type { return typ } -// Field = Name Type [ string_lit ] . +// parseField parses a Field: // +// Field = Name Type [ string_lit ] . func (p *parser) parseField(parent *types.Package) (*types.Var, string) { pkg, name := p.parseName(parent, true) @@ -583,9 +606,10 @@ func (p *parser) parseField(parent *types.Package) (*types.Var, string) { return types.NewField(token.NoPos, pkg, name, typ, anonymous), tag } -// StructType = "struct" "{" [ FieldList ] "}" . -// FieldList = Field { ";" Field } . +// parseStructType parses a StructType: // +// StructType = "struct" "{" [ FieldList ] "}" . +// FieldList = Field { ";" Field } . func (p *parser) parseStructType(parent *types.Package) types.Type { var fields []*types.Var var tags []string @@ -610,8 +634,9 @@ func (p *parser) parseStructType(parent *types.Package) types.Type { return types.NewStruct(fields, tags) } -// Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . +// parseParameter parses a Parameter: // +// Parameter = ( identifier | "?" ) [ "..." ] Type [ string_lit ] . func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { _, name := p.parseName(nil, false) // remove gc-specific parameter numbering @@ -635,9 +660,10 @@ func (p *parser) parseParameter() (par *types.Var, isVariadic bool) { return } -// Parameters = "(" [ ParameterList ] ")" . -// ParameterList = { Parameter "," } Parameter . +// parseParameters parses a Parameters: // +// Parameters = "(" [ ParameterList ] ")" . +// ParameterList = { Parameter "," } Parameter . func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { p.expect('(') for p.tok != ')' && p.tok != scanner.EOF { @@ -658,9 +684,10 @@ func (p *parser) parseParameters() (list []*types.Var, isVariadic bool) { return } -// Signature = Parameters [ Result ] . -// Result = Type | Parameters . +// parseSignature parses a Signature: // +// Signature = Parameters [ Result ] . +// Result = Type | Parameters . func (p *parser) parseSignature(recv *types.Var) *types.Signature { params, isVariadic := p.parseParameters() @@ -677,14 +704,15 @@ func (p *parser) parseSignature(recv *types.Var) *types.Signature { return types.NewSignature(recv, types.NewTuple(params...), types.NewTuple(results...), isVariadic) } -// InterfaceType = "interface" "{" [ MethodList ] "}" . -// MethodList = Method { ";" Method } . -// Method = Name Signature . +// parseInterfaceType parses an InterfaceType: +// +// InterfaceType = "interface" "{" [ MethodList ] "}" . +// MethodList = Method { ";" Method } . +// Method = Name Signature . // // The methods of embedded interfaces are always "inlined" // by the compiler and thus embedded interfaces are never // visible in the export data. -// func (p *parser) parseInterfaceType(parent *types.Package) types.Type { var methods []*types.Func @@ -705,8 +733,9 @@ func (p *parser) parseInterfaceType(parent *types.Package) types.Type { return newInterface(methods, nil).Complete() } -// ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . +// parseChanType parses a ChanType: // +// ChanType = ( "chan" [ "<-" ] | "<-" "chan" ) Type . func (p *parser) parseChanType(parent *types.Package) types.Type { dir := types.SendRecv if p.tok == scanner.Ident { @@ -724,17 +753,18 @@ func (p *parser) parseChanType(parent *types.Package) types.Type { return types.NewChan(dir, elem) } -// Type = -// BasicType | TypeName | ArrayType | SliceType | StructType | -// PointerType | FuncType | InterfaceType | MapType | ChanType | -// "(" Type ")" . +// parseType parses a Type: // -// BasicType = ident . -// TypeName = ExportedName . -// SliceType = "[" "]" Type . -// PointerType = "*" Type . -// FuncType = "func" Signature . +// Type = +// BasicType | TypeName | ArrayType | SliceType | StructType | +// PointerType | FuncType | InterfaceType | MapType | ChanType | +// "(" Type ")" . // +// BasicType = ident . +// TypeName = ExportedName . +// SliceType = "[" "]" Type . +// PointerType = "*" Type . +// FuncType = "func" Signature . func (p *parser) parseType(parent *types.Package) types.Type { switch p.tok { case scanner.Ident: @@ -786,16 +816,18 @@ func (p *parser) parseType(parent *types.Package) types.Type { // ---------------------------------------------------------------------------- // Declarations -// ImportDecl = "import" PackageName PackageId . +// parseImportDecl parses an ImportDecl: // +// ImportDecl = "import" PackageName PackageId . func (p *parser) parseImportDecl() { p.expectKeyword("import") name := p.parsePackageName() p.getPkg(p.parsePackageID(), name) } -// int_lit = [ "+" | "-" ] { "0" ... "9" } . +// parseInt parses an int_lit: // +// int_lit = [ "+" | "-" ] { "0" ... "9" } . func (p *parser) parseInt() string { s := "" switch p.tok { @@ -808,8 +840,9 @@ func (p *parser) parseInt() string { return s + p.expect(scanner.Int) } -// number = int_lit [ "p" int_lit ] . +// parseNumber parses a number: // +// number = int_lit [ "p" int_lit ] . func (p *parser) parseNumber() (typ *types.Basic, val constant.Value) { // mantissa mant := constant.MakeFromLiteral(p.parseInt(), token.INT, 0) @@ -844,13 +877,14 @@ func (p *parser) parseNumber() (typ *types.Basic, val constant.Value) { return } -// ConstDecl = "const" ExportedName [ Type ] "=" Literal . -// Literal = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit . -// bool_lit = "true" | "false" . -// complex_lit = "(" float_lit "+" float_lit "i" ")" . -// rune_lit = "(" int_lit "+" int_lit ")" . -// string_lit = `"` { unicode_char } `"` . +// parseConstDecl parses a ConstDecl: // +// ConstDecl = "const" ExportedName [ Type ] "=" Literal . +// Literal = bool_lit | int_lit | float_lit | complex_lit | rune_lit | string_lit . +// bool_lit = "true" | "false" . +// complex_lit = "(" float_lit "+" float_lit "i" ")" . +// rune_lit = "(" int_lit "+" int_lit ")" . +// string_lit = `"` { unicode_char } `"` . func (p *parser) parseConstDecl() { p.expectKeyword("const") pkg, name := p.parseExportedName() @@ -920,8 +954,9 @@ func (p *parser) parseConstDecl() { pkg.Scope().Insert(types.NewConst(token.NoPos, pkg, name, typ0, val)) } -// TypeDecl = "type" ExportedName Type . +// parseTypeDecl parses a TypeDecl: // +// TypeDecl = "type" ExportedName Type . func (p *parser) parseTypeDecl() { p.expectKeyword("type") pkg, name := p.parseExportedName() @@ -939,8 +974,9 @@ func (p *parser) parseTypeDecl() { } } -// VarDecl = "var" ExportedName Type . +// parseVarDecl parses a VarDecl: // +// VarDecl = "var" ExportedName Type . func (p *parser) parseVarDecl() { p.expectKeyword("var") pkg, name := p.parseExportedName() @@ -948,9 +984,10 @@ func (p *parser) parseVarDecl() { pkg.Scope().Insert(types.NewVar(token.NoPos, pkg, name, typ)) } -// Func = Signature [ Body ] . -// Body = "{" ... "}" . +// parseFunc parses a Func: // +// Func = Signature [ Body ] . +// Body = "{" ... "}" . func (p *parser) parseFunc(recv *types.Var) *types.Signature { sig := p.parseSignature(recv) if p.tok == '{' { @@ -967,9 +1004,10 @@ func (p *parser) parseFunc(recv *types.Var) *types.Signature { return sig } -// MethodDecl = "func" Receiver Name Func . -// Receiver = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" . +// parseMethodDecl parses a MethodDecl: // +// MethodDecl = "func" Receiver Name Func . +// Receiver = "(" ( identifier | "?" ) [ "*" ] ExportedName ")" . func (p *parser) parseMethodDecl() { // "func" already consumed p.expect('(') @@ -992,8 +1030,9 @@ func (p *parser) parseMethodDecl() { base.AddMethod(types.NewFunc(token.NoPos, pkg, name, sig)) } -// FuncDecl = "func" ExportedName Func . +// parseFuncDecl parses a FuncDecl: // +// FuncDecl = "func" ExportedName Func . func (p *parser) parseFuncDecl() { // "func" already consumed pkg, name := p.parseExportedName() @@ -1001,8 +1040,9 @@ func (p *parser) parseFuncDecl() { pkg.Scope().Insert(types.NewFunc(token.NoPos, pkg, name, typ)) } -// Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . +// parseDecl parses a Decl: // +// Decl = [ ImportDecl | ConstDecl | TypeDecl | VarDecl | FuncDecl | MethodDecl ] "\n" . func (p *parser) parseDecl() { if p.tok == scanner.Ident { switch p.lit { @@ -1029,9 +1069,10 @@ func (p *parser) parseDecl() { // ---------------------------------------------------------------------------- // Export -// Export = "PackageClause { Decl } "$$" . -// PackageClause = "package" PackageName [ "safe" ] "\n" . +// parseExport parses an Export: // +// Export = "PackageClause { Decl } "$$" . +// PackageClause = "package" PackageName [ "safe" ] "\n" . func (p *parser) parseExport() *types.Package { p.expectKeyword("package") name := p.parsePackageName() diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go index 209553409..9a4ff329e 100644 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/iexport.go @@ -251,7 +251,10 @@ func (p *iexporter) stringOff(s string) uint64 { // pushDecl adds n to the declaration work queue, if not already present. func (p *iexporter) pushDecl(obj types.Object) { // Package unsafe is known to the compiler and predeclared. - assert(obj.Pkg() != types.Unsafe) + // Caller should not ask us to do export it. + if obj.Pkg() == types.Unsafe { + panic("cannot export package unsafe") + } if _, ok := p.declIndex[obj]; ok { return diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go b/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go index 84cfb807d..4caa0f55d 100644 --- a/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/iimport.go @@ -17,6 +17,7 @@ import ( "go/token" "go/types" "io" + "math/big" "sort" "strings" @@ -53,7 +54,7 @@ const ( ) type ident struct { - pkg string + pkg *types.Package name string } @@ -100,7 +101,9 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data if !debug { defer func() { if e := recover(); e != nil { - if version > currentVersion { + if bundle { + err = fmt.Errorf("%v", e) + } else if version > currentVersion { err = fmt.Errorf("cannot import %q (%v), export data is newer version - update tool", path, e) } else { err = fmt.Errorf("cannot import %q (%v), possibly version skew - reinstall package", path, e) @@ -461,7 +464,7 @@ func (r *importReader) obj(name string) { // To handle recursive references to the typeparam within its // bound, save the partial type in tparamIndex before reading the bounds. - id := ident{r.currPkg.Name(), name} + id := ident{r.currPkg, name} r.p.tparamIndex[id] = t var implicit bool if r.p.version >= iexportVersionGo1_18 { @@ -510,7 +513,9 @@ func (r *importReader) value() (typ types.Type, val constant.Value) { val = constant.MakeString(r.string()) case types.IsInteger: - val = r.mpint(b) + var x big.Int + r.mpint(&x, b) + val = constant.Make(&x) case types.IsFloat: val = r.mpfloat(b) @@ -559,8 +564,8 @@ func intSize(b *types.Basic) (signed bool, maxBytes uint) { return } -func (r *importReader) mpint(b *types.Basic) constant.Value { - signed, maxBytes := intSize(b) +func (r *importReader) mpint(x *big.Int, typ *types.Basic) { + signed, maxBytes := intSize(typ) maxSmall := 256 - maxBytes if signed { @@ -579,7 +584,8 @@ func (r *importReader) mpint(b *types.Basic) constant.Value { v = ^v } } - return constant.MakeInt64(v) + x.SetInt64(v) + return } v := -n @@ -589,47 +595,23 @@ func (r *importReader) mpint(b *types.Basic) constant.Value { if v < 1 || uint(v) > maxBytes { errorf("weird decoding: %v, %v => %v", n, signed, v) } - - buf := make([]byte, v) - io.ReadFull(&r.declReader, buf) - - // convert to little endian - // TODO(gri) go/constant should have a more direct conversion function - // (e.g., once it supports a big.Float based implementation) - for i, j := 0, len(buf)-1; i < j; i, j = i+1, j-1 { - buf[i], buf[j] = buf[j], buf[i] - } - - x := constant.MakeFromBytes(buf) + b := make([]byte, v) + io.ReadFull(&r.declReader, b) + x.SetBytes(b) if signed && n&1 != 0 { - x = constant.UnaryOp(token.SUB, x, 0) + x.Neg(x) } - return x } -func (r *importReader) mpfloat(b *types.Basic) constant.Value { - x := r.mpint(b) - if constant.Sign(x) == 0 { - return x +func (r *importReader) mpfloat(typ *types.Basic) constant.Value { + var mant big.Int + r.mpint(&mant, typ) + var f big.Float + f.SetInt(&mant) + if f.Sign() != 0 { + f.SetMantExp(&f, int(r.int64())) } - - exp := r.int64() - switch { - case exp > 0: - x = constant.Shift(x, token.SHL, uint(exp)) - // Ensure that the imported Kind is Float, else this constant may run into - // bitsize limits on overlarge integers. Eventually we can instead adopt - // the approach of CL 288632, but that CL relies on go/constant APIs that - // were introduced in go1.13. - // - // TODO(rFindley): sync the logic here with tip Go once we no longer - // support go1.12. - x = constant.ToFloat(x) - case exp < 0: - d := constant.Shift(constant.MakeInt64(1), token.SHL, uint(-exp)) - x = constant.BinaryOp(x, token.QUO, d) - } - return x + return constant.Make(&f) } func (r *importReader) ident() string { @@ -777,7 +759,7 @@ func (r *importReader) doType(base *types.Named) (res types.Type) { errorf("unexpected type param type") } pkg, name := r.qualifiedIdent() - id := ident{pkg.Name(), name} + id := ident{pkg, name} if t, ok := r.p.tparamIndex[id]; ok { // We're already in the process of importing this typeparam. return t diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/unified_no.go b/vendor/golang.org/x/tools/go/internal/gcimporter/unified_no.go new file mode 100644 index 000000000..286bf4454 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/unified_no.go @@ -0,0 +1,10 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !(go1.18 && goexperiment.unified) +// +build !go1.18 !goexperiment.unified + +package gcimporter + +const unifiedIR = false diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/unified_yes.go b/vendor/golang.org/x/tools/go/internal/gcimporter/unified_yes.go new file mode 100644 index 000000000..b5d69ffbe --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/unified_yes.go @@ -0,0 +1,10 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.18 && goexperiment.unified +// +build go1.18,goexperiment.unified + +package gcimporter + +const unifiedIR = true diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_no.go b/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_no.go new file mode 100644 index 000000000..8eb20729c --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_no.go @@ -0,0 +1,19 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.18 +// +build !go1.18 + +package gcimporter + +import ( + "fmt" + "go/token" + "go/types" +) + +func UImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (_ int, pkg *types.Package, err error) { + err = fmt.Errorf("go/tools compiled with a Go version earlier than 1.18 cannot read unified IR export data") + return +} diff --git a/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_yes.go b/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_yes.go new file mode 100644 index 000000000..3c1a43754 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/gcimporter/ureader_yes.go @@ -0,0 +1,612 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Derived from go/internal/gcimporter/ureader.go + +//go:build go1.18 +// +build go1.18 + +package gcimporter + +import ( + "go/token" + "go/types" + "strings" + + "golang.org/x/tools/go/internal/pkgbits" +) + +// A pkgReader holds the shared state for reading a unified IR package +// description. +type pkgReader struct { + pkgbits.PkgDecoder + + fake fakeFileSet + + ctxt *types.Context + imports map[string]*types.Package // previously imported packages, indexed by path + + // lazily initialized arrays corresponding to the unified IR + // PosBase, Pkg, and Type sections, respectively. + posBases []string // position bases (i.e., file names) + pkgs []*types.Package + typs []types.Type + + // laterFns holds functions that need to be invoked at the end of + // import reading. + laterFns []func() +} + +// later adds a function to be invoked at the end of import reading. +func (pr *pkgReader) later(fn func()) { + pr.laterFns = append(pr.laterFns, fn) +} + +// See cmd/compile/internal/noder.derivedInfo. +type derivedInfo struct { + idx pkgbits.Index + needed bool +} + +// See cmd/compile/internal/noder.typeInfo. +type typeInfo struct { + idx pkgbits.Index + derived bool +} + +func UImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (_ int, pkg *types.Package, err error) { + s := string(data) + s = s[:strings.LastIndex(s, "\n$$\n")] + input := pkgbits.NewPkgDecoder(path, s) + pkg = readUnifiedPackage(fset, nil, imports, input) + return +} + +// readUnifiedPackage reads a package description from the given +// unified IR export data decoder. +func readUnifiedPackage(fset *token.FileSet, ctxt *types.Context, imports map[string]*types.Package, input pkgbits.PkgDecoder) *types.Package { + pr := pkgReader{ + PkgDecoder: input, + + fake: fakeFileSet{ + fset: fset, + files: make(map[string]*fileInfo), + }, + + ctxt: ctxt, + imports: imports, + + posBases: make([]string, input.NumElems(pkgbits.RelocPosBase)), + pkgs: make([]*types.Package, input.NumElems(pkgbits.RelocPkg)), + typs: make([]types.Type, input.NumElems(pkgbits.RelocType)), + } + defer pr.fake.setLines() + + r := pr.newReader(pkgbits.RelocMeta, pkgbits.PublicRootIdx, pkgbits.SyncPublic) + pkg := r.pkg() + r.Bool() // has init + + for i, n := 0, r.Len(); i < n; i++ { + // As if r.obj(), but avoiding the Scope.Lookup call, + // to avoid eager loading of imports. + r.Sync(pkgbits.SyncObject) + assert(!r.Bool()) + r.p.objIdx(r.Reloc(pkgbits.RelocObj)) + assert(r.Len() == 0) + } + + r.Sync(pkgbits.SyncEOF) + + for _, fn := range pr.laterFns { + fn() + } + + pkg.MarkComplete() + return pkg +} + +// A reader holds the state for reading a single unified IR element +// within a package. +type reader struct { + pkgbits.Decoder + + p *pkgReader + + dict *readerDict +} + +// A readerDict holds the state for type parameters that parameterize +// the current unified IR element. +type readerDict struct { + // bounds is a slice of typeInfos corresponding to the underlying + // bounds of the element's type parameters. + bounds []typeInfo + + // tparams is a slice of the constructed TypeParams for the element. + tparams []*types.TypeParam + + // devived is a slice of types derived from tparams, which may be + // instantiated while reading the current element. + derived []derivedInfo + derivedTypes []types.Type // lazily instantiated from derived +} + +func (pr *pkgReader) newReader(k pkgbits.RelocKind, idx pkgbits.Index, marker pkgbits.SyncMarker) *reader { + return &reader{ + Decoder: pr.NewDecoder(k, idx, marker), + p: pr, + } +} + +// @@@ Positions + +func (r *reader) pos() token.Pos { + r.Sync(pkgbits.SyncPos) + if !r.Bool() { + return token.NoPos + } + + // TODO(mdempsky): Delta encoding. + posBase := r.posBase() + line := r.Uint() + col := r.Uint() + return r.p.fake.pos(posBase, int(line), int(col)) +} + +func (r *reader) posBase() string { + return r.p.posBaseIdx(r.Reloc(pkgbits.RelocPosBase)) +} + +func (pr *pkgReader) posBaseIdx(idx pkgbits.Index) string { + if b := pr.posBases[idx]; b != "" { + return b + } + + r := pr.newReader(pkgbits.RelocPosBase, idx, pkgbits.SyncPosBase) + + // Within types2, position bases have a lot more details (e.g., + // keeping track of where //line directives appeared exactly). + // + // For go/types, we just track the file name. + + filename := r.String() + + if r.Bool() { // file base + // Was: "b = token.NewTrimmedFileBase(filename, true)" + } else { // line base + pos := r.pos() + line := r.Uint() + col := r.Uint() + + // Was: "b = token.NewLineBase(pos, filename, true, line, col)" + _, _, _ = pos, line, col + } + + b := filename + pr.posBases[idx] = b + return b +} + +// @@@ Packages + +func (r *reader) pkg() *types.Package { + r.Sync(pkgbits.SyncPkg) + return r.p.pkgIdx(r.Reloc(pkgbits.RelocPkg)) +} + +func (pr *pkgReader) pkgIdx(idx pkgbits.Index) *types.Package { + // TODO(mdempsky): Consider using some non-nil pointer to indicate + // the universe scope, so we don't need to keep re-reading it. + if pkg := pr.pkgs[idx]; pkg != nil { + return pkg + } + + pkg := pr.newReader(pkgbits.RelocPkg, idx, pkgbits.SyncPkgDef).doPkg() + pr.pkgs[idx] = pkg + return pkg +} + +func (r *reader) doPkg() *types.Package { + path := r.String() + switch path { + case "": + path = r.p.PkgPath() + case "builtin": + return nil // universe + case "unsafe": + return types.Unsafe + } + + if pkg := r.p.imports[path]; pkg != nil { + return pkg + } + + name := r.String() + + pkg := types.NewPackage(path, name) + r.p.imports[path] = pkg + + imports := make([]*types.Package, r.Len()) + for i := range imports { + imports[i] = r.pkg() + } + pkg.SetImports(imports) + + return pkg +} + +// @@@ Types + +func (r *reader) typ() types.Type { + return r.p.typIdx(r.typInfo(), r.dict) +} + +func (r *reader) typInfo() typeInfo { + r.Sync(pkgbits.SyncType) + if r.Bool() { + return typeInfo{idx: pkgbits.Index(r.Len()), derived: true} + } + return typeInfo{idx: r.Reloc(pkgbits.RelocType), derived: false} +} + +func (pr *pkgReader) typIdx(info typeInfo, dict *readerDict) types.Type { + idx := info.idx + var where *types.Type + if info.derived { + where = &dict.derivedTypes[idx] + idx = dict.derived[idx].idx + } else { + where = &pr.typs[idx] + } + + if typ := *where; typ != nil { + return typ + } + + r := pr.newReader(pkgbits.RelocType, idx, pkgbits.SyncTypeIdx) + r.dict = dict + + typ := r.doTyp() + assert(typ != nil) + + // See comment in pkgReader.typIdx explaining how this happens. + if prev := *where; prev != nil { + return prev + } + + *where = typ + return typ +} + +func (r *reader) doTyp() (res types.Type) { + switch tag := pkgbits.CodeType(r.Code(pkgbits.SyncType)); tag { + default: + errorf("unhandled type tag: %v", tag) + panic("unreachable") + + case pkgbits.TypeBasic: + return types.Typ[r.Len()] + + case pkgbits.TypeNamed: + obj, targs := r.obj() + name := obj.(*types.TypeName) + if len(targs) != 0 { + t, _ := types.Instantiate(r.p.ctxt, name.Type(), targs, false) + return t + } + return name.Type() + + case pkgbits.TypeTypeParam: + return r.dict.tparams[r.Len()] + + case pkgbits.TypeArray: + len := int64(r.Uint64()) + return types.NewArray(r.typ(), len) + case pkgbits.TypeChan: + dir := types.ChanDir(r.Len()) + return types.NewChan(dir, r.typ()) + case pkgbits.TypeMap: + return types.NewMap(r.typ(), r.typ()) + case pkgbits.TypePointer: + return types.NewPointer(r.typ()) + case pkgbits.TypeSignature: + return r.signature(nil, nil, nil) + case pkgbits.TypeSlice: + return types.NewSlice(r.typ()) + case pkgbits.TypeStruct: + return r.structType() + case pkgbits.TypeInterface: + return r.interfaceType() + case pkgbits.TypeUnion: + return r.unionType() + } +} + +func (r *reader) structType() *types.Struct { + fields := make([]*types.Var, r.Len()) + var tags []string + for i := range fields { + pos := r.pos() + pkg, name := r.selector() + ftyp := r.typ() + tag := r.String() + embedded := r.Bool() + + fields[i] = types.NewField(pos, pkg, name, ftyp, embedded) + if tag != "" { + for len(tags) < i { + tags = append(tags, "") + } + tags = append(tags, tag) + } + } + return types.NewStruct(fields, tags) +} + +func (r *reader) unionType() *types.Union { + terms := make([]*types.Term, r.Len()) + for i := range terms { + terms[i] = types.NewTerm(r.Bool(), r.typ()) + } + return types.NewUnion(terms) +} + +func (r *reader) interfaceType() *types.Interface { + methods := make([]*types.Func, r.Len()) + embeddeds := make([]types.Type, r.Len()) + implicit := len(methods) == 0 && len(embeddeds) == 1 && r.Bool() + + for i := range methods { + pos := r.pos() + pkg, name := r.selector() + mtyp := r.signature(nil, nil, nil) + methods[i] = types.NewFunc(pos, pkg, name, mtyp) + } + + for i := range embeddeds { + embeddeds[i] = r.typ() + } + + iface := types.NewInterfaceType(methods, embeddeds) + if implicit { + iface.MarkImplicit() + } + return iface +} + +func (r *reader) signature(recv *types.Var, rtparams, tparams []*types.TypeParam) *types.Signature { + r.Sync(pkgbits.SyncSignature) + + params := r.params() + results := r.params() + variadic := r.Bool() + + return types.NewSignatureType(recv, rtparams, tparams, params, results, variadic) +} + +func (r *reader) params() *types.Tuple { + r.Sync(pkgbits.SyncParams) + + params := make([]*types.Var, r.Len()) + for i := range params { + params[i] = r.param() + } + + return types.NewTuple(params...) +} + +func (r *reader) param() *types.Var { + r.Sync(pkgbits.SyncParam) + + pos := r.pos() + pkg, name := r.localIdent() + typ := r.typ() + + return types.NewParam(pos, pkg, name, typ) +} + +// @@@ Objects + +func (r *reader) obj() (types.Object, []types.Type) { + r.Sync(pkgbits.SyncObject) + + assert(!r.Bool()) + + pkg, name := r.p.objIdx(r.Reloc(pkgbits.RelocObj)) + obj := pkgScope(pkg).Lookup(name) + + targs := make([]types.Type, r.Len()) + for i := range targs { + targs[i] = r.typ() + } + + return obj, targs +} + +func (pr *pkgReader) objIdx(idx pkgbits.Index) (*types.Package, string) { + rname := pr.newReader(pkgbits.RelocName, idx, pkgbits.SyncObject1) + + objPkg, objName := rname.qualifiedIdent() + assert(objName != "") + + tag := pkgbits.CodeObj(rname.Code(pkgbits.SyncCodeObj)) + + if tag == pkgbits.ObjStub { + assert(objPkg == nil || objPkg == types.Unsafe) + return objPkg, objName + } + + if objPkg.Scope().Lookup(objName) == nil { + dict := pr.objDictIdx(idx) + + r := pr.newReader(pkgbits.RelocObj, idx, pkgbits.SyncObject1) + r.dict = dict + + declare := func(obj types.Object) { + objPkg.Scope().Insert(obj) + } + + switch tag { + default: + panic("weird") + + case pkgbits.ObjAlias: + pos := r.pos() + typ := r.typ() + declare(types.NewTypeName(pos, objPkg, objName, typ)) + + case pkgbits.ObjConst: + pos := r.pos() + typ := r.typ() + val := r.Value() + declare(types.NewConst(pos, objPkg, objName, typ, val)) + + case pkgbits.ObjFunc: + pos := r.pos() + tparams := r.typeParamNames() + sig := r.signature(nil, nil, tparams) + declare(types.NewFunc(pos, objPkg, objName, sig)) + + case pkgbits.ObjType: + pos := r.pos() + + obj := types.NewTypeName(pos, objPkg, objName, nil) + named := types.NewNamed(obj, nil, nil) + declare(obj) + + named.SetTypeParams(r.typeParamNames()) + + // TODO(mdempsky): Rewrite receiver types to underlying is an + // Interface? The go/types importer does this (I think because + // unit tests expected that), but cmd/compile doesn't care + // about it, so maybe we can avoid worrying about that here. + rhs := r.typ() + r.p.later(func() { + underlying := rhs.Underlying() + named.SetUnderlying(underlying) + }) + + for i, n := 0, r.Len(); i < n; i++ { + named.AddMethod(r.method()) + } + + case pkgbits.ObjVar: + pos := r.pos() + typ := r.typ() + declare(types.NewVar(pos, objPkg, objName, typ)) + } + } + + return objPkg, objName +} + +func (pr *pkgReader) objDictIdx(idx pkgbits.Index) *readerDict { + r := pr.newReader(pkgbits.RelocObjDict, idx, pkgbits.SyncObject1) + + var dict readerDict + + if implicits := r.Len(); implicits != 0 { + errorf("unexpected object with %v implicit type parameter(s)", implicits) + } + + dict.bounds = make([]typeInfo, r.Len()) + for i := range dict.bounds { + dict.bounds[i] = r.typInfo() + } + + dict.derived = make([]derivedInfo, r.Len()) + dict.derivedTypes = make([]types.Type, len(dict.derived)) + for i := range dict.derived { + dict.derived[i] = derivedInfo{r.Reloc(pkgbits.RelocType), r.Bool()} + } + + // function references follow, but reader doesn't need those + + return &dict +} + +func (r *reader) typeParamNames() []*types.TypeParam { + r.Sync(pkgbits.SyncTypeParamNames) + + // Note: This code assumes it only processes objects without + // implement type parameters. This is currently fine, because + // reader is only used to read in exported declarations, which are + // always package scoped. + + if len(r.dict.bounds) == 0 { + return nil + } + + // Careful: Type parameter lists may have cycles. To allow for this, + // we construct the type parameter list in two passes: first we + // create all the TypeNames and TypeParams, then we construct and + // set the bound type. + + r.dict.tparams = make([]*types.TypeParam, len(r.dict.bounds)) + for i := range r.dict.bounds { + pos := r.pos() + pkg, name := r.localIdent() + + tname := types.NewTypeName(pos, pkg, name, nil) + r.dict.tparams[i] = types.NewTypeParam(tname, nil) + } + + typs := make([]types.Type, len(r.dict.bounds)) + for i, bound := range r.dict.bounds { + typs[i] = r.p.typIdx(bound, r.dict) + } + + // TODO(mdempsky): This is subtle, elaborate further. + // + // We have to save tparams outside of the closure, because + // typeParamNames() can be called multiple times with the same + // dictionary instance. + // + // Also, this needs to happen later to make sure SetUnderlying has + // been called. + // + // TODO(mdempsky): Is it safe to have a single "later" slice or do + // we need to have multiple passes? See comments on CL 386002 and + // go.dev/issue/52104. + tparams := r.dict.tparams + r.p.later(func() { + for i, typ := range typs { + tparams[i].SetConstraint(typ) + } + }) + + return r.dict.tparams +} + +func (r *reader) method() *types.Func { + r.Sync(pkgbits.SyncMethod) + pos := r.pos() + pkg, name := r.selector() + + rparams := r.typeParamNames() + sig := r.signature(r.param(), rparams, nil) + + _ = r.pos() // TODO(mdempsky): Remove; this is a hacker for linker.go. + return types.NewFunc(pos, pkg, name, sig) +} + +func (r *reader) qualifiedIdent() (*types.Package, string) { return r.ident(pkgbits.SyncSym) } +func (r *reader) localIdent() (*types.Package, string) { return r.ident(pkgbits.SyncLocalIdent) } +func (r *reader) selector() (*types.Package, string) { return r.ident(pkgbits.SyncSelector) } + +func (r *reader) ident(marker pkgbits.SyncMarker) (*types.Package, string) { + r.Sync(marker) + return r.pkg(), r.String() +} + +// pkgScope returns pkg.Scope(). +// If pkg is nil, it returns types.Universe instead. +// +// TODO(mdempsky): Remove after x/tools can depend on Go 1.19. +func pkgScope(pkg *types.Package) *types.Scope { + if pkg != nil { + return pkg.Scope() + } + return types.Universe +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/codes.go b/vendor/golang.org/x/tools/go/internal/pkgbits/codes.go new file mode 100644 index 000000000..f0cabde96 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/codes.go @@ -0,0 +1,77 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package pkgbits + +// A Code is an enum value that can be encoded into bitstreams. +// +// Code types are preferable for enum types, because they allow +// Decoder to detect desyncs. +type Code interface { + // Marker returns the SyncMarker for the Code's dynamic type. + Marker() SyncMarker + + // Value returns the Code's ordinal value. + Value() int +} + +// A CodeVal distinguishes among go/constant.Value encodings. +type CodeVal int + +func (c CodeVal) Marker() SyncMarker { return SyncVal } +func (c CodeVal) Value() int { return int(c) } + +// Note: These values are public and cannot be changed without +// updating the go/types importers. + +const ( + ValBool CodeVal = iota + ValString + ValInt64 + ValBigInt + ValBigRat + ValBigFloat +) + +// A CodeType distinguishes among go/types.Type encodings. +type CodeType int + +func (c CodeType) Marker() SyncMarker { return SyncType } +func (c CodeType) Value() int { return int(c) } + +// Note: These values are public and cannot be changed without +// updating the go/types importers. + +const ( + TypeBasic CodeType = iota + TypeNamed + TypePointer + TypeSlice + TypeArray + TypeChan + TypeMap + TypeSignature + TypeStruct + TypeInterface + TypeUnion + TypeTypeParam +) + +// A CodeObj distinguishes among go/types.Object encodings. +type CodeObj int + +func (c CodeObj) Marker() SyncMarker { return SyncCodeObj } +func (c CodeObj) Value() int { return int(c) } + +// Note: These values are public and cannot be changed without +// updating the go/types importers. + +const ( + ObjAlias CodeObj = iota + ObjConst + ObjType + ObjFunc + ObjVar + ObjStub +) diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/decoder.go b/vendor/golang.org/x/tools/go/internal/pkgbits/decoder.go new file mode 100644 index 000000000..2bc793668 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/decoder.go @@ -0,0 +1,433 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package pkgbits + +import ( + "encoding/binary" + "fmt" + "go/constant" + "go/token" + "math/big" + "os" + "runtime" + "strings" +) + +// A PkgDecoder provides methods for decoding a package's Unified IR +// export data. +type PkgDecoder struct { + // version is the file format version. + version uint32 + + // sync indicates whether the file uses sync markers. + sync bool + + // pkgPath is the package path for the package to be decoded. + // + // TODO(mdempsky): Remove; unneeded since CL 391014. + pkgPath string + + // elemData is the full data payload of the encoded package. + // Elements are densely and contiguously packed together. + // + // The last 8 bytes of elemData are the package fingerprint. + elemData string + + // elemEnds stores the byte-offset end positions of element + // bitstreams within elemData. + // + // For example, element I's bitstream data starts at elemEnds[I-1] + // (or 0, if I==0) and ends at elemEnds[I]. + // + // Note: elemEnds is indexed by absolute indices, not + // section-relative indices. + elemEnds []uint32 + + // elemEndsEnds stores the index-offset end positions of relocation + // sections within elemEnds. + // + // For example, section K's end positions start at elemEndsEnds[K-1] + // (or 0, if K==0) and end at elemEndsEnds[K]. + elemEndsEnds [numRelocs]uint32 +} + +// PkgPath returns the package path for the package +// +// TODO(mdempsky): Remove; unneeded since CL 391014. +func (pr *PkgDecoder) PkgPath() string { return pr.pkgPath } + +// SyncMarkers reports whether pr uses sync markers. +func (pr *PkgDecoder) SyncMarkers() bool { return pr.sync } + +// NewPkgDecoder returns a PkgDecoder initialized to read the Unified +// IR export data from input. pkgPath is the package path for the +// compilation unit that produced the export data. +// +// TODO(mdempsky): Remove pkgPath parameter; unneeded since CL 391014. +func NewPkgDecoder(pkgPath, input string) PkgDecoder { + pr := PkgDecoder{ + pkgPath: pkgPath, + } + + // TODO(mdempsky): Implement direct indexing of input string to + // avoid copying the position information. + + r := strings.NewReader(input) + + assert(binary.Read(r, binary.LittleEndian, &pr.version) == nil) + + switch pr.version { + default: + panic(fmt.Errorf("unsupported version: %v", pr.version)) + case 0: + // no flags + case 1: + var flags uint32 + assert(binary.Read(r, binary.LittleEndian, &flags) == nil) + pr.sync = flags&flagSyncMarkers != 0 + } + + assert(binary.Read(r, binary.LittleEndian, pr.elemEndsEnds[:]) == nil) + + pr.elemEnds = make([]uint32, pr.elemEndsEnds[len(pr.elemEndsEnds)-1]) + assert(binary.Read(r, binary.LittleEndian, pr.elemEnds[:]) == nil) + + pos, err := r.Seek(0, os.SEEK_CUR) + assert(err == nil) + + pr.elemData = input[pos:] + assert(len(pr.elemData)-8 == int(pr.elemEnds[len(pr.elemEnds)-1])) + + return pr +} + +// NumElems returns the number of elements in section k. +func (pr *PkgDecoder) NumElems(k RelocKind) int { + count := int(pr.elemEndsEnds[k]) + if k > 0 { + count -= int(pr.elemEndsEnds[k-1]) + } + return count +} + +// TotalElems returns the total number of elements across all sections. +func (pr *PkgDecoder) TotalElems() int { + return len(pr.elemEnds) +} + +// Fingerprint returns the package fingerprint. +func (pr *PkgDecoder) Fingerprint() [8]byte { + var fp [8]byte + copy(fp[:], pr.elemData[len(pr.elemData)-8:]) + return fp +} + +// AbsIdx returns the absolute index for the given (section, index) +// pair. +func (pr *PkgDecoder) AbsIdx(k RelocKind, idx Index) int { + absIdx := int(idx) + if k > 0 { + absIdx += int(pr.elemEndsEnds[k-1]) + } + if absIdx >= int(pr.elemEndsEnds[k]) { + errorf("%v:%v is out of bounds; %v", k, idx, pr.elemEndsEnds) + } + return absIdx +} + +// DataIdx returns the raw element bitstream for the given (section, +// index) pair. +func (pr *PkgDecoder) DataIdx(k RelocKind, idx Index) string { + absIdx := pr.AbsIdx(k, idx) + + var start uint32 + if absIdx > 0 { + start = pr.elemEnds[absIdx-1] + } + end := pr.elemEnds[absIdx] + + return pr.elemData[start:end] +} + +// StringIdx returns the string value for the given string index. +func (pr *PkgDecoder) StringIdx(idx Index) string { + return pr.DataIdx(RelocString, idx) +} + +// NewDecoder returns a Decoder for the given (section, index) pair, +// and decodes the given SyncMarker from the element bitstream. +func (pr *PkgDecoder) NewDecoder(k RelocKind, idx Index, marker SyncMarker) Decoder { + r := pr.NewDecoderRaw(k, idx) + r.Sync(marker) + return r +} + +// NewDecoderRaw returns a Decoder for the given (section, index) pair. +// +// Most callers should use NewDecoder instead. +func (pr *PkgDecoder) NewDecoderRaw(k RelocKind, idx Index) Decoder { + r := Decoder{ + common: pr, + k: k, + Idx: idx, + } + + // TODO(mdempsky) r.data.Reset(...) after #44505 is resolved. + r.Data = *strings.NewReader(pr.DataIdx(k, idx)) + + r.Sync(SyncRelocs) + r.Relocs = make([]RelocEnt, r.Len()) + for i := range r.Relocs { + r.Sync(SyncReloc) + r.Relocs[i] = RelocEnt{RelocKind(r.Len()), Index(r.Len())} + } + + return r +} + +// A Decoder provides methods for decoding an individual element's +// bitstream data. +type Decoder struct { + common *PkgDecoder + + Relocs []RelocEnt + Data strings.Reader + + k RelocKind + Idx Index +} + +func (r *Decoder) checkErr(err error) { + if err != nil { + errorf("unexpected decoding error: %w", err) + } +} + +func (r *Decoder) rawUvarint() uint64 { + x, err := binary.ReadUvarint(&r.Data) + r.checkErr(err) + return x +} + +func (r *Decoder) rawVarint() int64 { + ux := r.rawUvarint() + + // Zig-zag decode. + x := int64(ux >> 1) + if ux&1 != 0 { + x = ^x + } + return x +} + +func (r *Decoder) rawReloc(k RelocKind, idx int) Index { + e := r.Relocs[idx] + assert(e.Kind == k) + return e.Idx +} + +// Sync decodes a sync marker from the element bitstream and asserts +// that it matches the expected marker. +// +// If r.common.sync is false, then Sync is a no-op. +func (r *Decoder) Sync(mWant SyncMarker) { + if !r.common.sync { + return + } + + pos, _ := r.Data.Seek(0, os.SEEK_CUR) // TODO(mdempsky): io.SeekCurrent after #44505 is resolved + mHave := SyncMarker(r.rawUvarint()) + writerPCs := make([]int, r.rawUvarint()) + for i := range writerPCs { + writerPCs[i] = int(r.rawUvarint()) + } + + if mHave == mWant { + return + } + + // There's some tension here between printing: + // + // (1) full file paths that tools can recognize (e.g., so emacs + // hyperlinks the "file:line" text for easy navigation), or + // + // (2) short file paths that are easier for humans to read (e.g., by + // omitting redundant or irrelevant details, so it's easier to + // focus on the useful bits that remain). + // + // The current formatting favors the former, as it seems more + // helpful in practice. But perhaps the formatting could be improved + // to better address both concerns. For example, use relative file + // paths if they would be shorter, or rewrite file paths to contain + // "$GOROOT" (like objabi.AbsFile does) if tools can be taught how + // to reliably expand that again. + + fmt.Printf("export data desync: package %q, section %v, index %v, offset %v\n", r.common.pkgPath, r.k, r.Idx, pos) + + fmt.Printf("\nfound %v, written at:\n", mHave) + if len(writerPCs) == 0 { + fmt.Printf("\t[stack trace unavailable; recompile package %q with -d=syncframes]\n", r.common.pkgPath) + } + for _, pc := range writerPCs { + fmt.Printf("\t%s\n", r.common.StringIdx(r.rawReloc(RelocString, pc))) + } + + fmt.Printf("\nexpected %v, reading at:\n", mWant) + var readerPCs [32]uintptr // TODO(mdempsky): Dynamically size? + n := runtime.Callers(2, readerPCs[:]) + for _, pc := range fmtFrames(readerPCs[:n]...) { + fmt.Printf("\t%s\n", pc) + } + + // We already printed a stack trace for the reader, so now we can + // simply exit. Printing a second one with panic or base.Fatalf + // would just be noise. + os.Exit(1) +} + +// Bool decodes and returns a bool value from the element bitstream. +func (r *Decoder) Bool() bool { + r.Sync(SyncBool) + x, err := r.Data.ReadByte() + r.checkErr(err) + assert(x < 2) + return x != 0 +} + +// Int64 decodes and returns an int64 value from the element bitstream. +func (r *Decoder) Int64() int64 { + r.Sync(SyncInt64) + return r.rawVarint() +} + +// Int64 decodes and returns a uint64 value from the element bitstream. +func (r *Decoder) Uint64() uint64 { + r.Sync(SyncUint64) + return r.rawUvarint() +} + +// Len decodes and returns a non-negative int value from the element bitstream. +func (r *Decoder) Len() int { x := r.Uint64(); v := int(x); assert(uint64(v) == x); return v } + +// Int decodes and returns an int value from the element bitstream. +func (r *Decoder) Int() int { x := r.Int64(); v := int(x); assert(int64(v) == x); return v } + +// Uint decodes and returns a uint value from the element bitstream. +func (r *Decoder) Uint() uint { x := r.Uint64(); v := uint(x); assert(uint64(v) == x); return v } + +// Code decodes a Code value from the element bitstream and returns +// its ordinal value. It's the caller's responsibility to convert the +// result to an appropriate Code type. +// +// TODO(mdempsky): Ideally this method would have signature "Code[T +// Code] T" instead, but we don't allow generic methods and the +// compiler can't depend on generics yet anyway. +func (r *Decoder) Code(mark SyncMarker) int { + r.Sync(mark) + return r.Len() +} + +// Reloc decodes a relocation of expected section k from the element +// bitstream and returns an index to the referenced element. +func (r *Decoder) Reloc(k RelocKind) Index { + r.Sync(SyncUseReloc) + return r.rawReloc(k, r.Len()) +} + +// String decodes and returns a string value from the element +// bitstream. +func (r *Decoder) String() string { + r.Sync(SyncString) + return r.common.StringIdx(r.Reloc(RelocString)) +} + +// Strings decodes and returns a variable-length slice of strings from +// the element bitstream. +func (r *Decoder) Strings() []string { + res := make([]string, r.Len()) + for i := range res { + res[i] = r.String() + } + return res +} + +// Value decodes and returns a constant.Value from the element +// bitstream. +func (r *Decoder) Value() constant.Value { + r.Sync(SyncValue) + isComplex := r.Bool() + val := r.scalar() + if isComplex { + val = constant.BinaryOp(val, token.ADD, constant.MakeImag(r.scalar())) + } + return val +} + +func (r *Decoder) scalar() constant.Value { + switch tag := CodeVal(r.Code(SyncVal)); tag { + default: + panic(fmt.Errorf("unexpected scalar tag: %v", tag)) + + case ValBool: + return constant.MakeBool(r.Bool()) + case ValString: + return constant.MakeString(r.String()) + case ValInt64: + return constant.MakeInt64(r.Int64()) + case ValBigInt: + return constant.Make(r.bigInt()) + case ValBigRat: + num := r.bigInt() + denom := r.bigInt() + return constant.Make(new(big.Rat).SetFrac(num, denom)) + case ValBigFloat: + return constant.Make(r.bigFloat()) + } +} + +func (r *Decoder) bigInt() *big.Int { + v := new(big.Int).SetBytes([]byte(r.String())) + if r.Bool() { + v.Neg(v) + } + return v +} + +func (r *Decoder) bigFloat() *big.Float { + v := new(big.Float).SetPrec(512) + assert(v.UnmarshalText([]byte(r.String())) == nil) + return v +} + +// @@@ Helpers + +// TODO(mdempsky): These should probably be removed. I think they're a +// smell that the export data format is not yet quite right. + +// PeekPkgPath returns the package path for the specified package +// index. +func (pr *PkgDecoder) PeekPkgPath(idx Index) string { + r := pr.NewDecoder(RelocPkg, idx, SyncPkgDef) + path := r.String() + if path == "" { + path = pr.pkgPath + } + return path +} + +// PeekObj returns the package path, object name, and CodeObj for the +// specified object index. +func (pr *PkgDecoder) PeekObj(idx Index) (string, string, CodeObj) { + r := pr.NewDecoder(RelocName, idx, SyncObject1) + r.Sync(SyncSym) + r.Sync(SyncPkg) + path := pr.PeekPkgPath(r.Reloc(RelocPkg)) + name := r.String() + assert(name != "") + + tag := CodeObj(r.Code(SyncCodeObj)) + + return path, name, tag +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/doc.go b/vendor/golang.org/x/tools/go/internal/pkgbits/doc.go new file mode 100644 index 000000000..c8a2796b5 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/doc.go @@ -0,0 +1,32 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package pkgbits implements low-level coding abstractions for +// Unified IR's export data format. +// +// At a low-level, a package is a collection of bitstream elements. +// Each element has a "kind" and a dense, non-negative index. +// Elements can be randomly accessed given their kind and index. +// +// Individual elements are sequences of variable-length values (e.g., +// integers, booleans, strings, go/constant values, cross-references +// to other elements). Package pkgbits provides APIs for encoding and +// decoding these low-level values, but the details of mapping +// higher-level Go constructs into elements is left to higher-level +// abstractions. +// +// Elements may cross-reference each other with "relocations." For +// example, an element representing a pointer type has a relocation +// referring to the element type. +// +// Go constructs may be composed as a constellation of multiple +// elements. For example, a declared function may have one element to +// describe the object (e.g., its name, type, position), and a +// separate element to describe its function body. This allows readers +// some flexibility in efficiently seeking or re-reading data (e.g., +// inlining requires re-reading the function body for each inlined +// call, without needing to re-read the object-level details). +// +// This is a copy of internal/pkgbits in the Go implementation. +package pkgbits diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/encoder.go b/vendor/golang.org/x/tools/go/internal/pkgbits/encoder.go new file mode 100644 index 000000000..c50c838ca --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/encoder.go @@ -0,0 +1,379 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package pkgbits + +import ( + "bytes" + "crypto/md5" + "encoding/binary" + "go/constant" + "io" + "math/big" + "runtime" +) + +// currentVersion is the current version number. +// +// - v0: initial prototype +// +// - v1: adds the flags uint32 word +const currentVersion uint32 = 1 + +// A PkgEncoder provides methods for encoding a package's Unified IR +// export data. +type PkgEncoder struct { + // elems holds the bitstream for previously encoded elements. + elems [numRelocs][]string + + // stringsIdx maps previously encoded strings to their index within + // the RelocString section, to allow deduplication. That is, + // elems[RelocString][stringsIdx[s]] == s (if present). + stringsIdx map[string]Index + + // syncFrames is the number of frames to write at each sync + // marker. A negative value means sync markers are omitted. + syncFrames int +} + +// SyncMarkers reports whether pw uses sync markers. +func (pw *PkgEncoder) SyncMarkers() bool { return pw.syncFrames >= 0 } + +// NewPkgEncoder returns an initialized PkgEncoder. +// +// syncFrames is the number of caller frames that should be serialized +// at Sync points. Serializing additional frames results in larger +// export data files, but can help diagnosing desync errors in +// higher-level Unified IR reader/writer code. If syncFrames is +// negative, then sync markers are omitted entirely. +func NewPkgEncoder(syncFrames int) PkgEncoder { + return PkgEncoder{ + stringsIdx: make(map[string]Index), + syncFrames: syncFrames, + } +} + +// DumpTo writes the package's encoded data to out0 and returns the +// package fingerprint. +func (pw *PkgEncoder) DumpTo(out0 io.Writer) (fingerprint [8]byte) { + h := md5.New() + out := io.MultiWriter(out0, h) + + writeUint32 := func(x uint32) { + assert(binary.Write(out, binary.LittleEndian, x) == nil) + } + + writeUint32(currentVersion) + + var flags uint32 + if pw.SyncMarkers() { + flags |= flagSyncMarkers + } + writeUint32(flags) + + // Write elemEndsEnds. + var sum uint32 + for _, elems := range &pw.elems { + sum += uint32(len(elems)) + writeUint32(sum) + } + + // Write elemEnds. + sum = 0 + for _, elems := range &pw.elems { + for _, elem := range elems { + sum += uint32(len(elem)) + writeUint32(sum) + } + } + + // Write elemData. + for _, elems := range &pw.elems { + for _, elem := range elems { + _, err := io.WriteString(out, elem) + assert(err == nil) + } + } + + // Write fingerprint. + copy(fingerprint[:], h.Sum(nil)) + _, err := out0.Write(fingerprint[:]) + assert(err == nil) + + return +} + +// StringIdx adds a string value to the strings section, if not +// already present, and returns its index. +func (pw *PkgEncoder) StringIdx(s string) Index { + if idx, ok := pw.stringsIdx[s]; ok { + assert(pw.elems[RelocString][idx] == s) + return idx + } + + idx := Index(len(pw.elems[RelocString])) + pw.elems[RelocString] = append(pw.elems[RelocString], s) + pw.stringsIdx[s] = idx + return idx +} + +// NewEncoder returns an Encoder for a new element within the given +// section, and encodes the given SyncMarker as the start of the +// element bitstream. +func (pw *PkgEncoder) NewEncoder(k RelocKind, marker SyncMarker) Encoder { + e := pw.NewEncoderRaw(k) + e.Sync(marker) + return e +} + +// NewEncoderRaw returns an Encoder for a new element within the given +// section. +// +// Most callers should use NewEncoder instead. +func (pw *PkgEncoder) NewEncoderRaw(k RelocKind) Encoder { + idx := Index(len(pw.elems[k])) + pw.elems[k] = append(pw.elems[k], "") // placeholder + + return Encoder{ + p: pw, + k: k, + Idx: idx, + } +} + +// An Encoder provides methods for encoding an individual element's +// bitstream data. +type Encoder struct { + p *PkgEncoder + + Relocs []RelocEnt + Data bytes.Buffer // accumulated element bitstream data + + encodingRelocHeader bool + + k RelocKind + Idx Index // index within relocation section +} + +// Flush finalizes the element's bitstream and returns its Index. +func (w *Encoder) Flush() Index { + var sb bytes.Buffer // TODO(mdempsky): strings.Builder after #44505 is resolved + + // Backup the data so we write the relocations at the front. + var tmp bytes.Buffer + io.Copy(&tmp, &w.Data) + + // TODO(mdempsky): Consider writing these out separately so they're + // easier to strip, along with function bodies, so that we can prune + // down to just the data that's relevant to go/types. + if w.encodingRelocHeader { + panic("encodingRelocHeader already true; recursive flush?") + } + w.encodingRelocHeader = true + w.Sync(SyncRelocs) + w.Len(len(w.Relocs)) + for _, rEnt := range w.Relocs { + w.Sync(SyncReloc) + w.Len(int(rEnt.Kind)) + w.Len(int(rEnt.Idx)) + } + + io.Copy(&sb, &w.Data) + io.Copy(&sb, &tmp) + w.p.elems[w.k][w.Idx] = sb.String() + + return w.Idx +} + +func (w *Encoder) checkErr(err error) { + if err != nil { + errorf("unexpected encoding error: %v", err) + } +} + +func (w *Encoder) rawUvarint(x uint64) { + var buf [binary.MaxVarintLen64]byte + n := binary.PutUvarint(buf[:], x) + _, err := w.Data.Write(buf[:n]) + w.checkErr(err) +} + +func (w *Encoder) rawVarint(x int64) { + // Zig-zag encode. + ux := uint64(x) << 1 + if x < 0 { + ux = ^ux + } + + w.rawUvarint(ux) +} + +func (w *Encoder) rawReloc(r RelocKind, idx Index) int { + // TODO(mdempsky): Use map for lookup; this takes quadratic time. + for i, rEnt := range w.Relocs { + if rEnt.Kind == r && rEnt.Idx == idx { + return i + } + } + + i := len(w.Relocs) + w.Relocs = append(w.Relocs, RelocEnt{r, idx}) + return i +} + +func (w *Encoder) Sync(m SyncMarker) { + if !w.p.SyncMarkers() { + return + } + + // Writing out stack frame string references requires working + // relocations, but writing out the relocations themselves involves + // sync markers. To prevent infinite recursion, we simply trim the + // stack frame for sync markers within the relocation header. + var frames []string + if !w.encodingRelocHeader && w.p.syncFrames > 0 { + pcs := make([]uintptr, w.p.syncFrames) + n := runtime.Callers(2, pcs) + frames = fmtFrames(pcs[:n]...) + } + + // TODO(mdempsky): Save space by writing out stack frames as a + // linked list so we can share common stack frames. + w.rawUvarint(uint64(m)) + w.rawUvarint(uint64(len(frames))) + for _, frame := range frames { + w.rawUvarint(uint64(w.rawReloc(RelocString, w.p.StringIdx(frame)))) + } +} + +// Bool encodes and writes a bool value into the element bitstream, +// and then returns the bool value. +// +// For simple, 2-alternative encodings, the idiomatic way to call Bool +// is something like: +// +// if w.Bool(x != 0) { +// // alternative #1 +// } else { +// // alternative #2 +// } +// +// For multi-alternative encodings, use Code instead. +func (w *Encoder) Bool(b bool) bool { + w.Sync(SyncBool) + var x byte + if b { + x = 1 + } + err := w.Data.WriteByte(x) + w.checkErr(err) + return b +} + +// Int64 encodes and writes an int64 value into the element bitstream. +func (w *Encoder) Int64(x int64) { + w.Sync(SyncInt64) + w.rawVarint(x) +} + +// Uint64 encodes and writes a uint64 value into the element bitstream. +func (w *Encoder) Uint64(x uint64) { + w.Sync(SyncUint64) + w.rawUvarint(x) +} + +// Len encodes and writes a non-negative int value into the element bitstream. +func (w *Encoder) Len(x int) { assert(x >= 0); w.Uint64(uint64(x)) } + +// Int encodes and writes an int value into the element bitstream. +func (w *Encoder) Int(x int) { w.Int64(int64(x)) } + +// Len encodes and writes a uint value into the element bitstream. +func (w *Encoder) Uint(x uint) { w.Uint64(uint64(x)) } + +// Reloc encodes and writes a relocation for the given (section, +// index) pair into the element bitstream. +// +// Note: Only the index is formally written into the element +// bitstream, so bitstream decoders must know from context which +// section an encoded relocation refers to. +func (w *Encoder) Reloc(r RelocKind, idx Index) { + w.Sync(SyncUseReloc) + w.Len(w.rawReloc(r, idx)) +} + +// Code encodes and writes a Code value into the element bitstream. +func (w *Encoder) Code(c Code) { + w.Sync(c.Marker()) + w.Len(c.Value()) +} + +// String encodes and writes a string value into the element +// bitstream. +// +// Internally, strings are deduplicated by adding them to the strings +// section (if not already present), and then writing a relocation +// into the element bitstream. +func (w *Encoder) String(s string) { + w.Sync(SyncString) + w.Reloc(RelocString, w.p.StringIdx(s)) +} + +// Strings encodes and writes a variable-length slice of strings into +// the element bitstream. +func (w *Encoder) Strings(ss []string) { + w.Len(len(ss)) + for _, s := range ss { + w.String(s) + } +} + +// Value encodes and writes a constant.Value into the element +// bitstream. +func (w *Encoder) Value(val constant.Value) { + w.Sync(SyncValue) + if w.Bool(val.Kind() == constant.Complex) { + w.scalar(constant.Real(val)) + w.scalar(constant.Imag(val)) + } else { + w.scalar(val) + } +} + +func (w *Encoder) scalar(val constant.Value) { + switch v := constant.Val(val).(type) { + default: + errorf("unhandled %v (%v)", val, val.Kind()) + case bool: + w.Code(ValBool) + w.Bool(v) + case string: + w.Code(ValString) + w.String(v) + case int64: + w.Code(ValInt64) + w.Int64(v) + case *big.Int: + w.Code(ValBigInt) + w.bigInt(v) + case *big.Rat: + w.Code(ValBigRat) + w.bigInt(v.Num()) + w.bigInt(v.Denom()) + case *big.Float: + w.Code(ValBigFloat) + w.bigFloat(v) + } +} + +func (w *Encoder) bigInt(v *big.Int) { + b := v.Bytes() + w.String(string(b)) // TODO: More efficient encoding. + w.Bool(v.Sign() < 0) +} + +func (w *Encoder) bigFloat(v *big.Float) { + b := v.Append(nil, 'p', -1) + w.String(string(b)) // TODO: More efficient encoding. +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/flags.go b/vendor/golang.org/x/tools/go/internal/pkgbits/flags.go new file mode 100644 index 000000000..654222745 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/flags.go @@ -0,0 +1,9 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package pkgbits + +const ( + flagSyncMarkers = 1 << iota // file format contains sync markers +) diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go1.go b/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go1.go new file mode 100644 index 000000000..5294f6a63 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go1.go @@ -0,0 +1,21 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.7 +// +build !go1.7 + +// TODO(mdempsky): Remove after #44505 is resolved + +package pkgbits + +import "runtime" + +func walkFrames(pcs []uintptr, visit frameVisitor) { + for _, pc := range pcs { + fn := runtime.FuncForPC(pc) + file, line := fn.FileLine(pc) + + visit(file, line, fn.Name(), pc-fn.Entry()) + } +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go17.go b/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go17.go new file mode 100644 index 000000000..2324ae7ad --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/frames_go17.go @@ -0,0 +1,28 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.7 +// +build go1.7 + +package pkgbits + +import "runtime" + +// walkFrames calls visit for each call frame represented by pcs. +// +// pcs should be a slice of PCs, as returned by runtime.Callers. +func walkFrames(pcs []uintptr, visit frameVisitor) { + if len(pcs) == 0 { + return + } + + frames := runtime.CallersFrames(pcs) + for { + frame, more := frames.Next() + visit(frame.File, frame.Line, frame.Function, frame.PC-frame.Entry) + if !more { + return + } + } +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/reloc.go b/vendor/golang.org/x/tools/go/internal/pkgbits/reloc.go new file mode 100644 index 000000000..7a8f04ab3 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/reloc.go @@ -0,0 +1,42 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package pkgbits + +// A RelocKind indicates a particular section within a unified IR export. +type RelocKind int + +// An Index represents a bitstream element index within a particular +// section. +type Index int + +// A relocEnt (relocation entry) is an entry in an element's local +// reference table. +// +// TODO(mdempsky): Rename this too. +type RelocEnt struct { + Kind RelocKind + Idx Index +} + +// Reserved indices within the meta relocation section. +const ( + PublicRootIdx Index = 0 + PrivateRootIdx Index = 1 +) + +const ( + RelocString RelocKind = iota + RelocMeta + RelocPosBase + RelocPkg + RelocName + RelocType + RelocObj + RelocObjExt + RelocObjDict + RelocBody + + numRelocs = iota +) diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/support.go b/vendor/golang.org/x/tools/go/internal/pkgbits/support.go new file mode 100644 index 000000000..ad26d3b28 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/support.go @@ -0,0 +1,17 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package pkgbits + +import "fmt" + +func assert(b bool) { + if !b { + panic("assertion failed") + } +} + +func errorf(format string, args ...interface{}) { + panic(fmt.Errorf(format, args...)) +} diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/sync.go b/vendor/golang.org/x/tools/go/internal/pkgbits/sync.go new file mode 100644 index 000000000..5bd51ef71 --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/sync.go @@ -0,0 +1,113 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package pkgbits + +import ( + "fmt" + "strings" +) + +// fmtFrames formats a backtrace for reporting reader/writer desyncs. +func fmtFrames(pcs ...uintptr) []string { + res := make([]string, 0, len(pcs)) + walkFrames(pcs, func(file string, line int, name string, offset uintptr) { + // Trim package from function name. It's just redundant noise. + name = strings.TrimPrefix(name, "cmd/compile/internal/noder.") + + res = append(res, fmt.Sprintf("%s:%v: %s +0x%v", file, line, name, offset)) + }) + return res +} + +type frameVisitor func(file string, line int, name string, offset uintptr) + +// SyncMarker is an enum type that represents markers that may be +// written to export data to ensure the reader and writer stay +// synchronized. +type SyncMarker int + +//go:generate stringer -type=SyncMarker -trimprefix=Sync + +const ( + _ SyncMarker = iota + + // Public markers (known to go/types importers). + + // Low-level coding markers. + SyncEOF + SyncBool + SyncInt64 + SyncUint64 + SyncString + SyncValue + SyncVal + SyncRelocs + SyncReloc + SyncUseReloc + + // Higher-level object and type markers. + SyncPublic + SyncPos + SyncPosBase + SyncObject + SyncObject1 + SyncPkg + SyncPkgDef + SyncMethod + SyncType + SyncTypeIdx + SyncTypeParamNames + SyncSignature + SyncParams + SyncParam + SyncCodeObj + SyncSym + SyncLocalIdent + SyncSelector + + // Private markers (only known to cmd/compile). + SyncPrivate + + SyncFuncExt + SyncVarExt + SyncTypeExt + SyncPragma + + SyncExprList + SyncExprs + SyncExpr + SyncExprType + SyncAssign + SyncOp + SyncFuncLit + SyncCompLit + + SyncDecl + SyncFuncBody + SyncOpenScope + SyncCloseScope + SyncCloseAnotherScope + SyncDeclNames + SyncDeclName + + SyncStmts + SyncBlockStmt + SyncIfStmt + SyncForStmt + SyncSwitchStmt + SyncRangeStmt + SyncCaseClause + SyncCommClause + SyncSelectStmt + SyncDecls + SyncLabeledStmt + SyncUseObjLocal + SyncAddLocal + SyncLinkname + SyncStmt1 + SyncStmtsEnd + SyncLabel + SyncOptLabel +) diff --git a/vendor/golang.org/x/tools/go/internal/pkgbits/syncmarker_string.go b/vendor/golang.org/x/tools/go/internal/pkgbits/syncmarker_string.go new file mode 100644 index 000000000..4a5b0ca5f --- /dev/null +++ b/vendor/golang.org/x/tools/go/internal/pkgbits/syncmarker_string.go @@ -0,0 +1,89 @@ +// Code generated by "stringer -type=SyncMarker -trimprefix=Sync"; DO NOT EDIT. + +package pkgbits + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[SyncEOF-1] + _ = x[SyncBool-2] + _ = x[SyncInt64-3] + _ = x[SyncUint64-4] + _ = x[SyncString-5] + _ = x[SyncValue-6] + _ = x[SyncVal-7] + _ = x[SyncRelocs-8] + _ = x[SyncReloc-9] + _ = x[SyncUseReloc-10] + _ = x[SyncPublic-11] + _ = x[SyncPos-12] + _ = x[SyncPosBase-13] + _ = x[SyncObject-14] + _ = x[SyncObject1-15] + _ = x[SyncPkg-16] + _ = x[SyncPkgDef-17] + _ = x[SyncMethod-18] + _ = x[SyncType-19] + _ = x[SyncTypeIdx-20] + _ = x[SyncTypeParamNames-21] + _ = x[SyncSignature-22] + _ = x[SyncParams-23] + _ = x[SyncParam-24] + _ = x[SyncCodeObj-25] + _ = x[SyncSym-26] + _ = x[SyncLocalIdent-27] + _ = x[SyncSelector-28] + _ = x[SyncPrivate-29] + _ = x[SyncFuncExt-30] + _ = x[SyncVarExt-31] + _ = x[SyncTypeExt-32] + _ = x[SyncPragma-33] + _ = x[SyncExprList-34] + _ = x[SyncExprs-35] + _ = x[SyncExpr-36] + _ = x[SyncExprType-37] + _ = x[SyncAssign-38] + _ = x[SyncOp-39] + _ = x[SyncFuncLit-40] + _ = x[SyncCompLit-41] + _ = x[SyncDecl-42] + _ = x[SyncFuncBody-43] + _ = x[SyncOpenScope-44] + _ = x[SyncCloseScope-45] + _ = x[SyncCloseAnotherScope-46] + _ = x[SyncDeclNames-47] + _ = x[SyncDeclName-48] + _ = x[SyncStmts-49] + _ = x[SyncBlockStmt-50] + _ = x[SyncIfStmt-51] + _ = x[SyncForStmt-52] + _ = x[SyncSwitchStmt-53] + _ = x[SyncRangeStmt-54] + _ = x[SyncCaseClause-55] + _ = x[SyncCommClause-56] + _ = x[SyncSelectStmt-57] + _ = x[SyncDecls-58] + _ = x[SyncLabeledStmt-59] + _ = x[SyncUseObjLocal-60] + _ = x[SyncAddLocal-61] + _ = x[SyncLinkname-62] + _ = x[SyncStmt1-63] + _ = x[SyncStmtsEnd-64] + _ = x[SyncLabel-65] + _ = x[SyncOptLabel-66] +} + +const _SyncMarker_name = "EOFBoolInt64Uint64StringValueValRelocsRelocUseRelocPublicPosPosBaseObjectObject1PkgPkgDefMethodTypeTypeIdxTypeParamNamesSignatureParamsParamCodeObjSymLocalIdentSelectorPrivateFuncExtVarExtTypeExtPragmaExprListExprsExprExprTypeAssignOpFuncLitCompLitDeclFuncBodyOpenScopeCloseScopeCloseAnotherScopeDeclNamesDeclNameStmtsBlockStmtIfStmtForStmtSwitchStmtRangeStmtCaseClauseCommClauseSelectStmtDeclsLabeledStmtUseObjLocalAddLocalLinknameStmt1StmtsEndLabelOptLabel" + +var _SyncMarker_index = [...]uint16{0, 3, 7, 12, 18, 24, 29, 32, 38, 43, 51, 57, 60, 67, 73, 80, 83, 89, 95, 99, 106, 120, 129, 135, 140, 147, 150, 160, 168, 175, 182, 188, 195, 201, 209, 214, 218, 226, 232, 234, 241, 248, 252, 260, 269, 279, 296, 305, 313, 318, 327, 333, 340, 350, 359, 369, 379, 389, 394, 405, 416, 424, 432, 437, 445, 450, 458} + +func (i SyncMarker) String() string { + i -= 1 + if i < 0 || i >= SyncMarker(len(_SyncMarker_index)-1) { + return "SyncMarker(" + strconv.FormatInt(int64(i+1), 10) + ")" + } + return _SyncMarker_name[_SyncMarker_index[i]:_SyncMarker_index[i+1]] +} diff --git a/vendor/golang.org/x/tools/go/packages/doc.go b/vendor/golang.org/x/tools/go/packages/doc.go index 4bfe28a51..da4ab89fe 100644 --- a/vendor/golang.org/x/tools/go/packages/doc.go +++ b/vendor/golang.org/x/tools/go/packages/doc.go @@ -67,7 +67,6 @@ Most tools should pass their command-line arguments (after any flags) uninterpreted to the loader, so that the loader can interpret them according to the conventions of the underlying build system. See the Example function for typical usage. - */ package packages // import "golang.org/x/tools/go/packages" diff --git a/vendor/golang.org/x/tools/go/packages/golist.go b/vendor/golang.org/x/tools/go/packages/golist.go index 0e1e7f11f..de881562d 100644 --- a/vendor/golang.org/x/tools/go/packages/golist.go +++ b/vendor/golang.org/x/tools/go/packages/golist.go @@ -26,7 +26,6 @@ import ( "golang.org/x/tools/go/internal/packagesdriver" "golang.org/x/tools/internal/gocommand" "golang.org/x/tools/internal/packagesinternal" - "golang.org/x/xerrors" ) // debug controls verbose logging. @@ -303,11 +302,12 @@ func (state *golistState) runContainsQueries(response *responseDeduper, queries } dirResponse, err := state.createDriverResponse(pattern) - // If there was an error loading the package, or the package is returned - // with errors, try to load the file as an ad-hoc package. + // If there was an error loading the package, or no packages are returned, + // or the package is returned with errors, try to load the file as an + // ad-hoc package. // Usually the error will appear in a returned package, but may not if we're // in module mode and the ad-hoc is located outside a module. - if err != nil || len(dirResponse.Packages) == 1 && len(dirResponse.Packages[0].GoFiles) == 0 && + if err != nil || len(dirResponse.Packages) == 0 || len(dirResponse.Packages) == 1 && len(dirResponse.Packages[0].GoFiles) == 0 && len(dirResponse.Packages[0].Errors) == 1 { var queryErr error if dirResponse, queryErr = state.adhocPackage(pattern, query); queryErr != nil { @@ -393,6 +393,8 @@ type jsonPackage struct { CompiledGoFiles []string IgnoredGoFiles []string IgnoredOtherFiles []string + EmbedPatterns []string + EmbedFiles []string CFiles []string CgoFiles []string CXXFiles []string @@ -444,7 +446,11 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse // Run "go list" for complete // information on the specified packages. - buf, err := state.invokeGo("list", golistargs(state.cfg, words)...) + goVersion, err := state.getGoVersion() + if err != nil { + return nil, err + } + buf, err := state.invokeGo("list", golistargs(state.cfg, words, goVersion)...) if err != nil { return nil, err } @@ -565,6 +571,8 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse GoFiles: absJoin(p.Dir, p.GoFiles, p.CgoFiles), CompiledGoFiles: absJoin(p.Dir, p.CompiledGoFiles), OtherFiles: absJoin(p.Dir, otherFiles(p)...), + EmbedFiles: absJoin(p.Dir, p.EmbedFiles), + EmbedPatterns: absJoin(p.Dir, p.EmbedPatterns), IgnoredFiles: absJoin(p.Dir, p.IgnoredGoFiles, p.IgnoredOtherFiles), forTest: p.ForTest, depsErrors: p.DepsErrors, @@ -805,17 +813,83 @@ func absJoin(dir string, fileses ...[]string) (res []string) { return res } -func golistargs(cfg *Config, words []string) []string { +func jsonFlag(cfg *Config, goVersion int) string { + if goVersion < 19 { + return "-json" + } + var fields []string + added := make(map[string]bool) + addFields := func(fs ...string) { + for _, f := range fs { + if !added[f] { + added[f] = true + fields = append(fields, f) + } + } + } + addFields("Name", "ImportPath", "Error") // These fields are always needed + if cfg.Mode&NeedFiles != 0 || cfg.Mode&NeedTypes != 0 { + addFields("Dir", "GoFiles", "IgnoredGoFiles", "IgnoredOtherFiles", "CFiles", + "CgoFiles", "CXXFiles", "MFiles", "HFiles", "FFiles", "SFiles", + "SwigFiles", "SwigCXXFiles", "SysoFiles") + if cfg.Tests { + addFields("TestGoFiles", "XTestGoFiles") + } + } + if cfg.Mode&NeedTypes != 0 { + // CompiledGoFiles seems to be required for the test case TestCgoNoSyntax, + // even when -compiled isn't passed in. + // TODO(#52435): Should we make the test ask for -compiled, or automatically + // request CompiledGoFiles in certain circumstances? + addFields("Dir", "CompiledGoFiles") + } + if cfg.Mode&NeedCompiledGoFiles != 0 { + addFields("Dir", "CompiledGoFiles", "Export") + } + if cfg.Mode&NeedImports != 0 { + // When imports are requested, DepOnly is used to distinguish between packages + // explicitly requested and transitive imports of those packages. + addFields("DepOnly", "Imports", "ImportMap") + if cfg.Tests { + addFields("TestImports", "XTestImports") + } + } + if cfg.Mode&NeedDeps != 0 { + addFields("DepOnly") + } + if usesExportData(cfg) { + // Request Dir in the unlikely case Export is not absolute. + addFields("Dir", "Export") + } + if cfg.Mode&needInternalForTest != 0 { + addFields("ForTest") + } + if cfg.Mode&needInternalDepsErrors != 0 { + addFields("DepsErrors") + } + if cfg.Mode&NeedModule != 0 { + addFields("Module") + } + if cfg.Mode&NeedEmbedFiles != 0 { + addFields("EmbedFiles") + } + if cfg.Mode&NeedEmbedPatterns != 0 { + addFields("EmbedPatterns") + } + return "-json=" + strings.Join(fields, ",") +} + +func golistargs(cfg *Config, words []string, goVersion int) []string { const findFlags = NeedImports | NeedTypes | NeedSyntax | NeedTypesInfo fullargs := []string{ - "-e", "-json", + "-e", jsonFlag(cfg, goVersion), fmt.Sprintf("-compiled=%t", cfg.Mode&(NeedCompiledGoFiles|NeedSyntax|NeedTypes|NeedTypesInfo|NeedTypesSizes) != 0), fmt.Sprintf("-test=%t", cfg.Tests), fmt.Sprintf("-export=%t", usesExportData(cfg)), fmt.Sprintf("-deps=%t", cfg.Mode&NeedImports != 0), // go list doesn't let you pass -test and -find together, // probably because you'd just get the TestMain. - fmt.Sprintf("-find=%t", !cfg.Tests && cfg.Mode&findFlags == 0), + fmt.Sprintf("-find=%t", !cfg.Tests && cfg.Mode&findFlags == 0 && !usesExportData(cfg)), } fullargs = append(fullargs, cfg.BuildFlags...) fullargs = append(fullargs, "--") @@ -879,7 +953,7 @@ func (state *golistState) invokeGo(verb string, args ...string) (*bytes.Buffer, if !ok { // Catastrophic error: // - context cancellation - return nil, xerrors.Errorf("couldn't run 'go': %w", err) + return nil, fmt.Errorf("couldn't run 'go': %w", err) } // Old go version? diff --git a/vendor/golang.org/x/tools/go/packages/loadmode_string.go b/vendor/golang.org/x/tools/go/packages/loadmode_string.go index 7ea37e7ee..5c080d21b 100644 --- a/vendor/golang.org/x/tools/go/packages/loadmode_string.go +++ b/vendor/golang.org/x/tools/go/packages/loadmode_string.go @@ -15,7 +15,7 @@ var allModes = []LoadMode{ NeedCompiledGoFiles, NeedImports, NeedDeps, - NeedExportsFile, + NeedExportFile, NeedTypes, NeedSyntax, NeedTypesInfo, @@ -28,7 +28,7 @@ var modeStrings = []string{ "NeedCompiledGoFiles", "NeedImports", "NeedDeps", - "NeedExportsFile", + "NeedExportFile", "NeedTypes", "NeedSyntax", "NeedTypesInfo", diff --git a/vendor/golang.org/x/tools/go/packages/packages.go b/vendor/golang.org/x/tools/go/packages/packages.go index 1b5424e78..a93dc6add 100644 --- a/vendor/golang.org/x/tools/go/packages/packages.go +++ b/vendor/golang.org/x/tools/go/packages/packages.go @@ -39,9 +39,6 @@ import ( // Load may return more information than requested. type LoadMode int -// TODO(matloob): When a V2 of go/packages is released, rename NeedExportsFile to -// NeedExportFile to make it consistent with the Package field it's adding. - const ( // NeedName adds Name and PkgPath. NeedName LoadMode = 1 << iota @@ -59,8 +56,8 @@ const ( // NeedDeps adds the fields requested by the LoadMode in the packages in Imports. NeedDeps - // NeedExportsFile adds ExportFile. - NeedExportsFile + // NeedExportFile adds ExportFile. + NeedExportFile // NeedTypes adds Types, Fset, and IllTyped. NeedTypes @@ -74,12 +71,25 @@ const ( // NeedTypesSizes adds TypesSizes. NeedTypesSizes + // needInternalDepsErrors adds the internal deps errors field for use by gopls. + needInternalDepsErrors + + // needInternalForTest adds the internal forTest field. + // Tests must also be set on the context for this field to be populated. + needInternalForTest + // typecheckCgo enables full support for type checking cgo. Requires Go 1.15+. // Modifies CompiledGoFiles and Types, and has no effect on its own. typecheckCgo // NeedModule adds Module. NeedModule + + // NeedEmbedFiles adds EmbedFiles. + NeedEmbedFiles + + // NeedEmbedPatterns adds EmbedPatterns. + NeedEmbedPatterns ) const ( @@ -102,6 +112,9 @@ const ( // Deprecated: LoadAllSyntax exists for historical compatibility // and should not be used. Please directly specify the needed fields using the Need values. LoadAllSyntax = LoadSyntax | NeedDeps + + // Deprecated: NeedExportsFile is a historical misspelling of NeedExportFile. + NeedExportsFile = NeedExportFile ) // A Config specifies details about how packages should be loaded. @@ -296,6 +309,14 @@ type Package struct { // including assembly, C, C++, Fortran, Objective-C, SWIG, and so on. OtherFiles []string + // EmbedFiles lists the absolute file paths of the package's files + // embedded with go:embed. + EmbedFiles []string + + // EmbedPatterns lists the absolute file patterns of the package's + // files embedded with go:embed. + EmbedPatterns []string + // IgnoredFiles lists source files that are not part of the package // using the current build configuration but that might be part of // the package using other build configurations. @@ -389,6 +410,8 @@ func init() { config.(*Config).modFlag = value } packagesinternal.TypecheckCgo = int(typecheckCgo) + packagesinternal.DepsErrors = int(needInternalDepsErrors) + packagesinternal.ForTest = int(needInternalForTest) } // An Error describes a problem with a package's metadata, syntax, or types. @@ -431,6 +454,8 @@ type flatPackage struct { GoFiles []string `json:",omitempty"` CompiledGoFiles []string `json:",omitempty"` OtherFiles []string `json:",omitempty"` + EmbedFiles []string `json:",omitempty"` + EmbedPatterns []string `json:",omitempty"` IgnoredFiles []string `json:",omitempty"` ExportFile string `json:",omitempty"` Imports map[string]string `json:",omitempty"` @@ -454,6 +479,8 @@ func (p *Package) MarshalJSON() ([]byte, error) { GoFiles: p.GoFiles, CompiledGoFiles: p.CompiledGoFiles, OtherFiles: p.OtherFiles, + EmbedFiles: p.EmbedFiles, + EmbedPatterns: p.EmbedPatterns, IgnoredFiles: p.IgnoredFiles, ExportFile: p.ExportFile, } @@ -481,6 +508,8 @@ func (p *Package) UnmarshalJSON(b []byte) error { GoFiles: flat.GoFiles, CompiledGoFiles: flat.CompiledGoFiles, OtherFiles: flat.OtherFiles, + EmbedFiles: flat.EmbedFiles, + EmbedPatterns: flat.EmbedPatterns, ExportFile: flat.ExportFile, } if len(flat.Imports) > 0 { @@ -614,7 +643,7 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { needsrc := ((ld.Mode&(NeedSyntax|NeedTypesInfo) != 0 && (rootIndex >= 0 || ld.Mode&NeedDeps != 0)) || // ... or if we need types and the exportData is invalid. We fall back to (incompletely) // typechecking packages from source if they fail to compile. - (ld.Mode&NeedTypes|NeedTypesInfo != 0 && exportDataInvalid)) && pkg.PkgPath != "unsafe" + (ld.Mode&(NeedTypes|NeedTypesInfo) != 0 && exportDataInvalid)) && pkg.PkgPath != "unsafe" lpkg := &loaderPackage{ Package: pkg, needtypes: needtypes, @@ -752,13 +781,19 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { ld.pkgs[i].OtherFiles = nil ld.pkgs[i].IgnoredFiles = nil } + if ld.requestedMode&NeedEmbedFiles == 0 { + ld.pkgs[i].EmbedFiles = nil + } + if ld.requestedMode&NeedEmbedPatterns == 0 { + ld.pkgs[i].EmbedPatterns = nil + } if ld.requestedMode&NeedCompiledGoFiles == 0 { ld.pkgs[i].CompiledGoFiles = nil } if ld.requestedMode&NeedImports == 0 { ld.pkgs[i].Imports = nil } - if ld.requestedMode&NeedExportsFile == 0 { + if ld.requestedMode&NeedExportFile == 0 { ld.pkgs[i].ExportFile = "" } if ld.requestedMode&NeedTypes == 0 { @@ -1053,7 +1088,6 @@ func (ld *loader) parseFile(filename string) (*ast.File, error) { // // Because files are scanned in parallel, the token.Pos // positions of the resulting ast.Files are not ordered. -// func (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) { var wg sync.WaitGroup n := len(filenames) @@ -1097,7 +1131,6 @@ func (ld *loader) parseFiles(filenames []string) ([]*ast.File, []error) { // sameFile returns true if x and y have the same basename and denote // the same file. -// func sameFile(x, y string) bool { if x == y { // It could be the case that y doesn't exist. @@ -1210,8 +1243,13 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error if err != nil { return nil, fmt.Errorf("reading %s: %v", lpkg.ExportFile, err) } + if _, ok := view["go.shape"]; ok { + // Account for the pseudopackage "go.shape" that gets + // created by generic code. + viewLen++ + } if viewLen != len(view) { - log.Fatalf("Unexpected package creation during export data loading") + log.Panicf("golang.org/x/tools/go/packages: unexpected new packages during load of %s", lpkg.PkgPath) } lpkg.Types = tpkg @@ -1222,17 +1260,8 @@ func (ld *loader) loadFromExportData(lpkg *loaderPackage) (*types.Package, error // impliedLoadMode returns loadMode with its dependencies. func impliedLoadMode(loadMode LoadMode) LoadMode { - if loadMode&NeedTypesInfo != 0 && loadMode&NeedImports == 0 { - // If NeedTypesInfo, go/packages needs to do typechecking itself so it can - // associate type info with the AST. To do so, we need the export data - // for dependencies, which means we need to ask for the direct dependencies. - // NeedImports is used to ask for the direct dependencies. - loadMode |= NeedImports - } - - if loadMode&NeedDeps != 0 && loadMode&NeedImports == 0 { - // With NeedDeps we need to load at least direct dependencies. - // NeedImports is used to ask for the direct dependencies. + if loadMode&(NeedDeps|NeedTypes|NeedTypesInfo) != 0 { + // All these things require knowing the import graph. loadMode |= NeedImports } @@ -1240,5 +1269,5 @@ func impliedLoadMode(loadMode LoadMode) LoadMode { } func usesExportData(cfg *Config) bool { - return cfg.Mode&NeedExportsFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0 + return cfg.Mode&NeedExportFile != 0 || cfg.Mode&NeedTypes != 0 && cfg.Mode&NeedDeps == 0 } diff --git a/vendor/golang.org/x/tools/imports/forward.go b/vendor/golang.org/x/tools/imports/forward.go index 8be18a66b..d2547c743 100644 --- a/vendor/golang.org/x/tools/imports/forward.go +++ b/vendor/golang.org/x/tools/imports/forward.go @@ -40,7 +40,7 @@ var LocalPrefix string // // Note that filename's directory influences which imports can be chosen, // so it is important that filename be accurate. -// To process data ``as if'' it were in filename, pass the data as a non-nil src. +// To process data “as if” it were in filename, pass the data as a non-nil src. func Process(filename string, src []byte, opt *Options) ([]byte, error) { var err error if src == nil { diff --git a/vendor/golang.org/x/tools/internal/fastwalk/fastwalk.go b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk.go index 9887f7e7a..798fe599b 100644 --- a/vendor/golang.org/x/tools/internal/fastwalk/fastwalk.go +++ b/vendor/golang.org/x/tools/internal/fastwalk/fastwalk.go @@ -40,12 +40,12 @@ var ErrSkipFiles = errors.New("fastwalk: skip remaining files in directory") // If fastWalk returns filepath.SkipDir, the directory is skipped. // // Unlike filepath.Walk: -// * file stat calls must be done by the user. +// - file stat calls must be done by the user. // The only provided metadata is the file type, which does not include // any permission bits. -// * multiple goroutines stat the filesystem concurrently. The provided +// - multiple goroutines stat the filesystem concurrently. The provided // walkFn must be safe for concurrent use. -// * fastWalk can follow symlinks if walkFn returns the TraverseLink +// - fastWalk can follow symlinks if walkFn returns the TraverseLink // sentinel error. It is the walkFn's responsibility to prevent // fastWalk from going into symlink cycles. func Walk(root string, walkFn func(path string, typ os.FileMode) error) error { diff --git a/vendor/golang.org/x/tools/internal/gocommand/invoke.go b/vendor/golang.org/x/tools/internal/gocommand/invoke.go index f75336834..67256dc39 100644 --- a/vendor/golang.org/x/tools/internal/gocommand/invoke.go +++ b/vendor/golang.org/x/tools/internal/gocommand/invoke.go @@ -264,8 +264,10 @@ func cmdDebugStr(cmd *exec.Cmd) string { env := make(map[string]string) for _, kv := range cmd.Env { split := strings.SplitN(kv, "=", 2) - k, v := split[0], split[1] - env[k] = v + if len(split) == 2 { + k, v := split[0], split[1] + env[k] = v + } } var args []string diff --git a/vendor/golang.org/x/tools/internal/gopathwalk/walk.go b/vendor/golang.org/x/tools/internal/gopathwalk/walk.go index 925ff5356..168405322 100644 --- a/vendor/golang.org/x/tools/internal/gopathwalk/walk.go +++ b/vendor/golang.org/x/tools/internal/gopathwalk/walk.go @@ -175,8 +175,8 @@ func (w *walker) shouldSkipDir(fi os.FileInfo, dir string) bool { // walk walks through the given path. func (w *walker) walk(path string, typ os.FileMode) error { - dir := filepath.Dir(path) if typ.IsRegular() { + dir := filepath.Dir(path) if dir == w.root.Path && (w.root.Type == RootGOROOT || w.root.Type == RootGOPATH) { // Doesn't make sense to have regular files // directly in your $GOPATH/src or $GOROOT/src. @@ -209,12 +209,7 @@ func (w *walker) walk(path string, typ os.FileMode) error { // Emacs noise. return nil } - fi, err := os.Lstat(path) - if err != nil { - // Just ignore it. - return nil - } - if w.shouldTraverse(dir, fi) { + if w.shouldTraverse(path) { return fastwalk.ErrTraverseLink } } @@ -224,13 +219,8 @@ func (w *walker) walk(path string, typ os.FileMode) error { // shouldTraverse reports whether the symlink fi, found in dir, // should be followed. It makes sure symlinks were never visited // before to avoid symlink loops. -func (w *walker) shouldTraverse(dir string, fi os.FileInfo) bool { - path := filepath.Join(dir, fi.Name()) - target, err := filepath.EvalSymlinks(path) - if err != nil { - return false - } - ts, err := os.Stat(target) +func (w *walker) shouldTraverse(path string) bool { + ts, err := os.Stat(path) if err != nil { fmt.Fprintln(os.Stderr, err) return false @@ -238,7 +228,7 @@ func (w *walker) shouldTraverse(dir string, fi os.FileInfo) bool { if !ts.IsDir() { return false } - if w.shouldSkipDir(ts, dir) { + if w.shouldSkipDir(ts, filepath.Dir(path)) { return false } // Check for symlink loops by statting each directory component diff --git a/vendor/golang.org/x/tools/internal/imports/fix.go b/vendor/golang.org/x/tools/internal/imports/fix.go index d859617b7..9e373d64e 100644 --- a/vendor/golang.org/x/tools/internal/imports/fix.go +++ b/vendor/golang.org/x/tools/internal/imports/fix.go @@ -796,7 +796,7 @@ func GetPackageExports(ctx context.Context, wrapped func(PackageExport), searchP return getCandidatePkgs(ctx, callback, filename, filePkg, env) } -var RequiredGoEnvVars = []string{"GO111MODULE", "GOFLAGS", "GOINSECURE", "GOMOD", "GOMODCACHE", "GONOPROXY", "GONOSUMDB", "GOPATH", "GOPROXY", "GOROOT", "GOSUMDB"} +var RequiredGoEnvVars = []string{"GO111MODULE", "GOFLAGS", "GOINSECURE", "GOMOD", "GOMODCACHE", "GONOPROXY", "GONOSUMDB", "GOPATH", "GOPROXY", "GOROOT", "GOSUMDB", "GOWORK"} // ProcessEnv contains environment variables and settings that affect the use of // the go command, the go/build package, etc. @@ -906,7 +906,7 @@ func (e *ProcessEnv) GetResolver() (Resolver, error) { if err := e.init(); err != nil { return nil, err } - if len(e.Env["GOMOD"]) == 0 { + if len(e.Env["GOMOD"]) == 0 && len(e.Env["GOWORK"]) == 0 { e.resolver = newGopathResolver(e) return e.resolver, nil } diff --git a/vendor/golang.org/x/tools/internal/imports/imports.go b/vendor/golang.org/x/tools/internal/imports/imports.go index 25973989e..95a88383a 100644 --- a/vendor/golang.org/x/tools/internal/imports/imports.go +++ b/vendor/golang.org/x/tools/internal/imports/imports.go @@ -103,12 +103,17 @@ func ApplyFixes(fixes []*ImportFix, filename string, src []byte, opt *Options, e return formatFile(fileSet, file, src, nil, opt) } -func formatFile(fileSet *token.FileSet, file *ast.File, src []byte, adjust func(orig []byte, src []byte) []byte, opt *Options) ([]byte, error) { - mergeImports(fileSet, file) - sortImports(opt.LocalPrefix, fileSet, file) - imps := astutil.Imports(fileSet, file) +// formatFile formats the file syntax tree. +// It may mutate the token.FileSet. +// +// If an adjust function is provided, it is called after formatting +// with the original source (formatFile's src parameter) and the +// formatted file, and returns the postpocessed result. +func formatFile(fset *token.FileSet, file *ast.File, src []byte, adjust func(orig []byte, src []byte) []byte, opt *Options) ([]byte, error) { + mergeImports(file) + sortImports(opt.LocalPrefix, fset.File(file.Pos()), file) var spacesBefore []string // import paths we need spaces before - for _, impSection := range imps { + for _, impSection := range astutil.Imports(fset, file) { // Within each block of contiguous imports, see if any // import lines are in different group numbers. If so, // we'll need to put a space between them so it's @@ -132,7 +137,7 @@ func formatFile(fileSet *token.FileSet, file *ast.File, src []byte, adjust func( printConfig := &printer.Config{Mode: printerMode, Tabwidth: opt.TabWidth} var buf bytes.Buffer - err := printConfig.Fprint(&buf, fileSet, file) + err := printConfig.Fprint(&buf, fset, file) if err != nil { return nil, err } @@ -276,11 +281,11 @@ func cutSpace(b []byte) (before, middle, after []byte) { } // matchSpace reformats src to use the same space context as orig. -// 1) If orig begins with blank lines, matchSpace inserts them at the beginning of src. -// 2) matchSpace copies the indentation of the first non-blank line in orig -// to every non-blank line in src. -// 3) matchSpace copies the trailing space from orig and uses it in place -// of src's trailing space. +// 1. If orig begins with blank lines, matchSpace inserts them at the beginning of src. +// 2. matchSpace copies the indentation of the first non-blank line in orig +// to every non-blank line in src. +// 3. matchSpace copies the trailing space from orig and uses it in place +// of src's trailing space. func matchSpace(orig []byte, src []byte) []byte { before, _, after := cutSpace(orig) i := bytes.LastIndex(before, []byte{'\n'}) diff --git a/vendor/golang.org/x/tools/internal/imports/mod.go b/vendor/golang.org/x/tools/internal/imports/mod.go index 2bcf41f5f..46693f243 100644 --- a/vendor/golang.org/x/tools/internal/imports/mod.go +++ b/vendor/golang.org/x/tools/internal/imports/mod.go @@ -70,9 +70,17 @@ func (r *ModuleResolver) init() error { Logf: r.env.Logf, WorkingDir: r.env.WorkingDir, } - vendorEnabled, mainModVendor, err := gocommand.VendorEnabled(context.TODO(), inv, r.env.GocmdRunner) - if err != nil { - return err + + vendorEnabled := false + var mainModVendor *gocommand.ModuleJSON + + // Module vendor directories are ignored in workspace mode: + // https://go.googlesource.com/proposal/+/master/design/45713-workspace.md + if len(r.env.Env["GOWORK"]) == 0 { + vendorEnabled, mainModVendor, err = gocommand.VendorEnabled(context.TODO(), inv, r.env.GocmdRunner) + if err != nil { + return err + } } if mainModVendor != nil && vendorEnabled { diff --git a/vendor/golang.org/x/tools/internal/imports/sortimports.go b/vendor/golang.org/x/tools/internal/imports/sortimports.go index dc52372e4..85144db1d 100644 --- a/vendor/golang.org/x/tools/internal/imports/sortimports.go +++ b/vendor/golang.org/x/tools/internal/imports/sortimports.go @@ -3,6 +3,7 @@ // license that can be found in the LICENSE file. // Hacked up copy of go/ast/import.go +// Modified to use a single token.File in preference to a FileSet. package imports @@ -16,7 +17,9 @@ import ( // sortImports sorts runs of consecutive import lines in import blocks in f. // It also removes duplicate imports when it is possible to do so without data loss. -func sortImports(localPrefix string, fset *token.FileSet, f *ast.File) { +// +// It may mutate the token.File. +func sortImports(localPrefix string, tokFile *token.File, f *ast.File) { for i, d := range f.Decls { d, ok := d.(*ast.GenDecl) if !ok || d.Tok != token.IMPORT { @@ -39,21 +42,21 @@ func sortImports(localPrefix string, fset *token.FileSet, f *ast.File) { i := 0 specs := d.Specs[:0] for j, s := range d.Specs { - if j > i && fset.Position(s.Pos()).Line > 1+fset.Position(d.Specs[j-1].End()).Line { + if j > i && tokFile.Line(s.Pos()) > 1+tokFile.Line(d.Specs[j-1].End()) { // j begins a new run. End this one. - specs = append(specs, sortSpecs(localPrefix, fset, f, d.Specs[i:j])...) + specs = append(specs, sortSpecs(localPrefix, tokFile, f, d.Specs[i:j])...) i = j } } - specs = append(specs, sortSpecs(localPrefix, fset, f, d.Specs[i:])...) + specs = append(specs, sortSpecs(localPrefix, tokFile, f, d.Specs[i:])...) d.Specs = specs // Deduping can leave a blank line before the rparen; clean that up. if len(d.Specs) > 0 { lastSpec := d.Specs[len(d.Specs)-1] - lastLine := fset.Position(lastSpec.Pos()).Line - if rParenLine := fset.Position(d.Rparen).Line; rParenLine > lastLine+1 { - fset.File(d.Rparen).MergeLine(rParenLine - 1) + lastLine := tokFile.PositionFor(lastSpec.Pos(), false).Line + if rParenLine := tokFile.PositionFor(d.Rparen, false).Line; rParenLine > lastLine+1 { + tokFile.MergeLine(rParenLine - 1) // has side effects! } } } @@ -62,7 +65,7 @@ func sortImports(localPrefix string, fset *token.FileSet, f *ast.File) { // mergeImports merges all the import declarations into the first one. // Taken from golang.org/x/tools/ast/astutil. // This does not adjust line numbers properly -func mergeImports(fset *token.FileSet, f *ast.File) { +func mergeImports(f *ast.File) { if len(f.Decls) <= 1 { return } @@ -144,7 +147,9 @@ type posSpan struct { End token.Pos } -func sortSpecs(localPrefix string, fset *token.FileSet, f *ast.File, specs []ast.Spec) []ast.Spec { +// sortSpecs sorts the import specs within each import decl. +// It may mutate the token.File. +func sortSpecs(localPrefix string, tokFile *token.File, f *ast.File, specs []ast.Spec) []ast.Spec { // Can't short-circuit here even if specs are already sorted, // since they might yet need deduplication. // A lone import, however, may be safely ignored. @@ -160,7 +165,7 @@ func sortSpecs(localPrefix string, fset *token.FileSet, f *ast.File, specs []ast // Identify comments in this range. // Any comment from pos[0].Start to the final line counts. - lastLine := fset.Position(pos[len(pos)-1].End).Line + lastLine := tokFile.Line(pos[len(pos)-1].End) cstart := len(f.Comments) cend := len(f.Comments) for i, g := range f.Comments { @@ -170,7 +175,7 @@ func sortSpecs(localPrefix string, fset *token.FileSet, f *ast.File, specs []ast if i < cstart { cstart = i } - if fset.Position(g.End()).Line > lastLine { + if tokFile.Line(g.End()) > lastLine { cend = i break } @@ -203,7 +208,7 @@ func sortSpecs(localPrefix string, fset *token.FileSet, f *ast.File, specs []ast deduped = append(deduped, s) } else { p := s.Pos() - fset.File(p).MergeLine(fset.Position(p).Line) + tokFile.MergeLine(tokFile.Line(p)) // has side effects! } } specs = deduped @@ -234,21 +239,21 @@ func sortSpecs(localPrefix string, fset *token.FileSet, f *ast.File, specs []ast // Fixup comments can insert blank lines, because import specs are on different lines. // We remove those blank lines here by merging import spec to the first import spec line. - firstSpecLine := fset.Position(specs[0].Pos()).Line + firstSpecLine := tokFile.Line(specs[0].Pos()) for _, s := range specs[1:] { p := s.Pos() - line := fset.File(p).Line(p) + line := tokFile.Line(p) for previousLine := line - 1; previousLine >= firstSpecLine; { // MergeLine can panic. Avoid the panic at the cost of not removing the blank line // golang/go#50329 - if previousLine > 0 && previousLine < fset.File(p).LineCount() { - fset.File(p).MergeLine(previousLine) + if previousLine > 0 && previousLine < tokFile.LineCount() { + tokFile.MergeLine(previousLine) // has side effects! previousLine-- } else { // try to gather some data to diagnose how this could happen req := "Please report what the imports section of your go file looked like." log.Printf("panic avoided: first:%d line:%d previous:%d max:%d. %s", - firstSpecLine, line, previousLine, fset.File(p).LineCount(), req) + firstSpecLine, line, previousLine, tokFile.LineCount(), req) } } } diff --git a/vendor/golang.org/x/tools/internal/imports/zstdlib.go b/vendor/golang.org/x/tools/internal/imports/zstdlib.go index 7de2be9b4..437fbb78d 100644 --- a/vendor/golang.org/x/tools/internal/imports/zstdlib.go +++ b/vendor/golang.org/x/tools/internal/imports/zstdlib.go @@ -88,6 +88,7 @@ var stdlib = map[string][]string{ "ContainsAny", "ContainsRune", "Count", + "Cut", "Equal", "EqualFold", "ErrTooLarge", @@ -711,6 +712,11 @@ var stdlib = map[string][]string{ "ValueConverter", "Valuer", }, + "debug/buildinfo": []string{ + "BuildInfo", + "Read", + "ReadFile", + }, "debug/dwarf": []string{ "AddrType", "ArrayType", @@ -1944,6 +1950,7 @@ var stdlib = map[string][]string{ "R_PPC64_REL24_NOTOC", "R_PPC64_REL32", "R_PPC64_REL64", + "R_PPC64_RELATIVE", "R_PPC64_SECTOFF_DS", "R_PPC64_SECTOFF_LO_DS", "R_PPC64_TLS", @@ -2547,6 +2554,7 @@ var stdlib = map[string][]string{ "Symbol", }, "debug/plan9obj": []string{ + "ErrNoSymbols", "File", "FileHeader", "Magic386", @@ -2906,6 +2914,7 @@ var stdlib = map[string][]string{ "Importer", "IncDecStmt", "IndexExpr", + "IndexListExpr", "Inspect", "InterfaceType", "IsExported", @@ -3179,6 +3188,7 @@ var stdlib = map[string][]string{ "SUB", "SUB_ASSIGN", "SWITCH", + "TILDE", "TYPE", "Token", "UnaryPrec", @@ -3187,6 +3197,7 @@ var stdlib = map[string][]string{ "XOR_ASSIGN", }, "go/types": []string{ + "ArgumentError", "Array", "AssertableTo", "AssignableTo", @@ -3205,6 +3216,7 @@ var stdlib = map[string][]string{ "Complex64", "Config", "Const", + "Context", "ConvertibleTo", "DefPredeclaredTestFuncs", "Default", @@ -3224,6 +3236,8 @@ var stdlib = map[string][]string{ "ImporterFrom", "Info", "Initializer", + "Instance", + "Instantiate", "Int", "Int16", "Int32", @@ -3254,6 +3268,7 @@ var stdlib = map[string][]string{ "NewChan", "NewChecker", "NewConst", + "NewContext", "NewField", "NewFunc", "NewInterface", @@ -3268,10 +3283,14 @@ var stdlib = map[string][]string{ "NewPointer", "NewScope", "NewSignature", + "NewSignatureType", "NewSlice", "NewStruct", + "NewTerm", "NewTuple", "NewTypeName", + "NewTypeParam", + "NewUnion", "NewVar", "Nil", "Object", @@ -3296,11 +3315,15 @@ var stdlib = map[string][]string{ "StdSizes", "String", "Struct", + "Term", "Tuple", "Typ", "Type", "TypeAndValue", + "TypeList", "TypeName", + "TypeParam", + "TypeParamList", "TypeString", "Uint", "Uint16", @@ -3308,6 +3331,7 @@ var stdlib = map[string][]string{ "Uint64", "Uint8", "Uintptr", + "Union", "Universe", "Unsafe", "UnsafePointer", @@ -4080,9 +4104,11 @@ var stdlib = map[string][]string{ "SRV", "SplitHostPort", "TCPAddr", + "TCPAddrFromAddrPort", "TCPConn", "TCPListener", "UDPAddr", + "UDPAddrFromAddrPort", "UDPConn", "UnixAddr", "UnixConn", @@ -4142,6 +4168,7 @@ var stdlib = map[string][]string{ "ListenAndServe", "ListenAndServeTLS", "LocalAddrContextKey", + "MaxBytesHandler", "MaxBytesReader", "MethodConnect", "MethodDelete", @@ -4338,6 +4365,25 @@ var stdlib = map[string][]string{ "ParseDate", "ReadMessage", }, + "net/netip": []string{ + "Addr", + "AddrFrom16", + "AddrFrom4", + "AddrFromSlice", + "AddrPort", + "AddrPortFrom", + "IPv4Unspecified", + "IPv6LinkLocalAllNodes", + "IPv6Unspecified", + "MustParseAddr", + "MustParseAddrPort", + "MustParsePrefix", + "ParseAddr", + "ParseAddrPort", + "ParsePrefix", + "Prefix", + "PrefixFrom", + }, "net/rpc": []string{ "Accept", "Call", @@ -4641,6 +4687,8 @@ var stdlib = map[string][]string{ "Method", "New", "NewAt", + "Pointer", + "PointerTo", "Ptr", "PtrTo", "RecvDir", @@ -4819,9 +4867,11 @@ var stdlib = map[string][]string{ }, "runtime/debug": []string{ "BuildInfo", + "BuildSetting", "FreeOSMemory", "GCStats", "Module", + "ParseBuildInfo", "PrintStack", "ReadBuildInfo", "ReadGCStats", @@ -4939,11 +4989,13 @@ var stdlib = map[string][]string{ }, "strings": []string{ "Builder", + "Clone", "Compare", "Contains", "ContainsAny", "ContainsRune", "Count", + "Cut", "EqualFold", "Fields", "FieldsFunc", @@ -9793,6 +9845,7 @@ var stdlib = map[string][]string{ "Syscall18", "Syscall6", "Syscall9", + "SyscallN", "Sysctl", "SysctlUint32", "Sysctlnode", @@ -10202,7 +10255,6 @@ var stdlib = map[string][]string{ "Value", "ValueError", "ValueOf", - "Wrapper", }, "testing": []string{ "AllocsPerRun", @@ -10213,9 +10265,11 @@ var stdlib = map[string][]string{ "CoverBlock", "CoverMode", "Coverage", + "F", "Init", "InternalBenchmark", "InternalExample", + "InternalFuzzTarget", "InternalTest", "M", "Main", @@ -10313,9 +10367,11 @@ var stdlib = map[string][]string{ "ActionNode", "BoolNode", "BranchNode", + "BreakNode", "ChainNode", "CommandNode", "CommentNode", + "ContinueNode", "DotNode", "FieldNode", "IdentifierNode", @@ -10329,9 +10385,11 @@ var stdlib = map[string][]string{ "Node", "NodeAction", "NodeBool", + "NodeBreak", "NodeChain", "NodeCommand", "NodeComment", + "NodeContinue", "NodeDot", "NodeField", "NodeIdentifier", @@ -10727,6 +10785,7 @@ var stdlib = map[string][]string{ "IsSurrogate", }, "unicode/utf8": []string{ + "AppendRune", "DecodeLastRune", "DecodeLastRuneInString", "DecodeRune", diff --git a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go index 9702094c5..d9950b1f0 100644 --- a/vendor/golang.org/x/tools/internal/packagesinternal/packages.go +++ b/vendor/golang.org/x/tools/internal/packagesinternal/packages.go @@ -23,6 +23,8 @@ var GetGoCmdRunner = func(config interface{}) *gocommand.Runner { return nil } var SetGoCmdRunner = func(config interface{}, runner *gocommand.Runner) {} var TypecheckCgo int +var DepsErrors int // must be set as a LoadMode to call GetDepsErrors +var ForTest int // must be set as a LoadMode to call GetForTest var SetModFlag = func(config interface{}, value string) {} var SetModFile = func(config interface{}, value string) {} diff --git a/vendor/golang.org/x/tools/internal/typeparams/common.go b/vendor/golang.org/x/tools/internal/typeparams/common.go index ab6b30b83..25a1426d3 100644 --- a/vendor/golang.org/x/tools/internal/typeparams/common.go +++ b/vendor/golang.org/x/tools/internal/typeparams/common.go @@ -16,11 +16,10 @@ // Additionally, this package contains common utilities for working with the // new generic constructs, to supplement the standard library APIs. Notably, // the StructuralTerms API computes a minimal representation of the structural -// restrictions on a type parameter. In the future, this API may be available -// from go/types. +// restrictions on a type parameter. // -// See the example/README.md for a more detailed guide on how to update tools -// to support generics. +// An external version of these APIs is available in the +// golang.org/x/exp/typeparams module. package typeparams import ( @@ -121,15 +120,15 @@ func OriginMethod(fn *types.Func) *types.Func { // // For example, consider the following type declarations: // -// type Interface[T any] interface { -// Accept(T) -// } +// type Interface[T any] interface { +// Accept(T) +// } // -// type Container[T any] struct { -// Element T -// } +// type Container[T any] struct { +// Element T +// } // -// func (c Container[T]) Accept(t T) { c.Element = t } +// func (c Container[T]) Accept(t T) { c.Element = t } // // In this case, GenericAssignableTo reports that instantiations of Container // are assignable to the corresponding instantiation of Interface. diff --git a/vendor/golang.org/x/tools/internal/typeparams/coretype.go b/vendor/golang.org/x/tools/internal/typeparams/coretype.go new file mode 100644 index 000000000..993135ec9 --- /dev/null +++ b/vendor/golang.org/x/tools/internal/typeparams/coretype.go @@ -0,0 +1,122 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package typeparams + +import ( + "go/types" +) + +// CoreType returns the core type of T or nil if T does not have a core type. +// +// See https://go.dev/ref/spec#Core_types for the definition of a core type. +func CoreType(T types.Type) types.Type { + U := T.Underlying() + if _, ok := U.(*types.Interface); !ok { + return U // for non-interface types, + } + + terms, err := _NormalTerms(U) + if len(terms) == 0 || err != nil { + // len(terms) -> empty type set of interface. + // err != nil => U is invalid, exceeds complexity bounds, or has an empty type set. + return nil // no core type. + } + + U = terms[0].Type().Underlying() + var identical int // i in [0,identical) => Identical(U, terms[i].Type().Underlying()) + for identical = 1; identical < len(terms); identical++ { + if !types.Identical(U, terms[identical].Type().Underlying()) { + break + } + } + + if identical == len(terms) { + // https://go.dev/ref/spec#Core_types + // "There is a single type U which is the underlying type of all types in the type set of T" + return U + } + ch, ok := U.(*types.Chan) + if !ok { + return nil // no core type as identical < len(terms) and U is not a channel. + } + // https://go.dev/ref/spec#Core_types + // "the type chan E if T contains only bidirectional channels, or the type chan<- E or + // <-chan E depending on the direction of the directional channels present." + for chans := identical; chans < len(terms); chans++ { + curr, ok := terms[chans].Type().Underlying().(*types.Chan) + if !ok { + return nil + } + if !types.Identical(ch.Elem(), curr.Elem()) { + return nil // channel elements are not identical. + } + if ch.Dir() == types.SendRecv { + // ch is bidirectional. We can safely always use curr's direction. + ch = curr + } else if curr.Dir() != types.SendRecv && ch.Dir() != curr.Dir() { + // ch and curr are not bidirectional and not the same direction. + return nil + } + } + return ch +} + +// _NormalTerms returns a slice of terms representing the normalized structural +// type restrictions of a type, if any. +// +// For all types other than *types.TypeParam, *types.Interface, and +// *types.Union, this is just a single term with Tilde() == false and +// Type() == typ. For *types.TypeParam, *types.Interface, and *types.Union, see +// below. +// +// Structural type restrictions of a type parameter are created via +// non-interface types embedded in its constraint interface (directly, or via a +// chain of interface embeddings). For example, in the declaration type +// T[P interface{~int; m()}] int the structural restriction of the type +// parameter P is ~int. +// +// With interface embedding and unions, the specification of structural type +// restrictions may be arbitrarily complex. For example, consider the +// following: +// +// type A interface{ ~string|~[]byte } +// +// type B interface{ int|string } +// +// type C interface { ~string|~int } +// +// type T[P interface{ A|B; C }] int +// +// In this example, the structural type restriction of P is ~string|int: A|B +// expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int, +// which when intersected with C (~string|~int) yields ~string|int. +// +// _NormalTerms computes these expansions and reductions, producing a +// "normalized" form of the embeddings. A structural restriction is normalized +// if it is a single union containing no interface terms, and is minimal in the +// sense that removing any term changes the set of types satisfying the +// constraint. It is left as a proof for the reader that, modulo sorting, there +// is exactly one such normalized form. +// +// Because the minimal representation always takes this form, _NormalTerms +// returns a slice of tilde terms corresponding to the terms of the union in +// the normalized structural restriction. An error is returned if the type is +// invalid, exceeds complexity bounds, or has an empty type set. In the latter +// case, _NormalTerms returns ErrEmptyTypeSet. +// +// _NormalTerms makes no guarantees about the order of terms, except that it +// is deterministic. +func _NormalTerms(typ types.Type) ([]*Term, error) { + switch typ := typ.(type) { + case *TypeParam: + return StructuralTerms(typ) + case *Union: + return UnionTermSet(typ) + case *types.Interface: + return InterfaceTermSet(typ) + default: + return []*Term{NewTerm(false, typ)}, nil + } +} diff --git a/vendor/golang.org/x/tools/internal/typeparams/normalize.go b/vendor/golang.org/x/tools/internal/typeparams/normalize.go index 090f142a5..9c631b651 100644 --- a/vendor/golang.org/x/tools/internal/typeparams/normalize.go +++ b/vendor/golang.org/x/tools/internal/typeparams/normalize.go @@ -24,20 +24,22 @@ var ErrEmptyTypeSet = errors.New("empty type set") // Structural type restrictions of a type parameter are created via // non-interface types embedded in its constraint interface (directly, or via a // chain of interface embeddings). For example, in the declaration -// type T[P interface{~int; m()}] int +// +// type T[P interface{~int; m()}] int +// // the structural restriction of the type parameter P is ~int. // // With interface embedding and unions, the specification of structural type // restrictions may be arbitrarily complex. For example, consider the // following: // -// type A interface{ ~string|~[]byte } +// type A interface{ ~string|~[]byte } // -// type B interface{ int|string } +// type B interface{ int|string } // -// type C interface { ~string|~int } +// type C interface { ~string|~int } // -// type T[P interface{ A|B; C }] int +// type T[P interface{ A|B; C }] int // // In this example, the structural type restriction of P is ~string|int: A|B // expands to ~string|~[]byte|int|string, which reduces to ~string|~[]byte|int, diff --git a/vendor/golang.org/x/tools/internal/typeparams/termlist.go b/vendor/golang.org/x/tools/internal/typeparams/termlist.go index 10857d504..933106a23 100644 --- a/vendor/golang.org/x/tools/internal/typeparams/termlist.go +++ b/vendor/golang.org/x/tools/internal/typeparams/termlist.go @@ -97,15 +97,6 @@ func (xl termlist) norm() termlist { return rl } -// If the type set represented by xl is specified by a single (non-𝓤) term, -// structuralType returns that type. Otherwise it returns nil. -func (xl termlist) structuralType() types.Type { - if nl := xl.norm(); len(nl) == 1 { - return nl[0].typ // if nl.isAll() then typ is nil, which is ok - } - return nil -} - // union returns the union xl ∪ yl. func (xl termlist) union(yl termlist) termlist { return append(xl, yl...).norm() diff --git a/vendor/golang.org/x/xerrors/LICENSE b/vendor/golang.org/x/xerrors/LICENSE deleted file mode 100644 index e4a47e17f..000000000 --- a/vendor/golang.org/x/xerrors/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2019 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * 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. - * Neither the name of Google Inc. 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 COPYRIGHT HOLDERS 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 -OWNER 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. diff --git a/vendor/golang.org/x/xerrors/PATENTS b/vendor/golang.org/x/xerrors/PATENTS deleted file mode 100644 index 733099041..000000000 --- a/vendor/golang.org/x/xerrors/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/xerrors/README b/vendor/golang.org/x/xerrors/README deleted file mode 100644 index aac7867a5..000000000 --- a/vendor/golang.org/x/xerrors/README +++ /dev/null @@ -1,2 +0,0 @@ -This repository holds the transition packages for the new Go 1.13 error values. -See golang.org/design/29934-error-values. diff --git a/vendor/golang.org/x/xerrors/adaptor.go b/vendor/golang.org/x/xerrors/adaptor.go deleted file mode 100644 index 4317f2483..000000000 --- a/vendor/golang.org/x/xerrors/adaptor.go +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xerrors - -import ( - "bytes" - "fmt" - "io" - "reflect" - "strconv" -) - -// FormatError calls the FormatError method of f with an errors.Printer -// configured according to s and verb, and writes the result to s. -func FormatError(f Formatter, s fmt.State, verb rune) { - // Assuming this function is only called from the Format method, and given - // that FormatError takes precedence over Format, it cannot be called from - // any package that supports errors.Formatter. It is therefore safe to - // disregard that State may be a specific printer implementation and use one - // of our choice instead. - - // limitations: does not support printing error as Go struct. - - var ( - sep = " " // separator before next error - p = &state{State: s} - direct = true - ) - - var err error = f - - switch verb { - // Note that this switch must match the preference order - // for ordinary string printing (%#v before %+v, and so on). - - case 'v': - if s.Flag('#') { - if stringer, ok := err.(fmt.GoStringer); ok { - io.WriteString(&p.buf, stringer.GoString()) - goto exit - } - // proceed as if it were %v - } else if s.Flag('+') { - p.printDetail = true - sep = "\n - " - } - case 's': - case 'q', 'x', 'X': - // Use an intermediate buffer in the rare cases that precision, - // truncation, or one of the alternative verbs (q, x, and X) are - // specified. - direct = false - - default: - p.buf.WriteString("%!") - p.buf.WriteRune(verb) - p.buf.WriteByte('(') - switch { - case err != nil: - p.buf.WriteString(reflect.TypeOf(f).String()) - default: - p.buf.WriteString("") - } - p.buf.WriteByte(')') - io.Copy(s, &p.buf) - return - } - -loop: - for { - switch v := err.(type) { - case Formatter: - err = v.FormatError((*printer)(p)) - case fmt.Formatter: - v.Format(p, 'v') - break loop - default: - io.WriteString(&p.buf, v.Error()) - break loop - } - if err == nil { - break - } - if p.needColon || !p.printDetail { - p.buf.WriteByte(':') - p.needColon = false - } - p.buf.WriteString(sep) - p.inDetail = false - p.needNewline = false - } - -exit: - width, okW := s.Width() - prec, okP := s.Precision() - - if !direct || (okW && width > 0) || okP { - // Construct format string from State s. - format := []byte{'%'} - if s.Flag('-') { - format = append(format, '-') - } - if s.Flag('+') { - format = append(format, '+') - } - if s.Flag(' ') { - format = append(format, ' ') - } - if okW { - format = strconv.AppendInt(format, int64(width), 10) - } - if okP { - format = append(format, '.') - format = strconv.AppendInt(format, int64(prec), 10) - } - format = append(format, string(verb)...) - fmt.Fprintf(s, string(format), p.buf.String()) - } else { - io.Copy(s, &p.buf) - } -} - -var detailSep = []byte("\n ") - -// state tracks error printing state. It implements fmt.State. -type state struct { - fmt.State - buf bytes.Buffer - - printDetail bool - inDetail bool - needColon bool - needNewline bool -} - -func (s *state) Write(b []byte) (n int, err error) { - if s.printDetail { - if len(b) == 0 { - return 0, nil - } - if s.inDetail && s.needColon { - s.needNewline = true - if b[0] == '\n' { - b = b[1:] - } - } - k := 0 - for i, c := range b { - if s.needNewline { - if s.inDetail && s.needColon { - s.buf.WriteByte(':') - s.needColon = false - } - s.buf.Write(detailSep) - s.needNewline = false - } - if c == '\n' { - s.buf.Write(b[k:i]) - k = i + 1 - s.needNewline = true - } - } - s.buf.Write(b[k:]) - if !s.inDetail { - s.needColon = true - } - } else if !s.inDetail { - s.buf.Write(b) - } - return len(b), nil -} - -// printer wraps a state to implement an xerrors.Printer. -type printer state - -func (s *printer) Print(args ...interface{}) { - if !s.inDetail || s.printDetail { - fmt.Fprint((*state)(s), args...) - } -} - -func (s *printer) Printf(format string, args ...interface{}) { - if !s.inDetail || s.printDetail { - fmt.Fprintf((*state)(s), format, args...) - } -} - -func (s *printer) Detail() bool { - s.inDetail = true - return s.printDetail -} diff --git a/vendor/golang.org/x/xerrors/codereview.cfg b/vendor/golang.org/x/xerrors/codereview.cfg deleted file mode 100644 index 3f8b14b64..000000000 --- a/vendor/golang.org/x/xerrors/codereview.cfg +++ /dev/null @@ -1 +0,0 @@ -issuerepo: golang/go diff --git a/vendor/golang.org/x/xerrors/doc.go b/vendor/golang.org/x/xerrors/doc.go deleted file mode 100644 index eef99d9d5..000000000 --- a/vendor/golang.org/x/xerrors/doc.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package xerrors implements functions to manipulate errors. -// -// This package is based on the Go 2 proposal for error values: -// https://golang.org/design/29934-error-values -// -// These functions were incorporated into the standard library's errors package -// in Go 1.13: -// - Is -// - As -// - Unwrap -// -// Also, Errorf's %w verb was incorporated into fmt.Errorf. -// -// Use this package to get equivalent behavior in all supported Go versions. -// -// No other features of this package were included in Go 1.13, and at present -// there are no plans to include any of them. -package xerrors // import "golang.org/x/xerrors" diff --git a/vendor/golang.org/x/xerrors/errors.go b/vendor/golang.org/x/xerrors/errors.go deleted file mode 100644 index e88d3772d..000000000 --- a/vendor/golang.org/x/xerrors/errors.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xerrors - -import "fmt" - -// errorString is a trivial implementation of error. -type errorString struct { - s string - frame Frame -} - -// New returns an error that formats as the given text. -// -// The returned error contains a Frame set to the caller's location and -// implements Formatter to show this information when printed with details. -func New(text string) error { - return &errorString{text, Caller(1)} -} - -func (e *errorString) Error() string { - return e.s -} - -func (e *errorString) Format(s fmt.State, v rune) { FormatError(e, s, v) } - -func (e *errorString) FormatError(p Printer) (next error) { - p.Print(e.s) - e.frame.Format(p) - return nil -} diff --git a/vendor/golang.org/x/xerrors/fmt.go b/vendor/golang.org/x/xerrors/fmt.go deleted file mode 100644 index 829862ddf..000000000 --- a/vendor/golang.org/x/xerrors/fmt.go +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xerrors - -import ( - "fmt" - "strings" - "unicode" - "unicode/utf8" - - "golang.org/x/xerrors/internal" -) - -const percentBangString = "%!" - -// Errorf formats according to a format specifier and returns the string as a -// value that satisfies error. -// -// The returned error includes the file and line number of the caller when -// formatted with additional detail enabled. If the last argument is an error -// the returned error's Format method will return it if the format string ends -// with ": %s", ": %v", or ": %w". If the last argument is an error and the -// format string ends with ": %w", the returned error implements an Unwrap -// method returning it. -// -// If the format specifier includes a %w verb with an error operand in a -// position other than at the end, the returned error will still implement an -// Unwrap method returning the operand, but the error's Format method will not -// return the wrapped error. -// -// It is invalid to include more than one %w verb or to supply it with an -// operand that does not implement the error interface. The %w verb is otherwise -// a synonym for %v. -func Errorf(format string, a ...interface{}) error { - format = formatPlusW(format) - // Support a ": %[wsv]" suffix, which works well with xerrors.Formatter. - wrap := strings.HasSuffix(format, ": %w") - idx, format2, ok := parsePercentW(format) - percentWElsewhere := !wrap && idx >= 0 - if !percentWElsewhere && (wrap || strings.HasSuffix(format, ": %s") || strings.HasSuffix(format, ": %v")) { - err := errorAt(a, len(a)-1) - if err == nil { - return &noWrapError{fmt.Sprintf(format, a...), nil, Caller(1)} - } - // TODO: this is not entirely correct. The error value could be - // printed elsewhere in format if it mixes numbered with unnumbered - // substitutions. With relatively small changes to doPrintf we can - // have it optionally ignore extra arguments and pass the argument - // list in its entirety. - msg := fmt.Sprintf(format[:len(format)-len(": %s")], a[:len(a)-1]...) - frame := Frame{} - if internal.EnableTrace { - frame = Caller(1) - } - if wrap { - return &wrapError{msg, err, frame} - } - return &noWrapError{msg, err, frame} - } - // Support %w anywhere. - // TODO: don't repeat the wrapped error's message when %w occurs in the middle. - msg := fmt.Sprintf(format2, a...) - if idx < 0 { - return &noWrapError{msg, nil, Caller(1)} - } - err := errorAt(a, idx) - if !ok || err == nil { - // Too many %ws or argument of %w is not an error. Approximate the Go - // 1.13 fmt.Errorf message. - return &noWrapError{fmt.Sprintf("%sw(%s)", percentBangString, msg), nil, Caller(1)} - } - frame := Frame{} - if internal.EnableTrace { - frame = Caller(1) - } - return &wrapError{msg, err, frame} -} - -func errorAt(args []interface{}, i int) error { - if i < 0 || i >= len(args) { - return nil - } - err, ok := args[i].(error) - if !ok { - return nil - } - return err -} - -// formatPlusW is used to avoid the vet check that will barf at %w. -func formatPlusW(s string) string { - return s -} - -// Return the index of the only %w in format, or -1 if none. -// Also return a rewritten format string with %w replaced by %v, and -// false if there is more than one %w. -// TODO: handle "%[N]w". -func parsePercentW(format string) (idx int, newFormat string, ok bool) { - // Loosely copied from golang.org/x/tools/go/analysis/passes/printf/printf.go. - idx = -1 - ok = true - n := 0 - sz := 0 - var isW bool - for i := 0; i < len(format); i += sz { - if format[i] != '%' { - sz = 1 - continue - } - // "%%" is not a format directive. - if i+1 < len(format) && format[i+1] == '%' { - sz = 2 - continue - } - sz, isW = parsePrintfVerb(format[i:]) - if isW { - if idx >= 0 { - ok = false - } else { - idx = n - } - // "Replace" the last character, the 'w', with a 'v'. - p := i + sz - 1 - format = format[:p] + "v" + format[p+1:] - } - n++ - } - return idx, format, ok -} - -// Parse the printf verb starting with a % at s[0]. -// Return how many bytes it occupies and whether the verb is 'w'. -func parsePrintfVerb(s string) (int, bool) { - // Assume only that the directive is a sequence of non-letters followed by a single letter. - sz := 0 - var r rune - for i := 1; i < len(s); i += sz { - r, sz = utf8.DecodeRuneInString(s[i:]) - if unicode.IsLetter(r) { - return i + sz, r == 'w' - } - } - return len(s), false -} - -type noWrapError struct { - msg string - err error - frame Frame -} - -func (e *noWrapError) Error() string { - return fmt.Sprint(e) -} - -func (e *noWrapError) Format(s fmt.State, v rune) { FormatError(e, s, v) } - -func (e *noWrapError) FormatError(p Printer) (next error) { - p.Print(e.msg) - e.frame.Format(p) - return e.err -} - -type wrapError struct { - msg string - err error - frame Frame -} - -func (e *wrapError) Error() string { - return fmt.Sprint(e) -} - -func (e *wrapError) Format(s fmt.State, v rune) { FormatError(e, s, v) } - -func (e *wrapError) FormatError(p Printer) (next error) { - p.Print(e.msg) - e.frame.Format(p) - return e.err -} - -func (e *wrapError) Unwrap() error { - return e.err -} diff --git a/vendor/golang.org/x/xerrors/format.go b/vendor/golang.org/x/xerrors/format.go deleted file mode 100644 index 1bc9c26b9..000000000 --- a/vendor/golang.org/x/xerrors/format.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xerrors - -// A Formatter formats error messages. -type Formatter interface { - error - - // FormatError prints the receiver's first error and returns the next error in - // the error chain, if any. - FormatError(p Printer) (next error) -} - -// A Printer formats error messages. -// -// The most common implementation of Printer is the one provided by package fmt -// during Printf (as of Go 1.13). Localization packages such as golang.org/x/text/message -// typically provide their own implementations. -type Printer interface { - // Print appends args to the message output. - Print(args ...interface{}) - - // Printf writes a formatted string. - Printf(format string, args ...interface{}) - - // Detail reports whether error detail is requested. - // After the first call to Detail, all text written to the Printer - // is formatted as additional detail, or ignored when - // detail has not been requested. - // If Detail returns false, the caller can avoid printing the detail at all. - Detail() bool -} diff --git a/vendor/golang.org/x/xerrors/frame.go b/vendor/golang.org/x/xerrors/frame.go deleted file mode 100644 index 0de628ec5..000000000 --- a/vendor/golang.org/x/xerrors/frame.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xerrors - -import ( - "runtime" -) - -// A Frame contains part of a call stack. -type Frame struct { - // Make room for three PCs: the one we were asked for, what it called, - // and possibly a PC for skipPleaseUseCallersFrames. See: - // https://go.googlesource.com/go/+/032678e0fb/src/runtime/extern.go#169 - frames [3]uintptr -} - -// Caller returns a Frame that describes a frame on the caller's stack. -// The argument skip is the number of frames to skip over. -// Caller(0) returns the frame for the caller of Caller. -func Caller(skip int) Frame { - var s Frame - runtime.Callers(skip+1, s.frames[:]) - return s -} - -// location reports the file, line, and function of a frame. -// -// The returned function may be "" even if file and line are not. -func (f Frame) location() (function, file string, line int) { - frames := runtime.CallersFrames(f.frames[:]) - if _, ok := frames.Next(); !ok { - return "", "", 0 - } - fr, ok := frames.Next() - if !ok { - return "", "", 0 - } - return fr.Function, fr.File, fr.Line -} - -// Format prints the stack as error detail. -// It should be called from an error's Format implementation -// after printing any other error detail. -func (f Frame) Format(p Printer) { - if p.Detail() { - function, file, line := f.location() - if function != "" { - p.Printf("%s\n ", function) - } - if file != "" { - p.Printf("%s:%d\n", file, line) - } - } -} diff --git a/vendor/golang.org/x/xerrors/internal/internal.go b/vendor/golang.org/x/xerrors/internal/internal.go deleted file mode 100644 index 89f4eca5d..000000000 --- a/vendor/golang.org/x/xerrors/internal/internal.go +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package internal - -// EnableTrace indicates whether stack information should be recorded in errors. -var EnableTrace = true diff --git a/vendor/golang.org/x/xerrors/wrap.go b/vendor/golang.org/x/xerrors/wrap.go deleted file mode 100644 index 9a3b51037..000000000 --- a/vendor/golang.org/x/xerrors/wrap.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package xerrors - -import ( - "reflect" -) - -// A Wrapper provides context around another error. -type Wrapper interface { - // Unwrap returns the next error in the error chain. - // If there is no next error, Unwrap returns nil. - Unwrap() error -} - -// Opaque returns an error with the same error formatting as err -// but that does not match err and cannot be unwrapped. -func Opaque(err error) error { - return noWrapper{err} -} - -type noWrapper struct { - error -} - -func (e noWrapper) FormatError(p Printer) (next error) { - if f, ok := e.error.(Formatter); ok { - return f.FormatError(p) - } - p.Print(e.error) - return nil -} - -// Unwrap returns the result of calling the Unwrap method on err, if err implements -// Unwrap. Otherwise, Unwrap returns nil. -func Unwrap(err error) error { - u, ok := err.(Wrapper) - if !ok { - return nil - } - return u.Unwrap() -} - -// Is reports whether any error in err's chain matches target. -// -// An error is considered to match a target if it is equal to that target or if -// it implements a method Is(error) bool such that Is(target) returns true. -func Is(err, target error) bool { - if target == nil { - return err == target - } - - isComparable := reflect.TypeOf(target).Comparable() - for { - if isComparable && err == target { - return true - } - if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) { - return true - } - // TODO: consider supporing target.Is(err). This would allow - // user-definable predicates, but also may allow for coping with sloppy - // APIs, thereby making it easier to get away with them. - if err = Unwrap(err); err == nil { - return false - } - } -} - -// As finds the first error in err's chain that matches the type to which target -// points, and if so, sets the target to its value and returns true. An error -// matches a type if it is assignable to the target type, or if it has a method -// As(interface{}) bool such that As(target) returns true. As will panic if target -// is not a non-nil pointer to a type which implements error or is of interface type. -// -// The As method should set the target to its value and return true if err -// matches the type to which target points. -func As(err error, target interface{}) bool { - if target == nil { - panic("errors: target cannot be nil") - } - val := reflect.ValueOf(target) - typ := val.Type() - if typ.Kind() != reflect.Ptr || val.IsNil() { - panic("errors: target must be a non-nil pointer") - } - if e := typ.Elem(); e.Kind() != reflect.Interface && !e.Implements(errorType) { - panic("errors: *target must be interface or implement error") - } - targetType := typ.Elem() - for err != nil { - if reflect.TypeOf(err).AssignableTo(targetType) { - val.Elem().Set(reflect.ValueOf(err)) - return true - } - if x, ok := err.(interface{ As(interface{}) bool }); ok && x.As(target) { - return true - } - err = Unwrap(err) - } - return false -} - -var errorType = reflect.TypeOf((*error)(nil)).Elem() diff --git a/vendor/modules.txt b/vendor/modules.txt index 697c07d8c..549279671 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -377,6 +377,10 @@ github.com/urfave/cli/v2 # github.com/vearutop/statigz v1.1.6 ## explicit; go 1.16 github.com/vearutop/statigz +# github.com/vektah/dataloaden v0.3.0 +## explicit +github.com/vektah/dataloaden +github.com/vektah/dataloaden/pkg/generator # github.com/vektah/gqlparser/v2 v2.4.1 ## explicit; go 1.16 github.com/vektah/gqlparser/v2 @@ -412,12 +416,12 @@ golang.org/x/image/tiff/lzw golang.org/x/image/vp8 golang.org/x/image/vp8l golang.org/x/image/webp -# golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 +# golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 ## explicit; go 1.17 golang.org/x/mod/internal/lazyregexp golang.org/x/mod/module golang.org/x/mod/semver -# golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9 +# golang.org/x/net v0.0.0-20220722155237-a158d28d115b ## explicit; go 1.17 golang.org/x/net/bpf golang.org/x/net/context/ctxhttp @@ -428,7 +432,7 @@ golang.org/x/net/internal/iana golang.org/x/net/internal/socket golang.org/x/net/ipv4 golang.org/x/net/publicsuffix -# golang.org/x/sys v0.0.0-20220329152356-43be30ef3008 +# golang.org/x/sys v0.0.0-20220808155132-1c4a2a72c664 ## explicit; go 1.17 golang.org/x/sys/cpu golang.org/x/sys/execabs @@ -464,12 +468,13 @@ golang.org/x/text/language golang.org/x/text/runes golang.org/x/text/transform golang.org/x/text/unicode/norm -# golang.org/x/tools v0.1.10 -## explicit; go 1.17 +# golang.org/x/tools v0.1.12 +## explicit; go 1.18 golang.org/x/tools/go/ast/astutil golang.org/x/tools/go/gcexportdata golang.org/x/tools/go/internal/gcimporter golang.org/x/tools/go/internal/packagesdriver +golang.org/x/tools/go/internal/pkgbits golang.org/x/tools/go/packages golang.org/x/tools/imports golang.org/x/tools/internal/event @@ -483,10 +488,8 @@ golang.org/x/tools/internal/imports golang.org/x/tools/internal/packagesinternal golang.org/x/tools/internal/typeparams golang.org/x/tools/internal/typesinternal -# golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 -## explicit; go 1.11 -golang.org/x/xerrors -golang.org/x/xerrors/internal +# golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f +## explicit; go 1.17 # gopkg.in/guregu/null.v4 v4.0.0 ## explicit gopkg.in/guregu/null.v4