diff --git a/.jcheck/conf b/.jcheck/conf index 25af49f8ef8..f1ac0f37a06 100644 --- a/.jcheck/conf +++ b/.jcheck/conf @@ -1,7 +1,7 @@ [general] project=jdk jbs=JDK -version=27 +version=28 [checks] error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace,problemlists,copyright diff --git a/doc/building.html b/doc/building.html index 86ee3390ead..be3c8c364d7 100644 --- a/doc/building.html +++ b/doc/building.html @@ -394,11 +394,11 @@ to date at the time of writing.

Linux/x64 -Oracle Enterprise Linux 6.4 / 8.x +Oracle Linux 6.4 / 8.x Linux/aarch64 -Oracle Enterprise Linux 7.6 / 8.x +Oracle Linux 7.6 / 8.x macOS @@ -1495,26 +1495,24 @@ following targets are known to work:

-

BASE_OS must be one of OL for Oracle -Enterprise Linux or Fedora. If the base OS is -Fedora the corresponding Fedora release can be specified -with the help of the BASE_OS_VERSION option. If the build -is successful, the new devkits can be found in the +

BASE_OS must be one of OL for Oracle Linux +or Fedora. The release/version of the base OS can be +specified using the BASE_OS_VERSION option. If the build is +successful, the new devkits can be found in the build/devkit/result subdirectory:

cd make/devkit
-make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=21
+make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora
 ls -1 ../../build/devkit/result/
 x86_64-linux-gnu-to-aarch64-linux-gnu
 x86_64-linux-gnu-to-ppc64le-linux-gnu

Notice that devkits are not only useful for targeting different build platforms. Because they contain the full build dependencies for a system -(i.e. compiler and root file system), they can easily be used to build -well-known, reliable and reproducible build environments. You can for -example create and use a devkit with GCC 7.3 and a Fedora 12 sysroot -environment (with glibc 2.11) on Ubuntu 14.04 (which doesn't have GCC -7.3 by default) to produce JDK binaries which will run on all Linux -systems with runtime libraries newer than the ones from Fedora 12 (e.g. -Ubuntu 16.04, SLES 11 or RHEL 6).

+(i.e., compiler and root file system/sysroot), they can easily be used +to build well-known, reliable, and reproducible build environments. You +can, for example, create and use a devkit with a version of the GCC +compiler not provided by the host OS, using a sysroot from an older +Linux distribution to produce JDK binaries which will run on all Linux +systems with newer runtime libraries.

Using Debian debootstrap

On Debian (or a derivative like Ubuntu), you can create sysroots for foreign architectures with tools provided by the OS. You can use diff --git a/doc/building.md b/doc/building.md index 93ab386ee8e..adf116764fa 100644 --- a/doc/building.md +++ b/doc/building.md @@ -195,8 +195,8 @@ time of writing. | Operating system | Vendor/version used | | ----------------- | ---------------------------------- | -| Linux/x64 | Oracle Enterprise Linux 6.4 / 8.x | -| Linux/aarch64 | Oracle Enterprise Linux 7.6 / 8.x | +| Linux/x64 | Oracle Linux 6.4 / 8.x | +| Linux/aarch64 | Oracle Linux 7.6 / 8.x | | macOS | macOS 14.x | | Windows | Windows Server 2016 | @@ -1288,27 +1288,26 @@ at least the following targets are known to work: | riscv64-linux-gnu | | s390x-linux-gnu | -`BASE_OS` must be one of `OL` for Oracle Enterprise Linux or `Fedora`. If the -base OS is `Fedora` the corresponding Fedora release can be specified with the -help of the `BASE_OS_VERSION` option. If the build is successful, the new -devkits can be found in the `build/devkit/result` subdirectory: +`BASE_OS` must be one of `OL` for Oracle Linux or `Fedora`. The release/version +of the base OS can be specified using the `BASE_OS_VERSION` option. If the build +is successful, the new devkits can be found in the `build/devkit/result` +subdirectory: ``` cd make/devkit -make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=21 +make TARGETS="ppc64le-linux-gnu aarch64-linux-gnu" BASE_OS=Fedora ls -1 ../../build/devkit/result/ x86_64-linux-gnu-to-aarch64-linux-gnu x86_64-linux-gnu-to-ppc64le-linux-gnu ``` Notice that devkits are not only useful for targeting different build -platforms. Because they contain the full build dependencies for a system (i.e. -compiler and root file system), they can easily be used to build well-known, -reliable and reproducible build environments. You can for example create and -use a devkit with GCC 7.3 and a Fedora 12 sysroot environment (with glibc 2.11) -on Ubuntu 14.04 (which doesn't have GCC 7.3 by default) to produce JDK binaries -which will run on all Linux systems with runtime libraries newer than the ones -from Fedora 12 (e.g. Ubuntu 16.04, SLES 11 or RHEL 6). +platforms. Because they contain the full build dependencies for a system (i.e., +compiler and root file system/sysroot), they can easily be used to build +well-known, reliable, and reproducible build environments. You can, for example, +create and use a devkit with a version of the GCC compiler not provided by the +host OS, using a sysroot from an older Linux distribution to produce JDK +binaries which will run on all Linux systems with newer runtime libraries. #### Using Debian debootstrap diff --git a/make/CompileDemos.gmk b/make/CompileDemos.gmk index 503edf18e00..ab3545facec 100644 --- a/make/CompileDemos.gmk +++ b/make/CompileDemos.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2011, 2026, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -173,41 +173,41 @@ $(BUILD_DEMO_CodePointIM_JAR): $(CODEPOINT_METAINF_SERVICE_FILE) $(eval $(call SetupBuildDemo, FileChooserDemo, \ DEMO_SUBDIR := jfc, \ - DISABLED_WARNINGS := rawtypes deprecation unchecked this-escape, \ + DISABLED_WARNINGS := this-escape, \ )) $(eval $(call SetupBuildDemo, SwingSet2, \ DEMO_SUBDIR := jfc, \ EXTRA_COPY_TO_JAR := .java, \ EXTRA_MANIFEST_ATTR := SplashScreen-Image: resources/images/splash.png, \ - DISABLED_WARNINGS := rawtypes deprecation unchecked static serial cast this-escape, \ + DISABLED_WARNINGS := rawtypes static serial cast this-escape, \ )) $(eval $(call SetupBuildDemo, Font2DTest, \ - DISABLED_WARNINGS := rawtypes deprecation unchecked serial cast this-escape dangling-doc-comments, \ + DISABLED_WARNINGS := serial dangling-doc-comments, \ DEMO_SUBDIR := jfc, \ )) $(eval $(call SetupBuildDemo, J2Ddemo, \ DEMO_SUBDIR := jfc, \ MAIN_CLASS := java2d.J2Ddemo, \ - DISABLED_WARNINGS := rawtypes deprecation unchecked cast lossy-conversions this-escape, \ + DISABLED_WARNINGS := cast lossy-conversions this-escape, \ JAR_NAME := J2Ddemo, \ )) $(eval $(call SetupBuildDemo, Metalworks, \ - DISABLED_WARNINGS := rawtypes unchecked this-escape, \ + DISABLED_WARNINGS := this-escape, \ DEMO_SUBDIR := jfc, \ )) $(eval $(call SetupBuildDemo, Notepad, \ - DISABLED_WARNINGS := rawtypes this-escape, \ + DISABLED_WARNINGS := this-escape, \ DEMO_SUBDIR := jfc, \ )) $(eval $(call SetupBuildDemo, Stylepad, \ DEMO_SUBDIR := jfc, \ - DISABLED_WARNINGS := rawtypes unchecked this-escape, \ + DISABLED_WARNINGS := this-escape, \ EXTRA_SRC_DIR := $(DEMO_SHARE_SRC)/jfc/Notepad, \ EXCLUDE_FILES := $(DEMO_SHARE_SRC)/jfc/Notepad/README.txt, \ )) @@ -217,7 +217,7 @@ $(eval $(call SetupBuildDemo, SampleTree, \ )) $(eval $(call SetupBuildDemo, TableExample, \ - DISABLED_WARNINGS := rawtypes unchecked deprecation this-escape dangling-doc-comments, \ + DISABLED_WARNINGS := dangling-doc-comments, \ DEMO_SUBDIR := jfc, \ )) diff --git a/make/conf/jib-profiles.js b/make/conf/jib-profiles.js index 4c1d2835054..20315cda97d 100644 --- a/make/conf/jib-profiles.js +++ b/make/conf/jib-profiles.js @@ -1192,8 +1192,8 @@ var getJibProfilesDependencies = function (input, common) { server: "jpg", product: "jcov", version: "3.0", - build_number: "5", - file: "bundles/jcov-3.0+5.zip", + build_number: "6", + file: "bundles/jcov-3.0+6.zip", environment_name: "JCOV_HOME", }, diff --git a/make/conf/version-numbers.conf b/make/conf/version-numbers.conf index 4f63179ae05..83cfa86cf70 100644 --- a/make/conf/version-numbers.conf +++ b/make/conf/version-numbers.conf @@ -26,17 +26,17 @@ # Default version, product, and vendor information to use, # unless overridden by configure -DEFAULT_VERSION_FEATURE=27 +DEFAULT_VERSION_FEATURE=28 DEFAULT_VERSION_INTERIM=0 DEFAULT_VERSION_UPDATE=0 DEFAULT_VERSION_PATCH=0 DEFAULT_VERSION_EXTRA1=0 DEFAULT_VERSION_EXTRA2=0 DEFAULT_VERSION_EXTRA3=0 -DEFAULT_VERSION_DATE=2026-09-15 -DEFAULT_VERSION_CLASSFILE_MAJOR=71 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`" +DEFAULT_VERSION_DATE=2027-03-23 +DEFAULT_VERSION_CLASSFILE_MAJOR=72 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`" DEFAULT_VERSION_CLASSFILE_MINOR=0 DEFAULT_VERSION_DOCS_API_SINCE=11 -DEFAULT_ACCEPTABLE_BOOT_VERSIONS="26 27" -DEFAULT_JDK_SOURCE_TARGET_VERSION=27 +DEFAULT_ACCEPTABLE_BOOT_VERSIONS="26 27 28" +DEFAULT_JDK_SOURCE_TARGET_VERSION=28 DEFAULT_PROMOTED_VERSION_PRE=ea diff --git a/make/devkit/Common.gmk b/make/devkit/Common.gmk new file mode 100644 index 00000000000..f9c42350103 --- /dev/null +++ b/make/devkit/Common.gmk @@ -0,0 +1,107 @@ +# +# Copyright (c) 2013, 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +ARCH := $(word 1,$(subst -, ,$(TARGET))) + +ifeq ($(TARGET), arm-linux-gnueabihf) + ARCH=armhfp +endif + +$(info ARCH=$(ARCH)) + +ifeq ($(PREFIX),) + $(error PREFIX not set) +endif + +BUILDDIR := $(OUTPUT_ROOT)/$(HOST)/$(TARGET) +TARGETDIR := $(PREFIX)/$(TARGET) +SYSROOT := $(TARGETDIR)/sysroot + +# Base OS information and repositories +# +# BASE_OS_REPOS is a space-separated set of repositories. Each entry +# is of the format , where is a unique +# identifier across the set of repositories. + +ifeq ($(BASE_OS), OL) + ifeq ($(filter aarch64 x86_64, $(ARCH)), ) + $(error Only "aarch64 x86_64" architectures are supported for OL, but "$(ARCH)" was requested) + endif + BASE_OS_VERSION ?= 7 + ifeq ($(BASE_OS_VERSION), 6) + ifeq ($(filter x86_64, $(ARCH)), ) + $(error Only "x86_64" architectures are supported for OL6, but "$(ARCH)" was requested) + endif + BASE_OS_DESCRIPTION_VERSION := 6.4 + REPO_BASE_URL := https://yum.oracle.com/repo/OracleLinux/OL6/4 + BASE_OS_REPOS := base,$(REPO_BASE_URL)/base/$(ARCH) + else ifeq ($(BASE_OS_VERSION), 7) + BASE_OS_DESCRIPTION_VERSION := 7.6 + REPO_BASE_URL := https://yum.oracle.com/repo/OracleLinux/OL7/6 + BASE_OS_REPOS := base,$(REPO_BASE_URL)/base/$(ARCH) + else + REPO_BASE_URL := https://yum.oracle.com/repo/OracleLinux/OL$(BASE_OS_VERSION) + BASE_OS_REPOS := baseos,$(REPO_BASE_URL)/baseos/latest/$(ARCH) appstream,$(REPO_BASE_URL)/appstream/$(ARCH) + BASE_OS_DESCRIPTION_VERSION := $(BASE_OS_VERSION) + endif + BASE_OS_DESCRIPTION := OL$(BASE_OS_DESCRIPTION_VERSION) +else ifeq ($(BASE_OS), Fedora) + ifeq ($(filter aarch64 armhfp ppc64le riscv64 s390x x86_64, $(ARCH)), ) + $(error Only "aarch64 armhfp ppc64le riscv64 s390x x86_64" architectures are supported for Fedora, but "$(ARCH)" was requested) + endif + ifeq ($(ARCH), riscv64) + BASE_OS_VERSION ?= 43 + BASE_OS_BUILD := 6640 + REPO_BASE_URL := https://riscv-koji.fedoraproject.org/repos-dist/f$(BASE_OS_VERSION)/$(BASE_OS_BUILD)/riscv64 + BASE_OS_REPOS := riscv64,$(REPO_BASE_URL) + else + ifeq ($(ARCH), armhfp) + BASE_OS_VERSION ?= 36 + else + BASE_OS_VERSION ?= 41 + endif + ifeq ($(ARCH), armhfp) + ifneq ($(BASE_OS_VERSION), 36) + $(error Fedora 36 is the last release supporting "armhfp", but $(BASE_OS_VERSION) was requested) + endif + endif + LATEST_ARCHIVED_OS_VERSION := 41 + ifeq ($(filter aarch64 x86_64 armhfp, $(ARCH)), ) + FEDORA_TYPE := fedora-secondary + else + FEDORA_TYPE := fedora/linux + endif + NOT_ARCHIVED := $(shell [ $(BASE_OS_VERSION) -gt $(LATEST_ARCHIVED_OS_VERSION) ] && echo true) + ifeq ($(NOT_ARCHIVED),true) + RPM_REPO_URL := https://dl.fedoraproject.org/pub/$(FEDORA_TYPE)/releases/$(BASE_OS_VERSION)/Everything/$(ARCH)/os + else + RPM_REPO_URL := https://archives.fedoraproject.org/pub/archive/$(FEDORA_TYPE)/releases/$(BASE_OS_VERSION)/Everything/$(ARCH)/os + endif + BASE_OS_REPOS := os,$(RPM_REPO_URL) + endif + BASE_OS_DESCRIPTION := Fedora_$(BASE_OS_VERSION) +else + $(error Unknown base OS $(BASE_OS)) +endif diff --git a/make/devkit/Makefile b/make/devkit/Makefile index 30e0dce0839..41ebb8b980c 100644 --- a/make/devkit/Makefile +++ b/make/devkit/Makefile @@ -1,5 +1,5 @@ # -# Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2026, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -39,7 +39,7 @@ # # make TARGETS="aarch64-linux-gnu" BASE_OS=Fedora # or -# make TARGETS="arm-linux-gnueabihf ppc64le-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=17 +# make TARGETS="aarch64-linux-gnu ppc64le-linux-gnu" BASE_OS=Fedora BASE_OS_VERSION=41 # # to build several devkits for a specific OS version at once. # You can find the final results under ../../build/devkit/result/-to- @@ -50,7 +50,7 @@ # makefile again for cross compilation. Ex: # # PATH=$PWD/../../build/devkit/result/x86_64-linux-gnu-to-x86_64-linux-gnu/bin:$PATH \ -# make TARGETS="arm-linux-gnueabihf ppc64le-linux-gnu" BASE_OS=Fedora +# make TARGETS="aarch64-linux-gnu ppc64le-linux-gnu" BASE_OS=Fedora # # This is the makefile which iterates over all host and target platforms. # @@ -79,10 +79,10 @@ TARGET_PLATFORMS := $(PLATFORMS) $(info HOST_PLATFORMS $(HOST_PLATFORMS)) $(info TARGET_PLATFORMS $(TARGET_PLATFORMS)) -all compile : $(PLATFORMS) +all compile: $(PLATFORMS) ifeq ($(SKIP_ME), ) - $(foreach p,$(filter-out $(ME),$(PLATFORMS)),$(eval $(p) : $$(ME))) + $(foreach p,$(filter-out $(ME),$(PLATFORMS)),$(eval $(p): $$(ME))) endif OUTPUT_ROOT = $(abspath ../../build/devkit) @@ -90,38 +90,39 @@ RESULT = $(OUTPUT_ROOT)/result SUBMAKEVARS = HOST=$@ BUILD=$(ME) RESULT=$(RESULT) OUTPUT_ROOT=$(OUTPUT_ROOT) -$(HOST_PLATFORMS) : +$(HOST_PLATFORMS): @echo 'Building compilers for $@' @echo 'Targets: $(TARGET_PLATFORMS)' for p in $(filter $@, $(TARGET_PLATFORMS)) $(filter-out $@, $(TARGET_PLATFORMS)); do \ - $(MAKE) -f Tools.gmk download-rpms $(SUBMAKEVARS) \ + $(MAKE) -f Sysroot.gmk sysroot $(SUBMAKEVARS) \ TARGET=$$p PREFIX=$(RESULT)/$@-to-$$p && \ $(MAKE) -f Tools.gmk all $(SUBMAKEVARS) \ TARGET=$$p PREFIX=$(RESULT)/$@-to-$$p && \ $(MAKE) -f Tools.gmk ccache $(SUBMAKEVARS) \ - TARGET=$@ PREFIX=$(RESULT)/$@-to-$$p || exit 1 ; \ + TARGET=$@ PREFIX=$(RESULT)/$@-to-$$p || exit 1; \ done - @echo 'All done"' + @echo 'All done' TODAY := $(shell date +%Y%m%d) define Mktar $(1)-to-$(2)_tar = $$(RESULT)/sdk-$(1)-to-$(2)-$$(TODAY).tar.gz - $$($(1)-to-$(2)_tar) : PLATFORM = $(1)-to-$(2) + $$($(1)-to-$(2)_tar): PLATFORM = $(1)-to-$(2) TARFILES += $$($(1)-to-$(2)_tar) endef $(foreach p,$(HOST_PLATFORMS),$(foreach t,$(TARGET_PLATFORMS),$(eval $(call Mktar,$(p),$(t))))) -tars : all $(TARFILES) -onlytars : $(TARFILES) -%.tar.gz : +tars: all $(TARFILES) +onlytars: $(TARFILES) + +%.tar.gz: $(MAKE) -r -f Tars.gmk SRC_DIR=$(RESULT)/$(PLATFORM) TAR_FILE=$@ -clean : +clean: rm -rf $(addprefix ../../build/devkit/, result $(HOST_PLATFORMS)) + dist-clean: clean rm -rf $(addprefix ../../build/devkit/, src download) -FORCE : -.PHONY : all compile tars $(HOST_PLATFORMS) clean dist-clean +.PHONY: all compile tars $(HOST_PLATFORMS) clean dist-clean diff --git a/make/devkit/Sysroot.gmk b/make/devkit/Sysroot.gmk new file mode 100644 index 00000000000..13395172074 --- /dev/null +++ b/make/devkit/Sysroot.gmk @@ -0,0 +1,208 @@ +# +# Copyright (c) 2013, 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +include Common.gmk + +$(info TARGET=$(TARGET)) +$(info HOST=$(HOST)) +$(info BUILD=$(BUILD)) + +ifeq ($(BASE_OS)-$(BASE_OS_VERSION)-$(ARCH), OL-7-aarch64) + KERNEL_HEADERS_RPM := kernel-uek-headers +else + KERNEL_HEADERS_RPM := kernel-headers +endif + +ifneq ($(BASE_OS)-$(BASE_OS_VERSION), OL-6) + WAYLAND_RPMS := wayland-devel wayland-protocols-devel +endif + +ZLIB_RPMS := zlib zlib-devel +ifeq ($(BASE_OS), Fedora) + ifneq ($(ARCH), armhfp) + ZLIB_RPMS := zlib-ng zlib-ng-devel + endif +endif + + +################################################################################ + +# RPMs to include +RPM_LIST := \ + filesystem \ + $(KERNEL_HEADERS_RPM) \ + glibc glibc-devel \ + cups-libs cups-devel \ + libX11 libX11-devel \ + libxcb xorg-x11-proto-devel \ + alsa-lib alsa-lib-devel \ + libXext libXext-devel \ + libXtst libXtst-devel \ + libXrender libXrender-devel \ + libXrandr libXrandr-devel \ + freetype freetype-devel \ + libXt libXt-devel \ + libSM libSM-devel \ + libICE libICE-devel \ + libXi libXi-devel \ + libXau libXau-devel \ + libgcc \ + $(ZLIB_RPMS) \ + libffi libffi-devel \ + fontconfig fontconfig-devel \ + systemtap-sdt-devel \ + $(WAYLAND_RPMS) \ + # + +################################################################################ +# Define common directories and files + +DOWNLOAD := $(OUTPUT_ROOT)/download +DOWNLOAD_RPMS := $(DOWNLOAD)/rpms/$(TARGET)-$(BASE_OS)-$(BASE_OS_VERSION) +SRCDIR := $(OUTPUT_ROOT)/src + +################################################################################ +# Marker files + +DOWNLOAD_RPMS_MARKER := $(BUILDDIR)/download-rpms.marker +RPMS_UNPACKED_MARKER := $(BUILDDIR)/rpms_unpacked.marker +UNPATCHED_SYSROOT_MARKER := $(BUILDDIR)/sysroot_unpatched.marker +PATCHED_SYSROOT_MARKER := $(BUILDDIR)/sysroot_patched.marker + +################################################################################ +# Download RPMs + +ifeq ($(ARCH), armhfp) + RPM_ARCH := armv7hl +else + RPM_ARCH := $(ARCH) +endif + +RPM_ARCHS := $(RPM_ARCH) noarch +ifeq ($(ARCH), x86_64) + # Enable mixed mode. + RPM_ARCHS += i386 i686 +endif + +EMPTY := +SPACE := $(EMPTY) $(EMPTY) +COMMA := , +DNF_ARCHS := $(foreach arch,$(RPM_ARCHS),--arch $(arch)) + +# Specify a dummy installation root, otherwise dnf will run into +# problems trying to reconcile with the local/system state +DNF_DUMMY_INSTALL_ROOT := $(BUILDDIR)/dnf-dummy-install-root + +DNF_REPOS := $(foreach repo, $(BASE_OS_REPOS), \ + --repofrompath $(repo) \ + --enablerepo $(word 1,$(subst $(COMMA),$(SPACE),$(repo)))) + +DNF_DOWNLOAD_FLAGS := \ + --disablerepo='*' \ + $(DNF_REPOS) \ + --resolve \ + $(DNF_ARCHS) \ + --forcearch $(RPM_ARCH) \ + --installroot $(DNF_DUMMY_INSTALL_ROOT) \ + --releasever $(BASE_OS_VERSION) \ + # + +$(DOWNLOAD_RPMS_MARKER): + @mkdir -p $(@D) + mkdir -p $(DOWNLOAD_RPMS) + echo $(RPM_LIST) | \ + xargs dnf download $(DNF_DOWNLOAD_FLAGS) --destdir $(DOWNLOAD_RPMS) + touch $@ + +################################################################################ +# Unpack RPMS + +RPM_PATTERNS := $(foreach arch,$(RPM_ARCHS),$(DOWNLOAD_RPMS)/*.$(arch).rpm) + +CPIO_EXCLUDES := \ + "./usr/share/doc/*" \ + "./usr/share/man/*" \ + "./usr/X11R6/man/*" \ + "*/X11/locale/*" \ + # + +$(RPMS_UNPACKED_MARKER): $(DOWNLOAD_RPMS_MARKER) + if [ -d $(SYSROOT) ]; then echo "WARNING: Sysroot directory ($(SYSROOT)) already exists, proceeding anyway..."; fi + @mkdir -p $(SYSROOT) + # The -e test below is needed to skip unmatched glob patterns + ( \ + cd $(SYSROOT); \ + for rpm in $(RPM_PATTERNS); do \ + if [ ! -e "$$rpm" ]; then continue; fi; \ + echo Extracting $$rpm...; \ + rpm2cpio $$rpm | \ + cpio --extract --make-directories -f $(CPIO_EXCLUDES) \ + || exit 1; \ + done \ + ) + touch $@ + +################################################################################ + +$(UNPATCHED_SYSROOT_MARKER): $(RPMS_UNPACKED_MARKER) + touch $@ + +################################################################################ +# Patch sysroot + +# Note: MUST create a /usr/lib even if not really needed. +# gcc will use a path relative to it to resolve lib64. (x86_64). +# we're creating multi-lib compiler with 32bit libc as well, so we should +# have it anyway, but just to make sure... +# Patch GNU ld scripts to force linking against libraries in the sysroot +# and not the ones installed on the build machine. + +LD_SCRIPT_PATCHES := \ + -e 's|/usr/lib64/||g' \ + -e 's|/usr/lib/||g' \ + -e 's|/lib64/||g' \ + -e 's|/lib/||g' \ + # + +$(PATCHED_SYSROOT_MARKER): $(UNPATCHED_SYSROOT_MARKER) + @echo Patching GNU ld scripts + @( \ + for f in $$(find $(SYSROOT) -name "*.so" -type f 2>/dev/null); do \ + if grep -Iq 'GNU ld script' "$$f"; then \ + sed $(LD_SCRIPT_PATCHES) "$$f" > "$$f.tmp" && \ + mv "$$f.tmp" "$$f"; \ + fi; \ + done \ + ) + @mkdir -p $(SYSROOT)/usr/lib + @touch $@ + +################################################################################ + +download-rpms: $(DOWNLOAD_RPMS_MARKER) +unpatched-sysroot: $(UNPATCHED_SYSROOT_MARKER) +sysroot: $(PATCHED_SYSROOT_MARKER) + +.PHONY: download-rpms unpatched-sysroot sysroot diff --git a/make/devkit/Tars.gmk b/make/devkit/Tars.gmk index 80bba3d0242..c4d1e1f4dc5 100644 --- a/make/devkit/Tars.gmk +++ b/make/devkit/Tars.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2026, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -39,9 +39,9 @@ endif default: tars -tars : $(TAR_FILE) +tars: $(TAR_FILE) -$(TAR_FILE): $(shell find $(SRC_DIR) -type f) +$(TAR_FILE): $(shell find $(SRC_DIR) -type f | sed 's/ /\\ /g') @echo 'Creating compiler package $@' cd $(dir $(SRC_DIR)) && tar -czf $@ $(notdir $(SRC_DIR))/* touch $@ diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk index 74c6d861777..835ada3a082 100644 --- a/make/devkit/Tools.gmk +++ b/make/devkit/Tools.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2013, 2026, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -39,68 +39,14 @@ # Fix this... # +include Common.gmk + lowercase = $(shell echo $1 | tr A-Z a-z) $(info TARGET=$(TARGET)) $(info HOST=$(HOST)) $(info BUILD=$(BUILD)) -ARCH := $(word 1,$(subst -, ,$(TARGET))) - -ifeq ($(TARGET), arm-linux-gnueabihf) - ARCH=armhfp -endif - -$(info ARCH=$(ARCH)) - -KERNEL_HEADERS_RPM := kernel-headers - -ifeq ($(BASE_OS), OL) - ifeq ($(ARCH), aarch64) - BASE_URL := https://yum.oracle.com/repo/OracleLinux/OL7/6/base/$(ARCH)/ - LINUX_VERSION := OL7.6 - KERNEL_HEADERS_RPM := kernel-uek-headers - else - BASE_URL := https://yum.oracle.com/repo/OracleLinux/OL6/4/base/$(ARCH)/ - LINUX_VERSION := OL6.4 - endif -else ifeq ($(BASE_OS), Fedora) - DEFAULT_OS_VERSION := 41 - ifeq ($(BASE_OS_VERSION), ) - BASE_OS_VERSION := $(DEFAULT_OS_VERSION) - endif - ifeq ($(filter aarch64 armhfp ppc64le riscv64 s390x x86_64, $(ARCH)), ) - $(error Only "aarch64 armhfp ppc64le riscv64 s390x x86_64" architectures are supported for Fedora, but "$(ARCH)" was requested) - endif - ifeq ($(ARCH), riscv64) - ifeq ($(filter 38 39 40 41, $(BASE_OS_VERSION)), ) - $(error Only Fedora 38-41 are supported for "$(ARCH)", but Fedora $(BASE_OS_VERSION) was requested) - endif - BASE_URL := http://fedora.riscv.rocks/repos-dist/f$(BASE_OS_VERSION)/latest/$(ARCH)/Packages/ - else - LATEST_ARCHIVED_OS_VERSION := 41 - ifeq ($(filter aarch64 armhfp x86_64, $(ARCH)), ) - FEDORA_TYPE := fedora-secondary - else - FEDORA_TYPE := fedora/linux - endif - ifeq ($(ARCH), armhfp) - ifneq ($(BASE_OS_VERSION), 36) - $(error Fedora 36 is the last release supporting "armhfp", but $(BASE_OS) was requested) - endif - endif - NOT_ARCHIVED := $(shell [ $(BASE_OS_VERSION) -gt $(LATEST_ARCHIVED_OS_VERSION) ] && echo true) - ifeq ($(NOT_ARCHIVED),true) - BASE_URL := https://dl.fedoraproject.org/pub/$(FEDORA_TYPE)/releases/$(BASE_OS_VERSION)/Everything/$(ARCH)/os/Packages/ - else - BASE_URL := https://archives.fedoraproject.org/pub/archive/$(FEDORA_TYPE)/releases/$(BASE_OS_VERSION)/Everything/$(ARCH)/os/Packages/ - endif - endif - LINUX_VERSION := Fedora_$(BASE_OS_VERSION) -else - $(error Unknown base OS $(BASE_OS)) -endif - ################################################################################ # Define external dependencies @@ -156,32 +102,6 @@ ifneq ($(REQUIRED_MIN_MAKE_MAJOR_VERSION),) endif endif -# RPMs used by all BASE_OS -RPM_LIST := \ - $(KERNEL_HEADERS_RPM) \ - glibc glibc-headers glibc-devel \ - cups-libs cups-devel \ - libX11 libX11-devel \ - libxcb xorg-x11-proto-devel \ - alsa-lib alsa-lib-devel \ - libXext libXext-devel \ - libXtst libXtst-devel \ - libXrender libXrender-devel \ - libXrandr libXrandr-devel \ - freetype freetype-devel \ - libXt libXt-devel \ - libSM libSM-devel \ - libICE libICE-devel \ - libXi libXi-devel \ - libXdmcp libXdmcp-devel \ - libXau libXau-devel \ - libgcc libxcrypt \ - zlib zlib-devel \ - libffi libffi-devel \ - fontconfig fontconfig-devel \ - systemtap-sdt-devel \ - # - ################################################################################ # Define common directories and files @@ -194,28 +114,11 @@ else endif # Define directories -BUILDDIR := $(OUTPUT_ROOT)/$(HOST)/$(TARGET) -TARGETDIR := $(PREFIX)/$(TARGET) -SYSROOT := $(TARGETDIR)/sysroot DOWNLOAD := $(OUTPUT_ROOT)/download -DOWNLOAD_RPMS := $(DOWNLOAD)/rpms/$(TARGET)-$(LINUX_VERSION) SRCDIR := $(OUTPUT_ROOT)/src -# Marker file for unpacking rpms -RPMS := $(SYSROOT)/rpms_unpacked - -# Need to patch libs that are linker scripts to use non-absolute paths -LIBS := $(SYSROOT)/libs_patched - -################################################################################ -# Download RPMs -download-rpms: - mkdir -p $(DOWNLOAD_RPMS) - # Only run this if rpm dir is empty. - ifeq ($(wildcard $(DOWNLOAD_RPMS)/*.rpm), ) - cd $(DOWNLOAD_RPMS) && \ - wget -r -np -nd $(patsubst %, -A "*%*.rpm", $(RPM_LIST)) $(BASE_URL) - endif +# Marker files +LINK_LIBS_MARKER := $(BUILDDIR)/link_libs.marker ################################################################################ # Unpack source packages @@ -236,24 +139,24 @@ define DownloadVerify endif $(1)_FILE = $(DOWNLOAD)/$(notdir $($(1)_URL)) - $$($(1)_SRC_MARKER) : $$($(1)_FILE) + $$($(1)_SRC_MARKER): $$($(1)_FILE) mkdir -p $$(SRCDIR) tar -C $$(SRCDIR) -xf $$< $$(foreach p,$$(abspath $$(wildcard patches/$$(ARCH)-$$(notdir $$($(1)_DIR)).patch)), \ - echo PATCHING $$(p) ; \ - patch -d $$($(1)_DIR) -p1 -i $$(p) ; \ + echo PATCHING $$(p); \ + patch -d $$($(1)_DIR) -p1 -i $$(p); \ ) touch $$@ - $$($(1)_FILE) : + $$($(1)_FILE): mkdir -p $$(@D) wget -O - $$($(1)_URL) > $$@.tmp sha512_actual="$$$$(sha512sum $$@.tmp | awk '{ print $$$$1; }')"; \ if [ x"$$$${sha512_actual}" != x"$$($(1)_SHA512)" ]; then \ - echo "Checksum mismatch for $$@.tmp"; \ - echo " Expected: $$($(1)_SHA512)"; \ - echo " Actual: $$$${sha512_actual}"; \ - exit 1; \ + echo "Checksum mismatch for $$@.tmp"; \ + echo " Expected: $$($(1)_SHA512)"; \ + echo " Actual: $$$${sha512_actual}"; \ + exit 1; \ fi mv $$@.tmp $$@ endef @@ -261,89 +164,17 @@ endef # Download and unpack all source packages $(foreach dep,$(DEPENDENCIES),$(eval $(call DownloadVerify,$(dep)))) -################################################################################ -# Unpack RPMS - -RPM_ARCHS := $(ARCH) noarch -ifeq ($(ARCH),x86_64) - # Enable mixed mode. - RPM_ARCHS += i386 i686 -else ifeq ($(ARCH),i686) - RPM_ARCHS += i386 -else ifeq ($(ARCH), armhfp) - RPM_ARCHS += armv7hl -endif - -RPM_FILE_LIST := $(sort $(foreach a, $(RPM_ARCHS), \ - $(wildcard $(patsubst %,$(DOWNLOAD_RPMS)/%*$a.rpm,$(RPM_LIST))) \ -)) - -# Note. For building linux you should install rpm2cpio. -define unrpm - $(SYSROOT)/$(notdir $(1)).unpacked : $(1) - $$(RPMS) : $(SYSROOT)/$(notdir $(1)).unpacked -endef - -%.unpacked : - $(info Unpacking target rpms and libraries from $<) - @(mkdir -p $(@D); \ - cd $(@D); \ - rpm2cpio $< | \ - cpio --extract --make-directories \ - -f \ - "./usr/share/doc/*" \ - "./usr/share/man/*" \ - "./usr/X11R6/man/*" \ - "*/X11/locale/*" \ - || die ; ) - touch $@ - -$(foreach p,$(RPM_FILE_LIST),$(eval $(call unrpm,$(p)))) - -################################################################################ - -# Note: MUST create a /usr/lib even if not really needed. -# gcc will use a path relative to it to resolve lib64. (x86_64). -# we're creating multi-lib compiler with 32bit libc as well, so we should -# have it anyway, but just to make sure... -# Patch libc.so and libpthread.so to force linking against libraries in sysroot -# and not the ones installed on the build machine. -$(LIBS) : $(RPMS) - @echo Patching libc and pthreads - @(for f in `find $(SYSROOT) -name libc.so -o -name libpthread.so`; do \ - (cat $$f | sed -e 's|/usr/lib64/||g' \ - -e 's|/usr/lib/||g' \ - -e 's|/lib64/||g' \ - -e 's|/lib/||g' ) > $$f.tmp ; \ - mv $$f.tmp $$f ; \ - done) - @mkdir -p $(SYSROOT)/usr/lib - @touch $@ - -################################################################################ -# Create links for ffi header files so that they become visible by default when using the -# devkit. -ifeq ($(ARCH), x86_64) - $(SYSROOT)/usr/include/ffi.h: $(RPMS) - cd $(@D) && rm -f $(@F) && ln -s ../lib/libffi-*/include/$(@F) . - - $(SYSROOT)/usr/include/ffitarget.h: $(RPMS) - cd $(@D) && rm -f $(@F) && ln -s ../lib/libffi-*/include/$(@F) . - - SYSROOT_LINKS += $(SYSROOT)/usr/include/ffi.h $(SYSROOT)/usr/include/ffitarget.h -endif - -################################################################################ - # Define marker files for each source package to be compiled $(foreach dep,$(DEPENDENCIES),$(eval $(dep) = $(TARGETDIR)/$($(dep)_VER).done)) ################################################################################ # Default base config -CONFIG = --target=$(TARGET) \ +CONFIG = \ + --target=$(TARGET) \ --host=$(HOST) --build=$(BUILD) \ - --prefix=$(PREFIX) + --prefix=$(PREFIX) \ + # CMAKE_CONFIG = -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(PREFIX) @@ -357,7 +188,6 @@ BUILDPAR = -j$(NUM_CORES) MAKECMD = INSTALLCMD = install - declare_tools = CC$(1)=$(2)gcc LD$(1)=$(2)ld AR$(1)=$(2)ar AS$(1)=$(2)as RANLIB$(1)=$(2)ranlib CXX$(1)=$(2)g++ OBJDUMP$(1)=$(2)objdump ifeq ($(HOST),$(BUILD)) @@ -376,10 +206,10 @@ TOOLS ?= $(call declare_tools,_FOR_TARGET,$(TARGET)-) # CFLAG_ to most likely -m32. define mk_bfd $$(info Libs for $(1)) - $$(BUILDDIR)/$$(BINUTILS_VER)-$(subst /,-,$(1))/Makefile \ - : CFLAGS += $$(CFLAGS_$(1)) - $$(BUILDDIR)/$$(BINUTILS_VER)-$(subst /,-,$(1))/Makefile \ - : LIBDIRS = --libdir=$(TARGETDIR)/$(1) + $$(BUILDDIR)/$$(BINUTILS_VER)-$(subst /,-,$(1))/Makefile: \ + CFLAGS += $$(CFLAGS_$(1)) + $$(BUILDDIR)/$$(BINUTILS_VER)-$(subst /,-,$(1))/Makefile: \ + LIBDIRS = --libdir=$(TARGETDIR)/$(1) BFDLIB += $$(TARGETDIR)/$$(BINUTILS_VER)-$(subst /,-,$(1)).done BFDMAKES += $$(BUILDDIR)/$$(BINUTILS_VER)-$(subst /,-,$(1))/Makefile @@ -389,18 +219,18 @@ endef $(foreach l,$(LIBDIRS),$(eval $(call mk_bfd,$(l)))) # Only build these two libs. -$(BFDLIB) : MAKECMD = all-libiberty all-bfd -$(BFDLIB) : INSTALLCMD = install-libiberty install-bfd +$(BFDLIB): MAKECMD = all-libiberty all-bfd +$(BFDLIB): INSTALLCMD = install-libiberty install-bfd # Building targets libbfd + libiberty. HOST==TARGET, i.e not # for a cross env. -$(BFDMAKES) : CONFIG = --target=$(TARGET) \ +$(BFDMAKES): CONFIG = --target=$(TARGET) \ --host=$(TARGET) --build=$(BUILD) \ --prefix=$(TARGETDIR) \ --with-sysroot=$(SYSROOT) \ $(LIBDIRS) -$(BFDMAKES) : TOOLS = $(call declare_tools,_FOR_TARGET,$(TARGET)-) $(call declare_tools,,$(TARGET)-) +$(BFDMAKES): TOOLS = $(call declare_tools,_FOR_TARGET,$(TARGET)-) $(call declare_tools,,$(TARGET)-) ################################################################################ @@ -410,50 +240,52 @@ $(GCC) \ $(MPFR) \ $(MPC) \ $(BFDMAKES) \ - $(CCACHE) : ENVS += $(TOOLS) + $(CCACHE): ENVS += $(TOOLS) # libdir to work around hateful bfd stuff installing into wrong dirs... # ensure we have 64 bit bfd support in the HOST library. I.e our # compiler on i686 will know 64 bit symbols, BUT later # we build just the libs again for TARGET, then with whatever the arch # wants. -$(BUILDDIR)/$(BINUTILS_VER)/Makefile : CONFIG += --enable-64-bit-bfd --libdir=$(PREFIX)/$(word 1,$(LIBDIRS)) +$(BUILDDIR)/$(BINUTILS_VER)/Makefile: CONFIG += --enable-64-bit-bfd --libdir=$(PREFIX)/$(word 1,$(LIBDIRS)) ifeq ($(filter $(ARCH), s390x riscv64 ppc64le), ) # gold compiles but cannot link properly on s390x @ gcc 13.2 and Fedore 41 # gold is not available for riscv64 and ppc64le, # and subsequent linking will fail if we try to enable it. - LINKER_CONFIG := --enable-gold=default + LINKER_CONFIG_ENABLE_GOLD := --enable-gold=default +endif + +ifeq ($(filter riscv64 ppc64le s390x armhfp, $(ARCH)), ) + ENABLE_MULTILIB := --enable-multilib endif # Makefile creation. Simply run configure in build dir. # Setting CFLAGS to -O2 generates a much faster ld. $(BFDMAKES) \ -$(BUILDDIR)/$(BINUTILS_VER)/Makefile \ - : $(BINUTILS_CFG) +$(BUILDDIR)/$(BINUTILS_VER)/Makefile: $(BINUTILS_CFG) $(info Configuring $@. Log in $(@D)/log.config) @mkdir -p $(@D) ( \ - cd $(@D) ; \ + cd $(@D); \ $(PATHPRE) $(ENVS) CFLAGS="-O2 $(CFLAGS)" \ $(BINUTILS_CFG) \ $(CONFIG) \ - $(LINKER_CONFIG) \ + $(LINKER_CONFIG_ENABLE_GOLD) \ --with-sysroot=$(SYSROOT) \ --disable-nls \ --program-prefix=$(TARGET)- \ - --enable-multilib \ + $(ENABLE_MULTILIB) \ --enable-threads \ --enable-plugins \ ) > $(@D)/log.config 2>&1 @echo 'done' -$(BUILDDIR)/$(MPFR_VER)/Makefile \ - : $(MPFR_CFG) +$(BUILDDIR)/$(MPFR_VER)/Makefile: $(MPFR_CFG) $(info Configuring $@. Log in $(@D)/log.config) @mkdir -p $(@D) ( \ - cd $(@D) ; \ + cd $(@D); \ $(PATHPRE) $(ENVS) CFLAGS="$(CFLAGS)" \ $(MPFR_CFG) \ $(CONFIG) \ @@ -463,12 +295,11 @@ $(BUILDDIR)/$(MPFR_VER)/Makefile \ ) > $(@D)/log.config 2>&1 @echo 'done' -$(BUILDDIR)/$(GMP_VER)/Makefile \ - : $(GMP_CFG) +$(BUILDDIR)/$(GMP_VER)/Makefile: $(GMP_CFG) $(info Configuring $@. Log in $(@D)/log.config) @mkdir -p $(@D) ( \ - cd $(@D) ; \ + cd $(@D); \ $(PATHPRE) $(ENVS) CFLAGS="$(CFLAGS)" \ $(GMP_CFG) \ --host=$(HOST) --build=$(BUILD) \ @@ -480,12 +311,11 @@ $(BUILDDIR)/$(GMP_VER)/Makefile \ ) > $(@D)/log.config 2>&1 @echo 'done' -$(BUILDDIR)/$(MPC_VER)/Makefile \ - : $(MPC_CFG) +$(BUILDDIR)/$(MPC_VER)/Makefile: $(MPC_CFG) $(info Configuring $@. Log in $(@D)/log.config) @mkdir -p $(@D) ( \ - cd $(@D) ; \ + cd $(@D); \ $(PATHPRE) $(ENVS) CFLAGS="$(CFLAGS)" \ $(MPC_CFG) \ $(CONFIG) \ @@ -499,14 +329,18 @@ $(BUILDDIR)/$(MPC_VER)/Makefile \ # Only valid if glibc target -> linux # proper destructor handling for c++ ifneq (,$(findstring linux,$(TARGET))) - $(BUILDDIR)/$(GCC_VER)/Makefile : CONFIG += --enable-__cxa_atexit + $(BUILDDIR)/$(GCC_VER)/Makefile: CONFIG += --enable-__cxa_atexit endif +$(BUILDDIR)/$(GCC_VER)/Makefile: CONFIG += --disable-libgomp ifeq ($(ARCH), armhfp) - $(BUILDDIR)/$(GCC_VER)/Makefile : CONFIG += --with-float=hard + $(BUILDDIR)/$(GCC_VER)/Makefile: CONFIG += --with-float=hard +endif +ifeq ($(ARCH), riscv64) + $(BUILDDIR)/$(GCC_VER)/Makefile: CONFIG += --disable-libsanitizer endif -ifneq ($(filter riscv64 ppc64le s390x, $(ARCH)), ) +ifneq ($(filter riscv64 ppc64le s390x armhfp, $(ARCH)), ) # We only support 64-bit on these platforms anyway CONFIG += --disable-multilib endif @@ -518,12 +352,11 @@ endif # skip native language. # and link and assemble with the binutils we created # earlier, so --with-gnu* -$(BUILDDIR)/$(GCC_VER)/Makefile \ - : $(GCC_CFG) +$(BUILDDIR)/$(GCC_VER)/Makefile: $(GCC_CFG) $(info Configuring $@. Log in $(@D)/log.config) mkdir -p $(@D) ( \ - cd $(@D) ; \ + cd $(@D); \ $(PATHPRE) $(ENVS) $(GCC_CFG) $(EXTRA_CFLAGS) \ $(CONFIG) \ --with-sysroot=$(SYSROOT) \ @@ -540,12 +373,12 @@ $(BUILDDIR)/$(GCC_VER)/Makefile \ @echo 'done' # need binutils for gcc -$(GCC) : $(BINUTILS) +$(GCC): $(BINUTILS) # as of 4.3 or so need these for doing config -$(BUILDDIR)/$(GCC_VER)/Makefile : $(GMP) $(MPFR) $(MPC) -$(MPFR) : $(GMP) -$(MPC) : $(GMP) $(MPFR) +$(BUILDDIR)/$(GCC_VER)/Makefile: $(GMP) $(MPFR) $(MPC) +$(MPFR): $(GMP) +$(MPC): $(GMP) $(MPFR) ################################################################################ # Build gdb but only where host and target match @@ -554,7 +387,7 @@ ifeq ($(HOST), $(TARGET)) $(info Configuring $@. Log in $(@D)/log.config) mkdir -p $(@D) ( \ - cd $(@D) ; \ + cd $(@D); \ $(PATHPRE) $(ENVS) CFLAGS="$(CFLAGS)" $(GDB_CFG) \ $(CONFIG) \ --with-sysroot=$(SYSROOT) \ @@ -574,14 +407,12 @@ endif ################################################################################ # very straightforward. just build a ccache. it is only for host. -$(BUILDDIR)/$(CCACHE_VER)/Makefile \ - : $(CCACHE_SRC_MARKER) +$(BUILDDIR)/$(CCACHE_VER)/Makefile: $(CCACHE_SRC_MARKER) $(info Configuring $@. Log in $(@D)/log.config) @mkdir -p $(@D) @( \ - cd $(@D) ; \ - $(PATHPRE) $(ENVS) $(CCACHE_CFG) \ - $(CCACHE_CONFIG) \ + cd $(@D); \ + $(PATHPRE) $(ENVS) $(CCACHE_CFG) $(CCACHE_CONFIG) \ ) > $(@D)/log.config 2>&1 @echo 'done' @@ -590,13 +421,12 @@ GCC_PATCHED = $(TARGETDIR)/gcc-patched ################################################################################ # For some reason cpp is not created as a target-compiler ifeq ($(HOST),$(TARGET)) - $(GCC_PATCHED) : $(GCC) link_libs + $(GCC_PATCHED): $(LINK_LIBS_MARKER) @echo -n 'Creating compiler symlinks...' @for f in cpp; do \ - if [ ! -e $(PREFIX)/bin/$(TARGET)-$$f ]; \ - then \ + if [ ! -e $(PREFIX)/bin/$(TARGET)-$$f ]; then \ cd $(PREFIX)/bin && \ - ln -fs $$f $(TARGET)-$$f ; \ + ln -fs $$f $(TARGET)-$$f; \ fi \ done @touch $@ @@ -606,19 +436,21 @@ ifeq ($(HOST),$(TARGET)) # Ugly at best. Seems that when we compile host->host compiler, that are NOT # the BUILD compiler, the result will not try searching for libs in package root. # "Solve" this by create links from the target libdirs to where they are. - link_libs: + $(LINK_LIBS_MARKER): $(GCC) @echo -n 'Creating library symlinks...' - @$(foreach l,$(LIBDIRS), \ - for f in `cd $(PREFIX)/$(l) && ls`; do \ - if [ ! -e $(TARGETDIR)/$(l)/$$f ]; then \ - mkdir -p $(TARGETDIR)/$(l) && \ - cd $(TARGETDIR)/$(l)/ && \ - ln -fs $(if $(findstring /,$(l)),../,)../../$(l)/$$f $$f; \ - fi \ - done;) + @for l in $(LIBDIRS); do \ + for f in `cd $(PREFIX)/$$l && ls`; do \ + if [ ! -e $(TARGETDIR)/$$l/$$f ]; then \ + mkdir -p $(TARGETDIR)/$$l && \ + cd $(TARGETDIR)/$$l/ && \ + ln -fs ../../$$l/$$f $$f; \ + fi \ + done \ + done + @touch $@ @echo 'done' else - $(GCC_PATCHED) : + $(GCC_PATCHED): @echo 'done' endif @@ -628,7 +460,7 @@ endif # make install. # Use path to our build hosts cross tools # Always need to build cross tools for build host self. -$(TARGETDIR)/%.done : $(BUILDDIR)/%/Makefile +$(TARGETDIR)/%.done: $(BUILDDIR)/%/Makefile $(info Building $(basename $@). Log in $( $(&1 @echo -n 'installing...' @@ -646,26 +478,20 @@ $(PREFIX)/devkit.info: echo '# This file describes to configure how to interpret the contents of this' >> $@ echo '# devkit' >> $@ echo '' >> $@ - echo 'DEVKIT_NAME="$(GCC_VER) - $(LINUX_VERSION)"' >> $@ + echo 'DEVKIT_NAME="$(GCC_VER) - $(BASE_OS_DESCRIPTION)"' >> $@ echo 'DEVKIT_TOOLCHAIN_PATH="$$DEVKIT_ROOT/bin"' >> $@ echo 'DEVKIT_SYSROOT="$$DEVKIT_ROOT/$(TARGET)/sysroot"' >> $@ echo 'DEVKIT_EXTRA_PATH="$$DEVKIT_ROOT/bin"' >> $@ ################################################################################ # Copy these makefiles into the root of the kit -$(PREFIX)/Makefile: ./Makefile - rm -rf $@ - cp $< $@ -$(PREFIX)/Tools.gmk: ./Tools.gmk - rm -rf $@ - cp $< $@ +THESE_MAKEFILES := Makefile $(wildcard *.gmk) patches +COPIED_MAKEFILES := $(addprefix $(PREFIX)/, $(THESE_MAKEFILES)) -$(PREFIX)/Tars.gmk: ./Tars.gmk +$(PREFIX)/%: ./% rm -rf $@ - cp $< $@ - -THESE_MAKEFILES := $(PREFIX)/Makefile $(PREFIX)/Tools.gmk $(PREFIX)/Tars.gmk + cp -r $< $@ ################################################################################ @@ -682,9 +508,14 @@ ifeq ($(TARGET), $(HOST)) @echo 'Creating missing $* soft link' ln -s $(TARGET)-$* $@ - MISSING_LINKS := $(addprefix $(PREFIX)/bin/, \ + MISSING_LINK_NAMES = \ addr2line ar as c++ c++filt dwp elfedit g++ gcc gcc-$(GCC_VER_ONLY) gprof ld ld.bfd \ - ld.gold nm objcopy objdump ranlib readelf size strings strip) + nm objcopy objdump ranlib readelf size strings strip + ifneq ($(LINKER_CONFIG_ENABLE_GOLD), ) + MISSING_LINK_NAMES += ld.gold + endif + + MISSING_LINKS := $(addprefix $(PREFIX)/bin/, $(MISSING_LINK_NAMES)) endif # Add link to work around "plugin needed to handle lto object" (JDK-8344272) @@ -697,17 +528,14 @@ MISSING_LINKS += $(PREFIX)/lib/bfd-plugins/liblto_plugin.so ################################################################################ -bfdlib : $(BFDLIB) -binutils : $(BINUTILS) -rpms : $(RPMS) -libs : $(LIBS) -sysroot : rpms libs -gcc : sysroot $(GCC) $(GCC_PATCHED) -gdb : $(GDB) -all : binutils gcc bfdlib $(PREFIX)/devkit.info $(MISSING_LINKS) $(SYSROOT_LINKS) \ - $(THESE_MAKEFILES) gdb +bfdlib: $(BFDLIB) +binutils: $(BINUTILS) +gcc: $(GCC) $(GCC_PATCHED) +gdb: $(GDB) +all: binutils gcc bfdlib gdb \ + $(MISSING_LINKS) $(COPIED_MAKEFILES) $(PREFIX)/devkit.info # this is only built for host. so separate. -ccache : $(CCACHE) +ccache: $(CCACHE) -.PHONY : gcc all binutils bfdlib link_libs rpms libs sysroot +.PHONY: bfdlib binutils gcc gdb all ccache diff --git a/make/modules/jdk.internal.le/Java.gmk b/make/modules/jdk.internal.le/Java.gmk index 27c6eaf5f7f..d101f582484 100644 --- a/make/modules/jdk.internal.le/Java.gmk +++ b/make/modules/jdk.internal.le/Java.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -25,8 +25,6 @@ ################################################################################ -DISABLED_WARNINGS_java += dangling-doc-comments this-escape - COPY += .properties .caps .txt ################################################################################ diff --git a/make/modules/jdk.jpackage/Java.gmk b/make/modules/jdk.jpackage/Java.gmk index 1fd4d527217..f36c83d772e 100644 --- a/make/modules/jdk.jpackage/Java.gmk +++ b/make/modules/jdk.jpackage/Java.gmk @@ -25,8 +25,6 @@ ################################################################################ -DISABLED_WARNINGS_java += dangling-doc-comments - COPY += .gif .png .txt .spec .script .prerm .preinst \ .postrm .postinst .list .sh .desktop .copyright .control .plist .template \ .icns .scpt .wxs .wxl .wxi .wxf .ico .bmp .tiff .service .xsl .js diff --git a/make/test/BuildMicrobenchmark.gmk b/make/test/BuildMicrobenchmark.gmk index 4946263ef4e..c71ef7c61af 100644 --- a/make/test/BuildMicrobenchmark.gmk +++ b/make/test/BuildMicrobenchmark.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2026, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -83,8 +83,8 @@ $(eval $(call SetupJavaCompilation, BUILD_JDK_MICROBENCHMARK, \ SMALL_JAVA := false, \ CLASSPATH := $(JMH_COMPILE_JARS), \ CREATE_API_DIGEST := true, \ - DISABLED_WARNINGS := restricted this-escape processing rawtypes removal cast \ - serial preview dangling-doc-comments, \ + DISABLED_WARNINGS := restricted this-escape rawtypes removal cast \ + serial preview, \ SRC := $(MICROBENCHMARK_SRC), \ BIN := $(MICROBENCHMARK_CLASSES), \ JAVAC_FLAGS := \ diff --git a/make/test/BuildTestLib.gmk b/make/test/BuildTestLib.gmk index dc5e0a9bd64..3668a918ab1 100644 --- a/make/test/BuildTestLib.gmk +++ b/make/test/BuildTestLib.gmk @@ -1,5 +1,5 @@ # -# Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -46,7 +46,6 @@ $(eval $(call SetupJavaCompilation, BUILD_WB_JAR, \ SRC := $(TEST_LIB_SOURCE_DIR)/jdk/test/whitebox/, \ BIN := $(TEST_LIB_SUPPORT)/wb_classes, \ JAR := $(TEST_LIB_SUPPORT)/wb.jar, \ - DISABLED_WARNINGS := deprecation removal preview, \ JAVAC_FLAGS := --enable-preview, \ )) diff --git a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp index 56ac2eec0a9..7731290c801 100644 --- a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp @@ -28,7 +28,6 @@ #include "gc/shenandoah/mode/shenandoahMode.hpp" #include "gc/shenandoah/shenandoahBarrierSet.hpp" #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp" -#include "gc/shenandoah/shenandoahForwarding.hpp" #include "gc/shenandoah/shenandoahHeap.inline.hpp" #include "gc/shenandoah/shenandoahHeapRegion.hpp" #include "gc/shenandoah/shenandoahRuntime.hpp" @@ -174,53 +173,6 @@ void ShenandoahBarrierSetAssembler::satb_barrier(MacroAssembler* masm, __ bind(done); } -void ShenandoahBarrierSetAssembler::resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp) { - assert(ShenandoahLoadRefBarrier || ShenandoahCASBarrier, "Should be enabled"); - Label is_null; - __ cbz(dst, is_null); - resolve_forward_pointer_not_null(masm, dst, tmp); - __ bind(is_null); -} - -// IMPORTANT: This must preserve all registers, even rscratch1 and rscratch2, except those explicitly -// passed in. -void ShenandoahBarrierSetAssembler::resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp) { - assert(ShenandoahLoadRefBarrier || ShenandoahCASBarrier, "Should be enabled"); - // The below loads the mark word, checks if the lowest two bits are - // set, and if so, clear the lowest two bits and copy the result - // to dst. Otherwise it leaves dst alone. - // Implementing this is surprisingly awkward. I do it here by: - // - Inverting the mark word - // - Test lowest two bits == 0 - // - If so, set the lowest two bits - // - Invert the result back, and copy to dst - - bool borrow_reg = (tmp == noreg); - if (borrow_reg) { - // No free registers available. Make one useful. - tmp = rscratch1; - if (tmp == dst) { - tmp = rscratch2; - } - __ push(RegSet::of(tmp), sp); - } - - assert_different_registers(tmp, dst); - - Label done; - __ ldr(tmp, Address(dst, oopDesc::mark_offset_in_bytes())); - __ eon(tmp, tmp, zr); - __ ands(zr, tmp, markWord::lock_mask_in_place); - __ br(Assembler::NE, done); - __ orr(tmp, tmp, markWord::marked_value); - __ eon(dst, tmp, zr); - __ bind(done); - - if (borrow_reg) { - __ pop(RegSet::of(tmp), sp); - } -} - void ShenandoahBarrierSetAssembler::load_reference_barrier(MacroAssembler* masm, Register dst, Address load_addr, DecoratorSet decorators) { assert(ShenandoahLoadRefBarrier, "Should be enabled"); assert(dst != rscratch2, "need rscratch2"); @@ -468,166 +420,6 @@ void ShenandoahBarrierSetAssembler::try_peek_weak_handle_in_nmethod(MacroAssembl __ bind(done); } -// Special Shenandoah CAS implementation that handles false negatives due -// to concurrent evacuation. The service is more complex than a -// traditional CAS operation because the CAS operation is intended to -// succeed if the reference at addr exactly matches expected or if the -// reference at addr holds a pointer to a from-space object that has -// been relocated to the location named by expected. There are two -// races that must be addressed: -// a) A parallel thread may mutate the contents of addr so that it points -// to a different object. In this case, the CAS operation should fail. -// b) A parallel thread may heal the contents of addr, replacing a -// from-space pointer held in addr with the to-space pointer -// representing the new location of the object. -// Upon entry to cmpxchg_oop, it is assured that new_val equals null -// or it refers to an object that is not being evacuated out of -// from-space, or it refers to the to-space version of an object that -// is being evacuated out of from-space. -// -// By default the value held in the result register following execution -// of the generated code sequence is 0 to indicate failure of CAS, -// non-zero to indicate success. If is_cae, the result is the value most -// recently fetched from addr rather than a boolean success indicator. -// -// Clobbers rscratch1, rscratch2 -void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm, - Register addr, - Register expected, - Register new_val, - bool acquire, bool release, - bool is_cae, - Register result) { - Register tmp1 = rscratch1; - Register tmp2 = rscratch2; - bool is_narrow = UseCompressedOops; - Assembler::operand_size size = is_narrow ? Assembler::word : Assembler::xword; - - assert_different_registers(addr, expected, tmp1, tmp2); - assert_different_registers(addr, new_val, tmp1, tmp2); - - Label step4, done; - - // There are two ways to reach this label. Initial entry into the - // cmpxchg_oop code expansion starts at step1 (which is equivalent - // to label step4). Additionally, in the rare case that four steps - // are required to perform the requested operation, the fourth step - // is the same as the first. On a second pass through step 1, - // control may flow through step 2 on its way to failure. It will - // not flow from step 2 to step 3 since we are assured that the - // memory at addr no longer holds a from-space pointer. - // - // The comments that immediately follow the step4 label apply only - // to the case in which control reaches this label by branch from - // step 3. - - __ bind (step4); - - // Step 4. CAS has failed because the value most recently fetched - // from addr is no longer the from-space pointer held in tmp2. If a - // different thread replaced the in-memory value with its equivalent - // to-space pointer, then CAS may still be able to succeed. The - // value held in the expected register has not changed. - // - // It is extremely rare we reach this point. For this reason, the - // implementation opts for smaller rather than potentially faster - // code. Ultimately, smaller code for this rare case most likely - // delivers higher overall throughput by enabling improved icache - // performance. - - // Step 1. Fast-path. - // - // Try to CAS with given arguments. If successful, then we are done. - // - // No label required for step 1. - - __ cmpxchg(addr, expected, new_val, size, acquire, release, false, tmp2); - // EQ flag set iff success. tmp2 holds value fetched. - - // If expected equals null but tmp2 does not equal null, the - // following branches to done to report failure of CAS. If both - // expected and tmp2 equal null, the following branches to done to - // report success of CAS. There's no need for a special test of - // expected equal to null. - - __ br(Assembler::EQ, done); - // if CAS failed, fall through to step 2 - - // Step 2. CAS has failed because the value held at addr does not - // match expected. This may be a false negative because the value fetched - // from addr (now held in tmp2) may be a from-space pointer to the - // original copy of same object referenced by to-space pointer expected. - // - // To resolve this, it suffices to find the forward pointer associated - // with fetched value. If this matches expected, retry CAS with new - // parameters. If this mismatches, then we have a legitimate - // failure, and we're done. - // - // No need for step2 label. - - // overwrite tmp1 with from-space pointer fetched from memory - __ mov(tmp1, tmp2); - - if (is_narrow) { - // Decode tmp1 in order to resolve its forward pointer - __ decode_heap_oop(tmp1, tmp1); - } - resolve_forward_pointer(masm, tmp1); - // Encode tmp1 to compare against expected. - __ encode_heap_oop(tmp1, tmp1); - - // Does forwarded value of fetched from-space pointer match original - // value of expected? If tmp1 holds null, this comparison will fail - // because we know from step1 that expected is not null. There is - // no need for a separate test for tmp1 (the value originally held - // in memory) equal to null. - __ cmp(tmp1, expected); - - // If not, then the failure was legitimate and we're done. - // Branching to done with NE condition denotes failure. - __ br(Assembler::NE, done); - - // Fall through to step 3. No need for step3 label. - - // Step 3. We've confirmed that the value originally held in memory - // (now held in tmp2) pointed to from-space version of original - // expected value. Try the CAS again with the from-space expected - // value. If it now succeeds, we're good. - // - // Note: tmp2 holds encoded from-space pointer that matches to-space - // object residing at expected. tmp2 is the new "expected". - - // Note that macro implementation of __cmpxchg cannot use same register - // tmp2 for result and expected since it overwrites result before it - // compares result with expected. - __ cmpxchg(addr, tmp2, new_val, size, acquire, release, false, noreg); - // EQ flag set iff success. tmp2 holds value fetched, tmp1 (rscratch1) clobbered. - - // If fetched value did not equal the new expected, this could - // still be a false negative because some other thread may have - // newly overwritten the memory value with its to-space equivalent. - __ br(Assembler::NE, step4); - - if (is_cae) { - // We're falling through to done to indicate success. Success - // with is_cae is denoted by returning the value of expected as - // result. - __ mov(tmp2, expected); - } - - __ bind(done); - // At entry to done, the Z (EQ) flag is on iff if the CAS - // operation was successful. Additionally, if is_cae, tmp2 holds - // the value most recently fetched from addr. In this case, success - // is denoted by tmp2 matching expected. - - if (is_cae) { - __ mov(result, tmp2); - } else { - __ cset(result, Assembler::EQ); - } -} - void ShenandoahBarrierSetAssembler::gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators, Register start, Register count, Register scratch) { assert(ShenandoahCardBarrier, "Should have been checked by caller"); @@ -868,7 +660,7 @@ void ShenandoahBarrierSetAssembler::load_c2(const MachNode* node, MacroAssembler void ShenandoahBarrierSetAssembler::store_c2(const MachNode* node, MacroAssembler* masm, Address dst, bool dst_narrow, Register src, bool src_narrow, Register tmp1, Register tmp2, Register tmp3, bool is_volatile) { - ShenandoahBarrierStubC2::store_pre(masm, node, tmp1, dst, tmp2, tmp3, dst_narrow); + ShenandoahBarrierStubC2::store_pre(masm, node, dst, tmp1, tmp2, tmp3, dst_narrow); // Do the actual store if (dst_narrow) { @@ -906,7 +698,7 @@ void ShenandoahBarrierSetAssembler::compare_and_set_c2(const MachNode* node, Mac Register oldval, Register newval, Register tmp1, Register tmp2, Register tmp3, bool exchange, bool narrow, bool weak, bool acquire) { Assembler::operand_size op_size = narrow ? Assembler::word : Assembler::xword; - ShenandoahBarrierStubC2::load_store_pre(masm, node, tmp1, addr, tmp2, tmp3, narrow); + ShenandoahBarrierStubC2::load_store_pre(masm, node, addr, tmp1, tmp2, tmp3, narrow); // CAS! __ cmpxchg(addr, oldval, newval, op_size, acquire, /* release */ true, weak, exchange ? res : noreg); @@ -924,7 +716,7 @@ void ShenandoahBarrierSetAssembler::get_and_set_c2(const MachNode* node, MacroAs Register newval, Register addr, Register tmp1, Register tmp2, Register tmp3, bool is_acquire) { bool is_narrow = node->bottom_type()->isa_narrowoop(); - ShenandoahBarrierStubC2::load_store_pre(masm, node, tmp1, addr, tmp2, tmp3, is_narrow); + ShenandoahBarrierStubC2::load_store_pre(masm, node, addr, tmp1, tmp2, tmp3, is_narrow); if (is_narrow) { if (is_acquire) { diff --git a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp index e4c7007eb17..bab4fb3b37a 100644 --- a/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.hpp @@ -53,8 +53,6 @@ private: void card_barrier(MacroAssembler* masm, Register obj); - void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg); - void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg); void load_reference_barrier(MacroAssembler* masm, Register dst, Address load_addr, DecoratorSet decorators); void gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators, @@ -76,8 +74,6 @@ public: Register obj, Register tmp, Label& slowpath); virtual void try_peek_weak_handle_in_nmethod(MacroAssembler* masm, Register weak_handle, Register obj, Register tmp, Label& slow_path); - void cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val, - bool acquire, bool release, bool is_cae, Register result); #ifdef COMPILER1 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub); diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp index ac5bae22384..1c052b67503 100644 --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp @@ -2147,7 +2147,7 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ Register offset = rscratch2; Label L_loop_search_receiver, L_loop_search_empty; - Label L_restart, L_found_recv, L_found_empty, L_polymorphic, L_count_update; + Label L_restart, L_found_recv, L_found_empty, L_count_update; // The code here recognizes three major cases: // A. Fastest: receiver found in the table @@ -2177,21 +2177,20 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ // if (receiver(i) == recv) goto found_recv(i); // } // - // // Fast: no receiver, but profile is full + // // Fast: no receiver, but profile is not full // for (i = 0; i < receiver_count(); i++) { // if (receiver(i) == null) goto found_null(i); // } - // goto polymorphic + // + // // Slow: profile is full, polymorphic case + // count++; + // return // // // Slow: try to install receiver // found_null(i): // CAS(&receiver(i), null, recv); // goto restart // - // polymorphic: - // count++; - // return - // // found_recv(i): // *receiver_count(i)++ // @@ -2208,7 +2207,7 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ sub(rscratch1, offset, end_receiver_offset); cbnz(rscratch1, L_loop_search_receiver); - // Fast: no receiver, but profile is full + // Fast: no receiver, but profile is not full mov(offset, base_receiver_offset); bind(L_loop_search_empty); ldr(rscratch1, Address(mdp, offset)); @@ -2216,9 +2215,13 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ add(offset, offset, receiver_step); sub(rscratch1, offset, end_receiver_offset); cbnz(rscratch1, L_loop_search_empty); - b(L_polymorphic); - // Slow: try to install receiver + // Slow: Receiver is not found and table is full. + // Increment polymorphic counter instead of receiver slot. + mov(offset, poly_count_offset); + b(L_count_update); + + // Slowest: try to install receiver bind(L_found_empty); // Atomically swing receiver slot: null -> recv. @@ -2237,17 +2240,11 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ // and just restart the search from the beginning. b(L_restart); - // Counter updates: - - // Increment polymorphic counter instead of receiver slot. - bind(L_polymorphic); - mov(offset, poly_count_offset); - b(L_count_update); - // Found a receiver, convert its slot offset to corresponding count offset. bind(L_found_recv); add(offset, offset, receiver_to_count_step); + // Finally, update the counter bind(L_count_update); increment(Address(mdp, offset), DataLayout::counter_increment); } @@ -2816,7 +2813,7 @@ void MacroAssembler::decrementw(Register reg, int value) { if (value < 0) { incrementw(reg, -value); return; } if (value == 0) { return; } - if (value < (1 << 12)) { subw(reg, reg, value); return; } + if (value < (1 << 24)) { subw(reg, reg, value); return; } /* else */ { guarantee(reg != rscratch2, "invalid dst for register decrement"); movw(rscratch2, (unsigned)value); @@ -2828,7 +2825,7 @@ void MacroAssembler::decrement(Register reg, int value) { if (value < 0) { increment(reg, -value); return; } if (value == 0) { return; } - if (value < (1 << 12)) { sub(reg, reg, value); return; } + if (value < (1 << 24)) { sub(reg, reg, value); return; } /* else */ { assert(reg != rscratch2, "invalid dst for register decrement"); mov(rscratch2, (uint64_t)value); @@ -2840,7 +2837,7 @@ void MacroAssembler::decrementw(Address dst, int value) { assert(!dst.uses(rscratch1), "invalid dst for address decrement"); if (dst.getMode() == Address::literal) { - assert(abs(value) < (1 << 12), "invalid value and address mode combination"); + assert(abs(value) < (1 << 24), "invalid value and address mode combination"); lea(rscratch2, dst); dst = Address(rscratch2); } @@ -2853,7 +2850,7 @@ void MacroAssembler::decrement(Address dst, int value) { assert(!dst.uses(rscratch1), "invalid address for decrement"); if (dst.getMode() == Address::literal) { - assert(abs(value) < (1 << 12), "invalid value and address mode combination"); + assert(abs(value) < (1 << 24), "invalid value and address mode combination"); lea(rscratch2, dst); dst = Address(rscratch2); } @@ -2866,7 +2863,7 @@ void MacroAssembler::incrementw(Register reg, int value) { if (value < 0) { decrementw(reg, -value); return; } if (value == 0) { return; } - if (value < (1 << 12)) { addw(reg, reg, value); return; } + if (value < (1 << 24)) { addw(reg, reg, value); return; } /* else */ { assert(reg != rscratch2, "invalid dst for register increment"); movw(rscratch2, (unsigned)value); @@ -2878,7 +2875,7 @@ void MacroAssembler::increment(Register reg, int value) { if (value < 0) { decrement(reg, -value); return; } if (value == 0) { return; } - if (value < (1 << 12)) { add(reg, reg, value); return; } + if (value < (1 << 24)) { add(reg, reg, value); return; } /* else */ { assert(reg != rscratch2, "invalid dst for register increment"); movw(rscratch2, (unsigned)value); @@ -2886,30 +2883,34 @@ void MacroAssembler::increment(Register reg, int value) } } -void MacroAssembler::incrementw(Address dst, int value) +void MacroAssembler::incrementw(Address dst, int value, Register result) { - assert(!dst.uses(rscratch1), "invalid dst for address increment"); + assert(!dst.uses(result), "invalid dst for address increment"); + assert(result->is_valid(), "must be"); + assert_different_registers(result, rscratch2); if (dst.getMode() == Address::literal) { - assert(abs(value) < (1 << 12), "invalid value and address mode combination"); + assert(abs(value) < (1 << 24), "invalid value and address mode combination"); lea(rscratch2, dst); dst = Address(rscratch2); } - ldrw(rscratch1, dst); - incrementw(rscratch1, value); - strw(rscratch1, dst); + ldrw(result, dst); + incrementw(result, value); + strw(result, dst); } -void MacroAssembler::increment(Address dst, int value) +void MacroAssembler::increment(Address dst, int value, Register result) { - assert(!dst.uses(rscratch1), "invalid dst for address increment"); + assert(!dst.uses(result), "invalid dst for address increment"); + assert(result->is_valid(), "must be"); + assert_different_registers(result, rscratch2); if (dst.getMode() == Address::literal) { - assert(abs(value) < (1 << 12), "invalid value and address mode combination"); + assert(abs(value) < (1 << 24), "invalid value and address mode combination"); lea(rscratch2, dst); dst = Address(rscratch2); } - ldr(rscratch1, dst); - increment(rscratch1, value); - str(rscratch1, dst); + ldr(result, dst); + increment(result, value); + str(result, dst); } // Push lots of registers in the bit set supplied. Don't push sp. diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp index b1050b45731..a15b0630610 100644 --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp @@ -482,6 +482,25 @@ class MacroAssembler: public Assembler { WRAP(smaddl) WRAP(smsubl) WRAP(umaddl) WRAP(umsubl) #undef WRAP + using Assembler::andw, Assembler::andr; + void andw(Register Rd, Register Rn, uint64_t imm) { + if (operand_valid_for_logical_immediate(/*is32*/true, imm)) { + Assembler::andw(Rd, Rn, imm); + } else { + assert(Rd != Rn, "must be"); + movw(Rd, imm); + andw(Rd, Rn, Rd); + } + } + void andr(Register Rd, Register Rn, uint64_t imm) { + if (operand_valid_for_logical_immediate(/*is32*/false, imm)) { + Assembler::andr(Rd, Rn, imm); + } else { + assert(Rd != Rn, "must be"); + mov(Rd, imm); + andr(Rd, Rn, Rd); + } + } // macro assembly operations needed for aarch64 @@ -743,7 +762,7 @@ public: // n.b. increment/decrement calls with an Address destination will // need to use a scratch register to load the value to be // incremented. increment/decrement calls which add or subtract a - // constant value greater than 2^12 will need to use a 2nd scratch + // constant value greater than 2^24 will need to use a 2nd scratch // register to hold the constant. so, a register increment/decrement // may trash rscratch2 and an address increment/decrement trash // rscratch and rscratch2 @@ -754,11 +773,11 @@ public: void decrement(Register reg, int value = 1); void decrement(Address dst, int value = 1); - void incrementw(Address dst, int value = 1); + void incrementw(Address dst, int value = 1, Register result = rscratch1); void incrementw(Register reg, int value = 1); void increment(Register reg, int value = 1); - void increment(Address dst, int value = 1); + void increment(Address dst, int value = 1, Register result = rscratch1); // Alignment diff --git a/src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.cpp b/src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.cpp index 9c079107e08..823ff175379 100644 --- a/src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.cpp +++ b/src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.cpp @@ -31,7 +31,6 @@ #include "gc/shenandoah/mode/shenandoahMode.hpp" #include "gc/shenandoah/shenandoahBarrierSet.hpp" #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp" -#include "gc/shenandoah/shenandoahForwarding.hpp" #include "gc/shenandoah/shenandoahHeap.hpp" #include "gc/shenandoah/shenandoahHeap.inline.hpp" #include "gc/shenandoah/shenandoahHeapRegion.hpp" @@ -335,43 +334,6 @@ void ShenandoahBarrierSetAssembler::satb_barrier_impl(MacroAssembler *masm, Deco __ bind(skip_barrier); } -void ShenandoahBarrierSetAssembler::resolve_forward_pointer_not_null(MacroAssembler *masm, Register dst, Register tmp) { - __ block_comment("resolve_forward_pointer_not_null (shenandoahgc) {"); - - Register tmp1 = tmp, - R0_tmp2 = R0; - assert_different_registers(dst, tmp1, R0_tmp2, noreg); - - // If the object has been evacuated, the mark word layout is as follows: - // | forwarding pointer (62-bit) | '11' (2-bit) | - - // The invariant that stack/thread pointers have the lowest two bits cleared permits retrieving - // the forwarding pointer solely by inversing the lowest two bits. - // This invariant follows inevitably from hotspot's minimal alignment. - assert(markWord::marked_value <= (unsigned long) MinObjAlignmentInBytes, - "marked value must not be higher than hotspot's minimal alignment"); - - Label done; - - // Load the object's mark word. - __ ld(tmp1, oopDesc::mark_offset_in_bytes(), dst); - - // Load the bit mask for the lock bits. - __ li(R0_tmp2, markWord::lock_mask_in_place); - - // Check whether all bits matching the bit mask are set. - // If that is the case, the object has been evacuated and the most significant bits form the forward pointer. - __ andc_(R0_tmp2, R0_tmp2, tmp1); - - assert(markWord::lock_mask_in_place == markWord::marked_value, - "marked value must equal the value obtained when all lock bits are being set"); - __ xori(tmp1, tmp1, markWord::lock_mask_in_place); - __ isel(dst, CR0, Assembler::equal, false, tmp1); - - __ bind(done); - __ block_comment("} resolve_forward_pointer_not_null (shenandoahgc)"); -} - // base: Base register of the reference's address. // ind_or_offs: Index or offset of the reference's address (load mode). // dst: Reference's address. In case the object has been evacuated, this is the to-space version @@ -693,125 +655,6 @@ void ShenandoahBarrierSetAssembler::try_peek_weak_handle_in_nmethod(MacroAssembl __ block_comment("} try_peek_weak_handle_in_nmethod (shenandoahgc)"); } -// Special shenandoah CAS implementation that handles false negatives due -// to concurrent evacuation. That is, the CAS operation is intended to succeed in -// the following scenarios (success criteria): -// s1) The reference pointer ('base_addr') equals the expected ('expected') pointer. -// s2) The reference pointer refers to the from-space version of an already-evacuated -// object, whereas the expected pointer refers to the to-space version of the same object. -// Situations in which the reference pointer refers to the to-space version of an object -// and the expected pointer refers to the from-space version of the same object can not occur due to -// shenandoah's strong to-space invariant. This also implies that the reference stored in 'new_val' -// can not refer to the from-space version of an already-evacuated object. -// -// To guarantee correct behavior in concurrent environments, two races must be addressed: -// r1) A concurrent thread may heal the reference pointer (i.e., it is no longer referring to the -// from-space version but to the to-space version of the object in question). -// In this case, the CAS operation should succeed. -// r2) A concurrent thread may mutate the reference (i.e., the reference pointer refers to an entirely different object). -// In this case, the CAS operation should fail. -// -// By default, the value held in the 'result' register is zero to indicate failure of CAS, -// non-zero to indicate success. If 'is_cae' is set, the result is the most recently fetched -// value from 'base_addr' rather than a boolean success indicator. -void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler *masm, Register base_addr, - Register expected, Register new_val, Register tmp1, Register tmp2, - bool is_cae, Register result) { - __ block_comment("cmpxchg_oop (shenandoahgc) {"); - - assert_different_registers(base_addr, new_val, tmp1, tmp2, result, R0); - assert_different_registers(base_addr, expected, tmp1, tmp2, result, R0); - - // Potential clash of 'success_flag' and 'tmp' is being accounted for. - Register success_flag = is_cae ? noreg : result, - current_value = is_cae ? result : tmp1, - tmp = is_cae ? tmp1 : result, - initial_value = tmp2; - - Label done, step_four; - - __ bind(step_four); - - /* ==== Step 1 ("Standard" CAS) ==== */ - // Fast path: The values stored in 'expected' and 'base_addr' are equal. - // Given that 'expected' must refer to the to-space object of an evacuated object (strong to-space invariant), - // no special processing is required. - if (UseCompressedOops) { - __ cmpxchgw(CR0, current_value, expected, new_val, base_addr, MacroAssembler::MemBarNone, - false, success_flag, nullptr, true); - } else { - __ cmpxchgd(CR0, current_value, expected, new_val, base_addr, MacroAssembler::MemBarNone, - false, success_flag, nullptr, true); - } - - // Skip the rest of the barrier if the CAS operation succeeds immediately. - // If it does not, the value stored at the address is either the from-space pointer of the - // referenced object (success criteria s2)) or simply another object. - __ beq(CR0, done); - - /* ==== Step 2 (Null check) ==== */ - // The success criteria s2) cannot be matched with a null pointer - // (null pointers cannot be subject to concurrent evacuation). The failure of the CAS operation is thus legitimate. - __ cmpdi(CR0, current_value, 0); - __ beq(CR0, done); - - /* ==== Step 3 (reference pointer refers to from-space version; success criteria s2)) ==== */ - // To check whether the reference pointer refers to the from-space version, the forward - // pointer of the object referred to by the reference is resolved and compared against the expected pointer. - // If this check succeed, another CAS operation is issued with the from-space pointer being the expected pointer. - // - // Save the potential from-space pointer. - __ mr(initial_value, current_value); - - // Resolve forward pointer. - if (UseCompressedOops) { __ decode_heap_oop_not_null(current_value); } - resolve_forward_pointer_not_null(masm, current_value, tmp); - if (UseCompressedOops) { __ encode_heap_oop_not_null(current_value); } - - if (!is_cae) { - // 'success_flag' was overwritten by call to 'resovle_forward_pointer_not_null'. - // Load zero into register for the potential failure case. - __ li(success_flag, 0); - } - __ cmpd(CR0, current_value, expected); - __ bne(CR0, done); - - // Discard fetched value as it might be a reference to the from-space version of an object. - if (UseCompressedOops) { - __ cmpxchgw(CR0, R0, initial_value, new_val, base_addr, MacroAssembler::MemBarNone, - false, success_flag); - } else { - __ cmpxchgd(CR0, R0, initial_value, new_val, base_addr, MacroAssembler::MemBarNone, - false, success_flag); - } - - /* ==== Step 4 (Retry CAS with to-space pointer (success criteria s2) under race r1)) ==== */ - // The reference pointer could have been healed whilst the previous CAS operation was being performed. - // Another CAS operation must thus be issued with the to-space pointer being the expected pointer. - // If that CAS operation fails as well, race r2) must have occurred, indicating that - // the operation failure is legitimate. - // - // To keep the code's size small and thus improving cache (icache) performance, this highly - // unlikely case should be handled by the smallest possible code. Instead of emitting a third, - // explicit CAS operation, the code jumps back and reuses the first CAS operation (step 1) - // (passed arguments are identical). - // - // A failure of the CAS operation in step 1 would imply that the overall CAS operation is supposed - // to fail. Jumping back to step 1 requires, however, that step 2 and step 3 are re-executed as well. - // It is thus important to ensure that a re-execution of those steps does not put program correctness - // at risk: - // - Step 2: Either terminates in failure (desired result) or falls through to step 3. - // - Step 3: Terminates if the comparison between the forwarded, fetched pointer and the expected value - // fails. Unless the reference has been updated in the meanwhile once again, this is - // guaranteed to be the case. - // In case of a concurrent update, the CAS would be retried again. This is legitimate - // in terms of program correctness (even though it is not desired). - __ bne(CR0, step_four); - - __ bind(done); - __ block_comment("} cmpxchg_oop (shenandoahgc)"); -} - void ShenandoahBarrierSetAssembler::gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators, Register addr, Register count, Register preserve) { assert(ShenandoahCardBarrier, "Should have been checked by caller"); @@ -1115,7 +958,7 @@ void ShenandoahBarrierSetAssembler::load_c2(const MachNode* node, MacroAssembler void ShenandoahBarrierSetAssembler::store_c2(const MachNode* node, MacroAssembler* masm, Register dst, int disp, bool dst_narrow, Register src, bool src_narrow, Register tmp1, Register tmp2, Register tmp3) { - ShenandoahBarrierStubC2::store_pre(masm, node, tmp1, Address(dst, disp), tmp2, tmp3, dst_narrow); + ShenandoahBarrierStubC2::store_pre(masm, node, Address(dst, disp), tmp1, tmp2, tmp3, dst_narrow); if (dst_narrow && !src_narrow) { // Need to encode into tmp, because we cannot clobber src. @@ -1134,39 +977,41 @@ void ShenandoahBarrierSetAssembler::store_c2(const MachNode* node, MacroAssemble ShenandoahBarrierStubC2::store_post(masm, node, Address(dst, disp), tmp1, tmp2); } -void ShenandoahBarrierSetAssembler::compare_and_set_c2(const MachNode* node, MacroAssembler* masm, Register res, Register addr, Register oldval, - Register newval, Register tmp1, Register tmp2, Register tmp3, bool exchange, bool narrow, bool weak, bool acquire) { +void ShenandoahBarrierSetAssembler::compare_and_set_c2(const MachNode* node, MacroAssembler* masm, Register res, Register addr, + Register oldval, Register newval, Register tmp1, Register tmp2, bool exchange, bool narrow, bool weak, bool acquire) { - ShenandoahBarrierStubC2::load_store_pre(masm, node, tmp1, addr, tmp2, tmp3, narrow); + ShenandoahBarrierStubC2::load_store_pre(masm, node, addr, res, tmp1, tmp2, narrow); - Register dest_current = exchange ? res : R0; - Register int_flag = exchange ? noreg : res; - int semantics = MacroAssembler::MemBarNone; + Register dest_current = exchange ? res : R0; + Label no_update; + int semantics = MacroAssembler::MemBarNone; if (acquire) { semantics = support_IRIW_for_not_multiple_copy_atomic_cpu ? MacroAssembler::MemBarAcq : MacroAssembler::MemBarFenceAfter; } + if (!exchange) { __ li(res, 0); } if (narrow) { - // CmpxchgX sets CR0 to cmpX(src1, src2) and Rres to 'true'/'false'. __ cmpxchgw(CR0, dest_current, oldval, newval, addr, semantics, MacroAssembler::cmpxchgx_hint_atomic_update(), - int_flag, nullptr, true, weak); + noreg, &no_update, true, weak); } else { - // CmpxchgX sets CR0 to cmpX(src1, src2) and Rres to 'true'/'false'. __ cmpxchgd(CR0, dest_current, oldval, newval, addr, semantics, MacroAssembler::cmpxchgx_hint_atomic_update(), - int_flag, nullptr, true, weak); + noreg, &no_update, true, weak); } + if (!exchange) { __ li(res, 1); } ShenandoahBarrierStubC2::load_store_post(masm, node, Address(addr, 0), tmp1, tmp2); + + __ bind(no_update); } -void ShenandoahBarrierSetAssembler::get_and_set_c2(const MachNode* node, MacroAssembler* masm, Register preval, Register newval, Register addr, Register tmp1, Register tmp2, Register tmp3) { +void ShenandoahBarrierSetAssembler::get_and_set_c2(const MachNode* node, MacroAssembler* masm, Register preval, Register newval, Register addr, Register tmp1, Register tmp2) { bool is_narrow = node->bottom_type()->isa_narrowoop(); - ShenandoahBarrierStubC2::load_store_pre(masm, node, tmp1, addr, tmp2, tmp3, is_narrow); + ShenandoahBarrierStubC2::load_store_pre(masm, node, addr, preval, tmp1, tmp2, is_narrow); if (is_narrow) { __ getandsetw(preval, newval, addr, MacroAssembler::cmpxchgx_hint_atomic_update()); diff --git a/src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.hpp b/src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.hpp index eda3aafdb2d..bd1043c2d76 100644 --- a/src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.hpp +++ b/src/hotspot/cpu/ppc/gc/shenandoah/shenandoahBarrierSetAssembler_ppc.hpp @@ -69,8 +69,6 @@ private: MacroAssembler::PreservationLevel preservation_level); /* ==== Helper methods for barrier implementations ==== */ - void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp); - void gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators, Register addr, Register count, Register preserve); @@ -103,11 +101,6 @@ public: Register tmp1, Register tmp2, MacroAssembler::PreservationLevel preservation_level); - /* ==== Helper methods used by C1 and C2 ==== */ - void cmpxchg_oop(MacroAssembler* masm, Register base_addr, Register expected, Register new_val, - Register tmp1, Register tmp2, - bool is_cae, Register result); - /* ==== Access api ==== */ virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Register src, Register dst, Register count, @@ -140,10 +133,10 @@ public: Register dst, int disp, bool dst_narrow, Register src, bool src_narrow, Register tmp1, Register tmp2, Register tmp3); void compare_and_set_c2(const MachNode* node, MacroAssembler* masm, Register res, Register addr, Register oldval, - Register newval, Register tmp1, Register tmp2, Register tmp3, bool exchange, bool narrow, bool weak, bool acquire); + Register newval, Register tmp1, Register tmp2, bool exchange, bool narrow, bool weak, bool acquire); void get_and_set_c2(const MachNode* node, MacroAssembler* masm, - Register preval, Register newval, Register addr, Register tmp1, Register tmp2, Register tmp3); + Register preval, Register newval, Register addr, Register tmp1, Register tmp2); #endif // COMPILER2 }; diff --git a/src/hotspot/cpu/ppc/gc/shenandoah/shenandoah_ppc.ad b/src/hotspot/cpu/ppc/gc/shenandoah/shenandoah_ppc.ad index a75d1a03e4b..f2e5d4f3a27 100644 --- a/src/hotspot/cpu/ppc/gc/shenandoah/shenandoah_ppc.ad +++ b/src/hotspot/cpu/ppc/gc/shenandoah/shenandoah_ppc.ad @@ -1,6 +1,6 @@ // // Copyright (c) 2018, 2021, Red Hat, Inc. All rights reserved. -// Copyright (c) 2012, 2021 SAP SE. All rights reserved. +// Copyright (c) 2012, 2026 SAP SE. All rights reserved. // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. // // This code is free software; you can redistribute it and/or modify it @@ -201,10 +201,12 @@ instruct encodePAndStoreN_shenandoah(memory dst, iRegPsrc src, iRegPdstNoScratch // ---------------------- LOAD-STORES ----------------------------------- // -instruct compareAndSwapN_regP_regN_regN_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegNsrc src1, iRegNsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ +// Strong CAS also handles WeakCompareAndSwap* on PPC, see JDK-8385633. +instruct compareAndSwapN_regP_regN_regN_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegNsrc src1, iRegNsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, flagsRegCR0 cr0) %{ match(Set res (CompareAndSwapN mem_ptr (Binary src1 src2))); + match(Set res (WeakCompareAndSwapN mem_ptr (Binary src1 src2))); predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && !need_acquire_load_store(n)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); // TEMP_DEF to avoid jump + effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, KILL cr0); // TEMP_DEF to avoid jump format %{ "CMPXCHGW $res, $mem_ptr, $src1, $src2; as bool" %} ins_encode %{ ShenandoahBarrierSet::assembler()->compare_and_set_c2(this, masm, @@ -214,7 +216,6 @@ instruct compareAndSwapN_regP_regN_regN_shenandoah(iRegIdst res, iRegPdst mem_pt $src2$$Register, $tmp1$$Register, $tmp2$$Register, - $tmp3$$Register, /* exchange */ false, /* is_narrow */ true, /* weak */ false, @@ -223,10 +224,11 @@ instruct compareAndSwapN_regP_regN_regN_shenandoah(iRegIdst res, iRegPdst mem_pt ins_pipe(pipe_class_default); %} -instruct compareAndSwapN_acq_regP_regN_regN_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegNsrc src1, iRegNsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ +instruct compareAndSwapN_acq_regP_regN_regN_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegNsrc src1, iRegNsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, flagsRegCR0 cr0) %{ match(Set res (CompareAndSwapN mem_ptr (Binary src1 src2))); + match(Set res (WeakCompareAndSwapN mem_ptr (Binary src1 src2))); predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && need_acquire_load_store(n)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); // TEMP_DEF to avoid jump + effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, KILL cr0); // TEMP_DEF to avoid jump format %{ "CMPXCHGW $res, $mem_ptr, $src1, $src2; as bool" %} ins_encode %{ ShenandoahBarrierSet::assembler()->compare_and_set_c2(this, masm, @@ -236,7 +238,6 @@ instruct compareAndSwapN_acq_regP_regN_regN_shenandoah(iRegIdst res, iRegPdst me $src2$$Register, $tmp1$$Register, $tmp2$$Register, - $tmp3$$Register, /* exchange */ false, /* is_narrow */ true, /* weak */ false, @@ -245,9 +246,10 @@ instruct compareAndSwapN_acq_regP_regN_regN_shenandoah(iRegIdst res, iRegPdst me ins_pipe(pipe_class_default); %} -instruct compareAndSwapP_regP_regP_regP_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegPsrc src1, iRegPsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ +instruct compareAndSwapP_regP_regP_regP_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegPsrc src1, iRegPsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, flagsRegCR0 cr0) %{ match(Set res (CompareAndSwapP mem_ptr (Binary src1 src2))); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); // TEMP_DEF to avoid jump + match(Set res (WeakCompareAndSwapP mem_ptr (Binary src1 src2))); + effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, KILL cr0); // TEMP_DEF to avoid jump predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && !need_acquire_load_store(n)); format %{ "CMPXCHGD $res, $mem_ptr, $src1, $src2; as bool; ptr" %} ins_encode %{ @@ -258,7 +260,6 @@ instruct compareAndSwapP_regP_regP_regP_shenandoah(iRegIdst res, iRegPdst mem_pt $src2$$Register, $tmp1$$Register, $tmp2$$Register, - $tmp3$$Register, /* exchange */ false, /* is_narrow */ false, /* weak */ false, @@ -267,9 +268,10 @@ instruct compareAndSwapP_regP_regP_regP_shenandoah(iRegIdst res, iRegPdst mem_pt ins_pipe(pipe_class_default); %} -instruct compareAndSwapP_acq_regP_regP_regP_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegPsrc src1, iRegPsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ +instruct compareAndSwapP_acq_regP_regP_regP_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegPsrc src1, iRegPsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, flagsRegCR0 cr0) %{ match(Set res (CompareAndSwapP mem_ptr (Binary src1 src2))); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); // TEMP_DEF to avoid jump + match(Set res (WeakCompareAndSwapP mem_ptr (Binary src1 src2))); + effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, KILL cr0); // TEMP_DEF to avoid jump predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && need_acquire_load_store(n)); format %{ "CMPXCHGD $res, $mem_ptr, $src1, $src2; as bool; ptr" %} ins_encode %{ @@ -280,7 +282,6 @@ instruct compareAndSwapP_acq_regP_regP_regP_shenandoah(iRegIdst res, iRegPdst me $src2$$Register, $tmp1$$Register, $tmp2$$Register, - $tmp3$$Register, /* exchange */ false, /* is_narrow */ false, /* weak */ false, @@ -289,98 +290,10 @@ instruct compareAndSwapP_acq_regP_regP_regP_shenandoah(iRegIdst res, iRegPdst me ins_pipe(pipe_class_default); %} -instruct weakCompareAndSwapN_regP_regN_regN_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegNsrc src1, iRegNsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ - match(Set res (WeakCompareAndSwapN mem_ptr (Binary src1 src2))); - predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && !need_acquire_load_store(n)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); // TEMP_DEF to avoid jump - format %{ "weak CMPXCHGW acq $res, $mem_ptr, $src1, $src2; as bool" %} - ins_encode %{ - ShenandoahBarrierSet::assembler()->compare_and_set_c2(this, masm, - $res$$Register, - $mem_ptr$$Register, - $src1$$Register, - $src2$$Register, - $tmp1$$Register, - $tmp2$$Register, - $tmp3$$Register, - /* exchange */ false, - /* is_narrow */ true, - /* weak */ true, - /* acquire */ false); - %} - ins_pipe(pipe_class_default); -%} - -instruct weakCompareAndSwapN_acq_regP_regN_regN_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegNsrc src1, iRegNsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ - match(Set res (WeakCompareAndSwapN mem_ptr (Binary src1 src2))); - predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && need_acquire_load_store(n)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); // TEMP_DEF to avoid jump - format %{ "weak CMPXCHGW acq $res, $mem_ptr, $src1, $src2; as bool" %} - ins_encode %{ - ShenandoahBarrierSet::assembler()->compare_and_set_c2(this, masm, - $res$$Register, - $mem_ptr$$Register, - $src1$$Register, - $src2$$Register, - $tmp1$$Register, - $tmp2$$Register, - $tmp3$$Register, - /* exchange */ false, - /* is_narrow */ true, - /* weak */ true, - /* acquire */ true); - %} - ins_pipe(pipe_class_default); -%} - -instruct weakCompareAndSwapP_regP_regP_regP_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegPsrc src1, iRegPsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ - match(Set res (WeakCompareAndSwapP mem_ptr (Binary src1 src2))); - predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && !need_acquire_load_store(n)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); // TEMP_DEF to avoid jump - format %{ "weak CMPXCHGD $res, $mem_ptr, $src1, $src2; as bool; ptr" %} - ins_encode %{ - ShenandoahBarrierSet::assembler()->compare_and_set_c2(this, masm, - $res$$Register, - $mem_ptr$$Register, - $src1$$Register, - $src2$$Register, - $tmp1$$Register, - $tmp2$$Register, - $tmp3$$Register, - /* exchange */ false, - /* is_narrow */ false, - /* weak */ true, - /* acquire */ false); - %} - ins_pipe(pipe_class_default); -%} - -instruct weakCompareAndSwapP_acq_regP_regP_regP_shenandoah(iRegIdst res, iRegPdst mem_ptr, iRegPsrc src1, iRegPsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ - match(Set res (WeakCompareAndSwapP mem_ptr (Binary src1 src2))); - predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && need_acquire_load_store(n)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); // TEMP_DEF to avoid jump - format %{ "weak CMPXCHGD $res, $mem_ptr, $src1, $src2; as bool; ptr" %} - ins_encode %{ - ShenandoahBarrierSet::assembler()->compare_and_set_c2(this, masm, - $res$$Register, - $mem_ptr$$Register, - $src1$$Register, - $src2$$Register, - $tmp1$$Register, - $tmp2$$Register, - $tmp3$$Register, - /* exchange */ false, - /* is_narrow */ false, - /* weak */ true, - /* acquire */ true); - %} - ins_pipe(pipe_class_default); -%} - -instruct compareAndExchangeN_regP_regN_regN_shenandoah(iRegNdst res, iRegPdst mem_ptr, iRegNsrc src1, iRegNsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ +instruct compareAndExchangeN_regP_regN_regN_shenandoah(iRegNdst res, iRegPdst mem_ptr, iRegNsrc src1, iRegNsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, flagsRegCR0 cr0) %{ match(Set res (CompareAndExchangeN mem_ptr (Binary src1 src2))); predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && !need_acquire_load_store(n)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); + effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, KILL cr0); format %{ "CMPXCHGW $res, $mem_ptr, $src1, $src2; as narrow oop" %} ins_encode %{ ShenandoahBarrierSet::assembler()->compare_and_set_c2(this, masm, @@ -390,7 +303,6 @@ instruct compareAndExchangeN_regP_regN_regN_shenandoah(iRegNdst res, iRegPdst me $src2$$Register, $tmp1$$Register, $tmp2$$Register, - $tmp3$$Register, /* exchange */ true, /* is_narrow */ true, /* weak */ false, @@ -399,10 +311,10 @@ instruct compareAndExchangeN_regP_regN_regN_shenandoah(iRegNdst res, iRegPdst me ins_pipe(pipe_class_default); %} -instruct compareAndExchangeN_acq_regP_regN_regN_shenandoah(iRegNdst res, iRegPdst mem_ptr, iRegNsrc src1, iRegNsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ +instruct compareAndExchangeN_acq_regP_regN_regN_shenandoah(iRegNdst res, iRegPdst mem_ptr, iRegNsrc src1, iRegNsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, flagsRegCR0 cr0) %{ match(Set res (CompareAndExchangeN mem_ptr (Binary src1 src2))); predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && need_acquire_load_store(n)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); + effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, KILL cr0); format %{ "CMPXCHGW $res, $mem_ptr, $src1, $src2; as narrow oop" %} ins_encode %{ ShenandoahBarrierSet::assembler()->compare_and_set_c2(this, masm, @@ -412,7 +324,6 @@ instruct compareAndExchangeN_acq_regP_regN_regN_shenandoah(iRegNdst res, iRegPds $src2$$Register, $tmp1$$Register, $tmp2$$Register, - $tmp3$$Register, /* exchange */ true, /* is_narrow */ true, /* weak */ false, @@ -421,10 +332,10 @@ instruct compareAndExchangeN_acq_regP_regN_regN_shenandoah(iRegNdst res, iRegPds ins_pipe(pipe_class_default); %} -instruct compareAndExchangeP_regP_regP_regP_shenandoah(iRegPdst res, iRegPdst mem_ptr, iRegPsrc src1, iRegPsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ +instruct compareAndExchangeP_regP_regP_regP_shenandoah(iRegPdst res, iRegPdst mem_ptr, iRegPsrc src1, iRegPsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, flagsRegCR0 cr0) %{ match(Set res (CompareAndExchangeP mem_ptr (Binary src1 src2))); predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && !need_acquire_load_store(n)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); + effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, KILL cr0); format %{ "CMPXCHGD $res, $mem_ptr, $src1, $src2; as ptr; ptr" %} ins_encode %{ ShenandoahBarrierSet::assembler()->compare_and_set_c2(this, masm, @@ -434,7 +345,6 @@ instruct compareAndExchangeP_regP_regP_regP_shenandoah(iRegPdst res, iRegPdst me $src2$$Register, $tmp1$$Register, $tmp2$$Register, - $tmp3$$Register, /* exchange */ true, /* is_narrow */ false, /* weak */ false, @@ -443,10 +353,10 @@ instruct compareAndExchangeP_regP_regP_regP_shenandoah(iRegPdst res, iRegPdst me ins_pipe(pipe_class_default); %} -instruct compareAndExchangeP_acq_regP_regP_regP_shenandoah(iRegPdst res, iRegPdst mem_ptr, iRegPsrc src1, iRegPsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ +instruct compareAndExchangeP_acq_regP_regP_regP_shenandoah(iRegPdst res, iRegPdst mem_ptr, iRegPsrc src1, iRegPsrc src2, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, flagsRegCR0 cr0) %{ match(Set res (CompareAndExchangeP mem_ptr (Binary src1 src2))); predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0) && need_acquire_load_store(n)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); + effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, KILL cr0); format %{ "CMPXCHGD $res, $mem_ptr, $src1, $src2; as ptr; ptr" %} ins_encode %{ ShenandoahBarrierSet::assembler()->compare_and_set_c2(this, masm, @@ -456,7 +366,6 @@ instruct compareAndExchangeP_acq_regP_regP_regP_shenandoah(iRegPdst res, iRegPds $src2$$Register, $tmp1$$Register, $tmp2$$Register, - $tmp3$$Register, /* exchange */ true, /* is_narrow */ false, /* weak */ false, @@ -465,10 +374,10 @@ instruct compareAndExchangeP_acq_regP_regP_regP_shenandoah(iRegPdst res, iRegPds ins_pipe(pipe_class_default); %} -instruct getAndSetP_shenandoah(iRegPdst res, iRegPdst mem_ptr, iRegPsrc src, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ +instruct getAndSetP_shenandoah(iRegPdst res, iRegPdst mem_ptr, iRegPsrc src, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, flagsRegCR0 cr0) %{ match(Set res (GetAndSetP mem_ptr src)); predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); + effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, KILL cr0); format %{ "GetAndSetP $res, $mem_ptr, $src" %} ins_encode %{ ShenandoahBarrierSet::assembler()->get_and_set_c2(this, masm, @@ -476,16 +385,15 @@ instruct getAndSetP_shenandoah(iRegPdst res, iRegPdst mem_ptr, iRegPsrc src, iRe $src$$Register, $mem_ptr$$Register, $tmp1$$Register, - $tmp2$$Register, - $tmp3$$Register); + $tmp2$$Register); %} ins_pipe(pipe_class_default); %} -instruct getAndSetN_shenandoah(iRegNdst res, iRegPdst mem_ptr, iRegNsrc src, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, iRegPdstNoScratch tmp3, flagsRegCR0 cr0) %{ +instruct getAndSetN_shenandoah(iRegNdst res, iRegPdst mem_ptr, iRegNsrc src, iRegPdstNoScratch tmp1, iRegPdstNoScratch tmp2, flagsRegCR0 cr0) %{ match(Set res (GetAndSetN mem_ptr src)); predicate(UseShenandoahGC && (n->as_LoadStore()->barrier_data() != 0)); - effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr0); + effect(TEMP_DEF res, TEMP tmp1, TEMP tmp2, KILL cr0); format %{ "GetAndSetN $res, $mem_ptr, $src" %} ins_encode %{ ShenandoahBarrierSet::assembler()->get_and_set_c2(this, masm, @@ -493,8 +401,7 @@ instruct getAndSetN_shenandoah(iRegNdst res, iRegPdst mem_ptr, iRegNsrc src, iRe $src$$Register, $mem_ptr$$Register, $tmp1$$Register, - $tmp2$$Register, - $tmp3$$Register); + $tmp2$$Register); %} ins_pipe(pipe_class_default); %} diff --git a/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp b/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp index 0d6c272decb..b5bfcb0fced 100644 --- a/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp +++ b/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp @@ -4411,21 +4411,20 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ // if (receiver(i) == recv) goto found_recv(i); // } // - // // Fast: no receiver, but profile is full + // // Fast: no receiver, but profile is not full // for (i = 0; i < receiver_count(); i++) { // if (receiver(i) == null) goto found_null(i); // } - // goto polymorphic + // + // // Slow: profile is full, polymorphic case + // count++; + // return // // // Slow: try to install receiver // found_null(i): // CAS(&receiver(i), null, recv); // goto restart // - // polymorphic: - // count++; - // return - // // found_recv(i): // *receiver_count(i)++ // @@ -4466,11 +4465,12 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ addi(offset, offset, receiver_step); bdnz(L_loop_search_empty); - // Polymorphic: Increment polymorphic counter instead of receiver slot. + // Slow: Receiver is not found and table is full. + // Increment polymorphic counter instead of receiver slot. li(offset, poly_count_offset); b(L_count_update); - // Slow: try to install receiver + // Slowest: try to install receiver bind(L_found_empty); // Atomically swing receiver slot: null -> recv. @@ -4491,7 +4491,7 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ bind(L_found_recv); addi(offset, offset, receiver_to_count_step); - // Counter update + // Finally, update the counter bind(L_count_update); increment_mem64(mdp, offset, DataLayout::counter_increment, /* temp */ (count != noreg) ? count : recv); } diff --git a/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp b/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp index ee8ff1b308f..d30592d68f1 100644 --- a/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp +++ b/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.cpp @@ -28,7 +28,6 @@ #include "gc/shenandoah/mode/shenandoahMode.hpp" #include "gc/shenandoah/shenandoahBarrierSet.hpp" #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp" -#include "gc/shenandoah/shenandoahForwarding.hpp" #include "gc/shenandoah/shenandoahHeap.inline.hpp" #include "gc/shenandoah/shenandoahHeapRegion.hpp" #include "gc/shenandoah/shenandoahRuntime.hpp" @@ -174,53 +173,6 @@ void ShenandoahBarrierSetAssembler::satb_barrier(MacroAssembler* masm, __ bind(done); } -void ShenandoahBarrierSetAssembler::resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp) { - assert(ShenandoahLoadRefBarrier || ShenandoahCASBarrier, "Should be enabled"); - - Label is_null; - __ beqz(dst, is_null); - resolve_forward_pointer_not_null(masm, dst, tmp); - __ bind(is_null); -} - -// IMPORTANT: This must preserve all registers, even t0 and t1, except those explicitly -// passed in. -void ShenandoahBarrierSetAssembler::resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp) { - assert(ShenandoahLoadRefBarrier || ShenandoahCASBarrier, "Should be enabled"); - // The below loads the mark word, checks if the lowest two bits are - // set, and if so, clear the lowest two bits and copy the result - // to dst. Otherwise it leaves dst alone. - // Implementing this is surprisingly awkward. I do it here by: - // - Inverting the mark word - // - Test lowest two bits == 0 - // - If so, set the lowest two bits - // - Invert the result back, and copy to dst - RegSet saved_regs = RegSet::of(t2); - bool borrow_reg = (tmp == noreg); - if (borrow_reg) { - // No free registers available. Make one useful. - tmp = t0; - if (tmp == dst) { - tmp = t1; - } - saved_regs += RegSet::of(tmp); - } - - assert_different_registers(tmp, dst, t2); - __ push_reg(saved_regs, sp); - - Label done; - __ ld(tmp, Address(dst, oopDesc::mark_offset_in_bytes())); - __ xori(tmp, tmp, -1); // eon with 0 is equivalent to XOR with -1 - __ andi(t2, tmp, markWord::lock_mask_in_place); - __ bnez(t2, done); - __ ori(tmp, tmp, markWord::marked_value); - __ xori(dst, tmp, -1); // eon with 0 is equivalent to XOR with -1 - __ bind(done); - - __ pop_reg(saved_regs, sp); -} - void ShenandoahBarrierSetAssembler::load_reference_barrier(MacroAssembler* masm, Register dst, Address load_addr, @@ -481,90 +433,6 @@ void ShenandoahBarrierSetAssembler::try_peek_weak_handle_in_nmethod(MacroAssembl __ bind(done); } -// Special Shenandoah CAS implementation that handles false negatives due -// to concurrent evacuation. The service is more complex than a -// traditional CAS operation because the CAS operation is intended to -// succeed if the reference at addr exactly matches expected or if the -// reference at addr holds a pointer to a from-space object that has -// been relocated to the location named by expected. There are two -// races that must be addressed: -// a) A parallel thread may mutate the contents of addr so that it points -// to a different object. In this case, the CAS operation should fail. -// b) A parallel thread may heal the contents of addr, replacing a -// from-space pointer held in addr with the to-space pointer -// representing the new location of the object. -// Upon entry to cmpxchg_oop, it is assured that new_val equals null -// or it refers to an object that is not being evacuated out of -// from-space, or it refers to the to-space version of an object that -// is being evacuated out of from-space. -// -// By default the value held in the result register following execution -// of the generated code sequence is 0 to indicate failure of CAS, -// non-zero to indicate success. If is_cae, the result is the value most -// recently fetched from addr rather than a boolean success indicator. -// -// Clobbers t0, t1 -void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm, - Register addr, - Register expected, - Register new_val, - Assembler::Aqrl acquire, - Assembler::Aqrl release, - bool is_cae, - Register result) { - bool is_narrow = UseCompressedOops; - Assembler::operand_size size = is_narrow ? Assembler::uint32 : Assembler::int64; - - assert_different_registers(addr, expected, t0, t1); - assert_different_registers(addr, new_val, t0, t1); - - Label retry, success, fail, done; - - __ bind(retry); - - // Step1: Try to CAS. - __ cmpxchg(addr, expected, new_val, size, acquire, release, /* result */ t1); - - // If success, then we are done. - __ beq(expected, t1, success); - - // Step2: CAS failed, check the forwarded pointer. - __ mv(t0, t1); - - if (is_narrow) { - __ decode_heap_oop(t0, t0); - } - resolve_forward_pointer(masm, t0); - - __ encode_heap_oop(t0, t0); - - // Report failure when the forwarded oop was not expected. - __ bne(t0, expected, fail); - - // Step 3: CAS again using the forwarded oop. - __ cmpxchg(addr, t1, new_val, size, acquire, release, /* result */ t0); - - // Retry when failed. - __ bne(t0, t1, retry); - - __ bind(success); - if (is_cae) { - __ mv(result, expected); - } else { - __ mv(result, 1); - } - __ j(done); - - __ bind(fail); - if (is_cae) { - __ mv(result, t0); - } else { - __ mv(result, zr); - } - - __ bind(done); -} - void ShenandoahBarrierSetAssembler::gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators, Register start, Register count, Register tmp) { assert(ShenandoahCardBarrier, "Did you mean to enable ShenandoahCardBarrier?"); @@ -792,7 +660,7 @@ void ShenandoahBarrierSetAssembler::load_c2(const MachNode* node, MacroAssembler void ShenandoahBarrierSetAssembler::store_c2(const MachNode* node, MacroAssembler* masm, Address dst, bool dst_narrow, Register src, bool src_narrow, Register tmp1, Register tmp2, Register tmp3) { - ShenandoahBarrierStubC2::store_pre(masm, node, tmp1, dst, tmp2, tmp3, dst_narrow); + ShenandoahBarrierStubC2::store_pre(masm, node, dst, tmp1, tmp2, tmp3, dst_narrow); // Do the actual store if (dst_narrow) { @@ -820,7 +688,7 @@ void ShenandoahBarrierSetAssembler::compare_and_set_c2(const MachNode* node, Mac const Assembler::Aqrl release = Assembler::rl; const Assembler::operand_size size = narrow ? Assembler::uint32 : Assembler::int64; - ShenandoahBarrierStubC2::load_store_pre(masm, node, tmp1, Address(addr), tmp2, tmp3, narrow); + ShenandoahBarrierStubC2::load_store_pre(masm, node, Address(addr), tmp1, tmp2, tmp3, narrow); // CAS! __ cmpxchg(addr, oldval, newval, size, acquire, release, /* result */ res, !exchange /* result_as_bool */); @@ -832,7 +700,7 @@ void ShenandoahBarrierSetAssembler::get_and_set_c2(const MachNode* node, MacroAs Register newval, Register addr, Register tmp1, Register tmp2, Register tmp3, bool is_acquire) { const bool is_narrow = node->bottom_type()->isa_narrowoop(); - ShenandoahBarrierStubC2::load_store_pre(masm, node, tmp1, Address(addr, 0), tmp2, tmp3, is_narrow); + ShenandoahBarrierStubC2::load_store_pre(masm, node, Address(addr, 0), tmp1, tmp2, tmp3, is_narrow); if (is_narrow) { if (is_acquire) { diff --git a/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.hpp b/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.hpp index d1260eac57b..d41809f1ef7 100644 --- a/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.hpp +++ b/src/hotspot/cpu/riscv/gc/shenandoah/shenandoahBarrierSetAssembler_riscv.hpp @@ -54,8 +54,6 @@ private: void card_barrier(MacroAssembler* masm, Register obj); - void resolve_forward_pointer(MacroAssembler* masm, Register dst, Register tmp = noreg); - void resolve_forward_pointer_not_null(MacroAssembler* masm, Register dst, Register tmp = noreg); void load_reference_barrier(MacroAssembler* masm, Register dst, Address load_addr, DecoratorSet decorators); void gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators, @@ -81,8 +79,6 @@ public: Register obj, Register tmp, Label& slowpath); virtual void try_peek_weak_handle_in_nmethod(MacroAssembler* masm, Register weak_handle, Register obj, Register tmp, Label& slow_path); - void cmpxchg_oop(MacroAssembler* masm, Register addr, Register expected, Register new_val, - Assembler::Aqrl acquire, Assembler::Aqrl release, bool is_cae, Register result); #ifdef COMPILER1 void gen_pre_barrier_stub(LIR_Assembler* ce, ShenandoahPreBarrierStub* stub); diff --git a/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp b/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp index 02798d5204a..d93329544a7 100644 --- a/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp +++ b/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp @@ -593,7 +593,7 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ Register offset = t1; Label L_loop_search_receiver, L_loop_search_empty; - Label L_restart, L_found_recv, L_found_empty, L_polymorphic, L_count_update; + Label L_restart, L_found_recv, L_found_empty, L_count_update; // The code here recognizes three major cases: // A. Fastest: receiver found in the table @@ -623,21 +623,20 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ // if (receiver(i) == recv) goto found_recv(i); // } // - // // Fast: no receiver, but profile is full + // // Fast: no receiver, but profile is not full // for (i = 0; i < receiver_count(); i++) { // if (receiver(i) == null) goto found_null(i); // } - // goto polymorphic + // + // // Slow: profile is full, polymorphic case + // count++; + // return // // // Slow: try to install receiver // found_null(i): // CAS(&receiver(i), null, recv); // goto restart // - // polymorphic: - // count++; - // return - // // found_recv(i): // *receiver_count(i)++ // @@ -654,7 +653,7 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ sub(t0, offset, end_receiver_offset); bnez(t0, L_loop_search_receiver); - // Fast: no receiver, but profile is full + // Fast: no receiver, but profile is not full mv(offset, base_receiver_offset); bind(L_loop_search_empty); add(t0, mdp, offset); @@ -663,9 +662,13 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ add(offset, offset, receiver_step); sub(t0, offset, end_receiver_offset); bnez(t0, L_loop_search_empty); - j(L_polymorphic); - // Slow: try to install receiver + // Slow: Receiver is not found and table is full. + // Increment polymorphic counter instead of receiver slot. + mv(offset, poly_count_offset); + j(L_count_update); + + // Slowest: try to install receiver bind(L_found_empty); // Atomically swing receiver slot: null -> recv. @@ -683,16 +686,11 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ // and just restart the search from the beginning. j(L_restart); - // Counter updates: - // Increment polymorphic counter instead of receiver slot. - bind(L_polymorphic); - mv(offset, poly_count_offset); - j(L_count_update); - // Found a receiver, convert its slot offset to corresponding count offset. bind(L_found_recv); add(offset, offset, receiver_to_count_step); + // Finally, update the counter bind(L_count_update); add(t1, mdp, offset); increment(Address(t1), DataLayout::counter_increment); @@ -4178,50 +4176,6 @@ void MacroAssembler::safepoint_poll(Label& slow_path, bool at_return, bool in_nm } } -void MacroAssembler::cmpxchgptr(Register oldv, Register newv, Register addr, Register tmp, - Label &succeed, Label *fail) { - assert_different_registers(addr, tmp, t0); - assert_different_registers(newv, tmp, t0); - assert_different_registers(oldv, tmp, t0); - - // oldv holds comparison value - // newv holds value to write in exchange - // addr identifies memory word to compare against/update - if (UseZacas) { - mv(tmp, oldv); - atomic_cas(tmp, newv, addr, Assembler::int64, Assembler::aq, Assembler::rl); - beq(tmp, oldv, succeed); - } else { - Label retry_load, nope; - bind(retry_load); - // Load reserved from the memory location - load_reserved(tmp, addr, int64, Assembler::aqrl); - // Fail and exit if it is not what we expect - bne(tmp, oldv, nope); - // If the store conditional succeeds, tmp will be zero - store_conditional(tmp, newv, addr, int64, Assembler::rl); - beqz(tmp, succeed); - // Retry only when the store conditional failed - j(retry_load); - - bind(nope); - } - - // neither amocas nor lr/sc have an implied barrier in the failing case - membar(AnyAny); - - mv(oldv, tmp); - if (fail != nullptr) { - j(*fail); - } -} - -void MacroAssembler::cmpxchg_obj_header(Register oldv, Register newv, Register obj, Register tmp, - Label &succeed, Label *fail) { - assert(oopDesc::mark_offset_in_bytes() == 0, "assumption"); - cmpxchgptr(oldv, newv, obj, tmp, succeed, fail); -} - void MacroAssembler::load_reserved(Register dst, Register addr, Assembler::operand_size size, diff --git a/src/hotspot/cpu/riscv/macroAssembler_riscv.hpp b/src/hotspot/cpu/riscv/macroAssembler_riscv.hpp index 6e592b5c852..a5ad7eeaa5f 100644 --- a/src/hotspot/cpu/riscv/macroAssembler_riscv.hpp +++ b/src/hotspot/cpu/riscv/macroAssembler_riscv.hpp @@ -1203,8 +1203,6 @@ public: #undef INSN_ENTRY_RELOC - void cmpxchg_obj_header(Register oldv, Register newv, Register obj, Register tmp, Label &succeed, Label *fail); - void cmpxchgptr(Register oldv, Register newv, Register addr, Register tmp, Label &succeed, Label *fail); void cmpxchg(Register addr, Register expected, Register new_val, Assembler::operand_size size, diff --git a/src/hotspot/cpu/s390/interp_masm_s390.cpp b/src/hotspot/cpu/s390/interp_masm_s390.cpp index 03c90a499fb..cc8ca7a1f47 100644 --- a/src/hotspot/cpu/s390/interp_masm_s390.cpp +++ b/src/hotspot/cpu/s390/interp_masm_s390.cpp @@ -2003,9 +2003,22 @@ void InterpreterMacroAssembler::notify_method_exit(bool native_method, // depth. If it is possible to enter interp_only_mode we add // the code to check if the event should be sent. if (mode == NotifyJVMTI && (JvmtiExport::can_post_interpreter_events() || JvmtiExport::can_post_frame_pop())) { + NearLabel jvmti_post_done; + + // if (thread->jvmti_thread_state() == nullptr) exit; + z_ltg(Z_R1_scratch, Address(Z_thread, JavaThread::jvmti_thread_state_offset())); + z_brz(jvmti_post_done); + + // if (interp_only_mode() == false && frame_pop_cnt() == 0) exit; + z_lgf(Z_R1_scratch, Address(Z_R1_scratch, JvmtiThreadState::frame_pop_cnt_offset())); + z_o(Z_R1_scratch, Address(Z_thread, JavaThread::interp_only_mode_offset())); + z_brz(jvmti_post_done); + if (!native_method) push(state); // see frame::interpreter_frame_result() call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_method_exit)); if (!native_method) pop(state); + + bind(jvmti_post_done); } } diff --git a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp index ce8f26fc1b0..fdf10e5b5e6 100644 --- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp +++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.cpp @@ -28,7 +28,6 @@ #include "gc/shenandoah/mode/shenandoahMode.hpp" #include "gc/shenandoah/shenandoahBarrierSet.hpp" #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp" -#include "gc/shenandoah/shenandoahForwarding.hpp" #include "gc/shenandoah/shenandoahHeap.inline.hpp" #include "gc/shenandoah/shenandoahHeapRegion.hpp" #include "gc/shenandoah/shenandoahRuntime.hpp" @@ -512,151 +511,6 @@ void ShenandoahBarrierSetAssembler::try_peek_weak_handle_in_nmethod(MacroAssembl __ bind(done); } -// Special Shenandoah CAS implementation that handles false negatives -// due to concurrent evacuation. -void ShenandoahBarrierSetAssembler::cmpxchg_oop(MacroAssembler* masm, - Register res, Address addr, Register oldval, Register newval, - bool exchange, Register tmp1, Register tmp2) { - assert(ShenandoahCASBarrier, "Should only be used when CAS barrier is enabled"); - assert(oldval == rax, "must be in rax for implicit use in cmpxchg"); - assert_different_registers(oldval, tmp1, tmp2); - assert_different_registers(newval, tmp1, tmp2); - - Label L_success, L_failure; - - // Remember oldval for retry logic below - if (UseCompressedOops) { - __ movl(tmp1, oldval); - } else { - __ movptr(tmp1, oldval); - } - - // Step 1. Fast-path. - // - // Try to CAS with given arguments. If successful, then we are done. - - if (UseCompressedOops) { - __ lock(); - __ cmpxchgl(newval, addr); - } else { - __ lock(); - __ cmpxchgptr(newval, addr); - } - __ jcc(Assembler::equal, L_success); - - // Step 2. CAS had failed. This may be a false negative. - // - // The trouble comes when we compare the to-space pointer with the from-space - // pointer to the same object. To resolve this, it will suffice to resolve - // the value from memory -- this will give both to-space pointers. - // If they mismatch, then it was a legitimate failure. - // - // Before reaching to resolve sequence, see if we can avoid the whole shebang - // with filters. - - // Filter: when offending in-memory value is null, the failure is definitely legitimate - __ testptr(oldval, oldval); - __ jcc(Assembler::zero, L_failure); - - // Filter: when heap is stable, the failure is definitely legitimate - const Register thread = r15_thread; - Address gc_state(thread, in_bytes(ShenandoahThreadLocalData::gc_state_offset())); - __ testb(gc_state, ShenandoahHeap::HAS_FORWARDED); - __ jcc(Assembler::zero, L_failure); - - if (UseCompressedOops) { - __ movl(tmp2, oldval); - __ decode_heap_oop(tmp2); - } else { - __ movptr(tmp2, oldval); - } - - // Decode offending in-memory value. - // Test if-forwarded - __ testb(Address(tmp2, oopDesc::mark_offset_in_bytes()), markWord::marked_value); - __ jcc(Assembler::noParity, L_failure); // When odd number of bits, then not forwarded - __ jcc(Assembler::zero, L_failure); // When it is 00, then also not forwarded - - // Load and mask forwarding pointer - __ movptr(tmp2, Address(tmp2, oopDesc::mark_offset_in_bytes())); - __ shrptr(tmp2, 2); - __ shlptr(tmp2, 2); - - if (UseCompressedOops) { - __ decode_heap_oop(tmp1); // decode for comparison - } - - // Now we have the forwarded offender in tmp2. - // Compare and if they don't match, we have legitimate failure - __ cmpptr(tmp1, tmp2); - __ jcc(Assembler::notEqual, L_failure); - - // Step 3. Need to fix the memory ptr before continuing. - // - // At this point, we have from-space oldval in the register, and its to-space - // address is in tmp2. Let's try to update it into memory. We don't care if it - // succeeds or not. If it does, then the retrying CAS would see it and succeed. - // If this fixup fails, this means somebody else beat us to it, and necessarily - // with to-space ptr store. We still have to do the retry, because the GC might - // have updated the reference for us. - - if (UseCompressedOops) { - __ encode_heap_oop(tmp2); // previously decoded at step 2. - } - - if (UseCompressedOops) { - __ lock(); - __ cmpxchgl(tmp2, addr); - } else { - __ lock(); - __ cmpxchgptr(tmp2, addr); - } - - // Step 4. Try to CAS again. - // - // This is guaranteed not to have false negatives, because oldval is definitely - // to-space, and memory pointer is to-space as well. Nothing is able to store - // from-space ptr into memory anymore. Make sure oldval is restored, after being - // garbled during retries. - // - if (UseCompressedOops) { - __ movl(oldval, tmp2); - } else { - __ movptr(oldval, tmp2); - } - - if (UseCompressedOops) { - __ lock(); - __ cmpxchgl(newval, addr); - } else { - __ lock(); - __ cmpxchgptr(newval, addr); - } - if (!exchange) { - __ jccb(Assembler::equal, L_success); // fastpath, peeking into Step 5, no need to jump - } - - // Step 5. If we need a boolean result out of CAS, set the flag appropriately. - // and promote the result. Note that we handle the flag from both the 1st and 2nd CAS. - // Otherwise, failure witness for CAE is in oldval on all paths, and we can return. - - if (exchange) { - __ bind(L_failure); - __ bind(L_success); - } else { - assert(res != noreg, "need result register"); - - Label exit; - __ bind(L_failure); - __ xorptr(res, res); - __ jmpb(exit); - - __ bind(L_success); - __ movptr(res, 1); - __ bind(exit); - } -} - #ifdef PRODUCT #define BLOCK_COMMENT(str) /* nothing */ #else @@ -926,7 +780,7 @@ void ShenandoahBarrierSetAssembler::store_c2(const MachNode* node, MacroAssemble Register src, bool src_narrow, Register tmp) { - ShenandoahBarrierStubC2::store_pre(masm, node, tmp, dst, noreg, noreg, dst_narrow); + ShenandoahBarrierStubC2::store_pre(masm, node, dst, tmp, noreg, noreg, dst_narrow); // Need to encode into tmp, because we cannot clobber src. if (dst_narrow && !src_narrow) { @@ -961,7 +815,7 @@ void ShenandoahBarrierSetAssembler::compare_and_set_c2(const MachNode* node, Mac assert_different_registers(oldval, tmp, addr.base(), addr.index()); assert_different_registers(newval, tmp, addr.base(), addr.index()); - ShenandoahBarrierStubC2::load_store_pre(masm, node, tmp, addr, noreg, noreg, narrow); + ShenandoahBarrierStubC2::load_store_pre(masm, node, addr, tmp, noreg, noreg, narrow); // CAS! __ lock(); @@ -982,7 +836,7 @@ void ShenandoahBarrierSetAssembler::compare_and_set_c2(const MachNode* node, Mac void ShenandoahBarrierSetAssembler::get_and_set_c2(const MachNode* node, MacroAssembler* masm, Register newval, Address addr, Register tmp, bool narrow) { assert_different_registers(newval, tmp, addr.base(), addr.index()); - ShenandoahBarrierStubC2::load_store_pre(masm, node, tmp, addr, noreg, noreg, narrow); + ShenandoahBarrierStubC2::load_store_pre(masm, node, addr, tmp, noreg, noreg, narrow); if (narrow) { __ xchgl(newval, addr); diff --git a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp index 592cbc42fe3..f608760ce42 100644 --- a/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp +++ b/src/hotspot/cpu/x86/gc/shenandoah/shenandoahBarrierSetAssembler_x86.hpp @@ -60,9 +60,6 @@ public: void load_reference_barrier(MacroAssembler* masm, Register dst, Address src, DecoratorSet decorators); - void cmpxchg_oop(MacroAssembler* masm, - Register res, Address addr, Register oldval, Register newval, - bool exchange, Register tmp1, Register tmp2); virtual void arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, BasicType type, Register src, Register dst, Register count); virtual void arraycopy_epilogue(MacroAssembler* masm, DecoratorSet decorators, BasicType type, diff --git a/src/hotspot/cpu/x86/macroAssembler_x86.cpp b/src/hotspot/cpu/x86/macroAssembler_x86.cpp index aa2195d0256..0ac0a8243d4 100644 --- a/src/hotspot/cpu/x86/macroAssembler_x86.cpp +++ b/src/hotspot/cpu/x86/macroAssembler_x86.cpp @@ -4901,7 +4901,7 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ Register offset = rscratch1; Label L_loop_search_receiver, L_loop_search_empty; - Label L_restart, L_found_recv, L_found_empty, L_polymorphic, L_count_update; + Label L_restart, L_found_recv, L_found_empty, L_count_update; // The code here recognizes three major cases: // A. Fastest: receiver found in the table @@ -4931,21 +4931,20 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ // if (receiver(i) == recv) goto found_recv(i); // } // - // // Fast: no receiver, but profile is full + // // Fast: no receiver, but profile is not full // for (i = 0; i < receiver_count(); i++) { // if (receiver(i) == null) goto found_null(i); // } - // goto polymorphic + // + // // Slow: profile is full, polymorphic case + // count++; + // return // // // Slow: try to install receiver // found_null(i): // CAS(&receiver(i), null, recv); // goto restart // - // polymorphic: - // count++; - // return - // // found_recv(i): // *receiver_count(i)++ // @@ -4961,7 +4960,7 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ cmpptr(offset, end_receiver_offset); jccb(Assembler::notEqual, L_loop_search_receiver); - // Fast: no receiver, but profile is full + // Fast: no receiver, but profile is not full movptr(offset, base_receiver_offset); bind(L_loop_search_empty); cmpptr(Address(mdp, offset, Address::times_ptr), NULL_WORD); @@ -4969,9 +4968,13 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ addptr(offset, receiver_step); cmpptr(offset, end_receiver_offset); jccb(Assembler::notEqual, L_loop_search_empty); - jmpb(L_polymorphic); - // Slow: try to install receiver + // Slow: Receiver is not found and table is full. + // Increment polymorphic counter instead of receiver slot. + movptr(offset, poly_count_offset); + jmpb(L_count_update); + + // Slowest: try to install receiver bind(L_found_empty); // Atomically swing receiver slot: null -> recv. @@ -5023,17 +5026,11 @@ void MacroAssembler::profile_receiver_type(Register recv, Register mdp, int mdp_ // and just restart the search from the beginning. jmpb(L_restart); - // Counter updates: - - // Increment polymorphic counter instead of receiver slot. - bind(L_polymorphic); - movptr(offset, poly_count_offset); - jmpb(L_count_update); - // Found a receiver, convert its slot offset to corresponding count offset. bind(L_found_recv); addptr(offset, receiver_to_count_step); + // Finally, update the counter bind(L_count_update); addptr(Address(mdp, offset, Address::times_ptr), DataLayout::counter_increment); } diff --git a/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp b/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp index b64943fc4de..afd9c126a21 100644 --- a/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp +++ b/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp @@ -4904,6 +4904,11 @@ void StubGenerator::generate_compiler_stubs() { StubRoutines::_intpoly_assign = generate_intpoly_assign(); } + if (UseIntPoly25519Intrinsics) { + StubRoutines::_intpoly_mult_25519 = generate_intpoly_mult_25519(); + StubRoutines::_intpoly_square_25519 = generate_intpoly_square_25519(); + } + if (UseMD5Intrinsics) { StubRoutines::_md5_implCompress = generate_md5_implCompress(StubId::stubgen_md5_implCompress_id); StubRoutines::_md5_implCompressMB = generate_md5_implCompress(StubId::stubgen_md5_implCompressMB_id); diff --git a/src/hotspot/cpu/x86/stubGenerator_x86_64.hpp b/src/hotspot/cpu/x86/stubGenerator_x86_64.hpp index 360b0329d95..6e3da334f11 100644 --- a/src/hotspot/cpu/x86/stubGenerator_x86_64.hpp +++ b/src/hotspot/cpu/x86/stubGenerator_x86_64.hpp @@ -496,6 +496,9 @@ class StubGenerator: public StubCodeGenerator { address generate_intpoly_montgomeryMult_P256(); address generate_intpoly_assign(); + address generate_intpoly_mult_25519(); + address generate_intpoly_square_25519(); + // SHA3 stubs void generate_sha3_stubs(); diff --git a/src/hotspot/cpu/x86/stubGenerator_x86_64_poly25519.cpp b/src/hotspot/cpu/x86/stubGenerator_x86_64_poly25519.cpp new file mode 100644 index 00000000000..c7395220d49 --- /dev/null +++ b/src/hotspot/cpu/x86/stubGenerator_x86_64_poly25519.cpp @@ -0,0 +1,306 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#include "macroAssembler_x86.hpp" +#include "stubGenerator_x86_64.hpp" + +#define __ _masm-> + +const int32_t term = 19; +const int32_t limbs = 5; +const int32_t bpl = 51; +const int32_t rem = 64 - bpl; +const uint64_t MASK = 0x7FFFFFFFFFFFF; +const uint64_t CARRY_ADD = 0x4000000000000; + +// Multiplication operation for polynomial arithmetic in Curve25519. +// +// This is the same algorithm as used in Java, except we use pseudo-Mersenne +// reduction to reduce register pressure instead of using the full 10 columns +// in Java. +void multiply_25519_scalar(const Register aLimbs, const Register bLimbs, const Register rLimbs, Register c[], Register bArg, Register d, Register b, Register mask, MacroAssembler* _masm) { + + for (int i = 0; i < limbs; i++) { + __ xorq(c[i], c[i]); + } + __ mov64(mask, MASK); + __ movq(bArg, bLimbs); + + // Perform high/low multiplication with signed 5x51 bit limbs + for (int i = 0; i < limbs; i++) { + __ movq(b, Address(bArg, i * 8)); + for (int j = 0; j < limbs; j++) { + __ movq(rax, Address(aLimbs, j * 8)); + __ imulq(b); // rdx:rax = a * b + __ movq(d, rax); + __ andq(d, mask); + __ shrq(rax, bpl); + __ shlq(rdx, rem); + __ orq(rax, rdx); + // Fold in pseudo-Mersenne reduction + if ((i + j + 1) >= limbs) { + __ imulq(rax, rax, term); + } + if ((i + j) >= limbs) { + __ imulq(d, d, term); + } + __ addq(c[(i + j) % limbs], d); + __ addq(c[(i + j + 1) % limbs], rax); + } + } + + // Carry-add with reduction from high limb + Register carry = bArg; + __ mov64(mask, CARRY_ADD); + __ movq(carry, mask); + + // Limb 3 + __ addq(carry, c[3]); + __ sarq(carry, bpl); + __ addq(c[4], carry); + __ shlq(carry, bpl); + __ subq(c[3], carry); + + // Limb 4 + __ movq(carry, mask); + __ addq(carry, c[4]); + __ sarq(carry, bpl); + + // Reduce high order limb and fold back into low order limb + __ mov64(rax, term); + __ imulq(carry); + __ addq(c[0], rax); + + __ shlq(carry, bpl); + __ subq(c[4], carry); + + // Limbs 0 - 3 + for (int i = 0; i < (limbs - 1); i++) { + __ movq(carry, mask); + __ addq(carry, c[i]); + __ sarq(carry, bpl); + __ addq(c[i + 1], carry); + __ shlq(carry, bpl); + __ subq(c[i], carry); + } + + __ pop_ppx(rdx); + + for (int i = 0; i < limbs; i++) { + __ movq(Address(rLimbs, i * 8), c[i]); + } +} + +// Squaring operation for polynomial arithmetic in Curve25519. +// +// This is the same algorithm as used in Java, except we use pseudo-Mersenne +// reduction to reduce register pressure instead of using the full 10 columns +// in Java. +void square_25519_scalar(const Register aLimbs, const Register rLimbs, Register c[], Register aArg, Register d, Register carry, Register mask, MacroAssembler* _masm) { + + for (int i = 0; i < limbs; i++) { + __ xorq(c[i], c[i]); + } + __ mov64(mask, MASK); + + // Perform high/low multiplication with signed 5x51 bit limbs + for (int i = 0; i < limbs; i++) { + __ movq(aArg, Address(aLimbs, i * 8)); + __ movq(rax, aArg); + __ imulq(aArg); // rdx:rax = a[j] * a[i] + __ movq(d, rax); + __ andq(d, mask); + __ shrq(rax, bpl); + __ shlq(rdx, rem); + __ orq(rax, rdx); // rax = dd + if ((i * 2 + 1) >= limbs) { + __ imulq(rax, rax, term); + } + if ((i * 2) >= limbs) { + __ imulq(d, d, term); + } + __ addq(c[(i * 2) % limbs], d); + __ addq(c[(i * 2 + 1) % limbs], rax); + for (int j = i + 1; j < limbs; j++) { + __ movq(rax, Address(aLimbs, j * 8)); + __ imulq(aArg); // rdx:rax = a * a + __ movq(d, rax); + __ andq(d, mask); + __ shlq(d, 1); + __ shrq(rax, bpl); + __ shlq(rdx, rem); + __ orq(rax, rdx); // rax = dd + __ shlq(rax, 1); + if ((j + i + 1) >= limbs) { + __ imulq(rax, rax, term); + } + if ((j + i) >= limbs) { + __ imulq(d, d, term); + } + __ addq(c[(i + j) % limbs], d); + __ addq(c[(i + j + 1) % limbs], rax); + } + } + + // Carry-add with reduction from high limb + // Limb 3 + __ mov64(mask, CARRY_ADD); + __ movq(carry, mask); + __ addq(carry, c[3]); + __ sarq(carry, bpl); + __ addq(c[4], carry); + __ shlq(carry, bpl); + __ subq(c[3], carry); + + // Limb 4 + __ movq(carry, mask); + __ addq(carry, c[4]); + __ sarq(carry, bpl); + + // Reduce high order limb and fold back into low order limb + __ mov64(rax, term); + __ imulq(carry); + __ addq(c[0], rax); + + __ shlq(carry, bpl); + __ subq(c[4], carry); + + // Limbs 0 - 3 + for (int i = 0; i < (limbs - 1); i++) { + __ movq(carry, mask); + __ addq(carry, c[i]); + __ sarq(carry, bpl); + __ addq(c[i + 1], carry); + __ shlq(carry, bpl); + __ subq(c[i], carry); + } + + __ pop_ppx(rdx); + + for (int i = 0; i < limbs; i++) { + __ movq(Address(rLimbs, i * 8), c[i]); + } +} + +address StubGenerator::generate_intpoly_mult_25519() { + StubId stub_id = StubId::stubgen_intpoly_mult_25519_id; + int entry_count = StubInfo::entry_count(stub_id); + assert(entry_count == 1, "sanity check"); + address start = load_archive_data(stub_id); + if (start != nullptr) { + return start; + } + __ align(CodeEntryAlignment); + StubCodeMark mark(this, stub_id); + start = __ pc(); + __ enter(); + + // Register Map + const Register aLimbs = c_rarg0; // rdi | rcx + const Register bLimbs = c_rarg1; // rsi | rdx + const Register rLimbs = c_rarg2; // rdx | r8 + + Register c[] = {r9, r10, r11, r12, r13}; + Register bArg = r14; + Register d = r15; + Register b = rbp; + Register mask = rbx; + + __ push_ppx(rbp); + __ push_ppx(rbx); + __ push_ppx(r12); + __ push_ppx(r13); + __ push_ppx(r14); + __ push_ppx(r15); + __ push_ppx(rdx); + + multiply_25519_scalar(aLimbs, bLimbs, rLimbs, c, bArg, d, b, mask, _masm); + + // __ pop_ppx(rdx); // restored in the helper already + __ pop_ppx(r15); + __ pop_ppx(r14); + __ pop_ppx(r13); + __ pop_ppx(r12); + __ pop_ppx(rbx); + __ pop_ppx(rbp); + + __ leave(); + __ ret(0); + + // Record the stub entry and end + store_archive_data(stub_id, start, __ pc()); + + return start; +} + +address StubGenerator::generate_intpoly_square_25519() { + StubId stub_id = StubId::stubgen_intpoly_square_25519_id; + int entry_count = StubInfo::entry_count(stub_id); + assert(entry_count == 1, "sanity check"); + address start = load_archive_data(stub_id); + if (start != nullptr) { + return start; + } + __ align(CodeEntryAlignment); + StubCodeMark mark(this, stub_id); + start = __ pc(); + __ enter(); + + // Register Map + const Register aLimbs = c_rarg0; // rdi | rcx + const Register rLimbs = c_rarg1; // rsi | rdx + Register c[] = {r9, r10, r11, r12, r13}; + Register aArg = r14; + Register d = r15; + Register carry = rbp; + Register mask = rbx; + + __ push_ppx(rbp); + __ push_ppx(rbx); + __ push_ppx(r12); + __ push_ppx(r13); + __ push_ppx(r14); + __ push_ppx(r15); + __ push_ppx(rdx); + + square_25519_scalar(aLimbs, rLimbs, c, aArg, d, carry, mask, _masm); + + // __ pop_ppx(rdx); // restored in the helper already + __ pop_ppx(r15); + __ pop_ppx(r14); + __ pop_ppx(r13); + __ pop_ppx(r12); + __ pop_ppx(rbx); + __ pop_ppx(rbp); + + __ leave(); + __ ret(0); + + // Record the stub entry and end + store_archive_data(stub_id, start, __ pc()); + + return start; +} +#undef __ diff --git a/src/hotspot/cpu/x86/stubGenerator_x86_64_poly_mont.cpp b/src/hotspot/cpu/x86/stubGenerator_x86_64_poly_mont.cpp index 308a8042993..76b6fa97fa5 100644 --- a/src/hotspot/cpu/x86/stubGenerator_x86_64_poly_mont.cpp +++ b/src/hotspot/cpu/x86/stubGenerator_x86_64_poly_mont.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024, 2025, Intel Corporation. All rights reserved. + * Copyright (c) 2024, 2026, Intel Corporation. All rights reserved. * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -676,7 +676,7 @@ address StubGenerator::generate_intpoly_assign() { // KNOWN Lengths: // MontgomeryIntPolynP256: 5 = 4 + 1 // IntegerPolynomial1305: 5 = 4 + 1 - // IntegerPolynomial25519: 10 = 8 + 2 + // IntegerPolynomial25519: 5 = 4 + 1 // IntegerPolynomialP256: 10 = 8 + 2 // Curve25519OrderField: 10 = 8 + 2 // Curve25519OrderField: 10 = 8 + 2 diff --git a/src/hotspot/cpu/x86/vm_version_x86.cpp b/src/hotspot/cpu/x86/vm_version_x86.cpp index 4cdcb1770bb..2ca1c172542 100644 --- a/src/hotspot/cpu/x86/vm_version_x86.cpp +++ b/src/hotspot/cpu/x86/vm_version_x86.cpp @@ -1407,6 +1407,10 @@ void VM_Version::get_processor_features() { FLAG_SET_DEFAULT(UseIntPolyIntrinsics, false); } + if (FLAG_IS_DEFAULT(UseIntPoly25519Intrinsics)) { + UseIntPoly25519Intrinsics = true; + } + if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) { UseMultiplyToLenIntrinsic = true; } diff --git a/src/hotspot/cpu/x86/x86.ad b/src/hotspot/cpu/x86/x86.ad index ab39692b44b..b3dd1a0812b 100644 --- a/src/hotspot/cpu/x86/x86.ad +++ b/src/hotspot/cpu/x86/x86.ad @@ -13959,6 +13959,7 @@ instruct orL_rReg_ndd(rRegL dst, rRegL src1, rRegL src2, rFlagsReg cr) // Use any_RegP to match R15 (TLS register) without spilling. instruct orL_rReg_castP2X(rRegL dst, any_RegP src, rFlagsReg cr) %{ + predicate(!UseAPX); match(Set dst (OrL dst (CastP2X src))); effect(KILL cr); flag(PD::Flag_sets_sign_flag, PD::Flag_sets_zero_flag, PD::Flag_sets_parity_flag, PD::Flag_clears_overflow_flag, PD::Flag_clears_carry_flag); @@ -13971,6 +13972,7 @@ instruct orL_rReg_castP2X(rRegL dst, any_RegP src, rFlagsReg cr) %{ %} instruct orL_rReg_castP2X_ndd(rRegL dst, any_RegP src1, any_RegP src2, rFlagsReg cr) %{ + predicate(UseAPX); match(Set dst (OrL src1 (CastP2X src2))); effect(KILL cr); flag(PD::Flag_sets_sign_flag, PD::Flag_sets_zero_flag, PD::Flag_sets_parity_flag, PD::Flag_clears_overflow_flag, PD::Flag_clears_carry_flag); diff --git a/src/hotspot/os/posix/os_posix.cpp b/src/hotspot/os/posix/os_posix.cpp index 1fb2a248bec..1eee76b4667 100644 --- a/src/hotspot/os/posix/os_posix.cpp +++ b/src/hotspot/os/posix/os_posix.cpp @@ -167,11 +167,11 @@ void os::check_core_dump_prerequisites(char* buffer, size_t bufferSize, bool che } } -bool os::committed_in_range(address start, size_t size, address& committed_start, size_t& committed_size) { +bool os::first_resident_in_range(address start, size_t size, address& resident_start, size_t& resident_size) { #ifdef _AIX - committed_start = start; - committed_size = size; + resident_start = start; + resident_size = size; return true; #else @@ -188,10 +188,10 @@ bool os::committed_in_range(address start, size_t size, address& committed_start assert(is_aligned(start, page_sz), "Start address must be page aligned"); assert(is_aligned(size, page_sz), "Size must be page aligned"); - committed_start = nullptr; + resident_start = nullptr; int loops = checked_cast((pages + stripe - 1) / stripe); - int committed_pages = 0; + int resident_pages = 0; address loop_base = start; bool found_range = false; @@ -210,7 +210,7 @@ bool os::committed_in_range(address start, size_t size, address& committed_start // During shutdown, some memory goes away without properly notifying NMT, // E.g. ConcurrentGCThread/WatcherThread can exit without deleting thread object. - // Bailout and return as not committed for now. + // Bailout and return as not resident for now. if (mincore_return_value == -1 && errno == ENOMEM) { return false; } @@ -224,32 +224,32 @@ bool os::committed_in_range(address start, size_t size, address& committed_start assert(mincore_return_value == 0, "Range must be valid"); // Process this stripe for (uintx vecIdx = 0; vecIdx < pages_to_query; vecIdx ++) { - if ((vec[vecIdx] & 0x01) == 0) { // not committed + if ((vec[vecIdx] & 0x01) == 0) { // not resident // End of current contiguous region - if (committed_start != nullptr) { + if (resident_start != nullptr) { found_range = true; break; } - } else { // committed + } else { // resident // Start of region - if (committed_start == nullptr) { - committed_start = loop_base + page_sz * vecIdx; + if (resident_start == nullptr) { + resident_start = loop_base + page_sz * vecIdx; } - committed_pages ++; + resident_pages ++; } } loop_base += pages_to_query * page_sz; } - if (committed_start != nullptr) { - assert(committed_pages > 0, "Must have committed region"); - assert(committed_pages <= int(size / page_sz), "Can not commit more than it has"); - assert(committed_start >= start && committed_start < start + size, "Out of range"); - committed_size = page_sz * committed_pages; + if (resident_start != nullptr) { + assert(resident_pages > 0, "Must have a resident region"); + assert(resident_pages <= int(size / page_sz), "Resident size exceeds region size"); + assert(resident_start >= start && resident_start < start + size, "Out of range"); + resident_size = page_sz * resident_pages; return true; } else { - assert(committed_pages == 0, "Should not have committed region"); + assert(resident_pages == 0, "Should not have a resident region"); return false; } #endif diff --git a/src/hotspot/os/windows/os_windows.cpp b/src/hotspot/os/windows/os_windows.cpp index 9a987bf3762..d00babef40f 100644 --- a/src/hotspot/os/windows/os_windows.cpp +++ b/src/hotspot/os/windows/os_windows.cpp @@ -243,6 +243,16 @@ static LPVOID virtualAllocExNuma(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSiz return result; } +void* os::win32::lookup_kernelbase_symbol(const char* name) { + // Pass a small ebuf so dll_load logs failures, but don't use it here to avoid redundancy. + char ebuf[1024]; + static void* const handle = os::dll_load("KernelBase", ebuf, sizeof(ebuf)); + if (handle == nullptr) { + return nullptr; + } + return os::dll_lookup(handle, name); +} + // Logging wrapper for MapViewOfFileEx static LPVOID mapViewOfFileEx(HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap, LPVOID lpBaseAddress) { @@ -465,36 +475,63 @@ void os::current_stack_base_and_size(address* stack_base, size_t* stack_size) { *stack_size = size; } -bool os::committed_in_range(address start, size_t size, address& committed_start, size_t& committed_size) { - MEMORY_BASIC_INFORMATION minfo; - committed_start = nullptr; - committed_size = 0; - address top = start + size; - const address start_addr = start; - while (start < top) { - VirtualQuery(start, &minfo, sizeof(minfo)); - if ((minfo.State & MEM_COMMIT) == 0) { // not committed - if (committed_start != nullptr) { - break; - } - } else { // committed - if (committed_start == nullptr) { - committed_start = start; - } - size_t offset = start - (address)minfo.BaseAddress; - committed_size += minfo.RegionSize - offset; - } - start = (address)minfo.BaseAddress + minfo.RegionSize; - } +bool os::first_resident_in_range(address start, size_t size, address& resident_start, size_t& resident_size) { + constexpr size_t stripe = 1024; // query this many pages each time + PSAPI_WORKING_SET_EX_INFORMATION wsinfo[stripe]; - if (committed_start == nullptr) { - assert(committed_size == 0, "Sanity"); - return false; - } else { - assert(committed_start >= start_addr && committed_start < top, "Out of range"); - // current region may go beyond the limit, trim to the limit - committed_size = MIN2(committed_size, size_t(top - committed_start)); + size_t page_sz = os::vm_page_size(); + uintx pages_left = size / page_sz; + + assert(is_aligned(start, page_sz), "Start address must be page aligned"); + assert(is_aligned(size, page_sz), "Size must be page aligned"); + + resident_start = nullptr; + + uintx loops = (pages_left + stripe - 1) / stripe; + uintx resident_pages = 0; + address pos = start; + bool found_range = false; + + for (uintx index = 0; index < loops && !found_range; index++) { + assert(pages_left > 0, "Nothing to do"); + uintx pages_to_query = MIN2(pages_left, stripe); + pages_left -= pages_to_query; + + for (uintx i = 0; i < pages_to_query; i++) { + wsinfo[i].VirtualAddress = (PVOID)(pos + i * page_sz); + } + + BOOL success = QueryWorkingSetEx(GetCurrentProcess(), wsinfo, pages_to_query * sizeof(PSAPI_WORKING_SET_EX_INFORMATION)); + if (!success) { + return false; + } + + for (uintx i = 0; i < pages_to_query; i++) { + if (wsinfo[i].VirtualAttributes.Valid == 0) { + if (resident_start != nullptr) { + found_range = true; + break; + } + // Still searching for start of resident region + } else { + if (resident_start == nullptr) { + // Found first resident page in region + resident_start = pos + i * page_sz; + } + resident_pages++; + } + } + pos += pages_to_query * page_sz; + } + if (resident_start != nullptr) { + assert(resident_pages > 0, "Must have a resident region"); + assert(resident_pages <= size / page_sz, "Resident size exceeds region size"); + assert(resident_start >= start && resident_start < start + size, "Out of range"); + resident_size = page_sz * resident_pages; return true; + } else { + assert(resident_pages == 0, "Should not have a resident region"); + return false; } } @@ -3223,9 +3260,9 @@ char* os::map_memory_to_file(char* base, size_t size, int fd) { assert(fd != -1, "File descriptor is not valid"); HANDLE fh = (HANDLE)_get_osfhandle(fd); - HANDLE fileMapping = CreateFileMapping(fh, nullptr, PAGE_READWRITE, + HANDLE file_mapping = CreateFileMapping(fh, nullptr, PAGE_READWRITE, (DWORD)(size >> 32), (DWORD)(size & 0xFFFFFFFF), nullptr); - if (fileMapping == nullptr) { + if (file_mapping == nullptr) { if (GetLastError() == ERROR_DISK_FULL) { vm_exit_during_initialization(err_msg("Could not allocate sufficient disk space for Java heap")); } @@ -3236,9 +3273,9 @@ char* os::map_memory_to_file(char* base, size_t size, int fd) { return nullptr; } - LPVOID addr = mapViewOfFileEx(fileMapping, FILE_MAP_WRITE, 0, 0, size, base); + LPVOID addr = mapViewOfFileEx(file_mapping, FILE_MAP_WRITE, 0, 0, size, base); - CloseHandle(fileMapping); + CloseHandle(file_mapping); return (char*)addr; } @@ -3251,40 +3288,75 @@ char* os::replace_existing_mapping_with_file_mapping(char* base, size_t size, in return map_memory_to_file(base, size, fd); } +// VirtualAlloc2 / MapViewOfFile3 (Windows 1803+). Resolved in os::init_2() via lookup_kernelbase_symbol. +os::win32::VirtualAlloc2Fn os::win32::VirtualAlloc2 = nullptr; + +os::win32::MapViewOfFile3Fn os::win32::MapViewOfFile3 = nullptr; + +static bool is_VirtualAlloc2_supported() { + return os::win32::VirtualAlloc2 != nullptr; +} + +static bool is_MapViewOfFile3_supported() { + return os::win32::MapViewOfFile3 != nullptr; +} + // Multiple threads can race in this code but it's not possible to unmap small sections of // virtual space to get requested alignment, like posix-like os's. // Windows prevents multiple thread from remapping over each other so this loop is thread-safe. -static char* map_or_reserve_memory_aligned(size_t size, size_t alignment, int file_desc, MemTag mem_tag) { +static char* reserve_memory_aligned(size_t size, size_t alignment, MemTag mem_tag) { assert(is_aligned(alignment, os::vm_allocation_granularity()), - "Alignment must be a multiple of allocation granularity (page size)"); + "Alignment must be a multiple of allocation granularity"); assert(is_aligned(size, os::vm_allocation_granularity()), - "Size must be a multiple of allocation granularity (page size)"); + "Size must be a multiple of allocation granularity"); size_t extra_size = size + alignment; assert(extra_size >= size, "overflow, size is too large to allow alignment"); char* aligned_base = nullptr; - static const int max_attempts = 20; + constexpr int max_attempts = 20; for (int attempt = 0; attempt < max_attempts && aligned_base == nullptr; attempt ++) { - char* extra_base = file_desc != -1 ? os::map_memory_to_file(extra_size, file_desc, mem_tag) : - os::reserve_memory(extra_size, mem_tag); + char* extra_base = os::reserve_memory(extra_size, mem_tag); if (extra_base == nullptr) { return nullptr; } - // Do manual alignment aligned_base = align_up(extra_base, alignment); + os::release_memory(extra_base, extra_size); - if (file_desc != -1) { - os::unmap_memory(extra_base, extra_size); - } else { - os::release_memory(extra_base, extra_size); + // A racing thread may have taken this region instead of us, which is why we loop and retry. + aligned_base = os::attempt_reserve_memory_at(aligned_base, size, mem_tag); + } + + assert(aligned_base != nullptr, + "Did not manage to reserve after %d attempts (size %zu, alignment %zu)", max_attempts, size, alignment); + + return aligned_base; +} + +// Similar to reserve_memory_aligned, other reservation/mapping requests can race with this function. +static char* map_memory_aligned(size_t size, size_t alignment, int file_desc, MemTag mem_tag) { + assert(is_aligned(alignment, os::vm_allocation_granularity()), + "Alignment must be a multiple of allocation granularity"); + assert(is_aligned(size, os::vm_allocation_granularity()), + "Size must be a multiple of allocation granularity"); + + size_t extra_size = size + alignment; + assert(extra_size >= size, "overflow, size is too large to allow alignment"); + + char* aligned_base = nullptr; + constexpr int max_attempts = 20; + + for (int attempt = 0; attempt < max_attempts && aligned_base == nullptr; attempt ++) { + char* extra_base = os::map_memory_to_file(extra_size, file_desc, mem_tag); + if (extra_base == nullptr) { + return nullptr; } + aligned_base = align_up(extra_base, alignment); + os::unmap_memory(extra_base, extra_size); - // Attempt to map, into the just vacated space, the slightly smaller aligned area. - // Which may fail, hence the loop. - aligned_base = file_desc != -1 ? os::attempt_map_memory_to_file_at(aligned_base, size, file_desc, mem_tag) : - os::attempt_reserve_memory_at(aligned_base, size, mem_tag); + // A racing thread may have taken this region instead of us, which is why we loop and retry. + aligned_base = os::attempt_map_memory_to_file_at(aligned_base, size, file_desc, mem_tag); } assert(aligned_base != nullptr, @@ -3293,6 +3365,84 @@ static char* map_or_reserve_memory_aligned(size_t size, size_t alignment, int fi return aligned_base; } +// MapViewOfFile3 supports alignment natively. +static char* map_memory_aligned_va2(size_t size, size_t alignment, int file_desc, MemTag mem_tag) { + assert(file_desc != -1, "File descriptor should not be -1"); + assert(is_aligned(alignment, os::vm_allocation_granularity()), + "Alignment must be a multiple of allocation granularity"); + assert(is_aligned(size, os::vm_allocation_granularity()), + "Size must be a multiple of allocation granularity"); + + MEM_ADDRESS_REQUIREMENTS requirements = {0}; + requirements.Alignment = alignment; + + MEM_EXTENDED_PARAMETER param = {0}; + param.Type = MemExtendedParameterAddressRequirements; + param.Pointer = &requirements; + + char* aligned_base = nullptr; + + // File-backed aligned mapping. + HANDLE fh = (HANDLE)_get_osfhandle(file_desc); + HANDLE file_mapping = CreateFileMapping(fh, nullptr, PAGE_READWRITE,(DWORD)(size >> 32), (DWORD)(size & 0xFFFFFFFF), nullptr); + DWORD err = GetLastError(); + if (file_mapping != nullptr) { + aligned_base = (char*)os::win32::MapViewOfFile3( + file_mapping, + GetCurrentProcess(), + nullptr, // let the system choose an aligned address + 0, // offset + size, + 0, // no special allocation type flags + PAGE_READWRITE, + ¶m, 1); + err = GetLastError(); + CloseHandle(file_mapping); + } + + if (aligned_base != nullptr) { + assert(is_aligned(aligned_base, alignment), "Result must be aligned"); + MemTracker::record_virtual_memory_reserve_and_commit(aligned_base, size, CALLER_PC, mem_tag); + return aligned_base; + } + log_trace(os)("Aligned allocation via MapViewOfFile3 failed, falling back to retry loop. GetLastError->%lu.", err); + return map_memory_aligned(size, alignment, file_desc, mem_tag); +} + +// VirtualAlloc2 supports alignment natively. +static char* reserve_memory_aligned_va2(size_t size, size_t alignment, MemTag mem_tag) { + assert(is_aligned(alignment, os::vm_allocation_granularity()), + "Alignment must be a multiple of allocation granularity"); + assert(is_aligned(size, os::vm_allocation_granularity()), + "Size must be a multiple of allocation granularity"); + + MEM_ADDRESS_REQUIREMENTS requirements = {0}; + requirements.Alignment = alignment; + + MEM_EXTENDED_PARAMETER param = {0}; + param.Type = MemExtendedParameterAddressRequirements; + param.Pointer = &requirements; + + char* aligned_base = nullptr; + + // Anonymous aligned reservation. + aligned_base = (char*)os::win32::VirtualAlloc2( + GetCurrentProcess(), + nullptr, // let the system choose an aligned address + size, + MEM_RESERVE, + PAGE_READWRITE, + ¶m, 1); + + if (aligned_base != nullptr) { + assert(is_aligned(aligned_base, alignment), "Result must be aligned"); + MemTracker::record_virtual_memory_reserve(aligned_base, size, CALLER_PC, mem_tag); + return aligned_base; + } + log_trace(os)("Aligned allocation via VirtualAlloc2 failed, falling back to retry loop. GetLastError->%lu.", GetLastError()); + return reserve_memory_aligned(size, alignment, mem_tag); +} + size_t os::commit_memory_limit() { BOOL is_in_job_object = false; BOOL res = IsProcessInJob(GetCurrentProcess(), nullptr, &is_in_job_object); @@ -3340,11 +3490,17 @@ size_t os::reserve_memory_limit() { char* os::reserve_memory_aligned(size_t size, size_t alignment, MemTag mem_tag, bool exec) { // exec can be ignored - return map_or_reserve_memory_aligned(size, alignment, -1/* file_desc */, mem_tag); + if (is_VirtualAlloc2_supported()) { + return reserve_memory_aligned_va2(size, alignment, mem_tag); + } + return reserve_memory_aligned(size, alignment, mem_tag); } char* os::map_memory_to_file_aligned(size_t size, size_t alignment, int fd, MemTag mem_tag) { - return map_or_reserve_memory_aligned(size, alignment, fd, mem_tag); + if (is_MapViewOfFile3_supported()) { + return map_memory_aligned_va2(size, alignment, fd, mem_tag); + } + return map_memory_aligned(size, alignment, fd, mem_tag); } char* os::pd_reserve_memory(size_t bytes, bool exec) { @@ -4561,21 +4717,21 @@ jint os::init_2(void) { // Lookup SetThreadDescription - the docs state we must use runtime-linking of // kernelbase.dll, so that is what we do. - HINSTANCE _kernelbase = LoadLibrary(TEXT("kernelbase.dll")); - if (_kernelbase != nullptr) { - _SetThreadDescription = - reinterpret_cast( - GetProcAddress(_kernelbase, - "SetThreadDescription")); + _SetThreadDescription = reinterpret_cast( + os::win32::lookup_kernelbase_symbol("SetThreadDescription")); #ifdef ASSERT - _GetThreadDescription = - reinterpret_cast( - GetProcAddress(_kernelbase, - "GetThreadDescription")); + _GetThreadDescription = reinterpret_cast( + os::win32::lookup_kernelbase_symbol("GetThreadDescription")); #endif - } log_info(os, thread)("The SetThreadDescription API is%s available.", _SetThreadDescription == nullptr ? " not" : ""); + // Prepare KernelBase APIs (VirtualAlloc2, MapViewOfFile3) if available (Windows version 1803). + os::win32::VirtualAlloc2 = reinterpret_cast( + os::win32::lookup_kernelbase_symbol("VirtualAlloc2")); + os::win32::MapViewOfFile3 = reinterpret_cast( + os::win32::lookup_kernelbase_symbol("MapViewOfFile3")); + log_debug(os)("VirtualAlloc2 is%s available.", os::win32::VirtualAlloc2 == nullptr ? " not" : ""); + log_debug(os)("MapViewOfFile3 is%s available.", os::win32::MapViewOfFile3 == nullptr ? " not" : ""); return JNI_OK; } diff --git a/src/hotspot/os/windows/os_windows.hpp b/src/hotspot/os/windows/os_windows.hpp index d4a7d51c59b..5ebc80c817b 100644 --- a/src/hotspot/os/windows/os_windows.hpp +++ b/src/hotspot/os/windows/os_windows.hpp @@ -109,6 +109,19 @@ class os::win32 { // load dll from Windows system directory or Windows directory static HINSTANCE load_Windows_dll(const char* name, char *ebuf, int ebuflen); + // Resolve a symbol from KernelBase.dll, returns nullptr if not found. + static void* lookup_kernelbase_symbol(const char* name); + + // VirtualAlloc2 (since Windows version 1803) + // Resolved from KernelBase during os::init_2() or nullptr if unavailable. + typedef PVOID (WINAPI *VirtualAlloc2Fn)(HANDLE, PVOID, SIZE_T, ULONG, ULONG, MEM_EXTENDED_PARAMETER*, ULONG); + static VirtualAlloc2Fn VirtualAlloc2; + + // MapViewOfFile3 (since Windows version 1803) + // Resolved from KernelBase during os::init_2() or nullptr if unavailable. + typedef PVOID (WINAPI *MapViewOfFile3Fn)(HANDLE, HANDLE, PVOID, ULONG64, SIZE_T, ULONG, ULONG, MEM_EXTENDED_PARAMETER*, ULONG); + static MapViewOfFile3Fn MapViewOfFile3; + private: static void initialize_performance_counter(); diff --git a/src/hotspot/share/classfile/classFileParser.cpp b/src/hotspot/share/classfile/classFileParser.cpp index d5ee16fec32..770c1e8fbc1 100644 --- a/src/hotspot/share/classfile/classFileParser.cpp +++ b/src/hotspot/share/classfile/classFileParser.cpp @@ -154,6 +154,8 @@ #define JAVA_27_VERSION 71 +#define JAVA_28_VERSION 72 + void ClassFileParser::set_class_bad_constant_seen(short bad_constant) { assert((bad_constant == JVM_CONSTANT_Module || bad_constant == JVM_CONSTANT_Package) && _major_version >= JAVA_9_VERSION, diff --git a/src/hotspot/share/classfile/vmIntrinsics.cpp b/src/hotspot/share/classfile/vmIntrinsics.cpp index cec3586a50b..4a1b9ead116 100644 --- a/src/hotspot/share/classfile/vmIntrinsics.cpp +++ b/src/hotspot/share/classfile/vmIntrinsics.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -527,6 +527,10 @@ bool vmIntrinsics::disabled_by_jvm_flags(vmIntrinsics::ID id) { case vmIntrinsics::_intpoly_assign: if (!UseIntPolyIntrinsics) return true; break; + case vmIntrinsics::_intpoly_mult_25519: + case vmIntrinsics::_intpoly_square_25519: + if (!UseIntPoly25519Intrinsics) return true; + break; case vmIntrinsics::_updateBytesCRC32C: case vmIntrinsics::_updateDirectByteBufferCRC32C: if (!UseCRC32CIntrinsics) return true; diff --git a/src/hotspot/share/classfile/vmIntrinsics.hpp b/src/hotspot/share/classfile/vmIntrinsics.hpp index de4eea669a1..8833e4167f6 100644 --- a/src/hotspot/share/classfile/vmIntrinsics.hpp +++ b/src/hotspot/share/classfile/vmIntrinsics.hpp @@ -549,6 +549,13 @@ class methodHandle; do_name(intPolyAssign_name, "conditionalAssign") \ do_signature(intPolyAssign_signature, "(I[J[J)V") \ \ + /* support for sun.security.util.math.intpoly.IntegerPolynomial25519 */ \ + do_class(sun_security_util_math_intpoly_IntegerPolynomial25519, "sun/security/util/math/intpoly/IntegerPolynomial25519") \ + do_intrinsic(_intpoly_mult_25519, sun_security_util_math_intpoly_IntegerPolynomial25519, intPolyMult_name, intPolyMult_signature, F_R) \ + do_intrinsic(_intpoly_square_25519, sun_security_util_math_intpoly_IntegerPolynomial25519, intPolySquare_name, intPolySquare_signature, F_R) \ + do_name(intPolySquare_name, "square") \ + do_signature(intPolySquare_signature, "([J[J)V") \ + \ /* support for java.util.Base64.Encoder*/ \ do_class(java_util_Base64_Encoder, "java/util/Base64$Encoder") \ do_intrinsic(_base64_encodeBlock, java_util_Base64_Encoder, encodeBlock_name, encodeBlock_signature, F_R) \ diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp index d0e549c9b11..8ea880c820f 100644 --- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp +++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp @@ -729,7 +729,7 @@ HeapWord* G1CollectedHeap::attempt_allocation_humongous(size_t word_size) { result = humongous_obj_allocate(word_size); if (result != nullptr) { policy()->old_gen_alloc_tracker()-> - add_allocated_humongous_bytes_since_last_gc(humongous_byte_size); + add_allocated_humongous_bytes(humongous_byte_size); return result; } @@ -2861,7 +2861,7 @@ void G1CollectedHeap::record_obj_copy_mem_stats() { G1ReservePercent); policy()->old_gen_alloc_tracker()-> - add_allocated_bytes_since_last_gc(total_old_allocated * HeapWordSize); + add_allocated_non_humongous_bytes(total_old_allocated * HeapWordSize); _gc_tracer_stw->report_evacuation_statistics(create_g1_evac_summary(&_survivor_evac_stats), create_g1_evac_summary(&_old_evac_stats)); diff --git a/src/hotspot/share/gc/g1/g1ConcurrentCycleTracker.cpp b/src/hotspot/share/gc/g1/g1ConcurrentCycleTracker.cpp new file mode 100644 index 00000000000..ab43a693a60 --- /dev/null +++ b/src/hotspot/share/gc/g1/g1ConcurrentCycleTracker.cpp @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#include "gc/g1/g1ConcurrentCycleTracker.hpp" +#include "gc/g1/g1OldGenAllocationTracker.hpp" +#include "utilities/checkedCast.hpp" +#include "utilities/debug.hpp" + +void G1ConcurrentCycleTracker::reset() { + _state = CycleState::Inactive; + _total_pause_time_s = 0.0; + _cycle_start_time_s = 0.0; + _cycle_end_time_s = 0.0; + + _humongous_bytes_at_start = 0; + _non_humongous_allocated_bytes = 0; + _peak_extra_humongous_occupancy_bytes = 0; +} + +void G1ConcurrentCycleTracker::update_allocation_stats(G1AllocationIntervalStats interval_stats) { + if (!is_active()) { + return; + } + + _non_humongous_allocated_bytes += interval_stats._non_humongous_allocated_bytes; + + intptr_t delta_before = checked_cast(interval_stats._total_humongous_before_bytes) - + checked_cast(_humongous_bytes_at_start); + + intptr_t delta_after = delta_before + + checked_cast(interval_stats._humongous_allocated_bytes); + + if (delta_after > 0) { + _peak_extra_humongous_occupancy_bytes = MAX2(_peak_extra_humongous_occupancy_bytes, checked_cast(delta_after)); + } +} + +G1ConcurrentCycleTracker::G1ConcurrentCycleTracker() +: _state(CycleState::Inactive), + _cycle_start_time_s(0.0), + _cycle_end_time_s(0.0), + _total_pause_time_s(0.0), + _humongous_bytes_at_start(0), + _non_humongous_allocated_bytes(0), + _peak_extra_humongous_occupancy_bytes(0) +{ } + +void G1ConcurrentCycleTracker::record_cycle_start(double cycle_start_time_s, size_t humongous_bytes_after_pause) { + assert(_state == CycleState::Inactive, "Concurrent start out of order."); + _cycle_start_time_s = cycle_start_time_s; + _humongous_bytes_at_start = humongous_bytes_after_pause; + _state = CycleState::Active; +} + +void G1ConcurrentCycleTracker::record_allocation_interval(Pause pause_type, + bool is_periodic_gc, + double pause_start_time_s, + double pause_end_time_s, + G1AllocationIntervalStats interval_stats) { + if (is_periodic_gc || pause_type == Pause::Full || pause_type == Pause::ConcurrentStartUndo) { + reset(); + return; + } + + if (pause_type == Pause::ConcurrentStartFull) { + record_cycle_start(pause_end_time_s, interval_stats._total_humongous_after_bytes); + return; + } + + if (!is_active()) { + return; + } + + update_allocation_stats(interval_stats); + + if (pause_type == Pause::Mixed) { + complete_cycle(pause_start_time_s); + return; + } + + assert(pause_type == Pause::Normal || + pause_type == Pause::PrepareMixed || + pause_type == Pause::Remark || + pause_type == Pause::Cleanup, + "Unhandled pause type"); + + add_pause(pause_end_time_s - pause_start_time_s); +} + +void G1ConcurrentCycleTracker::complete_cycle(double cycle_end_time_s) { + precond(is_active()); + + _cycle_end_time_s = cycle_end_time_s; + _state = CycleState::Complete; +} + +G1ConcurrentCycleStats G1ConcurrentCycleTracker::get_and_reset_cycle_stats() { + precond(has_completed_cycle()); + + double cycle_duration = (_cycle_end_time_s - _cycle_start_time_s - _total_pause_time_s); + + G1ConcurrentCycleStats stats{ + cycle_duration, + _non_humongous_allocated_bytes, + _peak_extra_humongous_occupancy_bytes + }; + + reset(); + return stats; +} diff --git a/src/hotspot/share/gc/g1/g1ConcurrentCycleTracker.hpp b/src/hotspot/share/gc/g1/g1ConcurrentCycleTracker.hpp new file mode 100644 index 00000000000..7d575e7abcd --- /dev/null +++ b/src/hotspot/share/gc/g1/g1ConcurrentCycleTracker.hpp @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2001, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_GC_G1_G1CONCURRENTCYCLETRACKER_HPP +#define SHARE_GC_G1_G1CONCURRENTCYCLETRACKER_HPP + +#include "gc/g1/g1CollectorState.hpp" +#include "utilities/globalDefinitions.hpp" + +struct G1AllocationIntervalStats; + +// The sampling interval for G1ConcurrentCycleTracker covers the concurrent cycle +// from the end of the Concurrent Start GC to start of the first Mixed GC. +struct G1ConcurrentCycleStats { + double _cycle_duration_s; + size_t _non_humongous_allocated_bytes; + size_t _peak_extra_humongous_occupancy_bytes; + + G1ConcurrentCycleStats(double cycle_duration_s, + size_t non_humongous_allocated_bytes, + size_t peak_extra_humongous_occupancy_bytes) + : _cycle_duration_s(cycle_duration_s), + _non_humongous_allocated_bytes(non_humongous_allocated_bytes), + _peak_extra_humongous_occupancy_bytes(peak_extra_humongous_occupancy_bytes) + { } +}; + +class G1ConcurrentCycleTracker { + using Pause = G1CollectorState::Pause; + + enum class CycleState { + Inactive, + Active, + Complete, + }; + + CycleState _state; + double _cycle_start_time_s; + double _cycle_end_time_s; + double _total_pause_time_s; + + // allocation accounting + size_t _humongous_bytes_at_start; + size_t _non_humongous_allocated_bytes; + size_t _peak_extra_humongous_occupancy_bytes; + + void reset(); + + bool is_active() const { + return _state == CycleState::Active; + } + void update_allocation_stats(G1AllocationIntervalStats interval_stats); + + void add_pause(double pause_duration_s) { + _total_pause_time_s += pause_duration_s; + } + + void record_cycle_start(double cycle_start_time_s, size_t humongous_bytes_after_pause); + + void complete_cycle(double cycle_end_time_s); + + public: + G1ConcurrentCycleTracker(); + + void record_allocation_interval(Pause pause_type, + bool is_periodic_gc, + double pause_start_time_s, + double pause_end_time_s, + G1AllocationIntervalStats interval_stats); + + void abort_cycle() { + reset(); + } + + bool has_completed_cycle() const { + return _state == CycleState::Complete; + } + + size_t non_humongous_allocated_bytes() const { + return _non_humongous_allocated_bytes; + } + + size_t peak_extra_humongous_occupancy_bytes() const { + return _peak_extra_humongous_occupancy_bytes; + } + + G1ConcurrentCycleStats get_and_reset_cycle_stats(); +}; + +#endif // SHARE_GC_G1_G1CONCURRENTCYCLETRACKER_HPP diff --git a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp index 83dda2a043b..4afc7fa8ff1 100644 --- a/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp +++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.cpp @@ -714,6 +714,11 @@ private: } HeapWord* region_clear_limit(G1HeapRegion* r) { + // A garbage collection might have made the region unavailable after a yield during + // clearing. Just return bottom as the limit, causing the clearing for this region to end. + if (G1CollectedHeap::heap()->region_at_or_null(r->hrm_index()) == nullptr) { + return r->bottom(); + } // During a Concurrent Undo Mark cycle, the per region top_at_mark_start and // live_words data are current wrt to the _mark_bitmap. We use this information // to only clear ranges of the bitmap that require clearing. @@ -743,7 +748,7 @@ private: } HeapWord* cur = r->bottom(); - HeapWord* const end = region_clear_limit(r); + HeapWord* end = region_clear_limit(r); size_t const chunk_size_in_words = G1ClearBitMapTask::chunk_size() / HeapWordSize; @@ -761,8 +766,12 @@ private: assert(!suspendible() || _cm->is_in_reset_for_next_cycle(), "invariant"); // Abort iteration if necessary. - if (has_aborted()) { - return true; + if (suspendible() && _cm->do_yield_check()) { + if (_cm->has_aborted()) { + return true; + } + // Re-read end. The region might have been uncommitted. + end = region_clear_limit(r); } } assert(cur >= end, "Must have completed iteration over the bitmap for region %u.", r->hrm_index()); diff --git a/src/hotspot/share/gc/g1/g1ConcurrentStartToMixedTimeTracker.hpp b/src/hotspot/share/gc/g1/g1ConcurrentStartToMixedTimeTracker.hpp deleted file mode 100644 index f8bad4bdcd7..00000000000 --- a/src/hotspot/share/gc/g1/g1ConcurrentStartToMixedTimeTracker.hpp +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2001, 2026, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - * - */ - -#ifndef SHARE_GC_G1_G1CONCURRENTSTARTTOMIXEDTIMETRACKER_HPP -#define SHARE_GC_G1_G1CONCURRENTSTARTTOMIXEDTIMETRACKER_HPP - -#include "utilities/debug.hpp" -#include "utilities/globalDefinitions.hpp" - -// Used to track time from the end of concurrent start to the first mixed GC. -// After calling the concurrent start/mixed gc notifications, the result can be -// obtained in get_and_reset_last_marking_time() once, after which the tracking resets. -// Any pauses recorded by add_pause() will be subtracted from that results. -class G1ConcurrentStartToMixedTimeTracker { -private: - bool _active; - double _concurrent_start_end_time; - double _mixed_start_time; - double _total_pause_time; - - double wall_time() const { - return _mixed_start_time - _concurrent_start_end_time; - } -public: - G1ConcurrentStartToMixedTimeTracker() { reset(); } - - // Record concurrent start pause end, starting the time tracking. - void record_concurrent_start_end(double end_time) { - assert(!_active, "Concurrent start out of order."); - _concurrent_start_end_time = end_time; - _active = true; - } - - // Record the first mixed gc pause start, ending the time tracking. - void record_mixed_gc_start(double start_time) { - if (_active) { - _mixed_start_time = start_time; - _active = false; - } - } - - double get_and_reset_last_marking_time() { - assert(has_result(), "Do not have all measurements yet."); - double result = (_mixed_start_time - _concurrent_start_end_time) - _total_pause_time; - reset(); - return result; - } - - void reset() { - _active = false; - _total_pause_time = 0.0; - _concurrent_start_end_time = -1.0; - _mixed_start_time = -1.0; - } - - void add_pause(double time) { - if (_active) { - _total_pause_time += time; - } - } - - bool is_active() const { return _active; } - - // Returns whether we have a result that can be retrieved. - bool has_result() const { return _mixed_start_time > 0.0 && _concurrent_start_end_time > 0.0; } -}; - -#endif // SHARE_GC_G1_G1CONCURRENTSTARTTOMIXEDTIMETRACKER_HPP diff --git a/src/hotspot/share/gc/g1/g1IHOPControl.cpp b/src/hotspot/share/gc/g1/g1IHOPControl.cpp index 164486123f7..782cdadc13b 100644 --- a/src/hotspot/share/gc/g1/g1IHOPControl.cpp +++ b/src/hotspot/share/gc/g1/g1IHOPControl.cpp @@ -31,19 +31,14 @@ double G1IHOPControl::predict(const TruncatedSeq* seq) const { assert(_is_adaptive, "precondition"); assert(_predictor != nullptr, "precondition"); - - return _predictor->predict_zero_bounded(seq); + return _predictor->predict_zero_bounded(seq); } bool G1IHOPControl::have_enough_data_for_prediction() const { assert(_is_adaptive, "precondition"); return ((size_t)_marking_start_to_mixed_time_s.num() >= G1AdaptiveIHOPNumInitialSamples) && - ((size_t)_old_gen_alloc_rate.num() >= G1AdaptiveIHOPNumInitialSamples); -} - -double G1IHOPControl::last_marking_start_to_mixed_time_s() const { - return _marking_start_to_mixed_time_s.last(); + ((size_t)_old_non_humongous_alloc_rate.num() >= G1AdaptiveIHOPNumInitialSamples); } size_t G1IHOPControl::effective_target_occupancy() const { @@ -66,7 +61,6 @@ size_t G1IHOPControl::effective_target_occupancy() const { } G1IHOPControl::G1IHOPControl(double ihop_percent, - const G1OldGenAllocationTracker* old_gen_alloc_tracker, bool adaptive, const G1Predictions* predictor, size_t heap_reserve_percent, @@ -76,11 +70,10 @@ G1IHOPControl::G1IHOPControl(double ihop_percent, _target_occupancy(0), _heap_reserve_percent(heap_reserve_percent), _heap_waste_percent(heap_waste_percent), - _last_allocation_time_s(0.0), - _old_gen_alloc_tracker(old_gen_alloc_tracker), _predictor(predictor), _marking_start_to_mixed_time_s(10, 0.05), - _old_gen_alloc_rate(10, 0.05), + _old_non_humongous_alloc_rate(10, 0.05), + _peak_extra_humongous_occupancy_in_mark_cycle(10, 0.05), _expected_young_gen_at_first_mixed_gc(0) { assert(_initial_ihop_percent >= 0.0 && _initial_ihop_percent <= 100.0, "IHOP percent out of range: %.3f", ihop_percent); @@ -93,22 +86,28 @@ void G1IHOPControl::update_target_occupancy(size_t new_target_occupancy) { _target_occupancy = new_target_occupancy; } -void G1IHOPControl::report_statistics(G1NewTracer* new_tracer, size_t non_young_occupancy) { - print_log(non_young_occupancy); - send_trace_event(new_tracer, non_young_occupancy); +void G1IHOPControl::report_statistics(G1NewTracer* new_tracer, + size_t non_young_occupancy, + size_t non_humongous_allocation, + size_t peak_extra_humongous_occupancy) { + print_log(non_young_occupancy, non_humongous_allocation, peak_extra_humongous_occupancy); + send_trace_event(new_tracer, non_young_occupancy, + non_humongous_allocation, peak_extra_humongous_occupancy); } -void G1IHOPControl::update_allocation_info(double allocation_time_s, size_t expected_young_gen_size) { - assert(allocation_time_s > 0, "Invalid allocation time: %.3f", allocation_time_s); - _last_allocation_time_s = allocation_time_s; - double alloc_rate = _old_gen_alloc_tracker->last_period_old_gen_growth() / allocation_time_s; - _old_gen_alloc_rate.add(alloc_rate); +void G1IHOPControl::record_expected_young_gen_size(size_t expected_young_gen_size) { _expected_young_gen_at_first_mixed_gc = expected_young_gen_size; } -void G1IHOPControl::add_marking_start_to_mixed_length(double length_s) { - assert(length_s >= 0.0, "Invalid marking length: %.3f", length_s); - _marking_start_to_mixed_time_s.add(length_s); +void G1IHOPControl::record_concurrent_cycle(double marking_start_to_mixed_time_s, + size_t non_humongous_bytes, + size_t peak_extra_humongous_occupancy_bytes) { + assert(marking_start_to_mixed_time_s > 0.0, "Invalid concurrent cycle duration: %.3f", marking_start_to_mixed_time_s); + + double non_humongous_rate = non_humongous_bytes / marking_start_to_mixed_time_s; + _marking_start_to_mixed_time_s.add(marking_start_to_mixed_time_s); + _old_non_humongous_alloc_rate.add(non_humongous_rate); + _peak_extra_humongous_occupancy_in_mark_cycle.add(peak_extra_humongous_occupancy_bytes); } // Determine the old generation occupancy threshold at which to start @@ -121,80 +120,93 @@ size_t G1IHOPControl::old_gen_threshold_for_conc_mark_start() const { return (size_t)(_initial_ihop_percent * _target_occupancy / 100.0); } - // During the time between marking start and the first Mixed GC, - // additional memory will be consumed: - // - Old gen grows due to allocations: - // old_gen_alloc_bytes = old_gen_alloc_rate * marking_start_to_mixed_time - // - Young gen will occupy a certain size at the first Mixed GC: - // expected_young_gen_at_first_mixed_gc - double marking_start_to_mixed_time = predict(&_marking_start_to_mixed_time_s); - double old_gen_alloc_rate = predict(&_old_gen_alloc_rate); - size_t old_gen_alloc_bytes = (size_t)(marking_start_to_mixed_time * old_gen_alloc_rate); - - // Therefore, the total heap occupancy at the first Mixed GC is: - // current_old_gen + old_gen_growth + expected_young_gen_at_first_mixed_gc + // Between Concurrent Start GC and the first Mixed GC (i.e. concurrent cycle), + // we expect extra heap occupancy from three sources: + // - non-humongous allocations into the old-gen + // - peak extra humongous occupancy during the cycle, relative to the humongous occupancy + // at the end of the Concurrent Start GC. + // - we also wish to maintain the current desired young generation until the first Mixed-gc; + // promotions into the old gen should not shrink the young gen and degrade performance. // - // To ensure this does not exceed the target_heap_occupancy, we work - // backwards to compute the old gen occupancy at which marking must start: - // mark_start_threshold = target_heap_occupancy - - // (old_gen_growth + expected_young_gen_at_first_mixed_gc) + // We therefore start marking early enough such that: + // + // old_gen_at_concurrent_start + + // predicted_non_hum_old_growth + + // predicted_peak_extra_humongous_occupancy + + // expected_young_gen_at_first_mixed_gc + // + // stays below the effective target occupancy. + double marking_start_to_mixed_time = predict(&_marking_start_to_mixed_time_s); + double old_non_humongous_alloc_rate = predict(&_old_non_humongous_alloc_rate); + size_t old_non_humongous_alloc_bytes = (size_t)(marking_start_to_mixed_time * old_non_humongous_alloc_rate); - size_t predicted_needed = old_gen_alloc_bytes + _expected_young_gen_at_first_mixed_gc; + size_t predicted_peak_extra_humongous_occupancy = + predict(&_peak_extra_humongous_occupancy_in_mark_cycle); + + size_t reserve_for_young_regions = _expected_young_gen_at_first_mixed_gc; size_t target_heap_occupancy = effective_target_occupancy(); - return predicted_needed < target_heap_occupancy - ? target_heap_occupancy - predicted_needed - : 0; + size_t needed_for_concurrent_cycle = reserve_for_young_regions + + old_non_humongous_alloc_bytes + + predicted_peak_extra_humongous_occupancy; + + size_t threshold = needed_for_concurrent_cycle < target_heap_occupancy ? + target_heap_occupancy - needed_for_concurrent_cycle : 0; + return threshold; } -void G1IHOPControl::print_log(size_t non_young_occupancy) { +void G1IHOPControl::print_log(size_t non_young_occupancy, + size_t non_humongous_allocation, + size_t peak_extra_humongous_occupancy) { assert(_target_occupancy > 0, "Target occupancy still not updated yet."); size_t old_gen_mark_start_threshold = old_gen_threshold_for_conc_mark_start(); - log_debug(gc, ihop)("Basic information (value update), old-gen threshold: %zuB (%1.2f%%), target occupancy: %zuB, old-gen occupancy: %zuB (%1.2f%%), " - "recent old-gen allocation size: %zuB, recent allocation duration: %1.2fms, recent old-gen allocation rate: %1.2fB/s, recent marking phase length: %1.2fms", + log_debug(gc, ihop)("Basic information (value update), old-gen threshold: %zuB (%1.2f%%), target occupancy: %zuB, old-gen occupancy: %zuB (%1.2f%%)", old_gen_mark_start_threshold, percent_of(old_gen_mark_start_threshold, _target_occupancy), _target_occupancy, non_young_occupancy, - percent_of(non_young_occupancy, _target_occupancy), - _old_gen_alloc_tracker->last_period_old_gen_bytes(), - _last_allocation_time_s * 1000.0, - _last_allocation_time_s > 0.0 ? _old_gen_alloc_tracker->last_period_old_gen_bytes() / _last_allocation_time_s : 0.0, - last_marking_start_to_mixed_time_s() * 1000.0); + percent_of(non_young_occupancy, _target_occupancy)); - if (!_is_adaptive) { + if (!_is_adaptive || !have_enough_data_for_prediction()) { return; } size_t effective_target = effective_target_occupancy(); - log_debug(gc, ihop)("Adaptive IHOP information (value update), prediction active: %s, old-gen threshold: %zuB (%1.2f%%), internal target occupancy: %zuB, " - "old-gen occupancy: %zuB, additional buffer size: %zuB, predicted old-gen allocation rate: %1.2fB/s, " - "predicted marking phase length: %1.2fms", - BOOL_TO_STR(have_enough_data_for_prediction()), + log_debug(gc, ihop)("Adaptive IHOP information (value update), old-gen threshold: %zuB (%1.2f%%), internal target occupancy: %zuB, " + "old-gen occupancy: %zuB (%1.2f%%), additional buffer size: %zuB, " + "current non-humongous allocation: %zuB, current peak extra humongous occupancy: %zuB, " + "predicted old-gen non-humongous allocation rate: %1.2fB/s, predicted peak extra humongous occupancy: %1.2fB, " + "predicted concurrent cycle duration: %1.2fms", old_gen_mark_start_threshold, percent_of(old_gen_mark_start_threshold, effective_target), effective_target, non_young_occupancy, + percent_of(non_young_occupancy, effective_target), _expected_young_gen_at_first_mixed_gc, - predict(&_old_gen_alloc_rate), + non_humongous_allocation, peak_extra_humongous_occupancy, + predict(&_old_non_humongous_alloc_rate), + predict(&_peak_extra_humongous_occupancy_in_mark_cycle), predict(&_marking_start_to_mixed_time_s) * 1000.0); } -void G1IHOPControl::send_trace_event(G1NewTracer* tracer, size_t non_young_occupancy) { +void G1IHOPControl::send_trace_event(G1NewTracer* tracer, + size_t non_young_occupancy, + size_t non_humongous_allocation, + size_t peak_extra_humongous_occupancy) { assert(_target_occupancy > 0, "Target occupancy still not updated yet."); tracer->report_basic_ihop_statistics(old_gen_threshold_for_conc_mark_start(), _target_occupancy, - non_young_occupancy, - _old_gen_alloc_tracker->last_period_old_gen_bytes(), - _last_allocation_time_s, - last_marking_start_to_mixed_time_s()); + non_young_occupancy); if (_is_adaptive) { tracer->report_adaptive_ihop_statistics(old_gen_threshold_for_conc_mark_start(), effective_target_occupancy(), non_young_occupancy, _expected_young_gen_at_first_mixed_gc, - predict(&_old_gen_alloc_rate), + non_humongous_allocation, + peak_extra_humongous_occupancy, + predict(&_old_non_humongous_alloc_rate), + predict(&_peak_extra_humongous_occupancy_in_mark_cycle), predict(&_marking_start_to_mixed_time_s), have_enough_data_for_prediction()); } diff --git a/src/hotspot/share/gc/g1/g1IHOPControl.hpp b/src/hotspot/share/gc/g1/g1IHOPControl.hpp index 2836408978b..df92f31065f 100644 --- a/src/hotspot/share/gc/g1/g1IHOPControl.hpp +++ b/src/hotspot/share/gc/g1/g1IHOPControl.hpp @@ -25,7 +25,6 @@ #ifndef SHARE_GC_G1_G1IHOPCONTROL_HPP #define SHARE_GC_G1_G1IHOPCONTROL_HPP -#include "gc/g1/g1OldGenAllocationTracker.hpp" #include "memory/allocation.hpp" #include "utilities/numberSeq.hpp" @@ -53,16 +52,15 @@ class G1IHOPControl : public CHeapObj { // Percentage of free heap that should be considered as waste. const size_t _heap_waste_percent; - // Most recent complete mutator allocation period in seconds. - double _last_allocation_time_s; - const G1OldGenAllocationTracker* _old_gen_alloc_tracker; - const G1Predictions* _predictor; // Wall-clock time in seconds from marking start to the first mixed GC, // excluding GC Pause time. TruncatedSeq _marking_start_to_mixed_time_s; - // Old generation allocation rate in bytes per second. - TruncatedSeq _old_gen_alloc_rate; + // Track old-generation allocations during a concurrent cycle: end of the + // Concurrent Start to the first Mixed GC. + // These values are used only when G1UseAdaptiveIHOP is enabled. + TruncatedSeq _old_non_humongous_alloc_rate; + TruncatedSeq _peak_extra_humongous_occupancy_in_mark_cycle; // The most recent unrestrained size of the young gen. This is used as an additional // factor in the calculation of the threshold, as the threshold is based on @@ -77,19 +75,23 @@ class G1IHOPControl : public CHeapObj { double predict(const TruncatedSeq* seq) const; bool have_enough_data_for_prediction() const; - double last_marking_start_to_mixed_time_s() const; // The "effective" target occupancy the algorithm wants to keep until the start // of Mixed GCs. This is typically lower than the target occupancy, as the // algorithm needs to consider restrictions by the environment. size_t effective_target_occupancy() const; - void print_log(size_t non_young_occupancy); - void send_trace_event(G1NewTracer* tracer, size_t non_young_occupancy); + void print_log(size_t non_young_occupancy, + size_t non_humongous_allocation, + size_t peak_extra_humongous_occupancy); + + void send_trace_event(G1NewTracer* tracer, + size_t non_young_occupancy, + size_t non_humongous_allocation, + size_t peak_extra_humongous_occupancy); public: G1IHOPControl(double ihop_percent, - const G1OldGenAllocationTracker* old_gen_alloc_tracker, bool adaptive, const G1Predictions* predictor, size_t heap_reserve_percent, @@ -98,26 +100,23 @@ class G1IHOPControl : public CHeapObj { // Adjust target occupancy. void update_target_occupancy(size_t new_target_occupancy); - void update_target_after_marking_phase(); - - // Update allocation rate information and current expected young gen size for the - // first mixed gc needed for the predictor. Allocation rate is given as the - // separately passed in allocation increment and the time passed (mutator time) - // for the latest allocation increment here. Allocation size is the memory needed - // during the mutator before and the first mixed gc pause itself. + // Updates expected young gen size for the first mixed gc needed for the predictor. // Contents include young gen at that point, and the memory required for evacuating // the collection set in that first mixed gc (including waste caused by PLAB // allocation etc.). - void update_allocation_info(double allocation_time_s, size_t expected_young_gen_size); + void record_expected_young_gen_size(size_t expected_young_gen_size); - // Update the time spent in the mutator beginning from the end of concurrent start to - // the first mixed gc. - void add_marking_start_to_mixed_length(double length_s); + void record_concurrent_cycle(double marking_start_to_mixed_time_s, + size_t non_humongous_bytes, + size_t peak_extra_humongous_occupancy); // Get the current non-young occupancy at which concurrent marking should start. size_t old_gen_threshold_for_conc_mark_start() const; - void report_statistics(G1NewTracer* tracer, size_t non_young_occupancy); + void report_statistics(G1NewTracer* tracer, + size_t non_young_occupancy, + size_t non_humongous_allocation, + size_t peak_extra_humongous_occupancy); }; #endif // SHARE_GC_G1_G1IHOPCONTROL_HPP diff --git a/src/hotspot/share/gc/g1/g1OldGenAllocationTracker.cpp b/src/hotspot/share/gc/g1/g1OldGenAllocationTracker.cpp index ec3d39d7e50..7355a40c348 100644 --- a/src/hotspot/share/gc/g1/g1OldGenAllocationTracker.cpp +++ b/src/hotspot/share/gc/g1/g1OldGenAllocationTracker.cpp @@ -26,36 +26,43 @@ #include "logging/log.hpp" G1OldGenAllocationTracker::G1OldGenAllocationTracker() : - _last_period_old_gen_bytes(0), - _last_period_old_gen_growth(0), - _humongous_bytes_after_last_gc(0), - _allocated_bytes_since_last_gc(0), - _allocated_humongous_bytes_since_last_gc(0) { + _humongous_bytes_after_last_pause(0), + _allocated_non_humongous_bytes_since_last_pause(0), + _allocated_humongous_bytes_since_last_pause(0) { } -void G1OldGenAllocationTracker::reset_after_gc(size_t humongous_bytes_after_gc) { +G1AllocationIntervalStats G1OldGenAllocationTracker::end_allocation_interval(size_t humongous_bytes_after_pause) { // Calculate actual increase in old, taking eager reclaim into consideration. - size_t last_period_humongous_increase = 0; - if (humongous_bytes_after_gc > _humongous_bytes_after_last_gc) { - last_period_humongous_increase = humongous_bytes_after_gc - _humongous_bytes_after_last_gc; - assert(last_period_humongous_increase <= _allocated_humongous_bytes_since_last_gc, + size_t last_interval_humongous_increase = 0; + if (humongous_bytes_after_pause > _humongous_bytes_after_last_pause) { + last_interval_humongous_increase = humongous_bytes_after_pause - _humongous_bytes_after_last_pause; + assert(last_interval_humongous_increase <= _allocated_humongous_bytes_since_last_pause, "Increase larger than allocated %zu <= %zu", - last_period_humongous_increase, _allocated_humongous_bytes_since_last_gc); + last_interval_humongous_increase, _allocated_humongous_bytes_since_last_pause); } - _last_period_old_gen_growth = _allocated_bytes_since_last_gc + last_period_humongous_increase; - // Calculate and record needed values. - _last_period_old_gen_bytes = _allocated_bytes_since_last_gc + _allocated_humongous_bytes_since_last_gc; - _humongous_bytes_after_last_gc = humongous_bytes_after_gc; + size_t last_interval_old_gen_growth = _allocated_non_humongous_bytes_since_last_pause + + last_interval_humongous_increase; - log_debug(gc, alloc, stats)("Old generation allocation in the last mutator period, " + G1AllocationIntervalStats allocation_interval_stats{ + _allocated_non_humongous_bytes_since_last_pause, + _allocated_humongous_bytes_since_last_pause, + _humongous_bytes_after_last_pause, + humongous_bytes_after_pause + }; + + _humongous_bytes_after_last_pause = humongous_bytes_after_pause; + + log_debug(gc, alloc, stats)("Old generation allocation in the last allocation interval, " "old gen allocated: %zuB, humongous allocated: %zuB, " "old gen growth: %zuB.", - _allocated_bytes_since_last_gc, - _allocated_humongous_bytes_since_last_gc, - _last_period_old_gen_growth); + _allocated_non_humongous_bytes_since_last_pause, + _allocated_humongous_bytes_since_last_pause, + last_interval_old_gen_growth); - // Reset for next mutator period. - _allocated_bytes_since_last_gc = 0; - _allocated_humongous_bytes_since_last_gc = 0; + // Reset for the next interval. + _allocated_non_humongous_bytes_since_last_pause = 0; + _allocated_humongous_bytes_since_last_pause = 0; + + return allocation_interval_stats; } diff --git a/src/hotspot/share/gc/g1/g1OldGenAllocationTracker.hpp b/src/hotspot/share/gc/g1/g1OldGenAllocationTracker.hpp index aa5e3c6c942..218f65cf7c1 100644 --- a/src/hotspot/share/gc/g1/g1OldGenAllocationTracker.hpp +++ b/src/hotspot/share/gc/g1/g1OldGenAllocationTracker.hpp @@ -22,46 +22,71 @@ * */ -#ifndef SHARE_VM_GC_G1_G1OLDGENALLOCATIONTRACKER_HPP -#define SHARE_VM_GC_G1_G1OLDGENALLOCATIONTRACKER_HPP +#ifndef SHARE_GC_G1_G1OLDGENALLOCATIONTRACKER_HPP +#define SHARE_GC_G1_G1OLDGENALLOCATIONTRACKER_HPP -#include "gc/g1/g1HeapRegion.hpp" #include "memory/allocation.hpp" +// Allocation statistics for an allocation interval, i.e. the interval between two +// consecutive STW pauses. +// +// The allocation counters record allocations made during that interval. +// +// _total_humongous_before_bytes is the humongous occupancy after the previous +// pause (at the start of the allocation interval). +// +// _total_humongous_after_bytes is the humongous occupancy after the current +// pause (at the end of the allocation interval). +struct G1AllocationIntervalStats { + size_t _non_humongous_allocated_bytes; + size_t _humongous_allocated_bytes; + size_t _total_humongous_before_bytes; + size_t _total_humongous_after_bytes; + + G1AllocationIntervalStats(size_t non_humongous_allocated_bytes, + size_t humongous_allocated_bytes, + size_t total_humongous_before_bytes, + size_t total_humongous_after_bytes) + : _non_humongous_allocated_bytes(non_humongous_allocated_bytes), + _humongous_allocated_bytes(humongous_allocated_bytes), + _total_humongous_before_bytes(total_humongous_before_bytes), + _total_humongous_after_bytes(total_humongous_after_bytes) + { } + + void record_humongous_allocation(size_t humongous_allocation_bytes) { + _humongous_allocated_bytes += humongous_allocation_bytes; + _total_humongous_after_bytes += humongous_allocation_bytes; + } +}; + // Track allocation details in the old generation. class G1OldGenAllocationTracker : public CHeapObj { - // Total number of bytes allocated in the old generation at the end - // of the last gc. - size_t _last_period_old_gen_bytes; - // Total growth of the old geneneration since the last gc, - // taking eager-reclaim into consideration. - size_t _last_period_old_gen_growth; + // Total size of humongous objects after the last STW pause. + size_t _humongous_bytes_after_last_pause; - // Total size of humongous objects for last gc. - size_t _humongous_bytes_after_last_gc; - - // Non-humongous old generation allocations since the last gc. - size_t _allocated_bytes_since_last_gc; - // Humongous allocations during last mutator period. - size_t _allocated_humongous_bytes_since_last_gc; + // Non-humongous old generation allocations since the last STW pause. + size_t _allocated_non_humongous_bytes_since_last_pause; + // Humongous allocations during last allocation interval. + size_t _allocated_humongous_bytes_since_last_pause; public: G1OldGenAllocationTracker(); - void add_allocated_bytes_since_last_gc(size_t bytes) { _allocated_bytes_since_last_gc += bytes; } - void add_allocated_humongous_bytes_since_last_gc(size_t bytes) { _allocated_humongous_bytes_since_last_gc += bytes; } - - // Record a humongous allocation in a collection pause. This allocation - // is accounted to the previous mutator period. - void record_collection_pause_humongous_allocation(size_t bytes) { - _humongous_bytes_after_last_gc += bytes; + void add_allocated_non_humongous_bytes(size_t bytes) { + _allocated_non_humongous_bytes_since_last_pause += bytes; + } + void add_allocated_humongous_bytes(size_t bytes) { + _allocated_humongous_bytes_since_last_pause += bytes; } - size_t last_period_old_gen_bytes() const { return _last_period_old_gen_bytes; } - size_t last_period_old_gen_growth() const { return _last_period_old_gen_growth; }; + // Record a humongous allocation in a collection pause. This allocation + // is accounted to the previous allocation interval. + void record_collection_pause_humongous_allocation(size_t bytes) { + _humongous_bytes_after_last_pause += bytes; + } - // Calculates and resets stats after a collection. - void reset_after_gc(size_t humongous_bytes_after_gc); + // Calculate and reset allocation statistics after a pause. + G1AllocationIntervalStats end_allocation_interval(size_t humongous_bytes_after_pause); }; -#endif // SHARE_VM_GC_G1_G1OLDGENALLOCATIONTRACKER_HPP +#endif // SHARE_GC_G1_G1OLDGENALLOCATIONTRACKER_HPP diff --git a/src/hotspot/share/gc/g1/g1Policy.cpp b/src/hotspot/share/gc/g1/g1Policy.cpp index f9e084248b9..35211938065 100644 --- a/src/hotspot/share/gc/g1/g1Policy.cpp +++ b/src/hotspot/share/gc/g1/g1Policy.cpp @@ -55,8 +55,9 @@ G1Policy::G1Policy(STWGCTimer* gc_timer) : _analytics(new G1Analytics(&_predictor)), _remset_tracker(), _mmu_tracker(new G1MMUTracker(GCPauseIntervalMillis / 1000.0, MaxGCPauseMillis / 1000.0)), + _concurrent_cycle_tracker(), _old_gen_alloc_tracker(), - _ihop_control(create_ihop_control(&_old_gen_alloc_tracker, &_predictor)), + _ihop_control(create_ihop_control(&_predictor)), _policy_counters(new GCPolicyCounters("GarbageFirst", 1, 2)), _cur_pause_start_sec(0.0), _young_list_desired_length(0), @@ -68,7 +69,6 @@ G1Policy::G1Policy(STWGCTimer* gc_timer) : _young_gen_sizer(), _free_regions_at_end_of_collection(0), _pending_cards_from_gc(0), - _concurrent_start_to_mixed(), _collection_set(nullptr), _g1h(nullptr), _phase_times_timer(gc_timer), @@ -160,7 +160,7 @@ void G1Policy::record_new_heap_size(uint new_number_of_regions) { double reserve_regions_d = (double) new_number_of_regions * _reserve_factor; // We use ceiling so that if reserve_regions_d is > 0.0 (but // smaller than 1.0) we'll get 1. - _reserve_regions = (uint) ceil(reserve_regions_d); + _reserve_regions.store_relaxed((uint) ceil(reserve_regions_d)); _young_gen_sizer.heap_size_changed(new_number_of_regions); @@ -186,8 +186,22 @@ void G1Policy::update_young_length_bounds() { void G1Policy::update_young_length_bounds(size_t pending_cards, size_t card_rs_length, size_t code_root_rs_length) { uint old_young_list_target_length = young_list_target_length(); - uint new_young_list_desired_length = calculate_young_desired_length(pending_cards, card_rs_length, code_root_rs_length); - uint new_young_list_target_length = calculate_young_target_length(new_young_list_desired_length); + uint min_young_length_by_sizer = _young_gen_sizer.min_desired_young_length(); + uint max_young_length_by_sizer = _young_gen_sizer.max_desired_young_length(); + + if (max_young_length_by_sizer < min_young_length_by_sizer) { + // This can happen due to races with heap_size_changed() at mutator time. Do not update the young gen + // lengths. Will be updated on the next regular call anyway. + assert(!SafepointSynchronize::is_at_safepoint(), "must be"); + return; + } + + uint new_young_list_desired_length = calculate_young_desired_length(pending_cards, + card_rs_length, + code_root_rs_length, + min_young_length_by_sizer, + max_young_length_by_sizer); + uint new_young_list_target_length = calculate_young_target_length(new_young_list_desired_length, min_young_length_by_sizer); log_trace(gc, ergo, heap)("Young list length update: pending cards %zu card_rs_length %zu old target %u desired: %u target: %u", pending_cards, @@ -224,9 +238,9 @@ void G1Policy::update_young_length_bounds(size_t pending_cards, size_t card_rs_l // uint G1Policy::calculate_young_desired_length(size_t pending_cards, size_t card_rs_length, - size_t code_root_rs_length) const { - uint min_young_length_by_sizer = _young_gen_sizer.min_desired_young_length(); - uint max_young_length_by_sizer = _young_gen_sizer.max_desired_young_length(); + size_t code_root_rs_length, + uint min_young_length_by_sizer, + uint max_young_length_by_sizer) const { assert(min_young_length_by_sizer >= 1, "invariant"); assert(max_young_length_by_sizer >= min_young_length_by_sizer, "invariant"); @@ -302,7 +316,7 @@ uint G1Policy::calculate_young_desired_length(size_t pending_cards, // Limit the desired (wished) young length by current free regions. If the request // can be satisfied without using up reserve regions, do so, otherwise eat into // the reserve, giving away at most what the heap sizer allows. -uint G1Policy::calculate_young_target_length(uint desired_young_length) const { +uint G1Policy::calculate_young_target_length(uint desired_young_length, uint min_young_length_by_sizer) const { uint allocated_young_length = _g1h->young_regions_count(); uint receiving_additional_eden; @@ -319,8 +333,14 @@ uint G1Policy::calculate_young_target_length(uint desired_young_length) const { // do, we at most eat the sizer's minimum regions into the reserve or half the // reserve rounded up (if possible; this is an arbitrary value). - uint max_to_eat_into_reserve = MIN2(_young_gen_sizer.min_desired_young_length(), - (_reserve_regions + 1) / 2); + // The heap reserve needs to be snapshotted for consistent use in the following. + // It can be concurrently modified by the mutator as it expands the heap. It can + // only increase at that time, so this is a conservative snapshot. So at worst this + // method will return a too small young gen length in that case. + uint reserve_regions = _reserve_regions.load_relaxed(); + + uint max_to_eat_into_reserve = MIN2(min_young_length_by_sizer, + (reserve_regions + 1) / 2); log_trace(gc, ergo, heap)("Young target length: Common " "free regions at end of collection %u " @@ -329,14 +349,14 @@ uint G1Policy::calculate_young_target_length(uint desired_young_length) const { "max to eat into reserve %u", _free_regions_at_end_of_collection, desired_young_length, - _reserve_regions, + reserve_regions, max_to_eat_into_reserve); uint survivor_regions_count = _g1h->survivor_regions_count(); uint desired_eden_length = desired_young_length - survivor_regions_count; uint allocated_eden_length = allocated_young_length - survivor_regions_count; - if (_free_regions_at_end_of_collection <= _reserve_regions) { + if (_free_regions_at_end_of_collection <= reserve_regions) { // Fully eat (or already eating) into the reserve, hand back at most absolute_min_length regions. uint receiving_eden = MIN3(_free_regions_at_end_of_collection, desired_eden_length, @@ -351,9 +371,9 @@ uint G1Policy::calculate_young_target_length(uint desired_young_length) const { log_trace(gc, ergo, heap)("Young target length: Fully eat into reserve " "receiving eden %u receiving additional eden %u", receiving_eden, receiving_additional_eden); - } else if (_free_regions_at_end_of_collection < (desired_eden_length + _reserve_regions)) { + } else if (_free_regions_at_end_of_collection < (desired_eden_length + reserve_regions)) { // Partially eat into the reserve, at most max_to_eat_into_reserve regions. - uint free_outside_reserve = _free_regions_at_end_of_collection - _reserve_regions; + uint free_outside_reserve = _free_regions_at_end_of_collection - reserve_regions; assert(free_outside_reserve < desired_eden_length, "must be %u %u", free_outside_reserve, desired_eden_length); @@ -569,6 +589,7 @@ void G1Policy::record_full_collection_end(size_t allocation_word_size) { // Consider this like a collection pause for the purposes of allocation // since last pause. double end_sec = os::elapsedTime(); + double start_time_sec = cur_pause_start_sec(); // "Nuke" the heuristics that control the young/mixed GC // transitions and make sure we start with young GCs after the Full GC. @@ -582,9 +603,6 @@ void G1Policy::record_full_collection_end(size_t allocation_word_size) { _survivor_surv_rate_group->reset(); update_young_length_bounds(); - _old_gen_alloc_tracker.reset_after_gc(_g1h->humongous_regions_count() * G1HeapRegion::GrainBytes); - - double start_time_sec = cur_pause_start_sec(); record_pause(Pause::Full, start_time_sec, end_sec); } @@ -934,8 +952,6 @@ G1CollectorState G1Policy::record_young_collection_end(bool concurrent_operation phase_times()->sum_thread_work_items(G1GCPhaseTimes::MergePSS, G1GCPhaseTimes::MergePSSToYoungGenCards)); } - record_pause(collector_state()->gc_pause_type(concurrent_operation_is_full_mark), start_time_sec, end_time_sec); - if (collector_state()->is_in_prepare_mixed_gc()) { assert(!collector_state()->is_in_concurrent_start_gc(), "The young GC before mixed is not allowed to be concurrent start GC"); @@ -968,23 +984,27 @@ G1CollectorState G1Policy::record_young_collection_end(bool concurrent_operation _free_regions_at_end_of_collection = _g1h->num_free_regions(); - _old_gen_alloc_tracker.reset_after_gc(_g1h->humongous_regions_count() * G1HeapRegion::GrainBytes); + Pause this_pause = collector_state()->gc_pause_type(concurrent_operation_is_full_mark); + size_t humongous_allocation_bytes = G1CollectedHeap::is_humongous(allocation_word_size) ? + G1CollectedHeap::allocation_used_bytes(allocation_word_size) : 0; + + record_pause(this_pause, start_time_sec, end_time_sec, humongous_allocation_bytes); // Do not update dynamic IHOP due to G1 periodic collection as it is highly likely // that in this case we are not running in a "normal" operating mode. if (_g1h->gc_cause() != GCCause::_g1_periodic_collection) { update_young_length_bounds(); + // Take snapshots of these values here as update_ihop_prediction + // may complete the concurrent cycle and reset the values. + size_t non_humongous_allocation = _concurrent_cycle_tracker.non_humongous_allocated_bytes(); + size_t peak_extra_humongous_occupancy = _concurrent_cycle_tracker.peak_extra_humongous_occupancy_bytes(); + if (update_ihop_prediction(app_time_ms / 1000.0, is_young_only_pause)) { - _ihop_control->report_statistics(_g1h->gc_tracer_stw(), _g1h->non_young_occupancy_after_allocation(allocation_word_size)); + _ihop_control->report_statistics(_g1h->gc_tracer_stw(), + _g1h->non_young_occupancy_after_allocation(allocation_word_size), + non_humongous_allocation, + peak_extra_humongous_occupancy); } - } else { - // Any garbage collection triggered as periodic collection resets the time-to-mixed - // measurement. Periodic collection typically means that the application is "inactive", i.e. - // the marking threads may have received an uncharacteristic amount of cpu time - // for completing the marking, i.e. are faster than expected. - // This skews the predicted marking length towards smaller values which might cause - // the mark start being too late. - abort_time_to_mixed_tracking(); } // Note that _mmu_tracker->max_gc_time() returns the time in seconds. @@ -1012,10 +1032,8 @@ G1CollectorState G1Policy::record_young_collection_end(bool concurrent_operation return next_state; } -G1IHOPControl* G1Policy::create_ihop_control(const G1OldGenAllocationTracker* old_gen_alloc_tracker, - const G1Predictions* predictor) { +G1IHOPControl* G1Policy::create_ihop_control(const G1Predictions* predictor) { return new G1IHOPControl(G1IHOP, - old_gen_alloc_tracker, G1UseAdaptiveIHOP, predictor, G1ReservePercent, @@ -1032,29 +1050,31 @@ bool G1Policy::update_ihop_prediction(double mutator_time_s, double const min_valid_time = 1e-6; bool report = false; + if (!this_gc_was_young_only && _concurrent_cycle_tracker.has_completed_cycle()) { + G1ConcurrentCycleStats cycle_stats = _concurrent_cycle_tracker.get_and_reset_cycle_stats(); - if (!this_gc_was_young_only && _concurrent_start_to_mixed.has_result()) { - double marking_to_mixed_time = _concurrent_start_to_mixed.get_and_reset_last_marking_time(); - assert(marking_to_mixed_time > 0.0, - "Concurrent start to mixed time must be larger than zero but is %.3f", - marking_to_mixed_time); - if (marking_to_mixed_time > min_valid_time) { - _ihop_control->add_marking_start_to_mixed_length(marking_to_mixed_time); + double concurrent_cycle_duration_s = cycle_stats._cycle_duration_s; + assert(concurrent_cycle_duration_s > 0.0, + "Time for Concurrent Start GC to the first Mixed GC must be larger than zero but is %.3f", + concurrent_cycle_duration_s); + if (concurrent_cycle_duration_s > min_valid_time) { + _ihop_control->record_concurrent_cycle(concurrent_cycle_duration_s, + cycle_stats._non_humongous_allocated_bytes, + cycle_stats._peak_extra_humongous_occupancy_bytes); report = true; } } - // As an approximation for the young gc promotion rates during marking we use - // all of them. In many applications there are only a few if any young gcs during - // marking, which makes any prediction useless. This increases the accuracy of the - // prediction. + // The second clause prevents skewing the IHOP prediction with (typically) degenerate + // back-to-back young-gen-size samples. if (this_gc_was_young_only && mutator_time_s > min_valid_time) { // IHOP control wants to know the expected young gen length if it were not // restrained by the heap reserve. Using the actual length would make the // prediction too small and the limit the young gen every time we get to the // predicted target occupancy. size_t young_gen_size = young_list_desired_length() * G1HeapRegion::GrainBytes; - _ihop_control->update_allocation_info(mutator_time_s, young_gen_size); + + _ihop_control->record_expected_young_gen_size(young_gen_size); report = true; } @@ -1291,11 +1311,11 @@ void G1Policy::decide_on_concurrent_start_pause() { // Force concurrent start. collector_state()->set_in_concurrent_start_gc(); // We might have ended up coming here about to start a mixed phase with a collection set - // active. The following remark might change the change the "evacuation efficiency" of + // active. The following remark might change the "evacuation efficiency" of // the regions in this set, leading to failing asserts later. // Since the concurrent cycle will recreate the collection set anyway, simply drop it here. abandon_collection_set_candidates(); - abort_time_to_mixed_tracking(); + abort_concurrent_cycle_tracking(); log_debug(gc, ergo)("Initiate concurrent cycle (%s requested concurrent cycle)", requester_for_mixed_abort(cause)); } else { @@ -1335,7 +1355,7 @@ void G1Policy::record_concurrent_mark_cleanup_end(bool has_rebuilt_remembered_se } if (!mixed_gc_pending) { - abort_time_to_mixed_tracking(); + abort_concurrent_cycle_tracking(); log_debug(gc, ergo)("request young-only gcs (candidate old regions not available)"); } if (mixed_gc_pending) { @@ -1370,7 +1390,8 @@ void G1Policy::update_gc_pause_time_ratios(Pause gc_type, double start_time_sec, void G1Policy::record_pause(Pause gc_type, double start, - double end) { + double end, + size_t humongous_allocation_bytes) { // Manage the MMU tracker. For some reason it ignores Full GCs. if (gc_type != Pause::Full) { _mmu_tracker->add_pause(start, end); @@ -1378,49 +1399,26 @@ void G1Policy::record_pause(Pause gc_type, update_gc_pause_time_ratios(gc_type, start, end); - update_time_to_mixed_tracking(gc_type, start, end); + size_t humongous_bytes = _g1h->humongous_regions_count() * G1HeapRegion::GrainBytes; + G1AllocationIntervalStats alloc_interval_stats = _old_gen_alloc_tracker.end_allocation_interval(humongous_bytes); + bool is_periodic_gc = _g1h->gc_cause() == GCCause::_g1_periodic_collection; + + if (humongous_allocation_bytes > 0) { + // Record the humongous allocation that triggered the GC and attribute it to + // the ending allocation interval. We do this eagerly, before we know whether + // the post GC allocation succeeds, to keep the common case simple. In the + // rare case where this allocation fails, we over-account; this only + // affects the stored IHOP sample if the current GC is the first Mixed GC. + alloc_interval_stats.record_humongous_allocation(humongous_allocation_bytes); + } + _concurrent_cycle_tracker.record_allocation_interval(gc_type, is_periodic_gc, start, end, alloc_interval_stats); double elapsed_gc_cpu_time = _analytics->gc_cpu_time_ms(); _analytics->set_gc_cpu_time_at_pause_end_ms(elapsed_gc_cpu_time); } -void G1Policy::update_time_to_mixed_tracking(Pause gc_type, - double start, - double end) { - // Manage the mutator time tracking from concurrent start to first mixed gc. - switch (gc_type) { - case Pause::Full: - abort_time_to_mixed_tracking(); - break; - case Pause::Cleanup: - case Pause::Remark: - case Pause::Normal: - case Pause::PrepareMixed: - _concurrent_start_to_mixed.add_pause(end - start); - break; - case Pause::ConcurrentStartFull: - // Do not track time-to-mixed time for periodic collections as they are likely - // to be not representative to regular operation as the mutators are idle at - // that time. Also only track full concurrent mark cycles. - if (_g1h->gc_cause() != GCCause::_g1_periodic_collection) { - _concurrent_start_to_mixed.record_concurrent_start_end(end); - } - break; - case Pause::ConcurrentStartUndo: - assert(_g1h->gc_cause() == GCCause::_g1_humongous_allocation, - "GC cause must be humongous allocation but is %d", - _g1h->gc_cause()); - break; - case Pause::Mixed: - _concurrent_start_to_mixed.record_mixed_gc_start(start); - break; - default: - ShouldNotReachHere(); - } -} - -void G1Policy::abort_time_to_mixed_tracking() { - _concurrent_start_to_mixed.reset(); +void G1Policy::abort_concurrent_cycle_tracking() { + _concurrent_cycle_tracker.abort_cycle(); } bool G1Policy::next_gc_should_be_mixed() const { diff --git a/src/hotspot/share/gc/g1/g1Policy.hpp b/src/hotspot/share/gc/g1/g1Policy.hpp index 45952963168..3cfd54c8c94 100644 --- a/src/hotspot/share/gc/g1/g1Policy.hpp +++ b/src/hotspot/share/gc/g1/g1Policy.hpp @@ -26,7 +26,7 @@ #define SHARE_GC_G1_G1POLICY_HPP #include "gc/g1/g1CollectorState.hpp" -#include "gc/g1/g1ConcurrentStartToMixedTimeTracker.hpp" +#include "gc/g1/g1ConcurrentCycleTracker.hpp" #include "gc/g1/g1GCPhaseTimes.hpp" #include "gc/g1/g1HeapRegionAttr.hpp" #include "gc/g1/g1MMUTracker.hpp" @@ -58,8 +58,7 @@ class STWGCTimer; class G1Policy: public CHeapObj { using Pause = G1CollectorState::Pause; - static G1IHOPControl* create_ihop_control(const G1OldGenAllocationTracker* old_gen_alloc_tracker, - const G1Predictions* predictor); + static G1IHOPControl* create_ihop_control(const G1Predictions* predictor); // Update the IHOP control with the necessary statistics. Returns true if there // has been a significant update to the prediction. bool update_ihop_prediction(double mutator_time_s, @@ -70,8 +69,9 @@ class G1Policy: public CHeapObj { G1RemSetTrackingPolicy _remset_tracker; G1MMUTracker* _mmu_tracker; + G1ConcurrentCycleTracker _concurrent_cycle_tracker; // Tracking the allocation in the old generation between - // two GCs. + // two pauses. G1OldGenAllocationTracker _old_gen_alloc_tracker; G1IHOPControl* _ihop_control; @@ -91,9 +91,11 @@ class G1Policy: public CHeapObj { G1SurvRateGroup* _survivor_surv_rate_group; double _reserve_factor; - // This will be set when the heap is expanded - // for the first time during initialization. - uint _reserve_regions; + // The allocation reserve in number of regions that we try to keep free. + // G1 allocation of new regions for eden is restrained when allocating into that reserve. + // This intentionally slows down the allocation when the heap is close to full to allow + // concurrent marking to finish and hopefully avoid a Full GC. + Atomic _reserve_regions; G1YoungGenSizer _young_gen_sizer; @@ -112,8 +114,6 @@ class G1Policy: public CHeapObj { // garbage collection or the most recent refinement sweep. size_t _to_collection_set_cards; - G1ConcurrentStartToMixedTimeTracker _concurrent_start_to_mixed; - bool should_update_surv_rate_group_predictors(); double pending_cards_processing_time() const; @@ -224,9 +224,13 @@ private: // Calculate desired young length based on current situation without taking actually // available free regions into account. - uint calculate_young_desired_length(size_t pending_cards, size_t card_rs_length, size_t code_root_rs_length) const; + uint calculate_young_desired_length(size_t pending_cards, + size_t card_rs_length, + size_t code_root_rs_length, + uint min_young_length_by_sizer, + uint max_young_length_by_sizer) const; // Limit the given desired young length to available free regions. - uint calculate_young_target_length(uint desired_young_length) const; + uint calculate_young_target_length(uint desired_young_length, uint min_young_length_by_sizer) const; double predict_survivor_regions_evac_time() const; double predict_retained_regions_evac_time() const; @@ -258,17 +262,16 @@ public: private: void abandon_collection_set_candidates(); - // Manage time-to-mixed tracking. - void update_time_to_mixed_tracking(Pause gc_type, double start, double end); // Record the given STW pause with the given start and end times (in s). void record_pause(Pause gc_type, double start, - double end); + double end, + size_t humongous_allocation_bytes = 0); void update_gc_pause_time_ratios(Pause gc_type, double start_sec, double end_sec); // Indicate that we aborted marking before doing any mixed GCs. - void abort_time_to_mixed_tracking(); + void abort_concurrent_cycle_tracking(); public: diff --git a/src/hotspot/share/gc/g1/g1Trace.cpp b/src/hotspot/share/gc/g1/g1Trace.cpp index d6eadda5d50..bcc0941dc62 100644 --- a/src/hotspot/share/gc/g1/g1Trace.cpp +++ b/src/hotspot/share/gc/g1/g1Trace.cpp @@ -97,31 +97,31 @@ void G1NewTracer::report_evacuation_statistics(const G1EvacSummary& young_summar } void G1NewTracer::report_basic_ihop_statistics(size_t threshold, - size_t target_ccupancy, - size_t non_young_occupancy, - size_t last_allocation_size, - double last_allocation_duration, - double last_marking_length) { + size_t target_occupancy, + size_t non_young_occupancy) { send_basic_ihop_statistics(threshold, - target_ccupancy, - non_young_occupancy, - last_allocation_size, - last_allocation_duration, - last_marking_length); + target_occupancy, + non_young_occupancy); } void G1NewTracer::report_adaptive_ihop_statistics(size_t threshold, size_t internal_target_occupancy, size_t current_occupancy, size_t additional_buffer_size, - double predicted_allocation_rate, + size_t non_humongous_allocation, + size_t peak_extra_humongous_occupancy, + double predicted_old_non_hum_alloc_rate, + size_t predicted_peak_extra_humongous_occupancy, double predicted_marking_length, bool prediction_active) { send_adaptive_ihop_statistics(threshold, internal_target_occupancy, current_occupancy, additional_buffer_size, - predicted_allocation_rate, + non_humongous_allocation, + peak_extra_humongous_occupancy, + predicted_old_non_hum_alloc_rate, + predicted_peak_extra_humongous_occupancy, predicted_marking_length, prediction_active); } @@ -206,10 +206,7 @@ void G1NewTracer::send_old_evacuation_statistics(const G1EvacSummary& summary) c void G1NewTracer::send_basic_ihop_statistics(size_t threshold, size_t target_occupancy, - size_t non_young_occupancy, - size_t last_allocation_size, - double last_allocation_duration, - double last_marking_length) { + size_t non_young_occupancy) { EventG1BasicIHOP evt; if (evt.should_commit()) { evt.set_gcId(GCId::current()); @@ -217,10 +214,6 @@ void G1NewTracer::send_basic_ihop_statistics(size_t threshold, evt.set_targetOccupancy(target_occupancy); evt.set_thresholdPercentage(target_occupancy > 0 ? ((double)threshold / target_occupancy) : 0.0); evt.set_currentOccupancy(non_young_occupancy); - evt.set_recentMutatorAllocationSize(last_allocation_size); - evt.set_recentMutatorDuration(last_allocation_duration * MILLIUNITS); - evt.set_recentAllocationRate(last_allocation_duration != 0.0 ? last_allocation_size / last_allocation_duration : 0.0); - evt.set_lastMarkingDuration(last_marking_length * MILLIUNITS); evt.commit(); } } @@ -229,7 +222,10 @@ void G1NewTracer::send_adaptive_ihop_statistics(size_t threshold, size_t internal_target_occupancy, size_t current_occupancy, size_t additional_buffer_size, - double predicted_allocation_rate, + size_t non_humongous_allocation, + size_t peak_extra_humongous_occupancy, + double predicted_old_non_hum_alloc_rate, + size_t predicted_peak_extra_humongous_occupancy, double predicted_marking_length, bool prediction_active) { EventG1AdaptiveIHOP evt; @@ -240,7 +236,10 @@ void G1NewTracer::send_adaptive_ihop_statistics(size_t threshold, evt.set_ihopTargetOccupancy(internal_target_occupancy); evt.set_currentOccupancy(current_occupancy); evt.set_additionalBufferSize(additional_buffer_size); - evt.set_predictedAllocationRate(predicted_allocation_rate); + evt.set_nonHumongousAllocation(non_humongous_allocation); + evt.set_peakExtraHumongousOccupancy(peak_extra_humongous_occupancy); + evt.set_predictedNonHumongousAllocation(predicted_old_non_hum_alloc_rate); + evt.set_predictedPeakExtraHumongousOccupancy(predicted_peak_extra_humongous_occupancy); evt.set_predictedMarkingDuration(predicted_marking_length * MILLIUNITS); evt.set_predictionActive(prediction_active); evt.commit(); diff --git a/src/hotspot/share/gc/g1/g1Trace.hpp b/src/hotspot/share/gc/g1/g1Trace.hpp index bfcc275d2ca..c5d099d5807 100644 --- a/src/hotspot/share/gc/g1/g1Trace.hpp +++ b/src/hotspot/share/gc/g1/g1Trace.hpp @@ -52,15 +52,15 @@ public: void report_basic_ihop_statistics(size_t threshold, size_t target_occupancy, - size_t current_occupancy, - size_t last_allocation_size, - double last_allocation_duration, - double last_marking_length); + size_t current_occupancy); void report_adaptive_ihop_statistics(size_t threshold, size_t internal_target_occupancy, size_t current_occupancy, size_t additional_buffer_size, - double predicted_allocation_rate, + size_t non_humongous_allocation, + size_t peak_extra_humongous_occupancy, + double predicted_old_gen_non_humongous_allocation_rate, + size_t predicted_peak_extra_humongous_occupancy, double predicted_marking_length, bool prediction_active); private: @@ -73,15 +73,16 @@ private: void send_basic_ihop_statistics(size_t threshold, size_t target_occupancy, - size_t non_young_occupancy, - size_t last_allocation_size, - double last_allocation_duration, - double last_marking_length); + size_t non_young_occupancy); + void send_adaptive_ihop_statistics(size_t threshold, size_t internal_target_occupancy, size_t non_young_occupancy, size_t additional_buffer_size, - double predicted_allocation_rate, + size_t non_humongous_allocation, + size_t peak_extra_humongous_occupancy, + double predicted_old_gen_non_humongous_allocation_rate, + size_t predicted_peak_extra_humongous_occupancy, double predicted_marking_length, bool prediction_active); }; diff --git a/src/hotspot/share/gc/g1/g1UncommitRegionTask.cpp b/src/hotspot/share/gc/g1/g1UncommitRegionTask.cpp index e1203229557..f88736c5642 100644 --- a/src/hotspot/share/gc/g1/g1UncommitRegionTask.cpp +++ b/src/hotspot/share/gc/g1/g1UncommitRegionTask.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -58,9 +58,9 @@ void G1UncommitRegionTask::enqueue() { G1UncommitRegionTask* uncommit_task = instance(); if (!uncommit_task->is_active()) { - // Change state to active and schedule using UncommitInitialDelayMs. + // Change state to active and schedule. uncommit_task->set_active(true); - G1CollectedHeap::heap()->service_thread()->schedule_task(uncommit_task, UncommitInitialDelayMs); + G1CollectedHeap::heap()->service_thread()->schedule_task(uncommit_task, G1UncommitInitialDelay); } } diff --git a/src/hotspot/share/gc/g1/g1UncommitRegionTask.hpp b/src/hotspot/share/gc/g1/g1UncommitRegionTask.hpp index 7c9a25f6857..835217d2a59 100644 --- a/src/hotspot/share/gc/g1/g1UncommitRegionTask.hpp +++ b/src/hotspot/share/gc/g1/g1UncommitRegionTask.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,8 +34,6 @@ class G1UncommitRegionTask : public G1ServiceTask { // This limit is small enough to ensure that the duration of each invocation // is short, while still making reasonable progress. static const uint UncommitSizeLimit = 128 * M; - // Initial delay in milliseconds after GC before the regions are uncommitted. - static const uint UncommitInitialDelayMs = 100; // The delay between two uncommit task executions. static const uint UncommitTaskDelayMs = 10; diff --git a/src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp b/src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp index d0c843aa5d6..bf4a6cca81d 100644 --- a/src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp +++ b/src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp @@ -542,7 +542,7 @@ public: class FreeCSetStats { size_t _before_used_bytes; // Usage in regions successfully evacuate size_t _after_used_bytes; // Usage in regions failing evacuation - size_t _bytes_allocated_in_old_since_last_gc; // Size of young regions turned into old + size_t _bytes_allocated_in_old_since_last_pause; // Size of young regions turned into old size_t _failure_used_words; // Live size in failed regions size_t _failure_waste_words; // Wasted size in failed regions uint _regions_freed; // Number of regions freed @@ -551,7 +551,7 @@ public: FreeCSetStats() : _before_used_bytes(0), _after_used_bytes(0), - _bytes_allocated_in_old_since_last_gc(0), + _bytes_allocated_in_old_since_last_pause(0), _failure_used_words(0), _failure_waste_words(0), _regions_freed(0) { } @@ -560,7 +560,7 @@ public: assert(other != nullptr, "invariant"); _before_used_bytes += other->_before_used_bytes; _after_used_bytes += other->_after_used_bytes; - _bytes_allocated_in_old_since_last_gc += other->_bytes_allocated_in_old_since_last_gc; + _bytes_allocated_in_old_since_last_pause += other->_bytes_allocated_in_old_since_last_pause; _failure_used_words += other->_failure_used_words; _failure_waste_words += other->_failure_waste_words; _regions_freed += other->_regions_freed; @@ -575,7 +575,7 @@ public: g1h->alloc_buffer_stats(G1HeapRegionAttr::Old)->add_failure_used_and_waste(_failure_used_words, _failure_waste_words); G1Policy *policy = g1h->policy(); - policy->old_gen_alloc_tracker()->add_allocated_bytes_since_last_gc(_bytes_allocated_in_old_since_last_gc); + policy->old_gen_alloc_tracker()->add_allocated_non_humongous_bytes(_bytes_allocated_in_old_since_last_pause); policy->cset_regions_freed(); } @@ -592,7 +592,7 @@ public: // additional allocation: both the objects still in the region and the // ones already moved are accounted for elsewhere. if (r->is_young()) { - _bytes_allocated_in_old_since_last_gc += G1HeapRegion::GrainBytes; + _bytes_allocated_in_old_since_last_pause += G1HeapRegion::GrainBytes; } } diff --git a/src/hotspot/share/gc/g1/g1YoungGenSizer.cpp b/src/hotspot/share/gc/g1/g1YoungGenSizer.cpp index ffa573c68cc..60c79ec28df 100644 --- a/src/hotspot/share/gc/g1/g1YoungGenSizer.cpp +++ b/src/hotspot/share/gc/g1/g1YoungGenSizer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,7 +30,7 @@ #include "runtime/globals_extension.hpp" G1YoungGenSizer::G1YoungGenSizer() : _sizer_kind(SizerDefaults), - _use_adaptive_sizing(true), _min_desired_young_length(0), _max_desired_young_length(0) { + _use_adaptive_sizing(true), _min_desired_young_length(), _max_desired_young_length(0) { precond(!FLAG_IS_ERGO(NewRatio)); precond(!FLAG_IS_ERGO(NewSize)); @@ -100,16 +100,16 @@ G1YoungGenSizer::G1YoungGenSizer() : _sizer_kind(SizerDefaults), } if (user_specified_NewSize) { - _min_desired_young_length = MAX2((uint)(NewSize / G1HeapRegion::GrainBytes), 1U); + _min_desired_young_length.store_relaxed(MAX2((uint)(NewSize / G1HeapRegion::GrainBytes), 1U)); } if (user_specified_MaxNewSize) { - _max_desired_young_length = MAX2((uint)(MaxNewSize / G1HeapRegion::GrainBytes), 1U); + _max_desired_young_length.store_relaxed(MAX2((uint)(MaxNewSize / G1HeapRegion::GrainBytes), 1U)); } if (user_specified_NewSize && user_specified_MaxNewSize) { _sizer_kind = SizerMaxAndNewSize; - _use_adaptive_sizing = _min_desired_young_length != _max_desired_young_length; + _use_adaptive_sizing = min_desired_young_length() != max_desired_young_length(); } else if (user_specified_NewSize) { _sizer_kind = SizerNewSizeOnly; } else { @@ -159,20 +159,22 @@ void G1YoungGenSizer::recalculate_min_max_young_length(uint number_of_heap_regio } void G1YoungGenSizer::adjust_max_new_size(uint number_of_heap_regions) { - // We need to pass the desired values because recalculation may not update these // values in some cases. - uint temp = _min_desired_young_length; - uint result = _max_desired_young_length; - recalculate_min_max_young_length(number_of_heap_regions, &temp, &result); + uint unused_new_min = min_desired_young_length(); + uint new_max = max_desired_young_length(); + recalculate_min_max_young_length(number_of_heap_regions, &unused_new_min, &new_max); - size_t max_young_size = result * G1HeapRegion::GrainBytes; + size_t max_young_size = new_max * G1HeapRegion::GrainBytes; if (max_young_size != MaxNewSize) { FLAG_SET_ERGO(MaxNewSize, max_young_size); } } void G1YoungGenSizer::heap_size_changed(uint new_number_of_heap_regions) { - recalculate_min_max_young_length(new_number_of_heap_regions, &_min_desired_young_length, - &_max_desired_young_length); + uint min = min_desired_young_length(); + uint max = max_desired_young_length(); + recalculate_min_max_young_length(new_number_of_heap_regions, &min, &max); + _min_desired_young_length.store_relaxed(min); + _max_desired_young_length.store_relaxed(max); } diff --git a/src/hotspot/share/gc/g1/g1YoungGenSizer.hpp b/src/hotspot/share/gc/g1/g1YoungGenSizer.hpp index 138989d4d94..c60c3c373a9 100644 --- a/src/hotspot/share/gc/g1/g1YoungGenSizer.hpp +++ b/src/hotspot/share/gc/g1/g1YoungGenSizer.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ #ifndef SHARE_GC_G1_G1YOUNGGENSIZER_HPP #define SHARE_GC_G1_G1YOUNGGENSIZER_HPP +#include "runtime/atomic.hpp" #include "utilities/globalDefinitions.hpp" // There are three command line options related to the young gen size: @@ -78,8 +79,8 @@ private: // true otherwise. bool _use_adaptive_sizing; - uint _min_desired_young_length; - uint _max_desired_young_length; + Atomic _min_desired_young_length; + Atomic _max_desired_young_length; uint calculate_default_min_length(uint new_number_of_heap_regions); uint calculate_default_max_length(uint new_number_of_heap_regions); @@ -96,10 +97,10 @@ public: virtual void heap_size_changed(uint new_number_of_heap_regions); uint min_desired_young_length() const { - return _min_desired_young_length; + return _min_desired_young_length.load_relaxed(); } uint max_desired_young_length() const { - return _max_desired_young_length; + return _max_desired_young_length.load_relaxed(); } bool use_adaptive_young_list_length() const { diff --git a/src/hotspot/share/gc/g1/g1_globals.hpp b/src/hotspot/share/gc/g1/g1_globals.hpp index 14daac4800b..8a346c5c78f 100644 --- a/src/hotspot/share/gc/g1/g1_globals.hpp +++ b/src/hotspot/share/gc/g1/g1_globals.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -184,6 +184,10 @@ "shrink attempt.") \ range(0, 100) \ \ + develop(uint, G1UncommitInitialDelay, 100, \ + "Delay in milliseconds until regions just made eligible for " \ + "uncommit are actually uncommitted.") \ + \ product(uint, G1CPUUsageDeviationPercent, 25, DIAGNOSTIC, \ "The acceptable deviation (in percent) from the target GC CPU " \ "usage (based on GCTimeRatio). Creates a tolerance range " \ diff --git a/src/hotspot/share/gc/serial/cardTableRS.cpp b/src/hotspot/share/gc/serial/cardTableRS.cpp index a53ab066387..fe4977a809a 100644 --- a/src/hotspot/share/gc/serial/cardTableRS.cpp +++ b/src/hotspot/share/gc/serial/cardTableRS.cpp @@ -49,7 +49,14 @@ void CardTableRS::scan_old_to_young_refs(TenuredGeneration* tg, HeapWord* saved_ void CardTableRS::maintain_old_to_young_invariant(TenuredGeneration* old_gen, bool is_young_gen_empty) { if (is_young_gen_empty) { - clear_MemRegion(old_gen->prev_used_region()); + MemRegion prev_used_mr = old_gen->prev_used_region(); + if (!prev_used_mr.is_empty()) { + clear_MemRegion(prev_used_mr); + } + { + MemRegion old_gen_committed{old_gen->space()->bottom(), old_gen->space()->end()}; + verify_region(old_gen_committed, clean_card_val(), true); + } } else { MemRegion used_mr = old_gen->used_region(); MemRegion prev_used_mr = old_gen->prev_used_region(); @@ -59,7 +66,9 @@ void CardTableRS::maintain_old_to_young_invariant(TenuredGeneration* old_gen, } // No idea which card contains old-to-young pointer, so dirtying cards for // the entire used part of old-gen conservatively. - dirty_MemRegion(used_mr); + if (!used_mr.is_empty()) { + dirty_MemRegion(used_mr); + } } } diff --git a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp index 66032944251..e4f1b6e86c1 100644 --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp @@ -27,7 +27,6 @@ #include "gc/shared/barrierSet.hpp" #include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp" #include "gc/shenandoah/heuristics/shenandoahHeuristics.hpp" -#include "gc/shenandoah/shenandoahForwarding.hpp" #include "gc/shenandoah/shenandoahHeap.hpp" #include "gc/shenandoah/shenandoahRuntime.hpp" #include "gc/shenandoah/shenandoahThreadLocalData.hpp" @@ -712,10 +711,9 @@ void ShenandoahBarrierSetC2::print_barrier_data(outputStream* os, uint8_t data) fatal("Unknown bit!"); } - os->print_cr(" GC configuration: %sLRB %sSATB %sCAS %sClone %sCard", + os->print_cr(" GC configuration: %sLRB %sSATB %sClone %sCard", (ShenandoahLoadRefBarrier ? "+" : "-"), (ShenandoahSATBBarrier ? "+" : "-"), - (ShenandoahCASBarrier ? "+" : "-"), (ShenandoahCloneBarrier ? "+" : "-"), (ShenandoahCardBarrier ? "+" : "-") ); @@ -912,16 +910,16 @@ void ShenandoahBarrierStubC2::load_post(MacroAssembler* masm, const MachNode* no } } -void ShenandoahBarrierStubC2::store_pre(MacroAssembler* masm, const MachNode* node, Register obj, Address addr, Register tmp1, Register tmp2, bool narrow) { +void ShenandoahBarrierStubC2::store_pre(MacroAssembler* masm, const MachNode* node, Address addr, Register tmp1, Register tmp2, Register tmp3, bool narrow) { // Store pre-barrier: SATB, keep-alive the current memory value. if (needs_slow_barrier(node)) { assert(!needs_load_ref_barrier(node), "Should not be required for stores"); - ShenandoahBarrierStubC2* const stub = create(node, obj, addr, tmp1, tmp2, narrow, /* do_load = */ true); + ShenandoahBarrierStubC2* const stub = create(node, tmp1, addr, tmp2, tmp3, narrow, /* do_load = */ true); stub->enter_if_gc_state(*masm, ShenandoahHeap::MARKING, tmp1); } } -void ShenandoahBarrierStubC2::load_store_pre(MacroAssembler* masm, const MachNode* node, Register obj, Address addr, Register tmp1, Register tmp2, bool narrow) { +void ShenandoahBarrierStubC2::load_store_pre(MacroAssembler* masm, const MachNode* node, Address addr, Register tmp1, Register tmp2, Register tmp3, bool narrow) { // Load/Store pre-barrier: // a. Avoids false positives from CAS encountering to-space memory values. // b. Satisfies the need for LRB for the CAE result. @@ -930,7 +928,7 @@ void ShenandoahBarrierStubC2::load_store_pre(MacroAssembler* masm, const MachNod // (a) and (b) are covered because load barrier does memory location fixup. // (c) is covered by KA on the current memory value. if (needs_slow_barrier(node)) { - ShenandoahBarrierStubC2* const stub = create(node, obj, addr, tmp1, tmp2, narrow, /* do_load = */ true); + ShenandoahBarrierStubC2* const stub = create(node, tmp1, addr, tmp2, tmp3, narrow, /* do_load = */ true); char check = 0; check |= needs_keep_alive_barrier(node) ? ShenandoahHeap::MARKING : 0; check |= needs_load_ref_barrier(node) ? ShenandoahHeap::HAS_FORWARDED : 0; diff --git a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp index d18ebe26853..11fdbd8674b 100644 --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.hpp @@ -228,10 +228,10 @@ public: return needs_load_ref_barrier(node) || needs_keep_alive_barrier(node); } - static void load_post(MacroAssembler* masm, const MachNode* node, Register obj, Address addr, Register tmp1, Register tmp2, bool narrow); - static void store_pre(MacroAssembler* masm, const MachNode* node, Register obj, Address addr, Register tmp1, Register tmp2, bool narrow); - static void store_post(MacroAssembler* masm, const MachNode* node, Address addr, Register tmp1, Register tmp2); - static void load_store_pre(MacroAssembler* masm, const MachNode* node, Register obj, Address addr, Register tmp1, Register tmp2, bool narrow); + static void load_post(MacroAssembler* masm, const MachNode* node, Register obj, Address addr, Register tmp1, Register tmp2, bool narrow); + static void store_pre(MacroAssembler* masm, const MachNode* node, Address addr, Register tmp1, Register tmp2, Register tmp3, bool narrow); + static void store_post(MacroAssembler* masm, const MachNode* node, Address addr, Register tmp1, Register tmp2); + static void load_store_pre(MacroAssembler* masm, const MachNode* node, Address addr, Register tmp1, Register tmp2, Register tmp3, bool narrow); static void load_store_post(MacroAssembler* masm, const MachNode* node, Address addr, Register tmp1, Register tmp2); void emit_code(MacroAssembler& masm); diff --git a/src/hotspot/share/gc/shenandoah/mode/shenandoahGenerationalMode.cpp b/src/hotspot/share/gc/shenandoah/mode/shenandoahGenerationalMode.cpp index 79c4ecabcf4..5a21ded6d29 100644 --- a/src/hotspot/share/gc/shenandoah/mode/shenandoahGenerationalMode.cpp +++ b/src/hotspot/share/gc/shenandoah/mode/shenandoahGenerationalMode.cpp @@ -57,7 +57,6 @@ void ShenandoahGenerationalMode::initialize_flags() const { // Final configuration checks SHENANDOAH_CHECK_FLAG_SET(ShenandoahLoadRefBarrier); SHENANDOAH_CHECK_FLAG_SET(ShenandoahSATBBarrier); - SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier); SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier); SHENANDOAH_CHECK_FLAG_SET(ShenandoahCardBarrier); } diff --git a/src/hotspot/share/gc/shenandoah/mode/shenandoahPassiveMode.cpp b/src/hotspot/share/gc/shenandoah/mode/shenandoahPassiveMode.cpp index cc098bc5a21..31ffcd623fd 100644 --- a/src/hotspot/share/gc/shenandoah/mode/shenandoahPassiveMode.cpp +++ b/src/hotspot/share/gc/shenandoah/mode/shenandoahPassiveMode.cpp @@ -48,7 +48,6 @@ void ShenandoahPassiveMode::initialize_flags() const { // Disable known barriers by default. SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahLoadRefBarrier); SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahSATBBarrier); - SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahCASBarrier); SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahCloneBarrier); SHENANDOAH_ERGO_DISABLE_FLAG(ShenandoahCardBarrier); } diff --git a/src/hotspot/share/gc/shenandoah/mode/shenandoahSATBMode.cpp b/src/hotspot/share/gc/shenandoah/mode/shenandoahSATBMode.cpp index e27aa90542d..842c7841b9c 100644 --- a/src/hotspot/share/gc/shenandoah/mode/shenandoahSATBMode.cpp +++ b/src/hotspot/share/gc/shenandoah/mode/shenandoahSATBMode.cpp @@ -40,7 +40,6 @@ void ShenandoahSATBMode::initialize_flags() const { // Final configuration checks SHENANDOAH_CHECK_FLAG_SET(ShenandoahLoadRefBarrier); SHENANDOAH_CHECK_FLAG_SET(ShenandoahSATBBarrier); - SHENANDOAH_CHECK_FLAG_SET(ShenandoahCASBarrier); SHENANDOAH_CHECK_FLAG_SET(ShenandoahCloneBarrier); SHENANDOAH_CHECK_FLAG_UNSET(ShenandoahCardBarrier); } diff --git a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp b/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp index 3ccb7cc336b..6d0895c5afa 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp @@ -63,7 +63,6 @@ void ShenandoahArguments::initialize() { FLAG_SET_DEFAULT(ShenandoahSATBBarrier, false); FLAG_SET_DEFAULT(ShenandoahLoadRefBarrier, false); - FLAG_SET_DEFAULT(ShenandoahCASBarrier, false); FLAG_SET_DEFAULT(ShenandoahCardBarrier, false); FLAG_SET_DEFAULT(ShenandoahCloneBarrier, false); diff --git a/src/hotspot/share/gc/shenandoah/shenandoahClosures.hpp b/src/hotspot/share/gc/shenandoah/shenandoahClosures.hpp index 9ab45380c61..976a505c713 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahClosures.hpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahClosures.hpp @@ -253,4 +253,16 @@ public: }; #endif // ASSERT +class ShenandoahMultiThreadClosure : public ThreadClosure { + ThreadClosure& _cl1; + ThreadClosure& _cl2; +public: + ShenandoahMultiThreadClosure(ThreadClosure& cl1, ThreadClosure& cl2) : + _cl1(cl1), _cl2(cl2) {} + inline void do_thread(Thread* thread) override { + _cl1.do_thread(thread); + _cl2.do_thread(thread); + } +}; + #endif // SHARE_GC_SHENANDOAH_SHENANDOAHCLOSURES_HPP diff --git a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp index 4db8821399f..31ffbc817f1 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp @@ -59,6 +59,10 @@ public: ShenandoahWorkerTimingsTracker timer(ShenandoahPhaseTimings::conc_mark, ShenandoahPhaseTimings::Work, worker_id, true); SuspendibleThreadSetJoiner stsj; _cm->mark_loop(worker_id, _terminator, GENERATION, true /*cancellable*/); + // Concurrent marking loop flushes Java thread buffers, coordinating with a handshake. + // Here, a GC worker has completed marking work, so it is a good time to flush its SATB buffers too. + SATBMarkQueueSet& satb_mq_set = ShenandoahBarrierSet::satb_mark_queue_set(); + satb_mq_set.flush_queue(ShenandoahThreadLocalData::satb_mark_queue(Thread::current())); } }; @@ -67,32 +71,14 @@ class ShenandoahFinalMarkingTask : public WorkerTask { private: ShenandoahConcurrentMark* _cm; TaskTerminator* _terminator; - ThreadsClaimTokenScope _threads_claim_token_scope; // needed for Threads::possibly_parallel_threads_do public: ShenandoahFinalMarkingTask(ShenandoahConcurrentMark* cm, TaskTerminator* terminator) : - WorkerTask("Shenandoah Final Mark"), _cm(cm), _terminator(terminator), - _threads_claim_token_scope() { - } + WorkerTask("Shenandoah Final Mark"), _cm(cm), _terminator(terminator) {} void work(uint worker_id) { - ShenandoahHeap* heap = ShenandoahHeap::heap(); - ShenandoahWorkerTimingsTracker timer(ShenandoahPhaseTimings::finish_mark, ShenandoahPhaseTimings::Work, worker_id, true); ShenandoahParallelWorkerSession worker_session(worker_id); - // First drain remaining SATB buffers. - { - ShenandoahObjToScanQueue* q = _cm->get_queue(worker_id); - ShenandoahObjToScanQueue* old_q = _cm->get_old_queue(worker_id); - - ShenandoahSATBBufferClosure cl(q, old_q); - SATBMarkQueueSet& satb_mq_set = ShenandoahBarrierSet::satb_mark_queue_set(); - while (satb_mq_set.apply_closure_to_completed_buffer(&cl)) {} - assert(!heap->has_forwarded_objects(), "Not expected"); - - ShenandoahFlushSATB tc(satb_mq_set); - Threads::possibly_parallel_threads_do(true /* is_par */, &tc); - } _cm->mark_loop(worker_id, _terminator, GENERATION, false /*not cancellable*/); assert(_cm->task_queues()->is_empty(), "Should be empty"); } @@ -255,49 +241,54 @@ void ShenandoahConcurrentMark::finish_mark() { } void ShenandoahConcurrentMark::finish_mark_work() { - // Finally mark everything else we've got in our queues during the previous steps. - // It does two different things for concurrent vs. mark-compact GC: - // - For concurrent GC, it starts with empty task queues, drains the remaining - // SATB buffers, and then completes the marking closure. - // - For mark-compact GC, it starts out with the task queues seeded by initial - // root scan, and completes the closure, thus marking through all live objects - // The implementation is the same, so it's shared here. ShenandoahHeap* const heap = ShenandoahHeap::heap(); - ShenandoahGCPhase phase(ShenandoahPhaseTimings::finish_mark); - uint nworkers = heap->workers()->active_workers(); - task_queues()->reserve(nworkers); + SATBMarkQueueSet& satb_mq_set = ShenandoahBarrierSet::satb_mark_queue_set(); - TaskTerminator terminator(nworkers, task_queues()); - - switch (_generation->type()) { - case YOUNG:{ - ShenandoahFinalMarkingTask task(this, &terminator); - heap->workers()->run_task(&task); - break; - } - case OLD:{ - ShenandoahFinalMarkingTask task(this, &terminator); - heap->workers()->run_task(&task); - break; - } - case GLOBAL:{ - ShenandoahFinalMarkingTask task(this, &terminator); - heap->workers()->run_task(&task); - break; - } - case NON_GEN:{ - ShenandoahFinalMarkingTask task(this, &terminator); - heap->workers()->run_task(&task); - break; - } - default: - ShouldNotReachHere(); + // First drain all remaining SATB buffers and put them to SATB MQ. + // Also, while we are iterating threads, mark the invisible roots. + { + ShenandoahTimingsTracker t(ShenandoahPhaseTimings::final_mark_flush_satb_roots); + ShenandoahInvisibleRootsMarkClosure invisible_cl; + ShenandoahFlushSATB flush_cl(satb_mq_set); + ShenandoahMultiThreadClosure mux(flush_cl, invisible_cl); + Threads::threads_do(&mux); } - if (!generation()->is_old() && heap->is_concurrent_young_mark_in_progress()) { - // Lastly, ensure all the invisible roots are marked. - ShenandoahInvisibleRootsMarkClosure cl; - Threads::java_threads_do(&cl); + + // There is a very high chance we have already completed the marking. + // But if there is outstanding work, finish it now. + if (!task_queues()->is_empty() || satb_mq_set.completed_buffers_num() > 0) { + ShenandoahGCPhase phase(ShenandoahPhaseTimings::finish_mark); + + uint nworkers = heap->workers()->active_workers(); + task_queues()->reserve(nworkers); + TaskTerminator terminator(nworkers, task_queues()); + + switch (_generation->type()) { + case YOUNG:{ + ShenandoahFinalMarkingTask task(this, &terminator); + heap->workers()->run_task(&task); + break; + } + case OLD:{ + ShenandoahFinalMarkingTask task(this, &terminator); + heap->workers()->run_task(&task); + break; + } + case GLOBAL:{ + ShenandoahFinalMarkingTask task(this, &terminator); + heap->workers()->run_task(&task); + break; + } + case NON_GEN:{ + ShenandoahFinalMarkingTask task(this, &terminator); + heap->workers()->run_task(&task); + break; + } + default: + ShouldNotReachHere(); + } } assert(task_queues()->is_empty(), "Should be empty"); + assert(satb_mq_set.completed_buffers_num() == 0, "Should be empty"); } diff --git a/src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp b/src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp index 385ab10893c..bc52d755139 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp +++ b/src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp @@ -70,6 +70,7 @@ class outputStream; SHENANDOAH_SIMPLE_PHASE_DEF(f, final_mark_gross, "Pause Final Mark (G)") \ SHENANDOAH_SIMPLE_PHASE_DEF(f, final_mark, "Pause Final Mark (N)") \ SHENANDOAH_SIMPLE_PHASE_DEF(f, final_mark_verify, " Verify") \ + SHENANDOAH_SIMPLE_PHASE_DEF(f, final_mark_flush_satb_roots, " Flush SATB and Roots") \ SHENANDOAH_WORKER_PHASE_DEF(f, finish_mark, " Finish Mark", \ " FM: ") \ SHENANDOAH_SIMPLE_PHASE_DEF(f, final_mark_propagate_gc_state, " Propagate GC State") \ diff --git a/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp b/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp index 0ab97fdb51f..aa6b71a7c50 100644 --- a/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp +++ b/src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp @@ -500,9 +500,6 @@ "Turn on/off card-marking post-write barrier in Shenandoah: " \ " true when ShenandoahGCMode is generational, false otherwise") \ \ - product(bool, ShenandoahCASBarrier, true, DIAGNOSTIC, \ - "Turn on/off CAS barriers in Shenandoah") \ - \ product(bool, ShenandoahCloneBarrier, true, DIAGNOSTIC, \ "Turn on/off clone barriers in Shenandoah") \ \ diff --git a/src/hotspot/share/jfr/dcmd/jfrDcmds.cpp b/src/hotspot/share/jfr/dcmd/jfrDcmds.cpp index 549d879de99..a41515edfbb 100644 --- a/src/hotspot/share/jfr/dcmd/jfrDcmds.cpp +++ b/src/hotspot/share/jfr/dcmd/jfrDcmds.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ #include "jfr/dcmd/jfrDcmds.hpp" #include "jfr/jfr.hpp" #include "jfr/jni/jfrJavaSupport.hpp" +#include "jfr/periodic/jfrRedactedEvents.hpp" #include "jfr/recorder/jfrRecorder.hpp" #include "jfr/recorder/service/jfrOptionSet.hpp" #include "jfr/support/jfrThreadLocal.hpp" @@ -401,11 +402,25 @@ JfrConfigureFlightRecorderDCmd::JfrConfigureFlightRecorderDCmd(outputStream* out }; void JfrConfigureFlightRecorderDCmd::print_help(const char* name) const { - outputStream* out = output(); + print_help(output(), false); +} + +static void print_filters(outputStream* out, JfrRedactedEvents::StringArray* filters) { + for (int i = 0; i < filters->length(); i++) { + out->print_cr(" %s", filters->at(i)->text()); + } +} + +void JfrConfigureFlightRecorderDCmd::print_help(outputStream* out, bool startup) { // 0123456789001234567890012345678900123456789001234567890012345678900123456789001234567890 + if (startup) { + out->print_cr("Syntax : -XX:FlightRecorderOptions:[options]"); + out->print_cr(""); + } out->print_cr("Options:"); out->print_cr(""); - out->print_cr(" globalbuffercount (Optional) Number of global buffers. This option is a legacy"); + out->print_cr( " %-19s (Optional) Number of global buffers. This option is a legacy", + startup ? "numglobalbuffers": "globalbuffercount"); out->print_cr(" option: change the memorysize parameter to alter the number of"); out->print_cr(" global buffers. This value cannot be changed once JFR has been"); out->print_cr(" initialized. (STRING, default determined by the value for"); @@ -427,7 +442,8 @@ void JfrConfigureFlightRecorderDCmd::print_help(const char* name) const { out->print_cr(" gigabytes. This value cannot be changed once JFR has been"); out->print_cr(" initialized. (STRING, 10M)"); out->print_cr(""); - out->print_cr(" repositorypath (Optional) Path to the location where recordings are stored until"); + out->print_cr( " %-19s (Optional) Path to the location where recordings are stored until", + startup ? "repository" : "repositorypath"); out->print_cr(" they are written to a permanent file. (STRING, The default"); out->print_cr(" location is the temporary directory for the operating system. On"); out->print_cr(" Linux operating systems, the temporary directory is /tmp. On"); @@ -443,7 +459,8 @@ void JfrConfigureFlightRecorderDCmd::print_help(const char* name) const { out->print_cr(" degradation. This value cannot be changed once JFR has been"); out->print_cr(" initialized. (LONG, 64)"); out->print_cr(""); - out->print_cr(" thread_buffer_size (Optional) Local buffer size for each thread in bytes if one of"); + out->print_cr( " %-19s (Optional) Local buffer size for each thread in bytes if one of", + startup ? "threadbuffersize" : "thread_buffer_size"); out->print_cr(" the following suffixes is not used: 'k' or 'K' for kilobytes or"); out->print_cr(" 'm' or 'M' for megabytes. Overriding this parameter could reduce"); out->print_cr(" performance and is not recommended. This value cannot be changed"); @@ -452,14 +469,77 @@ void JfrConfigureFlightRecorderDCmd::print_help(const char* name) const { out->print_cr(" preserve-repository (Optional) Preserve files stored in the disk repository after the"); out->print_cr(" Java Virtual Machine has exited. (BOOLEAN, false)"); out->print_cr(""); - out->print_cr("Options must be specified using the or = syntax."); - out->print_cr(""); - out->print_cr("Example usage:"); - out->print_cr(""); - out->print_cr(" $ jcmd JFR.configure"); - out->print_cr(" $ jcmd JFR.configure repositorypath=/temporary"); - out->print_cr(" $ jcmd JFR.configure stackdepth=256"); - out->print_cr(" $ jcmd JFR.configure memorysize=100M"); + if (startup) { + out->print_cr(" old-object-queue-size (Optional) Maximum number of old objects to track. By default,"); + out->print_cr(" the number of objects is set to 256. (LONG, 256)"); + out->print_cr(""); + out->print_cr(" redact-argument (Optional) Replace command-line arguments that match a"); + out->print_cr(" semicolon-separated list of glob patterns, for example,"); + out->print_cr(" *secret*;password*. Matching is case-insensitive, and the"); + out->print_cr(" supported wildcards are '*' and '?'. To redact multiple arguments,"); + out->print_cr(" use a literal space (' ') as a separator. For example, to match"); + out->print_cr(" the two arguments --auth username:token, use the filter"); + out->print_cr(" --auth *:*. Filters containing spaces must be quoted as a single"); + out->print_cr(" command-line argument, for example,"); + out->print_cr(" -XX:FlightRecorderOptions:'redact-argument=--auth *:*'."); + out->print_cr(" Arguments containing spaces might not be matched as expected."); + out->print_cr(" The option redact-argument is best-effort and applies only to"); + out->print_cr(" command-line arguments in the jdk.JVMInformation event and to"); + out->print_cr(" the java.command system property in the jdk.InitialSystemProperty"); + out->print_cr(" event. Other events, such as jdk.ProcessStart (child processes),"); + out->print_cr(" are not redacted."); + out->print_cr(""); + out->print_cr(" If the redact-argument option is not specified, the following"); + out->print_cr(" filters are used by default:"); + out->print_cr(""); + print_filters(out, JfrRedactedEvents::argument_filters()); + out->print_cr(""); + out->print_cr(" To load patterns from a file (one per line), use @."); + out->print_cr(" To add to the default patterns instead of replacing them, prefix"); + out->print_cr(" the whole list with '+', for example, +*foo*;@redact.txt."); + out->print_cr(" Use 'none' (lowercase) to disable all redaction filters for"); + out->print_cr(" command-line arguments. Redacted arguments will be replaced"); + out->print_cr(" with '[REDACTED]'. (STRING, default filters)"); + out->print_cr(""); + out->print_cr(" redact-key (Optional) Replace the value of environment variables and system"); + out->print_cr(" properties whose key matches a semicolon-separated list of glob"); + out->print_cr(" patterns, for example, *password*;*token*. Matching is"); + out->print_cr(" case-insensitive, and the supported wildcards are '*' and '?'."); + out->print_cr(" The option redact-key is best-effort and applies only to the"); + out->print_cr(" jdk.InitialSystemProperty, jdk.InitialEnvironmentVariable and"); + out->print_cr(" jdk.JVMInformation (-Dkey...) events. Other events, such as"); + out->print_cr(" jdk.InitialSecurityProperty, are not redacted."); + out->print_cr(""); + out->print_cr(" If the redact-key option is not specified, the"); + out->print_cr(" following filters are used by default:"); + out->print_cr(""); + print_filters(out, JfrRedactedEvents::key_filters()); + out->print_cr(""); + out->print_cr(" To load patterns from a file (one per line), use @."); + out->print_cr(" To add to the default patterns instead of replacing them, prefix"); + out->print_cr(" the whole list with '+', for example, +*cred*;@keys.txt."); + out->print_cr(" Use 'none' (lowercase) to disable all redaction filters for key"); + out->print_cr(" matching. Redacted values will be replaced with '[REDACTED]'."); + out->print_cr(" (STRING, default filters)"); + out->print_cr(""); + out->print_cr("Options must be specified using the = syntax. Multiple options are separated"); + out->print_cr("with a comma."); + out->print_cr(""); + out->print_cr("Example usage:"); + out->print_cr(""); + out->print_cr(" -XX:FlightRecorderOptions:repository=/temporary,stackdepth=256"); + out->print_cr(" -XX:FlightRecorderOptions:'redact-key=+*confidential*;*private*,redact-argument=+https://*:*@*'"); + out->print_cr(" -XX:FlightRecorderOptions:'redact-argument=+-*private *'"); + } else { + out->print_cr("Options must be specified using the or = syntax."); + out->print_cr(""); + out->print_cr("Example usage:"); + out->print_cr(""); + out->print_cr(" $ jcmd JFR.configure"); + out->print_cr(" $ jcmd JFR.configure repositorypath=/temporary"); + out->print_cr(" $ jcmd JFR.configure stackdepth=256"); + out->print_cr(" $ jcmd JFR.configure memorysize=100M"); + } out->print_cr(""); } diff --git a/src/hotspot/share/jfr/dcmd/jfrDcmds.hpp b/src/hotspot/share/jfr/dcmd/jfrDcmds.hpp index 8e7dad5a20c..aecd187a2e0 100644 --- a/src/hotspot/share/jfr/dcmd/jfrDcmds.hpp +++ b/src/hotspot/share/jfr/dcmd/jfrDcmds.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -202,6 +202,7 @@ class JfrConfigureFlightRecorderDCmd : public DCmdWithParser { return "Low"; } static int num_arguments() { return 10; } + static void print_help(outputStream* out, bool startup); virtual void execute(DCmdSource source, TRAPS); virtual void print_help(const char* name) const; }; diff --git a/src/hotspot/share/jfr/metadata/metadata.xml b/src/hotspot/share/jfr/metadata/metadata.xml index 09d9e0ccabf..22bd21c8ff4 100644 --- a/src/hotspot/share/jfr/metadata/metadata.xml +++ b/src/hotspot/share/jfr/metadata/metadata.xml @@ -1,7 +1,7 @@ ", 3); + if (cend < 0) return false; + i = (unsigned) cend + 3; + continue; + } + if (i + 9 <= len && !memcmp (svg + i, "", 3); + if (cend < 0) return false; + i = (unsigned) cend + 3; + continue; + } + + bool closing = (i + 1 < len && svg[i + 1] == '/'); + bool special = (i + 1 < len && (svg[i + 1] == '!' || svg[i + 1] == '?')); + + unsigned gt = i + 1; + char quote = 0; + while (gt < len) + { + char c = svg[gt]; + if (quote) + { + if (c == quote) quote = 0; + } + else + { + if (c == '"' || c == '\'') + quote = c; + else if (c == '>') + break; + } + gt++; + } + if (gt >= len) + return false; + + if (special) + { + i = gt + 1; + continue; + } + + unsigned p = i + (closing ? 2 : 1); + while (p < gt && isspace ((unsigned char) svg[p])) p++; + const char *name = svg + p; + unsigned name_len = 0; + while (p + name_len < gt) + { + unsigned char c = (unsigned char) name[name_len]; + if (!(isalnum (c) || c == '_' || c == '-' || c == ':')) + break; + name_len++; + } + bool is_defs = (name_len == 4 && !memcmp (name, "defs", 4)); + + if (closing) + { + if (!depth) + { + i = gt + 1; + continue; + } + + open_elem_t e = stack[--depth]; + unsigned end = gt + 1; + + if (e.id.len) + { + if (unlikely (!id_entries->push_or_fail (id_entry_t {e.id, (uint32_t) e.start, (uint32_t) end}))) + return false; + + if (e.in_defs_content) + { + if (unlikely (!defs_entries->push_or_fail ())) + return false; + auto &slot = defs_entries->tail (); + slot.id = e.id; + slot.start = e.start; + slot.end = end; + } + + hb_codepoint_t gid; + if (parse_glyph_id_span (e.id, &gid)) + { + if (unlikely (!glyph_spans->push_or_fail (glyph_entry_t {gid, (uint32_t) e.start, (uint32_t) end}))) + return false; + } + } + + if (e.is_defs && defs_depth) + defs_depth--; + + i = end; + continue; + } + + SVG::svg_id_span_t id = {}; + parse_id_in_start_tag (svg, i, gt, &id); + + unsigned r = gt; + while (r > i && isspace ((unsigned char) svg[r - 1])) r--; + bool self_closing = (r > i && svg[r - 1] == '/'); + + open_elem_t e = {}; + e.start = i; + e.id = id; + e.in_defs_content = defs_depth > 0; + e.is_defs = is_defs; + + if (self_closing) + { + unsigned end = gt + 1; + if (e.id.len) + { + if (unlikely (!id_entries->push_or_fail (id_entry_t {e.id, (uint32_t) e.start, (uint32_t) end}))) + return false; + + if (e.in_defs_content) + { + if (unlikely (!defs_entries->push_or_fail ())) + return false; + auto &slot = defs_entries->tail (); + slot.id = e.id; + slot.start = e.start; + slot.end = end; + } + + hb_codepoint_t gid; + if (parse_glyph_id_span (e.id, &gid)) + { + if (unlikely (!glyph_spans->push_or_fail (glyph_entry_t {gid, (uint32_t) e.start, (uint32_t) end}))) + return false; + } + } + } + else + { + if (unlikely (depth >= MAX_DEPTH)) + return false; + stack[depth++] = e; + if (is_defs) + defs_depth++; + } + + i = gt + 1; + } + + return true; +} + +} /* namespace _hb_svg_cache_impl */ + +inline +SVG::accelerator_t::accelerator_t (hb_face_t *face) +{ + table = hb_sanitize_context_t ().reference_table (face); + doc_caches.init (); + unsigned doc_count = table->get_document_count (); + if (doc_count && unlikely (!doc_caches.resize (doc_count))) + doc_caches.clear (); + for (unsigned i = 0; i < doc_caches.length; i++) + doc_caches.arrayZ[i].set_relaxed (nullptr); +} + +inline +SVG::accelerator_t::~accelerator_t () +{ + for (unsigned i = 0; i < doc_caches.length; i++) + destroy_doc_cache (doc_caches.arrayZ[i].get_relaxed ()); + doc_caches.fini (); + table.destroy (); +} + +inline void +SVG::accelerator_t::destroy_doc_cache (svg_doc_cache_t *doc) +{ + if (!doc) + return; + doc->glyph_spans.fini (); + doc->defs_entries.fini (); + doc->id_spans.fini (); + hb_blob_destroy (doc->blob); + hb_free (doc); +} + +inline SVG::svg_doc_cache_t * +SVG::accelerator_t::make_doc_cache (hb_blob_t *image, + const char *svg, + unsigned len, + hb_codepoint_t start_glyph, + hb_codepoint_t end_glyph) const +{ + static const uint32_t INVALID_SPAN = 0xFFFFFFFFu; + + auto *doc = (svg_doc_cache_t *) hb_malloc (sizeof (svg_doc_cache_t)); + if (!doc) + return nullptr; + + doc->blob = nullptr; + doc->svg = nullptr; + doc->len = 0; + doc->defs_entries.init (); + doc->start_glyph = HB_CODEPOINT_INVALID; + doc->end_glyph = HB_CODEPOINT_INVALID; + doc->glyph_spans.init (); + doc->id_spans.init (); + + doc->blob = hb_blob_reference (image); + doc->svg = svg; + doc->len = len; + doc->start_glyph = start_glyph; + doc->end_glyph = end_glyph; + + if (unlikely (start_glyph == HB_CODEPOINT_INVALID || end_glyph < start_glyph)) + { + destroy_doc_cache (doc); + return nullptr; + } + + unsigned glyph_count = end_glyph - start_glyph + 1; + if (!doc->glyph_spans.resize ((int) glyph_count)) + { + destroy_doc_cache (doc); + return nullptr; + } + for (unsigned i = 0; i < glyph_count; i++) + doc->glyph_spans.arrayZ[i] = hb_pair_t (INVALID_SPAN, INVALID_SPAN); + + hb_vector_t<_hb_svg_cache_impl::glyph_entry_t> glyph_spans; + glyph_spans.init (); + hb_vector_t<_hb_svg_cache_impl::id_entry_t> id_entries; + id_entries.init (); + if (!_hb_svg_cache_impl::parse_cache_entries_linear (svg, len, + &doc->defs_entries, + &glyph_spans, + &id_entries)) + { + id_entries.fini (); + glyph_spans.fini (); + destroy_doc_cache (doc); + return nullptr; + } + + for (unsigned i = 0; i < glyph_spans.length; i++) + { + const auto &span = glyph_spans.arrayZ[i]; + if (unlikely (span.glyph < start_glyph || span.glyph > end_glyph)) + continue; + doc->glyph_spans.arrayZ[span.glyph - start_glyph] = hb_pair_t (span.start, span.end); + } + + for (unsigned i = 0; i < id_entries.length; i++) + { + const auto &e = id_entries.arrayZ[i]; + hb_pair_t *out = nullptr; + if (doc->id_spans.has (e.id, &out)) + continue; + if (unlikely (!doc->id_spans.set (e.id, hb_pair_t (e.start, e.end)))) + { + id_entries.fini (); + glyph_spans.fini (); + destroy_doc_cache (doc); + return nullptr; + } + } + + id_entries.fini (); + glyph_spans.fini (); + return doc; +} + +inline const SVG::svg_doc_cache_t * +SVG::accelerator_t::get_or_create_doc_cache (hb_blob_t *image, + const char *svg, + unsigned len, + unsigned doc_index, + hb_codepoint_t start_glyph, + hb_codepoint_t end_glyph) const +{ + if (doc_index >= doc_caches.length) + return nullptr; + + auto &slot = doc_caches.arrayZ[doc_index]; + auto *doc = slot.get_acquire (); + if (doc) + return doc; + + auto *fresh = make_doc_cache (image, svg, len, start_glyph, end_glyph); + if (!fresh) + return nullptr; + + auto *expected = (svg_doc_cache_t *) nullptr; + if (slot.cmpexch (expected, fresh)) + return fresh; + + destroy_doc_cache (fresh); + return expected; +} + +inline const char * +SVG::accelerator_t::doc_cache_get_svg (const svg_doc_cache_t *doc, + unsigned *len) const +{ + if (!doc) + { + if (len) *len = 0; + return nullptr; + } + if (len) *len = doc->len; + return doc->svg; +} + +inline const hb_vector_t * +SVG::accelerator_t::doc_cache_get_defs_entries (const svg_doc_cache_t *doc) const +{ + return doc ? &doc->defs_entries : nullptr; +} + +inline bool +SVG::accelerator_t::doc_cache_get_glyph_span (const svg_doc_cache_t *doc, + hb_codepoint_t glyph, + unsigned *start, + unsigned *end) const +{ + static const uint32_t INVALID_SPAN = 0xFFFFFFFFu; + if (!doc || doc->start_glyph == HB_CODEPOINT_INVALID || + glyph < doc->start_glyph || glyph > doc->end_glyph) + return false; + + const auto &span = doc->glyph_spans.arrayZ[glyph - doc->start_glyph]; + if (span.first == INVALID_SPAN) + return false; + if (unlikely (span.first > span.second || span.second > doc->len)) + return false; + + if (start) *start = span.first; + if (end) *end = span.second; + return true; +} + +inline bool +SVG::accelerator_t::doc_cache_find_id_span (const svg_doc_cache_t *doc, + svg_id_span_t id, + unsigned *start, + unsigned *end) const +{ + if (!doc || !id.p || !id.len) + return false; + hb_pair_t *span = nullptr; + if (!doc->id_spans.has (id, &span)) + return false; + if (unlikely (span->first > span->second || span->second > doc->len)) + return false; + if (start) *start = span->first; + if (end) *end = span->second; + return true; +} + +inline bool +SVG::accelerator_t::doc_cache_find_id_cstr (const svg_doc_cache_t *doc, + const char *id, + unsigned *start, + unsigned *end) const +{ + if (!id) return false; + svg_id_span_t key = {id, (unsigned) strlen (id)}; + return doc_cache_find_id_span (doc, key, start, end); +} + struct SVG_accelerator_t : SVG::accelerator_t { SVG_accelerator_t (hb_face_t *face) : SVG::accelerator_t (face) {} }; diff --git a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GDEF/GDEF.hh b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GDEF/GDEF.hh index 89e110990bc..23412914feb 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GDEF/GDEF.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GDEF/GDEF.hh @@ -616,7 +616,7 @@ struct GDEFVersion1_2 public: DEFINE_SIZE_MIN (4 + 4 * Types::size); - unsigned int get_size () const + size_t get_size () const { return min_size + (version.to_int () >= 0x00010002u ? markGlyphSetsDef.static_size : 0) + @@ -755,7 +755,7 @@ struct GDEF ComponentGlyph = 4 }; - unsigned int get_size () const + size_t get_size () const { switch (u.version.major) { case 1: return u.version1.get_size (); diff --git a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/CursivePosFormat1.hh b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/CursivePosFormat1.hh index f5a09e07d73..c96f66da9b3 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/CursivePosFormat1.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/CursivePosFormat1.hh @@ -51,7 +51,11 @@ struct EntryExitRecord }; static inline void -reverse_cursive_minor_offset (hb_glyph_position_t *pos, unsigned int i, hb_direction_t direction, unsigned int new_parent) +reverse_cursive_minor_offset (hb_glyph_position_t *pos, + unsigned int len, + unsigned int i, + hb_direction_t direction, + unsigned int new_parent) { int chain = pos[i].attach_chain(), type = pos[i].attach_type(); if (likely (!chain || 0 == (type & ATTACH_TYPE_CURSIVE))) @@ -61,18 +65,28 @@ reverse_cursive_minor_offset (hb_glyph_position_t *pos, unsigned int i, hb_direc unsigned int j = (int) i + chain; + if (unlikely (j >= len)) + return; + /* Stop if we see new parent in the chain. */ if (j == new_parent) return; - reverse_cursive_minor_offset (pos, j, direction, new_parent); + int16_t reversed_chain = -chain; + /* The old edge was cleared above; if the reversed distance truncates, + * keep it detached instead of storing a poisoned chain. + */ + if (unlikely (reversed_chain != -chain)) + return; + + reverse_cursive_minor_offset (pos, len, j, direction, new_parent); if (HB_DIRECTION_IS_HORIZONTAL (direction)) pos[j].y_offset = -pos[i].y_offset; else pos[j].x_offset = -pos[i].x_offset; - pos[j].attach_chain() = -chain; + pos[j].attach_chain() = reversed_chain; pos[j].attach_type() = type; } @@ -228,7 +242,7 @@ struct CursivePosFormat1 * previous connection now attaches to new parent. Watch out for case * where new parent is on the path from old chain... */ - reverse_cursive_minor_offset (pos, child, c->direction, parent); + reverse_cursive_minor_offset (pos, buffer->len, child, c->direction, parent); pos[child].attach_chain() = (int) parent - (int) child; if (pos[child].attach_chain() != (int) parent - (int) child) diff --git a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/PairSet.hh b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/PairSet.hh index e610fcd7517..d8428a12562 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/PairSet.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/PairSet.hh @@ -24,11 +24,11 @@ struct PairSet : ValueBase public: DEFINE_SIZE_MIN (2); - static unsigned get_size (unsigned len1, unsigned len2) + static size_t get_size (unsigned len1, unsigned len2) { return Types::HBGlyphID::static_size + Value::static_size * (len1 + len2); } - static unsigned get_size (const ValueFormat valueFormats[2]) + static size_t get_size (const ValueFormat valueFormats[2]) { unsigned len1 = valueFormats[0].get_len (); unsigned len2 = valueFormats[1].get_len (); @@ -39,7 +39,7 @@ struct PairSet : ValueBase { const ValueFormat *valueFormats; unsigned int len1; /* valueFormats[0].get_len() */ - unsigned int stride; /* bytes */ + size_t stride; /* bytes */ }; bool sanitize (hb_sanitize_context_t *c, const sanitize_closure_t *closure) const diff --git a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePosFormat1.hh b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePosFormat1.hh index 1a14be020f9..b33e761bac2 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePosFormat1.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePosFormat1.hh @@ -100,7 +100,7 @@ struct SinglePosFormat1 : ValueBase if (likely (index == NOT_COVERED)) return false; /* This is ugly... */ - hb_buffer_t buffer; + hb_buffer_t buffer {}; buffer.props.direction = direction; OT::hb_ot_apply_context_t c (1, font, &buffer, table_blob); diff --git a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePosFormat2.hh b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePosFormat2.hh index 455796b4b27..686126c9f5e 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePosFormat2.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/SinglePosFormat2.hh @@ -104,7 +104,7 @@ struct SinglePosFormat2 : ValueBase if (unlikely (index >= valueCount)) return false; /* This is ugly... */ - hb_buffer_t buffer; + hb_buffer_t buffer {}; buffer.props.direction = direction; OT::hb_ot_apply_context_t c (1, font, &buffer, table_blob); diff --git a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/ValueFormat.hh b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/ValueFormat.hh index b961a5139d8..613de17bf6a 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/ValueFormat.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/Layout/GPOS/ValueFormat.hh @@ -64,7 +64,7 @@ struct ValueFormat : HBUINT16 // be added to ValueFormat. As such, we use the faster hb_popcount8 // that only processes the lowest 8 bits. unsigned int get_len () const { return hb_popcount8 ((uint8_t) *this); } - unsigned int get_size () const { return get_len () * Value::static_size; } + size_t get_size () const { return get_len () * Value::static_size; } hb_vector_t get_device_table_indices () const { unsigned i = 0; diff --git a/src/java.desktop/share/native/libharfbuzz/OT/Var/VARC/VARC.cc b/src/java.desktop/share/native/libharfbuzz/OT/Var/VARC/VARC.cc index f0e7f934579..792a7553d8f 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/Var/VARC/VARC.cc +++ b/src/java.desktop/share/native/libharfbuzz/OT/Var/VARC/VARC.cc @@ -228,28 +228,28 @@ VarComponent::get_path_at (const hb_varc_context_t &c, #define PROCESS_TRANSFORM_COMPONENTS \ HB_STMT_START { \ - PROCESS_TRANSFORM_COMPONENT (FWORD, 1.0f, HAVE_TRANSLATE_X, translateX); \ - PROCESS_TRANSFORM_COMPONENT (FWORD, 1.0f, HAVE_TRANSLATE_Y, translateY); \ - PROCESS_TRANSFORM_COMPONENT (F4DOT12, HB_PI, HAVE_ROTATION, rotation); \ - PROCESS_TRANSFORM_COMPONENT (F6DOT10, 1.0f, HAVE_SCALE_X, scaleX); \ - PROCESS_TRANSFORM_COMPONENT (F6DOT10, 1.0f, HAVE_SCALE_Y, scaleY); \ - PROCESS_TRANSFORM_COMPONENT (F4DOT12, HB_PI, HAVE_SKEW_X, skewX); \ - PROCESS_TRANSFORM_COMPONENT (F4DOT12, HB_PI, HAVE_SKEW_Y, skewY); \ - PROCESS_TRANSFORM_COMPONENT (FWORD, 1.0f, HAVE_TCENTER_X, tCenterX); \ - PROCESS_TRANSFORM_COMPONENT (FWORD, 1.0f, HAVE_TCENTER_Y, tCenterY); \ + PROCESS_TRANSFORM_COMPONENT ( 0, FWORD, HAVE_TRANSLATE_X, translateX); \ + PROCESS_TRANSFORM_COMPONENT ( 0, FWORD, HAVE_TRANSLATE_Y, translateY); \ + PROCESS_TRANSFORM_COMPONENT (12, F4DOT12, HAVE_ROTATION, rotation); \ + PROCESS_TRANSFORM_COMPONENT (10, F6DOT10, HAVE_SCALE_X, scaleX); \ + PROCESS_TRANSFORM_COMPONENT (10, F6DOT10, HAVE_SCALE_Y, scaleY); \ + PROCESS_TRANSFORM_COMPONENT (12, F4DOT12, HAVE_SKEW_X, skewX); \ + PROCESS_TRANSFORM_COMPONENT (12, F4DOT12, HAVE_SKEW_Y, skewY); \ + PROCESS_TRANSFORM_COMPONENT ( 0, FWORD, HAVE_TCENTER_X, tCenterX); \ + PROCESS_TRANSFORM_COMPONENT ( 0, FWORD, HAVE_TCENTER_Y, tCenterY); \ } HB_STMT_END hb_transform_decomposed_t<> transform; // Read transform components -#define PROCESS_TRANSFORM_COMPONENT(type, mult, flag, name) \ +#define PROCESS_TRANSFORM_COMPONENT(shift, type, flag, name) \ if (flags & (unsigned) flags_t::flag) \ { \ static_assert (type::static_size == HBINT16::static_size, ""); \ if (unlikely (unsigned (end - record) < HBINT16::static_size)) \ return hb_ubytes_t (); \ hb_barrier (); \ - transform.name = mult * * (const HBINT16 *) record; \ + transform.name = * (const HBINT16 *) record; \ record += HBINT16::static_size; \ } PROCESS_TRANSFORM_COMPONENTS; @@ -270,9 +270,8 @@ VarComponent::get_path_at (const hb_varc_context_t &c, { // Only use coord_setter if there's actually any axis overrides. coord_setter_t coord_setter (axisIndices ? component_coords : hb_array ()); - // Go backwards, to reduce coord_setter vector reallocations. - for (unsigned i = axisIndices.length; i; i--) - coord_setter[axisIndices[i - 1]] = axisValues[i - 1]; + for (unsigned i = 0; i < axisIndices.length; i++) + coord_setter[axisIndices[i]] = roundf (axisValues[i]); if (axisIndices) component_coords = coord_setter.get_coords (); @@ -281,39 +280,35 @@ VarComponent::get_path_at (const hb_varc_context_t &c, { float transformValues[9]; unsigned numTransformValues = 0; -#define PROCESS_TRANSFORM_COMPONENT(type, mult, flag, name) \ +#define PROCESS_TRANSFORM_COMPONENT(shift, type, flag, name) \ if (flags & (unsigned) flags_t::flag) \ - transformValues[numTransformValues++] = transform.name / mult; + transformValues[numTransformValues++] = transform.name; PROCESS_TRANSFORM_COMPONENTS; #undef PROCESS_TRANSFORM_COMPONENT varStore.get_delta (transformVarIdx, coords, hb_array (transformValues, numTransformValues), cache); numTransformValues = 0; -#define PROCESS_TRANSFORM_COMPONENT(type, mult, flag, name) \ +#define PROCESS_TRANSFORM_COMPONENT(shift, type, flag, name) \ if (flags & (unsigned) flags_t::flag) \ - transform.name = transformValues[numTransformValues++] * mult; + transform.name = transformValues[numTransformValues++]; PROCESS_TRANSFORM_COMPONENTS; #undef PROCESS_TRANSFORM_COMPONENT } // Divide them by their divisors -#define PROCESS_TRANSFORM_COMPONENT(type, mult, flag, name) \ - if (flags & (unsigned) flags_t::flag) \ - { \ - HBINT16 int_v; \ - int_v = roundf (transform.name); \ - type typed_v = * (const type *) &int_v; \ - float float_v = (float) typed_v; \ - transform.name = float_v; \ - } +#define PROCESS_TRANSFORM_COMPONENT(shift, type, flag, name) \ + if (shift && (flags & (unsigned) flags_t::flag)) \ + transform.name *= 1.f / (1 << shift); PROCESS_TRANSFORM_COMPONENTS; #undef PROCESS_TRANSFORM_COMPONENT if (!(flags & (unsigned) flags_t::HAVE_SCALE_Y)) transform.scaleY = transform.scaleX; + transform.rotation *= HB_PI; + transform.skewX *= HB_PI; + transform.skewY *= HB_PI; + total_transform.transform (transform.to_transform ()); - total_transform.scale (c.font->x_mult ? 1.f / c.font->x_multf : 0.f, - c.font->y_mult ? 1.f / c.font->y_multf : 0.f); bool same_coords = component_coords.length == coords.length && component_coords.arrayZ == coords.arrayZ; @@ -348,14 +343,18 @@ VARC::get_path_at (const hb_varc_context_t &c, { if (c.draw_session) { + hb_transform_t<> leaf_transform = transform; + leaf_transform.x0 *= c.font->x_multf; + leaf_transform.y0 *= c.font->y_multf; + // Build a transforming pen to apply the transform. hb_draw_funcs_t *transformer_funcs = hb_transforming_pen_get_funcs (); - hb_transforming_pen_context_t context {transform, + hb_transforming_pen_context_t context {leaf_transform, c.draw_session->funcs, c.draw_session->draw_data, &c.draw_session->st}; hb_draw_session_t transformer_session {transformer_funcs, &context}; - hb_draw_session_t &shape_draw_session = transform.is_identity () ? *c.draw_session : transformer_session; + hb_draw_session_t &shape_draw_session = leaf_transform.is_identity () ? *c.draw_session : transformer_session; if (c.font->face->table.glyf->get_path_at (c.font, glyph, shape_draw_session, coords, c.scratch.glyf_scratch)) return true; #ifndef HB_NO_CFF @@ -375,7 +374,10 @@ VARC::get_path_at (const hb_varc_context_t &c, return false; hb_extents_t<> comp_extents (glyph_extents); - transform.transform_extents (comp_extents); + hb_transform_t<> leaf_transform = transform; + leaf_transform.x0 *= c.font->x_multf; + leaf_transform.y0 *= c.font->y_multf; + leaf_transform.transform_extents (comp_extents); c.extents->union_ (comp_extents); } return true; @@ -399,8 +401,6 @@ VARC::get_path_at (const hb_varc_context_t &c, parent_cache : (this+varStore).create_cache (&static_cache); - transform.scale (c.font->x_multf, c.font->y_multf); - VarCompositeGlyph::get_path_at (c, glyph, coords, transform, diff --git a/src/java.desktop/share/native/libharfbuzz/OT/glyf/CompositeGlyph.hh b/src/java.desktop/share/native/libharfbuzz/OT/glyf/CompositeGlyph.hh index fb347770e6f..7243e180101 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/glyf/CompositeGlyph.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/glyf/CompositeGlyph.hh @@ -33,7 +33,7 @@ struct CompositeGlyphRecord }; public: - unsigned int get_size () const + size_t get_size () const { unsigned int size = min_size; /* glyphIndex is 24bit instead of 16bit */ diff --git a/src/java.desktop/share/native/libharfbuzz/OT/glyf/Glyph.hh b/src/java.desktop/share/native/libharfbuzz/OT/glyf/Glyph.hh index 8f5287e9457..432b4dfe464 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/glyf/Glyph.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/glyf/Glyph.hh @@ -384,20 +384,24 @@ struct Glyph { #ifndef HB_NO_BEYOND_64K if (glyf_accelerator.GVAR->has_data ()) - glyf_accelerator.GVAR->apply_deltas_to_points (gid, - coords, - points.as_array ().sub_array (old_length), - scratch, - gvar_cache, - phantom_only && type == SIMPLE); + { + if (!glyf_accelerator.GVAR->apply_deltas_to_points (gid, + coords, + points.as_array ().sub_array (old_length), + scratch, + gvar_cache, + phantom_only && type == SIMPLE)) + return false; + } else #endif - glyf_accelerator.gvar->apply_deltas_to_points (gid, - coords, - points.as_array ().sub_array (old_length), - scratch, - gvar_cache, - phantom_only && type == SIMPLE); + if (!glyf_accelerator.gvar->apply_deltas_to_points (gid, + coords, + points.as_array ().sub_array (old_length), + scratch, + gvar_cache, + phantom_only && type == SIMPLE)) + return false; } #endif diff --git a/src/java.desktop/share/native/libharfbuzz/OT/glyf/SimpleGlyph.hh b/src/java.desktop/share/native/libharfbuzz/OT/glyf/SimpleGlyph.hh index 507c94f7f3d..d94a2f3ddfe 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/glyf/SimpleGlyph.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/glyf/SimpleGlyph.hh @@ -186,6 +186,7 @@ struct SimpleGlyph /* One extra item at the end, for the instruction-count below. */ if (unlikely (!bytes.check_range (&endPtsOfContours[num_contours]))) return false; unsigned int num_points = endPtsOfContours[num_contours - 1] + 1; + if (unlikely (num_points < (unsigned) num_contours)) return false; unsigned old_length = points.length; points.alloc (points.length + num_points + 4); // Allocate for phantom points, to avoid a possible copy diff --git a/src/java.desktop/share/native/libharfbuzz/OT/glyf/glyf.hh b/src/java.desktop/share/native/libharfbuzz/OT/glyf/glyf.hh index 3fe2506bec9..9f5f267f96a 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/glyf/glyf.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/glyf/glyf.hh @@ -121,7 +121,7 @@ struct glyf if (!use_short_loca) { - padded_offsets.resize (0); + padded_offsets.clear (); for (auto &g : glyphs) padded_offsets.push (g.length ()); } @@ -226,7 +226,7 @@ struct glyf_accelerator_t if (gid >= num_glyphs) return false; auto &all_points = scratch.all_points; - all_points.resize (0); + all_points.clear (); bool phantom_only = !consumer.is_consuming_contour_points (); if (unlikely (!glyph_for_gid (gid).get_points (font, *this, all_points, scratch, nullptr, nullptr, nullptr, true, true, phantom_only, coords, gvar_cache))) diff --git a/src/java.desktop/share/native/libharfbuzz/OT/name/name.hh b/src/java.desktop/share/native/libharfbuzz/OT/name/name.hh index b440379afbe..50ec34d542a 100644 --- a/src/java.desktop/share/native/libharfbuzz/OT/name/name.hh +++ b/src/java.desktop/share/native/libharfbuzz/OT/name/name.hh @@ -312,7 +312,7 @@ struct name { static constexpr hb_tag_t tableTag = HB_OT_TAG_name; - unsigned int get_size () const + size_t get_size () const { return min_size + count * nameRecordZ.item_size; } template { bool sanitize (graph_t::vertex_t& vertex) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; constexpr unsigned min_size = OT::ClassDefFormat1_3::min_size; if (vertex_len < min_size) return false; hb_barrier (); @@ -48,7 +48,7 @@ struct ClassDefFormat2 : public OT::ClassDefFormat2_4 { bool sanitize (graph_t::vertex_t& vertex) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; constexpr unsigned min_size = OT::ClassDefFormat2_4::min_size; if (vertex_len < min_size) return false; hb_barrier (); @@ -114,7 +114,7 @@ struct ClassDef : public OT::ClassDef bool sanitize (graph_t::vertex_t& vertex) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; if (vertex_len < OT::ClassDef::min_size) return false; hb_barrier (); switch (u.format.v) diff --git a/src/java.desktop/share/native/libharfbuzz/graph/coverage-graph.hh b/src/java.desktop/share/native/libharfbuzz/graph/coverage-graph.hh index 46c703524d9..5778ee9e1d3 100644 --- a/src/java.desktop/share/native/libharfbuzz/graph/coverage-graph.hh +++ b/src/java.desktop/share/native/libharfbuzz/graph/coverage-graph.hh @@ -36,7 +36,7 @@ static bool sanitize ( const OT::Layout::Common::CoverageFormat1_3* thiz, graph_t::vertex_t& vertex ) { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; constexpr unsigned min_size = OT::Layout::Common::CoverageFormat1_3::min_size; if (vertex_len < min_size) return false; hb_barrier (); @@ -47,7 +47,7 @@ static bool sanitize ( const OT::Layout::Common::CoverageFormat2_4* thiz, graph_t::vertex_t& vertex ) { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; constexpr unsigned min_size = OT::Layout::Common::CoverageFormat2_4::min_size; if (vertex_len < min_size) return false; hb_barrier (); @@ -158,7 +158,7 @@ struct Coverage : public OT::Layout::Common::Coverage bool sanitize (graph_t::vertex_t& vertex) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; if (vertex_len < OT::Layout::Common::Coverage::min_size) return false; hb_barrier (); switch (u.format.v) diff --git a/src/java.desktop/share/native/libharfbuzz/graph/graph.hh b/src/java.desktop/share/native/libharfbuzz/graph/graph.hh index 78ae1a9dd5b..9ca7434ca19 100644 --- a/src/java.desktop/share/native/libharfbuzz/graph/graph.hh +++ b/src/java.desktop/share/native/libharfbuzz/graph/graph.hh @@ -814,6 +814,11 @@ struct graph_t if (unlikely (!check_success (!connected_roots.in_error ()))) break; unsigned next_space = this->next_space (); + if (next_space >= HB_REPACKER_MAX_SPACES) + { + check_success (false); + break; + } num_roots_for_space_.push (0); for (unsigned root : connected_roots) { @@ -1062,6 +1067,12 @@ struct graph_t */ unsigned duplicate (unsigned node_idx) { + if (vertices_.length >= HB_REPACKER_MAX_VERTICES) + { + check_success (false); + return -1; + } + positions_invalid = true; distance_invalid = true; @@ -1221,6 +1232,12 @@ struct graph_t */ unsigned new_node (char* head, char* tail) { + if (vertices_.length >= HB_REPACKER_MAX_VERTICES) + { + check_success (false); + return -1; + } + positions_invalid = true; distance_invalid = true; @@ -1384,6 +1401,11 @@ struct graph_t void move_to_new_space (const hb_set_t& indices) { + if (num_roots_for_space_.length >= HB_REPACKER_MAX_SPACES) + { + check_success (false); + return; + } num_roots_for_space_.push (0); unsigned new_space = num_roots_for_space_.length - 1; diff --git a/src/java.desktop/share/native/libharfbuzz/graph/gsubgpos-graph.hh b/src/java.desktop/share/native/libharfbuzz/graph/gsubgpos-graph.hh index ea6bcd239a0..73f4b15660f 100644 --- a/src/java.desktop/share/native/libharfbuzz/graph/gsubgpos-graph.hh +++ b/src/java.desktop/share/native/libharfbuzz/graph/gsubgpos-graph.hh @@ -52,7 +52,7 @@ struct ExtensionFormat1 : public OT::ExtensionFormat1 bool sanitize (graph_t::vertex_t& vertex) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; return vertex_len >= OT::ExtensionFormat1::static_size; } @@ -76,7 +76,7 @@ struct Lookup : public OT::Lookup bool sanitize (graph_t::vertex_t& vertex) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; if (vertex_len < OT::Lookup::min_size) return false; hb_barrier (); return vertex_len >= this->get_size (); @@ -390,7 +390,7 @@ struct LookupList : public OT::LookupList { bool sanitize (const graph_t::vertex_t& vertex) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; if (vertex_len < OT::LookupList::min_size) return false; hb_barrier (); return vertex_len >= OT::LookupList::item_size * this->len; @@ -424,7 +424,7 @@ struct GSTAR : public OT::GSUBGPOS bool sanitize (const graph_t::vertex_t& vertex) { - int64_t len = vertex.obj.tail - vertex.obj.head; + size_t len = vertex.obj.tail - vertex.obj.head; if (len < OT::GSUBGPOS::min_size) return false; hb_barrier (); return len >= get_size (); diff --git a/src/java.desktop/share/native/libharfbuzz/graph/markbasepos-graph.hh b/src/java.desktop/share/native/libharfbuzz/graph/markbasepos-graph.hh index 6d1a3d4ae4b..a653f402ab1 100644 --- a/src/java.desktop/share/native/libharfbuzz/graph/markbasepos-graph.hh +++ b/src/java.desktop/share/native/libharfbuzz/graph/markbasepos-graph.hh @@ -38,7 +38,7 @@ struct AnchorMatrix : public OT::Layout::GPOS_impl::AnchorMatrix { bool sanitize (graph_t::vertex_t& vertex, unsigned class_count) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; if (vertex_len < AnchorMatrix::min_size) return false; hb_barrier (); @@ -126,7 +126,7 @@ struct MarkArray : public OT::Layout::GPOS_impl::MarkArray { bool sanitize (graph_t::vertex_t& vertex) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; unsigned min_size = MarkArray::min_size; if (vertex_len < min_size) return false; hb_barrier (); @@ -207,7 +207,7 @@ struct MarkBasePosFormat1 : public OT::Layout::GPOS_impl::MarkBasePosFormat1_2= MarkBasePosFormat1::static_size; } @@ -430,7 +430,6 @@ struct MarkBasePosFormat1 : public OT::Layout::GPOS_impl::MarkBasePosFormat1_2baseCoverage), prime_id, base_coverage_id); - graph.duplicate (prime_id, base_coverage_id); auto mark_coverage = sc.c.graph.as_table (this_index, &markCoverage); @@ -493,7 +492,7 @@ struct MarkBasePos : public OT::Layout::GPOS_impl::MarkBasePos bool sanitize (graph_t::vertex_t& vertex) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; if (vertex_len < u.format.v.get_size ()) return false; hb_barrier (); diff --git a/src/java.desktop/share/native/libharfbuzz/graph/pairpos-graph.hh b/src/java.desktop/share/native/libharfbuzz/graph/pairpos-graph.hh index 85950b63457..7c3b048195d 100644 --- a/src/java.desktop/share/native/libharfbuzz/graph/pairpos-graph.hh +++ b/src/java.desktop/share/native/libharfbuzz/graph/pairpos-graph.hh @@ -39,7 +39,7 @@ struct PairPosFormat1 : public OT::Layout::GPOS_impl::PairPosFormat1_3::min_size; if (vertex_len < min_size) return false; hb_barrier (); @@ -422,7 +422,6 @@ struct PairPosFormat2 : public OT::Layout::GPOS_impl::PairPosFormat2_4objidx = class_def_2_id; class_def_link->position = 10; graph.vertices_[class_def_2_id].add_parent (pair_pos_prime_id, false); - graph.duplicate (pair_pos_prime_id, class_def_2_id); return pair_pos_prime_id; } @@ -624,7 +623,7 @@ struct PairPos : public OT::Layout::GPOS_impl::PairPos bool sanitize (graph_t::vertex_t& vertex) const { - int64_t vertex_len = vertex.obj.tail - vertex.obj.head; + size_t vertex_len = vertex.obj.tail - vertex.obj.head; if (vertex_len < u.format.v.get_size ()) return false; hb_barrier (); diff --git a/src/java.desktop/share/native/libharfbuzz/graph/serialize.hh b/src/java.desktop/share/native/libharfbuzz/graph/serialize.hh index 37fac8909e5..4f89f1011d8 100644 --- a/src/java.desktop/share/native/libharfbuzz/graph/serialize.hh +++ b/src/java.desktop/share/native/libharfbuzz/graph/serialize.hh @@ -108,7 +108,7 @@ inline bool will_overflow (graph_t& graph, hb_vector_t* overflows = nullptr) { - if (overflows) overflows->resize (0); + if (overflows) overflows->clear (); graph.update_positions (); hb_hashmap_t record_set; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-aat-layout-kerx-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-aat-layout-kerx-table.hh index 2a6b813972f..1186cad41f8 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-aat-layout-kerx-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-aat-layout-kerx-table.hh @@ -861,7 +861,7 @@ struct KerxSubTable { friend struct kerx; - unsigned int get_size () const { return u.header.length; } + size_t get_size () const { return u.header.length; } unsigned int get_type () const { return u.header.coverage & u.header.SubtableType; } template diff --git a/src/java.desktop/share/native/libharfbuzz/hb-aat-layout-morx-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-aat-layout-morx-table.hh index 2cbb86c7566..fef21450b27 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-aat-layout-morx-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-aat-layout-morx-table.hh @@ -987,9 +987,16 @@ struct hb_aat_layout_chain_accelerator_t { unsigned count = chain.get_subtable_count (); - unsigned size = sizeof (hb_aat_layout_chain_accelerator_t) - - HB_VAR_ARRAY * sizeof (hb_accelerate_subtables_context_t::hb_applicable_t) + - count * sizeof (hb_accelerate_subtables_context_t::hb_applicable_t); + unsigned product; + if (unlikely (hb_unsigned_mul_overflows (count, + sizeof (hb_accelerate_subtables_context_t::hb_applicable_t), &product))) + return nullptr; + + unsigned size; + if (unlikely (hb_unsigned_add_overflows (sizeof (hb_aat_layout_chain_accelerator_t) - + HB_VAR_ARRAY * sizeof (hb_accelerate_subtables_context_t::hb_applicable_t), product, &size))) { + return nullptr; + } /* The following is a calloc because when we are collecting subtables, * some of them might be invalid and hence not collect; as a result, @@ -1026,7 +1033,7 @@ struct ChainSubtable template friend struct Chain; - unsigned int get_size () const { return length; } + size_t get_size () const { return length; } unsigned int get_type () const { return coverage & 0xFF; } unsigned int get_coverage () const { return coverage >> (sizeof (HBUINT) * 8 - 8); } @@ -1236,7 +1243,7 @@ struct Chain c->reverse_buffer (); } - unsigned int get_size () const { return length; } + size_t get_size () const { return length; } template typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const diff --git a/src/java.desktop/share/native/libharfbuzz/hb-algs.hh b/src/java.desktop/share/native/libharfbuzz/hb-algs.hh index 651ffcda01d..05053b1f858 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-algs.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-algs.hh @@ -89,7 +89,16 @@ static inline constexpr uint32_t hb_uint32_swap (uint32_t v) { return (hb_uint16_swap (v) << 16) | hb_uint16_swap (v >> 16); } template -struct __attribute__((packed)) hb_packed_t { Type v; }; +struct __attribute__((packed)) hb_packed_t +{ + hb_packed_t () = default; + constexpr hb_packed_t (Type V) : v (V) {} + operator Type () const { return v; } + hb_packed_t & operator = (Type V) { v = V; return *this; } + + private: + Type v; +}; #ifndef HB_FAST_NUM_ACCESS @@ -134,9 +143,9 @@ struct HBInt #if HB_FAST_NUM_ACCESS { if (BE == (__BYTE_ORDER == __BIG_ENDIAN)) - ((hb_packed_t *) v)->v = V; + *((hb_packed_t *) v) = V; else - ((hb_packed_t *) v)->v = __builtin_bswap16 (V); + *((hb_packed_t *) v) = __builtin_bswap16 (V); } #else : v {BE ? uint8_t ((V >> 8) & 0xFF) : uint8_t ((V ) & 0xFF), @@ -147,9 +156,9 @@ struct HBInt { #if HB_FAST_NUM_ACCESS return (BE == (__BYTE_ORDER == __BIG_ENDIAN)) ? - ((const hb_packed_t *) v)->v + (uint16_t) *((const hb_packed_t *) v) : - __builtin_bswap16 (((const hb_packed_t *) v)->v) + __builtin_bswap16 ((uint16_t) *((const hb_packed_t *) v)) ; #else return (BE ? (v[0] << 8) : (v[0] )) @@ -186,9 +195,9 @@ struct HBInt #if HB_FAST_NUM_ACCESS { if (BE == (__BYTE_ORDER == __BIG_ENDIAN)) - ((hb_packed_t *) v)->v = V; + *((hb_packed_t *) v) = V; else - ((hb_packed_t *) v)->v = __builtin_bswap32 (V); + *((hb_packed_t *) v) = __builtin_bswap32 (V); } #else : v {BE ? uint8_t ((V >> 24) & 0xFF) : uint8_t ((V ) & 0xFF), @@ -200,9 +209,9 @@ struct HBInt constexpr operator Type () const { #if HB_FAST_NUM_ACCESS return (BE == (__BYTE_ORDER == __BIG_ENDIAN)) ? - ((const hb_packed_t *) v)->v + (uint32_t) *((const hb_packed_t *) v) : - __builtin_bswap32 (((const hb_packed_t *) v)->v) + __builtin_bswap32 ((uint32_t) *((const hb_packed_t *) v)) ; #else return (BE ? (v[0] << 24) : (v[0] )) @@ -226,9 +235,9 @@ struct HBInt #if HB_FAST_NUM_ACCESS { if (BE == (__BYTE_ORDER == __BIG_ENDIAN)) - ((hb_packed_t *) v)->v = V; + *((hb_packed_t *) v) = V; else - ((hb_packed_t *) v)->v = __builtin_bswap64 (V); + *((hb_packed_t *) v) = __builtin_bswap64 (V); } #else : v {BE ? uint8_t ((V >> 56) & 0xFF) : uint8_t ((V ) & 0xFF), @@ -244,9 +253,9 @@ struct HBInt constexpr operator Type () const { #if HB_FAST_NUM_ACCESS return (BE == (__BYTE_ORDER == __BIG_ENDIAN)) ? - ((const hb_packed_t *) v)->v + (uint64_t) *((const hb_packed_t *) v) : - __builtin_bswap64 (((const hb_packed_t *) v)->v) + __builtin_bswap64 ((uint64_t) *((const hb_packed_t *) v)) ; #else return (BE ? (uint64_t (v[0]) << 56) : (uint64_t (v[0]) )) @@ -276,12 +285,12 @@ struct HBFloat { #if HB_FAST_NUM_ACCESS { - if (BE == (__BYTE_ORDER == __BIG_ENDIAN)) - { - ((hb_packed_t *) v)->v = V; - return; - } - } + if (BE == (__BYTE_ORDER == __BIG_ENDIAN)) + { + *((hb_packed_t *) v) = V; + return; + } + } #endif union { @@ -289,7 +298,7 @@ struct HBFloat hb_packed_t i; } u = {{V}}; - const HBInt I = u.i.v; + const HBInt I = (IntType) u.i; for (unsigned i = 0; i < Bytes; i++) v[i] = I.v[i]; } @@ -297,10 +306,10 @@ struct HBFloat /* c++14 constexpr */ operator Type () const { #if HB_FAST_NUM_ACCESS - { - if (BE == (__BYTE_ORDER == __BIG_ENDIAN)) - return ((const hb_packed_t *) v)->v; - } + { + if (BE == (__BYTE_ORDER == __BIG_ENDIAN)) + return (Type) *((const hb_packed_t *) v); + } #endif HBInt I; @@ -312,7 +321,7 @@ struct HBFloat hb_packed_t f; } u = {{I}}; - return u.f.v; + return (Type) u.f; } private: uint8_t v[Bytes]; }; @@ -1191,6 +1200,21 @@ hb_unsigned_mul_overflows (unsigned int count, unsigned int size, unsigned *resu return (size > 0) && (count >= ((unsigned int) -1) / size); } +static inline bool +hb_unsigned_add_overflows (unsigned int a, unsigned int b, unsigned *result = nullptr) +{ +#if hb_has_builtin(__builtin_add_overflow) + unsigned stack_result; + if (!result) + result = &stack_result; + return __builtin_add_overflow (a, b, result); +#endif + + if (result) + *result = a + b; + return b > (unsigned int) -1 - a; +} + /* * Sort and search. @@ -1315,15 +1339,12 @@ static inline void sort_r_swap(char *__restrict a, char *__restrict b, /* swap a, b iff a>b */ /* a and b must not be equal! */ /* __restrict is same as restrict but better support on old machines */ -template +template static inline int sort_r_cmpswap(char *__restrict a, char *__restrict b, size_t w, - int (*compar)(const void *_a, - const void *_b, - Ts... _ds), - Ts... ds) + Compar compar) { - if(compar(a, b, ds...) > 0) { + if(compar(a, b) > 0) { sort_r_swap(a, b, w); return 1; } @@ -1348,23 +1369,17 @@ static inline void sort_r_swap_blocks(char *ptr, size_t na, size_t nb) /* Implement recursive quicksort ourselves */ /* Note: quicksort is not stable, equivalent values may be swapped */ -template +template static inline void sort_r_simple(void *base, size_t nel, size_t w, - int (*compar)(const void *_a, - const void *_b, - Ts... _ds), - Ts... ds) + Compar compar) { char *b = (char *)base, *end = b + nel*w; - /* for(size_t i=0; i b && sort_r_cmpswap(pj-w,pj,w,compar,ds...); pj -= w) {} + for(pj = pi; pj > b && sort_r_cmpswap(pj-w,pj,w,compar); pj -= w) {} } } else @@ -1375,68 +1390,36 @@ static inline void sort_r_simple(void *base, size_t nel, size_t w, char *pl, *ple, *pr, *pre, *pivot; char *last = b+w*(nel-1), *tmp; - /* - Use median of second, middle and second-last items as pivot. - First and last may have been swapped with pivot and therefore be extreme - */ char *l[3]; l[0] = b + w; l[1] = b+w*(nel/2); l[2] = last - w; - /* printf("pivots: %i, %i, %i\n", *(int*)l[0], *(int*)l[1], *(int*)l[2]); */ - - if(compar(l[0],l[1],ds...) > 0) { SORT_R_SWAP(l[0], l[1], tmp); } - if(compar(l[1],l[2],ds...) > 0) { + if(compar(l[0],l[1]) > 0) { SORT_R_SWAP(l[0], l[1], tmp); } + if(compar(l[1],l[2]) > 0) { SORT_R_SWAP(l[1], l[2], tmp); - if(compar(l[0],l[1],ds...) > 0) { SORT_R_SWAP(l[0], l[1], tmp); } + if(compar(l[0],l[1]) > 0) { SORT_R_SWAP(l[0], l[1], tmp); } } - /* swap mid value (l[1]), and last element to put pivot as last element */ if(l[1] != last) { sort_r_swap(l[1], last, w); } - /* - pl is the next item on the left to be compared to the pivot - pr is the last item on the right that was compared to the pivot - ple is the left position to put the next item that equals the pivot - ple is the last right position where we put an item that equals the pivot - v- end (beyond the array) - EEEEEELLLLLLLLuuuuuuuuGGGGGGGEEEEEEEE. - ^- b ^- ple ^- pl ^- pr ^- pre ^- last (where the pivot is) - Pivot comparison key: - E = equal, L = less than, u = unknown, G = greater than, E = equal - */ pivot = last; ple = pl = b; pre = pr = last; - /* - Strategy: - Loop into the list from the left and right at the same time to find: - - an item on the left that is greater than the pivot - - an item on the right that is less than the pivot - Once found, they are swapped and the loop continues. - Meanwhile items that are equal to the pivot are moved to the edges of the - array. - */ while(pl < pr) { - /* Move left hand items which are equal to the pivot to the far left. - break when we find an item that is greater than the pivot */ for(; pl < pr; pl += w) { - cmp = compar(pl, pivot, ds...); + cmp = compar(pl, pivot); if(cmp > 0) { break; } else if(cmp == 0) { if(ple < pl) { sort_r_swap(ple, pl, w); } ple += w; } } - /* break if last batch of left hand items were equal to pivot */ if(pl >= pr) { break; } - /* Move right hand items which are equal to the pivot to the far right. - break when we find an item that is less than the pivot */ for(; pl < pr; ) { - pr -= w; /* Move right pointer onto an unprocessed item */ - cmp = compar(pr, pivot, ds...); + pr -= w; + cmp = compar(pr, pivot); if(cmp == 0) { pre -= w; if(pr < pre) { sort_r_swap(pr, pre, w); } @@ -1449,22 +1432,13 @@ static inline void sort_r_simple(void *base, size_t nel, size_t w, } } - pl = pr; /* pr may have gone below pl */ + pl = pr; - /* - Now we need to go from: EEELLLGGGGEEEE - to: LLLEEEEEEEGGGG - Pivot comparison key: - E = equal, L = less than, u = unknown, G = greater than, E = equal - */ sort_r_swap_blocks(b, ple-b, pl-ple); sort_r_swap_blocks(pr, pre-pr, end-pre); - /*for(size_t i=0; i static inline void @@ -1664,6 +1624,13 @@ double solve_itp (func_t f, double min_y, double max_y, double &ya, double &yb, double &y) { + // Guard against degenerate interval + if (b - a <= 0.0) + { + y = ya; + return a; + } + unsigned n1_2 = (unsigned) (hb_max (ceil (log2 ((b - a) / epsilon)) - 1.0, 0.0)); const unsigned n0 = 1; // Hardwired const double k1 = 0.2 / (b - a); // Hardwired. @@ -1674,7 +1641,8 @@ double solve_itp (func_t f, { double x1_2 = 0.5 * (a + b); double r = scaled_epsilon - 0.5 * (b - a); - double xf = (yb * a - ya * b) / (yb - ya); + // Guard against yb == ya to prevent division by zero + double xf = (yb != ya) ? (yb * a - ya * b) / (yb - ya) : x1_2; double sigma = x1_2 - xf; double b_a = b - a; // This has k2 = 2 hardwired for efficiency. @@ -1705,4 +1673,51 @@ double solve_itp (func_t f, } +/* + * Scope guard: runs a callable at scope exit (RAII cleanup for + * non-HB-type resources — raw malloc'd buffers, paired init/end + * calls like inflateInit/inflateEnd, FT_Done_* handles, etc.). + * + * Prefer hb_unique_ptr_t etc. for HB types; this is + * for the long tail of cleanup that those wrappers don't cover. + * + * Usage: + * void *buf = hb_malloc (len); + * if (!buf) return false; + * HB_SCOPE_GUARD (hb_free (buf)); + * ... multiple fallible operations ... + * return true; // buf freed automatically on any return path + */ +template +struct hb_scope_guard_t +{ + explicit hb_scope_guard_t (F &&f) : f (std::move (f)), active (true) {} + hb_scope_guard_t (hb_scope_guard_t &&o) noexcept + : f (std::move (o.f)), active (o.active) { o.active = false; } + hb_scope_guard_t (const hb_scope_guard_t &) = delete; + hb_scope_guard_t &operator= (const hb_scope_guard_t &) = delete; + hb_scope_guard_t &operator= (hb_scope_guard_t &&) = delete; + ~hb_scope_guard_t () { if (active) f (); } + + /* Release: dismiss the guard so the cleanup does NOT run. Use + * when transferring ownership out of the scope. */ + void release () { active = false; } + + private: + F f; + bool active; +}; + +template +static inline hb_scope_guard_t hb_make_scope_guard (F &&f) +{ return hb_scope_guard_t (std::forward (f)); } + +#define HB_SCOPE_GUARD_NAME_(line) hb_scope_guard_##line +#define HB_SCOPE_GUARD_NAME(line) HB_SCOPE_GUARD_NAME_(line) +#define HB_SCOPE_GUARD(stmt) \ + auto HB_SCOPE_GUARD_NAME(__LINE__) = \ + hb_make_scope_guard ([&]() { stmt; }); \ + (void) HB_SCOPE_GUARD_NAME(__LINE__) + + #endif /* HB_ALGS_HH */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-array.hh b/src/java.desktop/share/native/libharfbuzz/hb-array.hh index 71d3bcdf1ea..dd3369307ef 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-array.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-array.hh @@ -32,6 +32,8 @@ #include "hb-iter.hh" #include "hb-null.hh" +#include + template struct hb_sorted_array_t; @@ -219,26 +221,54 @@ struct hb_array_t : hb_iter_with_fallback_t, Type&> return false; } - hb_sorted_array_t qsort (int (*cmp_)(const void*, const void*)) + hb_sorted_array_t qsort (int (*cmp)(const void*, const void*)) { - //static_assert (hb_enable_if (hb_is_trivially_copy_assignable(Type)), ""); if (likely (length)) - hb_qsort (arrayZ, length, this->get_item_size (), cmp_); + hb_qsort (arrayZ, length, this->get_item_size (), cmp); return hb_sorted_array_t (*this); } + /* std::sort wants a strict-weak `a < b` boolean, but our other + * qsort overload (and most existing call sites) follow the C + * qsort convention of returning negative / zero / positive ints. + * Adapt to either via overload resolution: bool passes through; + * any other arithmetic return type is treated as the int signed + * comparator. */ + template static bool _qsort_lt (T v) { return v < 0; } + static bool _qsort_lt (bool v) { return v; } + + template + hb_sorted_array_t qsort (Compar compar) + { + if (likely (length)) + std::sort (arrayZ, arrayZ + length, + [&] (const Type &a, const Type &b) + { return _qsort_lt (compar (a, b)); }); + return hb_sorted_array_t (*this); + } + + private: + template ::value)> + hb_sorted_array_t _qsort (hb_priority<1>) + { + return qsort ([] (const Type &a, const Type &b) { return Type::cmp (&a, &b) < 0; }); + } + hb_sorted_array_t _qsort (hb_priority<0>) + { + return qsort ((int(*)(const void*, const void*)) Type::cmp); + } + public: + hb_sorted_array_t qsort () { - //static_assert (hb_enable_if (hb_is_trivially_copy_assignable(Type)), ""); - if (likely (length)) - hb_qsort (arrayZ, length, this->get_item_size (), Type::cmp); - return hb_sorted_array_t (*this); + return _qsort (hb_prioritize); } /* * Other methods. */ - unsigned int get_size () const { return length * this->get_item_size (); } + size_t get_size () const { return length * this->get_item_size (); } /* * Reverse the order of items in this array in the range [start, end). diff --git a/src/java.desktop/share/native/libharfbuzz/hb-atomic.hh b/src/java.desktop/share/native/libharfbuzz/hb-atomic.hh index 05aaf5a155e..f95a3079475 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-atomic.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-atomic.hh @@ -193,6 +193,9 @@ struct hb_atomic_t T *get_acquire () const { return v.load (std::memory_order_acquire); } bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); } + hb_atomic_t &operator= (const hb_atomic_t& o) { set_relaxed (o.get_relaxed ()); return *this; } + hb_atomic_t &operator= (hb_atomic_t&& o){ set_relaxed (o.get_relaxed ()); o.set_relaxed ({}); return *this; } + operator bool () const { return get_acquire () != nullptr; } T *operator->() const { return get_acquire (); } template diff --git a/src/java.desktop/share/native/libharfbuzz/hb-bimap.hh b/src/java.desktop/share/native/libharfbuzz/hb-bimap.hh index f9c0e8870ff..35aa9aa4e79 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-bimap.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-bimap.hh @@ -115,7 +115,7 @@ struct hb_inc_bimap_t void clear () { forw_map.clear (); - back_map.resize (0); + back_map.clear (); } /* Add a mapping from lhs to rhs with a unique value if lhs is unknown. diff --git a/src/java.desktop/share/native/libharfbuzz/hb-bit-set-invertible.hh b/src/java.desktop/share/native/libharfbuzz/hb-bit-set-invertible.hh index 4028dd63531..2c97f416fe6 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-bit-set-invertible.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-bit-set-invertible.hh @@ -173,7 +173,14 @@ struct hb_bit_set_invertible_t bool is_subset (const hb_bit_set_invertible_t &larger_set) const { if (unlikely (inverted != larger_set.inverted)) - return hb_all (hb_iter (s) | hb_map (larger_set.s)); + { + if (inverted) + return hb_all (iter (), larger_set.s); + else + // larger set is inverted so larger_set.s is the set of things that are not present + // in larger_set, therefore if s has any of those it can't be a subset. + return !s.intersects (larger_set.s); + } else return unlikely (inverted) ? larger_set.s.is_subset (s) : s.is_subset (larger_set.s); } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-bit-set.hh b/src/java.desktop/share/native/libharfbuzz/hb-bit-set.hh index f86d5750854..9e29d2af323 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-bit-set.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-bit-set.hh @@ -117,9 +117,15 @@ struct hb_bit_set_t void clear () { - resize (0); - if (likely (successful)) - population = 0; + /* Early-out on already-empty. Protects the Null singleton + * (which is zero-initialized) from any writes. Any non-empty + * instance is a real heap object with writable storage, so + * clearing through the vector's always-safe clear() is fine + * even if we entered error state. */ + if (!pages.length && !population) return; + pages.clear (); + page_map.clear (); + population = 0; } bool is_empty () const { @@ -438,23 +444,31 @@ struct hb_bit_set_t return false; uint32_t spi = 0; - for (uint32_t lpi = 0; spi < page_map.length && lpi < larger_set.page_map.length; lpi++) + uint32_t lpi = 0; + while (spi < page_map.length && lpi < larger_set.page_map.length) { uint32_t spm = page_map.arrayZ[spi].major; uint32_t lpm = larger_set.page_map.arrayZ[lpi].major; auto sp = page_at (spi); - if (spm < lpm && !sp.is_empty ()) - return false; - - if (lpm < spm) + if (spm < lpm) { + if (!sp.is_empty ()) + return false; + spi++; continue; + } + + if (lpm < spm) { + lpi++; + continue; + } auto lp = larger_set.page_at (lpi); if (!sp.is_subset (lp)) return false; spi++; + lpi++; } while (spi < page_map.length) diff --git a/src/java.desktop/share/native/libharfbuzz/hb-blob.cc b/src/java.desktop/share/native/libharfbuzz/hb-blob.cc index a19599fac09..e60259f52da 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-blob.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-blob.cc @@ -615,6 +615,160 @@ hb_blob_create_from_file (const char *file_name) return likely (blob) ? blob : hb_blob_get_empty (); } +#if defined(HAVE_MMAP) && !defined(HB_NO_MMAP) +static hb_blob_t * +_hb_blob_try_mmap (const char *file_name) +{ + hb_mapped_file_t *file = (hb_mapped_file_t *) hb_calloc (1, sizeof (hb_mapped_file_t)); + if (unlikely (!file)) return nullptr; + auto file_guard = hb_make_scope_guard ([&]() { hb_free (file); }); + + int fd = open (file_name, O_RDONLY | O_BINARY, 0); + if (unlikely (fd == -1)) return nullptr; + auto fd_guard = hb_make_scope_guard ([&]() { close (fd); }); + + struct stat st; + if (unlikely (fstat (fd, &st) == -1)) return nullptr; + + file->length = (unsigned long) st.st_size; + +#ifdef _PATH_RSRCFORKSPEC + if (unlikely (file->length == 0)) + { + int rfd = _open_resource_fork (file_name, file); + if (rfd != -1) + { + close (fd); + fd = rfd; + } + } +#endif + + file->contents = (char *) mmap (nullptr, file->length, PROT_READ, + MAP_PRIVATE | MAP_NORESERVE, fd, 0); + if (unlikely (file->contents == MAP_FAILED)) return nullptr; + + file_guard.release (); + /* fd_guard closes fd on return (ownership ends after mmap). */ + return hb_blob_create_or_fail (file->contents, file->length, + HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, (void *) file, + (hb_destroy_func_t) _hb_mapped_file_destroy); +} +#elif defined(_WIN32) && !defined(HB_NO_MMAP) +static hb_blob_t * +_hb_blob_try_mmap (const char *file_name) +{ + hb_mapped_file_t *file = (hb_mapped_file_t *) hb_calloc (1, sizeof (hb_mapped_file_t)); + if (unlikely (!file)) return nullptr; + auto file_guard = hb_make_scope_guard ([&]() { hb_free (file); }); + + unsigned int size = strlen (file_name) + 1; + wchar_t *wchar_file_name = (wchar_t *) hb_malloc (sizeof (wchar_t) * size); + if (unlikely (!wchar_file_name)) return nullptr; + + /* Assume file name is given in UTF-8 encoding */ + int conversion = MultiByteToWideChar (CP_UTF8, MB_ERR_INVALID_CHARS, file_name, -1, wchar_file_name, size); + if (conversion <= 0) + { + /* Conversion failed due to invalid UTF-8 characters, + Repeat conversion based on system code page */ + mbstowcs (wchar_file_name, file_name, size); + } + + HANDLE fd; +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + { + CREATEFILE2_EXTENDED_PARAMETERS ceparams = { 0 }; + ceparams.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS); + ceparams.dwFileAttributes = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED & 0xFFFF; + ceparams.dwFileFlags = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED & 0xFFF00000; + ceparams.dwSecurityQosFlags = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED & 0x000F0000; + ceparams.lpSecurityAttributes = nullptr; + ceparams.hTemplateFile = nullptr; + fd = CreateFile2 (wchar_file_name, GENERIC_READ, FILE_SHARE_READ, + OPEN_EXISTING, &ceparams); + } +#else + fd = CreateFileW (wchar_file_name, GENERIC_READ, FILE_SHARE_READ, nullptr, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, + nullptr); +#endif + hb_free (wchar_file_name); + + if (unlikely (fd == INVALID_HANDLE_VALUE)) return nullptr; + auto fd_guard = hb_make_scope_guard ([&]() { CloseHandle (fd); }); + +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + { + LARGE_INTEGER length; + GetFileSizeEx (fd, &length); + file->length = length.LowPart; + file->mapping = CreateFileMappingFromApp (fd, nullptr, PAGE_READONLY, length.QuadPart, nullptr); + } +#else + file->length = (unsigned long) GetFileSize (fd, nullptr); + file->mapping = CreateFileMapping (fd, nullptr, PAGE_READONLY, 0, 0, nullptr); +#endif + if (unlikely (!file->mapping)) return nullptr; + +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + file->contents = (char *) MapViewOfFileFromApp (file->mapping, FILE_MAP_READ, 0, 0); +#else + file->contents = (char *) MapViewOfFile (file->mapping, FILE_MAP_READ, 0, 0, 0); +#endif + if (unlikely (!file->contents)) return nullptr; + + file_guard.release (); + /* fd_guard closes fd on return. */ + return hb_blob_create_or_fail (file->contents, file->length, + HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, (void *) file, + (hb_destroy_func_t) _hb_mapped_file_destroy); +} +#endif + +/* Read a file without knowing its size beforehand. Used as a fallback + * for systems without mmap or to read from pipes. */ +static hb_blob_t * +_hb_blob_read_file (const char *file_name) +{ + unsigned long len = 0, allocated = BUFSIZ * 16; + char *data = (char *) hb_malloc (allocated); + if (unlikely (!data)) return nullptr; + auto data_guard = hb_make_scope_guard ([&]() { hb_free (data); }); + + FILE *fp = fopen (file_name, "rb"); + if (unlikely (!fp)) return nullptr; + HB_SCOPE_GUARD (fclose (fp)); + + while (!feof (fp)) + { + if (allocated - len < BUFSIZ) + { + allocated *= 2; + /* Don't allocate and go more than ~536MB, our mmap reader still + can cover files like that but lets limit our fallback reader */ + if (unlikely (allocated > (2 << 28))) return nullptr; + char *new_data = (char *) hb_realloc (data, allocated); + if (unlikely (!new_data)) return nullptr; + data = new_data; + } + + unsigned long addition = fread (data + len, 1, allocated - len, fp); + + int err = ferror (fp); +#ifdef EINTR // armcc doesn't have it + if (unlikely (err == EINTR)) continue; +#endif + if (unlikely (err)) return nullptr; + + len += addition; + } + + data_guard.release (); + return hb_blob_create_or_fail (data, len, HB_MEMORY_MODE_WRITABLE, data, + (hb_destroy_func_t) hb_free); +} + /** * hb_blob_create_from_file_or_fail: * @file_name: A filename @@ -636,158 +790,10 @@ hb_blob_create_from_file_or_fail (const char *file_name) { /* Adopted from glib's gmappedfile.c with Matthias Clasen and Allison Lortie permission but changed a lot to suit our need. */ -#if defined(HAVE_MMAP) && !defined(HB_NO_MMAP) - hb_mapped_file_t *file = (hb_mapped_file_t *) hb_calloc (1, sizeof (hb_mapped_file_t)); - if (unlikely (!file)) return nullptr; - - int fd = open (file_name, O_RDONLY | O_BINARY, 0); - if (unlikely (fd == -1)) goto fail_without_close; - - struct stat st; - if (unlikely (fstat (fd, &st) == -1)) goto fail; - - file->length = (unsigned long) st.st_size; - -#ifdef _PATH_RSRCFORKSPEC - if (unlikely (file->length == 0)) - { - int rfd = _open_resource_fork (file_name, file); - if (rfd != -1) - { - close (fd); - fd = rfd; - } - } +#if (defined(HAVE_MMAP) || defined(_WIN32)) && !defined(HB_NO_MMAP) + if (hb_blob_t *blob = _hb_blob_try_mmap (file_name)) + return blob; #endif - - file->contents = (char *) mmap (nullptr, file->length, PROT_READ, - MAP_PRIVATE | MAP_NORESERVE, fd, 0); - - if (unlikely (file->contents == MAP_FAILED)) goto fail; - - close (fd); - - return hb_blob_create_or_fail (file->contents, file->length, - HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, (void *) file, - (hb_destroy_func_t) _hb_mapped_file_destroy); - -fail: - close (fd); -fail_without_close: - hb_free (file); - -#elif defined(_WIN32) && !defined(HB_NO_MMAP) - hb_mapped_file_t *file = (hb_mapped_file_t *) hb_calloc (1, sizeof (hb_mapped_file_t)); - if (unlikely (!file)) return nullptr; - - HANDLE fd; - int conversion; - unsigned int size = strlen (file_name) + 1; - wchar_t * wchar_file_name = (wchar_t *) hb_malloc (sizeof (wchar_t) * size); - if (unlikely (!wchar_file_name)) goto fail_without_close; - - /* Assume file name is given in UTF-8 encoding */ - conversion = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, file_name, -1, wchar_file_name, size); - if (conversion <= 0) - { - /* Conversion failed due to invalid UTF-8 characters, - Repeat conversion based on system code page */ - mbstowcs(wchar_file_name, file_name, size); - } -#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) - { - CREATEFILE2_EXTENDED_PARAMETERS ceparams = { 0 }; - ceparams.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS); - ceparams.dwFileAttributes = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED & 0xFFFF; - ceparams.dwFileFlags = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED & 0xFFF00000; - ceparams.dwSecurityQosFlags = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED & 0x000F0000; - ceparams.lpSecurityAttributes = nullptr; - ceparams.hTemplateFile = nullptr; - fd = CreateFile2 (wchar_file_name, GENERIC_READ, FILE_SHARE_READ, - OPEN_EXISTING, &ceparams); - } -#else - fd = CreateFileW (wchar_file_name, GENERIC_READ, FILE_SHARE_READ, nullptr, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, - nullptr); -#endif - hb_free (wchar_file_name); - - if (unlikely (fd == INVALID_HANDLE_VALUE)) goto fail_without_close; - -#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) - { - LARGE_INTEGER length; - GetFileSizeEx (fd, &length); - file->length = length.LowPart; - file->mapping = CreateFileMappingFromApp (fd, nullptr, PAGE_READONLY, length.QuadPart, nullptr); - } -#else - file->length = (unsigned long) GetFileSize (fd, nullptr); - file->mapping = CreateFileMapping (fd, nullptr, PAGE_READONLY, 0, 0, nullptr); -#endif - if (unlikely (!file->mapping)) goto fail; - -#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) - file->contents = (char *) MapViewOfFileFromApp (file->mapping, FILE_MAP_READ, 0, 0); -#else - file->contents = (char *) MapViewOfFile (file->mapping, FILE_MAP_READ, 0, 0, 0); -#endif - if (unlikely (!file->contents)) goto fail; - - CloseHandle (fd); - return hb_blob_create_or_fail (file->contents, file->length, - HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, (void *) file, - (hb_destroy_func_t) _hb_mapped_file_destroy); - -fail: - CloseHandle (fd); -fail_without_close: - hb_free (file); - -#endif - - /* The following tries to read a file without knowing its size beforehand - It's used as a fallback for systems without mmap or to read from pipes */ - unsigned long len = 0, allocated = BUFSIZ * 16; - char *data = (char *) hb_malloc (allocated); - if (unlikely (!data)) return nullptr; - - FILE *fp = fopen (file_name, "rb"); - if (unlikely (!fp)) goto fread_fail_without_close; - - while (!feof (fp)) - { - if (allocated - len < BUFSIZ) - { - allocated *= 2; - /* Don't allocate and go more than ~536MB, our mmap reader still - can cover files like that but lets limit our fallback reader */ - if (unlikely (allocated > (2 << 28))) goto fread_fail; - char *new_data = (char *) hb_realloc (data, allocated); - if (unlikely (!new_data)) goto fread_fail; - data = new_data; - } - - unsigned long addition = fread (data + len, 1, allocated - len, fp); - - int err = ferror (fp); -#ifdef EINTR // armcc doesn't have it - if (unlikely (err == EINTR)) continue; -#endif - if (unlikely (err)) goto fread_fail; - - len += addition; - } - fclose (fp); - - return hb_blob_create_or_fail (data, len, HB_MEMORY_MODE_WRITABLE, data, - (hb_destroy_func_t) hb_free); - -fread_fail: - fclose (fp); -fread_fail_without_close: - hb_free (data); - return nullptr; + return _hb_blob_read_file (file_name); } #endif /* !HB_NO_OPEN */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-blob.hh b/src/java.desktop/share/native/libharfbuzz/hb-blob.hh index b1b3b94d3dd..1703efa92b1 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-blob.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-blob.hh @@ -50,6 +50,21 @@ struct hb_blob_t } } + void replace_buffer (const char *new_data, + unsigned new_length, + hb_memory_mode_t new_mode, + void *new_user_data, + hb_destroy_func_t new_destroy) + { + if (new_data != data) + destroy_user_data (); + data = new_data; + length = new_length; + mode = new_mode; + user_data = new_user_data; + destroy = new_destroy; + } + HB_INTERNAL bool try_make_writable (); HB_INTERNAL bool try_make_writable_inplace (); HB_INTERNAL bool try_make_writable_inplace_unix (); @@ -67,6 +82,149 @@ struct hb_blob_t void *user_data = nullptr; hb_destroy_func_t destroy = nullptr; + + /* + * Blob-recycling helpers. + * + * Encoders that produce a sized byte buffer and wrap it as an + * hb_blob_t can amortize malloc/blob-allocation across repeated + * renders by handing the output blob back via a recycle slot. On + * the next encode these helpers reuse (or realloc) the buffer and + * the same hb_blob_t handle is returned, skipping malloc/free + * and blob-handle churn across glyph-by-glyph encoding loops. + * + * Blobs managed by this machinery are identified by the address + * of recycle_data_destroy. + */ + + struct recycle_data_t + { + char *buf; + unsigned capacity; + }; + + static inline void recycle_data_destroy (void *user_data) + { + auto *bd = (recycle_data_t *) user_data; + hb_free (bd->buf); + hb_free (bd); + } + + /* Acquire a buffer of at least @needed bytes. If @recycled is + * one of our blobs, reuse its buffer (or realloc it). + * *@out_capacity receives the actual capacity (>= @needed). + * *@out_replaced_buf is set to the recycled buf when realloc + * fails and a fresh buffer was allocated instead -- the caller + * must hb_free() that buf after recycle_finalize() runs. Returns + * nullptr on allocation failure. */ + static inline char * + recycle_acquire (hb_blob_t *recycled, + unsigned needed, + unsigned *out_capacity, + char **out_replaced_buf) + { + *out_replaced_buf = nullptr; + + if (recycled && recycled->destroy == recycle_data_destroy) + { + auto *bd = (recycle_data_t *) recycled->user_data; + if (bd->capacity >= needed) + { + *out_capacity = bd->capacity; + return bd->buf; + } + /* Grow with a 1.5x ramp to amortize repeated growth. */ + unsigned alloc_bytes = needed; + if (unlikely (hb_unsigned_add_overflows (needed, needed / 2, + &alloc_bytes))) + alloc_bytes = needed; + char *new_buf = (char *) hb_realloc (bd->buf, alloc_bytes); + if (new_buf) + { + bd->buf = new_buf; + bd->capacity = alloc_bytes; + *out_capacity = alloc_bytes; + return new_buf; + } + /* Realloc failed. Fall through to a fresh hb_malloc and stash + * the old buf for the caller to free after recycle_finalize. */ + *out_replaced_buf = bd->buf; + } + + char *buf = (char *) hb_malloc (needed); + if (unlikely (!buf)) + return nullptr; + *out_capacity = needed; + return buf; + } + + /* Wrap @buf (of @capacity, with @length used) into an hb_blob_t. + * If @recycled is one of our blobs, update and return it (cheap); + * otherwise create a new blob. Pass @replaced_recycled_buf from + * recycle_acquire(). */ + static inline hb_blob_t * + recycle_finalize (char *buf, + unsigned capacity, + unsigned length, + hb_blob_t *recycled, + char *replaced_recycled_buf) + { + if (recycled && recycled->destroy == recycle_data_destroy) + { + auto *bd = (recycle_data_t *) recycled->user_data; + if (replaced_recycled_buf && replaced_recycled_buf != buf) + hb_free (replaced_recycled_buf); + bd->buf = buf; + bd->capacity = capacity; + recycled->data = (const char *) buf; + recycled->length = length; + return recycled; + } + + /* No recycled blob to update -- create a fresh one with our + * destroy closure so the next recycle round can reuse it. */ + recycle_data_t *bd = (recycle_data_t *) hb_malloc (sizeof (*bd)); + if (unlikely (!bd)) + { + hb_free (buf); + return nullptr; + } + bd->buf = buf; + bd->capacity = capacity; + + return hb_blob_create ((const char *) buf, length, + HB_MEMORY_MODE_WRITABLE, + bd, recycle_data_destroy); + } + + /* Discard @buf returned by recycle_acquire without committing to + * a blob. Frees @buf if it was a fresh allocation; leaves any + * recycled buffer untouched. */ + static inline void + recycle_abort (char *buf, hb_blob_t *recycled) + { + if (!buf) return; + if (recycled && recycled->destroy == recycle_data_destroy) + { + auto *bd = (recycle_data_t *) recycled->user_data; + if (buf == bd->buf) return; /* owned by the recycled blob */ + } + hb_free (buf); + } + + /* Stash @blob in @slot as the recycled output for the next + * encode. Destroys any previously stashed blob. Safe to call + * with @blob = nullptr or the empty-singleton blob (treated as + * "drop"). */ + static inline void + recycle_stash (hb_blob_t **slot, hb_blob_t *blob) + { + hb_blob_destroy (*slot); + *slot = nullptr; + if (!blob || blob == hb_blob_get_empty ()) + return; + *slot = blob; + } }; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-buffer-serialize.cc b/src/java.desktop/share/native/libharfbuzz/hb-buffer-serialize.cc index 6787da6f65f..b3190ffc8ef 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-buffer-serialize.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-buffer-serialize.cc @@ -114,6 +114,17 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer, *buf_consumed = 0; hb_position_t x = 0, y = 0; + + /* Calculate the advance of the previous glyphs */ + if (pos && (flags & HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES)) + { + for (unsigned int i = 0; i < start; i++) + { + x += pos[i].x_advance; + y += pos[i].y_advance; + } + } + for (unsigned int i = start; i < end; i++) { char b[1024]; @@ -151,7 +162,7 @@ _hb_buffer_serialize_glyphs_json (hb_buffer_t *buffer, p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"cl\":%u", info[i].cluster)); } - if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS)) + if (pos && !(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS)) { p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), ",\"dx\":%d,\"dy\":%d", x+pos[i].x_offset, y+pos[i].y_offset)); @@ -272,6 +283,17 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer, *buf_consumed = 0; hb_position_t x = 0, y = 0; + + /* Calculate the advance of the previous glyphs */ + if (pos && (flags & HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES)) + { + for (unsigned int i = 0; i < start; i++) + { + x += pos[i].x_advance; + y += pos[i].y_advance; + } + } + for (unsigned int i = start; i < end; i++) { char b[1024]; @@ -297,7 +319,7 @@ _hb_buffer_serialize_glyphs_text (hb_buffer_t *buffer, p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "=%u", info[i].cluster)); } - if (!(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS)) + if (pos && !(flags & HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS)) { if (x+pos[i].x_offset || y+pos[i].y_offset) p += hb_max (0, snprintf (p, ARRAY_LENGTH (b) - (p - b), "@%d,%d", x+pos[i].x_offset, y+pos[i].y_offset)); @@ -417,9 +439,9 @@ _hb_buffer_serialize_unicode_text (hb_buffer_t *buffer, * A human-readable, plain text format. * The serialized glyphs will look something like: * - * ``` + * |[ * [uni0651=0@518,0+0|uni0628=0+1897] - * ``` + * ]| * * - The serialized glyphs are delimited with `[` and `]`. * - Glyphs are separated with `|` @@ -435,10 +457,10 @@ _hb_buffer_serialize_unicode_text (hb_buffer_t *buffer, * A machine-readable, structured format. * The serialized glyphs will look something like: * - * ``` + * |[ * [{"g":"uni0651","cl":0,"dx":518,"dy":0,"ax":0,"ay":0}, - * {"g":"uni0628","cl":0,"dx":0,"dy":0,"ax":1897,"ay":0}] - * ``` + * {"g":"uni0628","cl":0,"dx":0,"dy":0,"ax":1897,"ay":0}] + * ]| * * Each glyph is a JSON object, with the following properties: * - `g`: the glyph name or glyph index if @@ -530,9 +552,9 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer, * A human-readable, plain text format. * The serialized codepoints will look something like: * - * ``` + * |[ *   - * ``` + * ]| * * - Glyphs are separated with `|` * - Unicode codepoints are expressed as zero-padded four (or more) @@ -550,9 +572,9 @@ hb_buffer_serialize_glyphs (hb_buffer_t *buffer, * * For example: * - * ``` + * |[ * [{u:1617,cl:0},{u:1576,cl:1}] - * ``` + * ]| * * Return value: * The number of serialized items. diff --git a/src/java.desktop/share/native/libharfbuzz/hb-buffer-verify.cc b/src/java.desktop/share/native/libharfbuzz/hb-buffer-verify.cc index 0c9190bf6f8..647c270c02a 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-buffer-verify.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-buffer-verify.cc @@ -101,9 +101,9 @@ buffer_verify_unsafe_to_break (hb_buffer_t *buffer, /* Check that breaking up shaping at safe-to-break is indeed safe. */ - hb_buffer_t *fragment = hb_buffer_create_similar (buffer); + hb_unique_ptr_t fragment (hb_buffer_create_similar (buffer)); hb_buffer_set_flags (fragment, (hb_buffer_flags_t (hb_buffer_get_flags (fragment) & ~HB_BUFFER_FLAG_VERIFY))); - hb_buffer_t *reconstruction = hb_buffer_create_similar (buffer); + hb_unique_ptr_t reconstruction (hb_buffer_create_similar (buffer)); hb_buffer_set_flags (reconstruction, (hb_buffer_flags_t (hb_buffer_get_flags (reconstruction) & ~HB_BUFFER_FLAG_VERIFY))); unsigned int num_glyphs; @@ -164,11 +164,7 @@ buffer_verify_unsafe_to_break (hb_buffer_t *buffer, hb_buffer_append (fragment, text_buffer, text_start, text_end); if (!hb_shape_full (font, fragment, features, num_features, shapers) || fragment->successful) - { - hb_buffer_destroy (reconstruction); - hb_buffer_destroy (fragment); return true; - } hb_buffer_append (reconstruction, fragment, 0, -1); start = end; @@ -193,9 +189,6 @@ buffer_verify_unsafe_to_break (hb_buffer_t *buffer, } } - hb_buffer_destroy (reconstruction); - hb_buffer_destroy (fragment); - return ret; } @@ -238,11 +231,13 @@ buffer_verify_unsafe_to_concat (hb_buffer_t *buffer, * the one from original buffer in step 1. */ - hb_buffer_t *fragments[2] {hb_buffer_create_similar (buffer), - hb_buffer_create_similar (buffer)}; + hb_unique_ptr_t fragments[2] { + hb_unique_ptr_t (hb_buffer_create_similar (buffer)), + hb_unique_ptr_t (hb_buffer_create_similar (buffer)), + }; hb_buffer_set_flags (fragments[0], (hb_buffer_flags_t (hb_buffer_get_flags (fragments[0]) & ~HB_BUFFER_FLAG_VERIFY))); hb_buffer_set_flags (fragments[1], (hb_buffer_flags_t (hb_buffer_get_flags (fragments[1]) & ~HB_BUFFER_FLAG_VERIFY))); - hb_buffer_t *reconstruction = hb_buffer_create_similar (buffer); + hb_unique_ptr_t reconstruction (hb_buffer_create_similar (buffer)); hb_buffer_set_flags (reconstruction, (hb_buffer_flags_t (hb_buffer_get_flags (reconstruction) & ~HB_BUFFER_FLAG_VERIFY))); hb_segment_properties_t props; hb_buffer_get_segment_properties (buffer, &props); @@ -308,17 +303,16 @@ buffer_verify_unsafe_to_concat (hb_buffer_t *buffer, } bool ret = true; - hb_buffer_diff_flags_t diff; /* * Shape the two fragment streams. */ if (!hb_shape_full (font, fragments[0], features, num_features, shapers) || !fragments[0]->successful) - goto out; + return ret; if (!hb_shape_full (font, fragments[1], features, num_features, shapers) || !fragments[1]->successful) - goto out; + return ret; if (!forward) { @@ -363,7 +357,7 @@ buffer_verify_unsafe_to_concat (hb_buffer_t *buffer, /* * Diff results. */ - diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0); + hb_buffer_diff_flags_t diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0); if (diff & ~HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH) { buffer_verify_error (buffer, font, BUFFER_VERIFY_ERROR "unsafe-to-concat test failed."); @@ -375,11 +369,6 @@ buffer_verify_unsafe_to_concat (hb_buffer_t *buffer, } } -out: - hb_buffer_destroy (reconstruction); - hb_buffer_destroy (fragments[0]); - hb_buffer_destroy (fragments[1]); - return ret; } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-buffer.cc b/src/java.desktop/share/native/libharfbuzz/hb-buffer.cc index 8f6da312cdd..f4eb6040de7 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-buffer.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-buffer.cc @@ -547,12 +547,6 @@ void hb_buffer_t::merge_clusters_impl (unsigned int start, unsigned int end) { - if (!HB_BUFFER_CLUSTER_LEVEL_IS_MONOTONE (cluster_level)) - { - unsafe_to_break (start, end); - return; - } - max_ops -= end - start; if (unlikely (max_ops < 0)) successful = false; @@ -581,15 +575,9 @@ hb_buffer_t::merge_clusters_impl (unsigned int start, set_cluster (info[i], cluster); } void -hb_buffer_t::merge_out_clusters (unsigned int start, - unsigned int end) +hb_buffer_t::merge_out_clusters_impl (unsigned int start, + unsigned int end) { - if (!HB_BUFFER_CLUSTER_LEVEL_IS_MONOTONE (cluster_level)) - return; - - if (unlikely (end - start < 2)) - return; - max_ops -= end - start; if (unlikely (max_ops < 0)) successful = false; @@ -972,6 +960,9 @@ void hb_buffer_set_content_type (hb_buffer_t *buffer, hb_buffer_content_type_t content_type) { + if (unlikely (hb_object_is_immutable (buffer))) + return; + buffer->content_type = content_type; } @@ -1822,6 +1813,9 @@ hb_buffer_add_utf (hb_buffer_t *buffer, if (item_length == -1) item_length = text_length - item_offset; + item_offset = hb_min (item_offset, (unsigned) text_length); + item_length = hb_clamp (item_length, 0, text_length - (int) item_offset); + if (unlikely (item_length < 0 || item_length > INT_MAX / 8 || !buffer->ensure (buffer->len + item_length * sizeof (T) / 4))) @@ -2290,6 +2284,22 @@ hb_buffer_diff (hb_buffer_t *buffer, * Debugging. */ +void +hb_buffer_t::changed () +{ +#ifdef HB_NO_BUFFER_MESSAGE + return; +#else + if (!message_depth) + return; + + if (changed_func) + changed_func (this, changed_data); + else + update_digest (); +#endif +} + #ifndef HB_NO_BUFFER_MESSAGE /** * hb_buffer_set_message_func: @@ -2307,7 +2317,8 @@ hb_buffer_set_message_func (hb_buffer_t *buffer, hb_buffer_message_func_t func, void *user_data, hb_destroy_func_t destroy) { - if (unlikely (hb_object_is_immutable (buffer))) + if (unlikely (hb_object_is_immutable (buffer)) || + unlikely (buffer->message_depth)) { if (destroy) destroy (user_data); @@ -2327,6 +2338,23 @@ hb_buffer_set_message_func (hb_buffer_t *buffer, buffer->message_destroy = nullptr; } } +/** + * hb_buffer_changed: + * @buffer: An #hb_buffer_t + * + * Called by a message callback after modifying buffer glyph indices, + * to update internal caches. + * + * If not called from inside a message callback, does nothing. + * + * Since: 13.0.0 + **/ +void +hb_buffer_changed (hb_buffer_t *buffer) +{ + buffer->changed (); +} + bool hb_buffer_t::message_impl (hb_font_t *font, const char *fmt, va_list ap) { diff --git a/src/java.desktop/share/native/libharfbuzz/hb-buffer.h b/src/java.desktop/share/native/libharfbuzz/hb-buffer.h index 332001ef171..a06b823ccee 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-buffer.h +++ b/src/java.desktop/share/native/libharfbuzz/hb-buffer.h @@ -495,7 +495,7 @@ typedef enum { (1u << HB_BUFFER_CLUSTER_LEVEL_GRAPHEMES)))) /** - * HB_BUFFER_CLUSTER_LEVEL_IS_CHARACTERS + * HB_BUFFER_CLUSTER_LEVEL_IS_CHARACTERS: * @level: #hb_buffer_cluster_level_t to test * * Tests whether a cluster level does not group cluster values by graphemes. @@ -505,7 +505,7 @@ typedef enum { */ #define HB_BUFFER_CLUSTER_LEVEL_IS_CHARACTERS(level) \ ((bool) ((1u << (unsigned) (level)) & \ - ((1u << HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARCATERS) | \ + ((1u << HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS) | \ (1u << HB_BUFFER_CLUSTER_LEVEL_CHARACTERS)))) HB_EXTERN void @@ -672,7 +672,12 @@ hb_buffer_normalize_glyphs (hb_buffer_t *buffer); * @HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: serialize glyph extents. * @HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS: serialize glyph flags. Since: 1.5.0 * @HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES: do not serialize glyph advances, - * glyph offsets will reflect absolute glyph positions. Since: 1.8.0 + * glyph offsets will reflect absolute glyph positions. Since: 1.8.0. + * Note: when this flag is used with a partial range of the buffer (i.e. + * @start is not 0), calculating the absolute positions has a cost + * proportional to @start. If the buffer is serialized in many small + * chunks, this can lead to quadratic behavior. It is recommended to + * use a larger @buf_size to minimize this cost. * @HB_BUFFER_SERIALIZE_FLAG_DEFINED: All currently defined flags. Since: 4.4.0 * * Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs(). @@ -865,6 +870,9 @@ hb_buffer_set_message_func (hb_buffer_t *buffer, hb_buffer_message_func_t func, void *user_data, hb_destroy_func_t destroy); +HB_EXTERN void +hb_buffer_changed (hb_buffer_t *buffer); + HB_END_DECLS diff --git a/src/java.desktop/share/native/libharfbuzz/hb-buffer.hh b/src/java.desktop/share/native/libharfbuzz/hb-buffer.hh index 1c46981cc9c..32eca7021f8 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-buffer.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-buffer.hh @@ -130,9 +130,13 @@ struct hb_buffer_t */ #ifndef HB_NO_BUFFER_MESSAGE + typedef void (*changed_func_t) (hb_buffer_t *buffer, void *user_data); + hb_buffer_message_func_t message_func; void *message_data; hb_destroy_func_t message_destroy; + changed_func_t changed_func; + void *changed_data; unsigned message_depth; /* How deeply are we inside a message callback? */ #else static constexpr unsigned message_depth = 0u; @@ -398,10 +402,42 @@ struct hb_buffer_t { if (end - start < 2) return; + if (!HB_BUFFER_CLUSTER_LEVEL_IS_MONOTONE (cluster_level)) + { + unsafe_to_break (start, end); + return; + } + merge_clusters_impl (start, end); + } + void merge_grapheme_clusters (unsigned int start, unsigned int end) + { + if (end - start < 2) + return; + if (!HB_BUFFER_CLUSTER_LEVEL_IS_GRAPHEMES (cluster_level)) + { + unsafe_to_break (start, end); + return; + } merge_clusters_impl (start, end); } HB_INTERNAL void merge_clusters_impl (unsigned int start, unsigned int end); - HB_INTERNAL void merge_out_clusters (unsigned int start, unsigned int end); + void merge_out_clusters (unsigned int start, unsigned int end) + { + if (end - start < 2) + return; + if (!HB_BUFFER_CLUSTER_LEVEL_IS_MONOTONE (cluster_level)) + return; + merge_out_clusters_impl (start, end); + } + void merge_out_grapheme_clusters (unsigned int start, unsigned int end) + { + if (end - start < 2) + return; + if (!HB_BUFFER_CLUSTER_LEVEL_IS_GRAPHEMES (cluster_level)) + return; + merge_out_clusters_impl (start, end); + } + HB_INTERNAL void merge_out_clusters_impl (unsigned int start, unsigned int end); /* Merge clusters for deleting current glyph, and skip it. */ HB_INTERNAL void delete_glyph (); HB_INTERNAL void delete_glyphs_inplace (bool (*filter) (const hb_glyph_info_t *info)); @@ -605,6 +641,7 @@ struct hb_buffer_t #endif } HB_INTERNAL bool message_impl (hb_font_t *font, const char *fmt, va_list ap) HB_PRINTF_FUNC(3, 0); + HB_INTERNAL void changed (); static void set_cluster (hb_glyph_info_t &inf, unsigned int cluster, unsigned int mask = 0) diff --git a/src/java.desktop/share/native/libharfbuzz/hb-cff-interp-common.hh b/src/java.desktop/share/native/libharfbuzz/hb-cff-interp-common.hh index 79d7c4c7133..a053940d057 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-cff-interp-common.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-cff-interp-common.hh @@ -344,25 +344,25 @@ struct cff_stack_t { ELEM& operator [] (unsigned int i) { - if (unlikely (i >= count)) + if (unlikely (i >= length)) { set_error (); return Crap (ELEM); } - return elements[i]; + return arrayZ[i]; } void push (const ELEM &v) { - if (likely (count < LIMIT)) - elements[count++] = v; + if (likely (length < LIMIT)) + arrayZ[length++] = v; else set_error (); } ELEM &push () { - if (likely (count < LIMIT)) - return elements[count++]; + if (likely (length < LIMIT)) + return arrayZ[length++]; else { set_error (); @@ -372,8 +372,8 @@ struct cff_stack_t ELEM& pop () { - if (likely (count > 0)) - return elements[--count]; + if (likely (length > 0)) + return arrayZ[--length]; else { set_error (); @@ -382,45 +382,44 @@ struct cff_stack_t } void pop (unsigned int n) { - if (likely (count >= n)) - count -= n; + if (likely (length >= n)) + length -= n; else set_error (); } const ELEM& peek () { - if (unlikely (count == 0)) + if (unlikely (length == 0)) { set_error (); return Null (ELEM); } - return elements[count - 1]; + return arrayZ[length - 1]; } void unpop () { - if (likely (count < LIMIT)) - count++; + if (likely (length < LIMIT)) + length++; else set_error (); } - void clear () { count = 0; } + void clear () { length = 0; } bool in_error () const { return (error); } void set_error () { error = true; } - unsigned int get_count () const { return count; } - bool is_empty () const { return !count; } + unsigned int get_count () const { return length; } + bool is_empty () const { return !length; } hb_array_t sub_array (unsigned start, unsigned length) const - { return hb_array_t (elements).sub_array (start, length); } + { return hb_array_t (arrayZ).sub_array (start, length); } - private: bool error = false; - unsigned int count = 0; - ELEM elements[LIMIT]; + unsigned int length = 0; + ELEM arrayZ[LIMIT]; }; /* argument stack */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-cff2-interp-cs.hh b/src/java.desktop/share/native/libharfbuzz/hb-cff2-interp-cs.hh index ed4586dc437..a4aa005d82c 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-cff2-interp-cs.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-cff2-interp-cs.hh @@ -55,7 +55,7 @@ struct blend_arg_t : number_t void reset_blends () { numValues = valueIndex = 0; - deltas.shrink (0); + deltas.clear (); } unsigned int numValues; @@ -281,17 +281,18 @@ struct cff2_cs_opset_t : cs_opset_t, PAR k = env.get_region_count (); n = env.argStack.pop_uint (); /* copy the blend values into blend array of the default values */ - unsigned int start = env.argStack.get_count () - ((k+1) * n); - /* let an obvious error case fail, but note CFF2 spec doesn't forbid n==0 */ - if (unlikely (start > env.argStack.get_count ())) + unsigned int count = env.argStack.get_count (); + unsigned int total; + if (unlikely (hb_unsigned_mul_overflows (k + 1, n, &total) || total > count)) { env.set_error (); return; } + unsigned int start = count - total; for (unsigned int i = 0; i < n; i++) { const hb_array_t blends = env.argStack.sub_array (start + n + (i * k), k); - process_arg_blend (env, env.argStack[start + i], blends, n, i); + process_arg_blend (env, env.argStack.arrayZ[start + i], blends, n, i); } /* pop off blend values leaving default values now adorned with blend values */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-config.hh b/src/java.desktop/share/native/libharfbuzz/hb-config.hh index c522eeea2ea..62e0d2022e3 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-config.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-config.hh @@ -43,6 +43,7 @@ #ifdef HB_TINY #define HB_LEAN #define HB_MINI +#define HB_NO_SVG #define HB_OPTIMIZE_SIZE #define HB_OPTIMIZE_SIZE_MORE #define HB_MINIMIZE_MEMORY_USAGE @@ -60,9 +61,6 @@ #define HB_NO_BUFFER_SERIALIZE #define HB_NO_BUFFER_VERIFY #define HB_NO_BITMAP -#define HB_NO_CFF -#define HB_NO_COLOR -#define HB_NO_DRAW #define HB_NO_ERRNO #define HB_NO_FACE_COLLECT_UNICODES #define HB_NO_GETENV @@ -78,13 +76,17 @@ #define HB_NO_NAME #define HB_NO_OPEN #define HB_NO_OT_FONT_GLYPH_NAMES -#define HB_NO_OT_SHAPE_FRACTIONS -#define HB_NO_PAINT #define HB_NO_SETLOCALE #define HB_NO_STYLE -#define HB_NO_SUBSET_LAYOUT #define HB_NO_VERTICAL #define HB_NO_VAR + +#if !(defined(HB_HAS_CAIRO) || defined(HB_HAS_RASTER) || defined(HB_HAS_VECTOR) || defined(HB_HAS_GPU)) +#define HB_NO_COLOR +#define HB_NO_DRAW +#define HB_NO_PAINT +#endif + #endif #ifdef HB_MINI @@ -92,8 +94,6 @@ #define HB_NO_LEGACY #define HB_NO_BEYOND_64K #define HB_NO_CUBIC_GLYF -#define HB_NO_VAR_COMPOSITES -#define HB_NO_VAR_HVF #endif #ifdef __OPTIMIZE_SIZE__ @@ -135,16 +135,17 @@ #define HB_NO_OT_FONT_BITMAP #endif +#ifdef HB_NO_DRAW +#define HB_NO_CFF +#define HB_NO_OUTLINE +#define HB_NO_PAINT +#endif + #ifdef HB_NO_CFF #define HB_NO_OT_FONT_CFF #define HB_NO_SUBSET_CFF #endif -#ifdef HB_NO_DRAW -#define HB_NO_OUTLINE -#define HB_NO_PAINT -#endif - #ifdef HB_NO_LEGACY #define HB_NO_CMAP_LEGACY_SUBTABLES #define HB_NO_FALLBACK_SHAPE diff --git a/src/java.desktop/share/native/libharfbuzz/hb-cplusplus.hh b/src/java.desktop/share/native/libharfbuzz/hb-cplusplus.hh index 82d39741527..d08e21c58e5 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-cplusplus.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-cplusplus.hh @@ -138,52 +138,64 @@ struct vtable_t static constexpr auto get_user_data = _get_user_data; }; -#define HB_DEFINE_VTABLE(name) \ +#define HB_DEFINE_VTABLE(name, empty) \ template<> \ struct vtable \ : vtable_t {} -HB_DEFINE_VTABLE (buffer); -HB_DEFINE_VTABLE (blob); -HB_DEFINE_VTABLE (face); -HB_DEFINE_VTABLE (font); -HB_DEFINE_VTABLE (font_funcs); -HB_DEFINE_VTABLE (map); -HB_DEFINE_VTABLE (set); -HB_DEFINE_VTABLE (shape_plan); -HB_DEFINE_VTABLE (unicode_funcs); -HB_DEFINE_VTABLE (draw_funcs); -HB_DEFINE_VTABLE (paint_funcs); - -#undef HB_DEFINE_VTABLE +HB_DEFINE_VTABLE (buffer, &hb_buffer_get_empty); +HB_DEFINE_VTABLE (blob, &hb_blob_get_empty); +HB_DEFINE_VTABLE (face, &hb_face_get_empty); +HB_DEFINE_VTABLE (font, &hb_font_get_empty); +HB_DEFINE_VTABLE (font_funcs, &hb_font_funcs_get_empty); +HB_DEFINE_VTABLE (map, &hb_map_get_empty); +HB_DEFINE_VTABLE (set, &hb_set_get_empty); +HB_DEFINE_VTABLE (shape_plan, &hb_shape_plan_get_empty); +HB_DEFINE_VTABLE (unicode_funcs, &hb_unicode_funcs_get_empty); +HB_DEFINE_VTABLE (draw_funcs, &hb_draw_funcs_get_empty); +HB_DEFINE_VTABLE (paint_funcs, &hb_paint_funcs_get_empty); #ifdef HB_SUBSET_H -#define HB_DEFINE_VTABLE(name) \ - template<> \ - struct vtable \ - : vtable_t {} - - -HB_DEFINE_VTABLE (subset_input); -HB_DEFINE_VTABLE (subset_plan); - -#undef HB_DEFINE_VTABLE +HB_DEFINE_VTABLE (subset_input, nullptr); +HB_DEFINE_VTABLE (subset_plan, nullptr); #endif +#ifdef HB_RASTER_H + +HB_DEFINE_VTABLE (raster_image, nullptr); +HB_DEFINE_VTABLE (raster_draw, nullptr); +HB_DEFINE_VTABLE (raster_paint, nullptr); + +#endif + + +#ifdef HB_VECTOR_H + +HB_DEFINE_VTABLE (vector_draw, nullptr); +HB_DEFINE_VTABLE (vector_paint, nullptr); + +#endif + + +#ifdef HB_GPU_H + +HB_DEFINE_VTABLE (gpu_draw, nullptr); + +#endif + +/* HB_DEFINE_VTABLE stays available for subsystem headers' paired tail + * blocks (see hb-raster.h, hb-vector.h, hb-gpu.h, hb-subset.h). */ + + } // namespace hb /* Workaround for GCC < 7, see: diff --git a/src/java.desktop/share/native/libharfbuzz/hb-draw.cc b/src/java.desktop/share/native/libharfbuzz/hb-draw.cc index c243d12f7ae..a9d00f695ce 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-draw.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-draw.cc @@ -32,6 +32,8 @@ #include "hb-machinery.hh" +#include + /** * SECTION:hb-draw @@ -116,25 +118,25 @@ _hb_draw_funcs_set_middle (hb_draw_funcs_t *dfuncs, void *user_data, hb_destroy_func_t destroy) { + auto destroy_guard = hb_make_scope_guard ([&]() { + if (destroy) destroy (user_data); + }); + if (user_data && !dfuncs->user_data) { dfuncs->user_data = (decltype (dfuncs->user_data)) hb_calloc (1, sizeof (*dfuncs->user_data)); if (unlikely (!dfuncs->user_data)) - goto fail; + return false; } if (destroy && !dfuncs->destroy) { dfuncs->destroy = (decltype (dfuncs->destroy)) hb_calloc (1, sizeof (*dfuncs->destroy)); if (unlikely (!dfuncs->destroy)) - goto fail; + return false; } + destroy_guard.release (); return true; - -fail: - if (destroy) - (destroy) (user_data); - return false; } #define HB_DRAW_FUNC_IMPLEMENT(name) \ @@ -460,6 +462,268 @@ hb_draw_close_path (hb_draw_funcs_t *dfuncs, void *draw_data, } +/** + * hb_draw_line: + * @dfuncs: draw functions + * @draw_data: associated draw data passed by the caller + * @st: current draw state + * @x0: start X coordinate + * @y0: start Y coordinate + * @w0: stroke width at the start + * @x1: end X coordinate + * @y1: end Y coordinate + * @w1: stroke width at the end + * @cap: end-cap shape (butt or square) + * + * Emits a tapered line segment as a filled trapezoid. @w0 and + * @w1 are the full stroke widths at the start and end points + * respectively; they may differ for a tapered stroke or match + * for a uniform one. Pass `NaN` for @w1 to use @w0 (uniform + * stroke) without repeating the value. + * + * With #HB_DRAW_LINE_CAP_SQUARE each endpoint is extended along + * the line direction by half its local stroke width, so four + * `hb_draw_line()` calls form a closed rectangle without gaps + * at the corners. + * + * Since: 14.2.0 + **/ +void +hb_draw_line (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float x0, float y0, float w0, + float x1, float y1, float w1, + hb_draw_line_cap_t cap) +{ + if (std::isnan (w1)) w1 = w0; + float dx = x1 - x0, dy = y1 - y0; + float len = sqrtf (dx * dx + dy * dy); + if (len <= 0.f) + return; + /* Unit tangent and normal to the line direction. */ + float tx = dx / len; + float ty = dy / len; + float nx = -ty; + float ny = tx; + float h0 = 0.5f * w0; + float h1 = 0.5f * w1; + /* Square caps: extend each endpoint outward along the line + * tangent by half its local stroke width. */ + if (cap == HB_DRAW_LINE_CAP_SQUARE) + { + x0 -= tx * h0; y0 -= ty * h0; + x1 += tx * h1; y1 += ty * h1; + } + /* Trapezoid corners (counter-clockwise). */ + float ax = x0 + nx * h0, ay = y0 + ny * h0; + float bx = x1 + nx * h1, by = y1 + ny * h1; + float cx = x1 - nx * h1, cy = y1 - ny * h1; + float dx_ = x0 - nx * h0, dy_ = y0 - ny * h0; + + hb_draw_move_to (dfuncs, draw_data, st, ax, ay); + hb_draw_line_to (dfuncs, draw_data, st, bx, by); + hb_draw_line_to (dfuncs, draw_data, st, cx, cy); + hb_draw_line_to (dfuncs, draw_data, st, dx_, dy_); + hb_draw_close_path (dfuncs, draw_data, st); +} + +/* Emit an axis-aligned rectangle as a single closed contour. + * @ccw picks the winding direction (useful for cutting a hole + * out of another rectangle in a stroked rect). */ +static void +_hb_draw_rect_contour (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float x, float y, float w, float h, + bool ccw) +{ + hb_draw_move_to (dfuncs, draw_data, st, x, y); + if (ccw) + { + hb_draw_line_to (dfuncs, draw_data, st, x + w, y); + hb_draw_line_to (dfuncs, draw_data, st, x + w, y + h); + hb_draw_line_to (dfuncs, draw_data, st, x, y + h); + } + else + { + hb_draw_line_to (dfuncs, draw_data, st, x, y + h); + hb_draw_line_to (dfuncs, draw_data, st, x + w, y + h); + hb_draw_line_to (dfuncs, draw_data, st, x + w, y); + } + hb_draw_close_path (dfuncs, draw_data, st); +} + +/** + * hb_draw_rectangle: + * @dfuncs: draw functions + * @draw_data: associated draw data passed by the caller + * @st: current draw state + * @x: top-left X coordinate + * @y: top-left Y coordinate + * @w: width (may be negative) + * @h: height (may be negative) + * @stroke_width: stroke width, or `NaN` for a filled rectangle + * + * Emits an axis-aligned rectangle. If @stroke_width is a finite + * positive value, the rectangle is rendered as an outlined ring + * of that thickness centered on the edges; if @stroke_width is + * `NaN`, the rectangle is rendered filled. + * + * Note: stroked rectangles produce a bounding box covering the + * full outer rectangle, so if the pen is a GPU fragment-shader + * backend, the shader runs for every interior pixel even though + * only the outline contributes coverage. For very thin + * outlines where the interior is much larger than the stroke, + * emitting four hb_draw_line() segments (one per edge) is + * considerably cheaper per frame. + * + * Since: 14.2.0 + **/ +void +hb_draw_rectangle (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float x, float y, + float w, float h, + float stroke_width) +{ + if (std::isnan (stroke_width)) + { + /* Filled rectangle with zero area is nothing to draw. */ + if (w == 0.f || h == 0.f) + return; + _hb_draw_rect_contour (dfuncs, draw_data, st, x, y, w, h, /*ccw*/ true); + return; + } + + if (stroke_width <= 0.f || !std::isfinite (stroke_width)) + return; + + /* Normalize to non-negative width/height so the stroke math + * below (outer grows by sw, inner shrinks by sw) produces the + * expected outer-contains-inner ring regardless of w/h signs. */ + if (w < 0.f) { x += w; w = -w; } + if (h < 0.f) { y += h; h = -h; } + /* w or h == 0 is still meaningful when stroking: a stroked + * zero-height rect is a horizontal line of length w; zero + * width is a vertical line. Both degenerate to a single + * outer contour because the inner hole collapses. */ + + /* Stroke is centered on the edge: outer contour grows by + * stroke_width/2, inner contour shrinks by the same. */ + float s = 0.5f * stroke_width; + /* Outer rectangle (CCW = adds coverage). */ + _hb_draw_rect_contour (dfuncs, draw_data, st, + x - s, y - s, + w + stroke_width, h + stroke_width, + /*ccw*/ true); + /* Inner rectangle (CW = removes coverage for the hole). */ + float iw = w - stroke_width; + float ih = h - stroke_width; + if (iw > 0.f && ih > 0.f) + _hb_draw_rect_contour (dfuncs, draw_data, st, + x + s, y + s, iw, ih, + /*ccw*/ false); +} + +/* Circle approximated by 4 cubic Beziers, one per quadrant. + * The magic constant 0.5522847498307936 is + * (4/3) * (sqrt(2) - 1) + * and minimizes the max radial error to ~2.7e-4 of r. */ +static void +_hb_draw_circle_contour (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float cx, float cy, float r, + bool ccw) +{ + static const float k = 0.5522847498307936f; + float ck = r * k; + + hb_draw_move_to (dfuncs, draw_data, st, cx + r, cy); + if (ccw) + { + hb_draw_cubic_to (dfuncs, draw_data, st, + cx + r, cy + ck, + cx + ck, cy + r, + cx, cy + r); + hb_draw_cubic_to (dfuncs, draw_data, st, + cx - ck, cy + r, + cx - r, cy + ck, + cx - r, cy); + hb_draw_cubic_to (dfuncs, draw_data, st, + cx - r, cy - ck, + cx - ck, cy - r, + cx, cy - r); + hb_draw_cubic_to (dfuncs, draw_data, st, + cx + ck, cy - r, + cx + r, cy - ck, + cx + r, cy); + } + else + { + hb_draw_cubic_to (dfuncs, draw_data, st, + cx + r, cy - ck, + cx + ck, cy - r, + cx, cy - r); + hb_draw_cubic_to (dfuncs, draw_data, st, + cx - ck, cy - r, + cx - r, cy - ck, + cx - r, cy); + hb_draw_cubic_to (dfuncs, draw_data, st, + cx - r, cy + ck, + cx - ck, cy + r, + cx, cy + r); + hb_draw_cubic_to (dfuncs, draw_data, st, + cx + ck, cy + r, + cx + r, cy + ck, + cx + r, cy); + } + hb_draw_close_path (dfuncs, draw_data, st); +} + +/** + * hb_draw_circle: + * @dfuncs: draw functions + * @draw_data: associated draw data passed by the caller + * @st: current draw state + * @cx: center X coordinate + * @cy: center Y coordinate + * @r: radius + * @stroke_width: stroke width, or `NaN` for a filled disc + * + * Emits a circle approximated by four cubic Bezier curves. If + * @stroke_width is a finite positive value, the circle is + * rendered as an outlined ring of that thickness centered on + * the nominal radius; if @stroke_width is `NaN`, the circle is + * rendered as a filled disc. + * + * Since: 14.2.0 + **/ +void +hb_draw_circle (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float cx, float cy, + float r, + float stroke_width) +{ + if (r <= 0.f) + return; + + if (std::isnan (stroke_width)) + { + _hb_draw_circle_contour (dfuncs, draw_data, st, cx, cy, r, /*ccw*/ true); + return; + } + + if (stroke_width <= 0.f || !std::isfinite (stroke_width)) + return; + + float s = 0.5f * stroke_width; + _hb_draw_circle_contour (dfuncs, draw_data, st, cx, cy, r + s, /*ccw*/ true); + float ir = r - s; + if (ir > 0.f) + _hb_draw_circle_contour (dfuncs, draw_data, st, cx, cy, ir, /*ccw*/ false); +} + + static void hb_draw_extents_move_to (hb_draw_funcs_t *dfuncs HB_UNUSED, void *data, diff --git a/src/java.desktop/share/native/libharfbuzz/hb-draw.h b/src/java.desktop/share/native/libharfbuzz/hb-draw.h index 06299e17a78..7c3358beed8 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-draw.h +++ b/src/java.desktop/share/native/libharfbuzz/hb-draw.h @@ -335,6 +335,58 @@ hb_draw_close_path (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st); +/* Shape helpers. + * + * Emit common primitives (tapered line, rectangle, circle) into + * any pen. The helpers are thin wrappers over the individual + * move_to / line_to / cubic_to / close_path calls: callers can + * always hand-roll the same shapes if they need a variation. + * + * For rect / circle the @stroke_width parameter selects between + * filled and stroked: a positive finite value is the stroke + * width of the outline; NaN means "filled" (no stroke). + */ + +/** + * hb_draw_line_cap_t: + * @HB_DRAW_LINE_CAP_BUTT: No cap; the line ends exactly at + * its endpoint. + * @HB_DRAW_LINE_CAP_SQUARE: Square cap; the line is extended + * past its endpoint by half the local stroke width. Useful + * for composing closed shapes from line segments (e.g. a + * rectangle made from four lines). + * + * End-cap shape for hb_draw_line(). + * + * Since: 14.2.0 + **/ +typedef enum { + HB_DRAW_LINE_CAP_BUTT = 0, + HB_DRAW_LINE_CAP_SQUARE = 1, +} hb_draw_line_cap_t; + +HB_EXTERN void +hb_draw_line (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float x0, float y0, float w0, + float x1, float y1, float w1, + hb_draw_line_cap_t cap); + +HB_EXTERN void +hb_draw_rectangle (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float x, float y, + float w, float h, + float stroke_width); + +HB_EXTERN void +hb_draw_circle (hb_draw_funcs_t *dfuncs, void *draw_data, + hb_draw_state_t *st, + float cx, float cy, + float r, + float stroke_width); + + HB_END_DECLS #endif /* HB_DRAW_H */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-face-builder.cc b/src/java.desktop/share/native/libharfbuzz/hb-face-builder.cc index c1feaac6280..d660063716f 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-face-builder.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-face-builder.cc @@ -180,10 +180,8 @@ _hb_face_builder_get_table_tags (const hb_face_t *face HB_UNUSED, { // Not much to do... } - sorted_tags.qsort ([] (const void* a, const void* b) { - return * (hb_tag_t *) a < * (hb_tag_t *) b ? -1 : - * (hb_tag_t *) a == * (hb_tag_t *) b ? 0 : - +1; + sorted_tags.qsort ([] (const hb_tag_t &a, const hb_tag_t &b) { + return a < b; }); auto array = sorted_tags.as_array ().sub_array (start_offset, table_count); diff --git a/src/java.desktop/share/native/libharfbuzz/hb-font.cc b/src/java.desktop/share/native/libharfbuzz/hb-font.cc index 6c636e23567..c8ddbd00765 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-font.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-font.cc @@ -406,14 +406,15 @@ hb_font_get_glyph_h_origins_default (hb_font_t *font HB_UNUSED, { if (font->has_glyph_h_origin_func_set ()) { + hb_bool_t ret = true; for (unsigned int i = 0; i < count; i++) { - font->get_glyph_h_origin (*first_glyph, first_x, first_y, false); + ret &= font->get_glyph_h_origin (*first_glyph, first_x, first_y, false); first_glyph = &StructAtOffsetUnaligned (first_glyph, glyph_stride); first_x = &StructAtOffsetUnaligned (first_x, x_stride); first_y = &StructAtOffsetUnaligned (first_y, y_stride); } - return true; + return ret; } hb_bool_t ret = font->parent->get_glyph_h_origins (count, @@ -448,14 +449,15 @@ hb_font_get_glyph_v_origins_default (hb_font_t *font HB_UNUSED, { if (font->has_glyph_v_origin_func_set ()) { + hb_bool_t ret = true; for (unsigned int i = 0; i < count; i++) { - font->get_glyph_v_origin (*first_glyph, first_x, first_y, false); + ret &= font->get_glyph_v_origin (*first_glyph, first_x, first_y, false); first_glyph = &StructAtOffsetUnaligned (first_glyph, glyph_stride); first_x = &StructAtOffsetUnaligned (first_x, x_stride); first_y = &StructAtOffsetUnaligned (first_y, y_stride); } - return true; + return ret; } hb_bool_t ret = font->parent->get_glyph_v_origins (count, @@ -1001,25 +1003,25 @@ _hb_font_funcs_set_middle (hb_font_funcs_t *ffuncs, void *user_data, hb_destroy_func_t destroy) { + auto destroy_guard = hb_make_scope_guard ([&]() { + if (destroy) destroy (user_data); + }); + if (user_data && !ffuncs->user_data) { ffuncs->user_data = (decltype (ffuncs->user_data)) hb_calloc (1, sizeof (*ffuncs->user_data)); if (unlikely (!ffuncs->user_data)) - goto fail; + return false; } if (destroy && !ffuncs->destroy) { ffuncs->destroy = (decltype (ffuncs->destroy)) hb_calloc (1, sizeof (*ffuncs->destroy)); if (unlikely (!ffuncs->destroy)) - goto fail; + return false; } + destroy_guard.release (); return true; - -fail: - if (destroy) - (destroy) (user_data); - return false; } #define HB_FONT_FUNC_IMPLEMENT(get_,name) \ @@ -1625,11 +1627,12 @@ hb_font_draw_glyph_or_fail (hb_font_t *font, * * Paints a color glyph. * - * This function is similar to, but lower-level than, - * hb_font_paint_glyph(). It is suitable for clients that - * need more control. If there are no color glyphs available, - * it will return `false`. The client can then fall back to - * hb_font_draw_glyph_or_fail() for the monochrome outline glyph. + * Succeeds if @glyph has color paint layers (COLRv0), + * a color paint graph (COLRv1), or a bitmap image that the + * font's callbacks render successfully. Returns `false` if + * the font has no color data for @glyph; the client can then + * fall back to hb_font_draw_glyph_or_fail() for the monochrome + * outline. * * The painting instructions are returned by way of calls to * the callbacks of the @funcs object, with @paint_data passed @@ -2414,6 +2417,10 @@ hb_font_set_parent (hb_font_t *font, if (!parent) parent = hb_font_get_empty (); + for (hb_font_t *p = parent; p && p != hb_font_get_empty(); p = p->parent) + if (p == font) + return; /* Would create a cycle - reject */ + hb_font_t *old = font->parent; font->parent = hb_font_reference (parent); @@ -3183,7 +3190,7 @@ hb_font_set_var_coords_design (hb_font_t *font, for (unsigned int i = input_coords_length; i < coords_length; i++) design_coords[i] = axes[i].get_default (); - hb_ot_var_normalize_coords (font->face, coords_length, coords, normalized); + hb_ot_var_normalize_coords (font->face, coords_length, design_coords, normalized); _hb_font_adopt_var_coords (font, normalized, design_coords, coords_length); } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-font.hh b/src/java.desktop/share/native/libharfbuzz/hb-font.hh index 9dd54466d7f..a89b5db8cbc 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-font.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-font.hh @@ -172,13 +172,13 @@ struct hb_font_t /* Convert from parent-font user-space to our user-space */ hb_position_t parent_scale_x_distance (hb_position_t v) { - if (unlikely (parent && parent->x_scale != x_scale)) + if (unlikely (parent && parent->x_scale && parent->x_scale != x_scale)) return (hb_position_t) (v * (int64_t) this->x_scale / this->parent->x_scale); return v; } hb_position_t parent_scale_y_distance (hb_position_t v) { - if (unlikely (parent && parent->y_scale != y_scale)) + if (unlikely (parent && parent->y_scale && parent->y_scale != y_scale)) return (hb_position_t) (v * (int64_t) this->y_scale / this->parent->y_scale); return v; } @@ -903,15 +903,11 @@ struct hb_font_t } else { - for (unsigned j = 0; j < n; j++) - { - origins[j].x = 0; - origins[j].y = 0; - } + mult = 0; /* Indicates all origins[].x and origins[].y values are 0, therefore we can skip adjusting offsets below */ } } - assert (mult == -1 || mult == +1); + assert (mult == -1 || mult == +1 || mult == 0); if (mult == +1) for (unsigned j = 0; j < n; j++) { @@ -919,13 +915,14 @@ struct hb_font_t add_offset (&pos->x_offset, &pos->y_offset, origins[j].x, origins[j].y); } - else /* mult == -1 */ + else if (mult == -1) for (unsigned j = 0; j < n; j++) { hb_glyph_position_t *pos = &buf->pos[offset + j]; subtract_offset (&pos->x_offset, &pos->y_offset, origins[j].x, origins[j].y); } + /* else if (mult == 0) --> Do nothing */ offset += n; } @@ -970,15 +967,11 @@ struct hb_font_t } else { - for (unsigned j = 0; j < n; j++) - { - origins[j].x = 0; - origins[j].y = 0; - } + mult = 0; /* Indicates all origins[].x and origins[].y values are 0, therefore we can skip adjusting offsets below */ } } - assert (mult == -1 || mult == +1); + assert (mult == -1 || mult == +1 || mult == 0); if (mult == +1) for (unsigned j = 0; j < n; j++) { @@ -986,13 +979,14 @@ struct hb_font_t add_offset (&pos->x_offset, &pos->y_offset, origins[j].x, origins[j].y); } - else /* mult == -1 */ + else if (mult == -1) for (unsigned j = 0; j < n; j++) { hb_glyph_position_t *pos = &buf->pos[offset + j]; subtract_offset (&pos->x_offset, &pos->y_offset, origins[j].x, origins[j].y); } + /* else if (mult == 0) --> Do nothing */ offset += n; } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ft.cc b/src/java.desktop/share/native/libharfbuzz/hb-ft.cc index b90f966c57c..f02069f0c0c 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ft.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ft.cc @@ -766,6 +766,12 @@ hb_ft_get_glyph_name (hb_font_t *font HB_UNUSED, hb_lock_t lock (ft_font->lock); FT_Face ft_face = ft_font->ft_face; + if (!size) + { + char buf[128]; + return !FT_Get_Glyph_Name (ft_face, glyph, buf, sizeof (buf)) && *buf; + } + hb_bool_t ret = !FT_Get_Glyph_Name (ft_face, glyph, name, size); if (ret && (size && !*name)) ret = false; @@ -1117,14 +1123,13 @@ _hb_ft_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data buffer = (FT_Byte *) hb_malloc (length); if (!buffer) return nullptr; + auto buffer_guard = hb_make_scope_guard ([&]() { hb_free (buffer); }); error = FT_Load_Sfnt_Table (ft_face, tag, 0, buffer, &length); if (error) - { - hb_free (buffer); return nullptr; - } + buffer_guard.release (); return hb_blob_create ((const char *) buffer, length, HB_MEMORY_MODE_WRITABLE, buffer, hb_free); @@ -1693,6 +1698,13 @@ _release_blob (void *arg) void hb_ft_font_set_funcs (hb_font_t *font) { + int load_flags = FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING; + if (font->destroy == (hb_destroy_func_t) _hb_ft_font_destroy && font->user_data) + { + const hb_ft_font_t *existing_ft_font = (const hb_ft_font_t *) font->user_data; + load_flags = existing_ft_font->load_flags; + } + // In case of failure... hb_font_set_funcs (font, hb_font_funcs_get_empty (), @@ -1740,7 +1752,7 @@ hb_ft_font_set_funcs (hb_font_t *font) } _hb_ft_font_set_funcs (font, ft_face, true); - hb_ft_font_set_load_flags (font, FT_LOAD_DEFAULT | FT_LOAD_NO_HINTING); + hb_ft_font_set_load_flags (font, load_flags); _hb_ft_hb_font_changed (font, ft_face); } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-geometry.hh b/src/java.desktop/share/native/libharfbuzz/hb-geometry.hh index 0de062df68e..548561b0e2c 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-geometry.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-geometry.hh @@ -28,16 +28,25 @@ #include "hb-algs.hh" +#include + template struct hb_extents_t { hb_extents_t () {} - hb_extents_t (const hb_glyph_extents_t &extents) : - xmin (hb_min (extents.x_bearing, extents.x_bearing + extents.width)), - ymin (hb_min (extents.y_bearing, extents.y_bearing + extents.height)), - xmax (hb_max (extents.x_bearing, extents.x_bearing + extents.width)), - ymax (hb_max (extents.y_bearing, extents.y_bearing + extents.height)) {} + hb_extents_t (const hb_glyph_extents_t &extents) + { + double x0 = (double) extents.x_bearing; + double y0 = (double) extents.y_bearing; + double x1 = x0 + (double) extents.width; + double y1 = y0 + (double) extents.height; + + xmin = (Float) hb_min (x0, x1); + ymin = (Float) hb_min (y0, y1); + xmax = (Float) hb_max (x0, x1); + ymax = (Float) hb_max (y0, y1); + } hb_extents_t (Float xmin, Float ymin, Float xmax, Float ymax) : xmin (xmin), ymin (ymin), xmax (xmax), ymax (ymax) {} @@ -90,20 +99,37 @@ struct hb_extents_t hb_glyph_extents_t to_glyph_extents (bool xneg = false, bool yneg = false) const { - hb_position_t x0 = (hb_position_t) roundf (xmin); - hb_position_t y0 = (hb_position_t) roundf (ymin); - hb_position_t x1 = (hb_position_t) roundf (xmax); - hb_position_t y1 = (hb_position_t) roundf (ymax); - return hb_glyph_extents_t {xneg ? x1 : x0, - yneg ? y0 : y1, - xneg ? x0 - x1 : x1 - x0, - yneg ? y1 - y0 : y0 - y1}; + double x0 = round ((double) xmin); + double y0 = round ((double) ymin); + double x1 = round ((double) xmax); + double y1 = round ((double) ymax); + + if (unlikely (!std::isfinite (x0) || + !std::isfinite (y0) || + !std::isfinite (x1) || + !std::isfinite (y1))) + return hb_glyph_extents_t {0, 0, 0, 0}; + + return hb_glyph_extents_t { + clamp_to_hb_position (xneg ? x1 : x0), + clamp_to_hb_position (yneg ? y0 : y1), + clamp_to_hb_position (xneg ? x0 - x1 : x1 - x0), + clamp_to_hb_position (yneg ? y1 - y0 : y0 - y1) + }; } Float xmin = 0; Float ymin = 0; Float xmax = -1; Float ymax = -1; + + static hb_position_t + clamp_to_hb_position (double v) + { + return (hb_position_t) hb_clamp (v, + (double) hb_int_min (hb_position_t), + (double) hb_int_max (hb_position_t)); + } }; template diff --git a/src/java.desktop/share/native/libharfbuzz/hb-limits.hh b/src/java.desktop/share/native/libharfbuzz/hb-limits.hh index 857e183737f..9d6c7ec6822 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-limits.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-limits.hh @@ -108,5 +108,34 @@ #define HB_MAX_COMPOSITE_OPERATIONS_PER_GLYPH 64 #endif +#ifndef HB_SVG_MAX_PATH_SEGMENTS +#define HB_SVG_MAX_PATH_SEGMENTS 262144 +#endif + +#ifndef HB_GPU_DRAW_MAX_CURVES +#define HB_GPU_DRAW_MAX_CURVES 65536 +#endif + +#ifndef HB_SVG_MAX_DOCUMENT_SIZE +#define HB_SVG_MAX_DOCUMENT_SIZE ((size_t) 16 << 20) +#endif + +#ifndef HB_RASTER_MAX_BUFFER_SIZE +#define HB_RASTER_MAX_BUFFER_SIZE ((size_t) 1 << 30) +#endif + + +#ifndef HB_REPACKER_MAX_ITERATIONS +#define HB_REPACKER_MAX_ITERATIONS 500 +#endif + +#ifndef HB_REPACKER_MAX_VERTICES +#define HB_REPACKER_MAX_VERTICES 100000 +#endif + +#ifndef HB_REPACKER_MAX_SPACES +#define HB_REPACKER_MAX_SPACES 1024 +#endif + #endif /* HB_LIMITS_HH */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-machinery.hh b/src/java.desktop/share/native/libharfbuzz/hb-machinery.hh index 8fa32ea8eaa..8685ac29306 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-machinery.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-machinery.hh @@ -110,7 +110,7 @@ static inline auto StructAfter(TObject &X, Ts... args) HB_AUTO_RETURN(( #define DEFINE_SIZE_STATIC(size) \ DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size)) \ - unsigned int get_size () const { return (size); } \ + size_t get_size () const { return (size); } \ static constexpr unsigned null_size = (size); \ static constexpr unsigned min_size = (size); \ static constexpr unsigned static_size = (size) @@ -137,7 +137,7 @@ static inline auto StructAfter(TObject &X, Ts... args) HB_AUTO_RETURN(( static constexpr unsigned min_size = (size) #define DEFINE_SIZE_ARRAY_SIZED(size, array) \ - unsigned int get_size () const { return (size - (array).min_size + (array).get_size ()); } \ + size_t get_size () const { return (size - (array).min_size + (array).get_size ()); } \ DEFINE_SIZE_ARRAY(size, array) diff --git a/src/java.desktop/share/native/libharfbuzz/hb-map.hh b/src/java.desktop/share/native/libharfbuzz/hb-map.hh index 4c76622df7a..ae35e715d54 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-map.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-map.hh @@ -379,7 +379,11 @@ struct hb_hashmap_t void clear () { - if (unlikely (!successful)) return; + /* Early-out on already-empty. Protects the Null singleton + * (zero-initialized) from any writes. Any non-empty hashmap + * is a real heap instance with writable items, so clearing + * under !successful is safe. */ + if (!population && !occupancy) return; for (auto &_ : hb_iter (items, size ())) { diff --git a/src/java.desktop/share/native/libharfbuzz/hb-number.cc b/src/java.desktop/share/native/libharfbuzz/hb-number.cc index 37bc8b87399..f09366760fa 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-number.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-number.cc @@ -23,6 +23,10 @@ * */ +#ifndef HB_NUMBER_CC +#define HB_NUMBER_CC +#ifdef HB_NUMBER_CC /* Pacify -Wunused-macros. */ + #include "hb.hh" #include "hb-number.hh" #include "hb-number-parser.hh" @@ -77,3 +81,6 @@ hb_parse_double (const char **pp, const char *end, double *pv, bool whole_buffer *pp = pend; return !whole_buffer || end == pend; } + +#endif /* HB_NUMBER_CC pacify */ +#endif /* HB_NUMBER_CC guard */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-object.hh b/src/java.desktop/share/native/libharfbuzz/hb-object.hh index fa9a249b2e2..76de679c8c7 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-object.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-object.hh @@ -272,6 +272,8 @@ static inline void hb_object_make_immutable (const Type *obj) obj->header.writable = false; } template +static inline void hb_object_fini (Type *obj); +template static inline Type *hb_object_reference (Type *obj) { hb_object_trace (obj, HB_FUNC); @@ -282,7 +284,7 @@ static inline Type *hb_object_reference (Type *obj) return obj; } template -static inline bool hb_object_destroy (Type *obj) +static inline bool hb_object_should_destroy (Type *obj) { hb_object_trace (obj, HB_FUNC); if (unlikely (!obj || obj->header.is_inert ())) @@ -290,12 +292,25 @@ static inline bool hb_object_destroy (Type *obj) assert (hb_object_is_valid (obj)); if (obj->header.ref_count.dec () != 1) return false; + return true; +} +template +static inline void hb_object_actually_destroy (Type *obj) +{ hb_object_fini (obj); if (!std::is_trivially_destructible::value) obj->~Type (); +} +template +static inline bool hb_object_destroy (Type *obj) +{ + if (!hb_object_should_destroy (obj)) + return false; + + hb_object_actually_destroy (obj); return true; } template diff --git a/src/java.desktop/share/native/libharfbuzz/hb-open-type.hh b/src/java.desktop/share/native/libharfbuzz/hb-open-type.hh index ad831b66d56..29fc201ba04 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-open-type.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-open-type.hh @@ -148,7 +148,7 @@ struct HBUINT15 : HBUINT16 /* 32-bit unsigned integer with variable encoding. */ struct HBUINT32VAR { - unsigned get_size () const + size_t get_size () const { unsigned b0 = v[0]; if (b0 < 0x80) @@ -163,7 +163,7 @@ struct HBUINT32VAR return 5; } - static unsigned get_size (uint32_t v) + static size_t get_size (uint32_t v) { if (v < 0x80) return 1; @@ -563,7 +563,7 @@ struct UnsizedArrayOf return arrayZ[i]; } - static unsigned int get_size (unsigned int len) + static size_t get_size (unsigned int len) { return len * Type::static_size; } template operator T * () { return arrayZ; } @@ -725,7 +725,7 @@ struct ArrayOf return arrayZ[i]; } - unsigned int get_size () const + size_t get_size () const { return len.static_size + len * Type::static_size; } explicit operator bool () const { return len; } @@ -909,7 +909,7 @@ struct HeadlessArrayOf hb_barrier (); return arrayZ[i-1]; } - unsigned int get_size () const + size_t get_size () const { return lenP1.static_size + get_length () * Type::static_size; } unsigned get_length () const { return lenP1 ? lenP1 - 1 : 0; } @@ -1003,7 +1003,7 @@ struct ArrayOfM1 hb_barrier (); return arrayZ[i]; } - unsigned int get_size () const + size_t get_size () const { return lenM1.static_size + (lenM1 + 1) * Type::static_size; } template @@ -1197,7 +1197,7 @@ struct VarSizedBinSearchArrayOf } unsigned int get_length () const { return header.nUnits - last_is_terminator (); } - unsigned int get_size () const + size_t get_size () const { return header.static_size + header.nUnits * header.unitSize; } template @@ -1275,11 +1275,22 @@ struct CFFIndex if (unlikely (!serialize_header (c, +it, data_size, min_off_size))) return_trace (false); unsigned char *ret = c->allocate_size (data_size, false); if (unlikely (!ret)) return_trace (false); + unsigned remaining = data_size; for (const auto &_ : +it) { unsigned len = _.length; + if (!len) continue; + + if (unlikely (len > remaining)) { + // We have more bytes to write then the computed data size, so the size calculation + // must have encountered overflow. + return_trace (c->check_success (false, HB_SERIALIZE_ERROR_INT_OVERFLOW)); + } + + remaining -= len; + if (len <= 1) { *ret++ = *_.arrayZ; @@ -1450,7 +1461,7 @@ struct CFFIndex return hb_ubytes_t (data_base () + offset0, offset1 - offset0); } - unsigned int get_size () const + size_t get_size () const { if (count) return min_size + offSize.static_size + offset_array_size () + (offset_at (count) - 1); @@ -1948,6 +1959,7 @@ struct TupleValues return true; } + public: void skip (unsigned n) { while (n) @@ -1961,6 +1973,7 @@ struct TupleValues } } + private: template void _add_to (hb_array_t out, float scale = 1.0f) { @@ -2035,14 +2048,6 @@ struct TupleValues public: void add_to (hb_array_t out, float scale = 1.0f) { - unsigned n = out.length; - - if (scale == 0.0f) - { - skip (n); - return; - } - #ifndef HB_OPTIMIZE_SIZE // The following branch is supposed to speed things up by avoiding // the multiplication in _add_to<> if scale is 1.0f. @@ -2077,7 +2082,7 @@ struct TupleList : CFF2Index template struct Align { - unsigned get_size (const void *base) const + size_t get_size (const void *base) const { unsigned offset = (const char *) this - (const char *) base; return (alignment - offset) & (alignment - 1); diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-cff-common.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-cff-common.hh index ec018efe645..8db85e4f08c 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-cff-common.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-cff-common.hh @@ -201,7 +201,7 @@ struct FDSelect0 { hb_pair_t get_fd_range (hb_codepoint_t glyph) const { return {fds[glyph], glyph + 1}; } - unsigned int get_size (unsigned int num_glyphs) const + size_t get_size (unsigned int num_glyphs) const { return HBUINT8::static_size * num_glyphs; } HBUINT8 fds[HB_VAR_ARRAY]; @@ -229,7 +229,7 @@ struct FDSelect3_4_Range template struct FDSelect3_4 { - unsigned int get_size () const + size_t get_size () const { return GID_TYPE::static_size * 2 + ranges.get_size (); } bool sanitize (hb_sanitize_context_t *c, unsigned int fdcount) const @@ -304,7 +304,7 @@ struct FDSelect return_trace (true); } - unsigned int get_size (unsigned int num_glyphs) const + size_t get_size (unsigned int num_glyphs) const { switch (format) { diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-cff1-table.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-cff1-table.cc index b06936f94c8..d0e078bffdb 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-cff1-table.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-cff1-table.cc @@ -24,6 +24,10 @@ * Adobe Author(s): Michiharu Ariza */ +#ifndef HB_OT_CFF1_TABLE_CC +#define HB_OT_CFF1_TABLE_CC +#ifdef HB_OT_CFF1_TABLE_CC /* Pacify -Wunused-macros. */ + #include "hb.hh" #ifndef HB_NO_CFF @@ -609,3 +613,6 @@ bool OT::cff1::accelerator_subset_t::get_seac_components (hb_codepoint_t glyph, #endif + +#endif /* HB_OT_CFF1_TABLE_CC pacify */ +#endif /* HB_OT_CFF1_TABLE_CC guard */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-cff1-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-cff1-table.hh index 778167eeb23..92163ac8bd3 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-cff1-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-cff1-table.hh @@ -234,7 +234,7 @@ struct Encoding return_trace (true); } - unsigned int get_size () const + size_t get_size () const { unsigned int size = min_size; switch (table_format ()) @@ -262,7 +262,7 @@ struct Encoding void get_supplement_codes (hb_codepoint_t sid, hb_vector_t &codes) const { - codes.resize (0); + codes.clear (); if (has_supplement ()) suppEncData().get_codes (sid, codes); } @@ -344,7 +344,7 @@ struct Charset0 return 0; } - static unsigned int get_size (unsigned int num_glyphs) + static size_t get_size (unsigned int num_glyphs) { assert (num_glyphs > 0); return UnsizedArrayOf::get_size (num_glyphs - 1); @@ -459,7 +459,7 @@ struct Charset1_2 { return 0; } - unsigned int get_size (unsigned int num_glyphs) const + size_t get_size (unsigned int num_glyphs) const { int glyph = (int) num_glyphs; unsigned num_ranges = 0; @@ -475,7 +475,7 @@ struct Charset1_2 { return get_size_for_ranges (num_ranges); } - static unsigned int get_size_for_ranges (unsigned int num_ranges) + static size_t get_size_for_ranges (unsigned int num_ranges) { return UnsizedArrayOf >::get_size (num_ranges); } @@ -563,7 +563,7 @@ struct Charset return_trace (true); } - unsigned int get_size (unsigned int num_glyphs) const + size_t get_size (unsigned int num_glyphs) const { switch (format) { diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-cff2-table.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-cff2-table.cc index 499bd942cde..94d768a0308 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-cff2-table.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-cff2-table.cc @@ -24,6 +24,10 @@ * Adobe Author(s): Michiharu Ariza */ +#ifndef HB_OT_CFF2_TABLE_CC +#define HB_OT_CFF2_TABLE_CC +#ifdef HB_OT_CFF2_TABLE_CC /* Pacify -Wunused-macros. */ + #include "hb.hh" #ifndef HB_NO_OT_FONT_CFF @@ -228,3 +232,6 @@ bool OT::cff2::accelerator_t::get_path_at (hb_font_t *font, hb_codepoint_t glyph } #endif + +#endif /* HB_OT_CFF2_TABLE_CC pacify */ +#endif /* HB_OT_CFF2_TABLE_CC guard */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-cff2-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-cff2-table.hh index 7e94e38e115..84c593362cf 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-cff2-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-cff2-table.hh @@ -58,7 +58,7 @@ struct CFF2FDSelect return_trace (true); } - unsigned int get_size (unsigned int num_glyphs) const + size_t get_size (unsigned int num_glyphs) const { switch (format) { @@ -130,7 +130,7 @@ struct CFF2ItemVariationStore return_trace (true); } - unsigned int get_size () const { return HBUINT16::static_size + size; } + size_t get_size () const { return HBUINT16::static_size + size; } HBUINT16 size; ItemVariationStore varStore; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-cmap-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-cmap-table.hh index 93e9c0a2697..a3e75abef1d 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-cmap-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-cmap-table.hh @@ -237,8 +237,6 @@ struct CmapSubtableFormat0 struct CmapSubtableFormat4 { - - template @@ -521,9 +519,10 @@ struct CmapSubtableFormat4 struct accelerator_t { accelerator_t () {} - accelerator_t (const CmapSubtableFormat4 *subtable) { init (subtable); } + accelerator_t (const CmapSubtableFormat4 *subtable) = delete; - void init (const CmapSubtableFormat4 *subtable) + void init (const CmapSubtableFormat4 *subtable, + unsigned int subtable_data_size) { segCount = subtable->segCountX2 / 2; endCount = subtable->values.arrayZ; @@ -531,7 +530,11 @@ struct CmapSubtableFormat4 idDelta = startCount + segCount; idRangeOffset = idDelta + segCount; glyphIdArray = idRangeOffset + segCount; - glyphIdArrayLength = (subtable->length - 16 - 8 * segCount) / 2; + + unsigned int values_offset = 16 + 8 * segCount; + glyphIdArrayLength = subtable_data_size > values_offset + ? (subtable_data_size - values_offset) / 2 + : 0; } bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const @@ -671,23 +674,36 @@ struct CmapSubtableFormat4 unsigned int glyphIdArrayLength; }; - bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const + bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph, + unsigned int subtable_data_size) const { - accelerator_t accel (this); + accelerator_t accel; + accel.init (this, subtable_data_size); return accel.get_glyph_func (&accel, codepoint, glyph); } - void collect_unicodes (hb_set_t *out) const + bool get_glyph (hb_codepoint_t codepoint, hb_codepoint_t *glyph) const + { return false; } + + void collect_unicodes (hb_set_t *out, unsigned int subtable_data_size) const { - accelerator_t accel (this); + accelerator_t accel; + accel.init (this, subtable_data_size); accel.collect_unicodes (out); } + void collect_unicodes (hb_set_t *out) const + { collect_unicodes (out, length); } void collect_mapping (hb_set_t *unicodes, /* OUT */ - hb_map_t *mapping /* OUT */) const + hb_map_t *mapping, /* OUT */ + unsigned int subtable_data_size) const { - accelerator_t accel (this); + accelerator_t accel; + accel.init (this, subtable_data_size); accel.collect_mapping (unicodes, mapping); } + void collect_mapping (hb_set_t *unicodes, /* OUT */ + hb_map_t *mapping /* OUT */) const + { collect_mapping (unicodes, mapping, length); } bool sanitize (hb_sanitize_context_t *c) const { @@ -696,14 +712,9 @@ struct CmapSubtableFormat4 return_trace (false); hb_barrier (); - if (unlikely (!c->check_range (this, length))) - return_trace (false); - - return_trace (16 + 4 * (unsigned int) segCountX2 <= length); + return_trace (c->check_range (values, 2 + 4 * segCountX2)); } - - protected: HBUINT16 format; /* Format number is set to 4. */ HBUINT16 length; /* This is the length in bytes of the @@ -1485,11 +1496,14 @@ struct CmapSubtable /* Note: We intentionally do NOT implement subtable formats 2 and 8. */ bool get_glyph (hb_codepoint_t codepoint, - hb_codepoint_t *glyph) const + hb_codepoint_t *glyph, + unsigned int subtable_data_size = 0) const { switch (u.format.v) { case 0: hb_barrier (); return u.format0 .get_glyph (codepoint, glyph); - case 4: hb_barrier (); return u.format4 .get_glyph (codepoint, glyph); + case 4: hb_barrier (); return subtable_data_size + ? u.format4.get_glyph (codepoint, glyph, subtable_data_size) + : false; case 6: hb_barrier (); return u.format6 .get_glyph (codepoint, glyph); case 10: hb_barrier (); return u.format10.get_glyph (codepoint, glyph); case 12: hb_barrier (); return u.format12.get_glyph (codepoint, glyph); @@ -1498,11 +1512,17 @@ struct CmapSubtable default: return false; } } - void collect_unicodes (hb_set_t *out, unsigned int num_glyphs = UINT_MAX) const + void collect_unicodes (hb_set_t *out, + unsigned int num_glyphs = UINT_MAX, + unsigned int subtable_data_size = 0) const { switch (u.format.v) { case 0: hb_barrier (); u.format0 .collect_unicodes (out); return; - case 4: hb_barrier (); u.format4 .collect_unicodes (out); return; + case 4: hb_barrier (); if (subtable_data_size) + u.format4.collect_unicodes (out, subtable_data_size); + else + u.format4.collect_unicodes (out); + return; case 6: hb_barrier (); u.format6 .collect_unicodes (out); return; case 10: hb_barrier (); u.format10.collect_unicodes (out); return; case 12: hb_barrier (); u.format12.collect_unicodes (out, num_glyphs); return; @@ -1514,11 +1534,16 @@ struct CmapSubtable void collect_mapping (hb_set_t *unicodes, /* OUT */ hb_map_t *mapping, /* OUT */ - unsigned num_glyphs = UINT_MAX) const + unsigned num_glyphs = UINT_MAX, + unsigned int subtable_data_size = 0) const { switch (u.format.v) { case 0: hb_barrier (); u.format0 .collect_mapping (unicodes, mapping); return; - case 4: hb_barrier (); u.format4 .collect_mapping (unicodes, mapping); return; + case 4: hb_barrier (); if (subtable_data_size) + u.format4.collect_mapping (unicodes, mapping, subtable_data_size); + else + u.format4.collect_mapping (unicodes, mapping); + return; case 6: hb_barrier (); u.format6 .collect_mapping (unicodes, mapping); return; case 10: hb_barrier (); u.format10.collect_mapping (unicodes, mapping); return; case 12: hb_barrier (); u.format12.collect_mapping (unicodes, mapping, num_glyphs); return; @@ -1633,7 +1658,7 @@ struct EncodingRecord CmapSubtable *cmapsubtable = c->push (); unsigned origin_length = c->length (); cmapsubtable->serialize (c, it, format, plan, &(base+subtable)); - if (c->length () - origin_length > 0 && !c->in_error()) *objidx = c->pop_pack (); + if (c->length () > origin_length && !c->in_error()) *objidx = c->pop_pack (); else c->pop_discard (); } @@ -1662,6 +1687,7 @@ struct SubtableUnicodesCache { private: hb_blob_ptr_t base_blob; const char* base; + unsigned int table_length; hb_hashmap_t> cached_unicodes; public: @@ -1686,15 +1712,18 @@ struct SubtableUnicodesCache { hb_free (cache); } - SubtableUnicodesCache(const void* cmap_base) + SubtableUnicodesCache(const void* cmap_base, + unsigned int table_length_ = 0) : base_blob(), base ((const char*) cmap_base), + table_length (table_length_), cached_unicodes () {} SubtableUnicodesCache(hb_blob_ptr_t base_blob_) : base_blob(base_blob_), base ((const char *) base_blob.get()), + table_length (base_blob.get_length ()), cached_unicodes () {} @@ -1725,7 +1754,10 @@ struct SubtableUnicodesCache { if (unlikely (s->in_error ())) return hb_set_get_empty (); - (base+record->subtable).collect_unicodes (s); + unsigned int subtable_data_size = record->subtable < table_length + ? table_length - (unsigned int) record->subtable + : 0; + (base+record->subtable).collect_unicodes (s, UINT_MAX, subtable_data_size); if (unlikely (!cached_unicodes.set ((unsigned) ((const char *) record - base), hb::unique_ptr {s}))) return hb_set_get_empty (); @@ -1737,7 +1769,7 @@ struct SubtableUnicodesCache { }; -static inline uint_fast16_t +static inline uint16_t _hb_symbol_pua_map (unsigned codepoint) { if (codepoint <= 0x00FFu) @@ -1784,7 +1816,8 @@ struct cmap EncodingRecIter encodingrec_iter, const void *base, hb_subset_plan_t *plan, - bool drop_format_4 = false) + bool drop_format_4 = false, + unsigned int source_table_length = 0) { if (unlikely (!c->extend_min ((*this)))) return false; this->version = 0; @@ -1792,7 +1825,7 @@ struct cmap unsigned format4objidx = 0, format12objidx = 0, format14objidx = 0; auto snap = c->snapshot (); - SubtableUnicodesCache local_unicodes_cache (base); + SubtableUnicodesCache local_unicodes_cache (base, source_table_length); const SubtableUnicodesCache* unicodes_cache = &local_unicodes_cache; if (plan->accelerator && @@ -1821,7 +1854,8 @@ struct cmap encodingrec_iter, base, plan, - true); + true, + source_table_length); } } @@ -1838,9 +1872,11 @@ struct cmap } else if (format == 14) c->copy (_, it, 14u, base, plan, &format14objidx); } - c->check_assign(this->encodingRecord.len, - (c->length () - cmap::min_size)/EncodingRecord::static_size, - HB_SERIALIZE_ERROR_INT_OVERFLOW); + unsigned length = c->length (); + unsigned available = length > cmap::min_size ? length - cmap::min_size : 0; + c->check_assign(this->encodingRecord.len, + available / EncodingRecord::static_size, + HB_SERIALIZE_ERROR_INT_OVERFLOW); // Fail if format 4 was dropped and there is no cmap12. return !drop_format_4 || format12objidx; @@ -1955,7 +1991,9 @@ struct cmap it, encodingrec_iter, this, - c->plan)); + c->plan, + false, + c->source_blob->length)); } const CmapSubtable *find_best_subtable (bool *symbol = nullptr, @@ -2034,32 +2072,60 @@ struct cmap this->get_glyph_data = subtable; #ifndef HB_NO_CMAP_LEGACY_SUBTABLES + bool is_format4 = subtable->u.format.v == 4; + auto set_format4_getter = [this] (bool (*func) (const void *, + hb_codepoint_t, + hb_codepoint_t *)) + { + this->format4_accel.init (&this->subtable->u.format4, + get_subtable_data_size (this->subtable)); + this->get_glyph_data = &this->format4_accel; + this->get_glyph_funcZ = func; + }; if (unlikely (symbol)) { switch ((unsigned) face->table.OS2->get_font_page ()) { case OS2::font_page_t::FONT_PAGE_NONE: - this->get_glyph_funcZ = get_glyph_from_symbol; + if (is_format4) + set_format4_getter (get_glyph_from_symbol); + else + this->get_glyph_funcZ = get_glyph_from_symbol; break; #ifndef HB_NO_OT_SHAPER_ARABIC_FALLBACK case OS2::font_page_t::FONT_PAGE_SIMP_ARABIC: - this->get_glyph_funcZ = get_glyph_from_symbol; + if (is_format4) + set_format4_getter (get_glyph_from_symbol); + else + this->get_glyph_funcZ = get_glyph_from_symbol; break; case OS2::font_page_t::FONT_PAGE_TRAD_ARABIC: - this->get_glyph_funcZ = get_glyph_from_symbol; + if (is_format4) + set_format4_getter (get_glyph_from_symbol); + else + this->get_glyph_funcZ = get_glyph_from_symbol; break; #endif default: - this->get_glyph_funcZ = get_glyph_from; + if (is_format4) + set_format4_getter (get_glyph_from); + else + this->get_glyph_funcZ = get_glyph_from; break; } } else if (unlikely (macroman)) { - this->get_glyph_funcZ = get_glyph_from_macroman; + if (is_format4) + set_format4_getter (get_glyph_from_macroman); + else + this->get_glyph_funcZ = get_glyph_from_macroman; } else if (unlikely (mac)) { - this->get_glyph_funcZ = get_glyph_from_ascii; + if (is_format4) + set_format4_getter (get_glyph_from_ascii); + else + this->get_glyph_funcZ = get_glyph_from_ascii; } else #endif @@ -2074,7 +2140,8 @@ struct cmap break; case 4: { - this->format4_accel.init (&subtable->u.format4); + this->format4_accel.init (&subtable->u.format4, + get_subtable_data_size (subtable)); this->get_glyph_data = &this->format4_accel; this->get_glyph_funcZ = this->format4_accel.get_glyph_func; break; @@ -2155,10 +2222,10 @@ struct cmap } void collect_unicodes (hb_set_t *out, unsigned int num_glyphs) const - { subtable->collect_unicodes (out, num_glyphs); } + { subtable->collect_unicodes (out, num_glyphs, get_subtable_data_size (subtable)); } void collect_mapping (hb_set_t *unicodes, hb_map_t *mapping, unsigned num_glyphs = UINT_MAX) const - { subtable->collect_mapping (unicodes, mapping, num_glyphs); } + { subtable->collect_mapping (unicodes, mapping, num_glyphs, get_subtable_data_size (subtable)); } void collect_variation_selectors (hb_set_t *out) const { subtable_uvs->collect_variation_selectors (out); } void collect_variation_unicodes (hb_codepoint_t variation_selector, @@ -2169,7 +2236,7 @@ struct cmap typedef bool (*hb_cmap_get_glyph_func_t) (const void *obj, hb_codepoint_t codepoint, hb_codepoint_t *glyph); - typedef uint_fast16_t (*hb_pua_remap_func_t) (unsigned); + typedef uint16_t (*hb_pua_remap_func_t) (unsigned); template HB_INTERNAL static bool get_glyph_from (const void *obj, @@ -2217,6 +2284,21 @@ struct cmap return c && typed_obj->get_glyph (c, glyph); } + unsigned int get_subtable_data_size (const CmapSubtable *subtable) const + { + unsigned int table_length = this->table.get_length (); + uintptr_t table_start = (uintptr_t) (const void *) this->table.get (); + uintptr_t subtable_addr = (uintptr_t) (const void *) subtable; + if (unlikely (subtable_addr < table_start)) + return 0; + + uintptr_t subtable_offset = subtable_addr - table_start; + if (unlikely (subtable_offset >= table_length)) + return 0; + + return table_length - (unsigned int) subtable_offset; + } + private: hb_nonnull_ptr_t subtable; hb_nonnull_ptr_t subtable_uvs; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-color.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-color.cc index 2d9b8e7cad2..29f038a472d 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-color.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-color.cc @@ -35,7 +35,9 @@ #include "OT/Color/COLR/COLR.hh" #include "OT/Color/CPAL/CPAL.hh" #include "OT/Color/sbix/sbix.hh" +#ifndef HB_NO_SVG #include "OT/Color/svg/svg.hh" +#endif /** @@ -274,6 +276,7 @@ hb_ot_color_glyph_get_layers (hb_face_t *face, * SVG */ +#ifndef HB_NO_SVG /** * hb_ot_color_has_svg: * @face: #hb_face_t to work upon. @@ -290,6 +293,70 @@ hb_ot_color_has_svg (hb_face_t *face) return face->table.SVG->has_data (); } +/** + * hb_ot_color_get_svg_document_count: + * @face: #hb_face_t to work upon. + * + * Gets the number of SVG documents in the face `SVG` table. + * + * Return value: number of SVG documents in the face. + * + * Since: 12.1.0 + */ +unsigned int +hb_ot_color_get_svg_document_count (hb_face_t *face) +{ + return face->table.SVG->get_document_count (); +} + +/** + * hb_ot_color_glyph_get_svg_document_index: + * @face: #hb_face_t to work upon. + * @glyph: glyph ID to query. + * @svg_document_index: (out) (nullable): output SVG document index. + * + * Gets the `SVG`-table document index associated with a glyph. + * + * Return value: `true` if @glyph maps to an SVG document, `false` otherwise. + * + * Since: 12.1.0 + */ +hb_bool_t +hb_ot_color_glyph_get_svg_document_index (hb_face_t *face, + hb_codepoint_t glyph, + unsigned int *svg_document_index) +{ + unsigned doc_index = 0; + hb_bool_t ret = face->table.SVG->get_glyph_document_index (glyph, &doc_index); + if (ret && svg_document_index) + *svg_document_index = doc_index; + return ret; +} + +/** + * hb_ot_color_get_svg_document_glyph_range: + * @face: #hb_face_t to work upon. + * @svg_document_index: SVG document index. + * @start_glyph_id: (out) (nullable): output start glyph ID. + * @end_glyph_id: (out) (nullable): output end glyph ID. + * + * Gets the glyph range covered by an `SVG`-table document index. + * + * Return value: `true` if @svg_document_index is valid, `false` otherwise. + * + * Since: 13.0.0 + */ +hb_bool_t +hb_ot_color_get_svg_document_glyph_range (hb_face_t *face, + unsigned int svg_document_index, + hb_codepoint_t *start_glyph_id, + hb_codepoint_t *end_glyph_id) +{ + return face->table.SVG->get_document_glyph_range (svg_document_index, + start_glyph_id, + end_glyph_id); +} + /** * hb_ot_color_glyph_reference_svg: * @face: #hb_face_t to work upon @@ -308,6 +375,7 @@ hb_ot_color_glyph_reference_svg (hb_face_t *face, hb_codepoint_t glyph) { return face->table.SVG->reference_blob_for_glyph (glyph); } +#endif /* diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-color.h b/src/java.desktop/share/native/libharfbuzz/hb-ot-color.h index 7fa810bd96f..ed898eb44df 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-color.h +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-color.h @@ -136,6 +136,20 @@ hb_ot_color_glyph_has_paint (hb_face_t *face, HB_EXTERN hb_bool_t hb_ot_color_has_svg (hb_face_t *face); +HB_EXTERN unsigned int +hb_ot_color_get_svg_document_count (hb_face_t *face); + +HB_EXTERN hb_bool_t +hb_ot_color_glyph_get_svg_document_index (hb_face_t *face, + hb_codepoint_t glyph, + unsigned int *svg_document_index /* OUT */); + +HB_EXTERN hb_bool_t +hb_ot_color_get_svg_document_glyph_range (hb_face_t *face, + unsigned int svg_document_index, + hb_codepoint_t *start_glyph_id, /* OUT */ + hb_codepoint_t *end_glyph_id /* OUT */); + HB_EXTERN hb_blob_t * hb_ot_color_glyph_reference_svg (hb_face_t *face, hb_codepoint_t glyph); diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-face-table-list.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-face-table-list.hh index afc8aa476e2..9047b2880ab 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-face-table-list.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-face-table-list.hh @@ -140,8 +140,10 @@ HB_OT_ACCELERATOR (OT, COLR) HB_OT_CORE_TABLE (OT, CPAL) HB_OT_ACCELERATOR (OT, CBDT) HB_OT_ACCELERATOR (OT, sbix) +#ifndef HB_NO_SVG HB_OT_ACCELERATOR (OT, SVG) #endif +#endif /* OpenType math. */ #ifndef HB_NO_MATH diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-font.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-font.cc index 8add9209f37..997fbe5be04 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-font.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-font.cc @@ -897,31 +897,29 @@ hb_ot_draw_glyph_or_fail (hb_font_t *font, { const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data; hb_draw_session_t draw_session {draw_funcs, draw_data}; - bool ret = false; OT::hb_scalar_cache_t *gvar_cache = nullptr; +#ifndef HB_NO_VAR if (font->num_coords) { ot_font->check_serial (font); gvar_cache = ot_font->draw.acquire_gvar_cache (*ot_font->ot_face->gvar); } +#endif + HB_SCOPE_GUARD (ot_font->draw.release_gvar_cache (gvar_cache)); #ifndef HB_NO_VAR_COMPOSITES - if (font->face->table.VARC->get_path (font, glyph, draw_session)) { ret = true; goto done; } + if (font->face->table.VARC->get_path (font, glyph, draw_session)) return true; #endif // Keep the following in synch with VARC::get_path_at() - if (font->face->table.glyf->get_path (font, glyph, draw_session, gvar_cache)) { ret = true; goto done; } + if (font->face->table.glyf->get_path (font, glyph, draw_session, gvar_cache)) return true; #ifndef HB_NO_CFF - if (font->face->table.cff2->get_path (font, glyph, draw_session)) { ret = true; goto done; } - if (font->face->table.cff1->get_path (font, glyph, draw_session)) { ret = true; goto done; } + if (font->face->table.cff2->get_path (font, glyph, draw_session)) return true; + if (font->face->table.cff1->get_path (font, glyph, draw_session)) return true; #endif -done: - - ot_font->draw.release_gvar_cache (gvar_cache); - - return ret; + return false; } #endif @@ -937,7 +935,9 @@ hb_ot_paint_glyph_or_fail (hb_font_t *font, { #ifndef HB_NO_COLOR if (font->face->table.COLR->paint_glyph (font, glyph, paint_funcs, paint_data, palette, foreground)) return true; +#ifndef HB_NO_SVG if (font->face->table.SVG->paint_glyph (font, glyph, paint_funcs, paint_data)) return true; +#endif #ifndef HB_NO_OT_FONT_BITMAP if (font->face->table.CBDT->paint_glyph (font, glyph, paint_funcs, paint_data)) return true; if (font->face->table.sbix->paint_glyph (font, glyph, paint_funcs, paint_data)) return true; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-hdmx-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-hdmx-table.hh index 918cf32dcb5..77c2894bbc8 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-hdmx-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-hdmx-table.hh @@ -41,7 +41,7 @@ namespace OT { struct DeviceRecord { - static unsigned int get_size (unsigned count) + static size_t get_size (unsigned count) { return hb_ceil_to_4 (min_size + count * HBUINT8::static_size); } template struct KernSubTable { - unsigned int get_size () const { return u.header.length; } + size_t get_size () const { return u.header.length; } unsigned int get_type () const { return u.header.format; } int get_kerning (hb_codepoint_t left, hb_codepoint_t right) const diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-layout-common.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-layout-common.hh index 6b62732bf54..cc1bceac4c6 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-layout-common.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-layout-common.hh @@ -637,7 +637,7 @@ struct FeatureParamsCharacterVariants return characters.len; } - unsigned get_size () const + size_t get_size () const { return min_size + characters.len * HBUINT24::static_size; } void collect_name_ids (hb_set_t *nameids_to_retain /* OUT */) const @@ -1272,7 +1272,7 @@ struct Lookup TSubTable& get_subtable (unsigned int i) { return this+get_subtables ()[i]; } - unsigned int get_size () const + size_t get_size () const { const HBUINT16 &markFilteringSet = StructAfter (subTable); if (lookupFlag & LookupFlag::UseMarkFilteringSet) @@ -2543,13 +2543,13 @@ struct SparseVarRegionAxis struct hb_scalar_cache_t { private: - static constexpr unsigned STATIC_LENGTH = 16; + static constexpr unsigned STATIC_LENGTH = 128; static constexpr int INVALID = INT_MIN; static constexpr float MULTIPLIER = 1 << ((sizeof (int) * 8) - 2); static constexpr float DIVISOR = 1.f / MULTIPLIER; public: - hb_scalar_cache_t () : length (STATIC_LENGTH) { clear (); } + hb_scalar_cache_t () {} hb_scalar_cache_t (const hb_scalar_cache_t&) = delete; hb_scalar_cache_t (hb_scalar_cache_t&&) = delete; @@ -2561,8 +2561,9 @@ struct hb_scalar_cache_t { if (!count) return (hb_scalar_cache_t *) &Null(hb_scalar_cache_t); - if (scratch_cache && count <= scratch_cache->length) + if (scratch_cache && count <= STATIC_LENGTH) { + scratch_cache->length = count; scratch_cache->clear (); return scratch_cache; } @@ -2790,7 +2791,7 @@ struct VarRegionList return !regions.in_error (); } - unsigned int get_size () const { return min_size + VarRegionAxis::static_size * axisCount * regionCount; } + size_t get_size () const { return min_size + VarRegionAxis::static_size * axisCount * regionCount; } public: HBUINT16 axisCount; @@ -2870,7 +2871,7 @@ struct VarData unsigned int get_row_size () const { return (wordCount () + regionIndices.len) * (longWords () ? 2 : 1); } - unsigned int get_size () const + size_t get_size () const { return min_size - regionIndices.min_size + regionIndices.get_size () + itemCount * get_row_size (); @@ -2970,7 +2971,9 @@ struct VarData } if (unlikely (!c->extend_min (this))) return_trace (false); - itemCount = row_count; + if (unlikely (!c->check_assign (itemCount, row_count, + HB_SERIALIZE_ERROR_INT_OVERFLOW))) + return_trace (false); int min_threshold = has_long ? -65536 : -128; int max_threshold = has_long ? +65535 : +127; @@ -3240,7 +3243,7 @@ struct VarData struct MultiVarData { - unsigned int get_size () const + size_t get_size () const { return min_size - regionIndices.min_size + regionIndices.get_size () + StructAfter (regionIndices).get_size (); @@ -3256,12 +3259,24 @@ struct MultiVarData auto values_iter = deltaSets.fetcher (inner); unsigned regionCount = regionIndices.len; + unsigned skip = 0; for (unsigned regionIndex = 0; regionIndex < regionCount; regionIndex++) { float scalar = regions.evaluate (regionIndices.arrayZ[regionIndex], coords, coord_count, cache); - values_iter.add_to (out, scalar); + // We skip lazily. Helps with the tail end. + if (scalar == 0.0f) + skip += out.length; + else + { + if (skip) + { + values_iter.skip (skip); + skip = 0; + } + values_iter.add_to (out, scalar); + } } } @@ -3623,7 +3638,7 @@ struct DeltaSetIndexMapFormat01 { friend struct DeltaSetIndexMap; - unsigned get_size () const + size_t get_size () const { return min_size + mapCount * get_width (); } private: @@ -4041,7 +4056,7 @@ struct ConditionValue bool evaluate (const int *coords, unsigned int coord_len, Instancer *instancer) const { - signed value = defaultValue; + float value = defaultValue; value += (*instancer)[varIdx]; return value > 0; } @@ -4789,7 +4804,7 @@ struct HintingDevice public: - unsigned int get_size () const + size_t get_size () const { unsigned int f = deltaFormat; if (unlikely (f < 1 || f > 3 || startSize > endSize)) return 3 * HBUINT16::static_size; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-layout-gsubgpos.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-layout-gsubgpos.hh index 05bbf3395bf..a2a45af9e76 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-layout-gsubgpos.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-layout-gsubgpos.hh @@ -743,6 +743,10 @@ struct hb_ot_apply_context_t : hb_vector_t match_positions; uint32_t stack_match_positions[8]; +#ifndef HB_NO_BUFFER_MESSAGE + hb_buffer_t::changed_func_t orig_changed_func = nullptr; + void *orig_changed_data = nullptr; +#endif hb_ot_apply_context_t (unsigned int table_index_, hb_font_t *font_, @@ -773,6 +777,30 @@ struct hb_ot_apply_context_t : { init_iters (); match_positions.set_storage (stack_match_positions); + +#ifndef HB_NO_BUFFER_MESSAGE + if (buffer->messaging ()) + { + assert (buffer->changed_func == nullptr || + buffer->changed_func == buffer_changed_trampoline); + orig_changed_func = buffer->changed_func; + orig_changed_data = buffer->changed_data; + buffer->changed_func = buffer_changed_trampoline; + buffer->changed_data = this; + } +#endif + } + ~hb_ot_apply_context_t () + { +#ifndef HB_NO_BUFFER_MESSAGE + if (buffer->messaging ()) + { + assert (buffer->changed_func == buffer_changed_trampoline); + assert (buffer->changed_data == this); + buffer->changed_func = orig_changed_func; + buffer->changed_data = orig_changed_data; + } +#endif } void init_iters () @@ -801,6 +829,18 @@ struct hb_ot_apply_context_t : return buffer->random_state; } + static void buffer_changed_trampoline (hb_buffer_t *buffer HB_UNUSED, void *user_data) + { + ((hb_ot_apply_context_t *) user_data)->buffer_changed (); + } + void buffer_changed () + { + buffer->update_digest (); + if (likely (has_glyph_classes)) + for (unsigned i = 0; i < buffer->len; i++) + _set_glyph_class_props (buffer->info[i]); + } + HB_ALWAYS_INLINE HB_HOT bool match_properties_mark (const hb_glyph_info_t *info, @@ -870,8 +910,7 @@ struct hb_ot_apply_context_t : props |= HB_OT_LAYOUT_GLYPH_PROPS_MULTIPLIED; if (likely (has_glyph_classes)) { - props &= HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE; - _hb_glyph_info_set_glyph_props (&buffer->cur(), props | gdef_accel.get_glyph_props (glyph_index)); + _set_glyph_class_props (buffer->cur(), props, glyph_index); } else if (class_guess) { @@ -881,6 +920,19 @@ struct hb_ot_apply_context_t : else _hb_glyph_info_set_glyph_props (&buffer->cur(), props); } + void _set_glyph_class_props (hb_glyph_info_t &info, + unsigned int props, + hb_codepoint_t glyph_index) + { + props &= HB_OT_LAYOUT_GLYPH_PROPS_PRESERVE; + _hb_glyph_info_set_glyph_props (&info, props | gdef_accel.get_glyph_props (glyph_index)); + } + void _set_glyph_class_props (hb_glyph_info_t &info) + { + _set_glyph_class_props (info, + _hb_glyph_info_get_glyph_props (&info), + info.codepoint); + } void replace_glyph (hb_codepoint_t glyph_index) { @@ -1813,23 +1865,25 @@ static inline void apply_lookup (hb_ot_apply_context_t *c, if (buffer->have_output) c->buffer->sync_so_far (); c->buffer->message (c->font, - "recursing to lookup %u at %u", + "start recursing to lookup %u at %u", (unsigned) lookupRecord[i].lookupListIndex, buffer->idx); } - if (!c->recurse (lookupRecord[i].lookupListIndex)) - continue; + bool ret = c->recurse (lookupRecord[i].lookupListIndex); if (HB_BUFFER_MESSAGE_MORE && c->buffer->messaging ()) { if (buffer->have_output) c->buffer->sync_so_far (); c->buffer->message (c->font, - "recursed to lookup %u", + "end recursing to lookup %u", (unsigned) lookupRecord[i].lookupListIndex); } + if (!ret) + continue; + unsigned int new_len = buffer->backtrack_len () + buffer->lookahead_len (); int delta = new_len - orig_len; @@ -4590,7 +4644,7 @@ struct GSUBGPOSVersion1_2 public: DEFINE_SIZE_MIN (4 + 3 * Types::size); - unsigned int get_size () const + size_t get_size () const { return min_size + (version.to_int () >= 0x00010001u ? featureVars.static_size : 0); @@ -4672,7 +4726,7 @@ struct GSUBGPOSVersion1_2 struct GSUBGPOS { - unsigned int get_size () const + size_t get_size () const { switch (u.version.major) { case 1: hb_barrier (); return u.version1.get_size (); diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-layout.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-layout.cc index c73e4dc4b6d..5f0bd1bce84 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-layout.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-layout.cc @@ -2072,21 +2072,25 @@ inline void hb_ot_map_t::apply (const Proxy &proxy, void hb_ot_map_t::substitute (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const { GSUBProxy proxy (font->face); + char tag[5] = {0}; + hb_tag_to_string (chosen_script[0], tag); if (buffer->messaging () && - !buffer->message (font, "start table GSUB script tag '%c%c%c%c'", HB_UNTAG (chosen_script[0]))) return; + !buffer->message (font, "start table GSUB script tag '%s'", tag)) return; apply (proxy, plan, font, buffer); if (buffer->messaging ()) - (void) buffer->message (font, "end table GSUB script tag '%c%c%c%c'", HB_UNTAG (chosen_script[0])); + (void) buffer->message (font, "end table GSUB script tag '%s'", tag); } void hb_ot_map_t::position (const hb_ot_shape_plan_t *plan, hb_font_t *font, hb_buffer_t *buffer) const { GPOSProxy proxy (font->face); + char tag[5] = {0}; + hb_tag_to_string (chosen_script[0], tag); if (buffer->messaging () && - !buffer->message (font, "start table GPOS script tag '%c%c%c%c'", HB_UNTAG (chosen_script[1]))) return; + !buffer->message (font, "start table GPOS script tag '%s'", tag)) return; apply (proxy, plan, font, buffer); if (buffer->messaging ()) - (void) buffer->message (font, "end table GPOS script tag '%c%c%c%c'", HB_UNTAG (chosen_script[1])); + (void) buffer->message (font, "end table GPOS script tag '%s'", tag); } void diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-os2-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-os2-table.hh index 24e9c970353..a044b7f9c0c 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-os2-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-os2-table.hh @@ -344,7 +344,7 @@ struct OS2 font_page_t get_font_page () const { return (font_page_t) (version == 0 ? fsSelection & 0xFF00 : 0); } - unsigned get_size () const + size_t get_size () const { unsigned result = min_size; if (version >= 1) result += v1X.get_size (); diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-post-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-post-table.hh index 2c4c6c04663..1de8864c488 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-post-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-post-table.hh @@ -194,7 +194,11 @@ struct post for (unsigned int i = 0; i < count; i++) gids[i] = i; - hb_qsort (gids, count, sizeof (gids[0]), cmp_gids, (void *) this); + auto thiz = this; + hb_array_t (gids, count) + .qsort ([thiz] (const uint16_t &a, const uint16_t &b) { + return thiz->find_glyph_name (a).cmp (thiz->find_glyph_name (b)) > 0; + }); if (unlikely (!gids_sorted_by_name.cmpexch (nullptr, gids))) { @@ -235,14 +239,6 @@ struct post return 0; } - static int cmp_gids (const void *pa, const void *pb, void *arg) - { - const accelerator_t *thiz = (const accelerator_t *) arg; - uint16_t a = * (const uint16_t *) pa; - uint16_t b = * (const uint16_t *) pb; - return thiz->find_glyph_name (b).cmp (thiz->find_glyph_name (a)); - } - static int cmp_key (const void *pk, const void *po, void *arg) { const accelerator_t *thiz = (const accelerator_t *) arg; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shape-normalize.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-shape-normalize.cc index 508ed6a5076..e97507480a4 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shape-normalize.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shape-normalize.cc @@ -322,6 +322,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, /* First round, decompose */ bool all_simple = true; + if (buffer->message (font, "start decompose")) { buffer->clear_output (); count = buffer->len; @@ -364,6 +365,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, } while (buffer->idx < count && buffer->successful); buffer->sync (); + (void) buffer->message (font, "end decompose"); } @@ -420,7 +422,8 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, if (!all_simple && buffer->successful && (mode == HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS || - mode == HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT)) + mode == HB_OT_SHAPE_NORMALIZATION_MODE_COMPOSED_DIACRITICS_NO_SHORT_CIRCUIT) && + buffer->message (font, "start compose")) { /* As noted in the comment earlier, we don't try to combine * ccc=0 chars with their previous Starter. */ @@ -470,6 +473,7 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, starter = buffer->out_len - 1; } buffer->sync (); + (void) buffer->message (font, "end compose"); } } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shape.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-shape.cc index 69b188f7aa3..9d792cc7f11 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shape.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shape.cc @@ -580,12 +580,8 @@ hb_form_clusters (hb_buffer_t *buffer) if (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_CONTINUATIONS)) return; - if (HB_BUFFER_CLUSTER_LEVEL_IS_GRAPHEMES (buffer->cluster_level)) - foreach_grapheme (buffer, start, end) - buffer->merge_clusters (start, end); - else - foreach_grapheme (buffer, start, end) - buffer->unsafe_to_break (start, end); + foreach_grapheme (buffer, start, end) + buffer->merge_grapheme_clusters (start, end); } static void @@ -1332,4 +1328,20 @@ hb_ot_shape_glyphs_closure (hb_font_t *font, } +/** + * hb_ot_shape_get_buffer_format_serial: + * + * Returns the serial number of the current internal buffer format. + * See #HB_OT_SHAPE_BUFFER_FORMAT_SERIAL for more information. + * + * Return value: The current buffer-format serial number. + * + * Since: 13.2.0 + **/ +unsigned int +hb_ot_shape_get_buffer_format_serial (void) +{ + return HB_OT_SHAPE_BUFFER_FORMAT_SERIAL; +} + #endif diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shape.h b/src/java.desktop/share/native/libharfbuzz/hb-ot-shape.h index 1732831b132..7aaf5ed5c9c 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shape.h +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shape.h @@ -54,6 +54,21 @@ hb_ot_shape_plan_get_feature_tags (hb_shape_plan_t *shape_plan, unsigned int *tag_count, /* IN/OUT */ hb_tag_t *tags /* OUT */); +/** + * HB_OT_SHAPE_BUFFER_FORMAT_SERIAL: + * + * The serial number of the current internal buffer format. + * + * The serial number will increase when internal #hb_glyph_info_t and + * #hb_glyph_position_t members change their format. + * + * Since: 13.2.0 + */ +#define HB_OT_SHAPE_BUFFER_FORMAT_SERIAL 1 + +HB_EXTERN unsigned int +hb_ot_shape_get_buffer_format_serial (void); + HB_END_DECLS #endif /* HB_OT_SHAPE_H */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic-pua.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic-pua.hh index ba86772f849..7464e5d8a3b 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic-pua.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic-pua.hh @@ -9,41 +9,43 @@ #ifndef HB_OT_SHAPER_ARABIC_PUA_HH #define HB_OT_SHAPER_ARABIC_PUA_HH -static const uint8_t -_hb_arabic_u8[464] = +#include "hb.hh" + +#include + +static const uint8_t _hb_arabic_pua_u8[453]= { - 84, 86, 85, 85, 85, 85, 85,213, 16, 34, 34, 34, 34, 34, 35, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 36, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 82, 16, 0, 0, 0, 0, 1, 2, 3, 4, - 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 7, - 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 0, 0, 0, 22, 0, 23, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 16, 34, 34, 34, 35, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 66, 16, 50, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68,101, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 71, 68, 68, 68, 68, 68, 68, 68,152,186, 76, 77, 68,254, 16, 50, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 5, 6, - 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 3, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 0, 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 23, 23, 29, 30, 31, 32, 33, 0, 0, 0, 0, - 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 40, - 41, 42, 0, 43, 44, 0, 0, 45, 46, 0, 47, 48, 49, 0, 0, 0, - 0, 50, 0, 0, 51, 52, 0, 53, 54, 55, 56, 57, 58, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 66, - 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 7, 0, 0, 8, 0, 0, 0, 9, 0, 0, + 10, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, + 22, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 33, + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,101, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,152, + 186, 12, 13, 0,254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, + 5, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, + 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 13, 0, 0, 0, 0, 0, 14, 0, 0, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 1, 24, 25, 26, 27, 28, 1, 1, 29, 30, 31, 32, + 33, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 36, 37, 38, 0, 0, 0, 0, 0, 0, + 0, 39, 0, 0, 40, 41, 42, 0, 43, 44, 0, 0, 45, 46, 0, 47, + 48, 49, 0, 0, 0, 0, 50, 0, 0, 51, 52, 0, 53, 54, 55, 56, + 57, 58, 0, 0, 0, 0, 0, 59, 60, 61, 62, 63, 64, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 65, 0, 0, 66, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, }; -static const uint16_t -_hb_arabic_u16[720] = +static const uint16_t _hb_arabic_pua_u16[717]= { 0, 0, 0, 0, 0, 0, 0, 0,61728,61729,61730, 0, 0,61733, 0, 0, 61736,61737,61738,61739,61790,61741,61742,61743,61872,61873,61874,61875,61876,61877,61878,61879, @@ -65,52 +67,46 @@ _hb_arabic_u16[720] = 61808,61813,61813,61811,61812,61816,61816,61814,61815,61818,61818,61817,61817,61820,61820,61819, 61819,61822,61822,61821,61821,61921,61921,61823,61823,61860,61859,61857,61858,61861,61861,61868, 61867,61864,61863,61862,61862,61888,61889,61886,61887,61890,61891,61885,61884, 0, 0, 0, - 0, 0, 0, 0,61984,61985,61986, 0, 0,61989, 0, 0,61992,61993,61994,61995, - 62046,61997,61998,61999, 0, 0,62010,62011, 0,62013, 0,62015, 0, 0, 0,62043, - 0,62045, 0, 0, 0, 0, 0,61987, 0, 0, 0,61988, 0, 0, 0,61990, - 0, 0, 0,61991,61996, 0, 0, 0, 0, 0, 0,62011, 0, 0, 0,62015, - 0,62165,62021,62019,62170,62023,62169,62017,62028,62161,62032,62036,62040,62048,62052,62053, - 62055,62057,62059,62064,62068,62072,62078,62114,62115,62122,62126,61952,61952,61952,61952,61952, - 62047,62130,62134,62138,62142,62146,62150,62154,62155,62164,62160,62183,62184,62187,62180,62181, - 62186,62185,62182,61952,61952,61952,61952, 0,62000,62001,62002,62003,62004,62005,62006,62007, - 62008,62009, 0,62046,62046, 0, 0, 0,61964,61965,61966,61967,62012,62014, 0, 0, - 61954, 0,61981, 0, 0, 0,61955, 0,61982, 0,61956, 0, 0, 0,62111, 0, - 0, 0, 0,61970,61971,61972,61957, 0,61980, 0, 0, 0, 0, 0,61958, 0, - 61983, 0, 0, 0, 0, 0,62191, 0,62188,62189,62192, 0, 0, 0,61973, 0, - 0,62098, 0, 0,61974, 0, 0,62099, 0, 0,62101, 0, 0,61975, 0, 0, - 62100, 0, 0, 0,62080,62081,62082,62102, 0,62083,62084,62085,62103, 0, 0, 0, - 62106, 0,62107, 0,62108, 0, 0, 0,61976, 0, 0, 0, 0,62086,62087,62088, - 62109,61978,62089,62090,62091,62110,62093,62094, 0,62104, 0, 0, 0, 0,62095,62096, - 62097,62105, 0, 0,61977, 0, 0, 0, 0, 0,62075,62077,61968, 0, 0, 0, - 0,62021,62022,62019,62020,62170,62171,62023,62024,62169,62168,62166,62167,62017,62018,62028, - 62027,62025,62026,62161,62162,62032,62031,62029,62030,62036,62035,62033,62034,62040,62039,62037, - 62038,62048,62044,62041,62042,62052,62051,62049,62050,62053,62054,62055,62056,62057,62058,62059, - 62060,62064,62063,62061,62062,62068,62067,62065,62066,62072,62071,62069,62070,62078,62076,62073, - 62074,62114,62113,62079,62193,62118,62117,62115,62116,62122,62121,62119,62120,62126,62125,62123, - 62124,62130,62129,62127,62128,62134,62133,62131,62132,62138,62137,62135,62136,62142,62141,62139, - 62140,62146,62145,62143,62144,62150,62149,62147,62148,62154,62153,62151,62152,62155,62156,62164, - 62163,62160,62159,62157,62158,62176,62177,62174,62175,62178,62179,62172,62173, 0, 0, 0, + 0,61952,61952,61952,61952,61984,61985,61986, 0, 0,61989, 0, 0,61992,61993,61994, + 61995,62046,61997,61998,61999, 0, 0,62010,62011, 0,62013, 0,62015, 0, 0, 0, + 62043, 0,62045, 0, 0, 0, 0, 0,61987, 0, 0, 0,61988, 0, 0, 0, + 61990, 0, 0, 0,61991,61996, 0, 0, 0, 0, 0, 0,62011, 0, 0, 0, + 62015, 0,62165,62021,62019,62170,62023,62169,62017,62028,62161,62032,62036,62040,62048,62052, + 62053,62055,62057,62059,62064,62068,62072,62078,62114,62115,62122,62126,61952,62047,62130,62134, + 62138,62142,62146,62150,62154,62155,62164,62160,62183,62184,62187,62180,62181,62186,62185,62182, + 61952,61952,61952,61952, 0,62000,62001,62002,62003,62004,62005,62006,62007,62008,62009, 0, + 62046,62046, 0, 0, 0,61964,61965,61966,61967,62012,62014, 0, 0,61954, 0,61981, + 0, 0, 0,61955, 0,61982, 0,61956, 0, 0, 0,62111, 0, 0, 0, 0, + 61970,61971,61972,61957, 0,61980, 0, 0, 0, 0, 0,61958, 0,61983, 0, 0, + 0, 0, 0,62191, 0,62188,62189,62192, 0, 0, 0,61973, 0, 0,62098, 0, + 0,61974, 0, 0,62099, 0, 0,62101, 0, 0,61975, 0, 0,62100, 0, 0, + 0,62080,62081,62082,62102, 0,62083,62084,62085,62103, 0, 0, 0,62106, 0,62107, + 0,62108, 0, 0, 0,61976, 0, 0, 0, 0,62086,62087,62088,62109,61978,62089, + 62090,62091,62110,62093,62094, 0,62104, 0, 0, 0, 0,62095,62096,62097,62105, 0, + 0,61977, 0, 0, 0, 0, 0,62075,62077,61968, 0, 0, 0, 0,62021,62022, + 62019,62020,62170,62171,62023,62024,62169,62168,62166,62167,62017,62018,62028,62027,62025,62026, + 62161,62162,62032,62031,62029,62030,62036,62035,62033,62034,62040,62039,62037,62038,62048,62044, + 62041,62042,62052,62051,62049,62050,62053,62054,62055,62056,62057,62058,62059,62060,62064,62063, + 62061,62062,62068,62067,62065,62066,62072,62071,62069,62070,62078,62076,62073,62074,62114,62113, + 62079,62193,62118,62117,62115,62116,62122,62121,62119,62120,62126,62125,62123,62124,62130,62129, + 62127,62128,62134,62133,62131,62132,62138,62137,62135,62136,62142,62141,62139,62140,62146,62145, + 62143,62144,62150,62149,62147,62148,62154,62153,62151,62152,62155,62156,62164,62163,62160,62159, + 62157,62158,62176,62177,62174,62175,62178,62179,62172,62173, 0, 0, 0, }; -static inline unsigned -_hb_arabic_b2 (const uint8_t* a, unsigned i) +static inline uint8_t _hb_arabic_pua_b4 (const uint8_t* a, unsigned i) { - return (a[i>>2]>>((i&3u)<<1))&3u; + return (a[i>>1]>>((i&1)<<2))&15; } -static inline unsigned -_hb_arabic_b4 (const uint8_t* a, unsigned i) +static inline uint16_t _hb_arabic_pua_simp_map (unsigned u) { - return (a[i>>1]>>((i&1u)<<2))&15u; + /* packtab: [2^2,2^4,2^4,2^3] */ + return u<65277u ? (uint16_t)(_hb_arabic_pua_u16[((_hb_arabic_pua_u8[31u+((_hb_arabic_pua_b4(_hb_arabic_pua_u8,((((13835058055282164225ULL>>((((((((u)>>3))>>4))>>4))<<1))&3))<<4)+((((((u)>>3))>>4))&15)))<<4)+((((u)>>3))&15)])<<3)+((u)&7)]) : 0; } -static inline uint_fast16_t -_hb_arabic_pua_simp_map (unsigned u) +static inline uint16_t _hb_arabic_pua_trad_map (unsigned u) { - return u<65277u?_hb_arabic_u16[((_hb_arabic_u8[40+(((_hb_arabic_b4(8+_hb_arabic_u8,((_hb_arabic_b2(_hb_arabic_u8,u>>3>>4>>4))<<4)+((u>>3>>4)&15u)))<<4)+((u>>3)&15u))])<<3)+((u)&7u)]:0; -} -static inline uint_fast16_t -_hb_arabic_pua_trad_map (unsigned u) -{ - return u<65277u?_hb_arabic_u16[320+(((_hb_arabic_u8[208+(((_hb_arabic_b4(168+_hb_arabic_u8,((_hb_arabic_b4(136+_hb_arabic_u8,u>>2>>4>>4))<<4)+((u>>2>>4)&15u)))<<4)+((u>>2)&15u))])<<2)+((u)&3u))]:0; + /* packtab: [2^4,2^4,2^4,2^2] */ + return u<65277u ? (uint16_t)(_hb_arabic_pua_u16[317u+((_hb_arabic_pua_u8[197u+((_hb_arabic_pua_b4(_hb_arabic_pua_u8+159u,((_hb_arabic_pua_b4(_hb_arabic_pua_u8+127u,((((((u)>>2))>>4))>>4)))<<4)+((((((u)>>2))>>4))&15)))<<4)+((((u)>>2))&15)])<<2)+((u)&3)]) : 0; } #endif /* HB_OT_SHAPER_ARABIC_PUA_HH */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic-table.hh index 5f87995ea9c..81c84cf1962 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic-table.hh @@ -16,222 +16,77 @@ #ifndef HB_OT_SHAPER_ARABIC_TABLE_HH #define HB_OT_SHAPER_ARABIC_TABLE_HH +#include "hb.hh" -#define A JOINING_GROUP_ALAPH -#define DR JOINING_GROUP_DALATH_RISH -#define C JOINING_TYPE_C -#define D JOINING_TYPE_D -#define L JOINING_TYPE_L -#define R JOINING_TYPE_R -#define T JOINING_TYPE_T -#define U JOINING_TYPE_U -#define X JOINING_TYPE_X +#include -static const uint8_t joining_table[] = +static const uint8_t _hb_arabic_joining_u8[737]= { + 0, 16, 2, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 96,135, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 16, 24, 32, 40, 48, 0, 56, 0, 64, 72, 80, 0, + 0, 0, 0, 88, 96,104, 0, 0, 0, 0, 0,112,120, 0, 0, 0, + 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 0, + 0,144, 0, 0, 0, 0, 0,152, 0, 0, 0, 0, 0, 0,160,168, + 176,184,192, 0, 0,200,208, 0, 0, 0, 0, 0, 0, 0, 0,216, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 10, 11, 12, + 1, 1, 13, 0, 0, 0, 14, 15, 1, 1, 2, 2, 4, 1, 1, 1, + 1, 16, 17, 18, 3, 0, 19, 0, 20, 0, 21, 22, 23, 1, 24, 0, + 0, 0, 25, 1, 26, 1, 27, 28, 4, 0, 29, 1, 1, 1, 30, 0, + 31, 32, 5, 33, 34, 35, 36, 2, 2, 37, 38, 6, 0, 1, 39, 40, + 5, 1, 7, 0, 0, 41, 0, 0, 0, 42, 43, 0, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 7, 44, 1, 1, 1, 1, 45, 0, + 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 6, 0, + 0, 1, 1, 1, 1, 1, 1, 49, 0, 50, 51, 52, 53, 54, 55, 0, + 0, 56, 57, 58, 0, 0, 59, 0, 0, 60, 1, 1, 1, 61, 0, 0, + 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 1, 64, 0, 65, 0, 0, 0, 66, 1, 67, 0, 0, 0, 0, 0, 68, + 69, 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 72, 73, 0, 0, 0, 0, 0, 0,119,119,119,119, 51, 51, 51, + 51, 34, 34, 34, 34,119,119, 7,119, 34, 51, 51, 51, 35, 51, 51, + 51, 0,119,119,119,115,119,119,119, 0, 0, 0,119,112, 7,119, + 119, 3, 34, 34, 35, 35, 51, 51, 35, 34, 50, 51, 51, 50,115,119, + 119,119,119,119, 51, 39, 34, 32, 34, 50, 35, 34, 34, 34, 34, 35, + 35, 51, 34, 39,119,119,119,119, 34,119, 51,115, 55,119,119,119, + 103,116, 51, 83, 37, 34, 51, 51, 50, 50, 53, 50, 83,119,119, 39, + 51, 35, 34, 51, 51, 51, 35, 50, 51, 35, 35, 50, 51,119, 51, 51, + 51, 51,115,119,119,119,115,119,119, 50, 51, 51, 34, 51, 51, 50, + 34,114,119,119,119, 3, 51, 51, 32, 35,114,119,119, 34, 50, 51, + 3, 48, 51, 51, 50, 51, 34, 2, 50, 35, 50, 51, 51,119,112,119, + 119,119,119,119, 48,119,115,119,112, 0, 0, 96, 54,115,115,119, + 119,119,119, 48,119,119,119,119, 7,119,119,119, 0, 51, 1,119, + 119, 51, 51, 35, 32, 32, 2, 16, 34, 34, 50, 51, 19, 51, 51, 35, + 51, 35, 0,114,119,119, 55, 51, 35, 35, 35, 34, 51, 35, 51, 50, + 34, 35,119,119,119, 39, 34, 50, 3, 49, 51, 51, 51, 51, 50,119, + 119,119, 50,115, 51, 51, 35, 51, 51, 51, 51, 3,119, 55, 51,114, + 119, 51, 51, 34, 51, 51,119,119,119, 3, 51, 34, 2, 35, 50, 35, + 51, 48, 34, 3, 0, 32, 19,119,119, 51, 51,119,119,119,103,119, + 119, +}; -#define joining_offset_0x0600u 0 - - /* Arabic */ - - /* 0600 */ U,U,U,U,U,U,X,X,U,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 0620 */ D,U,R,R,R,R,D,R,D,R,D,D,D,D,D,R,R,R,R,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* 0640 */ C,D,D,D,D,D,D,D,R,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 0660 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,D,D,X,R,R,R,U,R,R,R,D,D,D,D,D,D,D,D, - /* 0680 */ D,D,D,D,D,D,D,D,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,D,D,D,D,D,D, - /* 06A0 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* 06C0 */ R,D,D,R,R,R,R,R,R,R,R,R,D,R,D,R,D,D,R,R,X,R,X,X,X,X,X,X,X,U,X,X, - /* 06E0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,R,R,X,X,X,X,X,X,X,X,X,X,D,D,D,X,X,D, - - /* Syriac */ - - /* 0700 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,T,A,X,D,D,D,DR,DR,R,R,R,D,D,D,D,R,D, - /* 0720 */ D,D,D,D,D,D,D,D,R,D,DR,D,R,D,D,DR,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 0740 */ X,X,X,X,X,X,X,X,X,X,X,X,X,R,D,D, - - /* Arabic Supplement */ - - /* 0740 */ D,D,D,D,D,D,D,D,D,R,R,R,D,D,D,D, - /* 0760 */ D,D,D,D,D,D,D,D,D,D,D,R,R,D,D,D,D,R,D,R,R,D,D,D,R,R,D,D,D,D,D,D, - - /* FILLER */ - - /* 0780 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 07A0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - - /* NKo */ - - /* 07C0 */ X,X,X,X,X,X,X,X,X,X,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* 07E0 */ D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,C,X,X,X,X,X, - - /* FILLER */ - - /* 0800 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 0820 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - - /* Mandaic */ - - /* 0840 */ R,D,D,D,D,D,R,R,D,R,D,D,D,D,D,D,D,D,D,D,R,D,R,R,R,X,X,X,X,X,X,X, - - /* Syriac Supplement */ - - /* 0860 */ D,U,D,D,D,D,U,R,D,R,R,X,X,X,X,X, - - /* Arabic Extended-B */ - - /* 0860 */ R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R, - /* 0880 */ R,R,R,C,C,C,D,U,U,D,D,D,D,D,R,D,U,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - - /* Arabic Extended-A */ - - /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,D,D,D,D,D,D,R,D,D,D,D,D,D, - /* 08C0 */ D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 08E0 */ X,X,U, - -#define joining_offset_0x1806u 739 - - /* Mongolian */ - - /* 1800 */ U,D,X,X,C,X,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 1820 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* 1840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* 1860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X, - /* 1880 */ U,U,U,U,U,T,T,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* 18A0 */ D,D,D,D,D,D,D,D,D,X,D, - -#define joining_offset_0x200cu 904 - - /* General Punctuation */ - - /* 2000 */ U,C,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 2020 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 2040 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 2060 */ X,X,X,X,X,X,U,U,U,U, - -#define joining_offset_0xa840u 998 - - /* Phags-pa */ - - /* A840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* A860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,L,U, - -#define joining_offset_0x10ac0u 1050 - - /* Manichaean */ - - /* 10AC0 */ D,D,D,D,D,R,U,R,U,R,R,U,U,L,R,R,R,R,R,D,D,D,D,L,D,D,D,D,D,R,D,D, - /* 10AE0 */ D,R,U,U,R,X,X,X,X,X,X,D,D,D,D,R, - -#define joining_offset_0x10b80u 1098 - - /* Psalter Pahlavi */ - - /* 10B80 */ D,R,D,R,R,R,D,D,D,R,D,D,R,D,R,R,D,R,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 10BA0 */ X,X,X,X,X,X,X,X,X,R,R,R,R,D,D,U, - -#define joining_offset_0x10d00u 1146 - - /* Hanifi Rohingya */ - - /* 10D00 */ L,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* 10D20 */ D,D,R,D, - -#define joining_offset_0x10ec2u 1182 - - /* Arabic Extended-C */ - - /* 10EC0 */ R,D,D,X,D,D, - -#define joining_offset_0x10f30u 1188 - - /* Sogdian */ - - /* 10F20 */ D,D,D,R,D,D,D,D,D,D,D,D,D,D,D,D, - /* 10F40 */ D,D,D,D,D,U,X,X,X,X,X,X,X,X,X,X,X,D,D,D,R,X,X,X,X,X,X,X,X,X,X,X, - /* 10F60 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - - /* Old Uyghur */ - - /* 10F60 */ D,D,D,D,R,R,D,D,D,D,D,D,D,D,D,D, - /* 10F80 */ D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - /* 10FA0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, - - /* Chorasmian */ - - /* 10FA0 */ D,U,D,D,R,R,R,U,D,R,R,D,D,R,D,D, - /* 10FC0 */ U,D,R,R,D,U,U,U,U,R,D,L, - -#define joining_offset_0x110bdu 1344 - - /* Kaithi */ - - /* 110A0 */ U,X,X, - /* 110C0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,U, - -#define joining_offset_0x1e900u 1361 - - /* Adlam */ - - /* 1E900 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* 1E920 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, - /* 1E940 */ D,D,D,D,X,X,X,X,X,X,X,T, - -}; /* Table items: 1437; occupancy: 58% */ - +static inline uint8_t _hb_arabic_joining_b4 (const uint8_t* a, unsigned i) +{ + return (a[i>>1]>>((i&1)<<2))&15; +} +static inline uint8_t _hb_arabic_joining_joining_type (unsigned u) +{ + /* packtab: [2^4,2^3,2^3,2^3] */ + return u<125260u ? (uint8_t)(_hb_arabic_joining_b4(_hb_arabic_joining_u8+441u,((_hb_arabic_joining_u8[209u+_hb_arabic_joining_u8[123u+((_hb_arabic_joining_b4(_hb_arabic_joining_u8,((((((u)>>3))>>3))>>3)))<<3)+((((((u)>>3))>>3))&7)]+((((u)>>3))&7)])<<3)+((u)&7))) : 7; +} static unsigned int joining_type (hb_codepoint_t u) { - switch (u >> 12) - { - case 0x0u: - if (hb_in_range (u, 0x0600u, 0x08E2u)) return joining_table[u - 0x0600u + joining_offset_0x0600u]; - break; - - case 0x1u: - if (hb_in_range (u, 0x1806u, 0x18AAu)) return joining_table[u - 0x1806u + joining_offset_0x1806u]; - break; - - case 0x2u: - if (hb_in_range (u, 0x200Cu, 0x2069u)) return joining_table[u - 0x200Cu + joining_offset_0x200cu]; - break; - - case 0xAu: - if (hb_in_range (u, 0xA840u, 0xA873u)) return joining_table[u - 0xA840u + joining_offset_0xa840u]; - break; - - case 0x10u: - if (hb_in_range (u, 0x10AC0u, 0x10AEFu)) return joining_table[u - 0x10AC0u + joining_offset_0x10ac0u]; - if (hb_in_range (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u + joining_offset_0x10b80u]; - if (hb_in_range (u, 0x10D00u, 0x10D23u)) return joining_table[u - 0x10D00u + joining_offset_0x10d00u]; - if (hb_in_range (u, 0x10EC2u, 0x10EC7u)) return joining_table[u - 0x10EC2u + joining_offset_0x10ec2u]; - if (hb_in_range (u, 0x10F30u, 0x10FCBu)) return joining_table[u - 0x10F30u + joining_offset_0x10f30u]; - break; - - case 0x11u: - if (hb_in_range (u, 0x110BDu, 0x110CDu)) return joining_table[u - 0x110BDu + joining_offset_0x110bdu]; - break; - - case 0x1Eu: - if (hb_in_range (u, 0x1E900u, 0x1E94Bu)) return joining_table[u - 0x1E900u + joining_offset_0x1e900u]; - break; - - default: - break; - } - return X; + return _hb_arabic_joining_joining_type (u); } -#undef A -#undef DR -#undef C -#undef D -#undef L -#undef R -#undef T -#undef U -#undef X - static const uint16_t shaping_table[][4] = { diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic.cc index 981c0f9224b..611aa262f40 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-arabic.cc @@ -77,8 +77,8 @@ enum hb_arabic_joining_type_t { JOINING_GROUP_DALATH_RISH = 5, NUM_STATE_MACHINE_COLS = 6, - JOINING_TYPE_T = 7, - JOINING_TYPE_X = 8 /* means: use general-category to choose between U or T. */ + JOINING_TYPE_T = 6, + JOINING_TYPE_X = 7 /* means: use general-category to choose between U or T. */ }; #include "hb-ot-shaper-arabic-table.hh" @@ -561,20 +561,29 @@ apply_stch (const hb_ot_shape_plan_t *plan HB_UNUSED, DEBUG_MSG (ARABIC, nullptr, "fixed tiles: count=%d width=%" PRId32, n_fixed, w_fixed); DEBUG_MSG (ARABIC, nullptr, "repeating tiles: count=%d width=%" PRId32, n_repeating, w_repeating); - /* Number of additional times to repeat each repeating tile. */ - int n_copies = 0; + static constexpr unsigned STCH_MAX_GLYPHS = 256; - hb_position_t w_remaining = w_total - w_fixed; - if (sign * w_remaining > sign * w_repeating && sign * w_repeating > 0) - n_copies = (sign * w_remaining) / (sign * w_repeating) - 1; + /* Number of additional times to repeat each repeating tile. */ + unsigned int n_copies = 0; + + int64_t w_remaining_signed = (int64_t) w_total - w_fixed; + int64_t w_repeating_signed = w_repeating; + if (sign < 0) + { + w_remaining_signed = -w_remaining_signed; + w_repeating_signed = -w_repeating_signed; + } + hb_position_t w_remaining = (hb_position_t) (w_total - w_fixed); + if (w_remaining_signed > w_repeating_signed && w_repeating_signed > 0) + n_copies = w_remaining_signed / w_repeating_signed - 1; /* See if we can improve the fit by adding an extra repeat and squeezing them together a bit. */ hb_position_t extra_repeat_overlap = 0; - hb_position_t shortfall = sign * w_remaining - sign * w_repeating * (n_copies + 1); + int64_t shortfall = w_remaining_signed - w_repeating_signed * (n_copies + 1); if (shortfall > 0 && n_repeating > 0) { ++n_copies; - hb_position_t excess = (n_copies + 1) * sign * w_repeating - sign * w_remaining; + int64_t excess = (n_copies + 1) * w_repeating_signed - w_remaining_signed; if (excess > 0) { extra_repeat_overlap = excess / (n_copies * n_repeating); @@ -582,10 +591,25 @@ apply_stch (const hb_ot_shape_plan_t *plan HB_UNUSED, } } + unsigned int max_copies = 0; + if (n_repeating > 0) + { + unsigned int base_glyphs = n_fixed + n_repeating; + if (base_glyphs < STCH_MAX_GLYPHS) + max_copies = (STCH_MAX_GLYPHS - base_glyphs) / n_repeating; + } + n_copies = hb_min (n_copies, max_copies); + if (step == MEASURE) { - extra_glyphs_needed += n_copies * n_repeating; - DEBUG_MSG (ARABIC, nullptr, "will add extra %d copies of repeating tiles", n_copies); + unsigned int added_glyphs = 0; + if (unlikely (hb_unsigned_mul_overflows (n_copies, n_repeating, &added_glyphs) || + hb_unsigned_add_overflows (extra_glyphs_needed, added_glyphs, &extra_glyphs_needed))) + { + extra_glyphs_needed = UINT_MAX; + break; + } + DEBUG_MSG (ARABIC, nullptr, "will add extra %u copies of repeating tiles", n_copies); } else { @@ -629,7 +653,9 @@ apply_stch (const hb_ot_shape_plan_t *plan HB_UNUSED, if (step == MEASURE) { - if (unlikely (!buffer->ensure (count + extra_glyphs_needed))) + unsigned int total_glyphs = 0; + if (unlikely (hb_unsigned_add_overflows (count, extra_glyphs_needed, &total_glyphs) || + !buffer->ensure (total_glyphs))) break; } else diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-hangul.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-hangul.cc index 5f15aff8b7c..1430d142d14 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-hangul.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-hangul.cc @@ -298,7 +298,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan HB_UNUSED, end = start + 2; if (unlikely (!buffer->successful)) break; - buffer->merge_out_clusters (start, end); + buffer->merge_out_grapheme_clusters (start, end); continue; } } @@ -371,7 +371,7 @@ preprocess_text_hangul (const hb_ot_shape_plan_t *plan HB_UNUSED, if (i < end) info[i++].hangul_shaping_feature() = TJMO; - buffer->merge_out_clusters (start, end); + buffer->merge_out_grapheme_clusters (start, end); continue; } else if ((!tindex && buffer->idx + 1 < count && isT (buffer->cur(+1).codepoint))) diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-indic-table.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-indic-table.cc index bf27efee21b..74fe5efa3b7 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-indic-table.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-indic-table.cc @@ -77,9 +77,9 @@ static_assert (OT_VPst == M_Cat(VPst), ""); #define _OT_A OT_A /* 53 chars; A */ #define _OT_As OT_As /* 1 chars; As */ -#define _OT_C OT_C /* 478 chars; C */ +#define _OT_C OT_C /* 476 chars; C */ #define _OT_CM OT_CM /* 1 chars; CM */ -#define _OT_CS OT_CS /* 2 chars; CS */ +#define _OT_CS OT_CS /* 4 chars; CS */ #define _OT_DC OT_DOTTEDCIRCLE /* 1 chars; DOTTEDCIRCLE */ #define _OT_H OT_H /* 11 chars; H */ #define _OT_M OT_M /* 142 chars; M */ @@ -130,392 +130,112 @@ static_assert (OT_VPst == M_Cat(VPst), ""); #define _(S,M) INDIC_COMBINE_CATEGORIES (_OT_##S, _POS_##M) -static const uint16_t indic_table[] = { - - -#define indic_offset_0x0028u 0 - - - /* Basic Latin */ - - /* 0028 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(GB,C), _(X,X), _(X,X), - /* 0030 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 0038 */ _(GB,C), _(GB,C), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - -#define indic_offset_0x00b0u 24 - - - /* Latin-1 Supplement */ - - /* 00B0 */ _(X,X), _(X,X),_(SP,SM),_(SP,SM), _(X,X), _(X,X), _(X,X), _(X,X), - /* 00B8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 00C0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 00C8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 00D0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(GB,C), - -#define indic_offset_0x0900u 64 - - - /* Devanagari */ - - /* 0900 */_(SM,SM),_(SM,SM),_(SM,SM),_(SM,SM), _(V,C), _(V,C), _(V,C), _(V,C), - /* 0908 */ _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), - /* 0910 */ _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(C,C), _(C,C), _(C,C), - /* 0918 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0920 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0928 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0930 */ _(R,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0938 */ _(C,C), _(C,C), _(M,AS), _(M,AS), _(N,X), _(S,SM), _(M,AS), _(M,LM), - /* 0940 */ _(M,AS), _(M,AS), _(M,AS), _(M,AS), _(M,AS), _(M,AS), _(M,AS), _(M,AS), - /* 0948 */ _(M,AS), _(M,AS), _(M,AS), _(M,AS), _(M,AS), _(H,B), _(M,LM), _(M,AS), - /* 0950 */ _(X,X), _(A,SM), _(A,SM),_(SM,SM),_(SM,SM), _(M,AS), _(M,AS), _(M,AS), - /* 0958 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0960 */ _(V,C), _(V,C), _(M,AS), _(M,AS), _(X,X), _(X,X), _(GB,C), _(GB,C), - /* 0968 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 0970 */ _(X,X), _(X,X), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), - /* 0978 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - - /* Bengali */ - - /* 0980 */ _(GB,C),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(V,C), _(V,C), _(V,C), - /* 0988 */ _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(X,X), _(X,X), _(V,C), - /* 0990 */ _(V,C), _(X,X), _(X,X), _(V,C), _(V,C), _(C,C), _(C,C), _(C,C), - /* 0998 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 09A0 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 09A8 */ _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 09B0 */ _(R,C), _(X,X), _(C,C), _(X,X), _(X,X), _(X,X), _(C,C), _(C,C), - /* 09B8 */ _(C,C), _(C,C), _(X,X), _(X,X), _(N,X), _(S,SM), _(M,AP), _(M,LM), - /* 09C0 */ _(M,AP), _(M,AS), _(M,AS), _(M,AS), _(M,AS), _(X,X), _(X,X), _(M,LM), - /* 09C8 */ _(M,LM), _(X,X), _(X,X), _(M,AP), _(M,AP), _(H,B), _(C,C), _(X,X), - /* 09D0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(M,AP), - /* 09D8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(C,C), _(C,C), _(X,X), _(C,C), - /* 09E0 */ _(V,C), _(V,C), _(M,AS), _(M,AS), _(X,X), _(X,X), _(GB,C), _(GB,C), - /* 09E8 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 09F0 */ _(R,C), _(C,C), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 09F8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(GB,C), _(X,X),_(SM,SM), _(X,X), - - /* Gurmukhi */ - - /* 0A00 */ _(X,X),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(V,C), _(V,C), _(V,C), - /* 0A08 */ _(V,C), _(V,C), _(V,C), _(X,X), _(X,X), _(X,X), _(X,X), _(V,C), - /* 0A10 */ _(V,C), _(X,X), _(X,X), _(V,C), _(V,C), _(C,C), _(C,C), _(C,C), - /* 0A18 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0A20 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0A28 */ _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0A30 */ _(R,C), _(X,X), _(C,C), _(C,C), _(X,X), _(C,C), _(C,C), _(X,X), - /* 0A38 */ _(C,C), _(C,C), _(X,X), _(X,X), _(N,X), _(X,X), _(M,AP), _(M,LM), - /* 0A40 */_(MP,AP), _(M,AP), _(M,AP), _(X,X), _(X,X), _(X,X), _(X,X), _(M,AP), - /* 0A48 */ _(M,AP), _(X,X), _(X,X), _(M,AP), _(M,AP), _(H,B), _(X,X), _(X,X), - /* 0A50 */ _(X,X), _(M,B), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 0A58 */ _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(X,X), _(C,C), _(X,X), - /* 0A60 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(GB,C), _(GB,C), - /* 0A68 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 0A70 */_(SM,SM),_(SM,SM), _(C,C), _(C,C), _(X,X), _(CM,C), _(X,X), _(X,X), - /* 0A78 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - - /* Gujarati */ - - /* 0A80 */ _(X,X),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(V,C), _(V,C), _(V,C), - /* 0A88 */ _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(X,X), _(V,C), - /* 0A90 */ _(V,C), _(V,C), _(X,X), _(V,C), _(V,C), _(C,C), _(C,C), _(C,C), - /* 0A98 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0AA0 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0AA8 */ _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0AB0 */ _(R,C), _(X,X), _(C,C), _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), - /* 0AB8 */ _(C,C), _(C,C), _(X,X), _(X,X), _(N,X), _(S,SM), _(M,AP), _(M,LM), - /* 0AC0 */ _(M,AP), _(M,AP), _(M,AP), _(M,AP), _(M,AP), _(M,AS), _(X,X), _(M,AS), - /* 0AC8 */ _(M,AS), _(M,AP), _(X,X), _(M,AP), _(M,AP), _(H,B), _(X,X), _(X,X), - /* 0AD0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 0AD8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 0AE0 */ _(V,C), _(V,C), _(M,AP), _(M,AP), _(X,X), _(X,X), _(GB,C), _(GB,C), - /* 0AE8 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 0AF0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 0AF8 */ _(X,X), _(C,C), _(A,SM), _(N,X), _(A,SM), _(N,X), _(N,X), _(N,X), - - /* Oriya */ - - /* 0B00 */ _(X,X),_(SM,BS),_(SM,SM),_(SM,SM), _(X,X), _(V,C), _(V,C), _(V,C), - /* 0B08 */ _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(X,X), _(X,X), _(V,C), - /* 0B10 */ _(V,C), _(X,X), _(X,X), _(V,C), _(V,C), _(C,C), _(C,C), _(C,C), - /* 0B18 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0B20 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0B28 */ _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0B30 */ _(R,C), _(X,X), _(C,C), _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), - /* 0B38 */ _(C,C), _(C,C), _(X,X), _(X,X), _(N,X), _(S,SM), _(M,AP), _(M,A), - /* 0B40 */ _(M,AP), _(M,AS), _(M,AS), _(M,AS), _(M,AS), _(X,X), _(X,X), _(M,LM), - /* 0B48 */ _(M,A), _(X,X), _(X,X), _(M,AP), _(M,AP), _(H,B), _(X,X), _(X,X), - /* 0B50 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(N,X), _(M,A), _(M,AP), - /* 0B58 */ _(X,X), _(X,X), _(X,X), _(X,X), _(C,C), _(C,C), _(X,X), _(C,C), - /* 0B60 */ _(V,C), _(V,C), _(M,AS), _(M,AS), _(X,X), _(X,X), _(GB,C), _(GB,C), - /* 0B68 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 0B70 */ _(X,X), _(C,C), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 0B78 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - - /* Tamil */ - - /* 0B80 */ _(X,X), _(X,X),_(SM,SM), _(X,X), _(X,X), _(V,C), _(V,C), _(V,C), - /* 0B88 */ _(V,C), _(V,C), _(V,C), _(X,X), _(X,X), _(X,X), _(V,C), _(V,C), - /* 0B90 */ _(V,C), _(X,X), _(V,C), _(V,C), _(V,C), _(C,C), _(X,X), _(X,X), - /* 0B98 */ _(X,X), _(C,C), _(C,C), _(X,X), _(C,C), _(X,X), _(C,C), _(C,C), - /* 0BA0 */ _(X,X), _(X,X), _(X,X), _(C,C), _(C,C), _(X,X), _(X,X), _(X,X), - /* 0BA8 */ _(C,C), _(C,C), _(C,C), _(X,X), _(X,X), _(X,X), _(C,C), _(C,C), - /* 0BB0 */ _(R,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0BB8 */ _(C,C), _(C,C), _(X,X), _(X,X), _(X,X), _(X,X), _(M,AP), _(M,AP), - /* 0BC0 */ _(M,AS), _(M,AP), _(M,AP), _(X,X), _(X,X), _(X,X), _(M,LM), _(M,LM), - /* 0BC8 */ _(M,LM), _(X,X), _(M,AP), _(M,AP), _(M,AP), _(H,T), _(X,X), _(X,X), - /* 0BD0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(M,AP), - /* 0BD8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 0BE0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(GB,C), _(GB,C), - /* 0BE8 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 0BF0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 0BF8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - - /* Telugu */ - - /* 0C00 */_(SM,SM),_(SM,SM),_(SM,SM),_(SM,SM),_(SM,SM), _(V,C), _(V,C), _(V,C), - /* 0C08 */ _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(X,X), _(V,C), _(V,C), - /* 0C10 */ _(V,C), _(X,X), _(V,C), _(V,C), _(V,C), _(C,C), _(C,C), _(C,C), - /* 0C18 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0C20 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0C28 */ _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0C30 */ _(R,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0C38 */ _(C,C), _(C,C), _(X,X), _(X,X), _(N,X), _(S,SM), _(M,BS), _(M,BS), - /* 0C40 */ _(M,BS), _(M,BS), _(M,BS), _(M,AS), _(M,AS), _(X,X), _(M,BS), _(M,BS), - /* 0C48 */ _(M,BS), _(X,X), _(M,BS), _(M,BS), _(M,BS), _(H,T), _(X,X), _(X,X), - /* 0C50 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(M,BS), _(M,BS), _(X,X), - /* 0C58 */ _(C,C), _(C,C), _(C,C), _(X,X), _(X,X), _(C,C), _(X,X), _(X,X), - /* 0C60 */ _(V,C), _(V,C), _(M,BS), _(M,BS), _(X,X), _(X,X), _(GB,C), _(GB,C), - /* 0C68 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 0C70 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 0C78 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - - /* Kannada */ - - /* 0C80 */ _(GB,C),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(V,C), _(V,C), _(V,C), - /* 0C88 */ _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(X,X), _(V,C), _(V,C), - /* 0C90 */ _(V,C), _(X,X), _(V,C), _(V,C), _(V,C), _(C,C), _(C,C), _(C,C), - /* 0C98 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0CA0 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0CA8 */ _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0CB0 */ _(R,C), _(C,C), _(C,C), _(C,C), _(X,X), _(C,C), _(C,C), _(C,C), - /* 0CB8 */ _(C,C), _(C,C), _(X,X), _(X,X), _(N,X), _(S,SM), _(M,BS), _(M,BS), - /* 0CC0 */ _(M,BS), _(M,BS), _(M,BS), _(M,AS), _(M,AS), _(X,X), _(M,BS), _(M,AS), - /* 0CC8 */ _(M,AS), _(X,X), _(M,AS), _(M,AS), _(M,BS), _(H,T), _(X,X), _(X,X), - /* 0CD0 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(M,AS), _(M,AS), _(X,X), - /* 0CD8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(C,C), _(C,C), _(X,X), - /* 0CE0 */ _(V,C), _(V,C), _(M,BS), _(M,BS), _(X,X), _(X,X), _(GB,C), _(GB,C), - /* 0CE8 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 0CF0 */ _(X,X), _(CS,C), _(CS,C),_(SM,SM), _(X,X), _(X,X), _(X,X), _(X,X), - /* 0CF8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - - /* Malayalam */ - - /* 0D00 */_(SM,SM),_(SM,SM),_(SM,SM),_(SM,SM), _(GB,C), _(V,C), _(V,C), _(V,C), - /* 0D08 */ _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(X,X), _(V,C), _(V,C), - /* 0D10 */ _(V,C), _(X,X), _(V,C), _(V,C), _(V,C), _(C,C), _(C,C), _(C,C), - /* 0D18 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0D20 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0D28 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0D30 */ _(R,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 0D38 */ _(C,C), _(C,C), _(C,C), _(M,AS), _(M,AS), _(S,SM), _(M,AP), _(M,AP), - /* 0D40 */ _(M,AP), _(M,AP), _(M,AP), _(M,AP), _(M,AP), _(X,X), _(M,LM), _(M,LM), - /* 0D48 */ _(M,LM), _(X,X), _(M,AP), _(M,AP), _(M,AP), _(H,T), _(Rf,X), _(X,X), - /* 0D50 */ _(X,X), _(X,X), _(X,X), _(X,X), _(C,C), _(C,C), _(C,C), _(M,AP), - /* 0D58 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(V,C), - /* 0D60 */ _(V,C), _(V,C), _(M,AP), _(M,AP), _(X,X), _(X,X), _(GB,C), _(GB,C), - /* 0D68 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 0D70 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 0D78 */ _(X,X), _(X,X), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - -#define indic_offset_0x1000u 1216 - - - /* Myanmar */ - - /* 1000 */ _(C,C), _(C,C), _(C,C), _(C,C), _(R,C), _(C,C), _(C,C), _(C,C), - /* 1008 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 1010 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 1018 */ _(C,C), _(C,C), _(C,C), _(R,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 1020 */ _(C,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), - /* 1028 */ _(V,C), _(V,C), _(V,C), _(VR,R), _(VR,R), _(VA,T), _(VA,T), _(VB,B), - /* 1030 */ _(VB,B), _(VL,L), _(A,SM), _(VA,T), _(VA,T), _(VA,T), _(A,SM), _(N,X), - /* 1038 */_(SM,SM), _(H,X), _(As,X), _(MY,X), _(MR,X), _(MW,X), _(MH,X), _(C,C), - /* 1040 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 1048 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(X,X), _(X,X), _(C,C), _(X,X), - /* 1050 */ _(C,C), _(C,C), _(V,C), _(V,C), _(V,C), _(V,C), _(VR,R), _(VR,R), - /* 1058 */ _(VB,B), _(VB,B), _(R,C), _(C,C), _(C,C), _(C,C), _(MY,X), _(MY,X), - /* 1060 */ _(ML,X), _(C,C), _(VR,R), _(PT,X), _(PT,X), _(C,C), _(C,C), _(VR,R), - /* 1068 */ _(VR,R), _(PT,X), _(PT,X), _(PT,X), _(PT,X), _(PT,X), _(C,C), _(C,C), - /* 1070 */ _(C,C), _(VA,T), _(VA,T), _(VA,T), _(VA,T), _(C,C), _(C,C), _(C,C), - /* 1078 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 1080 */ _(C,C), _(C,C), _(MW,X), _(VR,R), _(VL,L), _(VA,T), _(VA,T),_(SM,SM), - /* 1088 */_(SM,SM),_(SM,SM),_(SM,SM),_(SM,SM),_(SM,SM),_(SM,SM), _(C,C),_(SM,SM), - /* 1090 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 1098 */ _(GB,C), _(GB,C),_(SM,SM),_(SM,SM),_(SM,SM), _(VA,T), _(X,X), _(X,X), - -#define indic_offset_0x1780u 1376 - - - /* Khmer */ - - /* 1780 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 1788 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 1790 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 1798 */ _(C,C), _(C,C), _(R,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* 17A0 */ _(C,C), _(C,C), _(C,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), - /* 17A8 */ _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), _(V,C), - /* 17B0 */ _(V,C), _(V,C), _(V,C), _(V,C), _(X,X), _(X,X), _(VR,R), _(VA,T), - /* 17B8 */ _(VA,T), _(VA,T), _(VA,T), _(VB,B), _(VB,B), _(VB,B), _(VA,T), _(VR,R), - /* 17C0 */ _(VR,R), _(VL,L), _(VL,L), _(VL,L), _(VR,R), _(VR,R), _(Xg,X), _(Yg,X), - /* 17C8 */ _(Yg,X), _(Rt,X), _(Rt,X), _(Xg,X), _(Rt,X), _(Xg,X), _(Xg,X), _(Xg,X), - /* 17D0 */ _(Xg,X), _(Xg,X), _(H,X), _(Yg,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 17D8 */ _(X,X), _(GB,C), _(X,X), _(X,X), _(S,SM), _(Yg,X), _(X,X), _(X,X), - /* 17E0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 17E8 */ _(GB,C), _(GB,C), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - -#define indic_offset_0x1cd0u 1488 - - - /* Vedic Extensions */ - - /* 1CD0 */ _(A,SM), _(A,SM), _(A,SM), _(X,X), _(A,SM), _(A,SM), _(A,SM), _(A,SM), - /* 1CD8 */ _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), - /* 1CE0 */ _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), - /* 1CE8 */ _(A,SM), _(S,SM), _(S,SM), _(S,SM), _(S,SM), _(A,SM), _(S,SM), _(S,SM), - /* 1CF0 */ _(S,SM), _(S,SM), _(C,C), _(C,C), _(A,SM), _(C,C), _(C,C), _(A,SM), - /* 1CF8 */ _(A,SM), _(A,SM), _(GB,C), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - -#define indic_offset_0x2008u 1536 - - - /* General Punctuation */ - - /* 2008 */ _(X,X), _(X,X), _(X,X), _(X,X),_(ZWNJ,X),_(ZWJ,X), _(X,X), _(X,X), - /* 2010 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(X,X), _(X,X), - /* 2018 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 2020 */ _(X,X), _(X,X), _(GB,C), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - -#define indic_offset_0x2070u 1568 - - - /* Superscripts and Subscripts */ - - /* 2070 */ _(X,X), _(X,X), _(X,X), _(X,X),_(SP,SM), _(X,X), _(X,X), _(X,X), - /* 2078 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), - /* 2080 */ _(X,X), _(X,X),_(SP,SM),_(SP,SM),_(SP,SM), _(X,X), _(X,X), _(X,X), - -#define indic_offset_0x25f8u 1592 - - - /* Geometric Shapes */ - - /* 25F8 */ _(X,X), _(X,X), _(X,X), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(X,X), - -#define indic_offset_0xa8e0u 1600 - - - /* Devanagari Extended */ - - /* A8E0 */ _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), - /* A8E8 */ _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), _(A,SM), - /* A8F0 */ _(A,SM), _(A,SM), _(S,SM), _(S,SM), _(S,SM), _(S,SM), _(S,SM), _(S,SM), - /* A8F8 */ _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(X,X), _(V,C), _(M,AS), - -#define indic_offset_0xa9e0u 1632 - - - /* Myanmar Extended-B */ - - /* A9E0 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(VA,T), _(X,X), _(C,C), - /* A9E8 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* A9F0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* A9F8 */ _(GB,C), _(GB,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(X,X), - -#define indic_offset_0xaa60u 1664 - - - /* Myanmar Extended-A */ - - /* AA60 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* AA68 */ _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), _(C,C), - /* AA70 */ _(X,X), _(C,C), _(C,C), _(C,C), _(GB,C), _(GB,C), _(GB,C), _(X,X), - /* AA78 */ _(X,X), _(X,X), _(C,C), _(PT,X), _(N,X), _(N,X), _(C,C), _(C,C), - -#define indic_offset_0xfe00u 1696 - - - /* Variation Selectors */ - - /* FE00 */ _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), - /* FE08 */ _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), _(VS,X), - -#define indic_offset_0x11300u 1712 - - - /* Grantha */ - - /* 11300 */ _(X,X),_(SM,SM),_(SM,SM),_(SM,SM), _(X,X), _(X,X), _(X,X), _(X,X), - -#define indic_offset_0x11338u 1720 - - /* 11338 */ _(X,X), _(X,X), _(X,X), _(N,X), _(N,X), _(X,X), _(X,X), _(X,X), - -#define indic_offset_0x116d0u 1728 - - - /* Myanmar Extended-C */ - - /* 116D0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 116D8 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), - /* 116E0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(X,X), _(X,X), _(X,X), _(X,X), - -}; /* Table items: 1752; occupancy: 71% */ +#include + +static const uint16_t _hb_indic_values[42]= +{ + _(A,SM), _(As,X), _(C,C), _(CM,C), _(CS,C), _(DC,C), _(GB,C), _(H,B), + _(H,T), _(H,X), _(M,A), _(M,AP), _(M,AS), _(M,B), _(M,BS), _(M,LM), + _(MH,X), _(ML,X), _(MP,AP), _(MR,X), _(MW,X), _(MY,X), _(N,X), _(PT,X), + _(R,C), _(Rf,X), _(Rt,X), _(S,SM), _(SM,BS), _(SM,SM), _(SP,SM), _(V,C), + _(VA,T), _(VB,B), _(VL,L), _(VR,R), _(VS,X), _(X,X), _(Xg,X), _(Yg,X), + _(ZWJ,X),_(ZWNJ,X), +}; +static const uint8_t _hb_indic_u8[1220]= +{ + 1, 0, 50, 4, 5, 96, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,186, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, + 0, 0, 0, 0,208,224, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 22, 23, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 26, 0, 0, + 0, 27, 0, 0, 0, 0, 28, 29, 30, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 33, 0, 34, + 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 2, 10, 0, 0, 0, 0, 26, 0, + 27, 0, 0, 0, 28, 0, 0, 0, 0, 0, 29, 11, 30, 1, 1, 1, + 4, 31, 32, 33, 34, 1, 6, 2, 35, 1, 12, 13, 7, 1, 1, 3, + 36, 14, 15, 37, 16, 17, 6, 2, 38, 39, 18, 40, 7, 1, 1, 3, + 41, 42, 43, 44, 45, 46, 19, 2, 47, 0, 18, 48, 49, 1, 1, 3, + 20, 14, 50, 51, 0, 0, 21, 2, 0, 52, 53, 13, 7, 1, 1, 3, + 20, 54, 15, 55, 56, 17, 6, 2, 57, 0, 58, 59, 60, 61, 62, 63, + 4, 64, 65, 66, 16, 0, 19, 2, 0, 0, 67, 8, 9, 1, 1, 3, + 4, 22, 68, 69, 70, 71, 23, 2, 0, 0, 12, 8, 9, 1, 1, 3, + 72, 22, 73, 74, 75, 76, 23, 2, 77, 0, 78, 8, 9, 1, 1, 1, + 4, 79, 80, 81, 82, 83, 21, 2, 0, 84, 85, 1, 1, 86, 87, 88, + 89, 90, 2, 91, 92, 93, 94, 95, 96, 1, 97, 98, 2, 99, 0, 0, + 0, 0, 1, 1, 1,100,101, 11,102,103,104,105,106,107, 2, 10, + 0, 0, 0, 0,108, 5, 5,109,110,111, 0,112,113, 0,114, 0, + 0, 0, 0, 0, 0, 0, 0, 0,115, 0,116, 0, 0, 0, 0, 0, + 0, 0, 0,117, 0, 0, 0, 0, 0,118, 0, 0, 0, 0, 5, 5, + 119,120, 0, 0, 0, 0,121, 1, 2,122, 0, 0, 0, 0, 1, 1, + 123,124, 24, 24, 0, 0, 0, 0, 0, 0,125, 0, 0, 0, 0, 0, + 0,126, 0, 0, 2, 2, 2, 10, 0, 0, 0, 0, 2, 2, 2, 2, + 4, 4, 4, 4, 10, 2, 2, 2, 26, 2, 2, 2, 8, 8, 8, 8, + 6, 18, 0, 4, 20, 14, 24, 2, 6, 6, 20, 6, 20, 6, 24, 2, + 4, 0, 0, 0, 6, 6, 6, 6, 66, 12, 14, 6, 6, 6, 20, 14, + 2, 0, 36, 50, 52, 18, 38, 68, 0, 0, 0, 32, 0, 0, 2, 16, + 56, 12, 14, 6, 0, 0, 0, 4, 44, 2, 16, 2, 6, 22, 0, 4, + 2, 0, 36, 28, 6, 28, 0, 4, 30, 30, 30, 30, 0, 0, 42, 0, + 34, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 42, 12, 12, 6, 6, + 6, 6, 24, 2, 2, 18, 36,112, 18, 18, 18, 18, 18, 18,114,116, + 118,120,122, 18, 0, 6, 6, 6, 44, 10, 0, 2, 54, 32, 46, 10, + 26, 0, 0, 0, 0, 0, 34, 70, 6, 20, 0, 14, 44, 2, 16, 10, + 2, 0, 72, 50,124, 48, 0, 32, 48, 32, 46, 0,126, 0, 0, 0, + 16, 2, 10, 10, 12, 2,128, 0, 6, 6, 6, 14, 6, 14, 24, 2, + 22, 22, 52, 74, 76, 32, 46, 0, 16, 58, 58, 78,130, 12, 14, 6, + 2, 0, 36,132,134, 32, 46, 0, 0, 0, 80,136, 16, 0, 0, 0, + 0, 70, 14, 6, 6, 20, 0, 6, 20, 6, 24, 0, 16, 10, 10, 2, + 0, 16, 10, 0, 2, 10, 0, 2, 2, 0, 0, 22, 76, 48, 0, 82, + 54, 22, 84, 0, 12, 12,138, 6, 28, 60, 38, 28, 86, 28, 88, 0, + 0, 0,140, 86, 2, 10, 16, 0, 26, 2, 16, 2, 28, 60, 38, 60, + 38, 18, 88, 0, 0, 0, 74, 38, 0, 0, 16, 10,142,144, 0, 0, + 12, 12,146, 6, 2,148,150, 22, 22, 22, 48, 82, 54, 22, 84,152, + 0, 0, 2,154, 0, 0, 0, 14, 0, 2, 2, 2, 2, 2, 26, 2, + 2,156, 2, 2, 90, 6, 6, 6, 6,158, 92, 94,160,162, 62, 58, + 164,166,168,170, 4, 4, 0, 10, 2, 6, 6, 96, 98, 26, 2,172, + 174,100,176,178,100,102,102, 2,104, 62,180, 2, 2,182,184,186, + 12, 12, 12,188, 4, 12,190, 0, 2, 26, 2, 2, 2, 90, 6, 6, + 6, 6, 0, 92, 62, 94, 98,192,194,196, 96,198,200,106,106,108, + 108,202, 0, 0, 42, 0,204, 0, 8,206, 8, 8,208, 40,210, 40, + 40, 2,212,214, 8, 34, 0, 0, 0, 0,216, 0, 4, 4, 4, 0, + 0, 34, 0, 0, 0, 0,110, 0, 0, 64,110, 0, 0, 0,218, 0, + 0, 42, 4, 34, 8, 40, 40, 40, 0, 0, 0,220, 2, 2,104, 16, + 4, 2, 2, 10, 16, 2, 4, 34, 0,222, 78, 2, 56, 12, 0, 0, + 0, 80, 72, 0, 37, 37, 2, 2, 6, 6, 31, 31, 0, 0, 2, 37, + 29, 29, 37, 31, 37, 2, 12, 12, 31, 37, 11, 11, 31, 2, 24, 2, + 14, 14, 36, 36, 37, 11, 6, 37, 22, 27, 12, 37, 27, 27, 37, 6, + 24, 37, 11, 7, 11, 37, 11, 15, 11, 12, 15, 37, 37, 29, 0, 22, + 14, 12, 32, 32, 30, 30, 6, 29, 37, 15, 29, 37, 22, 37, 37, 12, + 12, 11, 22, 22, 37, 22, 15, 15, 11, 8, 14, 37, 14, 8, 2, 31, + 35, 32, 32, 33, 35, 35, 33, 33, 35, 23, 23, 23, 2, 32, 26, 38, + 38, 38, 30, 37, 12, 15, 12, 7, 15, 12, 37, 0, 0, 29, 29, 12, + 18, 11, 37, 13, 37, 3, 37, 28, 11, 10, 10, 37, 10, 11, 29, 31, + 37, 14, 37, 4, 4, 29, 6, 31, 2, 12, 12, 27, 25, 37, 2, 11, + 2, 24, 31, 35, 33, 34, 0, 32, 29, 9, 1, 21, 19, 20, 16, 2, + 21, 21, 17, 2, 23, 2, 2, 35, 32, 2, 20, 35, 34, 32, 32, 29, + 2, 29, 29, 32, 32, 35, 35, 34, 34, 34, 38, 39, 39, 26, 9, 39, + 27, 39, 0, 37, 0, 27, 27, 0, 0, 4, 4, 0, 41, 40, 5, 37, + 31, 12, 2, 23, +}; + +static inline uint8_t _hb_indic_b4 (const uint8_t* a, unsigned i) +{ + return (a[i>>1]>>((i&1)<<2))&15; +} +static inline uint8_t _hb_indic_get_categories_index (unsigned u) +{ + /* packtab: [2^4,2^3,2^3,2^2,2^1] */ + return u<71396u ? (uint8_t)(_hb_indic_u8[996u+_hb_indic_u8[488u+((_hb_indic_u8[186u+((_hb_indic_u8[70u+((_hb_indic_b4(_hb_indic_u8,((((((((u)>>1))>>2))>>3))>>3)))<<3)+((((((((u)>>1))>>2))>>3))&7)])<<3)+((((((u)>>1))>>2))&7)])<<2)+((((u)>>1))&3)]+((u)&1)]) : 37; +} uint16_t hb_indic_get_categories (hb_codepoint_t u) { - switch (u >> 12) - { - case 0x0u: - if (unlikely (u == 0x00A0u)) return _(GB,C); - if (hb_in_range (u, 0x0028u, 0x003Fu)) return indic_table[u - 0x0028u + indic_offset_0x0028u]; - if (hb_in_range (u, 0x00B0u, 0x00D7u)) return indic_table[u - 0x00B0u + indic_offset_0x00b0u]; - if (hb_in_range (u, 0x0900u, 0x0D7Fu)) return indic_table[u - 0x0900u + indic_offset_0x0900u]; - break; - - case 0x1u: - if (hb_in_range (u, 0x1000u, 0x109Fu)) return indic_table[u - 0x1000u + indic_offset_0x1000u]; - if (hb_in_range (u, 0x1780u, 0x17EFu)) return indic_table[u - 0x1780u + indic_offset_0x1780u]; - if (hb_in_range (u, 0x1CD0u, 0x1CFFu)) return indic_table[u - 0x1CD0u + indic_offset_0x1cd0u]; - break; - - case 0x2u: - if (unlikely (u == 0x25CCu)) return _(DC,C); - if (hb_in_range (u, 0x2008u, 0x2027u)) return indic_table[u - 0x2008u + indic_offset_0x2008u]; - if (hb_in_range (u, 0x2070u, 0x2087u)) return indic_table[u - 0x2070u + indic_offset_0x2070u]; - if (hb_in_range (u, 0x25F8u, 0x25FFu)) return indic_table[u - 0x25F8u + indic_offset_0x25f8u]; - break; - - case 0xAu: - if (hb_in_range (u, 0xA8E0u, 0xA8FFu)) return indic_table[u - 0xA8E0u + indic_offset_0xa8e0u]; - if (hb_in_range (u, 0xA9E0u, 0xA9FFu)) return indic_table[u - 0xA9E0u + indic_offset_0xa9e0u]; - if (hb_in_range (u, 0xAA60u, 0xAA7Fu)) return indic_table[u - 0xAA60u + indic_offset_0xaa60u]; - break; - - case 0xFu: - if (hb_in_range (u, 0xFE00u, 0xFE0Fu)) return indic_table[u - 0xFE00u + indic_offset_0xfe00u]; - break; - - case 0x11u: - if (hb_in_range (u, 0x11300u, 0x11307u)) return indic_table[u - 0x11300u + indic_offset_0x11300u]; - if (hb_in_range (u, 0x11338u, 0x1133Fu)) return indic_table[u - 0x11338u + indic_offset_0x11338u]; - if (hb_in_range (u, 0x116D0u, 0x116E7u)) return indic_table[u - 0x116D0u + indic_offset_0x116d0u]; - break; - - default: - break; - } - return _(X,X); + return _hb_indic_values[_hb_indic_get_categories_index (u)]; } #undef _ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-thai.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-thai.cc index 42fc4bbcc44..92fc20e968d 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-thai.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-thai.cc @@ -356,13 +356,11 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan, sizeof (buffer->out_info[0]) * (end - start - 2)); buffer->out_info[start] = t; } - else - { - /* Since we decomposed, and NIKHAHIT is combining, merge clusters with the - * previous cluster. */ - if (start) - buffer->merge_out_clusters (start - 1, end); - } + + /* Since we decomposed, and NIKHAHIT is combining, merge clusters with the + * previous cluster. */ + if (start) + buffer->merge_out_grapheme_clusters (start - 1, end); } buffer->sync (); diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-use-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-use-table.hh index a69abefdd01..0b038ba2201 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-use-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-use-table.hh @@ -2,7 +2,7 @@ /* * The following table is generated by running: * - * ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt ArabicShaping.txt DerivedCoreProperties.txt UnicodeData.txt Blocks.txt Scripts.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt + * gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt ArabicShaping.txt DerivedCoreProperties.txt UnicodeData.txt Blocks.txt Scripts.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt * * on files with these headers: * @@ -105,272 +105,272 @@ static const uint8_t hb_use_u8[3343]= { - 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 57, 58, 59, 195, 211, 62, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 15, 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 4, 2, 2, - 5, 6, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2, 2, 17, - 18, 19, 20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 2, 33, 2, 2, 2, - 2, 34, 35, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 2, 2, 2, - 37, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 38, 2, 39, 2, 2, + 33, 3, 0, 0, 0, 4, 0, 80, 118, 128, 9, 10, 11, 192, 208, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 5, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 7, 0, 0, + 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, + 21, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0, 36, 0, 0, 0, + 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 44, 45, 46, 47, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 0, + 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 54, 0, 0, 0, + 0, 0, 0, 0, 0, 55, 56, 0, 57, 0, 0, 58, 59, 0, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 0, 73, 74, 75, 76, + 0, 77, 0, 78, 79, 80, 81, 82, 0, 83, 84, 85, 86, 0, 87, 88, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 89, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 93, 0, 0, 0, 94, 0, 0, 0, 95, + 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 97, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, + 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 101, 0, 0, 102, 0, 0, 0, 103, 0, 104, 0, 0, 0, + 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 106, 107, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 40, 41, 42, 43, 44, 45, 2, 46, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 47, 48, 2, - 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, 51, 2, 2, 2, - 2, 2, 2, 2, 2, 52, 53, 2, 54, 2, 2, 55, 56, 2, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 2, 70, 71, 72, 73, - 2, 74, 2, 75, 76, 77, 78, 79, 2, 80, 81, 82, 83, 2, 84, 85, - 2, 86, 86, 86, 86, 86, 86, 86, 86, 87, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 88, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 89, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 90, 91, 2, 2, 2, 92, 2, 2, 2, 93, - 94, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 95, 95, 95, 96, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 97, 98, 2, 2, 2, 2, 2, - 2, 2, 2, 99, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 100, 2, 2, 101, 2, 2, 2, 102, 2, 103, 2, 2, 2, - 2, 2, 2, 104, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 105, 105, 106, 107, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, - 0, 5, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 11, - 11, 11, 11, 0, 0, 0, 9, 12, 0, 2, 2, 2, 2, 13, 14, 0, - 0, 11, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 17, - 18, 19, 20, 21, 22, 16, 23, 24, 25, 12, 26, 27, 20, 2, 2, 2, - 2, 2, 20, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, - 2, 28, 29, 30, 2, 2, 2, 9, 30, 9, 30, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 9, 2, 2, 2, 9, 9, 0, 2, 2, 0, 17, - 18, 19, 20, 31, 32, 33, 32, 34, 0, 0, 0, 0, 35, 0, 0, 2, - 30, 2, 0, 0, 0, 0, 0, 9, 36, 12, 15, 30, 2, 2, 9, 0, - 30, 9, 2, 30, 9, 2, 0, 37, 18, 19, 31, 0, 27, 38, 27, 39, - 0, 40, 0, 0, 0, 30, 2, 9, 9, 0, 0, 0, 2, 2, 2, 2, - 2, 41, 42, 43, 0, 0, 0, 0, 0, 12, 15, 30, 2, 2, 2, 2, - 30, 2, 30, 2, 2, 2, 2, 2, 2, 9, 2, 30, 2, 2, 0, 17, - 18, 19, 20, 21, 27, 22, 35, 24, 0, 0, 0, 0, 0, 30, 41, 41, - 44, 12, 29, 30, 2, 2, 2, 9, 30, 9, 2, 30, 2, 2, 0, 17, - 45, 0, 0, 27, 22, 0, 0, 2, 30, 30, 0, 0, 0, 0, 0, 0, - 0, 0, 46, 30, 2, 2, 9, 0, 2, 9, 2, 2, 0, 30, 9, 9, - 2, 0, 30, 9, 0, 2, 9, 0, 2, 2, 2, 2, 2, 2, 0, 0, - 23, 16, 47, 0, 48, 33, 48, 34, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 15, 29, 49, 2, 2, 2, 9, 2, 9, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 0, 17, 22, 16, 23, 47, 22, 38, 22, 39, - 0, 0, 0, 27, 31, 2, 9, 0, 0, 10, 29, 30, 2, 2, 2, 9, - 2, 2, 2, 30, 2, 2, 0, 17, 45, 0, 0, 35, 47, 0, 0, 0, - 9, 50, 51, 0, 0, 0, 0, 0, 0, 11, 29, 2, 2, 2, 2, 9, - 2, 2, 2, 2, 2, 2, 52, 53, 23, 19, 20, 31, 48, 33, 48, 34, - 54, 0, 0, 0, 35, 0, 0, 0, 30, 12, 29, 30, 2, 2, 2, 2, - 2, 2, 2, 2, 9, 0, 2, 2, 2, 2, 30, 2, 2, 2, 2, 30, - 0, 2, 2, 2, 9, 0, 55, 0, 35, 23, 22, 31, 31, 18, 48, 48, - 25, 0, 23, 0, 0, 0, 0, 0, 0, 2, 0, 2, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 2, 56, 56, 57, 0, 0, - 18, 2, 2, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, - 0, 58, 21, 59, 22, 22, 20, 20, 46, 21, 11, 31, 11, 2, 2, 60, - 61, 61, 61, 61, 61, 62, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 63, 0, 0, 0, 0, 64, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 65, 45, 59, 66, 22, 22, 67, 68, 69, 70, - 71, 2, 2, 2, 2, 2, 1, 0, 5, 2, 2, 2, 23, 20, 2, 2, - 72, 71, 73, 74, 65, 73, 29, 29, 2, 52, 22, 53, 2, 2, 2, 2, - 2, 2, 75, 76, 77, 29, 29, 78, 79, 2, 2, 2, 2, 2, 29, 45, - 0, 2, 59, 80, 0, 0, 0, 0, 30, 2, 59, 47, 0, 0, 0, 0, - 0, 2, 59, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 9, - 2, 9, 59, 0, 0, 0, 0, 0, 0, 2, 2, 81, 45, 22, 59, 20, - 48, 48, 48, 48, 15, 82, 83, 84, 85, 86, 87, 0, 0, 0, 0, 88, - 0, 9, 0, 0, 30, 0, 89, 81, 90, 2, 2, 2, 2, 9, 0, 0, - 0, 42, 42, 91, 92, 2, 2, 2, 2, 2, 2, 2, 2, 13, 9, 0, - 0, 2, 2, 2, 2, 2, 2, 2, 9, 22, 80, 45, 22, 93, 61, 0, - 0, 94, 95, 94, 94, 96, 97, 0, 0, 2, 2, 2, 2, 2, 2, 2, - 0, 2, 2, 9, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, - 0, 2, 2, 2, 2, 29, 0, 0, 0, 2, 2, 2, 2, 2, 9, 0, - 0, 2, 2, 2, 52, 98, 45, 0, 0, 2, 2, 99, 100, 101, 102, 61, - 63, 103, 16, 45, 22, 59, 21, 80, 48, 48, 76, 11, 11, 11, 104, 46, - 40, 11, 105, 74, 2, 2, 2, 2, 2, 2, 2, 106, 22, 20, 20, 22, - 48, 48, 22, 107, 2, 2, 2, 9, 0, 0, 0, 0, 0, 0, 108, 109, - 109, 109, 109, 0, 0, 0, 0, 0, 0, 105, 74, 2, 2, 2, 2, 2, - 2, 60, 61, 59, 25, 22, 110, 61, 2, 2, 2, 2, 106, 22, 23, 45, - 45, 101, 111, 0, 0, 0, 0, 0, 0, 2, 2, 61, 18, 48, 23, 112, - 101, 101, 101, 113, 114, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 30, - 2, 11, 46, 115, 115, 115, 11, 115, 115, 15, 115, 115, 115, 26, 0, 40, - 0, 0, 0, 116, 51, 11, 5, 0, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 0, 0, 6, 118, 119, 42, 42, 5, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 119, 120, 119, 119, 119, 119, 119, 119, 119, - 119, 0, 0, 121, 0, 0, 0, 0, 0, 0, 7, 121, 0, 0, 0, 0, - 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 0, 122, 122, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 123, 0, 122, 122, 0, 0, 0, 0, - 0, 2, 53, 2, 107, 2, 10, 2, 2, 2, 65, 19, 16, 0, 0, 31, - 0, 2, 2, 0, 0, 0, 0, 0, 0, 29, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 124, 23, 23, 23, 23, 23, 23, 23, 125, 0, 0, 0, 0, - 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 0, 0, 0, 0, 0, - 52, 2, 2, 2, 22, 22, 126, 115, 0, 2, 2, 2, 127, 20, 59, 20, - 112, 101, 128, 0, 0, 0, 0, 0, 0, 11, 129, 2, 2, 2, 2, 2, - 2, 2, 130, 23, 22, 20, 48, 131, 132, 133, 0, 0, 0, 0, 0, 0, - 0, 2, 2, 52, 30, 2, 2, 2, 2, 2, 2, 2, 2, 10, 22, 59, - 98, 76, 134, 135, 136, 0, 0, 0, 0, 2, 137, 2, 2, 2, 2, 138, - 0, 30, 2, 42, 5, 0, 79, 15, 2, 139, 20, 53, 127, 139, 2, 2, - 140, 10, 9, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 141, 21, - 25, 0, 0, 142, 143, 0, 0, 0, 0, 2, 65, 45, 23, 80, 47, 144, - 0, 81, 81, 81, 81, 81, 81, 81, 81, 0, 0, 0, 0, 0, 0, 0, - 6, 119, 119, 119, 119, 120, 0, 0, 0, 2, 2, 2, 2, 2, 9, 2, - 2, 2, 9, 2, 30, 2, 2, 2, 2, 2, 30, 2, 2, 2, 30, 9, - 0, 127, 20, 27, 31, 0, 0, 145, 146, 2, 2, 30, 2, 30, 2, 2, - 2, 2, 2, 2, 0, 14, 37, 0, 147, 2, 2, 13, 37, 0, 30, 2, - 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 2, - 9, 2, 2, 11, 41, 0, 0, 0, 0, 2, 2, 2, 0, 27, 22, 22, - 30, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 27, 38, - 0, 2, 2, 2, 115, 115, 115, 115, 115, 148, 2, 9, 0, 0, 0, 0, - 0, 2, 14, 14, 0, 0, 0, 0, 0, 9, 2, 2, 9, 2, 2, 2, - 2, 30, 2, 9, 0, 30, 2, 0, 0, 149, 150, 151, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 22, 22, 20, 20, 20, 22, 22, 133, 0, 0, 0, - 0, 0, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 2, 2, 2, 2, - 2, 53, 52, 53, 0, 0, 0, 0, 153, 11, 74, 2, 2, 2, 2, 2, - 2, 18, 19, 21, 16, 24, 37, 0, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 11, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 127, 20, 22, 154, - 22, 21, 155, 156, 2, 2, 2, 2, 2, 0, 0, 65, 157, 0, 0, 0, - 0, 2, 13, 0, 0, 0, 0, 0, 0, 2, 65, 25, 20, 20, 20, 22, - 22, 107, 158, 0, 0, 56, 159, 31, 160, 30, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 23, 19, 22, 22, 161, 44, 0, 0, 0, - 49, 127, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 9, 2, 2, - 30, 2, 2, 2, 2, 2, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, - 10, 18, 19, 21, 22, 162, 31, 0, 0, 11, 11, 30, 2, 2, 2, 9, - 30, 9, 2, 30, 2, 2, 58, 17, 23, 16, 23, 47, 32, 33, 32, 34, - 0, 0, 0, 0, 35, 0, 0, 0, 2, 2, 23, 0, 11, 11, 11, 46, - 0, 11, 11, 46, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 30, 0, - 9, 2, 2, 2, 30, 45, 59, 20, 20, 31, 33, 32, 32, 25, 163, 29, - 164, 165, 37, 0, 0, 0, 0, 0, 0, 12, 26, 0, 0, 0, 0, 0, - 0, 2, 2, 65, 25, 20, 20, 20, 22, 23, 125, 15, 17, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 0, 0, 166, 167, 0, 0, 0, 0, 0, 0, - 0, 18, 19, 20, 20, 66, 98, 25, 160, 11, 168, 9, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 2, 2, 65, 25, 20, 20, 0, 48, 48, 11, - 169, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 20, - 0, 23, 19, 20, 20, 21, 16, 82, 169, 38, 0, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 10, 170, 25, 20, 22, 22, 168, 9, 0, 0, - 0, 2, 2, 2, 2, 2, 9, 43, 135, 23, 22, 20, 76, 21, 22, 0, - 0, 2, 2, 2, 9, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 18, - 19, 20, 21, 22, 104, 169, 37, 0, 0, 2, 2, 2, 9, 30, 0, 2, - 2, 2, 2, 30, 9, 2, 2, 2, 2, 23, 23, 18, 32, 33, 12, 171, - 165, 172, 173, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, - 2, 65, 25, 20, 20, 0, 22, 23, 29, 107, 0, 33, 0, 0, 0, 0, - 0, 52, 20, 22, 22, 22, 139, 2, 2, 2, 174, 140, 11, 15, 175, 61, - 176, 0, 0, 1, 147, 0, 0, 0, 0, 52, 20, 22, 16, 19, 20, 2, - 2, 2, 2, 158, 158, 158, 177, 177, 177, 177, 177, 177, 15, 178, 0, 30, - 0, 16, 20, 16, 16, 0, 0, 0, 0, 22, 20, 20, 31, 22, 22, 11, - 169, 0, 61, 61, 61, 61, 61, 61, 61, 66, 21, 82, 46, 0, 0, 0, - 0, 2, 2, 2, 9, 2, 30, 2, 2, 52, 22, 22, 31, 0, 38, 22, - 27, 11, 159, 179, 180, 0, 0, 0, 0, 2, 2, 2, 30, 9, 2, 2, - 2, 2, 2, 2, 2, 2, 23, 23, 47, 22, 35, 82, 68, 0, 0, 0, - 0, 2, 181, 66, 47, 0, 0, 0, 0, 11, 182, 2, 2, 2, 2, 2, - 2, 2, 2, 23, 22, 20, 31, 0, 48, 16, 143, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 156, 0, 0, 183, 183, 183, 183, 183, 183, 183, - 183, 184, 184, 184, 185, 186, 184, 183, 183, 187, 183, 183, 188, 189, 189, 189, - 189, 189, 189, 189, 0, 0, 0, 0, 0, 183, 183, 183, 183, 183, 190, 0, - 0, 2, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, 22, 22, 191, 192, - 193, 11, 11, 11, 46, 0, 0, 0, 0, 29, 74, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 65, 47, 0, 2, 2, 2, 2, 2, 9, 0, - 58, 194, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 0, 0, 0, 40, 115, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 2, 2, 2, 2, 2, 0, 58, 37, 0, 6, 119, 119, 119, 120, 0, - 0, 11, 11, 11, 49, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, - 2, 2, 2, 2, 2, 2, 2, 2, 46, 2, 2, 2, 2, 2, 2, 11, - 11, 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2, - 20, 2, 2, 44, 44, 44, 92, 0, 0, O, O, O, GB, B, B, O, - SB, O, SE, GB, O, O, WJ,FMPst,FMPst, O, CGJ, B, O, B,VMAbv,VMAbv, - VMAbv, O,VMAbv, B,CMBlw,CMBlw,CMBlw,VMAbv,VMPst, VAbv, VPst,CMBlw, B, VPst, VPre, VPst, - VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VPst, VPst, VPst, H, VPre, VPst,VMBlw, O, O, - VAbv, GB,VMAbv,VMPst,VMPst, O, B, VBlw, O, O, VPre, VPre, O, VPre, H, O, - VPst,FMAbv, O,CMBlw, O, VAbv, O, VAbv, H, O,VMBlw,VMAbv,CMAbv, GB, GB, O, - MBlw,CMAbv,CMAbv, VPst, VAbv,VMAbv, O, VPst, O, VPre, VPre,VMAbv, B, O, CS, CS, - VMPst, B, VAbv, VAbv, B, R, O, HVM, O, O,FMBlw, O,CMAbv, O,CMBlw, VAbv, - VBlw, B, SUB, SUB, SUB, O, SUB, SUB, O,FMBlw, O, B, VPst, VBlw, VPre,VMAbv, - VMBlw,VMPst, IS, VAbv, MPst, MPre, MBlw, MBlw, B, MBlw, MBlw, VPst,VMPst,VMPst, B, MBlw, - VPst, VPre, VAbv, VAbv,VMPst,VMPst,VMBlw, B,VMPst, VBlw, VPst, CGJ, CGJ, VPst,VMAbv,VMAbv, - FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv, IS,FMAbv, B,FMAbv, B, CGJ, WJ, CGJ, GB, - CMAbv,CMAbv, B, VAbv, SUB, FPst, FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv, VPre, B, - MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst, H, - B, O,SMAbv,SMAbv,SMAbv, VPst, IS, RK, RK, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw, - VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, WJ, WJ, O,FMPst, O, SB, SE, O, - H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv, - MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw, - B, VBlw,VMAbv, B, VPre, O,VMPst, IS, O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, - IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, B, N, N, O, HN, VPre, VBlw, VAbv, - IS,CMAbv, O, VPst, B, R, R,CMBlw, VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, - O,VMAbv,CMBlw, IS, R,FMAbv, B, CS, CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv, - VPst, MPst, R, MPst,CMBlw, B,FMBlw, CS, SUB, SUB, GB, FBlw, FBlw,CMAbv, IS, VBlw, - IS, R, MBlw, GB, VAbv, R,VMPst, G, G, J, J, J, SB, SE, J, HR, - G, G, HM, HM, HM, G, O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, + 4, 2, 2, 2, 2, 5, 2, 2, 2, 2, 6, 0, 2, 2, 2, 2, + 2, 5, 8, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, + 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, + 0, 2, 2, 2, 2, 5, 0, 0, 0, 2, 2, 2, 2, 2, 5, 0, + 0, 2, 8, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 74, 75, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 2, 0, 2, 2, 2, 2, 2, 2, 2, 17, 6, 13, 29, 33, 29, 45, + 0, 15, 11, 27, 7, 38, 7, 68, 0, 2, 2, 2, 2, 8, 2, 2, + 2, 10, 10, 10, 10, 80, 10, 10, 10, 2, 2, 2, 2, 2, 2, 2, + 5, 2, 2, 5, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, + 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 5, 2, + 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, + 0, 9, 41, 2, 2, 2, 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 23, 6, 6, 6, 6, 6, 6, 6, + 6, 0, 0, 0, 0, 0, 0, 48, 0, 44, 0, 0, 0, 0, 0, 49, + 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 103, 2, 2, 2, 2, 2, 36, 9, + 9, 9, 9, 0, 0, 0, 5, 31, 0, 2, 2, 2, 2, 50, 51, 0, + 0, 9, 24, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 15, 32, + 19, 17, 6, 18, 7, 15, 11, 67, 22, 31, 52, 25, 6, 2, 2, 2, + 2, 104, 14, 8, 2, 2, 2, 5, 8, 5, 5, 0, 2, 2, 0, 32, + 19, 0, 0, 0, 34, 0, 0, 2, 8, 2, 0, 0, 0, 0, 0, 5, + 105, 31, 24, 8, 2, 2, 5, 0, 8, 5, 2, 8, 5, 2, 0, 35, + 19, 17, 13, 0, 25, 38, 25, 68, 0, 53, 0, 0, 0, 8, 2, 5, + 5, 54, 39, 77, 0, 0, 0, 0, 0, 31, 24, 8, 2, 2, 2, 2, + 8, 5, 2, 8, 2, 2, 0, 32, 19, 17, 6, 18, 25, 7, 34, 67, + 0, 0, 0, 0, 0, 8, 54, 54, 46, 31, 14, 8, 2, 2, 2, 5, + 8, 5, 2, 8, 2, 2, 0, 32, 20, 0, 0, 25, 7, 0, 0, 2, + 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 26, 8, 2, 2, 5, 0, + 2, 5, 2, 2, 0, 8, 5, 5, 2, 0, 8, 5, 0, 2, 5, 0, + 2, 2, 2, 2, 2, 2, 0, 0, 11, 15, 27, 0, 12, 33, 12, 45, + 0, 0, 0, 0, 34, 0, 0, 0, 0, 24, 14, 55, 2, 2, 2, 5, + 2, 2, 2, 2, 2, 2, 0, 32, 7, 0, 0, 25, 13, 2, 5, 0, + 0, 36, 14, 8, 2, 2, 2, 5, 2, 2, 2, 8, 2, 2, 0, 32, + 20, 0, 0, 34, 27, 0, 0, 0, 5, 106, 78, 0, 0, 0, 0, 0, + 0, 9, 14, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 30, 40, + 11, 17, 6, 13, 12, 33, 12, 45, 107, 0, 0, 0, 34, 0, 0, 0, + 8, 31, 14, 8, 2, 2, 2, 2, 2, 2, 2, 2, 5, 0, 2, 2, + 2, 2, 8, 2, 2, 2, 2, 8, 0, 2, 2, 2, 5, 0, 108, 0, + 34, 11, 7, 13, 13, 19, 12, 12, 22, 0, 11, 0, 0, 0, 0, 0, + 0, 2, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 2, 2, 69, 69, 109, 0, 0, 19, 56, 18, 21, 7, 7, 6, 6, + 26, 18, 9, 13, 9, 2, 2, 79, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 81, 0, 0, 0, 0, 110, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 23, 20, 21, 57, 7, 7, 111, 82, 112, 113, + 83, 2, 2, 2, 2, 2, 48, 0, 44, 2, 2, 2, 11, 6, 2, 2, + 114, 83, 84, 41, 23, 84, 14, 14, 2, 30, 7, 40, 2, 2, 2, 2, + 2, 2, 115, 58, 116, 14, 14, 117, 85, 2, 2, 2, 2, 2, 14, 20, + 0, 2, 21, 59, 0, 0, 0, 0, 8, 2, 21, 27, 0, 0, 0, 0, + 0, 2, 21, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 5, + 2, 5, 21, 0, 0, 0, 0, 0, 0, 2, 2, 4, 20, 7, 21, 6, + 12, 12, 12, 12, 24, 60, 118, 119, 120, 121, 122, 0, 0, 0, 0, 123, + 0, 5, 0, 0, 8, 0, 124, 4, 125, 39, 39, 126, 86, 2, 2, 2, + 2, 2, 2, 2, 2, 50, 5, 0, 0, 7, 59, 20, 7, 127, 10, 0, + 0, 70, 128, 70, 70, 129, 130, 0, 0, 2, 2, 2, 2, 2, 2, 2, + 0, 2, 2, 2, 2, 14, 0, 0, 0, 2, 2, 2, 30, 71, 20, 0, + 0, 2, 2, 131, 132, 42, 133, 10, 81, 134, 15, 20, 7, 21, 18, 59, + 12, 12, 58, 9, 9, 9, 87, 26, 53, 9, 88, 41, 2, 2, 2, 2, + 2, 2, 2, 89, 7, 6, 6, 7, 12, 12, 7, 61, 2, 2, 2, 5, + 0, 0, 0, 0, 0, 0, 135, 62, 62, 62, 62, 0, 0, 0, 0, 0, + 0, 88, 41, 2, 2, 2, 2, 2, 2, 79, 10, 21, 22, 7, 136, 10, + 2, 2, 2, 2, 89, 7, 11, 20, 20, 42, 137, 0, 0, 0, 0, 0, + 0, 2, 2, 10, 19, 12, 11, 90, 42, 42, 42, 138, 139, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 0, 8, 2, 9, 26, 16, 16, 16, 9, 16, + 16, 24, 16, 16, 16, 52, 0, 53, 0, 0, 0, 140, 78, 9, 44, 0, + 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 49, 142, + 3, 39, 39, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, + 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 76, 91, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 63, 63, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 143, 0, 63, 63, 0, 0, 0, 0, + 0, 2, 40, 2, 61, 2, 36, 2, 2, 2, 23, 17, 15, 0, 0, 13, + 0, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 144, 11, 11, 11, 11, + 11, 11, 11, 92, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 2, 0, 0, 0, 0, 0, 30, 2, 2, 2, 7, 7, 145, 16, + 0, 2, 2, 2, 47, 6, 21, 6, 90, 42, 146, 0, 0, 0, 0, 0, + 0, 9, 147, 2, 2, 2, 2, 2, 2, 2, 148, 11, 7, 6, 12, 149, + 150, 93, 0, 0, 0, 0, 0, 0, 0, 2, 2, 30, 8, 2, 2, 2, + 2, 2, 2, 2, 2, 36, 7, 21, 71, 58, 151, 94, 152, 0, 0, 0, + 0, 2, 153, 2, 2, 2, 2, 154, 0, 8, 2, 39, 44, 0, 85, 24, + 2, 73, 6, 40, 47, 73, 2, 2, 95, 36, 5, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 155, 18, 22, 0, 0, 156, 96, 0, 0, 0, + 0, 2, 23, 20, 11, 59, 27, 157, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 3, 3, 3, 3, 72, 0, 0, 0, 2, 5, 2, 8, 2, 2, 2, + 2, 2, 8, 2, 2, 2, 8, 5, 0, 47, 6, 25, 13, 0, 0, 158, + 159, 2, 2, 8, 2, 8, 2, 2, 2, 2, 2, 2, 0, 51, 35, 0, + 97, 2, 2, 50, 35, 0, 8, 2, 2, 0, 0, 0, 0, 8, 2, 2, + 5, 2, 2, 9, 54, 0, 0, 0, 0, 2, 2, 2, 0, 25, 7, 7, + 8, 2, 2, 2, 2, 2, 25, 38, 0, 2, 2, 2, 16, 16, 16, 16, + 16, 160, 2, 5, 0, 0, 0, 0, 0, 2, 51, 51, 0, 0, 0, 0, + 0, 5, 2, 2, 5, 2, 2, 2, 2, 8, 2, 5, 0, 8, 2, 0, + 0, 161, 162, 163, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 7, 6, + 6, 6, 7, 7, 93, 0, 0, 0, 0, 0, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 2, 2, 2, 2, 2, 40, 30, 40, 0, 0, 0, 0, + 164, 19, 17, 18, 15, 67, 35, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 9, 55, 2, 2, 2, 2, 2, 2, 2, 2, 2, 47, 6, 7, 165, + 7, 18, 166, 98, 2, 2, 2, 2, 2, 0, 0, 23, 167, 0, 0, 0, + 0, 2, 50, 0, 0, 0, 0, 0, 0, 2, 23, 22, 6, 6, 6, 7, + 7, 61, 64, 0, 0, 69, 99, 13, 100, 2, 2, 2, 2, 2, 2, 11, + 17, 7, 7, 168, 46, 0, 0, 0, 55, 47, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 5, 5, 2, 2, 8, 2, 2, 2, 2, 2, 2, 2, + 8, 2, 2, 2, 2, 2, 2, 2, 36, 19, 17, 18, 7, 169, 13, 0, + 0, 9, 9, 8, 2, 2, 2, 5, 8, 5, 2, 8, 2, 2, 56, 32, + 11, 15, 11, 27, 29, 33, 29, 45, 0, 0, 0, 0, 34, 0, 0, 0, + 2, 2, 11, 0, 9, 9, 9, 26, 0, 9, 9, 26, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 8, 0, 5, 2, 2, 2, 8, 20, 21, 6, + 6, 13, 33, 29, 29, 22, 170, 14, 171, 101, 35, 0, 0, 0, 0, 0, + 0, 31, 52, 0, 0, 0, 0, 0, 0, 2, 2, 23, 22, 6, 6, 6, + 7, 11, 92, 24, 32, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, + 172, 173, 0, 0, 0, 0, 0, 0, 0, 19, 17, 6, 6, 57, 71, 22, + 100, 9, 102, 5, 0, 0, 0, 0, 0, 22, 6, 6, 0, 12, 12, 9, + 65, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 6, + 0, 11, 17, 6, 6, 18, 15, 60, 65, 38, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 36, 174, 22, 6, 7, 7, 102, 5, 0, 0, + 0, 2, 2, 2, 2, 2, 5, 77, 94, 11, 7, 6, 58, 18, 7, 0, + 0, 2, 2, 2, 5, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 19, + 17, 6, 18, 7, 87, 65, 35, 0, 0, 2, 2, 2, 5, 8, 0, 2, + 2, 2, 2, 8, 5, 2, 2, 2, 2, 11, 11, 19, 29, 33, 31, 175, + 101, 176, 177, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, + 2, 23, 22, 6, 6, 0, 7, 11, 14, 61, 0, 33, 0, 0, 0, 0, + 0, 30, 6, 7, 7, 7, 73, 2, 2, 2, 178, 95, 9, 24, 179, 10, + 180, 0, 0, 48, 97, 0, 0, 0, 0, 30, 6, 7, 15, 17, 6, 2, + 2, 2, 2, 64, 64, 64, 43, 43, 43, 43, 43, 43, 24, 181, 0, 8, + 0, 15, 6, 15, 15, 0, 0, 0, 0, 7, 6, 6, 13, 7, 7, 9, + 65, 0, 10, 10, 10, 10, 10, 10, 10, 57, 18, 60, 26, 0, 0, 0, + 0, 2, 2, 2, 5, 2, 8, 2, 2, 30, 7, 7, 13, 0, 38, 7, + 25, 9, 99, 182, 183, 0, 0, 0, 0, 2, 2, 2, 8, 5, 2, 2, + 2, 2, 2, 2, 2, 2, 11, 11, 27, 7, 34, 60, 82, 0, 0, 0, + 0, 2, 184, 57, 27, 0, 0, 0, 0, 9, 185, 2, 2, 2, 2, 2, + 2, 2, 2, 11, 7, 6, 13, 0, 12, 15, 96, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 98, 0, 0, 66, 66, 66, 186, 187, 66, 1, + 1, 188, 1, 1, 189, 37, 37, 37, 37, 37, 37, 37, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 190, 0, 0, 2, 2, 2, 2, 2, 2, 2, + 7, 7, 7, 7, 7, 7, 191, 192, 193, 9, 9, 9, 26, 0, 0, 0, + 0, 14, 41, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 23, 27, + 0, 2, 2, 2, 2, 2, 5, 0, 56, 194, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 0, 0, 0, 53, 16, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 2, 2, 2, 2, 2, 0, 56, 35, 0, 49, 3, 3, 3, 72, 0, + 0, 9, 9, 9, 55, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 26, 2, 2, 2, 2, 2, 2, 9, + 9, 2, 2, 2, 2, 2, 2, 7, 7, 2, 2, 2, 2, 2, 2, 2, + 6, 2, 2, 46, 46, 46, 86, 0, 0, O, O, G, G, B, B, WJ, + WJ, CGJ, CGJ, B, O, VBlw, VBlw, VAbv, VAbv, O, B,VMAbv,VMAbv, SUB, SUB, VPst, + VPst, VPre, VPre, VBlw, O,VMPst,VMPst, VAbv, VPst,VMBlw,VMBlw, VPst, VBlw, VBlw, VAbv, VPst, + VPre, VPst, VAbv, VAbv, VBlw, VPre, VPst, B, VPst,VMAbv,VMPst, O, VAbv,VMAbv, O, VPst, + O, N, N, O, VPre, B, VAbv, O,VMAbv,CMBlw, B, VPre, O, O, VPst,CMBlw, + O, B,VMAbv, HM, HM, VAbv, O, GB, GB, VAbv, B,VMPst, B, FAbv, FAbv, FBlw, + FBlw, GB, O, VPre, H,CMAbv,CMAbv, B, VBlw, O, GB, O, WJ, B,CMBlw,CMBlw, + CMBlw,VMBlw, O, O,VMBlw,VMAbv,CMAbv,VMAbv, B, O,CMBlw, VBlw, VPre, VPre, VAbv, VBlw, + VPst, VPst,VMAbv, H, B,SMAbv,SMAbv, SB, SE, R, R,VMPst, H, J, J, VPst, + H, VAbv, H, O,FMBlw, FPst, FPst, VAbv, VPre, WJ, O, VBlw, B, O, SB, O, + SE,FMPst,FMPst, O, MBlw, CS,VMPst, B, SUB, O, SUB, SUB, O,VMPst, IS, MBlw, + B, VPst,VMPst, B,VMPst,CMAbv, B, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst, VBlw, FAbv,FMPst, + O, H,VMAbv, H, O, MPre, MAbv, VBlw,VMAbv, IS, O, O, IS,CMAbv, O,CMBlw, + VAbv, VPre,VMAbv, IS, R, H,CMBlw, O, CGJ, GB,VMAbv,FMAbv, O, O, CS, R, + O, HVM, O, O,CMAbv,FMBlw, O,VMAbv,VMBlw, VAbv, MPst, MPre, MBlw, MBlw, MBlw, MBlw, + VPst, VAbv,VMPst,VMPst,VMBlw,VMAbv,FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv, IS,FMAbv, B, + FMAbv, B, CGJ, WJ, CGJ, GB,CMAbv, VAbv, SUB,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, B, + MPre, MBlw, SUB, MAbv, SUB, Sk, VPst, O,SMAbv, VPst, IS, RK, RK,VMPre,VMPre,FMAbv, + CMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, O, H, MPst, VPst, VAbv,VMBlw, FPst, VPst, FAbv, + VMPst, B,CMAbv, VAbv, MBlw, MPst, MBlw, VBlw, MPst, MBlw, O, B, FAbv, FAbv, FPst, B, + VPre, O,VMPst,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, + B, O, HN, VPre, VBlw, VAbv, IS, VPst, B,VMAbv, H, VAbv,CMBlw,VMPst, O,VMAbv, + CMBlw,FMAbv, B, CS, CS,VMPst, VAbv,VMAbv, VPst, MPst, R, MPst,CMBlw, B,FMBlw, CS, + SUB, SUB, GB,CMAbv, IS, VBlw, IS, R, MBlw, GB, VAbv, R,VMPst, J, SB, SE, + J, HR, G, G, HM, G, O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw, }; static const uint16_t hb_use_u16[864]= { - 0, 0, 1, 2, 0, 3, 0, 3, 0, 0, 4, 5, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, - 0, 0, 0, 0, 10, 13, 0, 0, 14, 10, 10, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 18, 26, 27, 21, 22, 28, 29, 30, 31, 32, - 33, 34, 22, 35, 36, 0, 18, 37, 38, 21, 22, 39, 24, 40, 18, 41, - 42, 43, 44, 45, 46, 47, 31, 0, 48, 49, 22, 50, 51, 52, 18, 0, - 53, 49, 22, 54, 51, 55, 18, 56, 57, 49, 10, 58, 59, 60, 18, 0, - 61, 62, 10, 63, 64, 65, 31, 66, 67, 68, 10, 69, 70, 10, 71, 72, - 73, 74, 75, 76, 77, 0, 0, 0, 10, 10, 78, 79, 80, 81, 82, 83, - 84, 85, 0, 0, 0, 0, 0, 0, 10, 86, 10, 87, 10, 88, 89, 90, - 10, 10, 10, 91, 92, 93, 2, 0, 94, 0, 10, 10, 10, 10, 10, 95, - 96, 10, 97, 0, 0, 0, 0, 0, 10, 98, 99,100, 31, 10,101,102, - 10, 10,103, 10,104,105, 0, 0, 10,106, 10, 10, 10,107,108,109, - 2, 2, 0, 0, 0, 0, 0, 0,110, 10, 10,111,112, 2,113,114, - 115, 10,116, 10, 10, 10,117,118, 10, 10,119,120,121, 0, 0, 0, - 0, 0, 0, 0, 0,122,123,124, 0, 0, 0, 0, 0, 0, 0,125, - 126,127,128, 0, 0, 0,129,130,131, 0, 0, 0, 0, 0, 0,132, - 0, 0, 0, 0,133, 0, 0, 0, 0, 0, 0, 0, 0, 0,134, 0, - 0, 0, 0, 10, 10, 10,135,136, 0, 0,137, 0, 0, 0, 0, 0, - 138, 10,139, 0, 10, 10, 10,140,141, 10, 10,142,143, 2,144,145, - 10, 10,146, 10,147,148, 0, 0,149, 10, 10,150,151, 2,152, 98, - 10, 10,153,154,155, 2, 10,156, 10, 10, 10,157,158, 0,159,160, - 0, 0, 0, 0, 10, 10,161, 2,162, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,163, 0, 0, 0, 0, 0, 0, 0,164, - 0, 0, 0, 0, 0, 0, 0,165,165,166, 34,167, 0, 0, 0, 0, - 168,169, 10,170, 95, 0, 0, 0, 0, 0, 0, 0, 70, 10,171, 0, - 10,172,173, 0, 0, 0, 0, 0, 10, 10,174, 2, 9, 10,175, 10, - 176, 0, 0, 0, 0, 0, 0, 0, 10, 10,177,172, 0, 0, 0, 0, - 0, 0, 0, 10,178,179, 0, 10,180, 0, 0,181,182, 0, 0, 0, - 183, 10, 10,184,185,186,187,188,189, 10, 10,190,191, 0, 0, 0, - 192, 10,193,194,195, 10, 10,196,189, 10, 10,197,198,105,199,102, - 10, 34,200,201,202, 0, 0, 0,203,204, 95, 10, 10,205,206, 2, - 207, 21, 22,208,209,210,211,212,213, 10, 10,214,215,216,217, 0, - 10, 10, 10,218,219,220,221, 0,199, 10, 10,222,223, 2, 0, 0, - 10, 10,224,225,226,227, 0, 0, 10, 10, 10,228,229, 2, 0, 0, - 10, 10,230,231, 2, 10,140, 0, 10,232,233,103,234, 0, 0, 0, - 10, 10,235,236, 0, 0, 0, 0,237,238, 10,239,240, 2, 0, 0, - 0, 0,241, 10, 10,242,243, 0,244, 10, 10,245,246,247, 10, 10, - 248,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0, - 22, 10,224,251, 8, 10, 71, 19, 10,252, 74,253, 0, 0, 0, 0, - 254, 10, 10,255,256, 2,257, 10,258,259, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 10,260,261, 49, 10,262,263,264, 0, 0, - 265,265,265,265,265,265,265,265,265,265,265,266,267,268,265,265, - 265,265,265,265,265,265,265,269, 10,270,271, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 10, 10, 10,272, 0, 0, 0, 0, - 0, 0, 0, 0,273, 10,274, 2, 10, 10, 10, 10,275,276,277,277, - 278,279, 0, 0, 0, 0,280, 0, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10,176, 0,281, 10, 10, 10, 10, 10, 10,105, 71, - 95,282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,283, - 10, 10, 71,284,285, 0, 0, 0, 0, 10,286, 0, 10, 10,287, 2, - 0, 0, 0, 0, 0, 10,288, 2, 0, 0, 0, 0, 0, 10,289,105, - 10, 10, 10, 10,290, 2, 0, 0,129,129,129,129,129,129,129,129, - 162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,129, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, + 16, 16, 16, 16, 16, 16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, + 0, 0, 272, 32, 0, 120, 0, 120, 0, 0, 280, 288, 0, 296, 0, 0, + 0, 0, 0, 0, 304, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, + 0, 0, 0, 0, 136, 24, 312, 320, 0, 0, 0, 0, 24, 328, 0, 0, + 336, 24, 24, 344, 352, 360, 56, 144, 368, 64, 48, 376, 152, 384, 56, 392, + 400, 64, 48, 408, 416, 424, 72, 432, 440, 112, 48, 448, 456, 0, 56, 464, + 472, 64, 48, 480, 152, 488, 56, 496, 504, 512, 520, 528, 536, 544, 72, 0, + 552, 80, 48, 560, 160, 568, 56, 0, 576, 80, 48, 584, 160, 592, 56, 600, + 608, 80, 24, 616, 624, 632, 56, 0, 640, 648, 24, 656, 664, 672, 72, 680, + 688, 696, 24, 704, 168, 24, 88, 712, 720, 176, 728, 736, 744, 0, 0, 0, + 24, 24, 752, 760, 768, 776, 784, 792, 800, 808, 0, 0, 0, 0, 0, 0, + 24, 816, 24, 824, 24, 832, 840, 848, 24, 24, 24, 856, 864, 872, 32, 0, + 880, 0, 24, 24, 24, 24, 24, 96, 888, 24, 896, 0, 0, 0, 0, 0, + 24, 184, 904, 912, 72, 24, 920, 192, 24, 24, 200, 24, 928, 104, 0, 0, + 24, 936, 24, 24, 24, 944, 952, 960, 32, 32, 0, 0, 0, 0, 0, 0, + 968, 24, 24, 976, 984, 32, 992,1000,1008, 24,1016, 24, 24, 24,1024,1032, + 24, 24,1040,1048,1056, 0, 0, 0, 0, 0, 0, 0, 0,1064,1072,1080, + 0, 0, 0, 0, 0, 0, 0,1088,1096,1104,1112, 0, 0, 0, 16,1120, + 1128, 0, 0, 0, 0, 0, 0,1136, 0, 0, 0, 0,1144, 0, 0, 0, + 0, 0, 0, 0, 0, 0,1152, 0, 0, 0, 0, 24, 24, 24,1160,1168, + 0, 0,1176, 0, 0, 0, 0, 0,1184, 24,1192, 0, 24, 24, 24, 208, + 1200, 24, 24,1208,1216, 32,1224,1232, 24, 24,1240, 24,1248,1256, 0, 0, + 1264, 24, 24,1272,1280, 32,1288, 184, 24, 24,1296,1304,1312, 32, 24,1320, + 24, 24, 24,1328,1336, 0,1344,1352, 0, 0, 0, 0, 24, 24,1360, 32, + 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1368, + 0, 0, 0, 0, 0, 0, 0,1376, 0, 0, 0, 0, 0, 0, 0, 216, + 216,1384, 112,1392, 0, 0, 0, 0,1400,1408, 24,1416, 96, 0, 0, 0, + 0, 0, 0, 0, 168, 24,1424, 0, 24, 224,1432, 0, 0, 0, 0, 0, + 24, 24,1440, 32, 136, 24,1448, 24, 232, 0, 0, 0, 0, 0, 0, 0, + 24, 24,1456, 224, 0, 0, 0, 0, 0, 0, 0, 24,1464,1472, 0, 24, + 1480, 0, 0,1488,1496, 0, 0, 0,1504, 24, 24,1512,1520,1528,1536,1544, + 240, 24, 24,1552,1560, 0, 0, 0,1568, 24,1576,1584,1592, 24, 24,1600, + 240, 24, 24,1608,1616, 104, 248, 192, 24, 112,1624,1632,1640, 0, 0, 0, + 1648,1656, 96, 24, 24,1664,1672, 32,1680, 64, 48,1688,1696,1704,1712,1720, + 1728, 24, 24,1736,1744,1752,1760, 0, 24, 24, 24,1768,1776,1784,1792, 0, + 248, 24, 24,1800,1808, 32, 0, 0, 24, 24, 256,1816,1824,1832, 0, 0, + 24, 24, 24,1840,1848, 32, 0, 0, 24, 24,1856,1864, 32, 24, 208, 0, + 24,1872,1880, 200,1888, 0, 0, 0, 24, 24,1896,1904, 0, 0, 0, 0, + 1912,1920, 24,1928,1936, 32, 0, 0, 0, 0,1944, 24, 24,1952,1960, 0, + 1968, 24, 24,1976,1984,1992, 24, 24,2000,2008, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,2016, 0, 48, 24, 256,2024, 128, 24, 88, 144, + 24,2032, 176,2040, 0, 0, 0, 0,2048, 24, 24,2056,2064, 32,2072, 24, + 2080,2088, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,2096, + 2104, 80, 24,2112,2120,2128, 0, 0, 8, 8, 8,2136,2144,2152, 8, 8, + 8, 8, 8, 8, 8, 8, 8,2160, 24,2168,2176, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, 24, 24, 24,2184, 0, 0, 0, 0, + 0, 0, 0, 0,2192, 24,2200, 32, 24, 24, 24, 24,2208,2216, 264, 264, + 2224,2232, 0, 0, 0, 0,2240, 0, 24, 24, 24, 24, 24, 232, 0,2248, + 24, 24, 24, 24, 24, 24, 104, 88, 96,2256, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,2264, 24, 24, 88,2272,2280, 0, 0, 0, + 0, 24,2288, 0, 24, 24,2296, 32, 0, 0, 0, 0, 0, 24,2304, 32, + 0, 0, 0, 0, 0, 24,2312, 104, 24, 24, 24, 24,2320, 32, 0, 0, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 16, }; static inline uint8_t hb_use_b4 (const uint8_t* a, unsigned i) @@ -379,7 +379,8 @@ static inline uint8_t hb_use_b4 (const uint8_t* a, unsigned i) } static inline uint8_t hb_use_get_category (unsigned u) { - return u<921600 ? hb_use_u8[2953u+((hb_use_u8[625u+((hb_use_u16[((hb_use_u8[113u+((hb_use_b4(hb_use_u8,((((((((u)>>1))>>3))>>3))>>5)))<<5)+((((((((u)>>1))>>3))>>3))&31)])<<3)+((((((u)>>1))>>3))&7)])<<3)+((((u)>>1))&7)])<<1)+((u)&1)] : O; + /* packtab: [2^4,2^5,2^3,2^3,2^1] */ + return u<921600u ? (uint8_t)(hb_use_u8[2953u+((hb_use_u8[625u+hb_use_u16[((hb_use_u8[113u+((hb_use_b4(hb_use_u8,((((((((u)>>1))>>3))>>3))>>5)))<<5)+((((((((u)>>1))>>3))>>3))&31)])<<3)+((((((u)>>1))>>3))&7)]+((((u)>>1))&7)])<<1)+((u)&1)]) : O; } @@ -389,269 +390,269 @@ static inline uint8_t hb_use_get_category (unsigned u) static const uint8_t hb_use_u8[3663]= { - 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 57, 58, 59, 195, 211, 62, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 15, 0, 1, 1, 2, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 1, - 11, 12, 1, 1, 1, 1, 1, 1, 13, 14, 15, 16, 17, 18, 19, 1, - 1, 20, 1, 1, 1, 1, 21, 1, 22, 1, 1, 1, 1, 1, 23, 24, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 26, 27, 28, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, - 30, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 32, 33, 1, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 53, 53, 53, 54, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 56, 1, 1, 1, 1, 1, 1, 1, 1, 57, 58, 1, 59, 1, - 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 61, 62, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 63, 1, 1, - 1, 1, 64, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 65, 66, 1, 67, 68, 1, 1, 1, 69, 1, 1, 1, 1, 1, - 1, 70, 71, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 0, 1, 2, 2, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 9, 0, 0, 0, 0, - 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 37, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 0, 56, 57, 58, 59, 60, 0, 0, 0, 61, 62, 63, 64, 56, 65, 66, - 67, 68, 56, 56, 69, 70, 71, 0, 0, 72, 73, 74, 75, 56, 76, 77, - 0, 78, 56, 79, 80, 81, 0, 0, 0, 82, 83, 84, 85, 86, 87, 56, - 88, 56, 89, 90, 0, 0, 0, 91, 92, 0, 0, 0, 0, 0, 0, 0, - 93, 94, 95, 0, 96, 97, 0, 0, 98, 0, 0, 0, 0, 0, 0, 99, - 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 101, 56, 102, 0, 0, 0, - 0, 0, 103, 0, 0, 0, 0, 0, 0, 104, 105, 56, 106, 107, 108, 109, - 110, 56, 111, 112, 0, 113, 114, 115, 116, 56, 117, 118, 119, 56, 120, 121, - 122, 0, 0, 0, 0, 0, 0, 56, 123, 124, 0, 0, 0, 0, 0, 0, - 125, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 127, 128, 129, 0, - 0, 130, 131, 132, 0, 0, 0, 51, 133, 0, 0, 0, 0, 134, 135, 0, - 0, 56, 136, 7, 137, 138, 0, 0, 0, 0, 0, 0, 0, 56, 139, 0, - 0, 0, 101, 140, 101, 141, 142, 143, 0, 144, 145, 146, 147, 148, 149, 150, - 0, 151, 152, 153, 154, 148, 155, 156, 157, 158, 159, 160, 0, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 56, 173, 174, 175, 176, 177, 178, - 0, 0, 0, 0, 0, 56, 179, 180, 0, 56, 181, 182, 0, 56, 183, 184, - 185, 186, 187, 188, 0, 0, 0, 0, 0, 56, 189, 0, 0, 0, 0, 0, - 0, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 56, 199, 0, 0, - 0, 0, 0, 0, 200, 0, 0, 0, 0, 201, 202, 203, 204, 205, 206, 0, - 0, 207, 208, 209, 210, 211, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 217, 218, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 219, 220, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, - 0, 56, 222, 0, 0, 0, 0, 0, 0, 0, 0, 223, 224, 0, 0, 0, - 0, 56, 56, 225, 226, 227, 0, 0, 228, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 229, 230, 56, 56, 56, 231, 232, 0, 0, - 0, 0, 0, 0, 233, 0, 0, 0, 0, 56, 234, 235, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 236, 56, 237, 0, 0, 0, 0, 0, 0, 101, - 238, 0, 0, 0, 0, 0, 0, 101, 239, 56, 56, 240, 0, 0, 0, 0, - 0, 241, 241, 241, 241, 241, 241, 241, 241, 242, 242, 242, 242, 242, 242, 242, - 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, - 0, 5, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 11, - 11, 11, 11, 0, 0, 0, 9, 12, 0, 2, 2, 2, 2, 13, 14, 0, - 0, 11, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 17, - 18, 19, 20, 21, 22, 16, 23, 24, 25, 12, 26, 27, 20, 2, 2, 2, - 2, 2, 20, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, - 2, 28, 29, 30, 2, 2, 2, 9, 30, 9, 30, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 9, 2, 2, 2, 9, 9, 0, 2, 2, 0, 17, - 18, 19, 20, 31, 32, 33, 32, 34, 0, 0, 0, 0, 35, 0, 0, 2, - 30, 2, 0, 0, 0, 0, 0, 9, 36, 12, 15, 30, 2, 2, 9, 0, - 30, 9, 2, 30, 9, 2, 0, 37, 18, 19, 31, 0, 27, 38, 27, 39, - 0, 40, 0, 0, 0, 30, 2, 9, 9, 0, 0, 0, 2, 2, 2, 2, - 2, 41, 42, 43, 0, 0, 0, 0, 0, 12, 15, 30, 2, 2, 2, 2, - 30, 2, 30, 2, 2, 2, 2, 2, 2, 9, 2, 30, 2, 2, 0, 17, - 18, 19, 20, 21, 27, 22, 35, 24, 0, 0, 0, 0, 0, 30, 41, 41, - 44, 12, 29, 30, 2, 2, 2, 9, 30, 9, 2, 30, 2, 2, 0, 17, - 45, 0, 0, 27, 22, 0, 0, 2, 30, 30, 0, 0, 0, 0, 0, 0, - 0, 0, 46, 30, 2, 2, 9, 0, 2, 9, 2, 2, 0, 30, 9, 9, - 2, 0, 30, 9, 0, 2, 9, 0, 2, 2, 2, 2, 2, 2, 0, 0, - 23, 16, 47, 0, 48, 33, 48, 34, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 15, 29, 49, 2, 2, 2, 9, 2, 9, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 0, 17, 22, 16, 23, 47, 22, 38, 22, 39, - 0, 0, 0, 27, 31, 2, 9, 0, 0, 10, 29, 30, 2, 2, 2, 9, - 2, 2, 2, 30, 2, 2, 0, 17, 45, 0, 0, 35, 47, 0, 0, 0, - 9, 50, 51, 0, 0, 0, 0, 0, 0, 11, 29, 2, 2, 2, 2, 9, - 2, 2, 2, 2, 2, 2, 52, 53, 23, 19, 20, 31, 48, 33, 48, 34, - 54, 0, 0, 0, 35, 0, 0, 0, 30, 12, 29, 30, 2, 2, 2, 2, - 2, 2, 2, 2, 9, 0, 2, 2, 2, 2, 30, 2, 2, 2, 2, 30, - 0, 2, 2, 2, 9, 0, 55, 0, 35, 23, 22, 31, 31, 18, 48, 48, - 25, 0, 23, 0, 0, 0, 0, 0, 0, 2, 0, 2, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 2, 56, 56, 57, 0, 0, - 18, 2, 2, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, - 0, 58, 21, 59, 22, 22, 20, 20, 46, 21, 11, 31, 11, 2, 2, 60, - 61, 61, 61, 61, 61, 62, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 63, 0, 0, 0, 0, 64, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 65, 45, 59, 66, 22, 22, 67, 68, 69, 70, - 71, 2, 2, 2, 2, 2, 1, 0, 5, 2, 2, 2, 23, 20, 2, 2, - 72, 71, 73, 74, 65, 73, 29, 29, 2, 52, 22, 53, 2, 2, 2, 2, - 2, 2, 75, 76, 77, 29, 29, 78, 79, 2, 2, 2, 2, 2, 29, 45, - 0, 2, 59, 80, 0, 0, 0, 0, 30, 2, 59, 47, 0, 0, 0, 0, - 0, 2, 59, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 9, - 2, 9, 59, 0, 0, 0, 0, 0, 0, 2, 2, 81, 45, 22, 59, 20, - 48, 48, 48, 48, 15, 82, 83, 84, 85, 86, 87, 0, 0, 0, 0, 88, - 0, 9, 0, 0, 30, 0, 89, 81, 90, 2, 2, 2, 2, 9, 0, 0, - 0, 42, 42, 91, 92, 2, 2, 2, 2, 2, 2, 2, 2, 13, 9, 0, - 0, 2, 2, 2, 2, 2, 2, 2, 9, 22, 80, 45, 22, 93, 61, 0, - 0, 94, 95, 94, 94, 96, 97, 0, 0, 2, 2, 2, 2, 2, 2, 2, - 0, 2, 2, 9, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, - 0, 2, 2, 2, 2, 29, 0, 0, 0, 2, 2, 2, 2, 2, 9, 0, - 0, 2, 2, 2, 52, 98, 45, 0, 0, 2, 2, 99, 100, 101, 102, 61, - 63, 103, 16, 45, 22, 59, 21, 80, 48, 48, 76, 11, 11, 11, 104, 46, - 40, 11, 105, 74, 2, 2, 2, 2, 2, 2, 2, 106, 22, 20, 20, 22, - 48, 48, 22, 107, 2, 2, 2, 9, 0, 0, 0, 0, 0, 0, 108, 109, - 109, 109, 109, 0, 0, 0, 0, 0, 0, 105, 74, 2, 2, 2, 2, 2, - 2, 60, 61, 59, 25, 22, 110, 61, 2, 2, 2, 2, 106, 22, 23, 45, - 45, 101, 111, 0, 0, 0, 0, 0, 0, 2, 2, 61, 18, 48, 23, 112, - 101, 101, 101, 113, 114, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 30, - 2, 11, 46, 115, 115, 115, 11, 115, 115, 15, 115, 115, 115, 26, 0, 40, - 0, 0, 0, 116, 51, 11, 5, 0, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 0, 0, 6, 118, 119, 42, 42, 5, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 119, 119, 120, 119, 119, 119, 119, 119, 119, 119, - 119, 0, 0, 121, 0, 0, 0, 0, 0, 0, 7, 121, 0, 0, 0, 0, - 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 0, 122, 122, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 123, 0, 122, 122, 0, 0, 0, 0, - 0, 2, 53, 2, 107, 2, 10, 2, 2, 2, 65, 19, 16, 0, 0, 31, - 0, 2, 2, 0, 0, 0, 0, 0, 0, 29, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 124, 23, 23, 23, 23, 23, 23, 23, 125, 0, 0, 0, 0, - 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 0, 0, 0, 0, 0, - 52, 2, 2, 2, 22, 22, 126, 115, 0, 2, 2, 2, 127, 20, 59, 20, - 112, 101, 128, 0, 0, 0, 0, 0, 0, 11, 129, 2, 2, 2, 2, 2, - 2, 2, 130, 23, 22, 20, 48, 131, 132, 133, 0, 0, 0, 0, 0, 0, - 0, 2, 2, 52, 30, 2, 2, 2, 2, 2, 2, 2, 2, 10, 22, 59, - 98, 76, 134, 135, 136, 0, 0, 0, 0, 2, 137, 2, 2, 2, 2, 138, - 0, 30, 2, 42, 5, 0, 79, 15, 2, 139, 20, 53, 127, 139, 2, 2, - 140, 10, 9, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 141, 21, - 25, 0, 0, 142, 143, 0, 0, 0, 0, 2, 65, 45, 23, 80, 47, 144, - 0, 81, 81, 81, 81, 81, 81, 81, 81, 0, 0, 0, 0, 0, 0, 0, - 6, 119, 119, 119, 119, 120, 0, 0, 0, 2, 2, 2, 2, 2, 9, 2, - 2, 2, 9, 2, 30, 2, 2, 2, 2, 2, 30, 2, 2, 2, 30, 9, - 0, 127, 20, 27, 31, 0, 0, 145, 146, 2, 2, 30, 2, 30, 2, 2, - 2, 2, 2, 2, 0, 14, 37, 0, 147, 2, 2, 13, 37, 0, 30, 2, - 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 2, - 9, 2, 2, 11, 41, 0, 0, 0, 0, 2, 2, 2, 0, 27, 22, 22, - 30, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 27, 38, - 0, 2, 2, 2, 115, 115, 115, 115, 115, 148, 2, 9, 0, 0, 0, 0, - 0, 2, 14, 14, 0, 0, 0, 0, 0, 9, 2, 2, 9, 2, 2, 2, - 2, 30, 2, 9, 0, 30, 2, 0, 0, 149, 150, 151, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 22, 22, 20, 20, 20, 22, 22, 133, 0, 0, 0, - 0, 0, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 2, 2, 2, 2, - 2, 53, 52, 53, 0, 0, 0, 0, 153, 11, 74, 2, 2, 2, 2, 2, - 2, 18, 19, 21, 16, 24, 37, 0, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 11, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 127, 20, 22, 154, - 22, 21, 155, 156, 2, 2, 2, 2, 2, 0, 0, 65, 157, 0, 0, 0, - 0, 2, 13, 0, 0, 0, 0, 0, 0, 2, 65, 25, 20, 20, 20, 22, - 22, 107, 158, 0, 0, 56, 159, 31, 160, 30, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 23, 19, 22, 22, 161, 44, 0, 0, 0, - 49, 127, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 9, 2, 2, - 30, 2, 2, 2, 2, 2, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, - 10, 18, 19, 21, 22, 162, 31, 0, 0, 11, 11, 30, 2, 2, 2, 9, - 30, 9, 2, 30, 2, 2, 58, 17, 23, 16, 23, 47, 32, 33, 32, 34, - 0, 0, 0, 0, 35, 0, 0, 0, 2, 2, 23, 0, 11, 11, 11, 46, - 0, 11, 11, 46, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 30, 0, - 9, 2, 2, 2, 30, 45, 59, 20, 20, 31, 33, 32, 32, 25, 163, 29, - 164, 165, 37, 0, 0, 0, 0, 0, 0, 12, 26, 0, 0, 0, 0, 0, - 0, 2, 2, 65, 25, 20, 20, 20, 22, 23, 125, 15, 17, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 0, 0, 166, 167, 0, 0, 0, 0, 0, 0, - 0, 18, 19, 20, 20, 66, 98, 25, 160, 11, 168, 9, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 2, 2, 65, 25, 20, 20, 0, 48, 48, 11, - 169, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 20, - 0, 23, 19, 20, 20, 21, 16, 82, 169, 38, 0, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 10, 170, 25, 20, 22, 22, 168, 9, 0, 0, - 0, 2, 2, 2, 2, 2, 9, 43, 135, 23, 22, 20, 76, 21, 22, 0, - 0, 2, 2, 2, 9, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 18, - 19, 20, 21, 22, 104, 169, 37, 0, 0, 2, 2, 2, 9, 30, 0, 2, - 2, 2, 2, 30, 9, 2, 2, 2, 2, 23, 23, 18, 32, 33, 12, 171, - 165, 172, 173, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, - 2, 65, 25, 20, 20, 0, 22, 23, 29, 107, 0, 33, 0, 0, 0, 0, - 0, 52, 20, 22, 22, 22, 139, 2, 2, 2, 174, 140, 11, 15, 175, 61, - 176, 0, 0, 1, 147, 0, 0, 0, 0, 52, 20, 22, 16, 19, 20, 2, - 2, 2, 2, 158, 158, 158, 177, 177, 177, 177, 177, 177, 15, 178, 0, 30, - 0, 16, 20, 16, 16, 0, 0, 0, 0, 22, 20, 20, 31, 22, 22, 11, - 169, 0, 61, 61, 61, 61, 61, 61, 61, 66, 21, 82, 46, 0, 0, 0, - 0, 2, 2, 2, 9, 2, 30, 2, 2, 52, 22, 22, 31, 0, 38, 22, - 27, 11, 159, 179, 180, 0, 0, 0, 0, 2, 2, 2, 30, 9, 2, 2, - 2, 2, 2, 2, 2, 2, 23, 23, 47, 22, 35, 82, 68, 0, 0, 0, - 0, 2, 181, 66, 47, 0, 0, 0, 0, 11, 182, 2, 2, 2, 2, 2, - 2, 2, 2, 23, 22, 20, 31, 0, 48, 16, 143, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 156, 0, 0, 183, 183, 183, 183, 183, 183, 183, - 183, 184, 184, 184, 185, 186, 184, 183, 183, 187, 183, 183, 188, 189, 189, 189, - 189, 189, 189, 189, 0, 0, 0, 0, 0, 183, 183, 183, 183, 183, 190, 0, - 0, 2, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, 22, 22, 191, 192, - 193, 11, 11, 11, 46, 0, 0, 0, 0, 29, 74, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 65, 47, 0, 2, 2, 2, 2, 2, 9, 0, - 58, 194, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 0, 0, 0, 40, 115, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 2, 2, 2, 2, 2, 0, 58, 37, 0, 6, 119, 119, 119, 120, 0, - 0, 11, 11, 11, 49, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, - 2, 2, 2, 2, 2, 2, 2, 2, 46, 2, 2, 2, 2, 2, 2, 11, - 11, 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2, - 20, 2, 2, 44, 44, 44, 92, 0, 0, O, O, O, GB, B, B, O, - SB, O, SE, GB, O, O, WJ,FMPst,FMPst, O, CGJ, B, O, B,VMAbv,VMAbv, - VMAbv, O,VMAbv, B,CMBlw,CMBlw,CMBlw,VMAbv,VMPst, VAbv, VPst,CMBlw, B, VPst, VPre, VPst, - VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VPst, VPst, VPst, H, VPre, VPst,VMBlw, O, O, - VAbv, GB,VMAbv,VMPst,VMPst, O, B, VBlw, O, O, VPre, VPre, O, VPre, H, O, - VPst,FMAbv, O,CMBlw, O, VAbv, O, VAbv, H, O,VMBlw,VMAbv,CMAbv, GB, GB, O, - MBlw,CMAbv,CMAbv, VPst, VAbv,VMAbv, O, VPst, O, VPre, VPre,VMAbv, B, O, CS, CS, - VMPst, B, VAbv, VAbv, B, R, O, HVM, O, O,FMBlw, O,CMAbv, O,CMBlw, VAbv, - VBlw, B, SUB, SUB, SUB, O, SUB, SUB, O,FMBlw, O, B, VPst, VBlw, VPre,VMAbv, - VMBlw,VMPst, IS, VAbv, MPst, MPre, MBlw, MBlw, B, MBlw, MBlw, VPst,VMPst,VMPst, B, MBlw, - VPst, VPre, VAbv, VAbv,VMPst,VMPst,VMBlw, B,VMPst, VBlw, VPst, CGJ, CGJ, VPst,VMAbv,VMAbv, - FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv, IS,FMAbv, B,FMAbv, B, CGJ, WJ, CGJ, GB, - CMAbv,CMAbv, B, VAbv, SUB, FPst, FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv, VPre, B, - MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst, H, - B, O,SMAbv,SMAbv,SMAbv, VPst, IS, RK, RK, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw, - VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, WJ, WJ, O,FMPst, O, SB, SE, O, - H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv, - MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw, - B, VBlw,VMAbv, B, VPre, O,VMPst, IS, O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, - IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, B, N, N, O, HN, VPre, VBlw, VAbv, - IS,CMAbv, O, VPst, B, R, R,CMBlw, VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, - O,VMAbv,CMBlw, IS, R,FMAbv, B, CS, CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv, - VPst, MPst, R, MPst,CMBlw, B,FMBlw, CS, SUB, SUB, GB, FBlw, FBlw,CMAbv, IS, VBlw, - IS, R, MBlw, GB, VAbv, R,VMPst, G, G, J, J, J, SB, SE, J, HR, - G, G, HM, HM, HM, G, O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw, + 33, 3, 0, 0, 0, 4, 0, 80, 118, 128, 9, 10, 11, 192, 208, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 4, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 0, + 13, 14, 0, 0, 0, 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, 0, + 0, 22, 0, 0, 0, 0, 23, 0, 24, 0, 0, 0, 0, 0, 25, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 32, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 34, 35, 0, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 1, 1, 1, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, + 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, + 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 66, 67, 0, 68, 69, 0, 0, 0, 70, 0, 0, 0, 0, 0, + 0, 2, 71, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 12, 7, 7, 0, 13, 14, + 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8, 17, 0, 0, 18, 0, 0, 0, 0, + 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 9, 46, 47, 48, + 49, 50, 51, 52, 9, 53, 54, 55, 56, 57, 58, 10, 59, 60, 61, 62, + 0, 3, 63, 64, 65, 66, 0, 0, 0, 67, 68, 69, 70, 3, 71, 72, + 6, 73, 3, 3, 74, 75, 76, 0, 0, 77, 78, 79, 80, 3, 81, 82, + 0, 83, 3, 84, 85, 86, 0, 0, 0, 87, 88, 89, 90, 91, 92, 3, + 93, 3, 94, 95, 0, 0, 0, 96, 97, 0, 0, 0, 0, 0, 0, 0, + 98, 99, 100, 0, 101, 102, 0, 0, 103, 0, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 5, 3, 106, 0, 0, 0, + 0, 0, 107, 0, 0, 0, 0, 0, 0, 108, 109, 3, 110, 111, 112, 113, + 114, 3, 115, 116, 0, 117, 118, 119, 120, 3, 121, 122, 123, 3, 124, 125, + 126, 0, 0, 0, 0, 0, 0, 3, 127, 128, 0, 0, 0, 0, 0, 0, + 129, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 131, 132, 133, 0, + 0, 134, 135, 136, 0, 0, 0, 10, 137, 0, 0, 0, 0, 138, 139, 0, + 0, 3, 140, 8, 141, 142, 0, 0, 0, 0, 0, 0, 0, 3, 143, 0, + 0, 0, 5, 144, 5, 145, 146, 147, 0, 148, 149, 150, 151, 11, 152, 153, + 0, 154, 155, 156, 157, 11, 158, 159, 160, 161, 162, 163, 0, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 3, 176, 177, 178, 179, 180, 181, + 0, 0, 0, 0, 0, 3, 182, 183, 0, 3, 184, 185, 0, 3, 186, 187, + 188, 189, 190, 191, 0, 0, 0, 0, 0, 3, 192, 0, 0, 0, 0, 0, + 0, 193, 194, 195, 0, 0, 196, 197, 198, 199, 200, 201, 3, 202, 0, 0, + 0, 0, 0, 0, 203, 0, 0, 0, 0, 204, 205, 206, 207, 208, 209, 0, + 0, 210, 211, 212, 213, 214, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 215, 216, 217, 218, 0, 0, 0, 0, 0, 1, 219, 220, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 221, 222, 223, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, 0, 3, 224, 0, 0, 0, 0, 0, + 0, 0, 0, 225, 226, 0, 0, 0, 0, 3, 3, 227, 228, 229, 0, 0, + 230, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 231, + 232, 3, 3, 3, 233, 234, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, + 0, 3, 236, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 238, 3, + 239, 0, 0, 0, 0, 0, 0, 5, 240, 0, 0, 0, 0, 0, 0, 5, + 241, 3, 3, 242, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, + 243, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, + 4, 2, 2, 2, 2, 5, 2, 2, 2, 2, 6, 0, 2, 2, 2, 2, + 2, 5, 8, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, + 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, + 0, 2, 2, 2, 2, 5, 0, 0, 0, 2, 2, 2, 2, 2, 5, 0, + 0, 2, 8, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 74, 75, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 2, 0, 2, 2, 2, 2, 2, 2, 2, 17, 6, 13, 29, 33, 29, 45, + 0, 15, 11, 27, 7, 38, 7, 68, 0, 2, 2, 2, 2, 8, 2, 2, + 2, 10, 10, 10, 10, 80, 10, 10, 10, 2, 2, 2, 2, 2, 2, 2, + 5, 2, 2, 5, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, + 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 5, 2, + 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, + 0, 9, 41, 2, 2, 2, 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 23, 6, 6, 6, 6, 6, 6, 6, + 6, 0, 0, 0, 0, 0, 0, 48, 0, 44, 0, 0, 0, 0, 0, 49, + 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 103, 2, 2, 2, 2, 2, 36, 9, + 9, 9, 9, 0, 0, 0, 5, 31, 0, 2, 2, 2, 2, 50, 51, 0, + 0, 9, 24, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 15, 32, + 19, 17, 6, 18, 7, 15, 11, 67, 22, 31, 52, 25, 6, 2, 2, 2, + 2, 104, 14, 8, 2, 2, 2, 5, 8, 5, 5, 0, 2, 2, 0, 32, + 19, 0, 0, 0, 34, 0, 0, 2, 8, 2, 0, 0, 0, 0, 0, 5, + 105, 31, 24, 8, 2, 2, 5, 0, 8, 5, 2, 8, 5, 2, 0, 35, + 19, 17, 13, 0, 25, 38, 25, 68, 0, 53, 0, 0, 0, 8, 2, 5, + 5, 54, 39, 77, 0, 0, 0, 0, 0, 31, 24, 8, 2, 2, 2, 2, + 8, 5, 2, 8, 2, 2, 0, 32, 19, 17, 6, 18, 25, 7, 34, 67, + 0, 0, 0, 0, 0, 8, 54, 54, 46, 31, 14, 8, 2, 2, 2, 5, + 8, 5, 2, 8, 2, 2, 0, 32, 20, 0, 0, 25, 7, 0, 0, 2, + 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 26, 8, 2, 2, 5, 0, + 2, 5, 2, 2, 0, 8, 5, 5, 2, 0, 8, 5, 0, 2, 5, 0, + 2, 2, 2, 2, 2, 2, 0, 0, 11, 15, 27, 0, 12, 33, 12, 45, + 0, 0, 0, 0, 34, 0, 0, 0, 0, 24, 14, 55, 2, 2, 2, 5, + 2, 2, 2, 2, 2, 2, 0, 32, 7, 0, 0, 25, 13, 2, 5, 0, + 0, 36, 14, 8, 2, 2, 2, 5, 2, 2, 2, 8, 2, 2, 0, 32, + 20, 0, 0, 34, 27, 0, 0, 0, 5, 106, 78, 0, 0, 0, 0, 0, + 0, 9, 14, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 30, 40, + 11, 17, 6, 13, 12, 33, 12, 45, 107, 0, 0, 0, 34, 0, 0, 0, + 8, 31, 14, 8, 2, 2, 2, 2, 2, 2, 2, 2, 5, 0, 2, 2, + 2, 2, 8, 2, 2, 2, 2, 8, 0, 2, 2, 2, 5, 0, 108, 0, + 34, 11, 7, 13, 13, 19, 12, 12, 22, 0, 11, 0, 0, 0, 0, 0, + 0, 2, 0, 2, 5, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 2, 2, 69, 69, 109, 0, 0, 19, 56, 18, 21, 7, 7, 6, 6, + 26, 18, 9, 13, 9, 2, 2, 79, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 81, 0, 0, 0, 0, 110, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 23, 20, 21, 57, 7, 7, 111, 82, 112, 113, + 83, 2, 2, 2, 2, 2, 48, 0, 44, 2, 2, 2, 11, 6, 2, 2, + 114, 83, 84, 41, 23, 84, 14, 14, 2, 30, 7, 40, 2, 2, 2, 2, + 2, 2, 115, 58, 116, 14, 14, 117, 85, 2, 2, 2, 2, 2, 14, 20, + 0, 2, 21, 59, 0, 0, 0, 0, 8, 2, 21, 27, 0, 0, 0, 0, + 0, 2, 21, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 5, + 2, 5, 21, 0, 0, 0, 0, 0, 0, 2, 2, 4, 20, 7, 21, 6, + 12, 12, 12, 12, 24, 60, 118, 119, 120, 121, 122, 0, 0, 0, 0, 123, + 0, 5, 0, 0, 8, 0, 124, 4, 125, 39, 39, 126, 86, 2, 2, 2, + 2, 2, 2, 2, 2, 50, 5, 0, 0, 7, 59, 20, 7, 127, 10, 0, + 0, 70, 128, 70, 70, 129, 130, 0, 0, 2, 2, 2, 2, 2, 2, 2, + 0, 2, 2, 2, 2, 14, 0, 0, 0, 2, 2, 2, 30, 71, 20, 0, + 0, 2, 2, 131, 132, 42, 133, 10, 81, 134, 15, 20, 7, 21, 18, 59, + 12, 12, 58, 9, 9, 9, 87, 26, 53, 9, 88, 41, 2, 2, 2, 2, + 2, 2, 2, 89, 7, 6, 6, 7, 12, 12, 7, 61, 2, 2, 2, 5, + 0, 0, 0, 0, 0, 0, 135, 62, 62, 62, 62, 0, 0, 0, 0, 0, + 0, 88, 41, 2, 2, 2, 2, 2, 2, 79, 10, 21, 22, 7, 136, 10, + 2, 2, 2, 2, 89, 7, 11, 20, 20, 42, 137, 0, 0, 0, 0, 0, + 0, 2, 2, 10, 19, 12, 11, 90, 42, 42, 42, 138, 139, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 0, 8, 2, 9, 26, 16, 16, 16, 9, 16, + 16, 24, 16, 16, 16, 52, 0, 53, 0, 0, 0, 140, 78, 9, 44, 0, + 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 49, 142, + 3, 39, 39, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, + 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 76, 91, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 63, 63, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, + 8, 0, 0, 0, 0, 0, 0, 0, 143, 0, 63, 63, 0, 0, 0, 0, + 0, 2, 40, 2, 61, 2, 36, 2, 2, 2, 23, 17, 15, 0, 0, 13, + 0, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 144, 11, 11, 11, 11, + 11, 11, 11, 92, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 2, 0, 0, 0, 0, 0, 30, 2, 2, 2, 7, 7, 145, 16, + 0, 2, 2, 2, 47, 6, 21, 6, 90, 42, 146, 0, 0, 0, 0, 0, + 0, 9, 147, 2, 2, 2, 2, 2, 2, 2, 148, 11, 7, 6, 12, 149, + 150, 93, 0, 0, 0, 0, 0, 0, 0, 2, 2, 30, 8, 2, 2, 2, + 2, 2, 2, 2, 2, 36, 7, 21, 71, 58, 151, 94, 152, 0, 0, 0, + 0, 2, 153, 2, 2, 2, 2, 154, 0, 8, 2, 39, 44, 0, 85, 24, + 2, 73, 6, 40, 47, 73, 2, 2, 95, 36, 5, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 155, 18, 22, 0, 0, 156, 96, 0, 0, 0, + 0, 2, 23, 20, 11, 59, 27, 157, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 3, 3, 3, 3, 72, 0, 0, 0, 2, 5, 2, 8, 2, 2, 2, + 2, 2, 8, 2, 2, 2, 8, 5, 0, 47, 6, 25, 13, 0, 0, 158, + 159, 2, 2, 8, 2, 8, 2, 2, 2, 2, 2, 2, 0, 51, 35, 0, + 97, 2, 2, 50, 35, 0, 8, 2, 2, 0, 0, 0, 0, 8, 2, 2, + 5, 2, 2, 9, 54, 0, 0, 0, 0, 2, 2, 2, 0, 25, 7, 7, + 8, 2, 2, 2, 2, 2, 25, 38, 0, 2, 2, 2, 16, 16, 16, 16, + 16, 160, 2, 5, 0, 0, 0, 0, 0, 2, 51, 51, 0, 0, 0, 0, + 0, 5, 2, 2, 5, 2, 2, 2, 2, 8, 2, 5, 0, 8, 2, 0, + 0, 161, 162, 163, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 7, 6, + 6, 6, 7, 7, 93, 0, 0, 0, 0, 0, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 2, 2, 2, 2, 2, 40, 30, 40, 0, 0, 0, 0, + 164, 19, 17, 18, 15, 67, 35, 0, 0, 0, 13, 0, 0, 0, 0, 0, + 0, 9, 55, 2, 2, 2, 2, 2, 2, 2, 2, 2, 47, 6, 7, 165, + 7, 18, 166, 98, 2, 2, 2, 2, 2, 0, 0, 23, 167, 0, 0, 0, + 0, 2, 50, 0, 0, 0, 0, 0, 0, 2, 23, 22, 6, 6, 6, 7, + 7, 61, 64, 0, 0, 69, 99, 13, 100, 2, 2, 2, 2, 2, 2, 11, + 17, 7, 7, 168, 46, 0, 0, 0, 55, 47, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 5, 5, 2, 2, 8, 2, 2, 2, 2, 2, 2, 2, + 8, 2, 2, 2, 2, 2, 2, 2, 36, 19, 17, 18, 7, 169, 13, 0, + 0, 9, 9, 8, 2, 2, 2, 5, 8, 5, 2, 8, 2, 2, 56, 32, + 11, 15, 11, 27, 29, 33, 29, 45, 0, 0, 0, 0, 34, 0, 0, 0, + 2, 2, 11, 0, 9, 9, 9, 26, 0, 9, 9, 26, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 8, 0, 5, 2, 2, 2, 8, 20, 21, 6, + 6, 13, 33, 29, 29, 22, 170, 14, 171, 101, 35, 0, 0, 0, 0, 0, + 0, 31, 52, 0, 0, 0, 0, 0, 0, 2, 2, 23, 22, 6, 6, 6, + 7, 11, 92, 24, 32, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, + 172, 173, 0, 0, 0, 0, 0, 0, 0, 19, 17, 6, 6, 57, 71, 22, + 100, 9, 102, 5, 0, 0, 0, 0, 0, 22, 6, 6, 0, 12, 12, 9, + 65, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 6, + 0, 11, 17, 6, 6, 18, 15, 60, 65, 38, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 36, 174, 22, 6, 7, 7, 102, 5, 0, 0, + 0, 2, 2, 2, 2, 2, 5, 77, 94, 11, 7, 6, 58, 18, 7, 0, + 0, 2, 2, 2, 5, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 19, + 17, 6, 18, 7, 87, 65, 35, 0, 0, 2, 2, 2, 5, 8, 0, 2, + 2, 2, 2, 8, 5, 2, 2, 2, 2, 11, 11, 19, 29, 33, 31, 175, + 101, 176, 177, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, + 2, 23, 22, 6, 6, 0, 7, 11, 14, 61, 0, 33, 0, 0, 0, 0, + 0, 30, 6, 7, 7, 7, 73, 2, 2, 2, 178, 95, 9, 24, 179, 10, + 180, 0, 0, 48, 97, 0, 0, 0, 0, 30, 6, 7, 15, 17, 6, 2, + 2, 2, 2, 64, 64, 64, 43, 43, 43, 43, 43, 43, 24, 181, 0, 8, + 0, 15, 6, 15, 15, 0, 0, 0, 0, 7, 6, 6, 13, 7, 7, 9, + 65, 0, 10, 10, 10, 10, 10, 10, 10, 57, 18, 60, 26, 0, 0, 0, + 0, 2, 2, 2, 5, 2, 8, 2, 2, 30, 7, 7, 13, 0, 38, 7, + 25, 9, 99, 182, 183, 0, 0, 0, 0, 2, 2, 2, 8, 5, 2, 2, + 2, 2, 2, 2, 2, 2, 11, 11, 27, 7, 34, 60, 82, 0, 0, 0, + 0, 2, 184, 57, 27, 0, 0, 0, 0, 9, 185, 2, 2, 2, 2, 2, + 2, 2, 2, 11, 7, 6, 13, 0, 12, 15, 96, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 98, 0, 0, 66, 66, 66, 186, 187, 66, 1, + 1, 188, 1, 1, 189, 37, 37, 37, 37, 37, 37, 37, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 190, 0, 0, 2, 2, 2, 2, 2, 2, 2, + 7, 7, 7, 7, 7, 7, 191, 192, 193, 9, 9, 9, 26, 0, 0, 0, + 0, 14, 41, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 23, 27, + 0, 2, 2, 2, 2, 2, 5, 0, 56, 194, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 0, 0, 0, 53, 16, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 2, 2, 2, 2, 2, 0, 56, 35, 0, 49, 3, 3, 3, 72, 0, + 0, 9, 9, 9, 55, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 26, 2, 2, 2, 2, 2, 2, 9, + 9, 2, 2, 2, 2, 2, 2, 7, 7, 2, 2, 2, 2, 2, 2, 2, + 6, 2, 2, 46, 46, 46, 86, 0, 0, O, O, G, G, B, B, WJ, + WJ, CGJ, CGJ, B, O, VBlw, VBlw, VAbv, VAbv, O, B,VMAbv,VMAbv, SUB, SUB, VPst, + VPst, VPre, VPre, VBlw, O,VMPst,VMPst, VAbv, VPst,VMBlw,VMBlw, VPst, VBlw, VBlw, VAbv, VPst, + VPre, VPst, VAbv, VAbv, VBlw, VPre, VPst, B, VPst,VMAbv,VMPst, O, VAbv,VMAbv, O, VPst, + O, N, N, O, VPre, B, VAbv, O,VMAbv,CMBlw, B, VPre, O, O, VPst,CMBlw, + O, B,VMAbv, HM, HM, VAbv, O, GB, GB, VAbv, B,VMPst, B, FAbv, FAbv, FBlw, + FBlw, GB, O, VPre, H,CMAbv,CMAbv, B, VBlw, O, GB, O, WJ, B,CMBlw,CMBlw, + CMBlw,VMBlw, O, O,VMBlw,VMAbv,CMAbv,VMAbv, B, O,CMBlw, VBlw, VPre, VPre, VAbv, VBlw, + VPst, VPst,VMAbv, H, B,SMAbv,SMAbv, SB, SE, R, R,VMPst, H, J, J, VPst, + H, VAbv, H, O,FMBlw, FPst, FPst, VAbv, VPre, WJ, O, VBlw, B, O, SB, O, + SE,FMPst,FMPst, O, MBlw, CS,VMPst, B, SUB, O, SUB, SUB, O,VMPst, IS, MBlw, + B, VPst,VMPst, B,VMPst,CMAbv, B, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst, VBlw, FAbv,FMPst, + O, H,VMAbv, H, O, MPre, MAbv, VBlw,VMAbv, IS, O, O, IS,CMAbv, O,CMBlw, + VAbv, VPre,VMAbv, IS, R, H,CMBlw, O, CGJ, GB,VMAbv,FMAbv, O, O, CS, R, + O, HVM, O, O,CMAbv,FMBlw, O,VMAbv,VMBlw, VAbv, MPst, MPre, MBlw, MBlw, MBlw, MBlw, + VPst, VAbv,VMPst,VMPst,VMBlw,VMAbv,FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv, IS,FMAbv, B, + FMAbv, B, CGJ, WJ, CGJ, GB,CMAbv, VAbv, SUB,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, B, + MPre, MBlw, SUB, MAbv, SUB, Sk, VPst, O,SMAbv, VPst, IS, RK, RK,VMPre,VMPre,FMAbv, + CMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, O, H, MPst, VPst, VAbv,VMBlw, FPst, VPst, FAbv, + VMPst, B,CMAbv, VAbv, MBlw, MPst, MBlw, VBlw, MPst, MBlw, O, B, FAbv, FAbv, FPst, B, + VPre, O,VMPst,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, + B, O, HN, VPre, VBlw, VAbv, IS, VPst, B,VMAbv, H, VAbv,CMBlw,VMPst, O,VMAbv, + CMBlw,FMAbv, B, CS, CS,VMPst, VAbv,VMAbv, VPst, MPst, R, MPst,CMBlw, B,FMBlw, CS, + SUB, SUB, GB,CMAbv, IS, VBlw, IS, R, MBlw, GB, VAbv, R,VMPst, J, SB, SE, + J, HR, G, G, HM, G, O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw, }; static const uint16_t hb_use_u16[488]= { - 0, 0, 1, 2, 0, 3, 4, 5, 0, 6, 7, 0, 8, 0, 9, 10, - 11, 12, 10, 13, 14, 10, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 18, 26, 27, 21, 22, 28, 29, 30, 31, 32, 33, 34, 22, 35, - 36, 0, 18, 37, 38, 21, 22, 39, 24, 40, 18, 41, 42, 43, 44, 45, - 46, 47, 31, 0, 48, 49, 22, 50, 51, 52, 18, 0, 53, 49, 22, 54, - 51, 55, 18, 56, 57, 49, 10, 58, 59, 60, 61, 62, 10, 63, 64, 65, - 31, 66, 67, 68, 10, 69, 70, 10, 71, 72, 73, 74, 75, 76, 77, 0, - 10, 10, 78, 79, 80, 81, 82, 83, 84, 85, 10, 86, 10, 87, 10, 88, - 89, 90, 10, 91, 92, 93, 2, 0, 94, 0, 10, 95, 96, 10, 97, 0, - 10, 98, 99,100, 31, 10,101,102,103, 10,104,105, 10,106, 10,107, - 108,109, 2, 2,110, 10, 10,111,112, 2,113,114,115, 10,116, 10, - 117,118,119,120,121, 0, 0,122,123,124, 0,125,126,127,128, 0, - 129,130,131, 0, 0,132,133, 0,134, 0, 0, 10,135,136,137, 0, - 138, 10,139, 0, 10,140,141, 10, 10,142,143, 2,144,145,146, 10, - 147,148,149, 10, 10,150,151, 2,152, 98,153,154,155, 2, 10,156, - 10,157,158, 0,159,160,161, 2,162, 0, 0,163, 0,164, 0,165, - 165,166, 34,167,168,169, 10,170, 95, 0,171, 0, 10,172,173, 0, - 174, 2,175, 10,176, 0,177,172,178,179,180, 0, 0,181,182, 0, - 183, 10, 10,184,185,186,187,188,189, 10, 10,190,191, 0,192, 10, - 193,194,195, 10, 10,196, 10,197,198,105,199,102, 10, 34,200,201, - 202, 0,203,204, 95, 10, 10,205,206, 2,207, 21, 22,208,209,210, - 211,212,213, 10, 10,214,215,216,217, 0, 10,218,219,220,221, 0, - 199, 10, 10,222,223, 2,224,225,226,227, 10,228,229, 2,230,231, - 2, 10,140, 0, 10,232,233,103,234, 0,235,236,237,238, 10,239, - 240, 2,241, 10, 10,242,243, 0,244, 10, 10,245,246,247,248,249, - 250, 0, 22, 10,224,251, 8, 10, 71, 19, 10,252, 74,253,254, 10, - 10,255,256, 2,257, 10,258,259, 10,260,261, 49, 10,262,263,264, - 265,265,265,266,267,268,265,269, 10,270,271, 2, 10,272,273, 10, - 274, 2,275,276,277,277,278,279,280, 0, 10,176, 0,281,105, 71, - 95,282, 0,283, 71,284,285, 0,286, 0,287, 2,288, 2,289,105, - 290, 2,129,129,162,162,162,129, + 0, 0, 8, 8, 16, 16, 24, 24, 40, 40, 0, 24, 32, 0, 0, 120, + 136, 24, 56, 0, 168, 24, 240, 24, 272, 32, 280, 288, 0, 296, 304, 0, + 128, 0, 312, 320, 24, 328, 336, 24, 24, 344, 352, 360, 56, 144, 368, 64, + 48, 376, 152, 384, 56, 392, 400, 64, 48, 408, 416, 424, 72, 432, 440, 112, + 48, 448, 456, 0, 56, 464, 472, 64, 48, 480, 152, 488, 56, 496, 504, 512, + 520, 528, 536, 544, 72, 0, 552, 80, 48, 560, 160, 568, 576, 80, 48, 584, + 160, 592, 56, 600, 608, 80, 24, 616, 624, 632, 640, 648, 24, 656, 664, 672, + 72, 680, 688, 696, 24, 704, 88, 712, 720, 176, 728, 736, 744, 0, 752, 760, + 768, 776, 784, 792, 800, 808, 24, 816, 24, 824, 24, 832, 840, 848, 24, 856, + 864, 872, 880, 0, 24, 96, 888, 24, 896, 0, 24, 184, 904, 912, 72, 24, + 920, 192, 200, 24, 928, 104, 24, 936, 24, 944, 952, 960, 32, 32, 968, 24, + 24, 976, 984, 32, 992,1000,1008, 24,1016, 24,1024,1032,1040,1048,1056, 0, + 0,1064,1072,1080, 0,1088,1096,1104,1112, 0, 16,1120,1128, 0, 0,1136, + 1144, 0,1152, 0,1160,1168,1176, 0,1184, 24,1192, 0, 24, 208,1200, 24, + 24,1208,1216, 32,1224,1232,1240, 24,1248,1256,1264, 24, 24,1272,1280, 32, + 1288, 184,1296,1304,1312, 32, 24,1320, 24,1328,1336, 0,1344,1352,1360, 32, + 40, 0, 0,1368, 0,1376, 0, 216, 216,1384, 112,1392,1400,1408, 24,1416, + 96, 0,1424, 0, 24, 224,1432, 0,1440, 32,1448, 24, 232, 0,1456, 224, + 1464,1472,1480, 0, 0,1488,1496, 0,1504, 24, 24,1512,1520,1528,1536,1544, + 24,1552,1560, 0,1568, 24,1576,1584,1592, 24, 24,1600, 24,1608,1616, 104, + 248, 192, 24, 112,1624,1632,1640, 0,1648,1656, 96, 24, 24,1664,1672, 32, + 1680, 64, 48,1688,1696,1704,1712,1720,1728, 24, 24,1736,1744,1752,1760, 0, + 24,1768,1776,1784,1792, 0, 248, 24, 24,1800,1808, 32, 256,1816,1824,1832, + 24,1840,1848, 32,1856,1864, 32, 24, 208, 0, 24,1872,1880, 200,1888, 0, + 1896,1904,1912,1920, 24,1928,1936, 32,1944, 24, 24,1952,1960, 0,1968, 24, + 24,1976,1984,1992,2000,2008,2016, 0, 48, 24, 256,2024, 128, 24, 88, 144, + 24,2032, 176,2040,2048, 24, 24,2056,2064, 32,2072, 24,2080,2088, 24,2096, + 2104, 80, 24,2112,2120,2128, 8,2136,2144,2152, 8,2160, 24,2168,2176, 32, + 24,2184,2192, 24,2200, 32,2208,2216, 264, 264,2224,2232,2240, 0, 24, 232, + 0,2248, 104, 88, 96,2256, 0,2264, 88,2272,2280, 0,2288, 0,2296, 32, + 2304, 32,2312, 104,2320, 32, 40, 16, }; static inline uint8_t hb_use_b4 (const uint8_t* a, unsigned i) @@ -660,7 +661,8 @@ static inline uint8_t hb_use_b4 (const uint8_t* a, unsigned i) } static inline uint8_t hb_use_get_category (unsigned u) { - return u<921600 ? hb_use_u8[3273u+((hb_use_u8[945u+((hb_use_u16[((hb_use_u8[369u+((hb_use_u8[113u+((hb_use_b4(hb_use_u8,((((((((((u)>>1))>>3))>>1))>>3))>>4)))<<4)+((((((((((u)>>1))>>3))>>1))>>3))&15)])<<3)+((((((((u)>>1))>>3))>>1))&7)])<<1)+((((((u)>>1))>>3))&1)])<<3)+((((u)>>1))&7)])<<1)+((u)&1)] : O; + /* packtab: [2^4,2^4,2^3,2^1,2^3,2^1] */ + return u<921600u ? (uint8_t)(hb_use_u8[3273u+((hb_use_u8[945u+hb_use_u16[((hb_use_u8[369u+((hb_use_u8[113u+((hb_use_b4(hb_use_u8,((((((((((u)>>1))>>3))>>1))>>3))>>4)))<<4)+((((((((((u)>>1))>>3))>>1))>>3))&15)])<<3)+((((((((u)>>1))>>3))>>1))&7)])<<1)+((((((u)>>1))>>3))&1)]+((((u)>>1))&7)])<<1)+((u)&1)]) : O; } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-vowel-constraints.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-vowel-constraints.cc index bb586a68ce5..f834752c51a 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-vowel-constraints.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-shaper-vowel-constraints.cc @@ -2,7 +2,7 @@ /* * The following functions are generated by running: * - * ./gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt + * gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt * * on files with these headers: * diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-tag-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-tag-table.hh index 4933e661371..30e106554d6 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-tag-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-tag-table.hh @@ -2,7 +2,7 @@ /* * The following table is generated by running: * - * ./gen-tag-table.py languagetags language-subtag-registry + * gen-tag-table.py languagetags language-subtag-registry * * on files with these headers: * @@ -221,55 +221,201 @@ static const LangTag ot_languages2[] = { }; #ifndef HB_NO_LANGUAGE_LONG +static const hb_tag_t ot_languages3_blocked[] = { + HB_TAG('a','b','a',' '), /* Abé != Abaza */ + HB_TAG('a','f','k',' '), /* Nanubae != Afrikaans */ + HB_TAG('a','g','w',' '), /* Kahua != Agaw */ + HB_TAG('a','r','i',' '), /* Arikara != Aari */ + HB_TAG('a','r','k',' '), /* Arikapú != Rakhine */ + HB_TAG('b','a','g',' '), /* Tuki != Baghelkhandi */ + HB_TAG('b','a','u',' '), /* Bada (Nigeria) != Baulé */ + HB_TAG('b','b','r',' '), /* Girawa != Berber */ + HB_TAG('b','c','h',' '), /* Bariai != Bench */ + HB_TAG('b','i','l',' '), /* Bile != Bilen */ + HB_TAG('b','k','f',' '), /* Beeke != Blackfoot */ + HB_TAG('b','l','i',' '), /* Bolia != Baluchi */ + HB_TAG('b','l','t',' '), /* Tai Dam != Balti */ + HB_TAG('b','m','b',' '), /* Bembe != Bambara (Bamanankan) */ + HB_TAG('b','m','l',' '), /* Bomboli != Bamileke */ + HB_TAG('b','r','i',' '), /* Mokpwe != Braj Bhasha */ + HB_TAG('b','r','m',' '), /* Barambu != Burmese */ + HB_TAG('b','s','h',' '), /* Kati != Bashkir */ + HB_TAG('b','t','i',' '), /* Burate != Beti */ + HB_TAG('c','h','g',' '), /* Chagatai != Chaha Gurage */ + HB_TAG('c','h','h',' '), /* Chinook != Chattisgarhi */ + HB_TAG('c','r','r',' '), /* Carolina Algonquian != Carrier */ + HB_TAG('c','r','t',' '), /* Iyojwa'ja Chorote != Crimean Tatar */ + HB_TAG('c','s','l',' '), /* Chinese Sign Language != Church Slavonic */ + HB_TAG('d','h','v',' '), /* Dehu != Divehi (Dhivehi, Maldivian) (deprecated) */ + HB_TAG('d','n','k',' '), /* Dengka != Dinka */ + HB_TAG('d','r','i',' '), /* C'Lela != Dari */ + HB_TAG('d','u','n',' '), /* Dusun Deyah != Dungan */ + HB_TAG('d','z','n',' '), /* Dzando != Dzongkha */ + HB_TAG('e','c','r',' '), /* Eteocretan != Eastern Cree */ + HB_TAG('e','u','q',' '), /* Basque [collection] != Basque */ + HB_TAG('f','a','r',' '), /* Fataleka != Persian */ + HB_TAG('f','o','s',' '), /* Siraya != Faroese */ + HB_TAG('g','a','d',' '), /* Gaddang != Ga */ + HB_TAG('g','a','e',' '), /* Guarequena != Scottish Gaelic */ + HB_TAG('g','a','l',' '), /* Galolen != Galician */ + HB_TAG('g','a','r',' '), /* Galeya != Garshuni */ + HB_TAG('g','a','w',' '), /* Nobonob != Garhwali */ + HB_TAG('g','m','z',' '), /* Mgbolizhia != Gumuz */ + HB_TAG('g','r','o',' '), /* Groma != Garo */ + HB_TAG('g','u','a',' '), /* Shiki != Guarani */ + HB_TAG('h','a','l',' '), /* Halang != Halam (Falam Chin) */ + HB_TAG('h','b','n',' '), /* Heiban != Hammer-Banna */ + HB_TAG('i','r','i',' '), /* Rigwe != Irish */ + HB_TAG('i','s','m',' '), /* Masimasi != Inari Sami */ + HB_TAG('j','a','n',' '), /* Jandai != Japanese */ + HB_TAG('j','i','i',' '), /* Jiiddu != Yiddish */ + HB_TAG('j','u','d',' '), /* Worodougou != Ladino */ + HB_TAG('j','u','l',' '), /* Jirel != Jula */ + HB_TAG('k','a','c',' '), /* Kachin != Kachchi */ + HB_TAG('k','e','b',' '), /* Kélé != Kebena */ + HB_TAG('k','g','e',' '), /* Komering != Khutsuri Georgian */ + HB_TAG('k','h','n',' '), /* Khandesi != Khamti Shan (Microsoft fonts) */ + HB_TAG('k','h','s',' '), /* Kasua != Khanty-Shurishkar */ + HB_TAG('k','h','v',' '), /* Khvarshi != Khanty-Vakhi */ + HB_TAG('k','i','s',' '), /* Kis != Kisii */ + HB_TAG('k','k','n',' '), /* Kon Keu != Kokni */ + HB_TAG('k','l','m',' '), /* Migum != Kalmyk */ + HB_TAG('k','m','n',' '), /* Awtuw != Kumaoni */ + HB_TAG('k','m','o',' '), /* Kwoma != Komo */ + HB_TAG('k','m','s',' '), /* Kamasau != Komso */ + HB_TAG('k','n','r',' '), /* Kaningra != Kanuri */ + HB_TAG('k','o','d',' '), /* Kodi != Kodagu */ + HB_TAG('k','o','h',' '), /* Koyo != Korean Old Hangul */ + HB_TAG('k','o','p',' '), /* Waube != Komi-Permyak */ + HB_TAG('k','o','z',' '), /* Korak != Komi-Zyrian */ + HB_TAG('k','p','l',' '), /* Kpala != Kpelle */ + HB_TAG('k','r','k',' '), /* Kerek != Karakalpak */ + HB_TAG('k','r','m',' '), /* Krim (retired code) != Karaim */ + HB_TAG('k','r','n',' '), /* Sapo != Karen */ + HB_TAG('k','s','i',' '), /* Krisa != Khasi */ + HB_TAG('k','s','m',' '), /* Kumba != Kildin Sami */ + HB_TAG('k','u','i',' '), /* Kuikúro-Kalapálo != Kui */ + HB_TAG('k','u','l',' '), /* Kulere != Kulvi */ + HB_TAG('k','u','y',' '), /* Kuuku-Ya'u != Kuy */ + HB_TAG('k','y','k',' '), /* Kamayo != Koryak */ + HB_TAG('l','a','h',' '), /* Lahnda [macrolanguage] != Lahuli */ + HB_TAG('l','a','k',' '), /* Laka (Nigeria) (retired code) != Lak */ + HB_TAG('l','a','m',' '), /* Lamba != Lambani */ + HB_TAG('l','a','z',' '), /* Aribwatsa != Laz */ + HB_TAG('l','d','k',' '), /* Leelau != Ladakhi */ + HB_TAG('l','m','a',' '), /* East Limba != Low Mari */ + HB_TAG('l','m','b',' '), /* Merei != Limbu */ + HB_TAG('l','m','w',' '), /* Lake Miwok != Lomwe */ + HB_TAG('l','s','b',' '), /* Burundian Sign Language != Lower Sorbian */ + HB_TAG('l','t','h',' '), /* Thur != Lithuanian */ + HB_TAG('l','v','i',' '), /* Lavi != Latvian */ + HB_TAG('m','a','j',' '), /* Jalapa De Díaz Mazatec != Majang */ + HB_TAG('m','a','p',' '), /* Austronesian [collection] != Mapudungun */ + HB_TAG('m','a','w',' '), /* Mampruli != Marwari */ + HB_TAG('m','b','n',' '), /* Macaguán != Mbundu */ + HB_TAG('m','c','h',' '), /* Maquiritari != Manchu */ + HB_TAG('m','c','r',' '), /* Menya != Moose Cree */ + HB_TAG('m','d','e',' '), /* Maba (Chad) != Mende */ + HB_TAG('m','i','z',' '), /* Coatzospan Mixtec != Mizo */ + HB_TAG('m','k','r',' '), /* Malas != Makasar */ + HB_TAG('m','l','e',' '), /* Manambu != Male */ + HB_TAG('m','l','n',' '), /* Malango != Malinke */ + HB_TAG('m','l','r',' '), /* Vame != Malayalam Reformed */ + HB_TAG('m','n','d',' '), /* Mondé != Mandinka */ + HB_TAG('m','n','g',' '), /* Eastern Mnong != Mongolian */ + HB_TAG('m','n','x',' '), /* Manikion != Manx */ + HB_TAG('m','o','k',' '), /* Morori != Moksha */ + HB_TAG('m','o','r',' '), /* Moro != Moroccan */ + HB_TAG('m','t','h',' '), /* Munggui != Maithili */ + HB_TAG('m','t','s',' '), /* Yora != Maltese */ + HB_TAG('m','u','n',' '), /* Munda [collection] != Mundari */ + HB_TAG('n','a','s',' '), /* Naasioi != Naskapi */ + HB_TAG('n','c','r',' '), /* Ncane != N-Cree */ + HB_TAG('n','d','b',' '), /* Kenswei Nsei != Ndebele */ + HB_TAG('n','d','g',' '), /* Ndengereko != Ndonga */ + HB_TAG('n','g','r',' '), /* Engdewu != Nagari */ + HB_TAG('n','i','s',' '), /* Nimi != Nisi */ + HB_TAG('n','k','o',' '), /* Nkonya != N’Ko */ + HB_TAG('n','s','m',' '), /* Sumi Naga != Northern Sami */ + HB_TAG('n','t','o',' '), /* Ntomba != Esperanto */ + HB_TAG('o','r','o',' '), /* Orokolo != Oromo */ + HB_TAG('p','a','a',' '), /* Papuan [collection] != Palestinian Aramaic */ + HB_TAG('p','a','l',' '), /* Pahlavi != Pali */ + HB_TAG('p','a','s',' '), /* Papasena != Pashto */ + HB_TAG('p','i','l',' '), /* Yom != Filipino */ + HB_TAG('p','l','k',' '), /* Kohistani Shina != Polish */ + HB_TAG('r','m','s',' '), /* Romanian Sign Language != Romansh */ + HB_TAG('s','a','d',' '), /* Sandawe != Sadri */ + HB_TAG('s','a','y',' '), /* Saya != Sayisi */ + HB_TAG('s','g','o',' '), /* Songa (retired code) != Sango */ + HB_TAG('s','i','b',' '), /* Sebop != Sibe */ + HB_TAG('s','i','g',' '), /* Paasaal != Silte Gurage */ + HB_TAG('s','k','s',' '), /* Maia != Skolt Sami */ + HB_TAG('s','k','y',' '), /* Sikaiana != Slovak */ + HB_TAG('s','l','a',' '), /* Slavic [collection] != Slavey */ + HB_TAG('s','m','l',' '), /* Central Sama != Somali */ + HB_TAG('s','n','h',' '), /* Shinabo (retired code) != Sinhala (Sinhalese) */ + HB_TAG('s','o','g',' '), /* Sogdian != Sodo Gurage */ + HB_TAG('s','r','b',' '), /* Sora != Serbian */ + HB_TAG('s','r','k',' '), /* Serudung Murut != Saraiki */ + HB_TAG('s','s','l',' '), /* Western Sisaala != South Slavey */ + HB_TAG('s','s','m',' '), /* Semnam != Southern Sami */ + HB_TAG('s','u','r',' '), /* Mwaghavul != Suri */ + HB_TAG('s','v','e',' '), /* Serili != Swedish */ + HB_TAG('s','w','k',' '), /* Malawi Sena != Swahili */ + HB_TAG('t','a','j',' '), /* Eastern Tamang != Tajiki */ + HB_TAG('t','g','n',' '), /* Tandaganon != Tongan */ + HB_TAG('t','g','r',' '), /* Tareng != Tigre */ + HB_TAG('t','g','y',' '), /* Togoyo != Tigrinya */ + HB_TAG('t','k','m',' '), /* Takelma != Turkmen */ + HB_TAG('t','m','n',' '), /* Taman (Indonesia) != Temne */ + HB_TAG('t','n','a',' '), /* Tacana != Tswana */ + HB_TAG('t','n','e',' '), /* Tinoc Kallahan (retired code) != Tundra Enets */ + HB_TAG('t','n','g',' '), /* Tobanga != Tonga */ + HB_TAG('t','r','k',' '), /* Turkic [collection] != Turkish */ + HB_TAG('t','s','g',' '), /* Tausug != Tsonga */ + HB_TAG('t','u','a',' '), /* Wiarumus != Turoyo Aramaic */ + HB_TAG('t','u','l',' '), /* Tula != Tulu */ + HB_TAG('t','u','v',' '), /* Turkana != Tuvin */ + HB_TAG('v','i','t',' '), /* Viti != Vietnamese */ + HB_TAG('w','a','g',' '), /* Wa'ema != Wagdi */ + HB_TAG('x','b','d',' '), /* Bindal != Lü */ + HB_TAG('y','a','k',' '), /* Yakama != Sakha */ + HB_TAG('y','b','a',' '), /* Yala != Yoruba */ + HB_TAG('y','i','m',' '), /* Yimchungru Naga != Yi Modern */ + HB_TAG('z','n','d',' '), /* Zande [collection] != Zande */ +}; + static const LangTag ot_languages3[] = { {HB_TAG('a','a','e',' '), HB_TAG('S','Q','I',' ')}, /* Arbëreshë Albanian -> Albanian */ {HB_TAG('a','a','o',' '), HB_TAG('A','R','A',' ')}, /* Algerian Saharan Arabic -> Arabic */ -/*{HB_TAG('a','a','q',' '), HB_TAG('A','A','Q',' ')},*/ /* Eastern Abnaki -> Eastern Abenaki */ {HB_TAG('a','a','t',' '), HB_TAG('S','Q','I',' ')}, /* Arvanitika Albanian -> Albanian */ - {HB_TAG('a','b','a',' '), HB_TAG_NONE }, /* Abé != Abaza */ {HB_TAG('a','b','h',' '), HB_TAG('A','R','A',' ')}, /* Tajiki Arabic -> Arabic */ {HB_TAG('a','b','q',' '), HB_TAG('A','B','A',' ')}, /* Abaza */ {HB_TAG('a','b','s',' '), HB_TAG('C','P','P',' ')}, /* Ambonese Malay -> Creoles */ {HB_TAG('a','b','v',' '), HB_TAG('A','R','A',' ')}, /* Baharna Arabic -> Arabic */ - {HB_TAG('a','c','f',' '), HB_TAG('F','A','N',' ')}, /* Saint Lucian Creole French -> French Antillean */ - {HB_TAG('a','c','f',' '), HB_TAG('C','P','P',' ')}, /* Saint Lucian Creole French -> Creoles */ -/*{HB_TAG('a','c','h',' '), HB_TAG('A','C','H',' ')},*/ /* Acoli -> Acholi */ {HB_TAG('a','c','m',' '), HB_TAG('A','R','A',' ')}, /* Mesopotamian Arabic -> Arabic */ {HB_TAG('a','c','q',' '), HB_TAG('A','R','A',' ')}, /* Ta'izzi-Adeni Arabic -> Arabic */ - {HB_TAG('a','c','r',' '), HB_TAG('A','C','R',' ')}, /* Achi */ - {HB_TAG('a','c','r',' '), HB_TAG('M','Y','N',' ')}, /* Achi -> Mayan */ {HB_TAG('a','c','w',' '), HB_TAG('A','R','A',' ')}, /* Hijazi Arabic -> Arabic */ {HB_TAG('a','c','x',' '), HB_TAG('A','R','A',' ')}, /* Omani Arabic -> Arabic */ - {HB_TAG('a','c','y',' '), HB_TAG('A','C','Y',' ')}, /* Cypriot Arabic */ - {HB_TAG('a','c','y',' '), HB_TAG('A','R','A',' ')}, /* Cypriot Arabic -> Arabic */ {HB_TAG('a','d','a',' '), HB_TAG('D','N','G',' ')}, /* Adangme -> Dangme */ {HB_TAG('a','d','f',' '), HB_TAG('A','R','A',' ')}, /* Dhofari Arabic -> Arabic */ {HB_TAG('a','d','p',' '), HB_TAG('D','Z','N',' ')}, /* Adap (retired code) -> Dzongkha */ -/*{HB_TAG('a','d','y',' '), HB_TAG('A','D','Y',' ')},*/ /* Adyghe */ {HB_TAG('a','e','b',' '), HB_TAG('A','R','A',' ')}, /* Tunisian Arabic -> Arabic */ {HB_TAG('a','e','c',' '), HB_TAG('A','R','A',' ')}, /* Saidi Arabic -> Arabic */ {HB_TAG('a','f','b',' '), HB_TAG('A','R','A',' ')}, /* Gulf Arabic -> Arabic */ - {HB_TAG('a','f','k',' '), HB_TAG_NONE }, /* Nanubae != Afrikaans */ {HB_TAG('a','f','s',' '), HB_TAG('C','P','P',' ')}, /* Afro-Seminole Creole -> Creoles */ {HB_TAG('a','g','u',' '), HB_TAG('M','Y','N',' ')}, /* Aguacateco -> Mayan */ - {HB_TAG('a','g','w',' '), HB_TAG_NONE }, /* Kahua != Agaw */ {HB_TAG('a','h','g',' '), HB_TAG('A','G','W',' ')}, /* Qimant -> Agaw */ {HB_TAG('a','h','t',' '), HB_TAG('A','T','H',' ')}, /* Ahtena -> Athapaskan */ {HB_TAG('a','i','g',' '), HB_TAG('C','P','P',' ')}, /* Antigua and Barbuda Creole English -> Creoles */ - {HB_TAG('a','i','i',' '), HB_TAG('S','W','A',' ')}, /* Assyrian Neo-Aramaic -> Swadaya Aramaic */ - {HB_TAG('a','i','i',' '), HB_TAG('S','Y','R',' ')}, /* Assyrian Neo-Aramaic -> Syriac */ -/*{HB_TAG('a','i','o',' '), HB_TAG('A','I','O',' ')},*/ /* Aiton */ {HB_TAG('a','i','w',' '), HB_TAG('A','R','I',' ')}, /* Aari */ {HB_TAG('a','j','p',' '), HB_TAG('A','R','A',' ')}, /* South Levantine Arabic (retired code) -> Arabic */ {HB_TAG('a','j','t',' '), HB_TAG('A','R','A',' ')}, /* Judeo-Tunisian Arabic (retired code) -> Arabic */ - {HB_TAG('a','k','b',' '), HB_TAG('A','K','B',' ')}, /* Batak Angkola */ - {HB_TAG('a','k','b',' '), HB_TAG('B','T','K',' ')}, /* Batak Angkola -> Batak */ {HB_TAG('a','l','n',' '), HB_TAG('S','Q','I',' ')}, /* Gheg Albanian -> Albanian */ {HB_TAG('a','l','s',' '), HB_TAG('S','Q','I',' ')}, /* Tosk Albanian -> Albanian */ -/*{HB_TAG('a','l','t',' '), HB_TAG('A','L','T',' ')},*/ /* Southern Altai -> Altai */ {HB_TAG('a','m','f',' '), HB_TAG('H','B','N',' ')}, /* Hamer-Banna -> Hammer-Banna */ {HB_TAG('a','m','w',' '), HB_TAG('S','Y','R',' ')}, /* Western Neo-Aramaic -> Syriac */ -/*{HB_TAG('a','n','g',' '), HB_TAG('A','N','G',' ')},*/ /* Old English (ca. 450-1100) -> Anglo-Saxon */ {HB_TAG('a','o','a',' '), HB_TAG('C','P','P',' ')}, /* Angolar -> Creoles */ {HB_TAG('a','p','a',' '), HB_TAG('A','T','H',' ')}, /* Apache [collection] -> Athapaskan */ {HB_TAG('a','p','c',' '), HB_TAG('A','R','A',' ')}, /* Levantine Arabic -> Arabic */ @@ -280,61 +426,39 @@ static const LangTag ot_languages3[] = { {HB_TAG('a','p','m',' '), HB_TAG('A','T','H',' ')}, /* Mescalero-Chiricahua Apache -> Athapaskan */ {HB_TAG('a','p','w',' '), HB_TAG('A','T','H',' ')}, /* Western Apache -> Athapaskan */ {HB_TAG('a','r','b',' '), HB_TAG('A','R','A',' ')}, /* Standard Arabic -> Arabic */ - {HB_TAG('a','r','i',' '), HB_TAG_NONE }, /* Arikara != Aari */ - {HB_TAG('a','r','k',' '), HB_TAG_NONE }, /* Arikapú != Rakhine */ {HB_TAG('a','r','n',' '), HB_TAG('M','A','P',' ')}, /* Mapudungun */ {HB_TAG('a','r','q',' '), HB_TAG('A','R','A',' ')}, /* Algerian Arabic -> Arabic */ {HB_TAG('a','r','s',' '), HB_TAG('A','R','A',' ')}, /* Najdi Arabic -> Arabic */ - {HB_TAG('a','r','y',' '), HB_TAG('M','O','R',' ')}, /* Moroccan Arabic -> Moroccan */ - {HB_TAG('a','r','y',' '), HB_TAG('A','R','A',' ')}, /* Moroccan Arabic -> Arabic */ {HB_TAG('a','r','z',' '), HB_TAG('A','R','A',' ')}, /* Egyptian Arabic -> Arabic */ -/*{HB_TAG('a','s','t',' '), HB_TAG('A','S','T',' ')},*/ /* Asturian */ -/*{HB_TAG('a','t','h',' '), HB_TAG('A','T','H',' ')},*/ /* Athapascan [collection] -> Athapaskan */ {HB_TAG('a','t','j',' '), HB_TAG('R','C','R',' ')}, /* Atikamekw -> R-Cree */ -/*{HB_TAG('a','t','s',' '), HB_TAG('A','T','S',' ')},*/ /* Gros Ventre (Atsina) */ {HB_TAG('a','t','v',' '), HB_TAG('A','L','T',' ')}, /* Northern Altai -> Altai */ {HB_TAG('a','u','j',' '), HB_TAG('B','B','R',' ')}, /* Awjilah -> Berber */ {HB_TAG('a','u','z',' '), HB_TAG('A','R','A',' ')}, /* Uzbeki Arabic -> Arabic */ {HB_TAG('a','v','l',' '), HB_TAG('A','R','A',' ')}, /* Eastern Egyptian Bedawi Arabic -> Arabic */ -/*{HB_TAG('a','v','n',' '), HB_TAG('A','V','N',' ')},*/ /* Avatime */ -/*{HB_TAG('a','w','a',' '), HB_TAG('A','W','A',' ')},*/ /* Awadhi */ {HB_TAG('a','y','c',' '), HB_TAG('A','Y','M',' ')}, /* Southern Aymara -> Aymara */ {HB_TAG('a','y','h',' '), HB_TAG('A','R','A',' ')}, /* Hadrami Arabic -> Arabic */ {HB_TAG('a','y','l',' '), HB_TAG('A','R','A',' ')}, /* Libyan Arabic -> Arabic */ {HB_TAG('a','y','n',' '), HB_TAG('A','R','A',' ')}, /* Sanaani Arabic -> Arabic */ {HB_TAG('a','y','p',' '), HB_TAG('A','R','A',' ')}, /* North Mesopotamian Arabic -> Arabic */ {HB_TAG('a','y','r',' '), HB_TAG('A','Y','M',' ')}, /* Central Aymara -> Aymara */ - {HB_TAG('a','z','b',' '), HB_TAG('A','Z','B',' ')}, /* South Azerbaijani -> Torki */ - {HB_TAG('a','z','b',' '), HB_TAG('A','Z','E',' ')}, /* South Azerbaijani -> Azerbaijani */ {HB_TAG('a','z','d',' '), HB_TAG('N','A','H',' ')}, /* Eastern Durango Nahuatl -> Nahuatl */ {HB_TAG('a','z','j',' '), HB_TAG('A','Z','E',' ')}, /* North Azerbaijani -> Azerbaijani */ {HB_TAG('a','z','n',' '), HB_TAG('N','A','H',' ')}, /* Western Durango Nahuatl -> Nahuatl */ {HB_TAG('a','z','z',' '), HB_TAG('N','A','H',' ')}, /* Highland Puebla Nahuatl -> Nahuatl */ {HB_TAG('b','a','d',' '), HB_TAG('B','A','D','0')}, /* Banda [collection] */ - {HB_TAG('b','a','g',' '), HB_TAG_NONE }, /* Tuki != Baghelkhandi */ {HB_TAG('b','a','h',' '), HB_TAG('C','P','P',' ')}, /* Bahamas Creole English -> Creoles */ {HB_TAG('b','a','i',' '), HB_TAG('B','M','L',' ')}, /* Bamileke [collection] */ {HB_TAG('b','a','l',' '), HB_TAG('B','L','I',' ')}, /* Baluchi [macrolanguage] */ -/*{HB_TAG('b','a','n',' '), HB_TAG('B','A','N',' ')},*/ /* Balinese */ -/*{HB_TAG('b','a','r',' '), HB_TAG('B','A','R',' ')},*/ /* Bavarian */ - {HB_TAG('b','a','u',' '), HB_TAG_NONE }, /* Bada (Nigeria) != Baulé */ - {HB_TAG('b','b','c',' '), HB_TAG('B','B','C',' ')}, /* Batak Toba */ - {HB_TAG('b','b','c',' '), HB_TAG('B','T','K',' ')}, /* Batak Toba -> Batak */ {HB_TAG('b','b','j',' '), HB_TAG('B','M','L',' ')}, /* Ghomálá' -> Bamileke */ {HB_TAG('b','b','p',' '), HB_TAG('B','A','D','0')}, /* West Central Banda -> Banda */ - {HB_TAG('b','b','r',' '), HB_TAG_NONE }, /* Girawa != Berber */ {HB_TAG('b','b','z',' '), HB_TAG('A','R','A',' ')}, /* Babalia Creole Arabic (retired code) -> Arabic */ {HB_TAG('b','c','c',' '), HB_TAG('B','L','I',' ')}, /* Southern Balochi -> Baluchi */ - {HB_TAG('b','c','h',' '), HB_TAG_NONE }, /* Bariai != Bench */ {HB_TAG('b','c','i',' '), HB_TAG('B','A','U',' ')}, /* Baoulé -> Baulé */ {HB_TAG('b','c','l',' '), HB_TAG('B','I','K',' ')}, /* Central Bikol -> Bikol */ {HB_TAG('b','c','q',' '), HB_TAG('B','C','H',' ')}, /* Bench */ {HB_TAG('b','c','r',' '), HB_TAG('A','T','H',' ')}, /* Babine -> Athapaskan */ -/*{HB_TAG('b','d','c',' '), HB_TAG('B','D','C',' ')},*/ /* Emberá-Baudó */ -/*{HB_TAG('b','d','y',' '), HB_TAG('B','D','Y',' ')},*/ /* Bandjalang */ {HB_TAG('b','e','a',' '), HB_TAG('A','T','H',' ')}, /* Beaver -> Athapaskan */ {HB_TAG('b','e','b',' '), HB_TAG('B','T','I',' ')}, /* Bebele -> Beti */ -/*{HB_TAG('b','e','m',' '), HB_TAG('B','E','M',' ')},*/ /* Bemba (Zambia) */ {HB_TAG('b','e','r',' '), HB_TAG('B','B','R',' ')}, /* Berber [collection] */ {HB_TAG('b','e','w',' '), HB_TAG('C','P','P',' ')}, /* Betawi -> Creoles */ {HB_TAG('b','f','l',' '), HB_TAG('B','A','D','0')}, /* Banda-Ndélé -> Banda */ @@ -342,70 +466,35 @@ static const LangTag ot_languages3[] = { {HB_TAG('b','f','t',' '), HB_TAG('B','L','T',' ')}, /* Balti */ {HB_TAG('b','f','u',' '), HB_TAG('L','A','H',' ')}, /* Gahri -> Lahuli */ {HB_TAG('b','f','y',' '), HB_TAG('B','A','G',' ')}, /* Bagheli -> Baghelkhandi */ -/*{HB_TAG('b','g','c',' '), HB_TAG('B','G','C',' ')},*/ /* Haryanvi */ {HB_TAG('b','g','n',' '), HB_TAG('B','L','I',' ')}, /* Western Balochi -> Baluchi */ {HB_TAG('b','g','p',' '), HB_TAG('B','L','I',' ')}, /* Eastern Balochi -> Baluchi */ - {HB_TAG('b','g','q',' '), HB_TAG('B','G','Q',' ')}, /* Bagri */ - {HB_TAG('b','g','q',' '), HB_TAG('R','A','J',' ')}, /* Bagri -> Rajasthani */ {HB_TAG('b','g','r',' '), HB_TAG('Q','I','N',' ')}, /* Bawm Chin -> Chin */ {HB_TAG('b','h','b',' '), HB_TAG('B','H','I',' ')}, /* Bhili */ -/*{HB_TAG('b','h','i',' '), HB_TAG('B','H','I',' ')},*/ /* Bhilali -> Bhili */ {HB_TAG('b','h','k',' '), HB_TAG('B','I','K',' ')}, /* Albay Bicolano (retired code) -> Bikol */ -/*{HB_TAG('b','h','o',' '), HB_TAG('B','H','O',' ')},*/ /* Bhojpuri */ {HB_TAG('b','h','r',' '), HB_TAG('M','L','G',' ')}, /* Bara Malagasy -> Malagasy */ -/*{HB_TAG('b','i','k',' '), HB_TAG('B','I','K',' ')},*/ /* Bikol [macrolanguage] */ - {HB_TAG('b','i','l',' '), HB_TAG_NONE }, /* Bile != Bilen */ {HB_TAG('b','i','n',' '), HB_TAG('E','D','O',' ')}, /* Edo */ {HB_TAG('b','i','u',' '), HB_TAG('Q','I','N',' ')}, /* Biete -> Chin */ -/*{HB_TAG('b','j','j',' '), HB_TAG('B','J','J',' ')},*/ /* Kanauji */ {HB_TAG('b','j','n',' '), HB_TAG('M','L','Y',' ')}, /* Banjar -> Malay */ {HB_TAG('b','j','o',' '), HB_TAG('B','A','D','0')}, /* Mid-Southern Banda -> Banda */ {HB_TAG('b','j','q',' '), HB_TAG('M','L','G',' ')}, /* Southern Betsimisaraka Malagasy (retired code) -> Malagasy */ {HB_TAG('b','j','s',' '), HB_TAG('C','P','P',' ')}, /* Bajan -> Creoles */ {HB_TAG('b','j','t',' '), HB_TAG('B','L','N',' ')}, /* Balanta-Ganja -> Balante */ - {HB_TAG('b','k','f',' '), HB_TAG_NONE }, /* Beeke != Blackfoot */ {HB_TAG('b','k','o',' '), HB_TAG('B','M','L',' ')}, /* Kwa' -> Bamileke */ {HB_TAG('b','l','a',' '), HB_TAG('B','K','F',' ')}, /* Siksika -> Blackfoot */ {HB_TAG('b','l','e',' '), HB_TAG('B','L','N',' ')}, /* Balanta-Kentohe -> Balante */ {HB_TAG('b','l','g',' '), HB_TAG('I','B','A',' ')}, /* Balau (retired code) -> Iban */ - {HB_TAG('b','l','i',' '), HB_TAG_NONE }, /* Bolia != Baluchi */ - {HB_TAG('b','l','k',' '), HB_TAG('B','L','K',' ')}, /* Pa’o Karen */ - {HB_TAG('b','l','k',' '), HB_TAG('K','R','N',' ')}, /* Pa'o Karen -> Karen */ {HB_TAG('b','l','n',' '), HB_TAG('B','I','K',' ')}, /* Southern Catanduanes Bikol -> Bikol */ - {HB_TAG('b','l','t',' '), HB_TAG_NONE }, /* Tai Dam != Balti */ - {HB_TAG('b','m','b',' '), HB_TAG_NONE }, /* Bembe != Bambara (Bamanankan) */ - {HB_TAG('b','m','l',' '), HB_TAG_NONE }, /* Bomboli != Bamileke */ {HB_TAG('b','m','m',' '), HB_TAG('M','L','G',' ')}, /* Northern Betsimisaraka Malagasy -> Malagasy */ {HB_TAG('b','p','d',' '), HB_TAG('B','A','D','0')}, /* Banda-Banda -> Banda */ {HB_TAG('b','p','l',' '), HB_TAG('C','P','P',' ')}, /* Broome Pearling Lugger Pidgin -> Creoles */ {HB_TAG('b','p','q',' '), HB_TAG('C','P','P',' ')}, /* Banda Malay -> Creoles */ -/*{HB_TAG('b','p','y',' '), HB_TAG('B','P','Y',' ')},*/ /* Bishnupriya -> Bishnupriya Manipuri */ {HB_TAG('b','q','i',' '), HB_TAG('L','R','C',' ')}, /* Bakhtiari -> Luri */ {HB_TAG('b','q','k',' '), HB_TAG('B','A','D','0')}, /* Banda-Mbrès -> Banda */ {HB_TAG('b','r','a',' '), HB_TAG('B','R','I',' ')}, /* Braj -> Braj Bhasha */ {HB_TAG('b','r','c',' '), HB_TAG('C','P','P',' ')}, /* Berbice Creole Dutch -> Creoles */ -/*{HB_TAG('b','r','h',' '), HB_TAG('B','R','H',' ')},*/ /* Brahui */ - {HB_TAG('b','r','i',' '), HB_TAG_NONE }, /* Mokpwe != Braj Bhasha */ - {HB_TAG('b','r','m',' '), HB_TAG_NONE }, /* Barambu != Burmese */ -/*{HB_TAG('b','r','x',' '), HB_TAG('B','R','X',' ')},*/ /* Bodo (India) */ - {HB_TAG('b','s','h',' '), HB_TAG_NONE }, /* Kati != Bashkir */ -/*{HB_TAG('b','s','k',' '), HB_TAG('B','S','K',' ')},*/ /* Burushaski */ {HB_TAG('b','t','b',' '), HB_TAG('B','T','I',' ')}, /* Beti (Cameroon) (retired code) */ - {HB_TAG('b','t','d',' '), HB_TAG('B','T','D',' ')}, /* Batak Dairi (Pakpak) */ - {HB_TAG('b','t','d',' '), HB_TAG('B','T','K',' ')}, /* Batak Dairi -> Batak */ - {HB_TAG('b','t','i',' '), HB_TAG_NONE }, /* Burate != Beti */ {HB_TAG('b','t','j',' '), HB_TAG('M','L','Y',' ')}, /* Bacanese Malay -> Malay */ -/*{HB_TAG('b','t','k',' '), HB_TAG('B','T','K',' ')},*/ /* Batak [collection] */ - {HB_TAG('b','t','m',' '), HB_TAG('B','T','M',' ')}, /* Batak Mandailing */ - {HB_TAG('b','t','m',' '), HB_TAG('B','T','K',' ')}, /* Batak Mandailing -> Batak */ {HB_TAG('b','t','o',' '), HB_TAG('B','I','K',' ')}, /* Rinconada Bikol -> Bikol */ - {HB_TAG('b','t','s',' '), HB_TAG('B','T','S',' ')}, /* Batak Simalungun */ - {HB_TAG('b','t','s',' '), HB_TAG('B','T','K',' ')}, /* Batak Simalungun -> Batak */ - {HB_TAG('b','t','x',' '), HB_TAG('B','T','X',' ')}, /* Batak Karo */ - {HB_TAG('b','t','x',' '), HB_TAG('B','T','K',' ')}, /* Batak Karo -> Batak */ - {HB_TAG('b','t','z',' '), HB_TAG('B','T','Z',' ')}, /* Batak Alas-Kluet */ - {HB_TAG('b','t','z',' '), HB_TAG('B','T','K',' ')}, /* Batak Alas-Kluet -> Batak */ -/*{HB_TAG('b','u','g',' '), HB_TAG('B','U','G',' ')},*/ /* Buginese -> Bugis */ {HB_TAG('b','u','m',' '), HB_TAG('B','T','I',' ')}, /* Bulu (Cameroon) -> Beti */ {HB_TAG('b','v','e',' '), HB_TAG('M','L','Y',' ')}, /* Berau Malay -> Malay */ {HB_TAG('b','v','u',' '), HB_TAG('M','L','Y',' ')}, /* Bukit Malay -> Malay */ @@ -415,52 +504,26 @@ static const LangTag ot_languages3[] = { {HB_TAG('b','x','p',' '), HB_TAG('B','T','I',' ')}, /* Bebil -> Beti */ {HB_TAG('b','x','r',' '), HB_TAG('R','B','U',' ')}, /* Russia Buriat -> Russian Buriat */ {HB_TAG('b','y','n',' '), HB_TAG('B','I','L',' ')}, /* Bilin -> Bilen */ - {HB_TAG('b','y','v',' '), HB_TAG('B','Y','V',' ')}, /* Medumba */ - {HB_TAG('b','y','v',' '), HB_TAG('B','M','L',' ')}, /* Medumba -> Bamileke */ {HB_TAG('b','z','c',' '), HB_TAG('M','L','G',' ')}, /* Southern Betsimisaraka Malagasy -> Malagasy */ {HB_TAG('b','z','j',' '), HB_TAG('C','P','P',' ')}, /* Belize Kriol English -> Creoles */ {HB_TAG('b','z','k',' '), HB_TAG('C','P','P',' ')}, /* Nicaragua Creole English -> Creoles */ {HB_TAG('c','a','a',' '), HB_TAG('M','Y','N',' ')}, /* Chortí -> Mayan */ {HB_TAG('c','a','c',' '), HB_TAG('M','Y','N',' ')}, /* Chuj -> Mayan */ - {HB_TAG('c','a','f',' '), HB_TAG('C','R','R',' ')}, /* Southern Carrier -> Carrier */ - {HB_TAG('c','a','f',' '), HB_TAG('A','T','H',' ')}, /* Southern Carrier -> Athapaskan */ - {HB_TAG('c','a','k',' '), HB_TAG('C','A','K',' ')}, /* Kaqchikel */ - {HB_TAG('c','a','k',' '), HB_TAG('M','Y','N',' ')}, /* Kaqchikel -> Mayan */ -/*{HB_TAG('c','a','y',' '), HB_TAG('C','A','Y',' ')},*/ /* Cayuga */ -/*{HB_TAG('c','b','g',' '), HB_TAG('C','B','G',' ')},*/ /* Chimila */ - {HB_TAG('c','b','k',' '), HB_TAG('C','B','K',' ')}, /* Chavacano -> Zamboanga Chavacano */ - {HB_TAG('c','b','k',' '), HB_TAG('C','P','P',' ')}, /* Chavacano -> Creoles */ {HB_TAG('c','b','l',' '), HB_TAG('Q','I','N',' ')}, /* Bualkhaw Chin -> Chin */ {HB_TAG('c','c','l',' '), HB_TAG('C','P','P',' ')}, /* Cutchi-Swahili -> Creoles */ {HB_TAG('c','c','m',' '), HB_TAG('C','P','P',' ')}, /* Malaccan Creole Malay -> Creoles */ {HB_TAG('c','c','o',' '), HB_TAG('C','C','H','N')}, /* Comaltepec Chinantec -> Chinantec */ {HB_TAG('c','c','q',' '), HB_TAG('A','R','K',' ')}, /* Chaungtha (retired code) -> Rakhine */ {HB_TAG('c','d','o',' '), HB_TAG('Z','H','S',' ')}, /* Min Dong Chinese -> Chinese, Simplified */ -/*{HB_TAG('c','e','b',' '), HB_TAG('C','E','B',' ')},*/ /* Cebuano */ {HB_TAG('c','e','k',' '), HB_TAG('Q','I','N',' ')}, /* Eastern Khumi Chin -> Chin */ {HB_TAG('c','e','y',' '), HB_TAG('Q','I','N',' ')}, /* Ekai Chin -> Chin */ - {HB_TAG('c','f','m',' '), HB_TAG('H','A','L',' ')}, /* Halam (Falam Chin) */ - {HB_TAG('c','f','m',' '), HB_TAG('Q','I','N',' ')}, /* Falam Chin -> Chin */ -/*{HB_TAG('c','g','g',' '), HB_TAG('C','G','G',' ')},*/ /* Chiga */ {HB_TAG('c','h','f',' '), HB_TAG('M','Y','N',' ')}, /* Tabasco Chontal -> Mayan */ - {HB_TAG('c','h','g',' '), HB_TAG_NONE }, /* Chagatai != Chaha Gurage */ - {HB_TAG('c','h','h',' '), HB_TAG_NONE }, /* Chinook != Chattisgarhi */ {HB_TAG('c','h','j',' '), HB_TAG('C','C','H','N')}, /* Ojitlán Chinantec -> Chinantec */ {HB_TAG('c','h','k',' '), HB_TAG('C','H','K','0')}, /* Chuukese */ - {HB_TAG('c','h','m',' '), HB_TAG('H','M','A',' ')}, /* Mari (Russia) [macrolanguage] -> High Mari */ - {HB_TAG('c','h','m',' '), HB_TAG('L','M','A',' ')}, /* Mari (Russia) [macrolanguage] -> Low Mari */ {HB_TAG('c','h','n',' '), HB_TAG('C','P','P',' ')}, /* Chinook jargon -> Creoles */ -/*{HB_TAG('c','h','o',' '), HB_TAG('C','H','O',' ')},*/ /* Choctaw */ - {HB_TAG('c','h','p',' '), HB_TAG('C','H','P',' ')}, /* Chipewyan */ - {HB_TAG('c','h','p',' '), HB_TAG('S','A','Y',' ')}, /* Chipewyan -> Sayisi */ - {HB_TAG('c','h','p',' '), HB_TAG('A','T','H',' ')}, /* Chipewyan -> Athapaskan */ {HB_TAG('c','h','q',' '), HB_TAG('C','C','H','N')}, /* Quiotepec Chinantec -> Chinantec */ -/*{HB_TAG('c','h','r',' '), HB_TAG('C','H','R',' ')},*/ /* Cherokee */ -/*{HB_TAG('c','h','y',' '), HB_TAG('C','H','Y',' ')},*/ /* Cheyenne */ {HB_TAG('c','h','z',' '), HB_TAG('C','C','H','N')}, /* Ozumacín Chinantec -> Chinantec */ {HB_TAG('c','i','w',' '), HB_TAG('O','J','B',' ')}, /* Chippewa -> Ojibway */ -/*{HB_TAG('c','j','a',' '), HB_TAG('C','J','A',' ')},*/ /* Western Cham */ -/*{HB_TAG('c','j','m',' '), HB_TAG('C','J','M',' ')},*/ /* Eastern Cham */ {HB_TAG('c','j','y',' '), HB_TAG('Z','H','S',' ')}, /* Jinyu Chinese -> Chinese, Simplified */ {HB_TAG('c','k','a',' '), HB_TAG('Q','I','N',' ')}, /* Khumi Awa Chin (retired code) -> Chin */ {HB_TAG('c','k','b',' '), HB_TAG('K','U','R',' ')}, /* Central Kurdish -> Kurdish */ @@ -474,7 +537,6 @@ static const LangTag ot_languages3[] = { {HB_TAG('c','l','j',' '), HB_TAG('Q','I','N',' ')}, /* Laitu Chin -> Chin */ {HB_TAG('c','l','s',' '), HB_TAG('S','A','N',' ')}, /* Classical Sanskrit -> Sanskrit */ {HB_TAG('c','l','t',' '), HB_TAG('Q','I','N',' ')}, /* Lautu Chin -> Chin */ -/*{HB_TAG('c','m','i',' '), HB_TAG('C','M','I',' ')},*/ /* Emberá-Chamí */ {HB_TAG('c','m','n',' '), HB_TAG('Z','H','S',' ')}, /* Mandarin Chinese -> Chinese, Simplified */ {HB_TAG('c','m','r',' '), HB_TAG('Q','I','N',' ')}, /* Mro-Khimi Chin -> Chin */ {HB_TAG('c','n','b',' '), HB_TAG('Q','I','N',' ')}, /* Chinbon Chin -> Chin */ @@ -488,120 +550,63 @@ static const LangTag ot_languages3[] = { {HB_TAG('c','n','w',' '), HB_TAG('Q','I','N',' ')}, /* Ngawn Chin -> Chin */ {HB_TAG('c','o','a',' '), HB_TAG('M','L','Y',' ')}, /* Cocos Islands Malay -> Malay */ {HB_TAG('c','o','b',' '), HB_TAG('M','Y','N',' ')}, /* Chicomuceltec -> Mayan */ -/*{HB_TAG('c','o','o',' '), HB_TAG('C','O','O',' ')},*/ /* Comox */ -/*{HB_TAG('c','o','p',' '), HB_TAG('C','O','P',' ')},*/ /* Coptic */ {HB_TAG('c','o','q',' '), HB_TAG('A','T','H',' ')}, /* Coquille -> Athapaskan */ {HB_TAG('c','p','a',' '), HB_TAG('C','C','H','N')}, /* Palantla Chinantec -> Chinantec */ {HB_TAG('c','p','e',' '), HB_TAG('C','P','P',' ')}, /* English-based creoles and pidgins [collection] -> Creoles */ {HB_TAG('c','p','f',' '), HB_TAG('C','P','P',' ')}, /* French-based creoles and pidgins [collection] -> Creoles */ {HB_TAG('c','p','i',' '), HB_TAG('C','P','P',' ')}, /* Chinese Pidgin English -> Creoles */ -/*{HB_TAG('c','p','p',' '), HB_TAG('C','P','P',' ')},*/ /* Portuguese-based creoles and pidgins [collection] -> Creoles */ {HB_TAG('c','p','x',' '), HB_TAG('Z','H','S',' ')}, /* Pu-Xian Chinese -> Chinese, Simplified */ {HB_TAG('c','q','d',' '), HB_TAG('H','M','N',' ')}, /* Chuanqiandian Cluster Miao -> Hmong */ - {HB_TAG('c','q','u',' '), HB_TAG('Q','U','H',' ')}, /* Chilean Quechua (retired code) -> Quechua (Bolivia) */ - {HB_TAG('c','q','u',' '), HB_TAG('Q','U','Z',' ')}, /* Chilean Quechua (retired code) -> Quechua */ {HB_TAG('c','r','h',' '), HB_TAG('C','R','T',' ')}, /* Crimean Tatar */ {HB_TAG('c','r','i',' '), HB_TAG('C','P','P',' ')}, /* Sãotomense -> Creoles */ - {HB_TAG('c','r','j',' '), HB_TAG('E','C','R',' ')}, /* Southern East Cree -> Eastern Cree */ - {HB_TAG('c','r','j',' '), HB_TAG('Y','C','R',' ')}, /* Southern East Cree -> Y-Cree */ - {HB_TAG('c','r','j',' '), HB_TAG('C','R','E',' ')}, /* Southern East Cree -> Cree */ - {HB_TAG('c','r','k',' '), HB_TAG('W','C','R',' ')}, /* Plains Cree -> West-Cree */ - {HB_TAG('c','r','k',' '), HB_TAG('Y','C','R',' ')}, /* Plains Cree -> Y-Cree */ - {HB_TAG('c','r','k',' '), HB_TAG('C','R','E',' ')}, /* Plains Cree -> Cree */ - {HB_TAG('c','r','l',' '), HB_TAG('E','C','R',' ')}, /* Northern East Cree -> Eastern Cree */ - {HB_TAG('c','r','l',' '), HB_TAG('Y','C','R',' ')}, /* Northern East Cree -> Y-Cree */ - {HB_TAG('c','r','l',' '), HB_TAG('C','R','E',' ')}, /* Northern East Cree -> Cree */ - {HB_TAG('c','r','m',' '), HB_TAG('M','C','R',' ')}, /* Moose Cree */ - {HB_TAG('c','r','m',' '), HB_TAG('L','C','R',' ')}, /* Moose Cree -> L-Cree */ - {HB_TAG('c','r','m',' '), HB_TAG('C','R','E',' ')}, /* Moose Cree -> Cree */ {HB_TAG('c','r','p',' '), HB_TAG('C','P','P',' ')}, /* Creoles and pidgins [collection] -> Creoles */ - {HB_TAG('c','r','r',' '), HB_TAG_NONE }, /* Carolina Algonquian != Carrier */ {HB_TAG('c','r','s',' '), HB_TAG('C','P','P',' ')}, /* Seselwa Creole French -> Creoles */ - {HB_TAG('c','r','t',' '), HB_TAG_NONE }, /* Iyojwa'ja Chorote != Crimean Tatar */ - {HB_TAG('c','r','x',' '), HB_TAG('C','R','R',' ')}, /* Carrier */ - {HB_TAG('c','r','x',' '), HB_TAG('A','T','H',' ')}, /* Carrier -> Athapaskan */ {HB_TAG('c','s','a',' '), HB_TAG('C','C','H','N')}, /* Chiltepec Chinantec -> Chinantec */ -/*{HB_TAG('c','s','b',' '), HB_TAG('C','S','B',' ')},*/ /* Kashubian */ {HB_TAG('c','s','h',' '), HB_TAG('Q','I','N',' ')}, /* Asho Chin -> Chin */ {HB_TAG('c','s','j',' '), HB_TAG('Q','I','N',' ')}, /* Songlai Chin -> Chin */ - {HB_TAG('c','s','l',' '), HB_TAG_NONE }, /* Chinese Sign Language != Church Slavonic */ {HB_TAG('c','s','o',' '), HB_TAG('C','C','H','N')}, /* Sochiapam Chinantec -> Chinantec */ {HB_TAG('c','s','p',' '), HB_TAG('Z','H','S',' ')}, /* Southern Ping Chinese -> Chinese, Simplified */ {HB_TAG('c','s','v',' '), HB_TAG('Q','I','N',' ')}, /* Sumtu Chin -> Chin */ - {HB_TAG('c','s','w',' '), HB_TAG('N','C','R',' ')}, /* Swampy Cree -> N-Cree */ - {HB_TAG('c','s','w',' '), HB_TAG('N','H','C',' ')}, /* Swampy Cree -> Norway House Cree */ - {HB_TAG('c','s','w',' '), HB_TAG('C','R','E',' ')}, /* Swampy Cree -> Cree */ {HB_TAG('c','s','y',' '), HB_TAG('Q','I','N',' ')}, /* Siyin Chin -> Chin */ {HB_TAG('c','t','c',' '), HB_TAG('A','T','H',' ')}, /* Chetco -> Athapaskan */ {HB_TAG('c','t','d',' '), HB_TAG('Q','I','N',' ')}, /* Tedim Chin -> Chin */ {HB_TAG('c','t','e',' '), HB_TAG('C','C','H','N')}, /* Tepinapa Chinantec -> Chinantec */ -/*{HB_TAG('c','t','g',' '), HB_TAG('C','T','G',' ')},*/ /* Chittagonian */ {HB_TAG('c','t','h',' '), HB_TAG('Q','I','N',' ')}, /* Thaiphum Chin -> Chin */ {HB_TAG('c','t','l',' '), HB_TAG('C','C','H','N')}, /* Tlacoatzintepec Chinantec -> Chinantec */ -/*{HB_TAG('c','t','o',' '), HB_TAG('C','T','O',' ')},*/ /* Emberá-Catío */ {HB_TAG('c','t','s',' '), HB_TAG('B','I','K',' ')}, /* Northern Catanduanes Bikol -> Bikol */ -/*{HB_TAG('c','t','t',' '), HB_TAG('C','T','T',' ')},*/ /* Wayanad Chetti */ {HB_TAG('c','t','u',' '), HB_TAG('M','Y','N',' ')}, /* Chol -> Mayan */ {HB_TAG('c','u','c',' '), HB_TAG('C','C','H','N')}, /* Usila Chinantec -> Chinantec */ -/*{HB_TAG('c','u','k',' '), HB_TAG('C','U','K',' ')},*/ /* San Blas Kuna */ {HB_TAG('c','v','n',' '), HB_TAG('C','C','H','N')}, /* Valle Nacional Chinantec -> Chinantec */ - {HB_TAG('c','w','d',' '), HB_TAG('D','C','R',' ')}, /* Woods Cree */ - {HB_TAG('c','w','d',' '), HB_TAG('T','C','R',' ')}, /* Woods Cree -> TH-Cree */ - {HB_TAG('c','w','d',' '), HB_TAG('C','R','E',' ')}, /* Woods Cree -> Cree */ {HB_TAG('c','z','h',' '), HB_TAG('Z','H','S',' ')}, /* Huizhou Chinese -> Chinese, Simplified */ {HB_TAG('c','z','o',' '), HB_TAG('Z','H','S',' ')}, /* Min Zhong Chinese -> Chinese, Simplified */ {HB_TAG('c','z','t',' '), HB_TAG('Q','I','N',' ')}, /* Zotung Chin -> Chin */ -/*{HB_TAG('d','a','g',' '), HB_TAG('D','A','G',' ')},*/ /* Dagbani */ {HB_TAG('d','a','o',' '), HB_TAG('Q','I','N',' ')}, /* Daai Chin -> Chin */ {HB_TAG('d','a','p',' '), HB_TAG('N','I','S',' ')}, /* Nisi (India) (retired code) */ -/*{HB_TAG('d','a','r',' '), HB_TAG('D','A','R',' ')},*/ /* Dargwa */ -/*{HB_TAG('d','a','x',' '), HB_TAG('D','A','X',' ')},*/ /* Dayi */ {HB_TAG('d','c','r',' '), HB_TAG('C','P','P',' ')}, /* Negerhollands -> Creoles */ - {HB_TAG('d','e','n',' '), HB_TAG('S','L','A',' ')}, /* Slave (Athapascan) [macrolanguage] -> Slavey */ - {HB_TAG('d','e','n',' '), HB_TAG('A','T','H',' ')}, /* Slave (Athapascan) [macrolanguage] -> Athapaskan */ {HB_TAG('d','e','p',' '), HB_TAG('C','P','P',' ')}, /* Pidgin Delaware -> Creoles */ - {HB_TAG('d','g','o',' '), HB_TAG('D','G','O',' ')}, /* Dogri (individual language) */ - {HB_TAG('d','g','o',' '), HB_TAG('D','G','R',' ')}, /* Dogri (macrolanguage) */ {HB_TAG('d','g','r',' '), HB_TAG('A','T','H',' ')}, /* Tlicho -> Athapaskan */ {HB_TAG('d','h','d',' '), HB_TAG('M','A','W',' ')}, /* Dhundari -> Marwari */ -/*{HB_TAG('d','h','g',' '), HB_TAG('D','H','G',' ')},*/ /* Dhangu */ - {HB_TAG('d','h','v',' '), HB_TAG_NONE }, /* Dehu != Divehi (Dhivehi, Maldivian) (deprecated) */ {HB_TAG('d','i','b',' '), HB_TAG('D','N','K',' ')}, /* South Central Dinka -> Dinka */ {HB_TAG('d','i','k',' '), HB_TAG('D','N','K',' ')}, /* Southwestern Dinka -> Dinka */ {HB_TAG('d','i','n',' '), HB_TAG('D','N','K',' ')}, /* Dinka [macrolanguage] */ {HB_TAG('d','i','p',' '), HB_TAG('D','N','K',' ')}, /* Northeastern Dinka -> Dinka */ - {HB_TAG('d','i','q',' '), HB_TAG('D','I','Q',' ')}, /* Dimli */ - {HB_TAG('d','i','q',' '), HB_TAG('Z','Z','A',' ')}, /* Dimli -> Zazaki */ {HB_TAG('d','i','w',' '), HB_TAG('D','N','K',' ')}, /* Northwestern Dinka -> Dinka */ {HB_TAG('d','j','e',' '), HB_TAG('D','J','R',' ')}, /* Zarma */ {HB_TAG('d','j','k',' '), HB_TAG('C','P','P',' ')}, /* Eastern Maroon Creole -> Creoles */ {HB_TAG('d','j','r',' '), HB_TAG('D','J','R','0')}, /* Djambarrpuyngu */ {HB_TAG('d','k','s',' '), HB_TAG('D','N','K',' ')}, /* Southeastern Dinka -> Dinka */ {HB_TAG('d','n','g',' '), HB_TAG('D','U','N',' ')}, /* Dungan */ -/*{HB_TAG('d','n','j',' '), HB_TAG('D','N','J',' ')},*/ /* Dan */ - {HB_TAG('d','n','k',' '), HB_TAG_NONE }, /* Dengka != Dinka */ {HB_TAG('d','o','i',' '), HB_TAG('D','G','R',' ')}, /* Dogri (macrolanguage) [macrolanguage] */ {HB_TAG('d','r','h',' '), HB_TAG('M','N','G',' ')}, /* Darkhat (retired code) -> Mongolian */ - {HB_TAG('d','r','i',' '), HB_TAG_NONE }, /* C'Lela != Dari */ - {HB_TAG('d','r','w',' '), HB_TAG('D','R','I',' ')}, /* Darwazi (retired code) -> Dari */ - {HB_TAG('d','r','w',' '), HB_TAG('F','A','R',' ')}, /* Darwazi (retired code) -> Persian */ {HB_TAG('d','s','b',' '), HB_TAG('L','S','B',' ')}, /* Lower Sorbian */ {HB_TAG('d','t','y',' '), HB_TAG('N','E','P',' ')}, /* Dotyali -> Nepali */ -/*{HB_TAG('d','u','j',' '), HB_TAG('D','U','J',' ')},*/ /* Dhuwal (retired code) */ - {HB_TAG('d','u','n',' '), HB_TAG_NONE }, /* Dusun Deyah != Dungan */ {HB_TAG('d','u','p',' '), HB_TAG('M','L','Y',' ')}, /* Duano -> Malay */ {HB_TAG('d','w','k',' '), HB_TAG('K','U','I',' ')}, /* Dawik Kui -> Kui */ {HB_TAG('d','w','u',' '), HB_TAG('D','U','J',' ')}, /* Dhuwal */ {HB_TAG('d','w','y',' '), HB_TAG('D','U','J',' ')}, /* Dhuwaya -> Dhuwal */ {HB_TAG('d','y','u',' '), HB_TAG('J','U','L',' ')}, /* Dyula -> Jula */ - {HB_TAG('d','z','n',' '), HB_TAG_NONE }, /* Dzando != Dzongkha */ - {HB_TAG('e','c','r',' '), HB_TAG_NONE }, /* Eteocretan != Eastern Cree */ -/*{HB_TAG('e','f','i',' '), HB_TAG('E','F','I',' ')},*/ /* Efik */ {HB_TAG('e','k','k',' '), HB_TAG('E','T','I',' ')}, /* Standard Estonian -> Estonian */ {HB_TAG('e','k','y',' '), HB_TAG('K','R','N',' ')}, /* Eastern Kayah -> Karen */ - {HB_TAG('e','m','k',' '), HB_TAG('E','M','K',' ')}, /* Eastern Maninkakan */ - {HB_TAG('e','m','k',' '), HB_TAG('M','N','K',' ')}, /* Eastern Maninkakan -> Maninka */ -/*{HB_TAG('e','m','p',' '), HB_TAG('E','M','P',' ')},*/ /* Northern Emberá */ {HB_TAG('e','m','y',' '), HB_TAG('M','Y','N',' ')}, /* Epigraphic Mayan -> Mayan */ {HB_TAG('e','n','b',' '), HB_TAG('K','A','L',' ')}, /* Markweeta -> Kalenjin */ {HB_TAG('e','n','f',' '), HB_TAG('F','N','E',' ')}, /* Forest Enets */ @@ -609,52 +614,27 @@ static const LangTag ot_languages3[] = { {HB_TAG('e','s','g',' '), HB_TAG('G','O','N',' ')}, /* Aheri Gondi -> Gondi */ {HB_TAG('e','s','i',' '), HB_TAG('I','P','K',' ')}, /* North Alaskan Inupiatun -> Inupiat */ {HB_TAG('e','s','k',' '), HB_TAG('I','P','K',' ')}, /* Northwest Alaska Inupiatun -> Inupiat */ -/*{HB_TAG('e','s','u',' '), HB_TAG('E','S','U',' ')},*/ /* Central Yupik */ {HB_TAG('e','t','o',' '), HB_TAG('B','T','I',' ')}, /* Eton (Cameroon) -> Beti */ - {HB_TAG('e','u','q',' '), HB_TAG_NONE }, /* Basque [collection] != Basque */ {HB_TAG('e','v','e',' '), HB_TAG('E','V','N',' ')}, /* Even */ {HB_TAG('e','v','n',' '), HB_TAG('E','V','K',' ')}, /* Evenki */ {HB_TAG('e','w','o',' '), HB_TAG('B','T','I',' ')}, /* Ewondo -> Beti */ {HB_TAG('e','y','o',' '), HB_TAG('K','A','L',' ')}, /* Keiyo -> Kalenjin */ {HB_TAG('f','a','b',' '), HB_TAG('C','P','P',' ')}, /* Fa d'Ambu -> Creoles */ - {HB_TAG('f','a','n',' '), HB_TAG('F','A','N','0')}, /* Fang (Equatorial Guinea) */ - {HB_TAG('f','a','n',' '), HB_TAG('B','T','I',' ')}, /* Fang (Equatorial Guinea) -> Beti */ - {HB_TAG('f','a','r',' '), HB_TAG_NONE }, /* Fataleka != Persian */ - {HB_TAG('f','a','t',' '), HB_TAG('F','A','T',' ')}, /* Fanti */ - {HB_TAG('f','a','t',' '), HB_TAG('A','K','A',' ')}, /* Fanti -> Akan */ {HB_TAG('f','b','l',' '), HB_TAG('B','I','K',' ')}, /* West Albay Bikol -> Bikol */ {HB_TAG('f','f','m',' '), HB_TAG('F','U','L',' ')}, /* Maasina Fulfulde -> Fulah */ {HB_TAG('f','i','l',' '), HB_TAG('P','I','L',' ')}, /* Filipino */ - {HB_TAG('f','l','m',' '), HB_TAG('H','A','L',' ')}, /* Halam (Falam Chin) (retired code) */ - {HB_TAG('f','l','m',' '), HB_TAG('Q','I','N',' ')}, /* Falam Chin (retired code) -> Chin */ - {HB_TAG('f','m','p',' '), HB_TAG('F','M','P',' ')}, /* Fe’fe’ */ - {HB_TAG('f','m','p',' '), HB_TAG('B','M','L',' ')}, /* Fe'fe' -> Bamileke */ {HB_TAG('f','n','g',' '), HB_TAG('C','P','P',' ')}, /* Fanagalo -> Creoles */ -/*{HB_TAG('f','o','n',' '), HB_TAG('F','O','N',' ')},*/ /* Fon */ - {HB_TAG('f','o','s',' '), HB_TAG_NONE }, /* Siraya != Faroese */ {HB_TAG('f','p','e',' '), HB_TAG('C','P','P',' ')}, /* Fernando Po Creole English -> Creoles */ -/*{HB_TAG('f','r','c',' '), HB_TAG('F','R','C',' ')},*/ /* Cajun French */ -/*{HB_TAG('f','r','p',' '), HB_TAG('F','R','P',' ')},*/ /* Arpitan */ {HB_TAG('f','u','b',' '), HB_TAG('F','U','L',' ')}, /* Adamawa Fulfulde -> Fulah */ {HB_TAG('f','u','c',' '), HB_TAG('F','U','L',' ')}, /* Pulaar -> Fulah */ {HB_TAG('f','u','e',' '), HB_TAG('F','U','L',' ')}, /* Borgu Fulfulde -> Fulah */ - {HB_TAG('f','u','f',' '), HB_TAG('F','T','A',' ')}, /* Pular -> Futa */ - {HB_TAG('f','u','f',' '), HB_TAG('F','U','L',' ')}, /* Pular -> Fulah */ {HB_TAG('f','u','h',' '), HB_TAG('F','U','L',' ')}, /* Western Niger Fulfulde -> Fulah */ {HB_TAG('f','u','i',' '), HB_TAG('F','U','L',' ')}, /* Bagirmi Fulfulde -> Fulah */ {HB_TAG('f','u','q',' '), HB_TAG('F','U','L',' ')}, /* Central-Eastern Niger Fulfulde -> Fulah */ {HB_TAG('f','u','r',' '), HB_TAG('F','R','L',' ')}, /* Friulian */ - {HB_TAG('f','u','v',' '), HB_TAG('F','U','V',' ')}, /* Nigerian Fulfulde */ - {HB_TAG('f','u','v',' '), HB_TAG('F','U','L',' ')}, /* Nigerian Fulfulde -> Fulah */ {HB_TAG('g','a','a',' '), HB_TAG('G','A','D',' ')}, /* Ga */ {HB_TAG('g','a','c',' '), HB_TAG('C','P','P',' ')}, /* Mixed Great Andamanese -> Creoles */ - {HB_TAG('g','a','d',' '), HB_TAG_NONE }, /* Gaddang != Ga */ - {HB_TAG('g','a','e',' '), HB_TAG_NONE }, /* Guarequena != Scottish Gaelic */ -/*{HB_TAG('g','a','g',' '), HB_TAG('G','A','G',' ')},*/ /* Gagauz */ - {HB_TAG('g','a','l',' '), HB_TAG_NONE }, /* Galolen != Galician */ {HB_TAG('g','a','n',' '), HB_TAG('Z','H','S',' ')}, /* Gan Chinese -> Chinese, Simplified */ - {HB_TAG('g','a','r',' '), HB_TAG_NONE }, /* Galeya != Garshuni */ - {HB_TAG('g','a','w',' '), HB_TAG_NONE }, /* Nobonob != Garhwali */ {HB_TAG('g','a','x',' '), HB_TAG('O','R','O',' ')}, /* Borana-Arsi-Guji Oromo -> Oromo */ {HB_TAG('g','a','z',' '), HB_TAG('O','R','O',' ')}, /* West Central Oromo -> Oromo */ {HB_TAG('g','b','m',' '), HB_TAG('G','A','W',' ')}, /* Garhwali */ @@ -663,69 +643,46 @@ static const LangTag ot_languages3[] = { {HB_TAG('g','c','l',' '), HB_TAG('C','P','P',' ')}, /* Grenadian Creole English -> Creoles */ {HB_TAG('g','c','r',' '), HB_TAG('C','P','P',' ')}, /* Guianese Creole French -> Creoles */ {HB_TAG('g','d','a',' '), HB_TAG('R','A','J',' ')}, /* Gade Lohar -> Rajasthani */ -/*{HB_TAG('g','e','z',' '), HB_TAG('G','E','Z',' ')},*/ /* Geez */ {HB_TAG('g','g','o',' '), HB_TAG('G','O','N',' ')}, /* Southern Gondi (retired code) -> Gondi */ {HB_TAG('g','h','a',' '), HB_TAG('B','B','R',' ')}, /* Ghadamès -> Berber */ {HB_TAG('g','h','c',' '), HB_TAG('I','R','T',' ')}, /* Hiberno-Scottish Gaelic -> Irish Traditional */ {HB_TAG('g','h','k',' '), HB_TAG('K','R','N',' ')}, /* Geko Karen -> Karen */ {HB_TAG('g','h','o',' '), HB_TAG('B','B','R',' ')}, /* Ghomara -> Berber */ {HB_TAG('g','i','b',' '), HB_TAG('C','P','P',' ')}, /* Gibanawa -> Creoles */ -/*{HB_TAG('g','i','h',' '), HB_TAG('G','I','H',' ')},*/ /* Githabul */ {HB_TAG('g','i','l',' '), HB_TAG('G','I','L','0')}, /* Kiribati (Gilbertese) */ {HB_TAG('g','j','u',' '), HB_TAG('R','A','J',' ')}, /* Gujari -> Rajasthani */ - {HB_TAG('g','k','p',' '), HB_TAG('G','K','P',' ')}, /* Guinea Kpelle -> Kpelle (Guinea) */ - {HB_TAG('g','k','p',' '), HB_TAG('K','P','L',' ')}, /* Guinea Kpelle -> Kpelle */ {HB_TAG('g','l','d',' '), HB_TAG('N','A','N',' ')}, /* Nanai */ -/*{HB_TAG('g','l','k',' '), HB_TAG('G','L','K',' ')},*/ /* Gilaki */ - {HB_TAG('g','m','z',' '), HB_TAG_NONE }, /* Mgbolizhia != Gumuz */ {HB_TAG('g','n','b',' '), HB_TAG('Q','I','N',' ')}, /* Gangte -> Chin */ -/*{HB_TAG('g','n','n',' '), HB_TAG('G','N','N',' ')},*/ /* Gumatj */ {HB_TAG('g','n','o',' '), HB_TAG('G','O','N',' ')}, /* Northern Gondi -> Gondi */ {HB_TAG('g','n','w',' '), HB_TAG('G','U','A',' ')}, /* Western Bolivian Guaraní -> Guarani */ -/*{HB_TAG('g','o','g',' '), HB_TAG('G','O','G',' ')},*/ /* Gogo */ {HB_TAG('g','o','m',' '), HB_TAG('K','O','K',' ')}, /* Goan Konkani -> Konkani */ -/*{HB_TAG('g','o','n',' '), HB_TAG('G','O','N',' ')},*/ /* Gondi [macrolanguage] */ {HB_TAG('g','o','q',' '), HB_TAG('C','P','P',' ')}, /* Gorap -> Creoles */ {HB_TAG('g','o','x',' '), HB_TAG('B','A','D','0')}, /* Gobu -> Banda */ {HB_TAG('g','p','e',' '), HB_TAG('C','P','P',' ')}, /* Ghanaian Pidgin English -> Creoles */ - {HB_TAG('g','r','o',' '), HB_TAG_NONE }, /* Groma != Garo */ {HB_TAG('g','r','r',' '), HB_TAG('B','B','R',' ')}, /* Taznatit -> Berber */ {HB_TAG('g','r','t',' '), HB_TAG('G','R','O',' ')}, /* Garo */ {HB_TAG('g','r','u',' '), HB_TAG('S','O','G',' ')}, /* Kistane -> Sodo Gurage */ {HB_TAG('g','s','w',' '), HB_TAG('A','L','S',' ')}, /* Alsatian */ - {HB_TAG('g','u','a',' '), HB_TAG_NONE }, /* Shiki != Guarani */ -/*{HB_TAG('g','u','c',' '), HB_TAG('G','U','C',' ')},*/ /* Wayuu */ -/*{HB_TAG('g','u','f',' '), HB_TAG('G','U','F',' ')},*/ /* Gupapuyngu */ {HB_TAG('g','u','g',' '), HB_TAG('G','U','A',' ')}, /* Paraguayan Guaraní -> Guarani */ {HB_TAG('g','u','i',' '), HB_TAG('G','U','A',' ')}, /* Eastern Bolivian Guaraní -> Guarani */ {HB_TAG('g','u','k',' '), HB_TAG('G','M','Z',' ')}, /* Gumuz */ {HB_TAG('g','u','l',' '), HB_TAG('C','P','P',' ')}, /* Sea Island Creole English -> Creoles */ {HB_TAG('g','u','n',' '), HB_TAG('G','U','A',' ')}, /* Mbyá Guaraní -> Guarani */ -/*{HB_TAG('g','u','z',' '), HB_TAG('G','U','Z',' ')},*/ /* Gusii */ {HB_TAG('g','w','i',' '), HB_TAG('A','T','H',' ')}, /* Gwichʼin -> Athapaskan */ {HB_TAG('g','y','n',' '), HB_TAG('C','P','P',' ')}, /* Guyanese Creole English -> Creoles */ {HB_TAG('h','a','a',' '), HB_TAG('A','T','H',' ')}, /* Hän -> Athapaskan */ {HB_TAG('h','a','e',' '), HB_TAG('O','R','O',' ')}, /* Eastern Oromo -> Oromo */ {HB_TAG('h','a','i',' '), HB_TAG('H','A','I','0')}, /* Haida [macrolanguage] */ {HB_TAG('h','a','k',' '), HB_TAG('Z','H','S',' ')}, /* Hakka Chinese -> Chinese, Simplified */ - {HB_TAG('h','a','l',' '), HB_TAG_NONE }, /* Halang != Halam (Falam Chin) */ {HB_TAG('h','a','r',' '), HB_TAG('H','R','I',' ')}, /* Harari */ -/*{HB_TAG('h','a','w',' '), HB_TAG('H','A','W',' ')},*/ /* Hawaiian */ {HB_TAG('h','a','x',' '), HB_TAG('H','A','I','0')}, /* Southern Haida -> Haida */ -/*{HB_TAG('h','a','y',' '), HB_TAG('H','A','Y',' ')},*/ /* Haya */ -/*{HB_TAG('h','a','z',' '), HB_TAG('H','A','Z',' ')},*/ /* Hazaragi */ - {HB_TAG('h','b','n',' '), HB_TAG_NONE }, /* Heiban != Hammer-Banna */ {HB_TAG('h','c','a',' '), HB_TAG('C','P','P',' ')}, /* Andaman Creole Hindi -> Creoles */ {HB_TAG('h','d','n',' '), HB_TAG('H','A','I','0')}, /* Northern Haida -> Haida */ {HB_TAG('h','e','a',' '), HB_TAG('H','M','N',' ')}, /* Northern Qiandong Miao -> Hmong */ -/*{HB_TAG('h','e','i',' '), HB_TAG('H','E','I',' ')},*/ /* Heiltsuk */ -/*{HB_TAG('h','i','l',' '), HB_TAG('H','I','L',' ')},*/ /* Hiligaynon */ {HB_TAG('h','j','i',' '), HB_TAG('M','L','Y',' ')}, /* Haji -> Malay */ {HB_TAG('h','l','t',' '), HB_TAG('Q','I','N',' ')}, /* Matu Chin -> Chin */ {HB_TAG('h','m','a',' '), HB_TAG('H','M','N',' ')}, /* Southern Mashan Hmong -> Hmong */ {HB_TAG('h','m','c',' '), HB_TAG('H','M','N',' ')}, /* Central Huishui Hmong -> Hmong */ - {HB_TAG('h','m','d',' '), HB_TAG('H','M','D',' ')}, /* Large Flowery Miao -> A-Hmao */ - {HB_TAG('h','m','d',' '), HB_TAG('H','M','N',' ')}, /* Large Flowery Miao -> Hmong */ {HB_TAG('h','m','e',' '), HB_TAG('H','M','N',' ')}, /* Eastern Huishui Hmong -> Hmong */ {HB_TAG('h','m','g',' '), HB_TAG('H','M','N',' ')}, /* Southwestern Guiyang Hmong -> Hmong */ {HB_TAG('h','m','h',' '), HB_TAG('H','M','N',' ')}, /* Southwestern Huishui Hmong -> Hmong */ @@ -733,36 +690,27 @@ static const LangTag ot_languages3[] = { {HB_TAG('h','m','j',' '), HB_TAG('H','M','N',' ')}, /* Ge -> Hmong */ {HB_TAG('h','m','l',' '), HB_TAG('H','M','N',' ')}, /* Luopohe Hmong -> Hmong */ {HB_TAG('h','m','m',' '), HB_TAG('H','M','N',' ')}, /* Central Mashan Hmong -> Hmong */ -/*{HB_TAG('h','m','n',' '), HB_TAG('H','M','N',' ')},*/ /* Hmong [macrolanguage] */ {HB_TAG('h','m','p',' '), HB_TAG('H','M','N',' ')}, /* Northern Mashan Hmong -> Hmong */ {HB_TAG('h','m','q',' '), HB_TAG('H','M','N',' ')}, /* Eastern Qiandong Miao -> Hmong */ {HB_TAG('h','m','r',' '), HB_TAG('Q','I','N',' ')}, /* Hmar -> Chin */ {HB_TAG('h','m','s',' '), HB_TAG('H','M','N',' ')}, /* Southern Qiandong Miao -> Hmong */ {HB_TAG('h','m','w',' '), HB_TAG('H','M','N',' ')}, /* Western Mashan Hmong -> Hmong */ {HB_TAG('h','m','y',' '), HB_TAG('H','M','N',' ')}, /* Southern Guiyang Hmong -> Hmong */ - {HB_TAG('h','m','z',' '), HB_TAG('H','M','Z',' ')}, /* Hmong Shua -> Hmong Shuat */ - {HB_TAG('h','m','z',' '), HB_TAG('H','M','N',' ')}, /* Hmong Shua -> Hmong */ -/*{HB_TAG('h','n','d',' '), HB_TAG('H','N','D',' ')},*/ /* Southern Hindko -> Hindko */ {HB_TAG('h','n','e',' '), HB_TAG('C','H','H',' ')}, /* Chhattisgarhi -> Chattisgarhi */ {HB_TAG('h','n','j',' '), HB_TAG('H','M','N',' ')}, /* Hmong Njua -> Hmong */ {HB_TAG('h','n','m',' '), HB_TAG('Z','H','S',' ')}, /* Hainanese -> Chinese, Simplified */ {HB_TAG('h','n','o',' '), HB_TAG('H','N','D',' ')}, /* Northern Hindko -> Hindko */ {HB_TAG('h','o','c',' '), HB_TAG('H','O',' ',' ')}, /* Ho */ {HB_TAG('h','o','i',' '), HB_TAG('A','T','H',' ')}, /* Holikachuk -> Athapaskan */ - {HB_TAG('h','o','j',' '), HB_TAG('H','A','R',' ')}, /* Hadothi -> Harauti */ - {HB_TAG('h','o','j',' '), HB_TAG('R','A','J',' ')}, /* Hadothi -> Rajasthani */ {HB_TAG('h','r','a',' '), HB_TAG('Q','I','N',' ')}, /* Hrangkhol -> Chin */ {HB_TAG('h','r','m',' '), HB_TAG('H','M','N',' ')}, /* Horned Miao -> Hmong */ {HB_TAG('h','s','b',' '), HB_TAG('U','S','B',' ')}, /* Upper Sorbian */ {HB_TAG('h','s','n',' '), HB_TAG('Z','H','S',' ')}, /* Xiang Chinese -> Chinese, Simplified */ {HB_TAG('h','u','j',' '), HB_TAG('H','M','N',' ')}, /* Northern Guiyang Hmong -> Hmong */ {HB_TAG('h','u','p',' '), HB_TAG('A','T','H',' ')}, /* Hupa -> Athapaskan */ -/*{HB_TAG('h','u','r',' '), HB_TAG('H','U','R',' ')},*/ /* Halkomelem */ {HB_TAG('h','u','s',' '), HB_TAG('M','Y','N',' ')}, /* Huastec -> Mayan */ {HB_TAG('h','w','c',' '), HB_TAG('C','P','P',' ')}, /* Hawai'i Creole English -> Creoles */ {HB_TAG('h','y','w',' '), HB_TAG('H','Y','E',' ')}, /* Western Armenian -> Armenian */ -/*{HB_TAG('i','b','a',' '), HB_TAG('I','B','A',' ')},*/ /* Iban */ -/*{HB_TAG('i','b','b',' '), HB_TAG('I','B','B',' ')},*/ /* Ibibio */ {HB_TAG('i','b','y',' '), HB_TAG('I','J','O',' ')}, /* Ibani -> Ijo */ {HB_TAG('i','c','r',' '), HB_TAG('C','P','P',' ')}, /* Islander Creole English -> Creoles */ {HB_TAG('i','d','a',' '), HB_TAG('L','U','H',' ')}, /* Idakho-Isukha-Tiriki -> Luyia */ @@ -772,156 +720,71 @@ static const LangTag ot_languages3[] = { {HB_TAG('i','j','c',' '), HB_TAG('I','J','O',' ')}, /* Izon -> Ijo */ {HB_TAG('i','j','e',' '), HB_TAG('I','J','O',' ')}, /* Biseni -> Ijo */ {HB_TAG('i','j','n',' '), HB_TAG('I','J','O',' ')}, /* Kalabari -> Ijo */ -/*{HB_TAG('i','j','o',' '), HB_TAG('I','J','O',' ')},*/ /* Ijo [collection] */ {HB_TAG('i','j','s',' '), HB_TAG('I','J','O',' ')}, /* Southeast Ijo -> Ijo */ - {HB_TAG('i','k','e',' '), HB_TAG('I','N','U',' ')}, /* Eastern Canadian Inuktitut -> Inuktitut */ - {HB_TAG('i','k','e',' '), HB_TAG('I','N','U','K')}, /* Eastern Canadian Inuktitut -> Nunavik Inuktitut */ {HB_TAG('i','k','t',' '), HB_TAG('I','N','U',' ')}, /* Inuinnaqtun -> Inuktitut */ -/*{HB_TAG('i','l','o',' '), HB_TAG('I','L','O',' ')},*/ /* Iloko -> Ilokano */ {HB_TAG('i','n','g',' '), HB_TAG('A','T','H',' ')}, /* Degexit'an -> Athapaskan */ {HB_TAG('i','n','h',' '), HB_TAG('I','N','G',' ')}, /* Ingush */ - {HB_TAG('i','r','i',' '), HB_TAG_NONE }, /* Rigwe != Irish */ -/*{HB_TAG('i','r','u',' '), HB_TAG('I','R','U',' ')},*/ /* Irula */ - {HB_TAG('i','s','m',' '), HB_TAG_NONE }, /* Masimasi != Inari Sami */ {HB_TAG('i','t','z',' '), HB_TAG('M','Y','N',' ')}, /* Itzá -> Mayan */ {HB_TAG('i','x','l',' '), HB_TAG('M','Y','N',' ')}, /* Ixil -> Mayan */ {HB_TAG('j','a','c',' '), HB_TAG('M','Y','N',' ')}, /* Popti' -> Mayan */ {HB_TAG('j','a','k',' '), HB_TAG('M','L','Y',' ')}, /* Jakun -> Malay */ - {HB_TAG('j','a','m',' '), HB_TAG('J','A','M',' ')}, /* Jamaican Creole English -> Jamaican Creole */ - {HB_TAG('j','a','m',' '), HB_TAG('C','P','P',' ')}, /* Jamaican Creole English -> Creoles */ - {HB_TAG('j','a','n',' '), HB_TAG_NONE }, /* Jandai != Japanese */ {HB_TAG('j','a','x',' '), HB_TAG('M','L','Y',' ')}, /* Jambi Malay -> Malay */ {HB_TAG('j','b','e',' '), HB_TAG('B','B','R',' ')}, /* Judeo-Berber -> Berber */ {HB_TAG('j','b','n',' '), HB_TAG('B','B','R',' ')}, /* Nafusi -> Berber */ -/*{HB_TAG('j','b','o',' '), HB_TAG('J','B','O',' ')},*/ /* Lojban */ -/*{HB_TAG('j','c','t',' '), HB_TAG('J','C','T',' ')},*/ /* Krymchak */ -/*{HB_TAG('j','d','t',' '), HB_TAG('J','D','T',' ')},*/ /* Judeo-Tat */ {HB_TAG('j','g','o',' '), HB_TAG('B','M','L',' ')}, /* Ngomba -> Bamileke */ - {HB_TAG('j','i','i',' '), HB_TAG_NONE }, /* Jiiddu != Yiddish */ {HB_TAG('j','k','m',' '), HB_TAG('K','R','N',' ')}, /* Mobwa Karen -> Karen */ {HB_TAG('j','k','p',' '), HB_TAG('K','R','N',' ')}, /* Paku Karen -> Karen */ - {HB_TAG('j','u','d',' '), HB_TAG_NONE }, /* Worodougou != Ladino */ - {HB_TAG('j','u','l',' '), HB_TAG_NONE }, /* Jirel != Jula */ {HB_TAG('j','v','d',' '), HB_TAG('C','P','P',' ')}, /* Javindo -> Creoles */ {HB_TAG('k','a','a',' '), HB_TAG('K','R','K',' ')}, /* Karakalpak */ - {HB_TAG('k','a','b',' '), HB_TAG('K','A','B','0')}, /* Kabyle */ - {HB_TAG('k','a','b',' '), HB_TAG('B','B','R',' ')}, /* Kabyle -> Berber */ - {HB_TAG('k','a','c',' '), HB_TAG_NONE }, /* Kachin != Kachchi */ {HB_TAG('k','a','m',' '), HB_TAG('K','M','B',' ')}, /* Kamba (Kenya) */ {HB_TAG('k','a','r',' '), HB_TAG('K','R','N',' ')}, /* Karen [collection] */ -/*{HB_TAG('k','a','w',' '), HB_TAG('K','A','W',' ')},*/ /* Kawi (Old Javanese) */ -/*{HB_TAG('k','b','c',' '), HB_TAG('K','B','C',' ')},*/ /* Kadiwéu */ {HB_TAG('k','b','d',' '), HB_TAG('K','A','B',' ')}, /* Kabardian */ {HB_TAG('k','b','y',' '), HB_TAG('K','N','R',' ')}, /* Manga Kanuri -> Kanuri */ - {HB_TAG('k','c','a',' '), HB_TAG('K','H','K',' ')}, /* Khanty -> Khanty-Kazim */ - {HB_TAG('k','c','a',' '), HB_TAG('K','H','S',' ')}, /* Khanty -> Khanty-Shurishkar */ - {HB_TAG('k','c','a',' '), HB_TAG('K','H','V',' ')}, /* Khanty -> Khanty-Vakhi */ {HB_TAG('k','c','n',' '), HB_TAG('C','P','P',' ')}, /* Nubi -> Creoles */ -/*{HB_TAG('k','d','e',' '), HB_TAG('K','D','E',' ')},*/ /* Makonde */ {HB_TAG('k','d','r',' '), HB_TAG('K','R','M',' ')}, /* Karaim */ {HB_TAG('k','d','t',' '), HB_TAG('K','U','Y',' ')}, /* Kuy */ - {HB_TAG('k','e','a',' '), HB_TAG('K','E','A',' ')}, /* Kabuverdianu (Crioulo) */ - {HB_TAG('k','e','a',' '), HB_TAG('C','P','P',' ')}, /* Kabuverdianu -> Creoles */ - {HB_TAG('k','e','b',' '), HB_TAG_NONE }, /* Kélé != Kebena */ - {HB_TAG('k','e','k',' '), HB_TAG('K','E','K',' ')}, /* Kekchi */ - {HB_TAG('k','e','k',' '), HB_TAG('M','Y','N',' ')}, /* Kekchí -> Mayan */ {HB_TAG('k','e','x',' '), HB_TAG('K','K','N',' ')}, /* Kukna -> Kokni */ {HB_TAG('k','f','a',' '), HB_TAG('K','O','D',' ')}, /* Kodava -> Kodagu */ {HB_TAG('k','f','r',' '), HB_TAG('K','A','C',' ')}, /* Kachhi -> Kachchi */ {HB_TAG('k','f','x',' '), HB_TAG('K','U','L',' ')}, /* Kullu Pahari -> Kulvi */ {HB_TAG('k','f','y',' '), HB_TAG('K','M','N',' ')}, /* Kumaoni */ - {HB_TAG('k','g','e',' '), HB_TAG_NONE }, /* Komering != Khutsuri Georgian */ -/*{HB_TAG('k','g','f',' '), HB_TAG('K','G','F',' ')},*/ /* Kube */ {HB_TAG('k','h','a',' '), HB_TAG('K','S','I',' ')}, /* Khasi */ {HB_TAG('k','h','b',' '), HB_TAG('X','B','D',' ')}, /* Lü */ {HB_TAG('k','h','k',' '), HB_TAG('M','N','G',' ')}, /* Halh Mongolian -> Mongolian */ - {HB_TAG('k','h','n',' '), HB_TAG_NONE }, /* Khandesi != Khamti Shan (Microsoft fonts) */ - {HB_TAG('k','h','s',' '), HB_TAG_NONE }, /* Kasua != Khanty-Shurishkar */ - {HB_TAG('k','h','t',' '), HB_TAG('K','H','T',' ')}, /* Khamti -> Khamti Shan */ - {HB_TAG('k','h','t',' '), HB_TAG('K','H','N',' ')}, /* Khamti -> Khamti Shan (Microsoft fonts) */ - {HB_TAG('k','h','v',' '), HB_TAG_NONE }, /* Khvarshi != Khanty-Vakhi */ -/*{HB_TAG('k','h','w',' '), HB_TAG('K','H','W',' ')},*/ /* Khowar */ - {HB_TAG('k','i','s',' '), HB_TAG_NONE }, /* Kis != Kisii */ - {HB_TAG('k','i','u',' '), HB_TAG('K','I','U',' ')}, /* Kirmanjki */ - {HB_TAG('k','i','u',' '), HB_TAG('Z','Z','A',' ')}, /* Kirmanjki -> Zazaki */ {HB_TAG('k','j','b',' '), HB_TAG('M','Y','N',' ')}, /* Q'anjob'al -> Mayan */ -/*{HB_TAG('k','j','d',' '), HB_TAG('K','J','D',' ')},*/ /* Southern Kiwai */ {HB_TAG('k','j','h',' '), HB_TAG('K','H','A',' ')}, /* Khakas -> Khakass */ -/*{HB_TAG('k','j','j',' '), HB_TAG('K','J','J',' ')},*/ /* Khinalugh -> Khinalug */ - {HB_TAG('k','j','p',' '), HB_TAG('K','J','P',' ')}, /* Pwo Eastern Karen -> Eastern Pwo Karen */ - {HB_TAG('k','j','p',' '), HB_TAG('K','R','N',' ')}, /* Pwo Eastern Karen -> Karen */ {HB_TAG('k','j','t',' '), HB_TAG('K','R','N',' ')}, /* Phrae Pwo Karen -> Karen */ -/*{HB_TAG('k','j','z',' '), HB_TAG('K','J','Z',' ')},*/ /* Bumthangkha */ - {HB_TAG('k','k','n',' '), HB_TAG_NONE }, /* Kon Keu != Kokni */ {HB_TAG('k','k','z',' '), HB_TAG('A','T','H',' ')}, /* Kaska -> Athapaskan */ - {HB_TAG('k','l','m',' '), HB_TAG_NONE }, /* Migum != Kalmyk */ {HB_TAG('k','l','n',' '), HB_TAG('K','A','L',' ')}, /* Kalenjin [macrolanguage] */ {HB_TAG('k','m','b',' '), HB_TAG('M','B','N',' ')}, /* Kimbundu -> Mbundu */ -/*{HB_TAG('k','m','g',' '), HB_TAG('K','M','G',' ')},*/ /* Kâte */ - {HB_TAG('k','m','n',' '), HB_TAG_NONE }, /* Awtuw != Kumaoni */ - {HB_TAG('k','m','o',' '), HB_TAG_NONE }, /* Kwoma != Komo */ {HB_TAG('k','m','r',' '), HB_TAG('K','U','R',' ')}, /* Northern Kurdish -> Kurdish */ - {HB_TAG('k','m','s',' '), HB_TAG_NONE }, /* Kamasau != Komso */ {HB_TAG('k','m','v',' '), HB_TAG('C','P','P',' ')}, /* Karipúna Creole French -> Creoles */ {HB_TAG('k','m','w',' '), HB_TAG('K','M','O',' ')}, /* Komo (Democratic Republic of Congo) */ -/*{HB_TAG('k','m','z',' '), HB_TAG('K','M','Z',' ')},*/ /* Khorasani Turkish -> Khorasani Turkic */ {HB_TAG('k','n','c',' '), HB_TAG('K','N','R',' ')}, /* Central Kanuri -> Kanuri */ {HB_TAG('k','n','g',' '), HB_TAG('K','O','N','0')}, /* Koongo -> Kongo */ {HB_TAG('k','n','j',' '), HB_TAG('M','Y','N',' ')}, /* Western Kanjobal -> Mayan */ {HB_TAG('k','n','n',' '), HB_TAG('K','O','K',' ')}, /* Konkani */ - {HB_TAG('k','n','r',' '), HB_TAG_NONE }, /* Kaningra != Kanuri */ - {HB_TAG('k','o','d',' '), HB_TAG_NONE }, /* Kodi != Kodagu */ - {HB_TAG('k','o','h',' '), HB_TAG_NONE }, /* Koyo != Korean Old Hangul */ - {HB_TAG('k','o','i',' '), HB_TAG('K','O','P',' ')}, /* Komi-Permyak */ - {HB_TAG('k','o','i',' '), HB_TAG('K','O','M',' ')}, /* Komi-Permyak -> Komi */ -/*{HB_TAG('k','o','k',' '), HB_TAG('K','O','K',' ')},*/ /* Konkani [macrolanguage] */ - {HB_TAG('k','o','p',' '), HB_TAG_NONE }, /* Waube != Komi-Permyak */ -/*{HB_TAG('k','o','s',' '), HB_TAG('K','O','S',' ')},*/ /* Kosraean */ {HB_TAG('k','o','y',' '), HB_TAG('A','T','H',' ')}, /* Koyukon -> Athapaskan */ - {HB_TAG('k','o','z',' '), HB_TAG_NONE }, /* Korak != Komi-Zyrian */ {HB_TAG('k','p','e',' '), HB_TAG('K','P','L',' ')}, /* Kpelle [macrolanguage] */ - {HB_TAG('k','p','l',' '), HB_TAG_NONE }, /* Kpala != Kpelle */ {HB_TAG('k','p','p',' '), HB_TAG('K','R','N',' ')}, /* Paku Karen (retired code) -> Karen */ - {HB_TAG('k','p','v',' '), HB_TAG('K','O','Z',' ')}, /* Komi-Zyrian */ - {HB_TAG('k','p','v',' '), HB_TAG('K','O','M',' ')}, /* Komi-Zyrian -> Komi */ {HB_TAG('k','p','y',' '), HB_TAG('K','Y','K',' ')}, /* Koryak */ {HB_TAG('k','q','s',' '), HB_TAG('K','I','S',' ')}, /* Northern Kissi -> Kisii */ {HB_TAG('k','q','y',' '), HB_TAG('K','R','T',' ')}, /* Koorete */ - {HB_TAG('k','r','c',' '), HB_TAG('K','A','R',' ')}, /* Karachay-Balkar -> Karachay */ - {HB_TAG('k','r','c',' '), HB_TAG('B','A','L',' ')}, /* Karachay-Balkar -> Balkar */ - {HB_TAG('k','r','i',' '), HB_TAG('K','R','I',' ')}, /* Krio */ - {HB_TAG('k','r','i',' '), HB_TAG('C','P','P',' ')}, /* Krio -> Creoles */ - {HB_TAG('k','r','k',' '), HB_TAG_NONE }, /* Kerek != Karakalpak */ -/*{HB_TAG('k','r','l',' '), HB_TAG('K','R','L',' ')},*/ /* Karelian */ - {HB_TAG('k','r','m',' '), HB_TAG_NONE }, /* Krim (retired code) != Karaim */ - {HB_TAG('k','r','n',' '), HB_TAG_NONE }, /* Sapo != Karen */ {HB_TAG('k','r','t',' '), HB_TAG('K','N','R',' ')}, /* Tumari Kanuri -> Kanuri */ {HB_TAG('k','r','u',' '), HB_TAG('K','U','U',' ')}, /* Kurukh */ {HB_TAG('k','s','h',' '), HB_TAG('K','S','H','0')}, /* Kölsch -> Ripuarian */ - {HB_TAG('k','s','i',' '), HB_TAG_NONE }, /* Krisa != Khasi */ - {HB_TAG('k','s','m',' '), HB_TAG_NONE }, /* Kumba != Kildin Sami */ {HB_TAG('k','s','s',' '), HB_TAG('K','I','S',' ')}, /* Southern Kisi -> Kisii */ -/*{HB_TAG('k','s','u',' '), HB_TAG('K','S','U',' ')},*/ /* Khamyang */ - {HB_TAG('k','s','w',' '), HB_TAG('K','S','W',' ')}, /* S’gaw Karen */ - {HB_TAG('k','s','w',' '), HB_TAG('K','R','N',' ')}, /* S'gaw Karen -> Karen */ {HB_TAG('k','t','b',' '), HB_TAG('K','E','B',' ')}, /* Kambaata -> Kebena */ {HB_TAG('k','t','u',' '), HB_TAG('K','O','N',' ')}, /* Kituba (Democratic Republic of Congo) -> Kikongo */ {HB_TAG('k','t','w',' '), HB_TAG('A','T','H',' ')}, /* Kato -> Athapaskan */ - {HB_TAG('k','u','i',' '), HB_TAG_NONE }, /* Kuikúro-Kalapálo != Kui */ - {HB_TAG('k','u','l',' '), HB_TAG_NONE }, /* Kulere != Kulvi */ -/*{HB_TAG('k','u','m',' '), HB_TAG('K','U','M',' ')},*/ /* Kumyk */ {HB_TAG('k','u','u',' '), HB_TAG('A','T','H',' ')}, /* Upper Kuskokwim -> Athapaskan */ {HB_TAG('k','u','w',' '), HB_TAG('B','A','D','0')}, /* Kpagua -> Banda */ - {HB_TAG('k','u','y',' '), HB_TAG_NONE }, /* Kuuku-Ya'u != Kuy */ {HB_TAG('k','v','b',' '), HB_TAG('M','L','Y',' ')}, /* Kubu -> Malay */ {HB_TAG('k','v','l',' '), HB_TAG('K','R','N',' ')}, /* Kayaw -> Karen */ - {HB_TAG('k','v','q',' '), HB_TAG('K','V','Q',' ')}, /* Geba Karen */ - {HB_TAG('k','v','q',' '), HB_TAG('K','R','N',' ')}, /* Geba Karen -> Karen */ {HB_TAG('k','v','r',' '), HB_TAG('M','L','Y',' ')}, /* Kerinci -> Malay */ {HB_TAG('k','v','t',' '), HB_TAG('K','R','N',' ')}, /* Lahta Karen -> Karen */ {HB_TAG('k','v','u',' '), HB_TAG('K','R','N',' ')}, /* Yinbaw Karen -> Karen */ {HB_TAG('k','v','y',' '), HB_TAG('K','R','N',' ')}, /* Yintale Karen -> Karen */ -/*{HB_TAG('k','w','k',' '), HB_TAG('K','W','K',' ')},*/ /* Kwakʼwala */ {HB_TAG('k','w','w',' '), HB_TAG('C','P','P',' ')}, /* Kwinti -> Creoles */ {HB_TAG('k','w','y',' '), HB_TAG('K','O','N','0')}, /* San Salvador Kongo -> Kongo */ {HB_TAG('k','x','c',' '), HB_TAG('K','M','S',' ')}, /* Konso -> Komso */ @@ -930,195 +793,98 @@ static const LangTag ot_languages3[] = { {HB_TAG('k','x','k',' '), HB_TAG('K','R','N',' ')}, /* Zayein Karen -> Karen */ {HB_TAG('k','x','l',' '), HB_TAG('K','U','U',' ')}, /* Nepali Kurux (retired code) -> Kurukh */ {HB_TAG('k','x','u',' '), HB_TAG('K','U','I',' ')}, /* Kui (India) (retired code) */ - {HB_TAG('k','y','k',' '), HB_TAG_NONE }, /* Kamayo != Koryak */ - {HB_TAG('k','y','u',' '), HB_TAG('K','Y','U',' ')}, /* Western Kayah */ - {HB_TAG('k','y','u',' '), HB_TAG('K','R','N',' ')}, /* Western Kayah -> Karen */ {HB_TAG('l','a','c',' '), HB_TAG('M','Y','N',' ')}, /* Lacandon -> Mayan */ {HB_TAG('l','a','d',' '), HB_TAG('J','U','D',' ')}, /* Ladino */ - {HB_TAG('l','a','h',' '), HB_TAG_NONE }, /* Lahnda [macrolanguage] != Lahuli */ - {HB_TAG('l','a','k',' '), HB_TAG_NONE }, /* Laka (Nigeria) (retired code) != Lak */ - {HB_TAG('l','a','m',' '), HB_TAG_NONE }, /* Lamba != Lambani */ - {HB_TAG('l','a','z',' '), HB_TAG_NONE }, /* Aribwatsa != Laz */ {HB_TAG('l','b','e',' '), HB_TAG('L','A','K',' ')}, /* Lak */ {HB_TAG('l','b','j',' '), HB_TAG('L','D','K',' ')}, /* Ladakhi */ {HB_TAG('l','b','l',' '), HB_TAG('B','I','K',' ')}, /* Libon Bikol -> Bikol */ {HB_TAG('l','c','e',' '), HB_TAG('M','L','Y',' ')}, /* Loncong -> Malay */ {HB_TAG('l','c','f',' '), HB_TAG('M','L','Y',' ')}, /* Lubu -> Malay */ {HB_TAG('l','d','i',' '), HB_TAG('K','O','N','0')}, /* Laari -> Kongo */ - {HB_TAG('l','d','k',' '), HB_TAG_NONE }, /* Leelau != Ladakhi */ -/*{HB_TAG('l','e','f',' '), HB_TAG('L','E','F',' ')},*/ /* Lelemi */ -/*{HB_TAG('l','e','z',' '), HB_TAG('L','E','Z',' ')},*/ /* Lezghian -> Lezgi */ {HB_TAG('l','i','f',' '), HB_TAG('L','M','B',' ')}, /* Limbu */ -/*{HB_TAG('l','i','j',' '), HB_TAG('L','I','J',' ')},*/ /* Ligurian */ {HB_TAG('l','i','r',' '), HB_TAG('C','P','P',' ')}, /* Liberian English -> Creoles */ -/*{HB_TAG('l','i','s',' '), HB_TAG('L','I','S',' ')},*/ /* Lisu */ -/*{HB_TAG('l','i','v',' '), HB_TAG('L','I','V',' ')},*/ /* Liv */ {HB_TAG('l','i','w',' '), HB_TAG('M','L','Y',' ')}, /* Col -> Malay */ {HB_TAG('l','i','y',' '), HB_TAG('B','A','D','0')}, /* Banda-Bambari -> Banda */ -/*{HB_TAG('l','j','p',' '), HB_TAG('L','J','P',' ')},*/ /* Lampung Api -> Lampung */ {HB_TAG('l','k','b',' '), HB_TAG('L','U','H',' ')}, /* Kabras -> Luyia */ -/*{HB_TAG('l','k','i',' '), HB_TAG('L','K','I',' ')},*/ /* Laki */ {HB_TAG('l','k','o',' '), HB_TAG('L','U','H',' ')}, /* Khayo -> Luyia */ {HB_TAG('l','k','s',' '), HB_TAG('L','U','H',' ')}, /* Kisa -> Luyia */ {HB_TAG('l','l','d',' '), HB_TAG('L','A','D',' ')}, /* Ladin */ - {HB_TAG('l','m','a',' '), HB_TAG_NONE }, /* East Limba != Low Mari */ - {HB_TAG('l','m','b',' '), HB_TAG_NONE }, /* Merei != Limbu */ {HB_TAG('l','m','n',' '), HB_TAG('L','A','M',' ')}, /* Lambadi -> Lambani */ -/*{HB_TAG('l','m','o',' '), HB_TAG('L','M','O',' ')},*/ /* Lombard */ - {HB_TAG('l','m','w',' '), HB_TAG_NONE }, /* Lake Miwok != Lomwe */ {HB_TAG('l','n','a',' '), HB_TAG('B','A','D','0')}, /* Langbashe -> Banda */ {HB_TAG('l','n','l',' '), HB_TAG('B','A','D','0')}, /* South Central Banda -> Banda */ -/*{HB_TAG('l','o','m',' '), HB_TAG('L','O','M',' ')},*/ /* Loma (Liberia) */ {HB_TAG('l','o','u',' '), HB_TAG('C','P','P',' ')}, /* Louisiana Creole -> Creoles */ -/*{HB_TAG('l','p','o',' '), HB_TAG('L','P','O',' ')},*/ /* Lipo */ -/*{HB_TAG('l','r','c',' '), HB_TAG('L','R','C',' ')},*/ /* Northern Luri -> Luri */ {HB_TAG('l','r','i',' '), HB_TAG('L','U','H',' ')}, /* Marachi -> Luyia */ {HB_TAG('l','r','m',' '), HB_TAG('L','U','H',' ')}, /* Marama -> Luyia */ {HB_TAG('l','r','t',' '), HB_TAG('C','P','P',' ')}, /* Larantuka Malay -> Creoles */ - {HB_TAG('l','s','b',' '), HB_TAG_NONE }, /* Burundian Sign Language != Lower Sorbian */ {HB_TAG('l','s','m',' '), HB_TAG('L','U','H',' ')}, /* Saamia -> Luyia */ {HB_TAG('l','t','g',' '), HB_TAG('L','V','I',' ')}, /* Latgalian -> Latvian */ - {HB_TAG('l','t','h',' '), HB_TAG_NONE }, /* Thur != Lithuanian */ {HB_TAG('l','t','o',' '), HB_TAG('L','U','H',' ')}, /* Tsotso -> Luyia */ {HB_TAG('l','t','s',' '), HB_TAG('L','U','H',' ')}, /* Tachoni -> Luyia */ -/*{HB_TAG('l','u','a',' '), HB_TAG('L','U','A',' ')},*/ /* Luba-Lulua */ {HB_TAG('l','u','h',' '), HB_TAG('Z','H','S',' ')}, /* Leizhou Chinese -> Chinese, Simplified */ -/*{HB_TAG('l','u','o',' '), HB_TAG('L','U','O',' ')},*/ /* Luo (Kenya and Tanzania) */ - {HB_TAG('l','u','s',' '), HB_TAG('M','I','Z',' ')}, /* Lushai -> Mizo */ - {HB_TAG('l','u','s',' '), HB_TAG('Q','I','N',' ')}, /* Lushai -> Chin */ -/*{HB_TAG('l','u','t',' '), HB_TAG('L','U','T',' ')},*/ /* Lushootseed */ {HB_TAG('l','u','y',' '), HB_TAG('L','U','H',' ')}, /* Luyia [macrolanguage] */ {HB_TAG('l','u','z',' '), HB_TAG('L','R','C',' ')}, /* Southern Luri -> Luri */ - {HB_TAG('l','v','i',' '), HB_TAG_NONE }, /* Lavi != Latvian */ {HB_TAG('l','v','s',' '), HB_TAG('L','V','I',' ')}, /* Standard Latvian -> Latvian */ {HB_TAG('l','w','g',' '), HB_TAG('L','U','H',' ')}, /* Wanga -> Luyia */ {HB_TAG('l','z','h',' '), HB_TAG('Z','H','T',' ')}, /* Literary Chinese -> Chinese, Traditional */ {HB_TAG('l','z','z',' '), HB_TAG('L','A','Z',' ')}, /* Laz */ -/*{HB_TAG('m','a','d',' '), HB_TAG('M','A','D',' ')},*/ /* Madurese -> Madura */ -/*{HB_TAG('m','a','g',' '), HB_TAG('M','A','G',' ')},*/ /* Magahi */ {HB_TAG('m','a','i',' '), HB_TAG('M','T','H',' ')}, /* Maithili */ - {HB_TAG('m','a','j',' '), HB_TAG_NONE }, /* Jalapa De Díaz Mazatec != Majang */ {HB_TAG('m','a','k',' '), HB_TAG('M','K','R',' ')}, /* Makasar */ - {HB_TAG('m','a','m',' '), HB_TAG('M','A','M',' ')}, /* Mam */ - {HB_TAG('m','a','m',' '), HB_TAG('M','Y','N',' ')}, /* Mam -> Mayan */ {HB_TAG('m','a','n',' '), HB_TAG('M','N','K',' ')}, /* Mandingo [macrolanguage] -> Maninka */ - {HB_TAG('m','a','p',' '), HB_TAG_NONE }, /* Austronesian [collection] != Mapudungun */ - {HB_TAG('m','a','w',' '), HB_TAG_NONE }, /* Mampruli != Marwari */ - {HB_TAG('m','a','x',' '), HB_TAG('M','L','Y',' ')}, /* North Moluccan Malay -> Malay */ - {HB_TAG('m','a','x',' '), HB_TAG('C','P','P',' ')}, /* North Moluccan Malay -> Creoles */ {HB_TAG('m','b','f',' '), HB_TAG('C','P','P',' ')}, /* Baba Malay -> Creoles */ - {HB_TAG('m','b','n',' '), HB_TAG_NONE }, /* Macaguán != Mbundu */ -/*{HB_TAG('m','b','o',' '), HB_TAG('M','B','O',' ')},*/ /* Mbo (Cameroon) */ - {HB_TAG('m','c','h',' '), HB_TAG_NONE }, /* Maquiritari != Manchu */ {HB_TAG('m','c','m',' '), HB_TAG('C','P','P',' ')}, /* Malaccan Creole Portuguese -> Creoles */ - {HB_TAG('m','c','r',' '), HB_TAG_NONE }, /* Menya != Moose Cree */ {HB_TAG('m','c','t',' '), HB_TAG('B','T','I',' ')}, /* Mengisa -> Beti */ - {HB_TAG('m','d','e',' '), HB_TAG_NONE }, /* Maba (Chad) != Mende */ {HB_TAG('m','d','f',' '), HB_TAG('M','O','K',' ')}, /* Moksha */ -/*{HB_TAG('m','d','r',' '), HB_TAG('M','D','R',' ')},*/ /* Mandar */ {HB_TAG('m','d','y',' '), HB_TAG('M','L','E',' ')}, /* Male (Ethiopia) */ {HB_TAG('m','e','n',' '), HB_TAG('M','D','E',' ')}, /* Mende (Sierra Leone) */ {HB_TAG('m','e','o',' '), HB_TAG('M','L','Y',' ')}, /* Kedah Malay -> Malay */ -/*{HB_TAG('m','e','r',' '), HB_TAG('M','E','R',' ')},*/ /* Meru */ -/*{HB_TAG('m','e','v',' '), HB_TAG('M','E','V',' ')},*/ /* Mano */ - {HB_TAG('m','f','a',' '), HB_TAG('M','F','A',' ')}, /* Pattani Malay */ - {HB_TAG('m','f','a',' '), HB_TAG('M','L','Y',' ')}, /* Pattani Malay -> Malay */ {HB_TAG('m','f','b',' '), HB_TAG('M','L','Y',' ')}, /* Bangka -> Malay */ - {HB_TAG('m','f','e',' '), HB_TAG('M','F','E',' ')}, /* Morisyen */ - {HB_TAG('m','f','e',' '), HB_TAG('C','P','P',' ')}, /* Morisyen -> Creoles */ {HB_TAG('m','f','p',' '), HB_TAG('C','P','P',' ')}, /* Makassar Malay -> Creoles */ {HB_TAG('m','g','a',' '), HB_TAG('S','G','A',' ')}, /* Middle Irish (900-1200) -> Old Irish */ {HB_TAG('m','h','c',' '), HB_TAG('M','Y','N',' ')}, /* Mocho -> Mayan */ {HB_TAG('m','h','r',' '), HB_TAG('L','M','A',' ')}, /* Eastern Mari -> Low Mari */ {HB_TAG('m','h','v',' '), HB_TAG('A','R','K',' ')}, /* Arakanese (retired code) -> Rakhine */ - {HB_TAG('m','i','n',' '), HB_TAG('M','I','N',' ')}, /* Minangkabau */ - {HB_TAG('m','i','n',' '), HB_TAG('M','L','Y',' ')}, /* Minangkabau -> Malay */ - {HB_TAG('m','i','z',' '), HB_TAG_NONE }, /* Coatzospan Mixtec != Mizo */ {HB_TAG('m','k','n',' '), HB_TAG('C','P','P',' ')}, /* Kupang Malay -> Creoles */ - {HB_TAG('m','k','r',' '), HB_TAG_NONE }, /* Malas != Makasar */ {HB_TAG('m','k','u',' '), HB_TAG('M','N','K',' ')}, /* Konyanka Maninka -> Maninka */ -/*{HB_TAG('m','k','w',' '), HB_TAG('M','K','W',' ')},*/ /* Kituba (Congo) */ - {HB_TAG('m','l','e',' '), HB_TAG_NONE }, /* Manambu != Male */ - {HB_TAG('m','l','n',' '), HB_TAG_NONE }, /* Malango != Malinke */ - {HB_TAG('m','l','q',' '), HB_TAG('M','L','N',' ')}, /* Western Maninkakan -> Malinke */ - {HB_TAG('m','l','q',' '), HB_TAG('M','N','K',' ')}, /* Western Maninkakan -> Maninka */ - {HB_TAG('m','l','r',' '), HB_TAG_NONE }, /* Vame != Malayalam Reformed */ {HB_TAG('m','m','r',' '), HB_TAG('H','M','N',' ')}, /* Western Xiangxi Miao -> Hmong */ {HB_TAG('m','n','c',' '), HB_TAG('M','C','H',' ')}, /* Manchu */ - {HB_TAG('m','n','d',' '), HB_TAG_NONE }, /* Mondé != Mandinka */ - {HB_TAG('m','n','g',' '), HB_TAG_NONE }, /* Eastern Mnong != Mongolian */ {HB_TAG('m','n','h',' '), HB_TAG('B','A','D','0')}, /* Mono (Democratic Republic of Congo) -> Banda */ -/*{HB_TAG('m','n','i',' '), HB_TAG('M','N','I',' ')},*/ /* Manipuri */ - {HB_TAG('m','n','k',' '), HB_TAG('M','N','D',' ')}, /* Mandinka */ - {HB_TAG('m','n','k',' '), HB_TAG('M','N','K',' ')}, /* Mandinka -> Maninka */ {HB_TAG('m','n','p',' '), HB_TAG('Z','H','S',' ')}, /* Min Bei Chinese -> Chinese, Simplified */ {HB_TAG('m','n','s',' '), HB_TAG('M','A','N',' ')}, /* Mansi */ - {HB_TAG('m','n','w',' '), HB_TAG('M','O','N',' ')}, /* Mon */ - {HB_TAG('m','n','w',' '), HB_TAG('M','O','N','T')}, /* Mon -> Thailand Mon */ - {HB_TAG('m','n','x',' '), HB_TAG_NONE }, /* Manikion != Manx */ {HB_TAG('m','o','d',' '), HB_TAG('C','P','P',' ')}, /* Mobilian -> Creoles */ -/*{HB_TAG('m','o','h',' '), HB_TAG('M','O','H',' ')},*/ /* Mohawk */ - {HB_TAG('m','o','k',' '), HB_TAG_NONE }, /* Morori != Moksha */ {HB_TAG('m','o','p',' '), HB_TAG('M','Y','N',' ')}, /* Mopán Maya -> Mayan */ - {HB_TAG('m','o','r',' '), HB_TAG_NONE }, /* Moro != Moroccan */ -/*{HB_TAG('m','o','s',' '), HB_TAG('M','O','S',' ')},*/ /* Mossi */ {HB_TAG('m','p','e',' '), HB_TAG('M','A','J',' ')}, /* Majang */ {HB_TAG('m','q','g',' '), HB_TAG('M','L','Y',' ')}, /* Kota Bangun Kutai Malay -> Malay */ {HB_TAG('m','r','h',' '), HB_TAG('Q','I','N',' ')}, /* Mara Chin -> Chin */ {HB_TAG('m','r','j',' '), HB_TAG('H','M','A',' ')}, /* Western Mari -> High Mari */ {HB_TAG('m','s','c',' '), HB_TAG('M','N','K',' ')}, /* Sankaran Maninka -> Maninka */ {HB_TAG('m','s','h',' '), HB_TAG('M','L','G',' ')}, /* Masikoro Malagasy -> Malagasy */ - {HB_TAG('m','s','i',' '), HB_TAG('M','L','Y',' ')}, /* Sabah Malay -> Malay */ - {HB_TAG('m','s','i',' '), HB_TAG('C','P','P',' ')}, /* Sabah Malay -> Creoles */ - {HB_TAG('m','t','h',' '), HB_TAG_NONE }, /* Munggui != Maithili */ {HB_TAG('m','t','r',' '), HB_TAG('M','A','W',' ')}, /* Mewari -> Marwari */ - {HB_TAG('m','t','s',' '), HB_TAG_NONE }, /* Yora != Maltese */ {HB_TAG('m','u','d',' '), HB_TAG('C','P','P',' ')}, /* Mednyj Aleut -> Creoles */ {HB_TAG('m','u','i',' '), HB_TAG('M','L','Y',' ')}, /* Musi -> Malay */ - {HB_TAG('m','u','n',' '), HB_TAG_NONE }, /* Munda [collection] != Mundari */ {HB_TAG('m','u','p',' '), HB_TAG('R','A','J',' ')}, /* Malvi -> Rajasthani */ {HB_TAG('m','u','q',' '), HB_TAG('H','M','N',' ')}, /* Eastern Xiangxi Miao -> Hmong */ -/*{HB_TAG('m','u','s',' '), HB_TAG('M','U','S',' ')},*/ /* Creek -> Muscogee */ {HB_TAG('m','v','b',' '), HB_TAG('A','T','H',' ')}, /* Mattole -> Athapaskan */ {HB_TAG('m','v','e',' '), HB_TAG('M','A','W',' ')}, /* Marwari (Pakistan) */ {HB_TAG('m','v','f',' '), HB_TAG('M','N','G',' ')}, /* Peripheral Mongolian -> Mongolian */ {HB_TAG('m','w','k',' '), HB_TAG('M','N','K',' ')}, /* Kita Maninkakan -> Maninka */ -/*{HB_TAG('m','w','l',' '), HB_TAG('M','W','L',' ')},*/ /* Mirandese */ {HB_TAG('m','w','q',' '), HB_TAG('Q','I','N',' ')}, /* Mün Chin -> Chin */ {HB_TAG('m','w','r',' '), HB_TAG('M','A','W',' ')}, /* Marwari [macrolanguage] */ - {HB_TAG('m','w','w',' '), HB_TAG('M','W','W',' ')}, /* Hmong Daw */ - {HB_TAG('m','w','w',' '), HB_TAG('H','M','N',' ')}, /* Hmong Daw -> Hmong */ {HB_TAG('m','y','m',' '), HB_TAG('M','E','N',' ')}, /* Me’en */ -/*{HB_TAG('m','y','n',' '), HB_TAG('M','Y','N',' ')},*/ /* Mayan [collection] */ {HB_TAG('m','y','q',' '), HB_TAG('M','N','K',' ')}, /* Forest Maninka (retired code) -> Maninka */ {HB_TAG('m','y','v',' '), HB_TAG('E','R','Z',' ')}, /* Erzya */ {HB_TAG('m','z','b',' '), HB_TAG('B','B','R',' ')}, /* Tumzabt -> Berber */ -/*{HB_TAG('m','z','n',' '), HB_TAG('M','Z','N',' ')},*/ /* Mazanderani */ {HB_TAG('m','z','s',' '), HB_TAG('C','P','P',' ')}, /* Macanese -> Creoles */ - {HB_TAG('n','a','g',' '), HB_TAG('N','A','G',' ')}, /* Naga Pidgin -> Naga-Assamese */ - {HB_TAG('n','a','g',' '), HB_TAG('C','P','P',' ')}, /* Naga Pidgin -> Creoles */ -/*{HB_TAG('n','a','h',' '), HB_TAG('N','A','H',' ')},*/ /* Nahuatl [collection] */ {HB_TAG('n','a','n',' '), HB_TAG('Z','H','S',' ')}, /* Min Nan Chinese -> Chinese, Simplified */ -/*{HB_TAG('n','a','p',' '), HB_TAG('N','A','P',' ')},*/ /* Neapolitan */ - {HB_TAG('n','a','s',' '), HB_TAG_NONE }, /* Naasioi != Naskapi */ {HB_TAG('n','a','z',' '), HB_TAG('N','A','H',' ')}, /* Coatepec Nahuatl -> Nahuatl */ {HB_TAG('n','c','h',' '), HB_TAG('N','A','H',' ')}, /* Central Huasteca Nahuatl -> Nahuatl */ {HB_TAG('n','c','i',' '), HB_TAG('N','A','H',' ')}, /* Classical Nahuatl -> Nahuatl */ {HB_TAG('n','c','j',' '), HB_TAG('N','A','H',' ')}, /* Northern Puebla Nahuatl -> Nahuatl */ {HB_TAG('n','c','l',' '), HB_TAG('N','A','H',' ')}, /* Michoacán Nahuatl -> Nahuatl */ - {HB_TAG('n','c','r',' '), HB_TAG_NONE }, /* Ncane != N-Cree */ {HB_TAG('n','c','x',' '), HB_TAG('N','A','H',' ')}, /* Central Puebla Nahuatl -> Nahuatl */ - {HB_TAG('n','d','b',' '), HB_TAG_NONE }, /* Kenswei Nsei != Ndebele */ -/*{HB_TAG('n','d','c',' '), HB_TAG('N','D','C',' ')},*/ /* Ndau */ - {HB_TAG('n','d','g',' '), HB_TAG_NONE }, /* Ndengereko != Ndonga */ -/*{HB_TAG('n','d','s',' '), HB_TAG('N','D','S',' ')},*/ /* Low Saxon */ {HB_TAG('n','e','f',' '), HB_TAG('C','P','P',' ')}, /* Nefamese -> Creoles */ -/*{HB_TAG('n','e','w',' '), HB_TAG('N','E','W',' ')},*/ /* Newari */ -/*{HB_TAG('n','g','a',' '), HB_TAG('N','G','A',' ')},*/ /* Ngbaka */ {HB_TAG('n','g','l',' '), HB_TAG('L','M','W',' ')}, /* Lomwe */ {HB_TAG('n','g','m',' '), HB_TAG('C','P','P',' ')}, /* Ngatik Men's Creole -> Creoles */ {HB_TAG('n','g','o',' '), HB_TAG('S','X','T',' ')}, /* Ngoni (retired code) -> Sutu */ - {HB_TAG('n','g','r',' '), HB_TAG_NONE }, /* Engdewu != Nagari */ {HB_TAG('n','g','u',' '), HB_TAG('N','A','H',' ')}, /* Guerrero Nahuatl -> Nahuatl */ {HB_TAG('n','h','c',' '), HB_TAG('N','A','H',' ')}, /* Tabasco Nahuatl -> Nahuatl */ {HB_TAG('n','h','d',' '), HB_TAG('G','U','A',' ')}, /* Chiripá -> Guarani */ @@ -1137,12 +903,9 @@ static const LangTag ot_languages3[] = { {HB_TAG('n','h','y',' '), HB_TAG('N','A','H',' ')}, /* Northern Oaxaca Nahuatl -> Nahuatl */ {HB_TAG('n','h','z',' '), HB_TAG('N','A','H',' ')}, /* Santa María La Alta Nahuatl -> Nahuatl */ {HB_TAG('n','i','q',' '), HB_TAG('K','A','L',' ')}, /* Nandi -> Kalenjin */ - {HB_TAG('n','i','s',' '), HB_TAG_NONE }, /* Nimi != Nisi */ -/*{HB_TAG('n','i','u',' '), HB_TAG('N','I','U',' ')},*/ /* Niuean */ {HB_TAG('n','i','v',' '), HB_TAG('G','I','L',' ')}, /* Gilyak */ {HB_TAG('n','j','t',' '), HB_TAG('C','P','P',' ')}, /* Ndyuka-Trio Pidgin -> Creoles */ {HB_TAG('n','j','z',' '), HB_TAG('N','I','S',' ')}, /* Nyishi -> Nisi */ - {HB_TAG('n','k','o',' '), HB_TAG_NONE }, /* Nkonya != N’Ko */ {HB_TAG('n','k','x',' '), HB_TAG('I','J','O',' ')}, /* Nkoroo -> Ijo */ {HB_TAG('n','l','a',' '), HB_TAG('B','M','L',' ')}, /* Ngombale -> Bamileke */ {HB_TAG('n','l','e',' '), HB_TAG('L','U','H',' ')}, /* East Nyala -> Luyia */ @@ -1151,329 +914,147 @@ static const LangTag ot_languages3[] = { {HB_TAG('n','n','h',' '), HB_TAG('B','M','L',' ')}, /* Ngiemboon -> Bamileke */ {HB_TAG('n','n','z',' '), HB_TAG('B','M','L',' ')}, /* Nda'nda' -> Bamileke */ {HB_TAG('n','o','d',' '), HB_TAG('N','T','A',' ')}, /* Northern Thai -> Northern Tai */ -/*{HB_TAG('n','o','e',' '), HB_TAG('N','O','E',' ')},*/ /* Nimadi */ -/*{HB_TAG('n','o','g',' '), HB_TAG('N','O','G',' ')},*/ /* Nogai */ -/*{HB_TAG('n','o','p',' '), HB_TAG('N','O','P',' ')},*/ /* Numanggang */ -/*{HB_TAG('n','o','v',' '), HB_TAG('N','O','V',' ')},*/ /* Novial */ {HB_TAG('n','p','i',' '), HB_TAG('N','E','P',' ')}, /* Nepali */ {HB_TAG('n','p','l',' '), HB_TAG('N','A','H',' ')}, /* Southeastern Puebla Nahuatl -> Nahuatl */ {HB_TAG('n','q','o',' '), HB_TAG('N','K','O',' ')}, /* N’Ko */ {HB_TAG('n','s','k',' '), HB_TAG('N','A','S',' ')}, /* Naskapi */ - {HB_TAG('n','s','m',' '), HB_TAG_NONE }, /* Sumi Naga != Northern Sami */ -/*{HB_TAG('n','s','o',' '), HB_TAG('N','S','O',' ')},*/ /* Northern Sotho */ {HB_TAG('n','s','u',' '), HB_TAG('N','A','H',' ')}, /* Sierra Negra Nahuatl -> Nahuatl */ - {HB_TAG('n','t','o',' '), HB_TAG_NONE }, /* Ntomba != Esperanto */ {HB_TAG('n','u','e',' '), HB_TAG('B','A','D','0')}, /* Ngundu -> Banda */ -/*{HB_TAG('n','u','k',' '), HB_TAG('N','U','K',' ')},*/ /* Nuu-chah-nulth */ {HB_TAG('n','u','u',' '), HB_TAG('B','A','D','0')}, /* Ngbundu -> Banda */ {HB_TAG('n','u','z',' '), HB_TAG('N','A','H',' ')}, /* Tlamacazapa Nahuatl -> Nahuatl */ {HB_TAG('n','w','e',' '), HB_TAG('B','M','L',' ')}, /* Ngwe -> Bamileke */ {HB_TAG('n','y','d',' '), HB_TAG('L','U','H',' ')}, /* Nyore -> Luyia */ -/*{HB_TAG('n','y','m',' '), HB_TAG('N','Y','M',' ')},*/ /* Nyamwezi */ {HB_TAG('n','y','n',' '), HB_TAG('N','K','L',' ')}, /* Nyankole */ -/*{HB_TAG('n','z','a',' '), HB_TAG('N','Z','A',' ')},*/ /* Tigon Mbembe -> Mbembe Tigon */ -/*{HB_TAG('o','j','b',' '), HB_TAG('O','J','B',' ')},*/ /* Northwestern Ojibwa -> Ojibway */ {HB_TAG('o','j','c',' '), HB_TAG('O','J','B',' ')}, /* Central Ojibwa -> Ojibway */ {HB_TAG('o','j','g',' '), HB_TAG('O','J','B',' ')}, /* Eastern Ojibwa -> Ojibway */ - {HB_TAG('o','j','s',' '), HB_TAG('O','C','R',' ')}, /* Severn Ojibwa -> Oji-Cree */ - {HB_TAG('o','j','s',' '), HB_TAG('O','J','B',' ')}, /* Severn Ojibwa -> Ojibway */ {HB_TAG('o','j','w',' '), HB_TAG('O','J','B',' ')}, /* Western Ojibwa -> Ojibway */ {HB_TAG('o','k','d',' '), HB_TAG('I','J','O',' ')}, /* Okodia -> Ijo */ {HB_TAG('o','k','i',' '), HB_TAG('K','A','L',' ')}, /* Okiek -> Kalenjin */ {HB_TAG('o','k','m',' '), HB_TAG('K','O','H',' ')}, /* Middle Korean (10th-16th cent.) -> Korean Old Hangul */ {HB_TAG('o','k','r',' '), HB_TAG('I','J','O',' ')}, /* Kirike -> Ijo */ -/*{HB_TAG('o','n','e',' '), HB_TAG('O','N','E',' ')},*/ /* Oneida */ -/*{HB_TAG('o','n','o',' '), HB_TAG('O','N','O',' ')},*/ /* Onondaga */ {HB_TAG('o','n','x',' '), HB_TAG('C','P','P',' ')}, /* Onin Based Pidgin -> Creoles */ {HB_TAG('o','o','r',' '), HB_TAG('C','P','P',' ')}, /* Oorlams -> Creoles */ {HB_TAG('o','r','c',' '), HB_TAG('O','R','O',' ')}, /* Orma -> Oromo */ {HB_TAG('o','r','n',' '), HB_TAG('M','L','Y',' ')}, /* Orang Kanaq -> Malay */ - {HB_TAG('o','r','o',' '), HB_TAG_NONE }, /* Orokolo != Oromo */ {HB_TAG('o','r','r',' '), HB_TAG('I','J','O',' ')}, /* Oruma -> Ijo */ {HB_TAG('o','r','s',' '), HB_TAG('M','L','Y',' ')}, /* Orang Seletar -> Malay */ {HB_TAG('o','r','y',' '), HB_TAG('O','R','I',' ')}, /* Odia */ {HB_TAG('o','t','w',' '), HB_TAG('O','J','B',' ')}, /* Ottawa -> Ojibway */ {HB_TAG('o','u','a',' '), HB_TAG('B','B','R',' ')}, /* Tagargrent -> Berber */ - {HB_TAG('p','a','a',' '), HB_TAG_NONE }, /* Papuan [collection] != Palestinian Aramaic */ -/*{HB_TAG('p','a','g',' '), HB_TAG('P','A','G',' ')},*/ /* Pangasinan */ - {HB_TAG('p','a','l',' '), HB_TAG_NONE }, /* Pahlavi != Pali */ -/*{HB_TAG('p','a','m',' '), HB_TAG('P','A','M',' ')},*/ /* Pampanga -> Pampangan */ - {HB_TAG('p','a','p',' '), HB_TAG('P','A','P','0')}, /* Papiamento -> Papiamentu */ - {HB_TAG('p','a','p',' '), HB_TAG('C','P','P',' ')}, /* Papiamento -> Creoles */ - {HB_TAG('p','a','s',' '), HB_TAG_NONE }, /* Papasena != Pashto */ -/*{HB_TAG('p','a','u',' '), HB_TAG('P','A','U',' ')},*/ /* Palauan */ {HB_TAG('p','b','t',' '), HB_TAG('P','A','S',' ')}, /* Southern Pashto -> Pashto */ {HB_TAG('p','b','u',' '), HB_TAG('P','A','S',' ')}, /* Northern Pashto -> Pashto */ -/*{HB_TAG('p','c','c',' '), HB_TAG('P','C','C',' ')},*/ /* Bouyei */ -/*{HB_TAG('p','c','d',' '), HB_TAG('P','C','D',' ')},*/ /* Picard */ {HB_TAG('p','c','e',' '), HB_TAG('P','L','G',' ')}, /* Ruching Palaung -> Palaung */ {HB_TAG('p','c','k',' '), HB_TAG('Q','I','N',' ')}, /* Paite Chin -> Chin */ {HB_TAG('p','c','m',' '), HB_TAG('C','P','P',' ')}, /* Nigerian Pidgin -> Creoles */ -/*{HB_TAG('p','d','c',' '), HB_TAG('P','D','C',' ')},*/ /* Pennsylvania German */ {HB_TAG('p','d','u',' '), HB_TAG('K','R','N',' ')}, /* Kayan -> Karen */ {HB_TAG('p','e','a',' '), HB_TAG('C','P','P',' ')}, /* Peranakan Indonesian -> Creoles */ {HB_TAG('p','e','l',' '), HB_TAG('M','L','Y',' ')}, /* Pekal -> Malay */ {HB_TAG('p','e','s',' '), HB_TAG('F','A','R',' ')}, /* Iranian Persian -> Persian */ {HB_TAG('p','e','y',' '), HB_TAG('C','P','P',' ')}, /* Petjo -> Creoles */ - {HB_TAG('p','g','a',' '), HB_TAG('A','R','A',' ')}, /* Sudanese Creole Arabic -> Arabic */ - {HB_TAG('p','g','a',' '), HB_TAG('C','P','P',' ')}, /* Sudanese Creole Arabic -> Creoles */ -/*{HB_TAG('p','h','k',' '), HB_TAG('P','H','K',' ')},*/ /* Phake */ - {HB_TAG('p','i','h',' '), HB_TAG('P','I','H',' ')}, /* Pitcairn-Norfolk -> Norfolk */ - {HB_TAG('p','i','h',' '), HB_TAG('C','P','P',' ')}, /* Pitcairn-Norfolk -> Creoles */ - {HB_TAG('p','i','l',' '), HB_TAG_NONE }, /* Yom != Filipino */ {HB_TAG('p','i','s',' '), HB_TAG('C','P','P',' ')}, /* Pijin -> Creoles */ {HB_TAG('p','k','h',' '), HB_TAG('Q','I','N',' ')}, /* Pankhu -> Chin */ {HB_TAG('p','k','o',' '), HB_TAG('K','A','L',' ')}, /* Pökoot -> Kalenjin */ {HB_TAG('p','l','g',' '), HB_TAG('P','L','G','0')}, /* Pilagá */ - {HB_TAG('p','l','k',' '), HB_TAG_NONE }, /* Kohistani Shina != Polish */ {HB_TAG('p','l','l',' '), HB_TAG('P','L','G',' ')}, /* Shwe Palaung -> Palaung */ {HB_TAG('p','l','n',' '), HB_TAG('C','P','P',' ')}, /* Palenquero -> Creoles */ {HB_TAG('p','l','p',' '), HB_TAG('P','A','P',' ')}, /* Palpa (retired code) */ {HB_TAG('p','l','t',' '), HB_TAG('M','L','G',' ')}, /* Plateau Malagasy -> Malagasy */ {HB_TAG('p','m','l',' '), HB_TAG('C','P','P',' ')}, /* Lingua Franca -> Creoles */ -/*{HB_TAG('p','m','s',' '), HB_TAG('P','M','S',' ')},*/ /* Piemontese */ {HB_TAG('p','m','y',' '), HB_TAG('C','P','P',' ')}, /* Papuan Malay -> Creoles */ -/*{HB_TAG('p','n','b',' '), HB_TAG('P','N','B',' ')},*/ /* Western Panjabi */ {HB_TAG('p','o','c',' '), HB_TAG('M','Y','N',' ')}, /* Poqomam -> Mayan */ - {HB_TAG('p','o','h',' '), HB_TAG('P','O','H',' ')}, /* Poqomchi' -> Pocomchi */ - {HB_TAG('p','o','h',' '), HB_TAG('M','Y','N',' ')}, /* Poqomchi' -> Mayan */ -/*{HB_TAG('p','o','n',' '), HB_TAG('P','O','N',' ')},*/ /* Pohnpeian */ {HB_TAG('p','o','v',' '), HB_TAG('C','P','P',' ')}, /* Upper Guinea Crioulo -> Creoles */ {HB_TAG('p','p','a',' '), HB_TAG('B','A','G',' ')}, /* Pao (retired code) -> Baghelkhandi */ {HB_TAG('p','r','e',' '), HB_TAG('C','P','P',' ')}, /* Principense -> Creoles */ -/*{HB_TAG('p','r','o',' '), HB_TAG('P','R','O',' ')},*/ /* Old Provençal (to 1500) -> Provençal / Old Provençal */ {HB_TAG('p','r','p',' '), HB_TAG('G','U','J',' ')}, /* Parsi (retired code) -> Gujarati */ - {HB_TAG('p','r','s',' '), HB_TAG('D','R','I',' ')}, /* Dari */ - {HB_TAG('p','r','s',' '), HB_TAG('F','A','R',' ')}, /* Dari -> Persian */ {HB_TAG('p','s','e',' '), HB_TAG('M','L','Y',' ')}, /* Central Malay -> Malay */ {HB_TAG('p','s','t',' '), HB_TAG('P','A','S',' ')}, /* Central Pashto -> Pashto */ {HB_TAG('p','u','b',' '), HB_TAG('Q','I','N',' ')}, /* Purum -> Chin */ {HB_TAG('p','u','z',' '), HB_TAG('Q','I','N',' ')}, /* Purum Naga (retired code) -> Chin */ - {HB_TAG('p','w','o',' '), HB_TAG('P','W','O',' ')}, /* Pwo Western Karen -> Western Pwo Karen */ - {HB_TAG('p','w','o',' '), HB_TAG('K','R','N',' ')}, /* Pwo Western Karen -> Karen */ {HB_TAG('p','w','w',' '), HB_TAG('K','R','N',' ')}, /* Pwo Northern Karen -> Karen */ - {HB_TAG('q','u','b',' '), HB_TAG('Q','W','H',' ')}, /* Huallaga Huánuco Quechua -> Quechua (Peru) */ - {HB_TAG('q','u','b',' '), HB_TAG('Q','U','Z',' ')}, /* Huallaga Huánuco Quechua -> Quechua */ - {HB_TAG('q','u','c',' '), HB_TAG('Q','U','C',' ')}, /* K’iche’ */ - {HB_TAG('q','u','c',' '), HB_TAG('M','Y','N',' ')}, /* K'iche' -> Mayan */ - {HB_TAG('q','u','d',' '), HB_TAG('Q','V','I',' ')}, /* Calderón Highland Quichua -> Quechua (Ecuador) */ - {HB_TAG('q','u','d',' '), HB_TAG('Q','U','Z',' ')}, /* Calderón Highland Quichua -> Quechua */ {HB_TAG('q','u','f',' '), HB_TAG('Q','U','Z',' ')}, /* Lambayeque Quechua -> Quechua */ - {HB_TAG('q','u','g',' '), HB_TAG('Q','V','I',' ')}, /* Chimborazo Highland Quichua -> Quechua (Ecuador) */ - {HB_TAG('q','u','g',' '), HB_TAG('Q','U','Z',' ')}, /* Chimborazo Highland Quichua -> Quechua */ - {HB_TAG('q','u','h',' '), HB_TAG('Q','U','H',' ')}, /* South Bolivian Quechua -> Quechua (Bolivia) */ - {HB_TAG('q','u','h',' '), HB_TAG('Q','U','Z',' ')}, /* South Bolivian Quechua -> Quechua */ {HB_TAG('q','u','k',' '), HB_TAG('Q','U','Z',' ')}, /* Chachapoyas Quechua -> Quechua */ - {HB_TAG('q','u','l',' '), HB_TAG('Q','U','H',' ')}, /* North Bolivian Quechua -> Quechua (Bolivia) */ - {HB_TAG('q','u','l',' '), HB_TAG('Q','U','Z',' ')}, /* North Bolivian Quechua -> Quechua */ {HB_TAG('q','u','m',' '), HB_TAG('M','Y','N',' ')}, /* Sipacapense -> Mayan */ - {HB_TAG('q','u','p',' '), HB_TAG('Q','V','I',' ')}, /* Southern Pastaza Quechua -> Quechua (Ecuador) */ - {HB_TAG('q','u','p',' '), HB_TAG('Q','U','Z',' ')}, /* Southern Pastaza Quechua -> Quechua */ - {HB_TAG('q','u','r',' '), HB_TAG('Q','W','H',' ')}, /* Yanahuanca Pasco Quechua -> Quechua (Peru) */ - {HB_TAG('q','u','r',' '), HB_TAG('Q','U','Z',' ')}, /* Yanahuanca Pasco Quechua -> Quechua */ - {HB_TAG('q','u','s',' '), HB_TAG('Q','U','H',' ')}, /* Santiago del Estero Quichua -> Quechua (Bolivia) */ - {HB_TAG('q','u','s',' '), HB_TAG('Q','U','Z',' ')}, /* Santiago del Estero Quichua -> Quechua */ {HB_TAG('q','u','v',' '), HB_TAG('M','Y','N',' ')}, /* Sacapulteco -> Mayan */ - {HB_TAG('q','u','w',' '), HB_TAG('Q','V','I',' ')}, /* Tena Lowland Quichua -> Quechua (Ecuador) */ - {HB_TAG('q','u','w',' '), HB_TAG('Q','U','Z',' ')}, /* Tena Lowland Quichua -> Quechua */ - {HB_TAG('q','u','x',' '), HB_TAG('Q','W','H',' ')}, /* Yauyos Quechua -> Quechua (Peru) */ - {HB_TAG('q','u','x',' '), HB_TAG('Q','U','Z',' ')}, /* Yauyos Quechua -> Quechua */ {HB_TAG('q','u','y',' '), HB_TAG('Q','U','Z',' ')}, /* Ayacucho Quechua -> Quechua */ -/*{HB_TAG('q','u','z',' '), HB_TAG('Q','U','Z',' ')},*/ /* Cusco Quechua -> Quechua */ - {HB_TAG('q','v','a',' '), HB_TAG('Q','W','H',' ')}, /* Ambo-Pasco Quechua -> Quechua (Peru) */ - {HB_TAG('q','v','a',' '), HB_TAG('Q','U','Z',' ')}, /* Ambo-Pasco Quechua -> Quechua */ {HB_TAG('q','v','c',' '), HB_TAG('Q','U','Z',' ')}, /* Cajamarca Quechua -> Quechua */ {HB_TAG('q','v','e',' '), HB_TAG('Q','U','Z',' ')}, /* Eastern Apurímac Quechua -> Quechua */ - {HB_TAG('q','v','h',' '), HB_TAG('Q','W','H',' ')}, /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua (Peru) */ - {HB_TAG('q','v','h',' '), HB_TAG('Q','U','Z',' ')}, /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua */ - {HB_TAG('q','v','i',' '), HB_TAG('Q','V','I',' ')}, /* Imbabura Highland Quichua -> Quechua (Ecuador) */ - {HB_TAG('q','v','i',' '), HB_TAG('Q','U','Z',' ')}, /* Imbabura Highland Quichua -> Quechua */ - {HB_TAG('q','v','j',' '), HB_TAG('Q','V','I',' ')}, /* Loja Highland Quichua -> Quechua (Ecuador) */ - {HB_TAG('q','v','j',' '), HB_TAG('Q','U','Z',' ')}, /* Loja Highland Quichua -> Quechua */ - {HB_TAG('q','v','l',' '), HB_TAG('Q','W','H',' ')}, /* Cajatambo North Lima Quechua -> Quechua (Peru) */ - {HB_TAG('q','v','l',' '), HB_TAG('Q','U','Z',' ')}, /* Cajatambo North Lima Quechua -> Quechua */ - {HB_TAG('q','v','m',' '), HB_TAG('Q','W','H',' ')}, /* Margos-Yarowilca-Lauricocha Quechua -> Quechua (Peru) */ - {HB_TAG('q','v','m',' '), HB_TAG('Q','U','Z',' ')}, /* Margos-Yarowilca-Lauricocha Quechua -> Quechua */ - {HB_TAG('q','v','n',' '), HB_TAG('Q','W','H',' ')}, /* North Junín Quechua -> Quechua (Peru) */ - {HB_TAG('q','v','n',' '), HB_TAG('Q','U','Z',' ')}, /* North Junín Quechua -> Quechua */ - {HB_TAG('q','v','o',' '), HB_TAG('Q','V','I',' ')}, /* Napo Lowland Quechua -> Quechua (Ecuador) */ - {HB_TAG('q','v','o',' '), HB_TAG('Q','U','Z',' ')}, /* Napo Lowland Quechua -> Quechua */ - {HB_TAG('q','v','p',' '), HB_TAG('Q','W','H',' ')}, /* Pacaraos Quechua -> Quechua (Peru) */ - {HB_TAG('q','v','p',' '), HB_TAG('Q','U','Z',' ')}, /* Pacaraos Quechua -> Quechua */ {HB_TAG('q','v','s',' '), HB_TAG('Q','U','Z',' ')}, /* San Martín Quechua -> Quechua */ - {HB_TAG('q','v','w',' '), HB_TAG('Q','W','H',' ')}, /* Huaylla Wanca Quechua -> Quechua (Peru) */ - {HB_TAG('q','v','w',' '), HB_TAG('Q','U','Z',' ')}, /* Huaylla Wanca Quechua -> Quechua */ - {HB_TAG('q','v','z',' '), HB_TAG('Q','V','I',' ')}, /* Northern Pastaza Quichua -> Quechua (Ecuador) */ - {HB_TAG('q','v','z',' '), HB_TAG('Q','U','Z',' ')}, /* Northern Pastaza Quichua -> Quechua */ - {HB_TAG('q','w','a',' '), HB_TAG('Q','W','H',' ')}, /* Corongo Ancash Quechua -> Quechua (Peru) */ - {HB_TAG('q','w','a',' '), HB_TAG('Q','U','Z',' ')}, /* Corongo Ancash Quechua -> Quechua */ {HB_TAG('q','w','c',' '), HB_TAG('Q','U','Z',' ')}, /* Classical Quechua -> Quechua */ - {HB_TAG('q','w','h',' '), HB_TAG('Q','W','H',' ')}, /* Huaylas Ancash Quechua -> Quechua (Peru) */ - {HB_TAG('q','w','h',' '), HB_TAG('Q','U','Z',' ')}, /* Huaylas Ancash Quechua -> Quechua */ - {HB_TAG('q','w','s',' '), HB_TAG('Q','W','H',' ')}, /* Sihuas Ancash Quechua -> Quechua (Peru) */ - {HB_TAG('q','w','s',' '), HB_TAG('Q','U','Z',' ')}, /* Sihuas Ancash Quechua -> Quechua */ {HB_TAG('q','w','t',' '), HB_TAG('A','T','H',' ')}, /* Kwalhioqua-Tlatskanai -> Athapaskan */ - {HB_TAG('q','x','a',' '), HB_TAG('Q','W','H',' ')}, /* Chiquián Ancash Quechua -> Quechua (Peru) */ - {HB_TAG('q','x','a',' '), HB_TAG('Q','U','Z',' ')}, /* Chiquián Ancash Quechua -> Quechua */ - {HB_TAG('q','x','c',' '), HB_TAG('Q','W','H',' ')}, /* Chincha Quechua -> Quechua (Peru) */ - {HB_TAG('q','x','c',' '), HB_TAG('Q','U','Z',' ')}, /* Chincha Quechua -> Quechua */ - {HB_TAG('q','x','h',' '), HB_TAG('Q','W','H',' ')}, /* Panao Huánuco Quechua -> Quechua (Peru) */ - {HB_TAG('q','x','h',' '), HB_TAG('Q','U','Z',' ')}, /* Panao Huánuco Quechua -> Quechua */ - {HB_TAG('q','x','l',' '), HB_TAG('Q','V','I',' ')}, /* Salasaca Highland Quichua -> Quechua (Ecuador) */ - {HB_TAG('q','x','l',' '), HB_TAG('Q','U','Z',' ')}, /* Salasaca Highland Quichua -> Quechua */ - {HB_TAG('q','x','n',' '), HB_TAG('Q','W','H',' ')}, /* Northern Conchucos Ancash Quechua -> Quechua (Peru) */ - {HB_TAG('q','x','n',' '), HB_TAG('Q','U','Z',' ')}, /* Northern Conchucos Ancash Quechua -> Quechua */ - {HB_TAG('q','x','o',' '), HB_TAG('Q','W','H',' ')}, /* Southern Conchucos Ancash Quechua -> Quechua (Peru) */ - {HB_TAG('q','x','o',' '), HB_TAG('Q','U','Z',' ')}, /* Southern Conchucos Ancash Quechua -> Quechua */ {HB_TAG('q','x','p',' '), HB_TAG('Q','U','Z',' ')}, /* Puno Quechua -> Quechua */ - {HB_TAG('q','x','r',' '), HB_TAG('Q','V','I',' ')}, /* Cañar Highland Quichua -> Quechua (Ecuador) */ - {HB_TAG('q','x','r',' '), HB_TAG('Q','U','Z',' ')}, /* Cañar Highland Quichua -> Quechua */ - {HB_TAG('q','x','t',' '), HB_TAG('Q','W','H',' ')}, /* Santa Ana de Tusi Pasco Quechua -> Quechua (Peru) */ - {HB_TAG('q','x','t',' '), HB_TAG('Q','U','Z',' ')}, /* Santa Ana de Tusi Pasco Quechua -> Quechua */ {HB_TAG('q','x','u',' '), HB_TAG('Q','U','Z',' ')}, /* Arequipa-La Unión Quechua -> Quechua */ - {HB_TAG('q','x','w',' '), HB_TAG('Q','W','H',' ')}, /* Jauja Wanca Quechua -> Quechua (Peru) */ - {HB_TAG('q','x','w',' '), HB_TAG('Q','U','Z',' ')}, /* Jauja Wanca Quechua -> Quechua */ {HB_TAG('r','a','g',' '), HB_TAG('L','U','H',' ')}, /* Logooli -> Luyia */ -/*{HB_TAG('r','a','j',' '), HB_TAG('R','A','J',' ')},*/ /* Rajasthani [macrolanguage] */ {HB_TAG('r','a','l',' '), HB_TAG('Q','I','N',' ')}, /* Ralte -> Chin */ -/*{HB_TAG('r','a','r',' '), HB_TAG('R','A','R',' ')},*/ /* Rarotongan */ {HB_TAG('r','b','b',' '), HB_TAG('P','L','G',' ')}, /* Rumai Palaung -> Palaung */ {HB_TAG('r','b','l',' '), HB_TAG('B','I','K',' ')}, /* Miraya Bikol -> Bikol */ {HB_TAG('r','c','f',' '), HB_TAG('C','P','P',' ')}, /* Réunion Creole French -> Creoles */ -/*{HB_TAG('r','e','j',' '), HB_TAG('R','E','J',' ')},*/ /* Rejang */ -/*{HB_TAG('r','h','g',' '), HB_TAG('R','H','G',' ')},*/ /* Rohingya */ -/*{HB_TAG('r','i','a',' '), HB_TAG('R','I','A',' ')},*/ /* Riang (India) */ - {HB_TAG('r','i','f',' '), HB_TAG('R','I','F',' ')}, /* Tarifit */ - {HB_TAG('r','i','f',' '), HB_TAG('B','B','R',' ')}, /* Tarifit -> Berber */ -/*{HB_TAG('r','i','t',' '), HB_TAG('R','I','T',' ')},*/ /* Ritharrngu -> Ritarungo */ {HB_TAG('r','k','i',' '), HB_TAG('A','R','K',' ')}, /* Rakhine */ -/*{HB_TAG('r','k','w',' '), HB_TAG('R','K','W',' ')},*/ /* Arakwal */ {HB_TAG('r','m','c',' '), HB_TAG('R','O','Y',' ')}, /* Carpathian Romani -> Romany */ {HB_TAG('r','m','f',' '), HB_TAG('R','O','Y',' ')}, /* Kalo Finnish Romani -> Romany */ {HB_TAG('r','m','l',' '), HB_TAG('R','O','Y',' ')}, /* Baltic Romani -> Romany */ {HB_TAG('r','m','n',' '), HB_TAG('R','O','Y',' ')}, /* Balkan Romani -> Romany */ {HB_TAG('r','m','o',' '), HB_TAG('R','O','Y',' ')}, /* Sinte Romani -> Romany */ - {HB_TAG('r','m','s',' '), HB_TAG_NONE }, /* Romanian Sign Language != Romansh */ {HB_TAG('r','m','w',' '), HB_TAG('R','O','Y',' ')}, /* Welsh Romani -> Romany */ - {HB_TAG('r','m','y',' '), HB_TAG('R','M','Y',' ')}, /* Vlax Romani */ - {HB_TAG('r','m','y',' '), HB_TAG('R','O','Y',' ')}, /* Vlax Romani -> Romany */ {HB_TAG('r','m','z',' '), HB_TAG('A','R','K',' ')}, /* Marma -> Rakhine */ {HB_TAG('r','o','m',' '), HB_TAG('R','O','Y',' ')}, /* Romany [macrolanguage] */ {HB_TAG('r','o','p',' '), HB_TAG('C','P','P',' ')}, /* Kriol -> Creoles */ {HB_TAG('r','t','c',' '), HB_TAG('Q','I','N',' ')}, /* Rungtu Chin -> Chin */ -/*{HB_TAG('r','t','m',' '), HB_TAG('R','T','M',' ')},*/ /* Rotuman */ {HB_TAG('r','u','e',' '), HB_TAG('R','S','Y',' ')}, /* Rusyn */ -/*{HB_TAG('r','u','p',' '), HB_TAG('R','U','P',' ')},*/ /* Aromanian */ {HB_TAG('r','w','r',' '), HB_TAG('M','A','W',' ')}, /* Marwari (India) */ - {HB_TAG('s','a','d',' '), HB_TAG_NONE }, /* Sandawe != Sadri */ {HB_TAG('s','a','h',' '), HB_TAG('Y','A','K',' ')}, /* Yakut -> Sakha */ {HB_TAG('s','a','m',' '), HB_TAG('P','A','A',' ')}, /* Samaritan Aramaic -> Palestinian Aramaic */ -/*{HB_TAG('s','a','s',' '), HB_TAG('S','A','S',' ')},*/ /* Sasak */ -/*{HB_TAG('s','a','t',' '), HB_TAG('S','A','T',' ')},*/ /* Santali */ - {HB_TAG('s','a','y',' '), HB_TAG_NONE }, /* Saya != Sayisi */ {HB_TAG('s','c','f',' '), HB_TAG('C','P','P',' ')}, /* San Miguel Creole French -> Creoles */ {HB_TAG('s','c','h',' '), HB_TAG('Q','I','N',' ')}, /* Sakachep -> Chin */ {HB_TAG('s','c','i',' '), HB_TAG('C','P','P',' ')}, /* Sri Lankan Creole Malay -> Creoles */ {HB_TAG('s','c','k',' '), HB_TAG('S','A','D',' ')}, /* Sadri */ -/*{HB_TAG('s','c','n',' '), HB_TAG('S','C','N',' ')},*/ /* Sicilian */ -/*{HB_TAG('s','c','o',' '), HB_TAG('S','C','O',' ')},*/ /* Scots */ - {HB_TAG('s','c','s',' '), HB_TAG('S','C','S',' ')}, /* North Slavey */ - {HB_TAG('s','c','s',' '), HB_TAG('S','L','A',' ')}, /* North Slavey -> Slavey */ - {HB_TAG('s','c','s',' '), HB_TAG('A','T','H',' ')}, /* North Slavey -> Athapaskan */ {HB_TAG('s','d','c',' '), HB_TAG('S','R','D',' ')}, /* Sassarese Sardinian -> Sardinian */ {HB_TAG('s','d','h',' '), HB_TAG('K','U','R',' ')}, /* Southern Kurdish -> Kurdish */ {HB_TAG('s','d','n',' '), HB_TAG('S','R','D',' ')}, /* Gallurese Sardinian -> Sardinian */ {HB_TAG('s','d','s',' '), HB_TAG('B','B','R',' ')}, /* Sened -> Berber */ -/*{HB_TAG('s','e','e',' '), HB_TAG('S','E','E',' ')},*/ /* Seneca */ {HB_TAG('s','e','h',' '), HB_TAG('S','N','A',' ')}, /* Sena */ {HB_TAG('s','e','k',' '), HB_TAG('A','T','H',' ')}, /* Sekani -> Athapaskan */ -/*{HB_TAG('s','e','l',' '), HB_TAG('S','E','L',' ')},*/ /* Selkup */ {HB_TAG('s','e','z',' '), HB_TAG('Q','I','N',' ')}, /* Senthang Chin -> Chin */ - {HB_TAG('s','f','m',' '), HB_TAG('S','F','M',' ')}, /* Small Flowery Miao */ - {HB_TAG('s','f','m',' '), HB_TAG('H','M','N',' ')}, /* Small Flowery Miao -> Hmong */ -/*{HB_TAG('s','g','a',' '), HB_TAG('S','G','A',' ')},*/ /* Old Irish (to 900) */ {HB_TAG('s','g','c',' '), HB_TAG('K','A','L',' ')}, /* Kipsigis -> Kalenjin */ - {HB_TAG('s','g','o',' '), HB_TAG_NONE }, /* Songa (retired code) != Sango */ -/*{HB_TAG('s','g','s',' '), HB_TAG('S','G','S',' ')},*/ /* Samogitian */ {HB_TAG('s','g','w',' '), HB_TAG('C','H','G',' ')}, /* Sebat Bet Gurage -> Chaha Gurage */ - {HB_TAG('s','h','i',' '), HB_TAG('S','H','I',' ')}, /* Tachelhit */ - {HB_TAG('s','h','i',' '), HB_TAG('B','B','R',' ')}, /* Tachelhit -> Berber */ {HB_TAG('s','h','l',' '), HB_TAG('Q','I','N',' ')}, /* Shendu -> Chin */ -/*{HB_TAG('s','h','n',' '), HB_TAG('S','H','N',' ')},*/ /* Shan */ {HB_TAG('s','h','u',' '), HB_TAG('A','R','A',' ')}, /* Chadian Arabic -> Arabic */ {HB_TAG('s','h','y',' '), HB_TAG('B','B','R',' ')}, /* Tachawit -> Berber */ - {HB_TAG('s','i','b',' '), HB_TAG_NONE }, /* Sebop != Sibe */ -/*{HB_TAG('s','i','d',' '), HB_TAG('S','I','D',' ')},*/ /* Sidamo */ - {HB_TAG('s','i','g',' '), HB_TAG_NONE }, /* Paasaal != Silte Gurage */ {HB_TAG('s','i','z',' '), HB_TAG('B','B','R',' ')}, /* Siwi -> Berber */ -/*{HB_TAG('s','j','a',' '), HB_TAG('S','J','A',' ')},*/ /* Epena */ {HB_TAG('s','j','c',' '), HB_TAG('Z','H','S',' ')}, /* Shaojiang Chinese -> Chinese, Simplified */ {HB_TAG('s','j','d',' '), HB_TAG('K','S','M',' ')}, /* Kildin Sami */ -/*{HB_TAG('s','j','e',' '), HB_TAG('S','J','E',' ')},*/ /* Pite Sami */ {HB_TAG('s','j','o',' '), HB_TAG('S','I','B',' ')}, /* Xibe -> Sibe */ {HB_TAG('s','j','s',' '), HB_TAG('B','B','R',' ')}, /* Senhaja De Srair -> Berber */ -/*{HB_TAG('s','j','u',' '), HB_TAG('S','J','U',' ')},*/ /* Ume Sami */ {HB_TAG('s','k','g',' '), HB_TAG('M','L','G',' ')}, /* Sakalava Malagasy -> Malagasy */ {HB_TAG('s','k','r',' '), HB_TAG('S','R','K',' ')}, /* Saraiki */ - {HB_TAG('s','k','s',' '), HB_TAG_NONE }, /* Maia != Skolt Sami */ {HB_TAG('s','k','w',' '), HB_TAG('C','P','P',' ')}, /* Skepi Creole Dutch -> Creoles */ - {HB_TAG('s','k','y',' '), HB_TAG_NONE }, /* Sikaiana != Slovak */ - {HB_TAG('s','l','a',' '), HB_TAG_NONE }, /* Slavic [collection] != Slavey */ {HB_TAG('s','m','a',' '), HB_TAG('S','S','M',' ')}, /* Southern Sami */ {HB_TAG('s','m','d',' '), HB_TAG('M','B','N',' ')}, /* Sama (retired code) -> Mbundu */ {HB_TAG('s','m','j',' '), HB_TAG('L','S','M',' ')}, /* Lule Sami */ - {HB_TAG('s','m','l',' '), HB_TAG_NONE }, /* Central Sama != Somali */ {HB_TAG('s','m','n',' '), HB_TAG('I','S','M',' ')}, /* Inari Sami */ {HB_TAG('s','m','s',' '), HB_TAG('S','K','S',' ')}, /* Skolt Sami */ {HB_TAG('s','m','t',' '), HB_TAG('Q','I','N',' ')}, /* Simte -> Chin */ {HB_TAG('s','n','b',' '), HB_TAG('I','B','A',' ')}, /* Sebuyau (retired code) -> Iban */ - {HB_TAG('s','n','h',' '), HB_TAG_NONE }, /* Shinabo (retired code) != Sinhala (Sinhalese) */ -/*{HB_TAG('s','n','k',' '), HB_TAG('S','N','K',' ')},*/ /* Soninke */ - {HB_TAG('s','o','g',' '), HB_TAG_NONE }, /* Sogdian != Sodo Gurage */ -/*{HB_TAG('s','o','p',' '), HB_TAG('S','O','P',' ')},*/ /* Songe */ {HB_TAG('s','p','v',' '), HB_TAG('O','R','I',' ')}, /* Sambalpuri -> Odia */ {HB_TAG('s','p','y',' '), HB_TAG('K','A','L',' ')}, /* Sabaot -> Kalenjin */ - {HB_TAG('s','r','b',' '), HB_TAG_NONE }, /* Sora != Serbian */ {HB_TAG('s','r','c',' '), HB_TAG('S','R','D',' ')}, /* Logudorese Sardinian -> Sardinian */ - {HB_TAG('s','r','k',' '), HB_TAG_NONE }, /* Serudung Murut != Saraiki */ {HB_TAG('s','r','m',' '), HB_TAG('C','P','P',' ')}, /* Saramaccan -> Creoles */ {HB_TAG('s','r','n',' '), HB_TAG('C','P','P',' ')}, /* Sranan Tongo -> Creoles */ {HB_TAG('s','r','o',' '), HB_TAG('S','R','D',' ')}, /* Campidanese Sardinian -> Sardinian */ -/*{HB_TAG('s','r','r',' '), HB_TAG('S','R','R',' ')},*/ /* Serer */ {HB_TAG('s','r','s',' '), HB_TAG('A','T','H',' ')}, /* Sarsi -> Athapaskan */ {HB_TAG('s','s','h',' '), HB_TAG('A','R','A',' ')}, /* Shihhi Arabic -> Arabic */ - {HB_TAG('s','s','l',' '), HB_TAG_NONE }, /* Western Sisaala != South Slavey */ - {HB_TAG('s','s','m',' '), HB_TAG_NONE }, /* Semnam != Southern Sami */ {HB_TAG('s','t','a',' '), HB_TAG('C','P','P',' ')}, /* Settla -> Creoles */ -/*{HB_TAG('s','t','q',' '), HB_TAG('S','T','Q',' ')},*/ /* Saterfriesisch -> Saterland Frisian */ -/*{HB_TAG('s','t','r',' '), HB_TAG('S','T','R',' ')},*/ /* Straits Salish */ {HB_TAG('s','t','v',' '), HB_TAG('S','I','G',' ')}, /* Silt'e -> Silte Gurage */ -/*{HB_TAG('s','u','k',' '), HB_TAG('S','U','K',' ')},*/ /* Sukuma */ {HB_TAG('s','u','q',' '), HB_TAG('S','U','R',' ')}, /* Suri */ - {HB_TAG('s','u','r',' '), HB_TAG_NONE }, /* Mwaghavul != Suri */ -/*{HB_TAG('s','v','a',' '), HB_TAG('S','V','A',' ')},*/ /* Svan */ {HB_TAG('s','v','c',' '), HB_TAG('C','P','P',' ')}, /* Vincentian Creole English -> Creoles */ - {HB_TAG('s','v','e',' '), HB_TAG_NONE }, /* Serili != Swedish */ {HB_TAG('s','w','b',' '), HB_TAG('C','M','R',' ')}, /* Maore Comorian -> Comorian */ {HB_TAG('s','w','c',' '), HB_TAG('S','W','K',' ')}, /* Congo Swahili -> Swahili */ {HB_TAG('s','w','h',' '), HB_TAG('S','W','K',' ')}, /* Swahili */ - {HB_TAG('s','w','k',' '), HB_TAG_NONE }, /* Malawi Sena != Swahili */ {HB_TAG('s','w','n',' '), HB_TAG('B','B','R',' ')}, /* Sawknah -> Berber */ {HB_TAG('s','w','v',' '), HB_TAG('M','A','W',' ')}, /* Shekhawati -> Marwari */ -/*{HB_TAG('s','x','u',' '), HB_TAG('S','X','U',' ')},*/ /* Upper Saxon */ {HB_TAG('s','y','c',' '), HB_TAG('S','Y','R',' ')}, /* Classical Syriac -> Syriac */ -/*{HB_TAG('s','y','l',' '), HB_TAG('S','Y','L',' ')},*/ /* Sylheti */ -/*{HB_TAG('s','y','r',' '), HB_TAG('S','Y','R',' ')},*/ /* Syriac [macrolanguage] */ -/*{HB_TAG('s','z','l',' '), HB_TAG('S','Z','L',' ')},*/ /* Silesian */ {HB_TAG('t','a','a',' '), HB_TAG('A','T','H',' ')}, /* Lower Tanana -> Athapaskan */ -/*{HB_TAG('t','a','b',' '), HB_TAG('T','A','B',' ')},*/ /* Tabassaran -> Tabasaran */ - {HB_TAG('t','a','j',' '), HB_TAG_NONE }, /* Eastern Tamang != Tajiki */ - {HB_TAG('t','a','q',' '), HB_TAG('T','A','Q',' ')}, /* Tamasheq */ - {HB_TAG('t','a','q',' '), HB_TAG('T','M','H',' ')}, /* Tamasheq -> Tamashek */ - {HB_TAG('t','a','q',' '), HB_TAG('B','B','R',' ')}, /* Tamasheq -> Berber */ {HB_TAG('t','a','s',' '), HB_TAG('C','P','P',' ')}, /* Tay Boi -> Creoles */ {HB_TAG('t','a','u',' '), HB_TAG('A','T','H',' ')}, /* Upper Tanana -> Athapaskan */ -/*{HB_TAG('t','b','v',' '), HB_TAG('T','B','V',' ')},*/ /* Tobo */ {HB_TAG('t','c','b',' '), HB_TAG('A','T','H',' ')}, /* Tanacross -> Athapaskan */ {HB_TAG('t','c','e',' '), HB_TAG('A','T','H',' ')}, /* Southern Tutchone -> Athapaskan */ {HB_TAG('t','c','h',' '), HB_TAG('C','P','P',' ')}, /* Turks And Caicos Creole English -> Creoles */ @@ -1481,115 +1062,54 @@ static const LangTag ot_languages3[] = { {HB_TAG('t','c','s',' '), HB_TAG('C','P','P',' ')}, /* Torres Strait Creole -> Creoles */ {HB_TAG('t','c','y',' '), HB_TAG('T','U','L',' ')}, /* Tulu */ {HB_TAG('t','c','z',' '), HB_TAG('Q','I','N',' ')}, /* Thado Chin -> Chin */ -/*{HB_TAG('t','d','c',' '), HB_TAG('T','D','C',' ')},*/ /* Emberá-Tadó */ -/*{HB_TAG('t','d','d',' '), HB_TAG('T','D','D',' ')},*/ /* Tai Nüa -> Dehong Dai */ {HB_TAG('t','d','x',' '), HB_TAG('M','L','G',' ')}, /* Tandroy-Mahafaly Malagasy -> Malagasy */ {HB_TAG('t','e','c',' '), HB_TAG('K','A','L',' ')}, /* Terik -> Kalenjin */ {HB_TAG('t','e','m',' '), HB_TAG('T','M','N',' ')}, /* Timne -> Temne */ -/*{HB_TAG('t','e','t',' '), HB_TAG('T','E','T',' ')},*/ /* Tetum */ {HB_TAG('t','e','z',' '), HB_TAG('B','B','R',' ')}, /* Tetserret -> Berber */ {HB_TAG('t','f','n',' '), HB_TAG('A','T','H',' ')}, /* Tanaina -> Athapaskan */ {HB_TAG('t','g','h',' '), HB_TAG('C','P','P',' ')}, /* Tobagonian Creole English -> Creoles */ {HB_TAG('t','g','j',' '), HB_TAG('N','I','S',' ')}, /* Tagin -> Nisi */ - {HB_TAG('t','g','n',' '), HB_TAG_NONE }, /* Tandaganon != Tongan */ - {HB_TAG('t','g','r',' '), HB_TAG_NONE }, /* Tareng != Tigre */ {HB_TAG('t','g','x',' '), HB_TAG('A','T','H',' ')}, /* Tagish -> Athapaskan */ - {HB_TAG('t','g','y',' '), HB_TAG_NONE }, /* Togoyo != Tigrinya */ -/*{HB_TAG('t','h','p',' '), HB_TAG('T','H','P',' ')},*/ /* Thompson */ {HB_TAG('t','h','t',' '), HB_TAG('A','T','H',' ')}, /* Tahltan -> Athapaskan */ - {HB_TAG('t','h','v',' '), HB_TAG('T','H','V',' ')}, /* Tahaggart Tamahaq */ - {HB_TAG('t','h','v',' '), HB_TAG('T','M','H',' ')}, /* Tahaggart Tamahaq -> Tamashek */ - {HB_TAG('t','h','v',' '), HB_TAG('B','B','R',' ')}, /* Tahaggart Tamahaq -> Berber */ - {HB_TAG('t','h','z',' '), HB_TAG('T','H','Z',' ')}, /* Tayart Tamajeq */ - {HB_TAG('t','h','z',' '), HB_TAG('T','M','H',' ')}, /* Tayart Tamajeq -> Tamashek */ - {HB_TAG('t','h','z',' '), HB_TAG('B','B','R',' ')}, /* Tayart Tamajeq -> Berber */ {HB_TAG('t','i','a',' '), HB_TAG('B','B','R',' ')}, /* Tidikelt Tamazight -> Berber */ {HB_TAG('t','i','g',' '), HB_TAG('T','G','R',' ')}, /* Tigre */ -/*{HB_TAG('t','i','v',' '), HB_TAG('T','I','V',' ')},*/ /* Tiv */ -/*{HB_TAG('t','j','l',' '), HB_TAG('T','J','L',' ')},*/ /* Tai Laing */ {HB_TAG('t','j','o',' '), HB_TAG('B','B','R',' ')}, /* Temacine Tamazight -> Berber */ {HB_TAG('t','k','g',' '), HB_TAG('M','L','G',' ')}, /* Tesaka Malagasy -> Malagasy */ - {HB_TAG('t','k','m',' '), HB_TAG_NONE }, /* Takelma != Turkmen */ -/*{HB_TAG('t','l','i',' '), HB_TAG('T','L','I',' ')},*/ /* Tlingit */ -/*{HB_TAG('t','l','y',' '), HB_TAG('T','L','Y',' ')},*/ /* Talysh */ {HB_TAG('t','m','g',' '), HB_TAG('C','P','P',' ')}, /* Ternateño -> Creoles */ - {HB_TAG('t','m','h',' '), HB_TAG('T','M','H',' ')}, /* Tamashek [macrolanguage] */ - {HB_TAG('t','m','h',' '), HB_TAG('B','B','R',' ')}, /* Tamashek [macrolanguage] -> Berber */ - {HB_TAG('t','m','n',' '), HB_TAG_NONE }, /* Taman (Indonesia) != Temne */ {HB_TAG('t','m','w',' '), HB_TAG('M','L','Y',' ')}, /* Temuan -> Malay */ - {HB_TAG('t','n','a',' '), HB_TAG_NONE }, /* Tacana != Tswana */ - {HB_TAG('t','n','e',' '), HB_TAG_NONE }, /* Tinoc Kallahan (retired code) != Tundra Enets */ - {HB_TAG('t','n','f',' '), HB_TAG('D','R','I',' ')}, /* Tangshewi (retired code) -> Dari */ - {HB_TAG('t','n','f',' '), HB_TAG('F','A','R',' ')}, /* Tangshewi (retired code) -> Persian */ - {HB_TAG('t','n','g',' '), HB_TAG_NONE }, /* Tobanga != Tonga */ {HB_TAG('t','o','d',' '), HB_TAG('T','O','D','0')}, /* Toma */ {HB_TAG('t','o','i',' '), HB_TAG('T','N','G',' ')}, /* Tonga (Zambia) */ {HB_TAG('t','o','j',' '), HB_TAG('M','Y','N',' ')}, /* Tojolabal -> Mayan */ {HB_TAG('t','o','l',' '), HB_TAG('A','T','H',' ')}, /* Tolowa -> Athapaskan */ {HB_TAG('t','o','r',' '), HB_TAG('B','A','D','0')}, /* Togbo-Vara Banda -> Banda */ - {HB_TAG('t','p','i',' '), HB_TAG('T','P','I',' ')}, /* Tok Pisin */ - {HB_TAG('t','p','i',' '), HB_TAG('C','P','P',' ')}, /* Tok Pisin -> Creoles */ {HB_TAG('t','r','f',' '), HB_TAG('C','P','P',' ')}, /* Trinidadian Creole English -> Creoles */ - {HB_TAG('t','r','k',' '), HB_TAG_NONE }, /* Turkic [collection] != Turkish */ - {HB_TAG('t','r','u',' '), HB_TAG('T','U','A',' ')}, /* Turoyo -> Turoyo Aramaic */ - {HB_TAG('t','r','u',' '), HB_TAG('S','Y','R',' ')}, /* Turoyo -> Syriac */ - {HB_TAG('t','s','g',' '), HB_TAG_NONE }, /* Tausug != Tsonga */ -/*{HB_TAG('t','s','j',' '), HB_TAG('T','S','J',' ')},*/ /* Tshangla */ {HB_TAG('t','t','c',' '), HB_TAG('M','Y','N',' ')}, /* Tektiteko -> Mayan */ {HB_TAG('t','t','m',' '), HB_TAG('A','T','H',' ')}, /* Northern Tutchone -> Athapaskan */ - {HB_TAG('t','t','q',' '), HB_TAG('T','T','Q',' ')}, /* Tawallammat Tamajaq */ - {HB_TAG('t','t','q',' '), HB_TAG('T','M','H',' ')}, /* Tawallammat Tamajaq -> Tamashek */ - {HB_TAG('t','t','q',' '), HB_TAG('B','B','R',' ')}, /* Tawallammat Tamajaq -> Berber */ - {HB_TAG('t','u','a',' '), HB_TAG_NONE }, /* Wiarumus != Turoyo Aramaic */ - {HB_TAG('t','u','l',' '), HB_TAG_NONE }, /* Tula != Tulu */ -/*{HB_TAG('t','u','m',' '), HB_TAG('T','U','M',' ')},*/ /* Tumbuka */ -/*{HB_TAG('t','u','s',' '), HB_TAG('T','U','S',' ')},*/ /* Tuscarora */ {HB_TAG('t','u','u',' '), HB_TAG('A','T','H',' ')}, /* Tututni -> Athapaskan */ - {HB_TAG('t','u','v',' '), HB_TAG_NONE }, /* Turkana != Tuvin */ {HB_TAG('t','u','y',' '), HB_TAG('K','A','L',' ')}, /* Tugen -> Kalenjin */ -/*{HB_TAG('t','v','l',' '), HB_TAG('T','V','L',' ')},*/ /* Tuvalu */ {HB_TAG('t','v','y',' '), HB_TAG('C','P','P',' ')}, /* Timor Pidgin -> Creoles */ {HB_TAG('t','x','c',' '), HB_TAG('A','T','H',' ')}, /* Tsetsaut -> Athapaskan */ {HB_TAG('t','x','y',' '), HB_TAG('M','L','G',' ')}, /* Tanosy Malagasy -> Malagasy */ {HB_TAG('t','y','v',' '), HB_TAG('T','U','V',' ')}, /* Tuvinian -> Tuvin */ -/*{HB_TAG('t','y','z',' '), HB_TAG('T','Y','Z',' ')},*/ /* Tày */ {HB_TAG('t','z','h',' '), HB_TAG('M','Y','N',' ')}, /* Tzeltal -> Mayan */ {HB_TAG('t','z','j',' '), HB_TAG('M','Y','N',' ')}, /* Tz'utujil -> Mayan */ - {HB_TAG('t','z','m',' '), HB_TAG('T','Z','M',' ')}, /* Central Atlas Tamazight -> Tamazight */ - {HB_TAG('t','z','m',' '), HB_TAG('B','B','R',' ')}, /* Central Atlas Tamazight -> Berber */ - {HB_TAG('t','z','o',' '), HB_TAG('T','Z','O',' ')}, /* Tzotzil */ - {HB_TAG('t','z','o',' '), HB_TAG('M','Y','N',' ')}, /* Tzotzil -> Mayan */ {HB_TAG('u','b','l',' '), HB_TAG('B','I','K',' ')}, /* Buhi'non Bikol -> Bikol */ -/*{HB_TAG('u','d','i',' '), HB_TAG('U','D','I',' ')},*/ /* Udi */ -/*{HB_TAG('u','d','m',' '), HB_TAG('U','D','M',' ')},*/ /* Udmurt */ {HB_TAG('u','k','i',' '), HB_TAG('K','U','I',' ')}, /* Kui (India) */ {HB_TAG('u','l','n',' '), HB_TAG('C','P','P',' ')}, /* Unserdeutsch -> Creoles */ -/*{HB_TAG('u','m','b',' '), HB_TAG('U','M','B',' ')},*/ /* Umbundu */ {HB_TAG('u','n','r',' '), HB_TAG('M','U','N',' ')}, /* Mundari */ {HB_TAG('u','r','k',' '), HB_TAG('M','L','Y',' ')}, /* Urak Lawoi' -> Malay */ {HB_TAG('u','s','p',' '), HB_TAG('M','Y','N',' ')}, /* Uspanteco -> Mayan */ {HB_TAG('u','z','n',' '), HB_TAG('U','Z','B',' ')}, /* Northern Uzbek -> Uzbek */ {HB_TAG('u','z','s',' '), HB_TAG('U','Z','B',' ')}, /* Southern Uzbek -> Uzbek */ {HB_TAG('v','a','p',' '), HB_TAG('Q','I','N',' ')}, /* Vaiphei -> Chin */ -/*{HB_TAG('v','e','c',' '), HB_TAG('V','E','C',' ')},*/ /* Venetian */ {HB_TAG('v','i','c',' '), HB_TAG('C','P','P',' ')}, /* Virgin Islands Creole English -> Creoles */ - {HB_TAG('v','i','t',' '), HB_TAG_NONE }, /* Viti != Vietnamese */ {HB_TAG('v','k','k',' '), HB_TAG('M','L','Y',' ')}, /* Kaur -> Malay */ {HB_TAG('v','k','p',' '), HB_TAG('C','P','P',' ')}, /* Korlai Creole Portuguese -> Creoles */ {HB_TAG('v','k','t',' '), HB_TAG('M','L','Y',' ')}, /* Tenggarong Kutai Malay -> Malay */ {HB_TAG('v','l','s',' '), HB_TAG('F','L','E',' ')}, /* Vlaams -> Dutch (Flemish) */ {HB_TAG('v','m','w',' '), HB_TAG('M','A','K',' ')}, /* Makhuwa */ - {HB_TAG('v','r','o',' '), HB_TAG('V','R','O',' ')}, /* Võro */ - {HB_TAG('v','r','o',' '), HB_TAG('E','T','I',' ')}, /* Võro -> Estonian */ {HB_TAG('v','s','n',' '), HB_TAG('S','A','N',' ')}, /* Vedic Sanskrit -> Sanskrit */ - {HB_TAG('w','a','g',' '), HB_TAG_NONE }, /* Wa'ema != Wagdi */ -/*{HB_TAG('w','a','r',' '), HB_TAG('W','A','R',' ')},*/ /* Waray (Philippines) -> Waray-Waray */ -/*{HB_TAG('w','b','l',' '), HB_TAG('W','B','L',' ')},*/ /* Wakhi */ {HB_TAG('w','b','m',' '), HB_TAG('W','A',' ',' ')}, /* Wa */ - {HB_TAG('w','b','r',' '), HB_TAG('W','A','G',' ')}, /* Wagdi */ - {HB_TAG('w','b','r',' '), HB_TAG('R','A','J',' ')}, /* Wagdi -> Rajasthani */ -/*{HB_TAG('w','c','i',' '), HB_TAG('W','C','I',' ')},*/ /* Waci Gbe */ -/*{HB_TAG('w','d','t',' '), HB_TAG('W','D','T',' ')},*/ /* Wendat */ {HB_TAG('w','e','a',' '), HB_TAG('K','R','N',' ')}, /* Wewaw -> Karen */ {HB_TAG('w','e','s',' '), HB_TAG('C','P','P',' ')}, /* Cameroon Pidgin -> Creoles */ {HB_TAG('w','e','u',' '), HB_TAG('Q','I','N',' ')}, /* Rawngtu Chin -> Chin */ @@ -1599,62 +1119,31 @@ static const LangTag ot_languages3[] = { {HB_TAG('w','n','i',' '), HB_TAG('C','M','R',' ')}, /* Ndzwani Comorian -> Comorian */ {HB_TAG('w','r','y',' '), HB_TAG('M','A','W',' ')}, /* Merwari -> Marwari */ {HB_TAG('w','s','g',' '), HB_TAG('G','O','N',' ')}, /* Adilabad Gondi -> Gondi */ -/*{HB_TAG('w','t','m',' '), HB_TAG('W','T','M',' ')},*/ /* Mewati */ {HB_TAG('w','u','u',' '), HB_TAG('Z','H','S',' ')}, /* Wu Chinese -> Chinese, Simplified */ - {HB_TAG('w','y','a',' '), HB_TAG('W','D','T',' ')}, /* Wyandot (retired code) -> Wendat */ - {HB_TAG('w','y','a',' '), HB_TAG('W','Y','N',' ')}, /* Wyandot (retired code) */ -/*{HB_TAG('w','y','n',' '), HB_TAG('W','Y','N',' ')},*/ /* Wyandot */ - {HB_TAG('x','a','l',' '), HB_TAG('K','L','M',' ')}, /* Kalmyk */ - {HB_TAG('x','a','l',' '), HB_TAG('T','O','D',' ')}, /* Kalmyk -> Todo */ {HB_TAG('x','a','n',' '), HB_TAG('S','E','K',' ')}, /* Xamtanga -> Sekota */ - {HB_TAG('x','b','d',' '), HB_TAG_NONE }, /* Bindal != Lü */ -/*{HB_TAG('x','j','b',' '), HB_TAG('X','J','B',' ')},*/ /* Minjungbal -> Minjangbal */ -/*{HB_TAG('x','k','f',' '), HB_TAG('X','K','F',' ')},*/ /* Khengkha */ {HB_TAG('x','m','g',' '), HB_TAG('B','M','L',' ')}, /* Mengaka -> Bamileke */ - {HB_TAG('x','m','m',' '), HB_TAG('M','L','Y',' ')}, /* Manado Malay -> Malay */ - {HB_TAG('x','m','m',' '), HB_TAG('C','P','P',' ')}, /* Manado Malay -> Creoles */ {HB_TAG('x','m','v',' '), HB_TAG('M','L','G',' ')}, /* Antankarana Malagasy -> Malagasy */ {HB_TAG('x','m','w',' '), HB_TAG('M','L','G',' ')}, /* Tsimihety Malagasy -> Malagasy */ {HB_TAG('x','n','j',' '), HB_TAG('S','X','T',' ')}, /* Ngoni (Tanzania) -> Sutu */ {HB_TAG('x','n','q',' '), HB_TAG('S','X','T',' ')}, /* Ngoni (Mozambique) -> Sutu */ {HB_TAG('x','n','r',' '), HB_TAG('D','G','R',' ')}, /* Kangri -> Dogri (macrolanguage) */ -/*{HB_TAG('x','o','g',' '), HB_TAG('X','O','G',' ')},*/ /* Soga */ - {HB_TAG('x','p','e',' '), HB_TAG('X','P','E',' ')}, /* Liberia Kpelle -> Kpelle (Liberia) */ - {HB_TAG('x','p','e',' '), HB_TAG('K','P','L',' ')}, /* Liberia Kpelle -> Kpelle */ - {HB_TAG('x','s','l',' '), HB_TAG('S','S','L',' ')}, /* South Slavey */ - {HB_TAG('x','s','l',' '), HB_TAG('S','L','A',' ')}, /* South Slavey -> Slavey */ - {HB_TAG('x','s','l',' '), HB_TAG('A','T','H',' ')}, /* South Slavey -> Athapaskan */ {HB_TAG('x','s','t',' '), HB_TAG('S','I','G',' ')}, /* Silt'e (retired code) -> Silte Gurage */ -/*{HB_TAG('x','u','b',' '), HB_TAG('X','U','B',' ')},*/ /* Betta Kurumba -> Bette Kuruma */ -/*{HB_TAG('x','u','j',' '), HB_TAG('X','U','J',' ')},*/ /* Jennu Kurumba -> Jennu Kuruma */ {HB_TAG('x','u','p',' '), HB_TAG('A','T','H',' ')}, /* Upper Umpqua -> Athapaskan */ {HB_TAG('x','w','o',' '), HB_TAG('T','O','D',' ')}, /* Written Oirat -> Todo */ {HB_TAG('y','a','j',' '), HB_TAG('B','A','D','0')}, /* Banda-Yangere -> Banda */ - {HB_TAG('y','a','k',' '), HB_TAG_NONE }, /* Yakama != Sakha */ -/*{HB_TAG('y','a','o',' '), HB_TAG('Y','A','O',' ')},*/ /* Yao */ -/*{HB_TAG('y','a','p',' '), HB_TAG('Y','A','P',' ')},*/ /* Yapese */ - {HB_TAG('y','b','a',' '), HB_TAG_NONE }, /* Yala != Yoruba */ {HB_TAG('y','b','b',' '), HB_TAG('B','M','L',' ')}, /* Yemba -> Bamileke */ {HB_TAG('y','b','d',' '), HB_TAG('A','R','K',' ')}, /* Yangbye (retired code) -> Rakhine */ {HB_TAG('y','c','r',' '), HB_TAG('C','P','P',' ')}, /* Yilan Creole -> Creoles */ {HB_TAG('y','d','d',' '), HB_TAG('J','I','I',' ')}, /* Eastern Yiddish -> Yiddish */ -/*{HB_TAG('y','g','p',' '), HB_TAG('Y','G','P',' ')},*/ /* Gepo */ {HB_TAG('y','i','h',' '), HB_TAG('J','I','I',' ')}, /* Western Yiddish -> Yiddish */ - {HB_TAG('y','i','m',' '), HB_TAG_NONE }, /* Yimchungru Naga != Yi Modern */ -/*{HB_TAG('y','n','a',' '), HB_TAG('Y','N','A',' ')},*/ /* Aluo */ {HB_TAG('y','o','s',' '), HB_TAG('Q','I','N',' ')}, /* Yos (retired code) -> Chin */ {HB_TAG('y','u','a',' '), HB_TAG('M','Y','N',' ')}, /* Yucateco -> Mayan */ {HB_TAG('y','u','e',' '), HB_TAG('Z','H','H',' ')}, /* Yue Chinese -> Chinese, Traditional, Hong Kong SAR */ -/*{HB_TAG('y','u','f',' '), HB_TAG('Y','U','F',' ')},*/ /* Havasupai-Walapai-Yavapai */ -/*{HB_TAG('y','w','q',' '), HB_TAG('Y','W','Q',' ')},*/ /* Wuding-Luquan Yi */ {HB_TAG('z','c','h',' '), HB_TAG('Z','H','A',' ')}, /* Central Hongshuihe Zhuang -> Zhuang */ {HB_TAG('z','d','j',' '), HB_TAG('C','M','R',' ')}, /* Ngazidja Comorian -> Comorian */ -/*{HB_TAG('z','e','a',' '), HB_TAG('Z','E','A',' ')},*/ /* Zeeuws -> Zealandic */ {HB_TAG('z','e','h',' '), HB_TAG('Z','H','A',' ')}, /* Eastern Hongshuihe Zhuang -> Zhuang */ {HB_TAG('z','e','n',' '), HB_TAG('B','B','R',' ')}, /* Zenaga -> Berber */ {HB_TAG('z','g','b',' '), HB_TAG('Z','H','A',' ')}, /* Guibei Zhuang -> Zhuang */ - {HB_TAG('z','g','h',' '), HB_TAG('Z','G','H',' ')}, /* Standard Moroccan Tamazight */ - {HB_TAG('z','g','h',' '), HB_TAG('B','B','R',' ')}, /* Standard Moroccan Tamazight -> Berber */ {HB_TAG('z','g','m',' '), HB_TAG('Z','H','A',' ')}, /* Minz Zhuang -> Zhuang */ {HB_TAG('z','g','n',' '), HB_TAG('Z','H','A',' ')}, /* Guibian Zhuang -> Zhuang */ {HB_TAG('z','h','d',' '), HB_TAG('Z','H','A',' ')}, /* Dai Zhuang -> Zhuang */ @@ -1666,7 +1155,6 @@ static const LangTag ot_languages3[] = { {HB_TAG('z','l','q',' '), HB_TAG('Z','H','A',' ')}, /* Liuqian Zhuang -> Zhuang */ {HB_TAG('z','m','i',' '), HB_TAG('M','L','Y',' ')}, /* Negeri Sembilan Malay -> Malay */ {HB_TAG('z','m','z',' '), HB_TAG('B','A','D','0')}, /* Mbandja -> Banda */ - {HB_TAG('z','n','d',' '), HB_TAG_NONE }, /* Zande [collection] != Zande */ {HB_TAG('z','n','e',' '), HB_TAG('Z','N','D',' ')}, /* Zande */ {HB_TAG('z','o','m',' '), HB_TAG('Q','I','N',' ')}, /* Zou -> Chin */ {HB_TAG('z','q','e',' '), HB_TAG('Z','H','A',' ')}, /* Qiubei Zhuang -> Zhuang */ @@ -1677,9 +1165,439 @@ static const LangTag ot_languages3[] = { {HB_TAG('z','y','j',' '), HB_TAG('Z','H','A',' ')}, /* Youjiang Zhuang -> Zhuang */ {HB_TAG('z','y','n',' '), HB_TAG('Z','H','A',' ')}, /* Yongnan Zhuang -> Zhuang */ {HB_TAG('z','y','p',' '), HB_TAG('Q','I','N',' ')}, /* Zyphe Chin -> Chin */ -/*{HB_TAG('z','z','a',' '), HB_TAG('Z','Z','A',' ')},*/ /* Zazaki [macrolanguage] */ {HB_TAG('z','z','j',' '), HB_TAG('Z','H','A',' ')}, /* Zuojiang Zhuang -> Zhuang */ }; + +static const hb_tag_t ot_languages3_multi_values[] = { + HB_TAG('F','A','N',' '), /* Saint Lucian Creole French -> French Antillean */ + HB_TAG('C','P','P',' '), /* Saint Lucian Creole French -> Creoles */ + HB_TAG('A','C','R',' '), /* Achi */ + HB_TAG('M','Y','N',' '), /* Achi -> Mayan */ + HB_TAG('A','C','Y',' '), /* Cypriot Arabic */ + HB_TAG('A','R','A',' '), /* Cypriot Arabic -> Arabic */ + HB_TAG('S','W','A',' '), /* Assyrian Neo-Aramaic -> Swadaya Aramaic */ + HB_TAG('S','Y','R',' '), /* Assyrian Neo-Aramaic -> Syriac */ + HB_TAG('A','K','B',' '), /* Batak Angkola */ + HB_TAG('B','T','K',' '), /* Batak Angkola -> Batak */ + HB_TAG('M','O','R',' '), /* Moroccan Arabic -> Moroccan */ + HB_TAG('A','R','A',' '), /* Moroccan Arabic -> Arabic */ + HB_TAG('A','Z','B',' '), /* South Azerbaijani -> Torki */ + HB_TAG('A','Z','E',' '), /* South Azerbaijani -> Azerbaijani */ + HB_TAG('B','B','C',' '), /* Batak Toba */ + HB_TAG('B','T','K',' '), /* Batak Toba -> Batak */ + HB_TAG('B','G','Q',' '), /* Bagri */ + HB_TAG('R','A','J',' '), /* Bagri -> Rajasthani */ + HB_TAG('B','L','K',' '), /* Pa’o Karen */ + HB_TAG('K','R','N',' '), /* Pa'o Karen -> Karen */ + HB_TAG('B','T','D',' '), /* Batak Dairi (Pakpak) */ + HB_TAG('B','T','K',' '), /* Batak Dairi -> Batak */ + HB_TAG('B','T','M',' '), /* Batak Mandailing */ + HB_TAG('B','T','K',' '), /* Batak Mandailing -> Batak */ + HB_TAG('B','T','S',' '), /* Batak Simalungun */ + HB_TAG('B','T','K',' '), /* Batak Simalungun -> Batak */ + HB_TAG('B','T','X',' '), /* Batak Karo */ + HB_TAG('B','T','K',' '), /* Batak Karo -> Batak */ + HB_TAG('B','T','Z',' '), /* Batak Alas-Kluet */ + HB_TAG('B','T','K',' '), /* Batak Alas-Kluet -> Batak */ + HB_TAG('B','Y','V',' '), /* Medumba */ + HB_TAG('B','M','L',' '), /* Medumba -> Bamileke */ + HB_TAG('C','R','R',' '), /* Southern Carrier -> Carrier */ + HB_TAG('A','T','H',' '), /* Southern Carrier -> Athapaskan */ + HB_TAG('C','A','K',' '), /* Kaqchikel */ + HB_TAG('M','Y','N',' '), /* Kaqchikel -> Mayan */ + HB_TAG('C','B','K',' '), /* Chavacano -> Zamboanga Chavacano */ + HB_TAG('C','P','P',' '), /* Chavacano -> Creoles */ + HB_TAG('H','A','L',' '), /* Halam (Falam Chin) */ + HB_TAG('Q','I','N',' '), /* Falam Chin -> Chin */ + HB_TAG('H','M','A',' '), /* Mari (Russia) [macrolanguage] -> High Mari */ + HB_TAG('L','M','A',' '), /* Mari (Russia) [macrolanguage] -> Low Mari */ + HB_TAG('C','H','P',' '), /* Chipewyan */ + HB_TAG('S','A','Y',' '), /* Chipewyan -> Sayisi */ + HB_TAG('A','T','H',' '), /* Chipewyan -> Athapaskan */ + HB_TAG('Q','U','H',' '), /* Chilean Quechua (retired code) -> Quechua (Bolivia) */ + HB_TAG('Q','U','Z',' '), /* Chilean Quechua (retired code) -> Quechua */ + HB_TAG('E','C','R',' '), /* Southern East Cree -> Eastern Cree */ + HB_TAG('Y','C','R',' '), /* Southern East Cree -> Y-Cree */ + HB_TAG('C','R','E',' '), /* Southern East Cree -> Cree */ + HB_TAG('W','C','R',' '), /* Plains Cree -> West-Cree */ + HB_TAG('Y','C','R',' '), /* Plains Cree -> Y-Cree */ + HB_TAG('C','R','E',' '), /* Plains Cree -> Cree */ + HB_TAG('E','C','R',' '), /* Northern East Cree -> Eastern Cree */ + HB_TAG('Y','C','R',' '), /* Northern East Cree -> Y-Cree */ + HB_TAG('C','R','E',' '), /* Northern East Cree -> Cree */ + HB_TAG('M','C','R',' '), /* Moose Cree */ + HB_TAG('L','C','R',' '), /* Moose Cree -> L-Cree */ + HB_TAG('C','R','E',' '), /* Moose Cree -> Cree */ + HB_TAG('C','R','R',' '), /* Carrier */ + HB_TAG('A','T','H',' '), /* Carrier -> Athapaskan */ + HB_TAG('N','C','R',' '), /* Swampy Cree -> N-Cree */ + HB_TAG('N','H','C',' '), /* Swampy Cree -> Norway House Cree */ + HB_TAG('C','R','E',' '), /* Swampy Cree -> Cree */ + HB_TAG('D','C','R',' '), /* Woods Cree */ + HB_TAG('T','C','R',' '), /* Woods Cree -> TH-Cree */ + HB_TAG('C','R','E',' '), /* Woods Cree -> Cree */ + HB_TAG('S','L','A',' '), /* Slave (Athapascan) [macrolanguage] -> Slavey */ + HB_TAG('A','T','H',' '), /* Slave (Athapascan) [macrolanguage] -> Athapaskan */ + HB_TAG('D','G','O',' '), /* Dogri (individual language) */ + HB_TAG('D','G','R',' '), /* Dogri (macrolanguage) */ + HB_TAG('D','I','Q',' '), /* Dimli */ + HB_TAG('Z','Z','A',' '), /* Dimli -> Zazaki */ + HB_TAG('D','R','I',' '), /* Darwazi (retired code) -> Dari */ + HB_TAG('F','A','R',' '), /* Darwazi (retired code) -> Persian */ + HB_TAG('E','M','K',' '), /* Eastern Maninkakan */ + HB_TAG('M','N','K',' '), /* Eastern Maninkakan -> Maninka */ + HB_TAG('F','A','N','0'), /* Fang (Equatorial Guinea) */ + HB_TAG('B','T','I',' '), /* Fang (Equatorial Guinea) -> Beti */ + HB_TAG('F','A','T',' '), /* Fanti */ + HB_TAG('A','K','A',' '), /* Fanti -> Akan */ + HB_TAG('H','A','L',' '), /* Halam (Falam Chin) (retired code) */ + HB_TAG('Q','I','N',' '), /* Falam Chin (retired code) -> Chin */ + HB_TAG('F','M','P',' '), /* Fe’fe’ */ + HB_TAG('B','M','L',' '), /* Fe'fe' -> Bamileke */ + HB_TAG('F','T','A',' '), /* Pular -> Futa */ + HB_TAG('F','U','L',' '), /* Pular -> Fulah */ + HB_TAG('F','U','V',' '), /* Nigerian Fulfulde */ + HB_TAG('F','U','L',' '), /* Nigerian Fulfulde -> Fulah */ + HB_TAG('G','K','P',' '), /* Guinea Kpelle -> Kpelle (Guinea) */ + HB_TAG('K','P','L',' '), /* Guinea Kpelle -> Kpelle */ + HB_TAG('H','M','D',' '), /* Large Flowery Miao -> A-Hmao */ + HB_TAG('H','M','N',' '), /* Large Flowery Miao -> Hmong */ + HB_TAG('H','M','Z',' '), /* Hmong Shua -> Hmong Shuat */ + HB_TAG('H','M','N',' '), /* Hmong Shua -> Hmong */ + HB_TAG('H','A','R',' '), /* Hadothi -> Harauti */ + HB_TAG('R','A','J',' '), /* Hadothi -> Rajasthani */ + HB_TAG('I','N','U',' '), /* Eastern Canadian Inuktitut -> Inuktitut */ + HB_TAG('I','N','U','K'), /* Eastern Canadian Inuktitut -> Nunavik Inuktitut */ + HB_TAG('J','A','M',' '), /* Jamaican Creole English -> Jamaican Creole */ + HB_TAG('C','P','P',' '), /* Jamaican Creole English -> Creoles */ + HB_TAG('K','A','B','0'), /* Kabyle */ + HB_TAG('B','B','R',' '), /* Kabyle -> Berber */ + HB_TAG('K','H','K',' '), /* Khanty -> Khanty-Kazim */ + HB_TAG('K','H','S',' '), /* Khanty -> Khanty-Shurishkar */ + HB_TAG('K','H','V',' '), /* Khanty -> Khanty-Vakhi */ + HB_TAG('K','E','A',' '), /* Kabuverdianu (Crioulo) */ + HB_TAG('C','P','P',' '), /* Kabuverdianu -> Creoles */ + HB_TAG('K','E','K',' '), /* Kekchi */ + HB_TAG('M','Y','N',' '), /* Kekchí -> Mayan */ + HB_TAG('K','H','T',' '), /* Khamti -> Khamti Shan */ + HB_TAG('K','H','N',' '), /* Khamti -> Khamti Shan (Microsoft fonts) */ + HB_TAG('K','I','U',' '), /* Kirmanjki */ + HB_TAG('Z','Z','A',' '), /* Kirmanjki -> Zazaki */ + HB_TAG('K','J','P',' '), /* Pwo Eastern Karen -> Eastern Pwo Karen */ + HB_TAG('K','R','N',' '), /* Pwo Eastern Karen -> Karen */ + HB_TAG('K','O','P',' '), /* Komi-Permyak */ + HB_TAG('K','O','M',' '), /* Komi-Permyak -> Komi */ + HB_TAG('K','O','Z',' '), /* Komi-Zyrian */ + HB_TAG('K','O','M',' '), /* Komi-Zyrian -> Komi */ + HB_TAG('K','A','R',' '), /* Karachay-Balkar -> Karachay */ + HB_TAG('B','A','L',' '), /* Karachay-Balkar -> Balkar */ + HB_TAG('K','R','I',' '), /* Krio */ + HB_TAG('C','P','P',' '), /* Krio -> Creoles */ + HB_TAG('K','S','W',' '), /* S’gaw Karen */ + HB_TAG('K','R','N',' '), /* S'gaw Karen -> Karen */ + HB_TAG('K','V','Q',' '), /* Geba Karen */ + HB_TAG('K','R','N',' '), /* Geba Karen -> Karen */ + HB_TAG('K','Y','U',' '), /* Western Kayah */ + HB_TAG('K','R','N',' '), /* Western Kayah -> Karen */ + HB_TAG('M','I','Z',' '), /* Lushai -> Mizo */ + HB_TAG('Q','I','N',' '), /* Lushai -> Chin */ + HB_TAG('M','A','M',' '), /* Mam */ + HB_TAG('M','Y','N',' '), /* Mam -> Mayan */ + HB_TAG('M','L','Y',' '), /* North Moluccan Malay -> Malay */ + HB_TAG('C','P','P',' '), /* North Moluccan Malay -> Creoles */ + HB_TAG('M','F','A',' '), /* Pattani Malay */ + HB_TAG('M','L','Y',' '), /* Pattani Malay -> Malay */ + HB_TAG('M','F','E',' '), /* Morisyen */ + HB_TAG('C','P','P',' '), /* Morisyen -> Creoles */ + HB_TAG('M','I','N',' '), /* Minangkabau */ + HB_TAG('M','L','Y',' '), /* Minangkabau -> Malay */ + HB_TAG('M','L','N',' '), /* Western Maninkakan -> Malinke */ + HB_TAG('M','N','K',' '), /* Western Maninkakan -> Maninka */ + HB_TAG('M','N','D',' '), /* Mandinka */ + HB_TAG('M','N','K',' '), /* Mandinka -> Maninka */ + HB_TAG('M','O','N',' '), /* Mon */ + HB_TAG('M','O','N','T'), /* Mon -> Thailand Mon */ + HB_TAG('M','L','Y',' '), /* Sabah Malay -> Malay */ + HB_TAG('C','P','P',' '), /* Sabah Malay -> Creoles */ + HB_TAG('M','W','W',' '), /* Hmong Daw */ + HB_TAG('H','M','N',' '), /* Hmong Daw -> Hmong */ + HB_TAG('N','A','G',' '), /* Naga Pidgin -> Naga-Assamese */ + HB_TAG('C','P','P',' '), /* Naga Pidgin -> Creoles */ + HB_TAG('O','C','R',' '), /* Severn Ojibwa -> Oji-Cree */ + HB_TAG('O','J','B',' '), /* Severn Ojibwa -> Ojibway */ + HB_TAG('P','A','P','0'), /* Papiamento -> Papiamentu */ + HB_TAG('C','P','P',' '), /* Papiamento -> Creoles */ + HB_TAG('A','R','A',' '), /* Sudanese Creole Arabic -> Arabic */ + HB_TAG('C','P','P',' '), /* Sudanese Creole Arabic -> Creoles */ + HB_TAG('P','I','H',' '), /* Pitcairn-Norfolk -> Norfolk */ + HB_TAG('C','P','P',' '), /* Pitcairn-Norfolk -> Creoles */ + HB_TAG('P','O','H',' '), /* Poqomchi' -> Pocomchi */ + HB_TAG('M','Y','N',' '), /* Poqomchi' -> Mayan */ + HB_TAG('D','R','I',' '), /* Dari */ + HB_TAG('F','A','R',' '), /* Dari -> Persian */ + HB_TAG('P','W','O',' '), /* Pwo Western Karen -> Western Pwo Karen */ + HB_TAG('K','R','N',' '), /* Pwo Western Karen -> Karen */ + HB_TAG('Q','W','H',' '), /* Huallaga Huánuco Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Huallaga Huánuco Quechua -> Quechua */ + HB_TAG('Q','U','C',' '), /* K’iche’ */ + HB_TAG('M','Y','N',' '), /* K'iche' -> Mayan */ + HB_TAG('Q','V','I',' '), /* Calderón Highland Quichua -> Quechua (Ecuador) */ + HB_TAG('Q','U','Z',' '), /* Calderón Highland Quichua -> Quechua */ + HB_TAG('Q','V','I',' '), /* Chimborazo Highland Quichua -> Quechua (Ecuador) */ + HB_TAG('Q','U','Z',' '), /* Chimborazo Highland Quichua -> Quechua */ + HB_TAG('Q','U','H',' '), /* South Bolivian Quechua -> Quechua (Bolivia) */ + HB_TAG('Q','U','Z',' '), /* South Bolivian Quechua -> Quechua */ + HB_TAG('Q','U','H',' '), /* North Bolivian Quechua -> Quechua (Bolivia) */ + HB_TAG('Q','U','Z',' '), /* North Bolivian Quechua -> Quechua */ + HB_TAG('Q','V','I',' '), /* Southern Pastaza Quechua -> Quechua (Ecuador) */ + HB_TAG('Q','U','Z',' '), /* Southern Pastaza Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Yanahuanca Pasco Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Yanahuanca Pasco Quechua -> Quechua */ + HB_TAG('Q','U','H',' '), /* Santiago del Estero Quichua -> Quechua (Bolivia) */ + HB_TAG('Q','U','Z',' '), /* Santiago del Estero Quichua -> Quechua */ + HB_TAG('Q','V','I',' '), /* Tena Lowland Quichua -> Quechua (Ecuador) */ + HB_TAG('Q','U','Z',' '), /* Tena Lowland Quichua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Yauyos Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Yauyos Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Ambo-Pasco Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Ambo-Pasco Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua */ + HB_TAG('Q','V','I',' '), /* Imbabura Highland Quichua -> Quechua (Ecuador) */ + HB_TAG('Q','U','Z',' '), /* Imbabura Highland Quichua -> Quechua */ + HB_TAG('Q','V','I',' '), /* Loja Highland Quichua -> Quechua (Ecuador) */ + HB_TAG('Q','U','Z',' '), /* Loja Highland Quichua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Cajatambo North Lima Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Cajatambo North Lima Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Margos-Yarowilca-Lauricocha Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Margos-Yarowilca-Lauricocha Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* North Junín Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* North Junín Quechua -> Quechua */ + HB_TAG('Q','V','I',' '), /* Napo Lowland Quechua -> Quechua (Ecuador) */ + HB_TAG('Q','U','Z',' '), /* Napo Lowland Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Pacaraos Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Pacaraos Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Huaylla Wanca Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Huaylla Wanca Quechua -> Quechua */ + HB_TAG('Q','V','I',' '), /* Northern Pastaza Quichua -> Quechua (Ecuador) */ + HB_TAG('Q','U','Z',' '), /* Northern Pastaza Quichua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Corongo Ancash Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Corongo Ancash Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Huaylas Ancash Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Huaylas Ancash Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Sihuas Ancash Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Sihuas Ancash Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Chiquián Ancash Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Chiquián Ancash Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Chincha Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Chincha Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Panao Huánuco Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Panao Huánuco Quechua -> Quechua */ + HB_TAG('Q','V','I',' '), /* Salasaca Highland Quichua -> Quechua (Ecuador) */ + HB_TAG('Q','U','Z',' '), /* Salasaca Highland Quichua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Northern Conchucos Ancash Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Northern Conchucos Ancash Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Southern Conchucos Ancash Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Southern Conchucos Ancash Quechua -> Quechua */ + HB_TAG('Q','V','I',' '), /* Cañar Highland Quichua -> Quechua (Ecuador) */ + HB_TAG('Q','U','Z',' '), /* Cañar Highland Quichua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Santa Ana de Tusi Pasco Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Santa Ana de Tusi Pasco Quechua -> Quechua */ + HB_TAG('Q','W','H',' '), /* Jauja Wanca Quechua -> Quechua (Peru) */ + HB_TAG('Q','U','Z',' '), /* Jauja Wanca Quechua -> Quechua */ + HB_TAG('R','I','F',' '), /* Tarifit */ + HB_TAG('B','B','R',' '), /* Tarifit -> Berber */ + HB_TAG('R','M','Y',' '), /* Vlax Romani */ + HB_TAG('R','O','Y',' '), /* Vlax Romani -> Romany */ + HB_TAG('S','C','S',' '), /* North Slavey */ + HB_TAG('S','L','A',' '), /* North Slavey -> Slavey */ + HB_TAG('A','T','H',' '), /* North Slavey -> Athapaskan */ + HB_TAG('S','F','M',' '), /* Small Flowery Miao */ + HB_TAG('H','M','N',' '), /* Small Flowery Miao -> Hmong */ + HB_TAG('S','H','I',' '), /* Tachelhit */ + HB_TAG('B','B','R',' '), /* Tachelhit -> Berber */ + HB_TAG('T','A','Q',' '), /* Tamasheq */ + HB_TAG('T','M','H',' '), /* Tamasheq -> Tamashek */ + HB_TAG('B','B','R',' '), /* Tamasheq -> Berber */ + HB_TAG('T','H','V',' '), /* Tahaggart Tamahaq */ + HB_TAG('T','M','H',' '), /* Tahaggart Tamahaq -> Tamashek */ + HB_TAG('B','B','R',' '), /* Tahaggart Tamahaq -> Berber */ + HB_TAG('T','H','Z',' '), /* Tayart Tamajeq */ + HB_TAG('T','M','H',' '), /* Tayart Tamajeq -> Tamashek */ + HB_TAG('B','B','R',' '), /* Tayart Tamajeq -> Berber */ + HB_TAG('T','M','H',' '), /* Tamashek [macrolanguage] */ + HB_TAG('B','B','R',' '), /* Tamashek [macrolanguage] -> Berber */ + HB_TAG('D','R','I',' '), /* Tangshewi (retired code) -> Dari */ + HB_TAG('F','A','R',' '), /* Tangshewi (retired code) -> Persian */ + HB_TAG('T','P','I',' '), /* Tok Pisin */ + HB_TAG('C','P','P',' '), /* Tok Pisin -> Creoles */ + HB_TAG('T','U','A',' '), /* Turoyo -> Turoyo Aramaic */ + HB_TAG('S','Y','R',' '), /* Turoyo -> Syriac */ + HB_TAG('T','T','Q',' '), /* Tawallammat Tamajaq */ + HB_TAG('T','M','H',' '), /* Tawallammat Tamajaq -> Tamashek */ + HB_TAG('B','B','R',' '), /* Tawallammat Tamajaq -> Berber */ + HB_TAG('T','Z','M',' '), /* Central Atlas Tamazight -> Tamazight */ + HB_TAG('B','B','R',' '), /* Central Atlas Tamazight -> Berber */ + HB_TAG('T','Z','O',' '), /* Tzotzil */ + HB_TAG('M','Y','N',' '), /* Tzotzil -> Mayan */ + HB_TAG('V','R','O',' '), /* Võro */ + HB_TAG('E','T','I',' '), /* Võro -> Estonian */ + HB_TAG('W','A','G',' '), /* Wagdi */ + HB_TAG('R','A','J',' '), /* Wagdi -> Rajasthani */ + HB_TAG('W','D','T',' '), /* Wyandot (retired code) -> Wendat */ + HB_TAG('W','Y','N',' '), /* Wyandot (retired code) */ + HB_TAG('K','L','M',' '), /* Kalmyk */ + HB_TAG('T','O','D',' '), /* Kalmyk -> Todo */ + HB_TAG('M','L','Y',' '), /* Manado Malay -> Malay */ + HB_TAG('C','P','P',' '), /* Manado Malay -> Creoles */ + HB_TAG('X','P','E',' '), /* Liberia Kpelle -> Kpelle (Liberia) */ + HB_TAG('K','P','L',' '), /* Liberia Kpelle -> Kpelle */ + HB_TAG('S','S','L',' '), /* South Slavey */ + HB_TAG('S','L','A',' '), /* South Slavey -> Slavey */ + HB_TAG('A','T','H',' '), /* South Slavey -> Athapaskan */ + HB_TAG('Z','G','H',' '), /* Standard Moroccan Tamazight */ + HB_TAG('B','B','R',' '), /* Standard Moroccan Tamazight -> Berber */ +}; + +static const LangTagRange ot_languages3_multi[] = { + {HB_TAG('a','c','f',' '), 0, 2}, /* Saint Lucian Creole French -> French Antillean */ + {HB_TAG('a','c','r',' '), 2, 2}, /* Achi */ + {HB_TAG('a','c','y',' '), 4, 2}, /* Cypriot Arabic */ + {HB_TAG('a','i','i',' '), 6, 2}, /* Assyrian Neo-Aramaic -> Swadaya Aramaic */ + {HB_TAG('a','k','b',' '), 8, 2}, /* Batak Angkola */ + {HB_TAG('a','r','y',' '), 10, 2}, /* Moroccan Arabic -> Moroccan */ + {HB_TAG('a','z','b',' '), 12, 2}, /* South Azerbaijani -> Torki */ + {HB_TAG('b','b','c',' '), 14, 2}, /* Batak Toba */ + {HB_TAG('b','g','q',' '), 16, 2}, /* Bagri */ + {HB_TAG('b','l','k',' '), 18, 2}, /* Pa’o Karen */ + {HB_TAG('b','t','d',' '), 20, 2}, /* Batak Dairi (Pakpak) */ + {HB_TAG('b','t','m',' '), 22, 2}, /* Batak Mandailing */ + {HB_TAG('b','t','s',' '), 24, 2}, /* Batak Simalungun */ + {HB_TAG('b','t','x',' '), 26, 2}, /* Batak Karo */ + {HB_TAG('b','t','z',' '), 28, 2}, /* Batak Alas-Kluet */ + {HB_TAG('b','y','v',' '), 30, 2}, /* Medumba */ + {HB_TAG('c','a','f',' '), 32, 2}, /* Southern Carrier -> Carrier */ + {HB_TAG('c','a','k',' '), 34, 2}, /* Kaqchikel */ + {HB_TAG('c','b','k',' '), 36, 2}, /* Chavacano -> Zamboanga Chavacano */ + {HB_TAG('c','f','m',' '), 38, 2}, /* Halam (Falam Chin) */ + {HB_TAG('c','h','m',' '), 40, 2}, /* Mari (Russia) [macrolanguage] -> High Mari */ + {HB_TAG('c','h','p',' '), 42, 3}, /* Chipewyan */ + {HB_TAG('c','q','u',' '), 45, 2}, /* Chilean Quechua (retired code) -> Quechua (Bolivia) */ + {HB_TAG('c','r','j',' '), 47, 3}, /* Southern East Cree -> Eastern Cree */ + {HB_TAG('c','r','k',' '), 50, 3}, /* Plains Cree -> West-Cree */ + {HB_TAG('c','r','l',' '), 53, 3}, /* Northern East Cree -> Eastern Cree */ + {HB_TAG('c','r','m',' '), 56, 3}, /* Moose Cree */ + {HB_TAG('c','r','x',' '), 59, 2}, /* Carrier */ + {HB_TAG('c','s','w',' '), 61, 3}, /* Swampy Cree -> N-Cree */ + {HB_TAG('c','w','d',' '), 64, 3}, /* Woods Cree */ + {HB_TAG('d','e','n',' '), 67, 2}, /* Slave (Athapascan) [macrolanguage] -> Slavey */ + {HB_TAG('d','g','o',' '), 69, 2}, /* Dogri (individual language) */ + {HB_TAG('d','i','q',' '), 71, 2}, /* Dimli */ + {HB_TAG('d','r','w',' '), 73, 2}, /* Darwazi (retired code) -> Dari */ + {HB_TAG('e','m','k',' '), 75, 2}, /* Eastern Maninkakan */ + {HB_TAG('f','a','n',' '), 77, 2}, /* Fang (Equatorial Guinea) */ + {HB_TAG('f','a','t',' '), 79, 2}, /* Fanti */ + {HB_TAG('f','l','m',' '), 81, 2}, /* Halam (Falam Chin) (retired code) */ + {HB_TAG('f','m','p',' '), 83, 2}, /* Fe’fe’ */ + {HB_TAG('f','u','f',' '), 85, 2}, /* Pular -> Futa */ + {HB_TAG('f','u','v',' '), 87, 2}, /* Nigerian Fulfulde */ + {HB_TAG('g','k','p',' '), 89, 2}, /* Guinea Kpelle -> Kpelle (Guinea) */ + {HB_TAG('h','m','d',' '), 91, 2}, /* Large Flowery Miao -> A-Hmao */ + {HB_TAG('h','m','z',' '), 93, 2}, /* Hmong Shua -> Hmong Shuat */ + {HB_TAG('h','o','j',' '), 95, 2}, /* Hadothi -> Harauti */ + {HB_TAG('i','k','e',' '), 97, 2}, /* Eastern Canadian Inuktitut -> Inuktitut */ + {HB_TAG('j','a','m',' '), 99, 2}, /* Jamaican Creole English -> Jamaican Creole */ + {HB_TAG('k','a','b',' '), 101, 2}, /* Kabyle */ + {HB_TAG('k','c','a',' '), 103, 3}, /* Khanty -> Khanty-Kazim */ + {HB_TAG('k','e','a',' '), 106, 2}, /* Kabuverdianu (Crioulo) */ + {HB_TAG('k','e','k',' '), 108, 2}, /* Kekchi */ + {HB_TAG('k','h','t',' '), 110, 2}, /* Khamti -> Khamti Shan */ + {HB_TAG('k','i','u',' '), 112, 2}, /* Kirmanjki */ + {HB_TAG('k','j','p',' '), 114, 2}, /* Pwo Eastern Karen -> Eastern Pwo Karen */ + {HB_TAG('k','o','i',' '), 116, 2}, /* Komi-Permyak */ + {HB_TAG('k','p','v',' '), 118, 2}, /* Komi-Zyrian */ + {HB_TAG('k','r','c',' '), 120, 2}, /* Karachay-Balkar -> Karachay */ + {HB_TAG('k','r','i',' '), 122, 2}, /* Krio */ + {HB_TAG('k','s','w',' '), 124, 2}, /* S’gaw Karen */ + {HB_TAG('k','v','q',' '), 126, 2}, /* Geba Karen */ + {HB_TAG('k','y','u',' '), 128, 2}, /* Western Kayah */ + {HB_TAG('l','u','s',' '), 130, 2}, /* Lushai -> Mizo */ + {HB_TAG('m','a','m',' '), 132, 2}, /* Mam */ + {HB_TAG('m','a','x',' '), 134, 2}, /* North Moluccan Malay -> Malay */ + {HB_TAG('m','f','a',' '), 136, 2}, /* Pattani Malay */ + {HB_TAG('m','f','e',' '), 138, 2}, /* Morisyen */ + {HB_TAG('m','i','n',' '), 140, 2}, /* Minangkabau */ + {HB_TAG('m','l','q',' '), 142, 2}, /* Western Maninkakan -> Malinke */ + {HB_TAG('m','n','k',' '), 144, 2}, /* Mandinka */ + {HB_TAG('m','n','w',' '), 146, 2}, /* Mon */ + {HB_TAG('m','s','i',' '), 148, 2}, /* Sabah Malay -> Malay */ + {HB_TAG('m','w','w',' '), 150, 2}, /* Hmong Daw */ + {HB_TAG('n','a','g',' '), 152, 2}, /* Naga Pidgin -> Naga-Assamese */ + {HB_TAG('o','j','s',' '), 154, 2}, /* Severn Ojibwa -> Oji-Cree */ + {HB_TAG('p','a','p',' '), 156, 2}, /* Papiamento -> Papiamentu */ + {HB_TAG('p','g','a',' '), 158, 2}, /* Sudanese Creole Arabic -> Arabic */ + {HB_TAG('p','i','h',' '), 160, 2}, /* Pitcairn-Norfolk -> Norfolk */ + {HB_TAG('p','o','h',' '), 162, 2}, /* Poqomchi' -> Pocomchi */ + {HB_TAG('p','r','s',' '), 164, 2}, /* Dari */ + {HB_TAG('p','w','o',' '), 166, 2}, /* Pwo Western Karen -> Western Pwo Karen */ + {HB_TAG('q','u','b',' '), 168, 2}, /* Huallaga Huánuco Quechua -> Quechua (Peru) */ + {HB_TAG('q','u','c',' '), 170, 2}, /* K’iche’ */ + {HB_TAG('q','u','d',' '), 172, 2}, /* Calderón Highland Quichua -> Quechua (Ecuador) */ + {HB_TAG('q','u','g',' '), 174, 2}, /* Chimborazo Highland Quichua -> Quechua (Ecuador) */ + {HB_TAG('q','u','h',' '), 176, 2}, /* South Bolivian Quechua -> Quechua (Bolivia) */ + {HB_TAG('q','u','l',' '), 178, 2}, /* North Bolivian Quechua -> Quechua (Bolivia) */ + {HB_TAG('q','u','p',' '), 180, 2}, /* Southern Pastaza Quechua -> Quechua (Ecuador) */ + {HB_TAG('q','u','r',' '), 182, 2}, /* Yanahuanca Pasco Quechua -> Quechua (Peru) */ + {HB_TAG('q','u','s',' '), 184, 2}, /* Santiago del Estero Quichua -> Quechua (Bolivia) */ + {HB_TAG('q','u','w',' '), 186, 2}, /* Tena Lowland Quichua -> Quechua (Ecuador) */ + {HB_TAG('q','u','x',' '), 188, 2}, /* Yauyos Quechua -> Quechua (Peru) */ + {HB_TAG('q','v','a',' '), 190, 2}, /* Ambo-Pasco Quechua -> Quechua (Peru) */ + {HB_TAG('q','v','h',' '), 192, 2}, /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua (Peru) */ + {HB_TAG('q','v','i',' '), 194, 2}, /* Imbabura Highland Quichua -> Quechua (Ecuador) */ + {HB_TAG('q','v','j',' '), 196, 2}, /* Loja Highland Quichua -> Quechua (Ecuador) */ + {HB_TAG('q','v','l',' '), 198, 2}, /* Cajatambo North Lima Quechua -> Quechua (Peru) */ + {HB_TAG('q','v','m',' '), 200, 2}, /* Margos-Yarowilca-Lauricocha Quechua -> Quechua (Peru) */ + {HB_TAG('q','v','n',' '), 202, 2}, /* North Junín Quechua -> Quechua (Peru) */ + {HB_TAG('q','v','o',' '), 204, 2}, /* Napo Lowland Quechua -> Quechua (Ecuador) */ + {HB_TAG('q','v','p',' '), 206, 2}, /* Pacaraos Quechua -> Quechua (Peru) */ + {HB_TAG('q','v','w',' '), 208, 2}, /* Huaylla Wanca Quechua -> Quechua (Peru) */ + {HB_TAG('q','v','z',' '), 210, 2}, /* Northern Pastaza Quichua -> Quechua (Ecuador) */ + {HB_TAG('q','w','a',' '), 212, 2}, /* Corongo Ancash Quechua -> Quechua (Peru) */ + {HB_TAG('q','w','h',' '), 214, 2}, /* Huaylas Ancash Quechua -> Quechua (Peru) */ + {HB_TAG('q','w','s',' '), 216, 2}, /* Sihuas Ancash Quechua -> Quechua (Peru) */ + {HB_TAG('q','x','a',' '), 218, 2}, /* Chiquián Ancash Quechua -> Quechua (Peru) */ + {HB_TAG('q','x','c',' '), 220, 2}, /* Chincha Quechua -> Quechua (Peru) */ + {HB_TAG('q','x','h',' '), 222, 2}, /* Panao Huánuco Quechua -> Quechua (Peru) */ + {HB_TAG('q','x','l',' '), 224, 2}, /* Salasaca Highland Quichua -> Quechua (Ecuador) */ + {HB_TAG('q','x','n',' '), 226, 2}, /* Northern Conchucos Ancash Quechua -> Quechua (Peru) */ + {HB_TAG('q','x','o',' '), 228, 2}, /* Southern Conchucos Ancash Quechua -> Quechua (Peru) */ + {HB_TAG('q','x','r',' '), 230, 2}, /* Cañar Highland Quichua -> Quechua (Ecuador) */ + {HB_TAG('q','x','t',' '), 232, 2}, /* Santa Ana de Tusi Pasco Quechua -> Quechua (Peru) */ + {HB_TAG('q','x','w',' '), 234, 2}, /* Jauja Wanca Quechua -> Quechua (Peru) */ + {HB_TAG('r','i','f',' '), 236, 2}, /* Tarifit */ + {HB_TAG('r','m','y',' '), 238, 2}, /* Vlax Romani */ + {HB_TAG('s','c','s',' '), 240, 3}, /* North Slavey */ + {HB_TAG('s','f','m',' '), 243, 2}, /* Small Flowery Miao */ + {HB_TAG('s','h','i',' '), 245, 2}, /* Tachelhit */ + {HB_TAG('t','a','q',' '), 247, 3}, /* Tamasheq */ + {HB_TAG('t','h','v',' '), 250, 3}, /* Tahaggart Tamahaq */ + {HB_TAG('t','h','z',' '), 253, 3}, /* Tayart Tamajeq */ + {HB_TAG('t','m','h',' '), 256, 2}, /* Tamashek [macrolanguage] */ + {HB_TAG('t','n','f',' '), 258, 2}, /* Tangshewi (retired code) -> Dari */ + {HB_TAG('t','p','i',' '), 260, 2}, /* Tok Pisin */ + {HB_TAG('t','r','u',' '), 262, 2}, /* Turoyo -> Turoyo Aramaic */ + {HB_TAG('t','t','q',' '), 264, 3}, /* Tawallammat Tamajaq */ + {HB_TAG('t','z','m',' '), 267, 2}, /* Central Atlas Tamazight -> Tamazight */ + {HB_TAG('t','z','o',' '), 269, 2}, /* Tzotzil */ + {HB_TAG('v','r','o',' '), 271, 2}, /* Võro */ + {HB_TAG('w','b','r',' '), 273, 2}, /* Wagdi */ + {HB_TAG('w','y','a',' '), 275, 2}, /* Wyandot (retired code) -> Wendat */ + {HB_TAG('x','a','l',' '), 277, 2}, /* Kalmyk */ + {HB_TAG('x','m','m',' '), 279, 2}, /* Manado Malay -> Malay */ + {HB_TAG('x','p','e',' '), 281, 2}, /* Liberia Kpelle -> Kpelle (Liberia) */ + {HB_TAG('x','s','l',' '), 283, 3}, /* South Slavey */ + {HB_TAG('z','g','h',' '), 286, 2}, /* Standard Moroccan Tamazight */ +}; #endif /** @@ -3205,7 +3123,7 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag) case HB_TAG('Z','H','T','M'): /* Chinese, Traditional, Macao SAR */ return hb_language_from_string ("zh-MO", -1); /* Chinese [macrolanguage]; Macao */ case HB_TAG('Z','Z','A',' '): /* Zazaki */ - return hb_language_from_string ("zza", -1); /* Zazaki [macrolanguage] */ + return hb_language_from_string ("zza", -1); /* Zaza [macrolanguage] */ default: return HB_LANGUAGE_INVALID; } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-tag.cc b/src/java.desktop/share/native/libharfbuzz/hb-ot-tag.cc index 786a220b6ec..79407dd6661 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-tag.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-tag.cc @@ -234,6 +234,29 @@ lang_matches (const char *lang_str, (lang_str[spec_len] == '\0' || lang_str[spec_len] == '-'); } +static bool +bfind_tag (const hb_tag_t *array, + unsigned len, + hb_tag_t key) +{ + unsigned min = 0; + unsigned max = len; + + while (min < max) + { + unsigned mid = min + (max - min) / 2; + hb_tag_t val = array[mid]; + if (key < val) + max = mid; + else if (key > val) + min = mid + 1; + else + return true; + } + + return false; +} + struct LangTag { hb_tag_t language; @@ -247,6 +270,20 @@ struct LangTag { return cmp (that->language); } }; +struct LangTagRange +{ + hb_tag_t language; + uint16_t offset; + uint8_t count; + + int cmp (hb_tag_t a) const + { + return a < this->language ? -1 : a > this->language ? +1 : 0; + } + int cmp (const LangTagRange *that) const + { return cmp (that->language); } +}; + #include "hb-ot-tag-table.hh" /* The corresponding languages IDs for the following IDs are unclear, @@ -307,46 +344,84 @@ hb_ot_tags_from_language (const char *lang_str, lang_str = s + 1; } #endif - const LangTag *ot_languages = nullptr; - unsigned ot_languages_len = 0; const char *dash = strchr (lang_str, '-'); unsigned first_len = dash ? dash - lang_str : limit - lang_str; + hb_tag_t lang_tag = hb_tag_from_string (lang_str, first_len); + if (first_len == 2) { - ot_languages = ot_languages2; - ot_languages_len = ARRAY_LENGTH (ot_languages2); + static hb_atomic_t last_tag_idx_2 = 0; /* Poor man's cache. */ + unsigned tag_idx = last_tag_idx_2; + + if (likely (tag_idx < ARRAY_LENGTH (ot_languages2) && + ot_languages2[tag_idx].language == lang_tag) || + hb_sorted_array (ot_languages2).bfind (lang_tag, &tag_idx)) + { + last_tag_idx_2 = tag_idx; + unsigned int i; + while (tag_idx != 0 && + ot_languages2[tag_idx].language == ot_languages2[tag_idx - 1].language) + tag_idx--; + for (i = 0; + i < *count && + tag_idx + i < ARRAY_LENGTH (ot_languages2) && + ot_languages2[tag_idx + i].tag != HB_TAG_NONE && + ot_languages2[tag_idx + i].language == ot_languages2[tag_idx].language; + i++) + tags[i] = ot_languages2[tag_idx + i].tag; + *count = i; + return; + } } #ifndef HB_NO_LANGUAGE_LONG else if (first_len == 3) { - ot_languages = ot_languages3; - ot_languages_len = ARRAY_LENGTH (ot_languages3); - } -#endif + static hb_atomic_t last_tag_idx_3 = 0; /* Poor man's cache. */ + unsigned tag_idx = last_tag_idx_3; - hb_tag_t lang_tag = hb_tag_from_string (lang_str, first_len); + if (likely (tag_idx < ARRAY_LENGTH (ot_languages3) && + ot_languages3[tag_idx].language == lang_tag) || + hb_sorted_array (ot_languages3).bfind (lang_tag, &tag_idx)) + { + last_tag_idx_3 = tag_idx; + if (*count) + { + tags[0] = ot_languages3[tag_idx].tag; + *count = 1; + } + else + *count = 0; + return; + } - static hb_atomic_t last_tag_idx = 0; /* Poor man's cache. */ - unsigned tag_idx = last_tag_idx; + static hb_atomic_t last_tag_idx_3_multi = 0; /* Poor man's cache. */ + unsigned multi_tag_idx = last_tag_idx_3_multi; - if (likely (tag_idx < ot_languages_len && ot_languages[tag_idx].language == lang_tag) || - hb_sorted_array (ot_languages, ot_languages_len).bfind (lang_tag, &tag_idx)) - { - last_tag_idx = tag_idx; - unsigned int i; - while (tag_idx != 0 && - ot_languages[tag_idx].language == ot_languages[tag_idx - 1].language) - tag_idx--; - for (i = 0; - i < *count && - tag_idx + i < ot_languages_len && - ot_languages[tag_idx + i].tag != HB_TAG_NONE && - ot_languages[tag_idx + i].language == ot_languages[tag_idx].language; - i++) - tags[i] = ot_languages[tag_idx + i].tag; - *count = i; + if (likely (multi_tag_idx < ARRAY_LENGTH (ot_languages3_multi) && + ot_languages3_multi[multi_tag_idx].language == lang_tag) || + hb_sorted_array (ot_languages3_multi).bfind (lang_tag, &multi_tag_idx)) + { + last_tag_idx_3_multi = multi_tag_idx; + const LangTagRange &range = ot_languages3_multi[multi_tag_idx]; + unsigned int i; + for (i = 0; i < *count && i < range.count; i++) + tags[i] = ot_languages3_multi_values[range.offset + i]; + *count = i; + return; + } + + if (bfind_tag (ot_languages3_blocked, ARRAY_LENGTH (ot_languages3_blocked), lang_tag)) + { + *count = 0; + return; + } + + /* Assume it's ISO-639-3 and upper-case and use it. */ + tags[0] = lang_tag & ~0x20202000u; + *count = 1; return; } +#endif } #ifndef HB_NO_LANGUAGE_LONG @@ -525,6 +600,13 @@ hb_ot_tag_to_language (hb_tag_t tag) hb_tag_to_string (ot_languages3[i].language, buf); return hb_language_from_string (buf, 3); } + for (i = 0; i < ARRAY_LENGTH (ot_languages3_multi); i++) + for (unsigned int j = 0; j < ot_languages3_multi[i].count; j++) + if (ot_languages3_multi_values[ot_languages3_multi[i].offset + j] == tag) + { + hb_tag_to_string (ot_languages3_multi[i].language, buf); + return hb_language_from_string (buf, 3); + } #endif /* Return a custom language in the form of "x-hbot-AABBCCDD". @@ -642,6 +724,23 @@ test_langs_sorted () abort(); } } + for (unsigned int i = 1; i < ARRAY_LENGTH (ot_languages3_multi); i++) + { + int c = ot_languages3_multi[i].cmp (&ot_languages3_multi[i - 1]); + if (c > 0) + { + fprintf (stderr, "ot_languages3_multi not sorted at index %u: %08x %d %08x\n", + i, ot_languages3_multi[i-1].language, c, ot_languages3_multi[i].language); + abort(); + } + } + for (unsigned int i = 1; i < ARRAY_LENGTH (ot_languages3_blocked); i++) + if (ot_languages3_blocked[i] < ot_languages3_blocked[i - 1]) + { + fprintf (stderr, "ot_languages3_blocked not sorted at index %u: %08x < %08x\n", + i, ot_languages3_blocked[i], ot_languages3_blocked[i - 1]); + abort(); + } #endif } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-var-common.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-var-common.hh index d0a4224c9b0..26c4d6cfec9 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-var-common.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-var-common.hh @@ -40,7 +40,7 @@ using rebase_tent_result_scratch_t = hb_pair_tcheck_struct (this)); } - unsigned get_size (unsigned axis_count_times_2) const + size_t get_size (unsigned axis_count_times_2) const { unsigned total_size = min_size; unsigned count = tupleVarCount.get_count (); @@ -1700,6 +1707,16 @@ struct item_variations_t const hb_map_t& get_varidx_map () const { return varidx_map; } + bool add_vardata_encoding_for_testing (hb_vector_t*> &&rows, + unsigned num_cols) + { + encodings.push (delta_row_encoding_t (std::move (rows), num_cols)); + return !encodings.in_error (); + } + + bool compile_varidx_map_for_testing (const hb_hashmap_t*>& front_mapping) + { return compile_varidx_map (front_mapping); } + bool instantiate (const ItemVariationStore& varStore, const hb_subset_plan_t *plan, bool optimize=true, @@ -2046,27 +2063,46 @@ struct item_variations_t { /* full encoding_row -> new VarIdxes mapping */ hb_hashmap_t*, unsigned> back_mapping; + hb_vector_t split_encodings; - for (unsigned major = 0; major < encodings.length; major++) + for (unsigned i = 0; i < encodings.length; i++) { - delta_row_encoding_t& encoding = encodings[major]; + delta_row_encoding_t& encoding = encodings[i]; /* just sanity check, this shouldn't happen */ if (encoding.is_empty ()) return false; unsigned num_rows = encoding.items.length; + unsigned num_cols = encoding.chars.length; /* sort rows, make result deterministic */ encoding.items.qsort (_cmp_row); - /* compile old to new var_idxes mapping */ - for (unsigned minor = 0; minor < num_rows; minor++) + for (unsigned start = 0; start < num_rows; start += 0xFFFFu) { - unsigned new_varidx = (major << 16) + minor; - back_mapping.set (encoding.items.arrayZ[minor], new_varidx); + unsigned chunk_len = hb_min (num_rows - start, 0xFFFFu); + hb_vector_t*> rows; + + if (!rows.alloc (chunk_len)) + return false; + + unsigned major = split_encodings.length; + for (unsigned minor = 0; minor < chunk_len; minor++) + { + const hb_vector_t *row = encoding.items.arrayZ[start + minor]; + rows.push (row); + if (!back_mapping.set (row, (major << 16) + minor)) + return false; + } + + split_encodings.push (delta_row_encoding_t (std::move (rows), num_cols)); } } + encodings = std::move (split_encodings); + if (encodings.in_error () || back_mapping.in_error ()) + return false; + for (auto _ : front_mapping.iter ()) { unsigned old_varidx = _.first; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-var-gvar-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-var-gvar-table.hh index 7c42f548456..ec24253b429 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-var-gvar-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-var-gvar-table.hh @@ -447,7 +447,7 @@ struct gvar_GVAR auto it = hb_iter (c->plan->new_to_old_gid_list); if (it->first == 0 && !(c->plan->flags & HB_SUBSET_FLAGS_NOTDEF_OUTLINE)) it++; - unsigned int subset_data_size = 0; + size_t subset_data_size = 0; unsigned padding_size = 0; for (auto &_ : it) { @@ -634,6 +634,83 @@ struct gvar_GVAR static unsigned int next_index (unsigned int i, unsigned int start, unsigned int end) { return (i >= end) ? start : (i + 1); } +#ifndef HB_OPTIMIZE_SIZE + template +#endif + static bool decompile_deltas_add_to_points (const HBUINT8 *&p /* IN/OUT */, + hb_array_t points, + float scalar, + const HBUINT8 *end, + unsigned start +#ifdef HB_OPTIMIZE_SIZE + , bool is_x +#endif + ) + { + unsigned i = 0; + unsigned count = points.length; + while (i < count) + { + if (unlikely (p + 1 > end)) return false; + unsigned control = *p++; + unsigned run_count = (control & TupleValues::VALUE_RUN_COUNT_MASK) + 1; + unsigned stop = i + run_count; + if (unlikely (stop > count)) return false; + + unsigned skip = i < start ? hb_min (start - i, run_count) : 0; + i += skip; + + switch (control & TupleValues::VALUES_SIZE_MASK) + { + case TupleValues::VALUES_ARE_ZEROS: + i = stop; + break; + case TupleValues::VALUES_ARE_WORDS: + { + if (unlikely (p + run_count * HBINT16::static_size > end)) return false; + p += skip * HBINT16::static_size; + const auto *pp = (const HBINT16 *) p; + for (; i < stop; i++) + { + float v = *pp++ * scalar; + if (is_x) points.arrayZ[i].x += v; + else points.arrayZ[i].y += v; + } + p = (const HBUINT8 *) pp; + } + break; + case TupleValues::VALUES_ARE_LONGS: + { + if (unlikely (p + run_count * HBINT32::static_size > end)) return false; + p += skip * HBINT32::static_size; + const auto *pp = (const HBINT32 *) p; + for (; i < stop; i++) + { + float v = *pp++ * scalar; + if (is_x) points.arrayZ[i].x += v; + else points.arrayZ[i].y += v; + } + p = (const HBUINT8 *) pp; + } + break; + case TupleValues::VALUES_ARE_BYTES: + { + if (unlikely (p + run_count > end)) return false; + p += skip * HBINT8::static_size; + const auto *pp = (const HBINT8 *) p; + for (; i < stop; i++) + { + float v = *pp++ * scalar; + if (is_x) points.arrayZ[i].x += v; + else points.arrayZ[i].y += v; + } + p = (const HBUINT8 *) pp; + } + break; + } + } + return true; + } public: bool apply_deltas_to_points (hb_codepoint_t glyph, hb_array_t coords, @@ -656,6 +733,9 @@ struct gvar_GVAR shared_indices, &iterator)) return true; /* so isn't applied at all */ + bool any_private_points = false; + bool private_points_checked = false; + /* Save original points for inferred delta calculation */ auto &orig_points_vec = scratch.orig_points; orig_points_vec.clear (); // Populated lazily @@ -682,6 +762,20 @@ struct gvar_GVAR gvar_cache); if (scalar == 0.f) continue; + + if (!private_points_checked) + { + auto scan = iterator; + do + { + if (scan.current_tuple->has_private_points ()) + { + any_private_points = true; + break; + } + } while (scan.move_to_next ()); + private_points_checked = true; + } const HBUINT8 *p = iterator.get_serialized_data (); unsigned int length = iterator.current_tuple->get_data_size (); if (unlikely (!iterator.var_data_bytes.check_range (p, length))) @@ -706,6 +800,19 @@ struct gvar_GVAR bool apply_to_all = (indices.length == 0); unsigned num_deltas = apply_to_all ? points.length : indices.length; unsigned start_deltas = (apply_to_all && phantom_only && num_deltas >= 4 ? num_deltas - 4 : 0); + + if (apply_to_all && !any_private_points) + { +#ifdef HB_OPTIMIZE_SIZE + if (unlikely (!decompile_deltas_add_to_points (p, points, scalar, end, start_deltas, true))) return false; + if (unlikely (!decompile_deltas_add_to_points (p, points, scalar, end, start_deltas, false))) return false; +#else + if (unlikely (!decompile_deltas_add_to_points (p, points, scalar, end, start_deltas))) return false; + if (unlikely (!decompile_deltas_add_to_points (p, points, scalar, end, start_deltas))) return false; +#endif + continue; + } + if (unlikely (!x_deltas.resize_dirty (num_deltas))) return false; if (unlikely (!GlyphVariationData::decompile_deltas (p, x_deltas, end, false, start_deltas))) return false; if (unlikely (!y_deltas.resize_dirty (num_deltas))) return false; @@ -724,8 +831,6 @@ struct gvar_GVAR { for (unsigned int i = phantom_only ? count - 4 : 0; i < count; i++) points.arrayZ[i].translate (deltas.arrayZ[i]); - flush = false; - } hb_memset (deltas.arrayZ + (phantom_only ? count - 4 : 0), 0, (phantom_only ? 4 : count) * sizeof (deltas[0])); diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ot-var-hvar-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ot-var-hvar-table.hh index 652d738e7b5..5c0b415f4aa 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ot-var-hvar-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ot-var-hvar-table.hh @@ -180,7 +180,7 @@ struct index_map_subset_plan_t unsigned int get_width () const { return ((outer_bit_count + inner_bit_count + 7) / 8); } unsigned int get_map_count () const { return map_count; } - unsigned int get_size () const + size_t get_size () const { return (map_count? (DeltaSetIndexMap::min_size + get_width () * map_count): 0); } bool is_identity () const { return get_output_map ().length == 0; } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-outline.hh b/src/java.desktop/share/native/libharfbuzz/hb-outline.hh index 9e394a68d9c..e23f5afa0a8 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-outline.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-outline.hh @@ -65,7 +65,7 @@ struct hb_outline_vector_t struct hb_outline_t { - void reset () { points.shrink (0, false); contours.resize (0); } + void reset () { points.clear (); contours.clear (); } HB_INTERNAL void replay (hb_draw_funcs_t *pen, void *pen_data) const; HB_INTERNAL float control_area () const; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-paint.cc b/src/java.desktop/share/native/libharfbuzz/hb-paint.cc index 094597d6457..56e9c0901f1 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-paint.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-paint.cc @@ -71,6 +71,15 @@ hb_paint_push_clip_rectangle_nil (hb_paint_funcs_t *funcs, void *paint_data, float xmin, float ymin, float xmax, float ymax, void *user_data) {} +static hb_draw_funcs_t * +hb_paint_push_clip_path_start_nil (hb_paint_funcs_t *funcs, void *paint_data, + void **draw_data, + void *user_data) { if (draw_data) *draw_data = nullptr; return nullptr; } + +static void +hb_paint_push_clip_path_end_nil (hb_paint_funcs_t *funcs, void *paint_data, + void *user_data) {} + static void hb_paint_pop_clip_nil (hb_paint_funcs_t *funcs, void *paint_data, void *user_data) {} @@ -118,6 +127,14 @@ static void hb_paint_push_group_nil (hb_paint_funcs_t *funcs, void *paint_data, void *user_data) {} +static void +hb_paint_push_group_for_nil (hb_paint_funcs_t *funcs, void *paint_data, + hb_paint_composite_mode_t mode, + void *user_data) +{ + hb_paint_push_group (funcs, paint_data); +} + static void hb_paint_pop_group_nil (hb_paint_funcs_t *funcs, void *paint_data, hb_paint_composite_mode_t mode, @@ -158,25 +175,25 @@ _hb_paint_funcs_set_middle (hb_paint_funcs_t *funcs, void *user_data, hb_destroy_func_t destroy) { + auto destroy_guard = hb_make_scope_guard ([&]() { + if (destroy) destroy (user_data); + }); + if (user_data && !funcs->user_data) { funcs->user_data = (decltype (funcs->user_data)) hb_calloc (1, sizeof (*funcs->user_data)); if (unlikely (!funcs->user_data)) - goto fail; + return false; } if (destroy && !funcs->destroy) { funcs->destroy = (decltype (funcs->destroy)) hb_calloc (1, sizeof (*funcs->destroy)); if (unlikely (!funcs->destroy)) - goto fail; + return false; } + destroy_guard.release (); return true; - -fail: - if (destroy) - (destroy) (user_data); - return false; } #define HB_PAINT_FUNC_IMPLEMENT(name) \ @@ -573,6 +590,71 @@ hb_paint_push_clip_rectangle (hb_paint_funcs_t *funcs, void *paint_data, funcs->push_clip_rectangle (paint_data, xmin, ymin, xmax, ymax); } +/** + * hb_paint_push_clip_path_start: + * @funcs: paint functions + * @paint_data: associated data passed by the caller + * @draw_data: (out) (nullable): location to receive the draw data + * the caller should pass alongside the returned draw funcs. + * + * Begin clipping to an arbitrary path. Returns an + * #hb_draw_funcs_t owned by the backend (the caller must not + * free it) that the caller uses to emit the clip outline via + * hb_draw_*() calls, using the returned @draw_data as the + * draw data. The returned draw funcs and draw data are only + * valid until the matching hb_paint_push_clip_path_end() call; + * no other paint calls should be made between start and end + * except hb_draw_*() on the returned funcs. Finish the path + * with hb_paint_push_clip_path_end(); pop the clip later + * with hb_paint_pop_clip(). + * + * Usage: + * + * |[ + * hb_draw_funcs_t *df = hb_paint_push_clip_path_start (pf, pd, &dd); + * hb_draw_move_to (df, dd, NULL, ...); + * hb_draw_line_to (df, dd, NULL, ...); + * ... + * hb_draw_close_path (df, dd, NULL); + * hb_paint_push_clip_path_end (pf, pd); + * /* paint ops here are clipped to the emitted path */ + * hb_paint_pop_clip (pf, pd); + * ]| + * + * Return value: (transfer none): draw funcs that accumulate + * the clip path, or `NULL` if the backend does not implement + * arbitrary-path clipping. + * + * Since: 14.2.0 + */ +hb_draw_funcs_t * +hb_paint_push_clip_path_start (hb_paint_funcs_t *funcs, + void *paint_data, + void **draw_data) +{ + void *scratch = nullptr; + if (!draw_data) draw_data = &scratch; + return funcs->push_clip_path_start (paint_data, draw_data); +} + +/** + * hb_paint_push_clip_path_end: + * @funcs: paint functions + * @paint_data: associated data passed by the caller + * + * Signal that the arbitrary-clip path started by + * hb_paint_push_clip_path_start() is fully drawn. The + * accumulated path now acts as a clip on the paint context + * until a matching hb_paint_pop_clip() call. + * + * Since: 14.2.0 + */ +void +hb_paint_push_clip_path_end (hb_paint_funcs_t *funcs, void *paint_data) +{ + funcs->push_clip_path_end (paint_data); +} + /** * hb_paint_pop_clip: * @funcs: paint functions @@ -723,6 +805,25 @@ hb_paint_push_group (hb_paint_funcs_t *funcs, void *paint_data) funcs->push_group (paint_data); } +/** + * hb_paint_push_group_for: + * @funcs: paint functions + * @paint_data: associated data passed by the caller + * @mode: the compositing mode that will be used when the group is popped + * + * Perform a "push-group" paint operation, with the compositing + * mode known in advance. By default, this calls + * hb_paint_push_group(). + * + * Since: 14.2.0 + */ +void +hb_paint_push_group_for (hb_paint_funcs_t *funcs, void *paint_data, + hb_paint_composite_mode_t mode) +{ + funcs->push_group_for (paint_data, mode); +} + /** * hb_paint_pop_group: * @funcs: paint functions @@ -742,14 +843,14 @@ hb_paint_pop_group (hb_paint_funcs_t *funcs, void *paint_data, /** * hb_paint_custom_palette_color: - * @funcs: paint functions - * @paint_data: associated data passed by the caller - * @color_index: color index - * @color: (out): fetched color + * @funcs: paint functions. + * @paint_data: associated data passed by the caller. + * @color_index: color index to fetch. + * @color: (out): fetched color. * - * Gets the custom palette color for @color_index. + * Gets the custom palette override color for @color_index. * - * Return value: `true` if found, `false` otherwise + * Return value: `true` if a custom color is provided, `false` otherwise. * * Since: 7.0.0 */ @@ -761,4 +862,297 @@ hb_paint_custom_palette_color (hb_paint_funcs_t *funcs, void *paint_data, return funcs->custom_palette_color (paint_data, color_index, color); } + +/** + * hb_paint_reduce_linear_anchors: + * @x0: x coordinate of P0 (color stop 0). + * @y0: y coordinate of P0 (color stop 0). + * @x1: x coordinate of P1 (color stop 1). + * @y1: y coordinate of P1 (color stop 1). + * @x2: x coordinate of P2 (rotation reference). + * @y2: y coordinate of P2 (rotation reference). + * @xx0: (out): x coordinate of the resulting axis start. + * @yy0: (out): y coordinate of the resulting axis start. + * @xx1: (out): x coordinate of the resulting axis end. + * @yy1: (out): y coordinate of the resulting axis end. + * + * Reduces a COLRv1 linear gradient's 3-anchor spec (P0=color + * stop 0, P1=color stop 1, P2=rotation reference) to the + * 2-point axis (P0, P1') used by SVG / cairo / most software + * renderers. P1' is the foot of P1 on the line through P0 + * perpendicular to (P2 - P0); the resulting axis is the + * gradient's actual direction (perpendicular to the rotation + * line). Degenerate (P0 == P2) passes through unchanged. + * + * Since: 14.2.0 + **/ +void +hb_paint_reduce_linear_anchors (float x0, float y0, + float x1, float y1, + float x2, float y2, + float *xx0, float *yy0, + float *xx1, float *yy1) +{ + float q2x = x2 - x0, q2y = y2 - y0; + float s = q2x * q2x + q2y * q2y; + if (s < 1e-6f) + { + *xx0 = x0; *yy0 = y0; + *xx1 = x1; *yy1 = y1; + return; + } + float q1x = x1 - x0, q1y = y1 - y0; + float k = (q2x * q1x + q2y * q1y) / s; + *xx0 = x0; + *yy0 = y0; + *xx1 = x1 - k * q2x; + *yy1 = y1 - k * q2y; +} + +/** + * hb_paint_normalize_color_line: + * @stops: (array length=len) (inout): color stops. + * @len: number of stops. + * @min: (out): original minimum offset. + * @max: (out): original maximum offset. + * + * Sorts @stops by offset and rescales offsets into [0, 1] in + * place. Writes the original (min, max) to @min / @max so the + * caller can shift the gradient geometry (axis endpoints for + * linear, centers+radii for radial, start+end angles for sweep) + * to keep the rendered gradient visually unchanged after the + * rescale. Empty input is safe: both out-parameters set to 0. + * + * Since: 14.2.0 + **/ +void +hb_paint_normalize_color_line (hb_color_stop_t *stops, + unsigned int len, + float *min, + float *max) +{ + if (unlikely (!len)) + { + *min = *max = 0.f; + return; + } + + hb_array_t (stops, len) + .qsort ([] (const hb_color_stop_t &a, const hb_color_stop_t &b) { + return a.offset < b.offset; + }); + + float mn = stops[0].offset, mx = stops[0].offset; + for (unsigned i = 1; i < len; i++) + { + mn = hb_min (mn, stops[i].offset); + mx = hb_max (mx, stops[i].offset); + } + if (mn != mx) + for (unsigned i = 0; i < len; i++) + stops[i].offset = (stops[i].offset - mn) / (mx - mn); + + *min = mn; + *max = mx; +} + +/** + * hb_paint_sweep_gradient_tiles: + * @stops: (array length=n_stops) (inout): color stops (sorted, offsets in [0,1]). + * @n_stops: number of stops. + * @extend: extend mode. + * @start_angle: sweep start angle, in radians. + * @end_angle: sweep end angle, in radians. + * @emit_patch: (scope call): callback invoked once per tile. + * @user_data: data passed to @emit_patch. + * + * Iterates the full 0..2π sweep produced by a color-stop list, + * invoking @emit_patch once per (start, end) angular segment. + * Handles #HB_PAINT_EXTEND_PAD, #HB_PAINT_EXTEND_REPEAT, and + * #HB_PAINT_EXTEND_REFLECT. Stops must be pre-sorted by + * offset; use hb_paint_normalize_color_line() first if they + * aren't. + * + * Since: 14.2.0 + **/ +void +hb_paint_sweep_gradient_tiles (hb_color_stop_t *stops, + unsigned int n_stops, + hb_paint_extend_t extend, + float start_angle, + float end_angle, + hb_paint_sweep_gradient_tile_func_t emit_patch, + void *user_data) +{ + if (!n_stops) return; + + if (start_angle == end_angle) + { + if (extend == HB_PAINT_EXTEND_PAD) + { + if (start_angle > 0.f) + emit_patch (0.f, stops[0].color, start_angle, stops[0].color, user_data); + if (end_angle < HB_2_PI) + emit_patch (end_angle, stops[n_stops - 1].color, HB_2_PI, stops[n_stops - 1].color, user_data); + } + return; + } + + if (end_angle < start_angle) + { + float tmp = start_angle; start_angle = end_angle; end_angle = tmp; + for (unsigned i = 0; i < n_stops - 1 - i; i++) + { + hb_color_stop_t t = stops[i]; + stops[i] = stops[n_stops - 1 - i]; + stops[n_stops - 1 - i] = t; + } + for (unsigned i = 0; i < n_stops; i++) + stops[i].offset = 1.f - stops[i].offset; + } + + /* Map stop offsets to angles. */ + float angles_buf[16]; + hb_color_t colors_buf[16]; + float *angles = angles_buf; + hb_color_t *colors = colors_buf; + bool dynamic = false; + + if (n_stops > 16) + { + angles = (float *) hb_malloc (sizeof (float) * n_stops); + colors = (hb_color_t *) hb_malloc (sizeof (hb_color_t) * n_stops); + if (!angles || !colors) + { + hb_free (angles); + hb_free (colors); + return; + } + dynamic = true; + } + + for (unsigned i = 0; i < n_stops; i++) + { + angles[i] = start_angle + stops[i].offset * (end_angle - start_angle); + colors[i] = stops[i].color; + } + + if (extend == HB_PAINT_EXTEND_PAD) + { + unsigned pos; + hb_color_t color0 = colors[0]; + for (pos = 0; pos < n_stops; pos++) + { + if (angles[pos] >= 0) + { + if (pos > 0) + { + float f = (0.f - angles[pos - 1]) / (angles[pos] - angles[pos - 1]); + color0 = hb_color_lerp (colors[pos - 1], colors[pos], f); + } + break; + } + } + if (pos == n_stops) + { + color0 = colors[n_stops - 1]; + emit_patch (0.f, color0, HB_2_PI, color0, user_data); + goto done; + } + emit_patch (0.f, color0, angles[pos], colors[pos], user_data); + for (pos++; pos < n_stops; pos++) + { + if (angles[pos] <= HB_2_PI) + emit_patch (angles[pos - 1], colors[pos - 1], angles[pos], colors[pos], user_data); + else + { + float f = (HB_2_PI - angles[pos - 1]) / (angles[pos] - angles[pos - 1]); + hb_color_t color1 = hb_color_lerp (colors[pos - 1], colors[pos], f); + emit_patch (angles[pos - 1], colors[pos - 1], HB_2_PI, color1, user_data); + break; + } + } + if (pos == n_stops) + { + color0 = colors[n_stops - 1]; + emit_patch (angles[n_stops - 1], color0, HB_2_PI, color0, user_data); + goto done; + } + } + else + { + float span = angles[n_stops - 1] - angles[0]; + if (fabsf (span) < 1e-6f) + goto done; + + int k = 0; + if (angles[0] >= 0) + { + float ss = angles[0]; + while (ss > 0) + { + if (span > 0) { ss -= span; k--; } + else { ss += span; k++; } + } + } + else + { + float ee = angles[n_stops - 1]; + while (ee < 0) + { + if (span > 0) { ee += span; k++; } + else { ee -= span; k--; } + } + } + + span = fabsf (span); + for (int l = k; l < 1000; l++) + { + for (unsigned i = 1; i < n_stops; i++) + { + float a0_l, a1_l; + hb_color_t col0, col1; + if ((l % 2 != 0) && (extend == HB_PAINT_EXTEND_REFLECT)) + { + a0_l = angles[0] + angles[n_stops - 1] - angles[n_stops - i] + l * span; + a1_l = angles[0] + angles[n_stops - 1] - angles[n_stops - 1 - i] + l * span; + col0 = colors[n_stops - i]; + col1 = colors[n_stops - 1 - i]; + } + else + { + a0_l = angles[i - 1] + l * span; + a1_l = angles[i] + l * span; + col0 = colors[i - 1]; + col1 = colors[i]; + } + + if (a1_l < 0.f) continue; + if (a0_l < 0.f) + { + float f = (0.f - a0_l) / (a1_l - a0_l); + hb_color_t c = hb_color_lerp (col0, col1, f); + emit_patch (0.f, c, a1_l, col1, user_data); + } + else if (a1_l >= HB_2_PI) + { + float f = (HB_2_PI - a0_l) / (a1_l - a0_l); + hb_color_t c = hb_color_lerp (col0, col1, f); + emit_patch (a0_l, col0, HB_2_PI, c, user_data); + goto done; + } + else + emit_patch (a0_l, col0, a1_l, col1, user_data); + } + } + } + +done: + if (dynamic) + { + hb_free (angles); + hb_free (colors); + } +} + #endif diff --git a/src/java.desktop/share/native/libharfbuzz/hb-paint.h b/src/java.desktop/share/native/libharfbuzz/hb-paint.h index 9827a02887b..e00d9b18732 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-paint.h +++ b/src/java.desktop/share/native/libharfbuzz/hb-paint.h @@ -30,6 +30,7 @@ #define HB_PAINT_H #include "hb-common.h" +#include "hb-draw.h" HB_BEGIN_DECLS @@ -212,6 +213,53 @@ typedef void (*hb_paint_push_clip_rectangle_func_t) (hb_paint_funcs_t *funcs, float xmax, float ymax, void *user_data); +/** + * hb_paint_push_clip_path_start_func_t: + * @funcs: paint functions object + * @paint_data: The data accompanying the paint functions in hb_font_paint_glyph() + * @draw_data: (out): location to store the draw data the caller should + * pass alongside the returned draw funcs. + * @user_data: User data pointer passed to hb_paint_funcs_set_push_clip_path_start_func() + * + * A virtual method for the #hb_paint_funcs_t to begin clipping + * to an arbitrary path. The backend returns an + * #hb_draw_funcs_t it owns (the caller must not free it) + * that the caller feeds the clip outline to via hb_draw_*() + * calls, plus a @draw_data value to pass alongside those + * calls. Both are only valid until the matching + * #hb_paint_push_clip_path_end_func_t call; no other paint + * calls should be made in between. The clip remains + * in effect until a later #hb_paint_pop_clip_func_t call. + * + * Return value: (transfer none): draw funcs that accumulate + * the clip path, or `NULL` if arbitrary-path clipping is not + * supported. + * + * Since: 14.2.0 + */ +typedef hb_draw_funcs_t * (*hb_paint_push_clip_path_start_func_t) (hb_paint_funcs_t *funcs, + void *paint_data, + void **draw_data, + void *user_data); + +/** + * hb_paint_push_clip_path_end_func_t: + * @funcs: paint functions object + * @paint_data: The data accompanying the paint functions in hb_font_paint_glyph() + * @user_data: User data pointer passed to hb_paint_funcs_set_push_clip_path_end_func() + * + * A virtual method for the #hb_paint_funcs_t to close the + * clip path started by the #hb_paint_push_clip_path_start_func_t + * vfunc. The emitted path is now active as a clip; subsequent + * paint ops are masked by it until a matching + * #hb_paint_pop_clip_func_t call. + * + * Since: 14.2.0 + */ +typedef void (*hb_paint_push_clip_path_end_func_t) (hb_paint_funcs_t *funcs, + void *paint_data, + void *user_data); + /** * hb_paint_pop_clip_func_t: * @funcs: paint functions object @@ -219,8 +267,9 @@ typedef void (*hb_paint_push_clip_rectangle_func_t) (hb_paint_funcs_t *funcs, * @user_data: User data pointer passed to hb_paint_funcs_set_pop_clip_func() * * A virtual method for the #hb_paint_funcs_t to undo - * the effect of a prior call to the #hb_paint_funcs_push_clip_glyph_func_t - * or #hb_paint_funcs_push_clip_rectangle_func_t vfuncs. + * the effect of a prior call to the #hb_paint_funcs_push_clip_glyph_func_t, + * #hb_paint_funcs_push_clip_rectangle_func_t, or + * #hb_paint_funcs_push_clip_path_end_func_t vfuncs. * * Since: 7.0.0 */ @@ -239,6 +288,23 @@ typedef void (*hb_paint_pop_clip_func_t) (hb_paint_funcs_t *funcs, * A virtual method for the #hb_paint_funcs_t to paint a * color everywhere within the current clip. * + * When @is_foreground is true, this color originates from the + * foreground-color sentinel in the font's color data. The + * @color parameter still carries a fully resolved RGBA value + * (with any paint-tree alpha already applied), so backends + * that do not need to distinguish the foreground can simply + * use @color directly. + * + * Backends that defer foreground resolution (e.g. to honor a + * CSS `currentColor` or a runtime uniform) should substitute + * their own foreground RGB when @is_foreground is true, but + * must combine the alpha from @color with their foreground + * alpha, since it encodes additional modulation from the + * paint tree. For this mode to work correctly, the caller + * should pass a fully-opaque foreground color to + * hb_font_paint_glyph(), so that the alpha in @color + * reflects only the paint-tree contribution. + * * Since: 7.0.0 */ typedef void (*hb_paint_color_func_t) (hb_paint_funcs_t *funcs, @@ -322,6 +388,9 @@ typedef hb_bool_t (*hb_paint_image_func_t) (hb_paint_funcs_t *funcs, * Color lines typically have offsets ranging between 0 and 1, * but that is not required. * + * The @is_foreground and @color fields have the same semantics + * as in #hb_paint_color_func_t. + * * Note: despite @color being unpremultiplied here, interpolation in * gradients shall happen in premultiplied space. See the OpenType spec * [COLR](https://learn.microsoft.com/en-us/typography/opentype/spec/colr) @@ -660,6 +729,28 @@ typedef void (*hb_paint_push_group_func_t) (hb_paint_funcs_t *funcs, void *paint_data, void *user_data); +/** + * hb_paint_push_group_for_func_t: + * @funcs: paint functions object + * @paint_data: The data accompanying the paint functions in hb_font_paint_glyph() + * @mode: the compositing mode that will be used when the group is popped + * @user_data: User data pointer passed to hb_paint_funcs_set_push_group_for_func() + * + * A virtual method for the #hb_paint_funcs_t to use + * an intermediate surface for subsequent paint calls, + * with the compositing mode known in advance. + * + * This is like #hb_paint_push_group_func_t, but the + * compositing mode is provided at push time. By default + * this calls #hb_paint_push_group_func_t. + * + * Since: 14.2.0 + */ +typedef void (*hb_paint_push_group_for_func_t) (hb_paint_funcs_t *funcs, + void *paint_data, + hb_paint_composite_mode_t mode, + void *user_data); + /** * hb_paint_pop_group_func_t: * @funcs: paint functions object @@ -684,23 +775,24 @@ typedef void (*hb_paint_pop_group_func_t) (hb_paint_funcs_t *funcs, /** * hb_paint_custom_palette_color_func_t: - * @funcs: paint functions object - * @paint_data: The data accompanying the paint functions in hb_font_paint_glyph() - * @color_index: the color index - * @color: (out): fetched color - * @user_data: User data pointer passed to hb_paint_funcs_set_pop_group_func() + * @funcs: paint functions object. + * @paint_data: data accompanying the paint functions in hb_font_paint_glyph(). + * @color_index: color index to fetch. + * @color: (out): fetched color. + * @user_data: user data pointer passed to hb_paint_funcs_set_custom_palette_color_func(). * - * A virtual method for the #hb_paint_funcs_t to fetch a color from the custom - * color palette. + * A virtual method for #hb_paint_funcs_t to fetch a custom palette override + * color for @color_index. * - * Custom palette colors override the colors from the fonts selected color - * palette. It is not necessary to override all palette entries; for entries - * that should be taken from the font palette, return `false`. + * Custom palette colors override colors from the font's selected color palette. + * It is not necessary to override all palette entries; return `false` for + * entries that should be taken from the font palette. * - * This function might get called multiple times, but the custom palette is - * expected to remain unchanged for duration of a hb_font_paint_glyph() call. + * This function might be called multiple times, but the custom palette is + * expected to remain unchanged for the duration of one + * hb_font_paint_glyph() call. * - * Return value: `true` if found, `false` otherwise + * Return value: `true` if a custom color is provided, `false` otherwise. * * Since: 7.0.0 */ @@ -796,6 +888,40 @@ hb_paint_funcs_set_push_clip_rectangle_func (hb_paint_funcs_t void *user_data, hb_destroy_func_t destroy); +/** + * hb_paint_funcs_set_push_clip_path_start_func: + * @funcs: A paint functions struct + * @func: (closure user_data) (destroy destroy) (scope notified): The push-clip-path-start callback + * @user_data: Data to pass to @func + * @destroy: (nullable): Function to call when @user_data is no longer needed + * + * Sets the push-clip-path-start callback on the paint functions struct. + * + * Since: 14.2.0 + */ +HB_EXTERN void +hb_paint_funcs_set_push_clip_path_start_func (hb_paint_funcs_t *funcs, + hb_paint_push_clip_path_start_func_t func, + void *user_data, + hb_destroy_func_t destroy); + +/** + * hb_paint_funcs_set_push_clip_path_end_func: + * @funcs: A paint functions struct + * @func: (closure user_data) (destroy destroy) (scope notified): The push-clip-path-end callback + * @user_data: Data to pass to @func + * @destroy: (nullable): Function to call when @user_data is no longer needed + * + * Sets the push-clip-path-end callback on the paint functions struct. + * + * Since: 14.2.0 + */ +HB_EXTERN void +hb_paint_funcs_set_push_clip_path_end_func (hb_paint_funcs_t *funcs, + hb_paint_push_clip_path_end_func_t func, + void *user_data, + hb_destroy_func_t destroy); + /** * hb_paint_funcs_set_pop_clip_func: * @funcs: A paint functions struct @@ -915,6 +1041,23 @@ hb_paint_funcs_set_push_group_func (hb_paint_funcs_t *funcs, void *user_data, hb_destroy_func_t destroy); +/** + * hb_paint_funcs_set_push_group_for_func: + * @funcs: A paint functions struct + * @func: (closure user_data) (destroy destroy) (scope notified): The push-group-for callback + * @user_data: Data to pass to @func + * @destroy: (nullable): Function to call when @user_data is no longer needed + * + * Sets the push-group-for callback on the paint functions struct. + * + * Since: 14.2.0 + */ +HB_EXTERN void +hb_paint_funcs_set_push_group_for_func (hb_paint_funcs_t *funcs, + hb_paint_push_group_for_func_t func, + void *user_data, + hb_destroy_func_t destroy); + /** * hb_paint_funcs_set_pop_group_func: * @funcs: A paint functions struct @@ -934,12 +1077,12 @@ hb_paint_funcs_set_pop_group_func (hb_paint_funcs_t *funcs, /** * hb_paint_funcs_set_custom_palette_color_func: - * @funcs: A paint functions struct - * @func: (closure user_data) (destroy destroy) (scope notified): The custom-palette-color callback - * @user_data: Data to pass to @func - * @destroy: (nullable): Function to call when @user_data is no longer needed + * @funcs: a paint functions struct. + * @func: (closure user_data) (destroy destroy) (scope notified): custom-palette-color callback. + * @user_data: data to pass to @func. + * @destroy: (nullable): function to call when @user_data is no longer needed. * - * Sets the custom-palette-color callback on the paint functions struct. + * Sets the custom-palette-color callback on @funcs. * * Since: 7.0.0 */ @@ -984,6 +1127,15 @@ hb_paint_push_clip_rectangle (hb_paint_funcs_t *funcs, void *paint_data, float xmin, float ymin, float xmax, float ymax); +HB_EXTERN hb_draw_funcs_t * +hb_paint_push_clip_path_start (hb_paint_funcs_t *funcs, + void *paint_data, + void **draw_data); + +HB_EXTERN void +hb_paint_push_clip_path_end (hb_paint_funcs_t *funcs, + void *paint_data); + HB_EXTERN void hb_paint_pop_clip (hb_paint_funcs_t *funcs, void *paint_data); @@ -1025,6 +1177,10 @@ hb_paint_sweep_gradient (hb_paint_funcs_t *funcs, void *paint_data, HB_EXTERN void hb_paint_push_group (hb_paint_funcs_t *funcs, void *paint_data); +HB_EXTERN void +hb_paint_push_group_for (hb_paint_funcs_t *funcs, void *paint_data, + hb_paint_composite_mode_t mode); + HB_EXTERN void hb_paint_pop_group (hb_paint_funcs_t *funcs, void *paint_data, hb_paint_composite_mode_t mode); @@ -1034,6 +1190,58 @@ hb_paint_custom_palette_color (hb_paint_funcs_t *funcs, void *paint_data, unsigned int color_index, hb_color_t *color); + +/* + * Gradient helpers for paint backends. + * + * These are small, self-contained utilities that every COLRv1 + * renderer ends up reinventing. Exposed here so third-party + * paint backends can consume a single canonical implementation + * instead of forking one per project. + */ + +HB_EXTERN void +hb_paint_reduce_linear_anchors (float x0, float y0, + float x1, float y1, + float x2, float y2, + float *xx0, float *yy0, + float *xx1, float *yy1); + +HB_EXTERN void +hb_paint_normalize_color_line (hb_color_stop_t *stops, + unsigned int len, + float *min, + float *max); + +/** + * hb_paint_sweep_gradient_tile_func_t: + * @a0: segment start angle, in radians. + * @c0: segment start color. + * @a1: segment end angle, in radians. + * @c1: segment end color. + * @user_data: user data passed to hb_paint_sweep_gradient_tiles(). + * + * Callback invoked once per (a0, a1) sector of a sweep + * gradient tiling. See hb_paint_sweep_gradient_tiles(). + * + * Since: 14.2.0 + **/ +typedef void (*hb_paint_sweep_gradient_tile_func_t) (float a0, + hb_color_t c0, + float a1, + hb_color_t c1, + void *user_data); + +HB_EXTERN void +hb_paint_sweep_gradient_tiles (hb_color_stop_t *stops, + unsigned int n_stops, + hb_paint_extend_t extend, + float start_angle, + float end_angle, + hb_paint_sweep_gradient_tile_func_t emit_patch, + void *user_data); + + HB_END_DECLS #endif /* HB_PAINT_H */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-paint.hh b/src/java.desktop/share/native/libharfbuzz/hb-paint.hh index aedbcbdcbe2..df37e8bf6e9 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-paint.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-paint.hh @@ -36,6 +36,8 @@ HB_PAINT_FUNC_IMPLEMENT (color_glyph) \ HB_PAINT_FUNC_IMPLEMENT (push_clip_glyph) \ HB_PAINT_FUNC_IMPLEMENT (push_clip_rectangle) \ + HB_PAINT_FUNC_IMPLEMENT (push_clip_path_start) \ + HB_PAINT_FUNC_IMPLEMENT (push_clip_path_end) \ HB_PAINT_FUNC_IMPLEMENT (pop_clip) \ HB_PAINT_FUNC_IMPLEMENT (color) \ HB_PAINT_FUNC_IMPLEMENT (image) \ @@ -43,6 +45,7 @@ HB_PAINT_FUNC_IMPLEMENT (radial_gradient) \ HB_PAINT_FUNC_IMPLEMENT (sweep_gradient) \ HB_PAINT_FUNC_IMPLEMENT (push_group) \ + HB_PAINT_FUNC_IMPLEMENT (push_group_for) \ HB_PAINT_FUNC_IMPLEMENT (pop_group) \ HB_PAINT_FUNC_IMPLEMENT (custom_palette_color) \ /* ^--- Add new callbacks here */ @@ -102,6 +105,13 @@ struct hb_paint_funcs_t { func.push_clip_rectangle (this, paint_data, xmin, ymin, xmax, ymax, !user_data ? nullptr : user_data->push_clip_rectangle); } + hb_draw_funcs_t *push_clip_path_start (void *paint_data, + void **draw_data) + { return func.push_clip_path_start (this, paint_data, draw_data, + !user_data ? nullptr : user_data->push_clip_path_start); } + void push_clip_path_end (void *paint_data) + { func.push_clip_path_end (this, paint_data, + !user_data ? nullptr : user_data->push_clip_path_end); } void pop_clip (void *paint_data) { func.pop_clip (this, paint_data, !user_data ? nullptr : user_data->pop_clip); } @@ -146,6 +156,11 @@ struct hb_paint_funcs_t void push_group (void *paint_data) { func.push_group (this, paint_data, !user_data ? nullptr : user_data->push_group); } + void push_group_for (void *paint_data, + hb_paint_composite_mode_t mode) + { func.push_group_for (this, paint_data, + mode, + !user_data ? nullptr : user_data->push_group_for); } void pop_group (void *paint_data, hb_paint_composite_mode_t mode) { func.pop_group (this, paint_data, @@ -245,4 +260,17 @@ struct hb_paint_funcs_t DECLARE_NULL_INSTANCE (hb_paint_funcs_t); +/* Linearly interpolate between two hb_color_t values, component-wise, + * in byte-channel space with rounding. */ +static inline hb_color_t +hb_color_lerp (hb_color_t c0, hb_color_t c1, float t) +{ + auto lerp = [&] (unsigned shift) -> unsigned { + unsigned v0 = (c0 >> shift) & 0xFF; + unsigned v1 = (c1 >> shift) & 0xFF; + return (unsigned) (v0 + t * ((float) v1 - (float) v0) + 0.5f); + }; + return HB_COLOR (lerp (0), lerp (8), lerp (16), lerp (24)); +} + #endif /* HB_PAINT_HH */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-priority-queue.hh b/src/java.desktop/share/native/libharfbuzz/hb-priority-queue.hh index 753e86b8ca6..8c32dabdd28 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-priority-queue.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-priority-queue.hh @@ -61,7 +61,7 @@ struct hb_priority_queue_t bubble_down (i); } - void reset () { heap.resize (0); } + void reset () { heap.clear (); } bool in_error () const { return heap.in_error (); } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-repacker.hh b/src/java.desktop/share/native/libharfbuzz/hb-repacker.hh index 7d118b52169..b5dfae19960 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-repacker.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-repacker.hh @@ -389,20 +389,21 @@ hb_resolve_graph_overflows (hb_tag_t table_tag, } unsigned round = 0; + unsigned total_iterations = 0; hb_vector_t overflows; // TODO(garretrieger): select a good limit for max rounds. while (!sorted_graph.in_error () && graph::will_overflow (sorted_graph, &overflows) - && round < max_rounds) { + && round < max_rounds + && total_iterations < HB_REPACKER_MAX_ITERATIONS) { DEBUG_MSG (SUBSET_REPACK, nullptr, "=== Overflow resolution round %u ===", round); print_overflows (sorted_graph, overflows); + total_iterations++; hb_set_t priority_bumped_parents; if (!_try_isolating_subgraphs (overflows, sorted_graph)) { - // Don't count space isolation towards round limit. Only increment - // round counter if space isolation made no changes. round++; if (!_process_overflows (overflows, priority_bumped_parents, sorted_graph)) { diff --git a/src/java.desktop/share/native/libharfbuzz/hb-static.cc b/src/java.desktop/share/native/libharfbuzz/hb-static.cc index 06cc80b5f38..78713b22049 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-static.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-static.cc @@ -24,6 +24,10 @@ * Google Author(s): Behdad Esfahbod */ +#ifndef HB_STATIC_CC +#define HB_STATIC_CC +#ifdef HB_STATIC_CC /* Pacify -Wunused-macros. */ + #include "hb.hh" #include "hb-open-type.hh" @@ -114,3 +118,6 @@ hb_face_t::load_upem () const } #endif + +#endif /* HB_STATIC_CC pacify */ +#endif /* HB_STATIC_CC guard */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-subset-cff-common.cc b/src/java.desktop/share/native/libharfbuzz/hb-subset-cff-common.cc index 41b123609a9..e6d3ecccdbe 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-subset-cff-common.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-subset-cff-common.cc @@ -68,7 +68,6 @@ hb_plan_subset_cff_fdselect (const hb_subset_plan_t *plan, /* use hb_set to determine the subset of font dicts */ hb_set_t set; hb_codepoint_t prev_fd = CFF_UNDEF_CODE; - hb_pair_t last_range {0, 0}; auto it = hb_iter (plan->new_to_old_gid_list); auto _ = *it; for (hb_codepoint_t gid = 0; gid < subset_num_glyphs; gid++) @@ -84,9 +83,8 @@ hb_plan_subset_cff_fdselect (const hb_subset_plan_t *plan, /* fonttools retains FDSelect & font dicts for missing glyphs. do the same */ old_glyph = gid; } - if (old_glyph >= last_range.second) - last_range = src.get_fd_range (old_glyph); - unsigned fd = last_range.first; + auto fd_range = src.get_fd_range (old_glyph); + unsigned fd = fd_range.first; if (fd != prev_fd) { @@ -96,7 +94,7 @@ hb_plan_subset_cff_fdselect (const hb_subset_plan_t *plan, fdselect_ranges.push (code_pair_t { fd, gid }); if (gid == old_glyph) - gid = hb_min (_.first - 1, last_range.second - 1); + gid = hb_min (_.first - 1, fd_range.second - 1); } } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-subset-cff-common.hh b/src/java.desktop/share/native/libharfbuzz/hb-subset-cff-common.hh index 843ad69f2f9..518b35466ff 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-subset-cff-common.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-subset-cff-common.hh @@ -321,11 +321,31 @@ struct cff_font_dict_op_serializer_t : op_serializer_t } }; +/* CharString command for specialization */ +struct cs_command_t +{ + hb_vector_t args; + hb_vector_t mask_bytes; /* For hintmask/cntrmask payload bytes. */ + op_code_t op; + + cs_command_t () : op (OpCode_Invalid) {} + cs_command_t (op_code_t op_) : op (op_) {} +}; + +typedef hb_vector_t *cs_command_vec_t; + struct flatten_param_t { + flatten_param_t (str_buff_t &flatStr_, + bool drop_hints_, + const hb_subset_plan_t *plan_, + cs_command_vec_t commands_ = nullptr) + : flatStr (flatStr_), drop_hints (drop_hints_), plan (plan_), commands (commands_) {} + str_buff_t &flatStr; bool drop_hints; const hb_subset_plan_t *plan; + cs_command_vec_t commands; /* Optional: capture parsed commands for specialization */ }; template @@ -335,7 +355,8 @@ struct subr_flattener_t const hb_subset_plan_t *plan_) : acc (acc_), plan (plan_) {} - bool flatten (str_buff_vec_t &flat_charstrings) + bool flatten (str_buff_vec_t &flat_charstrings, + hb_vector_t> *command_capture = nullptr) { unsigned count = plan->num_output_glyphs (); if (!flat_charstrings.resize_exact (count)) @@ -361,7 +382,8 @@ struct subr_flattener_t flatten_param_t param = { flat_charstrings.arrayZ[i], (bool) (plan->flags & HB_SUBSET_FLAGS_NO_HINTING), - plan + plan, + command_capture ? &(*command_capture)[i] : nullptr }; if (unlikely (!interp.interpret (param))) return false; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-subset-cff1.cc b/src/java.desktop/share/native/libharfbuzz/hb-subset-cff1.cc index 4938c048d6d..558b61121a7 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-subset-cff1.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-subset-cff1.cc @@ -431,7 +431,8 @@ struct cff1_subset_plan unsigned code, last_code = CFF_UNDEF_CODE - 1; hb_vector_t supp_codes; - if (unlikely (!subset_enc_code_ranges.resize (0))) + subset_enc_code_ranges.clear (); + if (unlikely (subset_enc_code_ranges.in_error ())) { plan->check_success (false); return; @@ -496,7 +497,8 @@ struct cff1_subset_plan unsigned int size0, size_ranges; unsigned last_sid = CFF_UNDEF_CODE - 1; - if (unlikely (!subset_charset_ranges.resize (0))) + subset_charset_ranges.clear (); + if (unlikely (subset_charset_ranges.in_error ())) { plan->check_success (false); return false; diff --git a/src/java.desktop/share/native/libharfbuzz/hb-subset-cff2.cc b/src/java.desktop/share/native/libharfbuzz/hb-subset-cff2.cc index 1074d240386..cce15bafe90 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-subset-cff2.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-subset-cff2.cc @@ -34,6 +34,7 @@ #include "hb-subset-plan.hh" #include "hb-subset-cff-common.hh" #include "hb-cff2-interp-cs.hh" +#include "hb-subset-cff2-to-cff1.hh" using namespace CFF; @@ -73,6 +74,56 @@ struct cff2_cs_opset_flatten_t : cff2_cs_opset_t &env, flatten_param_t& param) { + /* Optionally capture command for specialization (before flushing, to preserve args) */ + if (param.commands) + { + bool skip_command = false; + + switch (op) + { + case OpCode_return: + case OpCode_endchar: + skip_command = true; + break; + + case OpCode_hstem: + case OpCode_hstemhm: + case OpCode_vstem: + case OpCode_vstemhm: + case OpCode_hintmask: + case OpCode_cntrmask: + if (param.drop_hints) + skip_command = true; + break; + + default: + break; + } + + if (!skip_command) + { + cs_command_t cmd (op); + /* Capture resolved blend values */ + for (unsigned int i = 0; i < env.argStack.get_count ();) + { + const blend_arg_t &arg = env.argStack[i]; + if (arg.blending ()) + { + /* For blend args, capture only the resolved default value */ + cmd.args.push (arg); + /* Skip over the multiple blend values */ + i += arg.numValues; + } + else + { + cmd.args.push (arg); + i++; + } + } + param.commands->push (cmd); + } + } + switch (op) { case OpCode_return: @@ -167,6 +218,22 @@ struct cff2_cs_opset_flatten_t : cff2_cs_opset_t &env, flatten_param_t& param) { SUPER::flush_hintmask (op, env, param); + /* Preserve hintmask payload in captured commands for specializer re-encoding. */ + if (param.commands && !param.drop_hints && param.commands->length > 0) + { + auto &cmd = param.commands->tail (); + if (cmd.op == op) + { + cmd.mask_bytes.resize (env.hintmask_size); + if (unlikely (cmd.mask_bytes.in_error ())) + { + env.set_error (); + return; + } + for (unsigned int i = 0; i < env.hintmask_size; i++) + cmd.mask_bytes[i] = env.str_ref[i]; + } + } if (!param.drop_hints) { str_encoder_t encoder (param.flatStr); @@ -436,9 +503,15 @@ struct cff2_subset_plan drop_hints = plan->flags & HB_SUBSET_FLAGS_NO_HINTING; pinned = (bool) plan->normalized_coords; + normalized_coords = plan->normalized_coords; + head_maxp_info = plan->head_maxp_info; + hmtx_map = &plan->hmtx_map; desubroutinize = plan->flags & HB_SUBSET_FLAGS_DESUBROUTINIZE || pinned; // For instancing we need this path + /* Enable command capture for CFF2→CFF1 conversion (for specialization) */ + capture_commands = pinned; + #ifdef HB_EXPERIMENTAL_API min_charstrings_off_size = (plan->flags & HB_SUBSET_FLAGS_IFTB_REQUIREMENTS) ? 4 : 0; #else @@ -450,8 +523,21 @@ struct cff2_subset_plan /* Flatten global & local subrs */ subr_flattener_t, cff2_cs_opset_flatten_t> flattener(acc, plan); - if (!flattener.flatten (subset_charstrings)) - return false; + + /* Enable command capture if requested (for specialization) */ + if (capture_commands) + { + if (!charstring_commands.resize_exact (num_glyphs)) + return false; + + if (!flattener.flatten (subset_charstrings, &charstring_commands)) + return false; + } + else + { + if (!flattener.flatten (subset_charstrings)) + return false; + } } else { @@ -518,9 +604,483 @@ struct cff2_subset_plan bool desubroutinize = false; unsigned min_charstrings_off_size = 0; + + hb_array_t normalized_coords; // For instantiation + head_maxp_info_t head_maxp_info; // For FontBBox + const hb_hashmap_t> *hmtx_map; // For widths + + // Width optimization results (for CFF1 conversion) + unsigned default_width = 0; + unsigned nominal_width = 0; + + // Command capture for specialization (CFF2→CFF1 conversion) + bool capture_commands = false; + hb_vector_t> charstring_commands; }; } // namespace OT +/* + * CFF2 to CFF1 Converter Implementation + */ + +#include "hb-cff-width-optimizer.hh" +#include "hb-cff-specializer.hh" + +/* Serialize charstrings using CFF1 format with widths */ +static bool +_serialize_cff1_charstrings (hb_serialize_context_t *c, + OT::cff2_subset_plan &plan, + unsigned default_width, + unsigned nominal_width) +{ + c->push (); + + // CFF1 requires: + // 1. Width at the beginning (if != defaultWidthX) + // 2. endchar at the end + str_buff_vec_t cff1_charstrings; + if (unlikely (!cff1_charstrings.resize (plan.subset_charstrings.length))) + { + c->pop_discard (); + return false; + } + + for (unsigned i = 0; i < plan.subset_charstrings.length; i++) + { + // Get width for this glyph from hmtx_map + unsigned width = 0; + if (plan.hmtx_map->has (i)) + width = plan.hmtx_map->get (i).first; + + // Encode width if different from default + str_encoder_t encoder (cff1_charstrings[i]); + if (width != default_width) + { + int delta = (int) width - (int) nominal_width; + encoder.encode_int (delta); + } + + // Use specialized commands if available, otherwise use binary + if (plan.capture_commands && i < plan.charstring_commands.length && + plan.charstring_commands[i].length > 0) + { + // Specialize and encode commands + auto &commands = plan.charstring_commands[i]; + CFF::specialize_commands (commands, 48); /* maxstack=48 for CFF1 */ + if (unlikely (!CFF::encode_commands (commands, cff1_charstrings[i]))) + { + c->pop_discard (); + return false; + } + } + else + { + // Use binary CharString + const str_buff_t &cs = plan.subset_charstrings[i]; + for (unsigned j = 0; j < cs.length; j++) + cff1_charstrings[i].push (cs[j]); + } + + // Check if it already ends with endchar (0x0e) or return (0x0b) + if (cff1_charstrings[i].length == 0 || + (cff1_charstrings[i].tail () != 0x0e && cff1_charstrings[i].tail () != 0x0b)) + { + // Append endchar operator + if (unlikely (!cff1_charstrings[i].push_or_fail (0x0e))) + { + c->pop_discard (); + return false; + } + } + } + + unsigned data_size = 0; + unsigned total_size = CFF1CharStrings::total_size (cff1_charstrings, &data_size); + if (unlikely (!c->start_zerocopy (total_size))) + { + c->pop_discard (); + return false; + } + + auto *cs = c->start_embed (); + if (unlikely (!cs->serialize (c, cff1_charstrings))) + { + c->pop_discard (); + return false; + } + + plan.info.char_strings_link = c->pop_pack (false); + return true; +} + +/* Serialize CID Charset (format 2 range: gid 0-N -> cid 0-N) */ +static bool +_serialize_cff1_charset (hb_serialize_context_t *c, + unsigned int num_glyphs, + objidx_t &charset_link) +{ + // For CID fonts, create a simple identity charset + // Format 2: one range covering all glyphs (except .notdef) + c->push (); + + auto *charset = c->start_embed (); + if (unlikely (!charset)) + { + c->pop_discard (); + return false; + } + + // Create a single range for CID 1 to num_glyphs-1 + hb_vector_t ranges; + if (num_glyphs > 1) + { + code_pair_t range; + range.code = 1; // first CID + range.glyph = num_glyphs - 2; // nLeft (covers glyphs 1 to num_glyphs-1) + ranges.push (range); + } + + if (unlikely (!charset->serialize (c, 2, num_glyphs, ranges))) + { + c->pop_discard (); + return false; + } + + charset_link = c->pop_pack (); + return true; +} + +/* CFF2 to CFF1 serialization */ +namespace CFF { + +bool +serialize_cff2_to_cff1 (hb_serialize_context_t *c, + OT::cff2_subset_plan &plan, + const cff2_top_dict_values_t &cff2_topDict, + const OT::cff2::accelerator_subset_t &acc) +{ + TRACE_SERIALIZE (this); + + /* + * CFF1 Serialization Order (reverse, as HarfBuzz packs from end): + * 1. CharStrings + * 2. Private DICs & Local Subrs + * 3. FDArray + * 4. FDSelect + * 5. Charset + * 6. Global Subrs + * 7. String INDEX + * 8. Top DICT INDEX + * 9. Name INDEX + * 10. Header + */ + + // 0. Optimize width encoding (for all FDs) + { + // Collect widths from hmtx_map + hb_vector_t widths; + widths.alloc (plan.num_glyphs); + + for (unsigned gid = 0; gid < plan.num_glyphs; gid++) + { + unsigned width = 0; + if (plan.hmtx_map->has (gid)) + width = plan.hmtx_map->get (gid).first; + widths.push (width); + } + + // Optimize defaultWidthX and nominalWidthX + CFF::optimize_widths (widths, plan.default_width, plan.nominal_width); + } + + // 1. CharStrings (with widths prepended) + if (!_serialize_cff1_charstrings (c, plan, plan.default_width, plan.nominal_width)) + return_trace (false); + + // 2. Private DICs & Local Subrs (same as CFF2) + hb_vector_t private_dict_infos; + if (unlikely (!private_dict_infos.resize (plan.subset_fdcount))) + return_trace (false); + + for (int i = (int)acc.privateDicts.length; --i >= 0;) + { + if (plan.fdmap.has (i)) + { + objidx_t subrs_link = 0; + + if (plan.subset_localsubrs[i].length > 0) + { + auto *dest = c->push (); + if (likely (dest->serialize (c, plan.subset_localsubrs[i]))) + subrs_link = c->pop_pack (false); + else + { + c->pop_discard (); + return_trace (false); + } + } + + auto *pd = c->push (); + // Use the CFF2 Private DICT serializer which instantiates blends when pinned=true + cff2_private_dict_op_serializer_t privSzr (plan.desubroutinize, plan.drop_hints, plan.pinned, + acc.varStore, plan.normalized_coords); + if (likely (pd->serialize (c, acc.privateDicts[i], privSzr, subrs_link))) + { + // Add defaultWidthX and nominalWidthX for CFF1 + str_buff_t width_ops; + str_encoder_t encoder (width_ops); + encoder.encode_int (plan.default_width); + encoder.encode_op (OpCode_defaultWidthX); + encoder.encode_int (plan.nominal_width); + encoder.encode_op (OpCode_nominalWidthX); + + if (!encoder.in_error () && c->embed (width_ops.as_bytes ().arrayZ, width_ops.length)) + { + unsigned fd = plan.fdmap[i]; + private_dict_infos[fd].size = c->length (); + private_dict_infos[fd].link = c->pop_pack (); + } + else + { + c->pop_discard (); + return_trace (false); + } + } + else + { + c->pop_discard (); + return_trace (false); + } + } + } + + // 3. FDArray - serialize CFF2 font dicts as CFF1 + { + auto *fda = c->push> (); + cff_font_dict_op_serializer_t fontSzr; + auto it = + + hb_zip (+ hb_iter (acc.fontDicts) + | hb_filter ([&] (const cff2_font_dict_values_t &_) + { return plan.fdmap.has (&_ - &acc.fontDicts[0]); }), + hb_iter (private_dict_infos)) + ; + // Explicitly specify template parameters: DICTVAL, INFO + bool success = fda->serialize (c, it, fontSzr); + if (success) + plan.info.fd_array_link = c->pop_pack (false); + else + { + c->pop_discard (); + return_trace (false); + } + } + + // 4. FDSelect (required in CFF1 CID-keyed fonts) + // CFF1 requires FDSelect for all CID-keyed fonts, even with just one FD + // CFF2 makes it optional when there's only one FD + if (acc.fdSelect != &Null (CFF2FDSelect)) + { + c->push (); + if (likely (hb_serialize_cff_fdselect (c, plan.num_glyphs, + *(const FDSelect *)acc.fdSelect, + plan.orig_fdcount, + plan.subset_fdselect_format, + plan.subset_fdselect_size, + plan.subset_fdselect_ranges))) + plan.info.fd_select.link = c->pop_pack (); + else + { + c->pop_discard (); + return_trace (false); + } + } + else + { + // Create a range-based FDSelect3 mapping all glyphs to FD 0 + // Format: format(1) + nRanges(2) + range(3) + sentinel(2) = 8 bytes + c->push (); + + // Format byte + HBUINT8 format; + format = 3; + if (unlikely (!c->embed (format))) + { + c->pop_discard (); + return_trace (false); + } + + // nRanges + HBUINT16 nRanges; + nRanges = 1; + if (unlikely (!c->embed (nRanges))) + { + c->pop_discard (); + return_trace (false); + } + + // Single range: {first: 0, fd: 0} + FDSelect3_Range range; + range.first = 0; + range.fd = 0; + if (unlikely (!c->embed (range))) + { + c->pop_discard (); + return_trace (false); + } + + // Sentinel (number of glyphs) + HBUINT16 sentinel; + sentinel = plan.num_glyphs; + if (unlikely (!c->embed (sentinel))) + { + c->pop_discard (); + return_trace (false); + } + + plan.info.fd_select.link = c->pop_pack (); + } + + // 5. Charset (CID charset for identity mapping) + objidx_t charset_link; + if (!_serialize_cff1_charset (c, plan.num_glyphs, charset_link)) + return_trace (false); + + // 6. Global Subrs + { + auto *dest = c->push (); + if (likely (dest->serialize (c, plan.subset_globalsubrs))) + c->pop_pack (false); + else + { + c->pop_discard (); + return_trace (false); + } + } + + // 7. String INDEX - Add "Adobe" and "Identity" for ROS operator + { + const char *adobe_str = "Adobe"; + const char *identity_str = "Identity"; + unsigned adobe_len = 5; // strlen("Adobe") + unsigned identity_len = 8; // strlen("Identity") + + // Build strings array + hb_vector_t strings; + strings.alloc (2); + strings.push (hb_ubytes_t ((const unsigned char *) adobe_str, adobe_len)); + strings.push (hb_ubytes_t ((const unsigned char *) identity_str, identity_len)); + + // Serialize as CFF INDEX + auto *dest = c->push (); + if (likely (dest->serialize (c, strings))) + c->pop_pack (false); + else + { + c->pop_discard (); + return_trace (false); + } + } + + // 8. CFF Header + OT::cff1 *cff = c->allocate_min (); + if (unlikely (!cff)) return_trace (false); + + /* header */ + cff->version.major = 0x01; + cff->version.minor = 0x00; + cff->nameIndex = cff->min_size; + cff->offSize = 4; /* unused? */ + + // 9. Name INDEX (single entry) + { + unsigned name_len = strlen (CFF1_DEFAULT_FONT_NAME); + + CFF1Index *idx = c->start_embed (); + if (unlikely (!idx)) return_trace (false); + + if (unlikely (!idx->serialize_header (c, hb_iter (&name_len, 1), name_len))) + return_trace (false); + + if (unlikely (!c->embed (CFF1_DEFAULT_FONT_NAME, name_len))) + return_trace (false); + } + + // 10. Top DICT INDEX + { + // Serialize the Top DICT data first + c->push (); + cff1_from_cff2_top_dict_op_serializer_t topSzr; + + // Serialize ROS first + if (unlikely (!topSzr.serialize_ros (c))) + { + c->pop_discard (); + return_trace (false); + } + + // Serialize FontBBox from head table + { + str_buff_t bbox_buff; + str_encoder_t encoder (bbox_buff); + + encoder.encode_int (plan.head_maxp_info.xMin); + encoder.encode_int (plan.head_maxp_info.yMin); + encoder.encode_int (plan.head_maxp_info.xMax); + encoder.encode_int (plan.head_maxp_info.yMax); + encoder.encode_op (OpCode_FontBBox); + + if (encoder.in_error () || !c->embed (bbox_buff.as_bytes ().arrayZ, bbox_buff.length)) + { + c->pop_discard (); + return_trace (false); + } + } + + // Serialize charset operator + if (charset_link && unlikely (!FontDict::serialize_link4_op (c, OpCode_charset, charset_link, whence_t::Absolute))) + { + c->pop_discard (); + return_trace (false); + } + + // Serialize FDSelect operator (required for CID-keyed CFF1 fonts) + if (plan.info.fd_select.link && unlikely (!FontDict::serialize_link4_op (c, OpCode_FDSelect, plan.info.fd_select.link, whence_t::Absolute))) + { + c->pop_discard (); + return_trace (false); + } + + // Serialize FDArray operator (required for CID-keyed CFF1 fonts) + if (plan.info.fd_array_link && unlikely (!FontDict::serialize_link4_op (c, OpCode_FDArray, plan.info.fd_array_link, whence_t::Absolute))) + { + c->pop_discard (); + return_trace (false); + } + + // Serialize other operators from CFF2 TopDict + for (const auto &opstr : cff2_topDict.values) + { + if (unlikely (!topSzr.serialize (c, opstr, plan.info))) + { + c->pop_discard (); + return_trace (false); + } + } + + unsigned top_size = c->length (); + c->pop_pack (false); + + // Serialize INDEX header + auto *dest = c->start_embed (); + if (unlikely (!dest->serialize_header (c, hb_iter (&top_size, 1), top_size))) + return_trace (false); + } + + return_trace (true); +} + +} /* namespace CFF */ + static bool _serialize_cff2_charstrings (hb_serialize_context_t *c, cff2_subset_plan &plan, const OT::cff2::accelerator_subset_t &acc) @@ -669,6 +1229,38 @@ OT::cff2::accelerator_subset_t::subset (hb_subset_context_t *c) const cff2_subset_plan cff2_plan; if (unlikely (!cff2_plan.create (*this, c->plan))) return false; + + // If instantiating (pinned) and downgrade flag is set, convert to CFF1 + if (cff2_plan.pinned && (c->plan->flags & HB_SUBSET_FLAGS_DOWNGRADE_CFF2)) + { + // Serialize CFF1 to the subsetter's serializer + // If we run out of room, returning true will cause subsetter to retry with larger buffer + bool result = CFF::serialize_cff2_to_cff1 (c->serializer, cff2_plan, topDict, *this); + + if (c->serializer->ran_out_of_room ()) + return true; // Subsetter will retry with larger buffer + + if (result && !c->serializer->in_error ()) + { + // Success - end serialization to resolve links + c->serializer->end_serialize (); + + // Copy the serialized CFF1 data and add as CFF table + hb_blob_t *cff_blob = c->serializer->copy_blob (); + if (cff_blob) + { + c->plan->add_table (HB_TAG('C','F','F',' '), cff_blob); + hb_blob_destroy (cff_blob); + + // Return false to signal CFF2 table is not needed + return false; + } + } + + // Conversion failed - don't fall back, fail hard for debugging + return false; + } + return serialize (c->serializer, cff2_plan, c->plan->normalized_coords.as_array ()); } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-subset-instancer-solver.cc b/src/java.desktop/share/native/libharfbuzz/hb-subset-instancer-solver.cc index 15227bdab48..78aab09c651 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-subset-instancer-solver.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-subset-instancer-solver.cc @@ -370,7 +370,8 @@ double renormalizeValue (double v, const Triple &triple, const TripleDistances &triple_distances, bool extrapolate) { double lower = triple.minimum, def = triple.middle, upper = triple.maximum; - assert (lower <= def && def <= upper); + if (unlikely (!(lower <= def && def <= upper))) + return hb_clamp (v, -1.0, +1.0); if (!extrapolate) v = hb_clamp (v, lower, upper); @@ -384,14 +385,26 @@ double renormalizeValue (double v, const Triple &triple, /* default >= 0 and v != default */ if (v > def) - return (v - def) / (upper - def); + { + double positive_range = upper - def; + if (unlikely (!positive_range)) + return +1.0; + return (v - def) / positive_range; + } /* v < def */ if (lower >= 0.0) - return (v - def) / (def - lower); + { + double negative_range = def - lower; + if (unlikely (!negative_range)) + return -1.0; + return (v - def) / negative_range; + } /* lower < 0 and v < default */ double total_distance = triple_distances.negative * (-lower) + triple_distances.positive * def; + if (unlikely (!total_distance)) + return 0.0; double v_distance; if (v >= 0.0) @@ -407,9 +420,19 @@ rebase_tent (Triple tent, Triple axisLimit, TripleDistances axis_triple_distance rebase_tent_result_t &out, rebase_tent_result_t &scratch) { - assert (-1.0 <= axisLimit.minimum && axisLimit.minimum <= axisLimit.middle && axisLimit.middle <= axisLimit.maximum && axisLimit.maximum <= +1.0); - assert (-2.0 <= tent.minimum && tent.minimum <= tent.middle && tent.middle <= tent.maximum && tent.maximum <= +2.0); - assert (tent.middle != 0.0); + if (unlikely (!(-1.0 <= axisLimit.minimum && + axisLimit.minimum <= axisLimit.middle && + axisLimit.middle <= axisLimit.maximum && + axisLimit.maximum <= +1.0) || + !(-2.0 <= tent.minimum && + tent.minimum <= tent.middle && + tent.middle <= tent.maximum && + tent.maximum <= +2.0) || + tent.middle == 0.0)) + { + out.reset (); + return; + } rebase_tent_result_t &sols = scratch; _solve (tent, axisLimit, sols); diff --git a/src/java.desktop/share/native/libharfbuzz/hb-subset.h b/src/java.desktop/share/native/libharfbuzz/hb-subset.h index fd2908e8308..edc13121825 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-subset.h +++ b/src/java.desktop/share/native/libharfbuzz/hb-subset.h @@ -84,6 +84,9 @@ typedef struct hb_subset_plan_t hb_subset_plan_t; * HB_SUBSET_FLAGS_RETAIN_GIDS then the number of glyphs in the font won't * be reduced as a result of subsetting. If necessary empty glyphs will be * included at the end of the font to keep the number of glyphs unchanged. + * @HB_SUBSET_FLAGS_DOWNGRADE_CFF2: If set and instantiating a variable font, + * convert the output CFF2 table to CFF1. This enables compatibility with older + * renderers that don't support CFF2. Since: 13.0.0 * * List of boolean properties that can be configured on the subset input. * @@ -107,6 +110,7 @@ typedef enum { /*< flags >*/ HB_SUBSET_FLAGS_IFTB_REQUIREMENTS = 0x00001000u, HB_SUBSET_FLAGS_RETAIN_NUM_GLYPHS = 0x00002000u, #endif + HB_SUBSET_FLAGS_DOWNGRADE_CFF2 = 0x00004000u, } hb_subset_flags_t; /** @@ -239,13 +243,13 @@ hb_subset_input_override_name_table (hb_subset_input_t *input, */ HB_EXTERN hb_blob_t* -hb_subset_cff_get_charstring_data (hb_face_t* face, hb_codepoint_t glyph_index); +hb_subset_cff_get_charstring_data (hb_face_t* face, hb_codepoint_t glyph); HB_EXTERN hb_blob_t* hb_subset_cff_get_charstrings_index (hb_face_t* face); HB_EXTERN hb_blob_t* -hb_subset_cff2_get_charstring_data (hb_face_t* face, hb_codepoint_t glyph_index); +hb_subset_cff2_get_charstring_data (hb_face_t* face, hb_codepoint_t glyph); HB_EXTERN hb_blob_t* hb_subset_cff2_get_charstrings_index (hb_face_t* face); @@ -294,4 +298,12 @@ hb_subset_plan_get_user_data (const hb_subset_plan_t *plan, HB_END_DECLS + +#if defined(__cplusplus) && defined(HB_CPLUSPLUS_HH) +namespace hb { +HB_DEFINE_VTABLE (subset_input, nullptr); +HB_DEFINE_VTABLE (subset_plan, nullptr); +} // namespace hb +#endif + #endif /* HB_SUBSET_H */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb-ucd-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-ucd-table.hh index 868428ab1e7..d2d23cf59b8 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-ucd-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-ucd-table.hh @@ -763,1716 +763,1712 @@ static const uint64_t _hb_ucd_dm2_u64_map[408]= #include -static const uint8_t _hb_ucd_u8[19868]= +static const uint8_t _hb_ucd_u8[19845]= { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 28, 26, 29, 30, 31, 32, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 33, 34, 34, 34, 34, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 26, 56, 57, 58, 58, 58, 58, 59, 26, 26, 60, 26, 26, 26, 26, 26, - 26, 61, 26, 62, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 63, 58, 58, 58, 26, 64, 65, 66, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 67, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 68, 69, 70, 58, 58, 58, 58, 71, 58, - 58, 58, 58, 58, 58, 58, 72, 73, 74, 75, 76, 77, 78, 79, 58, 80, - 81, 82, 83, 84, 85, 58, 86, 87, 88, 89, 78, 90, 91, 92, 58, 58, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 93, 26, 26, 26, 26, 26, 26, 26, 26, 94, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 95, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 96, 26, 97, 58, 58, 58, 58, 26, 98, 58, 58, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 99, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,100, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 101, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,102, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,103, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 4, 5, 6, 2, - 7, 7, 7, 7, 7, 2, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 17, 18, 19, 1, 20, 20, 21, 22, 23, 24, 25, - 26, 27, 15, 2, 28, 29, 27, 30, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 31, 11, 11, 11, 32, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 33, 16, 16, 16, 16, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 34, 34, 34, 34, 34, 34, 34, 34, 16, 32, 32, 32, - 32, 32, 32, 32, 11, 34, 34, 16, 34, 32, 32, 11, 34, 11, 16, 11, - 11, 34, 32, 11, 32, 16, 11, 34, 32, 32, 32, 11, 34, 16, 32, 11, - 34, 11, 34, 34, 32, 35, 32, 16, 36, 36, 37, 34, 38, 37, 34, 34, - 34, 34, 34, 34, 34, 34, 16, 32, 34, 38, 32, 11, 32, 32, 32, 32, - 32, 32, 16, 16, 16, 11, 34, 32, 34, 34, 11, 32, 32, 32, 32, 32, - 16, 16, 36, 16, 16, 16, 16, 16, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 40, 40, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, - 39, 39, 41, 40, 40, 40, 41, 41, 40, 40, 40, 40, 40, 40, 40, 40, - 42, 42, 42, 42, 42, 42, 42, 42, 32, 32, 41, 32, 43, 44, 16, 10, - 43, 43, 40, 45, 11, 46, 46, 11, 34, 11, 11, 11, 11, 11, 11, 11, - 11, 47, 11, 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 34, - 16, 11, 32, 16, 32, 32, 32, 32, 16, 16, 32, 48, 34, 32, 34, 11, - 32, 49, 42, 42, 50, 32, 32, 32, 11, 34, 34, 34, 34, 34, 34, 16, - 47, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 46, 51, 2, 2, 2, - 16, 16, 16, 16, 52, 53, 54, 55, 56, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 57, 58, 59, 42, 58, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 60, 43, 61, - 36, 62, 63, 43, 43, 43, 43, 43, 64, 64, 64, 8, 9, 65, 2, 66, - 42, 42, 42, 42, 42, 59, 67, 2, 68, 36, 36, 36, 36, 69, 42, 42, - 7, 7, 7, 7, 7, 2, 2, 36, 70, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 71, 42, 42, 42, 72, 49, 42, 42, 73, 74, 75, 42, 42, 36, - 7, 7, 7, 7, 7, 36, 76, 77, 2, 2, 2, 2, 2, 2, 2, 78, - 69, 36, 36, 36, 36, 36, 36, 36, 42, 42, 42, 42, 42, 79, 61, 36, - 36, 36, 36, 42, 42, 42, 42, 42, 70, 43, 43, 43, 43, 43, 43, 43, - 7, 7, 7, 7, 7, 36, 36, 36, 36, 36, 36, 36, 36, 69, 42, 42, - 42, 42, 39, 21, 2, 80, 56, 20, 36, 36, 36, 42, 42, 74, 42, 42, - 42, 42, 74, 42, 74, 42, 42, 43, 2, 2, 2, 2, 2, 2, 2, 63, - 36, 36, 36, 36, 69, 42, 43, 63, 36, 36, 36, 36, 36, 60, 43, 43, - 36, 36, 36, 36, 81, 36, 36, 36, 64, 43, 43, 56, 42, 42, 42, 42, - 36, 36, 36, 36, 82, 42, 42, 42, 42, 83, 42, 42, 42, 42, 42, 42, - 42, 84, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 84, 70, 85, - 86, 42, 42, 42, 84, 85, 86, 85, 69, 42, 42, 42, 36, 36, 36, 36, - 36, 42, 2, 7, 7, 7, 7, 7, 87, 36, 36, 36, 36, 36, 36, 36, - 69, 85, 61, 36, 36, 36, 60, 61, 60, 61, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 60, 36, 36, 36, 60, 60, 43, 36, 36, 43, 70, 85, - 86, 42, 79, 88, 89, 88, 86, 60, 43, 43, 43, 88, 43, 43, 36, 61, - 36, 42, 43, 7, 7, 7, 7, 7, 36, 20, 27, 27, 27, 55, 62, 79, - 56, 84, 61, 36, 36, 60, 43, 61, 60, 36, 61, 60, 36, 43, 79, 85, - 86, 79, 43, 56, 79, 56, 42, 43, 56, 43, 43, 43, 61, 36, 60, 60, - 43, 43, 43, 7, 7, 7, 7, 7, 42, 36, 69, 63, 43, 43, 43, 43, - 56, 84, 61, 36, 36, 36, 36, 61, 36, 61, 36, 36, 36, 36, 36, 36, - 60, 36, 61, 36, 36, 43, 70, 85, 86, 42, 42, 56, 84, 88, 86, 43, - 60, 43, 43, 43, 43, 43, 43, 43, 65, 43, 43, 43, 61, 42, 42, 42, - 56, 85, 61, 36, 36, 36, 60, 61, 60, 36, 61, 36, 36, 43, 70, 86, - 86, 42, 79, 88, 89, 88, 86, 43, 43, 43, 56, 84, 43, 43, 36, 61, - 77, 27, 27, 27, 43, 43, 43, 43, 43, 70, 61, 36, 36, 60, 43, 36, - 60, 36, 36, 43, 61, 60, 60, 36, 43, 61, 60, 43, 36, 60, 43, 36, - 36, 36, 36, 36, 36, 43, 43, 85, 84, 89, 43, 85, 89, 85, 86, 43, - 60, 43, 43, 88, 43, 43, 43, 43, 27, 90, 66, 66, 55, 91, 43, 43, - 84, 85, 70, 36, 36, 36, 60, 36, 60, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 43, 70, 42, 84, 85, 89, 42, 79, 42, 42, 43, - 43, 43, 56, 79, 36, 60, 36, 43, 43, 43, 43, 92, 27, 27, 27, 90, - 69, 85, 71, 36, 36, 36, 60, 36, 36, 36, 61, 36, 36, 43, 70, 86, - 85, 85, 89, 84, 89, 85, 42, 43, 43, 43, 88, 89, 43, 43, 36, 60, - 61, 93, 43, 43, 43, 43, 43, 43, 42, 85, 36, 36, 36, 36, 60, 36, - 36, 36, 36, 36, 36, 69, 70, 85, 86, 42, 79, 85, 89, 85, 86, 76, - 43, 43, 36, 93, 27, 27, 27, 94, 27, 27, 27, 27, 90, 36, 36, 36, - 56, 85, 61, 36, 36, 36, 36, 36, 36, 36, 36, 60, 43, 36, 36, 36, - 36, 61, 36, 36, 36, 36, 61, 43, 36, 36, 36, 60, 43, 79, 43, 88, - 85, 42, 79, 79, 85, 85, 85, 85, 43, 85, 63, 43, 43, 43, 43, 43, - 61, 36, 36, 36, 36, 36, 36, 36, 69, 36, 42, 42, 42, 79, 43, 95, - 36, 36, 36, 74, 42, 42, 42, 59, 7, 7, 7, 7, 7, 2, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 61, 60, 60, 36, 36, 60, 36, 36, - 36, 36, 61, 61, 36, 36, 36, 36, 69, 36, 42, 42, 42, 42, 70, 43, - 36, 36, 60, 80, 42, 42, 42, 79, 7, 7, 7, 7, 7, 43, 36, 36, - 76, 66, 2, 2, 2, 2, 2, 2, 2, 96, 96, 66, 42, 66, 66, 66, - 7, 7, 7, 7, 7, 27, 27, 27, 27, 27, 49, 49, 49, 4, 4, 85, - 36, 36, 36, 36, 61, 36, 36, 36, 36, 36, 36, 36, 36, 36, 60, 43, - 56, 42, 42, 42, 42, 42, 42, 84, 42, 42, 59, 42, 36, 36, 69, 42, - 42, 42, 42, 42, 56, 42, 42, 42, 42, 42, 42, 42, 42, 42, 79, 66, - 66, 66, 66, 75, 66, 66, 91, 66, 2, 2, 96, 66, 21, 63, 43, 43, - 36, 36, 36, 36, 36, 93, 86, 42, 84, 42, 42, 42, 86, 84, 86, 70, - 7, 7, 7, 7, 7, 2, 2, 2, 36, 36, 36, 85, 42, 36, 36, 42, - 70, 85, 97, 93, 85, 85, 85, 36, 69, 42, 70, 36, 36, 36, 36, 36, - 36, 84, 86, 84, 85, 85, 86, 93, 7, 7, 7, 7, 7, 85, 86, 66, - 11, 11, 11, 47, 43, 43, 47, 43, 16, 16, 16, 16, 16, 52, 44, 16, - 36, 36, 36, 36, 60, 36, 36, 43, 36, 36, 36, 60, 60, 36, 36, 43, - 60, 36, 36, 43, 36, 36, 36, 60, 60, 36, 36, 43, 36, 36, 36, 36, - 36, 36, 36, 60, 36, 36, 36, 36, 36, 36, 36, 36, 36, 60, 56, 42, - 2, 2, 2, 2, 98, 27, 27, 27, 27, 27, 27, 27, 27, 27, 99, 43, - 66, 66, 66, 66, 66, 43, 43, 43, 11, 11, 11, 43, 16, 16, 16, 43, - 100, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 76, 71, - 101, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,102,103, 43, - 36, 36, 36, 36, 36, 62, 2,104,105, 36, 36, 36, 60, 43, 43, 43, - 36, 42, 84, 43, 43, 43, 43, 61, 36, 42,106, 63, 43, 43, 43, 43, - 36, 42, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 36, 36, 60, 36, - 60, 42, 43, 43, 43, 43, 43, 43, 36, 36, 42, 86, 42, 42, 42, 85, - 85, 85, 85, 84, 86, 42, 42, 42, 42, 42, 2, 87, 2, 65, 69, 43, - 7, 7, 7, 7, 7, 43, 43, 43, 27, 27, 27, 27, 27, 43, 43, 43, - 2, 2, 2,107, 2, 58, 42, 83, 36, 82, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 60, 43, 43, 43, 36, 36, 69, 70, 36, 36, 36, 36, - 36, 36, 36, 36, 69, 60, 43, 43, 36, 36, 36, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 60, 42, 84, 85, 86, 84, 85, 43, 43, - 85, 84, 85, 85, 86, 42, 43, 43, 91, 43, 2, 7, 7, 7, 7, 7, - 36, 36, 36, 36, 36, 36, 36, 43, 36, 36, 60, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 43, 43, 36, 36, 36, 36, 36, 43, 43, 43, - 7, 7, 7, 7, 7, 99, 43, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 36, 36, 36, 69, 84, 86, 43, 2, 36, 36, 93, 84, 42, 42, 42, 79, - 84, 84, 86, 42, 42, 42, 84, 85, 85, 86, 42, 42, 42, 42, 79, 56, - 2, 2, 2, 87, 2, 2, 2, 43, 42, 42, 42, 42, 42, 42, 42,108, - 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 43, 43, - 42, 42, 97, 36, 36, 36, 36, 36, 36, 36, 84, 42, 42, 84, 84, 85, - 85, 84, 97, 36, 36, 36, 60, 2, 96, 66, 66, 66, 66, 49, 42, 42, - 42, 42, 66, 66, 66, 66, 21, 2, 42, 97, 36, 36, 36, 36, 36, 36, - 93, 42, 42, 85, 42, 86, 42, 36, 36, 36, 36, 84, 42, 85, 86, 86, - 42, 85, 43, 43, 43, 43, 2, 2, 36, 36, 85, 85, 85, 85, 42, 42, - 42, 42, 85, 42, 43, 92, 2, 2, 7, 7, 7, 7, 7, 43, 61, 36, - 36, 36, 36, 36, 39, 39, 39, 2, 16, 16, 16, 16, 34,109, 43, 43, - 11, 11, 11, 11, 11, 46, 47, 11, 2, 2, 2, 2, 43, 43, 43, 43, - 42, 59, 42, 42, 42, 42, 42, 42, 84, 42, 42, 42, 70, 36, 69, 36, - 36, 36, 70, 93, 42, 60, 43, 43, 16, 16, 16, 16, 16, 16, 39, 39, - 39, 39, 39, 39, 39, 44, 16, 16, 16, 16, 16, 16, 44, 16, 16, 16, - 16, 16, 16, 16, 16,110, 39, 39, 32, 32, 32, 16, 16, 16, 16, 32, - 16, 16, 16, 16, 11, 11, 11, 11, 16, 16, 16, 43, 11, 11, 11, 43, - 16, 16, 16, 16, 47, 47, 47, 47, 16, 16, 16, 16, 16, 16, 16, 43, - 16, 16, 16, 16,111,111,111,111, 16, 16,109, 16, 11, 11,112,113, - 40, 16,109, 16, 11, 11,112, 40, 16, 16, 43, 16, 11, 11,114, 40, - 16, 16, 16, 16, 11, 11,115, 40, 43, 16,109, 16, 11, 11,112,116, - 117,117,117,117,117,118, 64, 64,119,119,119, 2,120,121,120,121, - 2, 2, 2, 2,122, 64, 64,123, 2, 2, 2, 2,124,125, 2,126, - 127, 2,128,129, 2, 2, 2, 2, 2, 9,127, 2, 2, 2, 2,130, - 64, 64,131, 64, 64, 64, 64, 64,132, 43, 27, 27, 27, 8,128,133, - 27, 27, 27, 27, 27, 8,128,103, 39, 39, 39, 39, 39, 39, 80, 43, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 43, 43, 43, 43, 43, 43, 43, - 42, 42, 42, 42, 42, 42,134, 50,108, 50,108, 42, 42, 42, 42, 42, - 79, 43, 43, 43, 43, 43, 43, 43, 66,135, 66,136, 66, 34, 11, 16, - 11, 32,136, 66, 48, 11, 11, 66, 66, 66,135,135,135, 11, 11,137, - 11, 11, 35, 36,138, 66, 16, 11, 8, 8, 48, 16, 16, 26, 66,139, - 27, 27, 27, 27, 27, 27, 27, 27,104,104,104,104,104,104,104,104, - 104,140,141,104,142, 66, 43, 43, 8, 8,143, 66, 66, 8, 66, 66, - 143, 26, 66,143, 66, 66, 66,143, 66, 66, 66, 66, 66, 66, 66, 8, - 66,143,143, 66, 66, 66, 66, 66, 66, 66, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 66, 66, 66, 66, 4, 4, 66, 66, - 8, 66, 66, 66,144,145, 66, 66, 66, 66, 66, 66, 66, 66,143, 66, - 66, 66, 66, 66, 66, 26, 8, 8, 8, 8, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 8, 8, 8, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 91, 43, 43, 27, 27, 27, 27, 27, 27, 66, 66, - 66, 66, 66, 66, 66, 27, 27, 27, 66, 66, 66, 26, 66, 66, 66, 66, - 26, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 8, 8, 8, 8, - 66, 66, 66, 66, 66, 66, 66, 26, 66, 66, 66, 66, 4, 4, 4, 4, - 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 66, 66, 66, 66, 66, 66, - 8, 8,128,146, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, - 8,128,147,147,147,147,147,147,147,147,147,147,146, 8, 8, 8, - 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, - 8, 8,143, 26, 8, 8,143, 66, 66, 66, 43, 66, 66, 66, 66, 66, - 32, 11, 32, 34, 34, 34, 34, 11, 32, 32, 34, 16, 16, 16, 39, 11, - 32, 32,139, 66, 66,136, 34,148, 42, 32, 43, 43, 92, 2, 98, 2, - 16, 16, 16,149, 43, 43,149, 43, 36, 36, 36, 36, 43, 43, 43, 51, - 63, 43, 43, 43, 43, 43, 43, 56, 36, 36, 36, 60, 43, 43, 43, 43, - 36, 36, 36, 60, 36, 36, 36, 60, 2,120,120, 2,124,125,120, 2, - 2, 2, 2, 6, 2,107,120, 2,120, 4, 4, 4, 4, 2, 2, 87, - 2, 2, 2, 2, 2,119, 2, 2,107,150, 2, 2, 2, 2, 2, 2, - 66, 2,151,147,147,147,152, 43, 66, 66, 66, 66, 66, 54, 66, 66, - 66, 66, 43, 43, 43, 43, 43, 43, 66, 66, 66, 43, 43, 43, 43, 43, - 1, 2,153,154, 4, 4, 4, 4, 4, 66, 4, 4, 4, 4,155,156, - 157,104,104,104,104, 42, 42, 85,158, 39, 39, 66,104,159, 62, 66, - 36, 36, 36, 60, 56,160,161, 68, 36, 36, 36, 36, 36, 62, 39, 68, - 43, 43, 61, 36, 36, 36, 36, 36, 66, 27, 27, 66, 66, 66, 66, 66, - 66, 66, 66, 43, 43, 43, 43, 54, 66, 66, 66, 66, 66, 66, 66, 91, - 27, 27, 27, 27, 27, 66, 66, 66, 66, 66, 66, 66, 27, 27, 27, 27, - 162, 27, 27, 27, 27, 27, 27, 27, 36, 36, 82, 36, 36, 36, 36, 36, - 66, 66, 66, 91, 43, 43, 43, 43, 36, 36, 36, 36, 36, 36,163, 2, - 7, 7, 7, 7, 7, 36, 43, 43, 32, 32, 32, 32, 32, 32, 32, 69, - 50,164, 42, 42, 42, 42, 42, 87, 32, 32, 32, 32, 32, 32, 39, 42, - 36, 36, 36,104,104,104,104,104, 42, 2, 2, 2, 43, 43, 43, 43, - 40, 40, 40,161, 39, 39, 39, 39, 40, 32, 32, 32, 32, 32, 32, 32, - 16, 32, 32, 32, 32, 32, 32, 32, 44, 16, 16, 16, 34, 34, 34, 32, - 32, 32, 32, 32, 41,165, 34, 35, 32, 32, 16, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 11, 11, 32, 11, 11, 32, 32, 32, 32, 32, 32, - 32, 32, 11, 11, 34, 34, 32, 32, 32, 32, 32, 32, 32, 32, 46, 43, - 51, 39,166, 35, 39, 35, 36, 36, 36, 70, 36, 70, 36, 69, 36, 36, - 36, 93, 86, 84, 66, 66, 79, 43, 27, 27, 27, 66,167, 43, 43, 43, - 36, 36, 2, 2, 43, 43, 43, 43, 85, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 85, 85, 85, 85, 85, 85, 85, 85, 42, 43, 43, 43, 43, 2, - 42, 36, 36, 36, 2, 71, 71, 69, 36, 36, 36, 42, 42, 42, 42, 2, - 36, 36, 36, 69, 42, 42, 42, 42, 42, 85, 43, 43, 43, 43, 43, 92, - 36, 69, 85, 42, 42, 85, 42, 85,106, 2, 2, 2, 2, 2, 2, 51, - 7, 7, 7, 7, 7, 43, 43, 2, 36, 36, 69, 68, 36, 36, 36, 36, - 7, 7, 7, 7, 7, 36, 36, 60, 36, 36, 36, 36, 69, 42, 42, 84, - 86, 84, 86, 79, 43, 43, 43, 43, 36, 69, 36, 36, 36, 36, 84, 43, - 7, 7, 7, 7, 7, 43, 2, 2, 68, 36, 36, 76, 66, 93, 84, 36, - 70, 42, 70, 69, 70, 36, 36, 42, 69, 60, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 61, 82, 2, 36, 36, 36, 36, 36, 93, 42, 85, - 2, 82,168, 79, 43, 43, 43, 43, 61, 36, 36, 60, 61, 36, 36, 60, - 61, 36, 36, 60, 43, 43, 43, 43, 16, 16, 16, 16, 16,113, 39, 39, - 16, 16, 16, 16,110, 40, 43, 43, 36, 93, 86, 85, 84,106, 86, 43, - 36, 36, 43, 43, 43, 43, 43, 43, 36, 36, 36, 60, 43, 61, 36, 36, - 169,169,169,169,169,169,169,169,170,170,170,170,170,170,170,170, - 16, 16, 16,109, 43, 43, 43, 43, 43,149, 16, 16, 43, 43, 61, 70, - 36, 36, 36, 36,171, 36, 36, 36, 36, 36, 36, 60, 36, 36, 60, 60, - 36, 61, 60, 36, 36, 36, 36, 36, 36, 40, 40, 40, 40, 40, 40, 40, - 40, 22, 66, 66, 66, 66, 66, 66, 66, 77, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36,147, 66, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 66, 66, 66, 66, 36, 36, 36, 36, 36, 36,167, 66, - 2, 2, 2,151,129, 43, 43, 43, 6,172,173,147,147,147,147,147, - 147,147,129,151,129, 2,126,174, 2, 63, 2, 2,155,147,147,129, - 2,175, 8,176, 65, 2, 43, 43, 36, 36, 60, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 60, 78, 92, 2, 3, 2, 4, 5, 6, 2, - 16, 16, 16, 16, 16, 17, 18,128,129, 4, 2, 36, 36, 36, 36, 36, - 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 39, - 43, 36, 36, 36, 43, 36, 36, 36, 43, 36, 36, 36, 43, 36, 60, 43, - 20,177, 55,178, 26, 8,143, 91, 43, 43, 43, 43, 78, 64, 66, 43, - 36, 36, 36, 36, 36, 36, 61, 36, 36, 36, 36, 36, 36, 60, 36, 61, - 2, 63, 43,179, 27, 27, 27, 27, 27, 27, 43, 54, 66, 66, 66, 66, - 104,104,142, 27, 90, 66, 66, 66, 66, 66, 66, 66, 66, 27, 66, 91, - 66, 66, 66, 66, 66, 66, 91, 43, 91, 43, 43, 43, 43, 43, 43, 43, - 66, 66, 66, 66, 66, 66, 49, 43,180, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 43, 43, 27, 27, 43, 43, 43, 43, 61, 36, - 154, 36, 36, 36, 36,181, 43, 43, 36, 36, 36, 42, 42, 79, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 92, 36, 36, 43, 43, 36, 36, 36, 36, - 182,104,104, 43, 43, 43, 43, 43, 11, 11, 11, 11, 16, 16, 16, 16, - 11, 11, 43, 43, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 43, 43, - 36, 36, 36, 36, 43, 43, 43, 43, 36, 36, 43, 43, 43, 43, 43, 92, - 11, 11, 11, 11, 11, 46, 11, 11, 11, 46, 11,149, 16, 16, 16, 16, - 16,149, 16, 16, 16, 16, 16, 16, 16,149, 16, 16, 16,149,109, 43, - 39, 39, 39, 51, 39, 39, 39, 39, 80, 39, 39, 39, 39, 80, 43, 43, - 36, 36, 36, 43, 60, 36, 36, 36, 36, 36, 36, 61, 60, 43, 60, 61, - 36, 36, 36, 92, 27, 27, 27, 27, 36, 36, 36, 76,162, 27, 27, 27, - 43, 43, 43,179, 27, 27, 27, 27, 36, 60, 36, 43, 43,179, 27, 27, - 36, 36, 36, 27, 27, 27, 43, 92, 36, 36, 36, 36, 36, 43, 43, 92, - 36, 36, 36, 36, 43, 43, 27, 36, 43, 27, 27, 27, 27, 27, 27, 27, - 69, 42, 56, 79, 43, 43, 42, 42, 36, 36, 61, 36, 61, 36, 36, 36, - 36, 36, 36, 43, 42, 79, 43, 56, 27, 27, 27, 27, 99, 43, 43, 43, - 2, 2, 2, 2, 63, 43, 43, 43, 36, 36, 36, 36, 36, 36,183, 30, - 36, 36, 36, 36, 36, 36,183, 27, 36, 36, 36, 36, 77, 36, 36, 36, - 36, 36, 69, 79, 43,179, 27, 27, 2, 2, 2, 63, 43, 43, 43, 43, - 36, 36, 36, 43, 92, 2, 2, 2, 36, 36, 36, 43, 27, 27, 27, 27, - 36, 60, 43, 43, 27, 27, 27, 27, 36, 43, 43, 43, 92, 2, 63, 43, - 43, 43, 43, 43,179, 27, 27, 27, 11, 46, 43, 43, 43, 43, 43, 43, - 16,109, 43, 43, 43, 27, 27, 27, 36, 36, 42, 42, 43, 43, 43, 43, - 7, 7, 7, 7, 7, 36, 36, 68, 11, 11, 11, 43, 56, 42, 42,158, - 16, 16, 16, 43, 43, 43, 43, 8, 27, 27, 27, 27, 27, 27, 27, 99, - 36, 36, 36, 36, 36, 56,184, 43, 36, 43, 43, 43, 43, 43, 43, 43, - 43, 36, 82, 36, 43, 43, 43, 43, 96, 66, 66, 66, 91, 43, 43, 43, - 43, 43, 43, 43, 43, 42, 42, 42, 27, 27, 27, 94, 43, 43, 43, 43, - 180, 27, 30, 2, 2, 43, 43, 43, 36, 42, 42, 2, 2, 43, 43, 43, - 36, 36,183, 27, 27, 27, 43, 43, 86, 97, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 42, 42, 42, 42, 42, 42, 42, 59, 2, 2, 2, 43, - 27, 27, 27, 7, 7, 7, 7, 7, 70, 69, 70, 43, 43, 43, 43, 56, - 85, 86, 42, 84, 86, 59,185, 2, 2, 79, 43, 43, 43, 43, 78, 43, - 42, 70, 36, 36, 36, 36, 36, 36, 36, 36, 36, 69, 42, 42, 86, 42, - 42, 42, 79, 7, 7, 7, 7, 7, 2, 2, 93, 97, 43, 43, 43, 43, - 36, 69, 2, 60, 43, 43, 43, 43, 36, 93, 85, 42, 42, 42, 42, 84, - 97, 36, 62, 2, 58, 42, 59, 86, 7, 7, 7, 7, 7, 62, 62, 2, - 179, 27, 27, 27, 27, 27, 27, 27, 27, 27, 99, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 85, 86, 42, 85, 84, 42, 2, 2, 2, 70, - 69, 43, 43, 43, 43, 43, 43, 43, 36, 36, 36, 60, 60, 36, 36, 61, - 36, 36, 36, 36, 36, 36, 36, 61, 36, 36, 36, 36, 62, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 69, 85, 86, 42, 42, 42, 79, 43, 43, - 42, 85, 61, 36, 36, 36, 60, 61, 60, 36, 61, 36, 36, 56, 70, 85, - 84, 85, 89, 88, 89, 88, 85, 43, 60, 43, 43, 88, 43, 43, 61, 36, - 36, 85, 43, 42, 42, 42, 79, 43, 42, 42, 79, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 61, 43, 60, 36, 36, 36, 61, 85, 86, 42, 42, - 79, 89, 88, 88, 85, 89, 85, 84, 70, 70, 2, 92, 63, 43, 43, 43, - 56, 79, 43, 43, 43, 43, 43, 43, 36, 36, 93, 85, 42, 42, 42, 42, - 85, 42, 84, 70, 36, 62, 2, 2, 7, 7, 7, 7, 7, 2, 92, 70, - 85, 86, 42, 42, 84, 84, 85, 86, 84, 42, 36, 71, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 93, 85, 42, 42, 43, 85, 85, 42, 86, - 59, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 42, 43, - 85, 86, 42, 42, 42, 84, 86, 86, 59, 2, 60, 43, 43, 43, 43, 43, - 2, 2, 2, 2, 2, 2, 63, 43, 36, 36, 36, 36, 36, 69, 86, 85, - 42, 42, 42, 86, 62, 43, 43, 43, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 36, 60, 56, 86, - 85, 42, 42, 86, 42, 42, 43, 43, 7, 7, 7, 7, 7, 27, 2, 96, - 42, 42, 42, 42, 86, 59, 43, 43, 27, 99, 43, 43, 43, 43, 43, 61, - 36, 36, 36, 60, 61, 43, 36, 36, 36, 36, 61, 60, 36, 36, 36, 36, - 85, 85, 85, 88, 89, 56, 84, 70, 97, 86, 2, 63, 43, 43, 43, 43, - 36, 36, 36, 36, 43, 36, 36, 36, 93, 85, 42, 42, 43, 42, 85, 85, - 70, 71, 89, 43, 43, 43, 43, 43, 69, 42, 42, 42, 42, 70, 36, 36, - 36, 69, 42, 42, 84, 69, 42, 59, 2, 2, 2, 58, 43, 43, 43, 43, - 69, 42, 42, 84, 86, 42, 36, 36, 36, 36, 36, 36, 36, 42, 42, 42, - 42, 42, 42, 84, 42, 2, 71, 2, 2, 63, 43, 43, 43, 43, 43, 43, - 2, 2, 2, 2, 2, 43, 43, 43, 84, 42, 84, 84, 43, 43, 43, 43, - 62, 43, 43, 43, 43, 43, 43, 43, 42, 42, 42, 79, 42, 42, 42, 86, - 62, 2, 2, 43, 43, 43, 43, 43, 2, 36, 36, 36, 36, 36, 36, 36, - 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 88, 42, 42, 42, - 84, 42, 86, 79, 43, 43, 43, 43, 36, 36, 36, 60, 36, 61, 36, 36, - 69, 42, 42, 79, 43, 79, 42, 56, 42, 42, 42, 69, 43, 43, 43, 43, - 36, 36, 36, 61, 60, 36, 36, 36, 36, 36, 36, 36, 36, 85, 85, 89, - 42, 88, 86, 86, 60, 43, 43, 43, 36, 36, 36, 36, 82, 36, 43, 43, - 36, 69, 84,106, 63, 43, 43, 43, 42, 93, 36, 36, 36, 36, 36, 36, - 36, 36, 85, 42, 42, 79, 43, 85, 84, 59, 2, 2, 2, 2, 2, 2, - 7, 7, 7, 7, 7, 79, 43, 43, 27, 27, 90, 66, 66, 66, 55, 20, - 167, 66, 66, 66, 66, 66, 66, 66, 66, 43, 43, 43, 43, 43, 43, 92, - 104,104,104,104,104,104,104,181, 2, 2, 63, 43, 43, 43, 43, 43, - 62, 63, 43, 43, 43, 43, 43, 43, 64, 64, 64, 64, 64, 64, 64, 64, - 70, 36, 36, 69, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 42, 42, 42, 42, 42, 42, 85, 86, 42, - 42, 42, 59, 43, 43, 43, 43, 43, 42, 42, 42, 59, 2, 2, 66, 66, - 39, 39, 96, 43, 43, 43, 43, 43, 7, 7, 7, 7, 7,179, 27, 27, - 27, 61, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 43, 43, 61, 36, - 39, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 82,163, 2, - 27, 27, 27, 30, 2, 63, 43, 43, 11, 11, 11, 11, 46,149, 16, 16, - 16, 16, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 36, 60, 43, 56, - 93, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 43, 43, 43, 56, 42, 73, 39, 39, 39, 39, 39, 39, - 39, 87, 79, 43, 43, 43, 43, 43, 85, 39,104,181, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 61, 36, 60, 43, 43, 43, 43, 43, 43, - 39, 39, 51, 39, 39, 39, 51, 80, 43, 60, 43, 43, 43, 43, 43, 43, - 36, 60, 61, 43, 43, 43, 43, 43, 43, 43, 36, 36, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 43, 49, 59, 64, 64, 43, 43, 43, 43, 43, 43, - 7, 7, 7, 7, 7, 66, 91, 43, 66, 66, 43, 43, 43, 66, 66, 66, - 176, 43, 43, 43, 43, 43, 43, 43, 42, 42, 42, 79, 43, 43, 43, 43, - 66, 66, 66, 91, 54, 66, 66, 66, 66, 66,186, 86, 42, 66,186, 85, - 85,187, 64, 64, 64, 83, 42, 42, 42, 75, 49, 42, 42, 42, 66, 66, - 66, 66, 66, 66, 66, 42, 42, 66, 66, 42, 75, 43, 43, 43, 43, 43, - 27, 27, 43, 43, 43, 43, 43, 43, 11, 11, 11, 11, 11, 16, 16, 16, - 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, - 16, 16,109, 16, 16, 16, 16, 16, 11, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 46, 11, 43, 46, 47, 46, 47, 11, 46, 11, - 11, 11, 11, 16, 16,149,149, 16, 16, 16,149, 16, 16, 16, 16, 16, - 16, 16, 11, 47, 11, 46, 47, 11, 11, 11, 46, 11, 11, 11, 46, 16, - 16, 16, 16, 16, 11, 47, 11, 46, 11, 11, 46, 46, 43, 11, 11, 11, - 46, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 11, 11, - 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 43, 11, 11, 11, 11, - 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, - 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, - 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, - 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 32, 43, 7, - 42, 42, 42, 75, 66, 49, 42, 42, 42, 42, 42, 42, 42, 42, 75, 66, - 66, 66, 49, 66, 66, 66, 66, 66, 66, 66, 75, 21, 2, 2, 43, 43, - 43, 43, 43, 43, 43, 56, 42, 42, 16, 16, 16, 16, 16,138, 16, 16, - 16, 16, 16, 16, 16, 16, 16,109, 43, 43,149, 16, 16,109, 43, 43, - 42, 42, 42, 79, 42, 42, 42, 42, 42, 42, 42, 42, 79, 56, 42, 42, - 42, 56, 79, 42, 42, 79, 43, 43, 39, 39, 39, 39, 39, 39, 39, 43, - 43, 43, 43, 43, 43, 43, 43, 56, 42, 42, 42, 73, 39, 39, 39, 43, - 7, 7, 7, 7, 7, 43, 43, 76, 36, 36, 36, 36, 36, 36, 36, 79, - 36, 36, 36, 36, 36, 36, 42, 42, 7, 7, 7, 7, 7, 43, 43, 95, - 36, 36, 36, 36, 36, 82, 42, 42,188, 7, 7, 7, 7,189, 43, 92, - 36, 69, 36, 70, 36, 36, 36, 42, 36, 36, 69, 43, 43, 43, 43, 82, - 36, 36, 36, 60, 36, 36, 61, 60, 36, 36, 60,179, 27, 27, 27, 27, - 16, 16, 42, 42, 42, 73, 43, 43, 27, 27, 27, 27, 27, 27,162, 27, - 190, 27, 99, 43, 43, 43, 43, 43, 27, 27, 27, 27, 27, 27, 27,162, - 27, 27, 27, 27, 27, 27, 27, 43, 36, 36, 61, 36, 36, 36, 36, 36, - 61, 60, 60, 61, 61, 36, 36, 36, 36, 60, 36, 36, 61, 61, 43, 43, - 43, 60, 43, 61, 61, 61, 61, 36, 61, 60, 60, 61, 61, 61, 61, 61, - 61, 60, 60, 61, 36, 60, 36, 36, 36, 60, 36, 36, 61, 36, 60, 60, - 36, 36, 36, 36, 36, 61, 36, 36, 61, 36, 61, 36, 36, 61, 36, 36, - 8, 43, 43, 43, 43, 43, 43, 43, 66, 66, 66, 66, 66, 66, 43, 43, - 54, 66, 66, 66, 66, 66, 66, 66, 27, 27, 27, 27, 27, 27, 90, 66, - 66, 66, 66, 66, 66, 66, 66, 43, 43, 43, 43, 66, 66, 66, 66, 66, - 66, 91, 43, 43, 43, 43, 43, 43, 66, 66, 66, 66, 91, 43, 43, 43, - 66, 43, 43, 43, 43, 43, 43, 43, 66, 66, 66, 66, 66, 25, 40, 40, - 66, 66, 66, 66, 91, 43, 66, 66, 66, 66, 66, 66, 43, 43, 43, 43, - 8, 8, 8, 8,176, 43, 43, 43, 66, 66, 66, 66, 66, 91, 43, 66, - 66, 66, 66, 91, 91, 43, 54, 66, 66, 66, 66, 66, 66, 66, 91, 54, - 66, 66, 66, 66, 66, 91, 43, 54, 66, 91, 66, 66, 66, 66, 66, 66, - 7, 7, 7, 7, 7, 91, 43, 43, 78, 43, 43, 43, 43, 43, 43, 43, - 170,170,170,170,170,170,170, 43,170,170,170,170,170,170,170, 0, - 0, 0, 29, 21, 21, 21, 23, 21, 22, 18, 21, 25, 21, 17, 13, 13, - 25, 25, 25, 21, 21, 9, 9, 9, 9, 22, 21, 18, 24, 16, 24, 5, - 5, 5, 5, 22, 25, 18, 25, 0, 23, 23, 26, 21, 24, 26, 7, 20, - 25, 1, 26, 24, 26, 25, 15, 15, 24, 15, 7, 19, 15, 21, 9, 25, - 9, 5, 5, 25, 5, 9, 5, 7, 7, 7, 9, 8, 8, 5, 6, 6, - 24, 24, 6, 24, 12, 12, 2, 2, 6, 5, 9, 21, 9, 2, 2, 9, - 25, 9, 26, 12, 11, 11, 2, 6, 5, 21, 17, 2, 2, 26, 26, 23, - 2, 12, 17, 12, 21, 12, 12, 21, 7, 2, 2, 7, 7, 21, 21, 2, - 1, 1, 21, 23, 26, 26, 1, 21, 6, 7, 7, 12, 12, 7, 21, 7, - 12, 1, 12, 6, 6, 12, 12, 26, 7, 26, 26, 7, 2, 1, 12, 2, - 6, 2, 24, 7, 7, 6, 1, 12, 12, 10, 10, 10, 10, 12, 21, 6, - 2, 10, 10, 2, 15, 26, 26, 2, 2, 21, 7, 10, 15, 7, 2, 23, - 21, 26, 10, 7, 21, 15, 15, 2, 17, 7, 29, 7, 7, 22, 18, 2, - 14, 14, 14, 7, 10, 21, 17, 21, 11, 12, 5, 2, 5, 6, 8, 8, - 8, 24, 5, 24, 2, 24, 9, 24, 24, 2, 29, 29, 29, 1, 17, 17, - 20, 19, 22, 20, 27, 28, 1, 29, 21, 20, 19, 21, 21, 16, 16, 21, - 25, 22, 18, 21, 21, 29, 1, 2, 15, 6, 18, 6, 12, 11, 9, 26, - 26, 9, 26, 5, 7, 5, 5, 26, 14, 9, 5, 14, 14, 15, 25, 26, - 26, 22, 18, 26, 18, 25, 18, 22, 5, 12, 2, 5, 22, 21, 21, 22, - 18, 17, 26, 6, 7, 14, 17, 22, 18, 18, 26, 14, 17, 6, 14, 6, - 12, 24, 24, 6, 26, 15, 6, 21, 11, 21, 24, 9, 6, 9, 23, 26, - 6, 10, 4, 4, 3, 3, 7, 25, 17, 16, 16, 22, 16, 16, 25, 17, - 25, 2, 25, 24, 23, 2, 2, 15, 12, 15, 14, 2, 21, 14, 7, 15, - 12, 17, 21, 1, 26, 10, 10, 1, 7, 13, 13, 2, 23, 15, 0, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 0, 14, 0, - 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 31, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 32, 2, 33, 34, 35, 36, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 37, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 2, 58, 59, 0, 0, 0, 0, 60, 2, 2, 61, 2, 2, 2, 2, 2, + 2, 62, 2, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 0, 0, 2, 65, 66, 67, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 69, 70, 71, 0, 0, 0, 0, 72, 0, + 0, 0, 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, 4, 79, 0, 80, + 81, 82, 83, 84, 85, 0, 86, 87, 88, 89, 4, 90, 91, 92, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 93, 2, 2, 2, 2, 2, 2, 2, 2, 94, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 95, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 96, 2, 97, 0, 0, 0, 0, 2, 98, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 99, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, 22, 23, - 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 36, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, - 6, 7, 8, 0, 9, 0, 10, 11, 0, 0, 12, 13, 14, 15, 16, 0, - 0, 0, 0, 17, 18, 19, 20, 0, 21, 0, 22, 23, 0, 24, 25, 0, - 0, 24, 26, 27, 0, 24, 26, 0, 0, 24, 26, 0, 0, 24, 26, 0, - 0, 0, 26, 0, 0, 24, 28, 0, 0, 24, 26, 0, 0, 29, 26, 0, - 0, 0, 30, 0, 0, 31, 32, 0, 0, 33, 34, 0, 35, 36, 0, 37, - 38, 0, 39, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 0, 0, - 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, - 0, 0, 0, 0, 48, 0, 0, 49, 0, 50, 51, 52, 0, 53, 54, 55, - 0, 56, 0, 57, 0, 58, 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, - 0, 0, 61, 62, 0, 0, 0, 0, 0, 0, 63, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 66, - 0, 0, 0, 67, 0, 68, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 70, 71, 0, 0, 72, 0, 0, 0, 0, - 0, 0, 0, 0, 73, 74, 0, 0, 0, 0, 54, 75, 0, 76, 77, 0, - 0, 78, 79, 0, 0, 0, 0, 0, 0, 80, 81, 82, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 87, - 0, 0, 0, 0, 88, 89, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 92, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 94, 0, 0, 95, 0, - 96, 0, 0, 0, 0, 0, 73, 97, 0, 98, 0, 0, 99,100, 0, 78, - 0, 0,101, 0, 0,102, 0, 0, 0, 0, 0,103, 0,104, 26,105, - 0, 0,106, 0, 0, 0,107, 0, 0, 0,108, 0, 0, 0, 0, 0, - 0, 66,109, 0, 0, 66, 0, 0, 0,110, 0, 0, 0,111, 0, 0, - 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0,112,113, 0, - 0, 0, 0, 79, 0, 44,114, 0,115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,116, 0, - 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 0,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,122, 0, 0, 0, 0,123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, - 125,126, 0, 0, 0, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128,129, 0, 0,130, 0, 0, 0, 0,121, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 0,132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0, 0, - 0, 0, 0,134, 0, 0, 0, 0, 0, 0, 0,135, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 0, 0, 0,137, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, - 1, 2, 3, 4, 5, 6, 7, 4, 4, 8, 9, 10, 1, 11, 12, 13, - 14, 15, 16, 17, 18, 1, 1, 1, 0, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, - 25, 26, 27, 28, 29, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 31, 0, 0, 0, 32, 33, 34, 35, 1, 36, 0, 0, 0, 0, - 37, 0, 0, 0, 0, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, - 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, - 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 0, 0, 0, 0, 19, 1, - 21, 0, 0, 47, 0, 0, 0, 0, 0, 38, 48, 1, 1, 49, 49, 50, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, - 0, 19, 52, 1, 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, - 54, 21, 35, 1, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, - 57, 58, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 0, 0, 0, 56, 0, 60, 0, 0, 0, 0, 0, 0, - 0, 0, 61, 62, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 68, 0, 0, 0, 0, 0, 0, 69, 70, 0, 0, 0, 0, 0, - 71, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 79, 0, 0, 0, 0, 47, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, - 0, 80, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, - 63, 0, 0, 81, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 83, 0, 0, 0, 0, 0, 0, 19, 84, 0, 62, 0, 0, 0, - 0, 49, 1, 85, 0, 0, 0, 0, 1, 52, 15, 86, 36, 10, 21, 1, - 1, 1, 1, 41, 1, 21, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 55, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 19, 10, - 1, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 89, 0, 0, - 88, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, - 90, 9, 12, 4, 91, 8, 92, 47, 0, 58, 50, 0, 21, 1, 21, 93, - 94, 1, 1, 1, 1, 1, 1, 1, 1, 95, 96, 97, 0, 0, 0, 0, - 98, 1, 99, 58, 81,100,101, 4, 58, 0, 0, 0, 0, 0, 0, 19, - 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 0,102,103, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,104, 0, 0, 0, 0, 19, 0, 1, 1, 50, 0, 0, 0, 0, - 0, 0, 0, 38, 0, 0, 0, 0, 50, 0, 0, 0, 0, 63, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 1, 1, 1, 1, - 50, 0, 0, 0, 0, 0,105, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,106,107, 58, 38, 81, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, - 0, 0, 0,108, 1, 14, 4, 12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 38, 90, 0, 0, 0, 0,109, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,110, 61, 0,111, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 0, 19, 58, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 51, 0,112, 14, 52, - 84, 0, 0, 0,113, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 0, 0, 61, 0, 0, 0, 0, 0, 0,114, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 61, 62, 0, 0, 62, 0, 89, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 0, 0, 0, 0,115, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 55, 0, 38, 1, 58, - 1, 58, 0, 0, 0, 0, 0, 88, 62, 0, 0, 0, 63, 89, 0, 0, - 0, 0, 0, 59,116, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, 0, 61, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 78, 0, 0, 0, - 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 56, 0, 89, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 61, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 92, 0, 0, 0, 0, 0, 0, - 1, 90, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,118, 0,119,120,121,122, 0,105, 4,123, 49, 23, 0, - 0, 0, 0, 0, 0, 0, 38, 50, 0, 0, 0, 0, 38, 58, 0, 0, - 0, 0, 0, 0, 1, 90, 1, 1, 1, 1, 39, 1, 48,106, 90, 0, - 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 59, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,124, - 0, 0, 0, 0, 0, 0, 0,113, 0, 0, 0, 0, 19, 59, 0, 38, - 0, 81, 0, 0, 0, 0, 0, 0, 4,123, 0, 0, 0, 1,125, 0, - 0, 0, 0, 0, 0, 0, 0, 0,230,230,230,230,230,232,220,220, - 220,220,232,216,220,220,220,220,220,202,202,220,220,220,220,202, - 202,220,220,220, 1, 1, 1, 1, 1,220,220,220,220,230,230,230, - 230,240,230,220,220,220,230,230,230,220,220, 0,230,230,230,220, - 220,220,220,230,232,220,220,230,233,234,234,233,234,234,233,230, - 0, 0, 0,230, 0,220,230,230,230,230,220,230,230,230,222,220, - 230,230,220,220,230,222,228,230, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 19, 20, 21, 22, 0, 23, 0, 24, 25, 0,230,220, 0, 18, - 30, 31, 32, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34,230, - 230,220,220,230,220,230,230,220, 35, 0, 0, 0, 0, 0,230,230, - 230, 0, 0,230,230, 0,220,230,230,220, 0, 0, 0, 36, 0, 0, - 230,220,230,230,220,220,230,220,220,230,220,230,220,230,230, 0, - 0,220, 0, 0,230,230, 0,230, 0,230,230,230,230,230, 0, 0, - 0,220,220,220,230,220,220,220,230,230, 0,220, 27, 28, 29,230, - 7, 0, 0, 0, 0, 9, 0, 0, 0,230,220,230,230, 0, 0, 0, - 0, 0,230, 0, 0, 84, 91, 0, 0, 0, 0, 9, 9, 0, 0, 0, - 0, 0, 9, 0,103,103, 9, 0,107,107,107,107,118,118, 9, 0, - 122,122,122,122,220,220, 0, 0, 0,220, 0,220, 0,216, 0, 0, - 0,129,130, 0,132, 0, 0, 0, 0, 0,130,130,130,130, 0, 0, - 130, 0,230,230, 9, 0,230,230, 0, 0,220, 0, 0, 0, 0, 7, - 0, 9, 9, 0, 9, 9, 0, 0, 0,230, 0, 0, 0,228, 0, 0, - 0,222,230,220,220, 0, 0, 0,230, 0, 0,220,230,220, 0,220, - 230,230,230,234, 0, 0, 9, 9, 0, 0, 7, 0,230,230,230, 0, - 230, 0, 1, 1, 1, 0, 0, 0,230,234,214,220,202,230,230,230, - 230,230,232,228,228,220,218,230,233,220,230,220,230,230, 1, 1, - 1, 1, 1,230, 0, 1, 1,230,220,230, 1, 1, 0, 0,218,228, - 232,222,224,224, 0, 8, 8, 0, 0, 0, 0,220,230, 0,230,230, - 220, 0, 0,230, 0, 0, 26, 0, 0,220, 0,230,230, 1,220, 0, - 0,230,220, 0, 0, 0,220,220, 0, 0,230,220, 0, 9, 7, 0, - 0, 7, 9, 0, 0, 0, 9, 7, 6, 6, 0, 0, 0, 0, 1, 0, - 0,216,216, 1, 1, 1, 0, 0, 0,226,216,216,216,216,216, 0, - 220,220,220, 0,232,232,220,230,230,230, 7, 0, 16, 17, 17, 17, - 17, 17, 17, 33, 17, 17, 17, 19, 17, 17, 17, 17, 20,101, 17,113, - 129,169, 17, 27, 28, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,237, 0, 1, 2, 2, - 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 6, 7, 8, - 9, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, 22, 0, 0, 0, 0, - 23, 24, 25, 26, 0, 27, 0, 28, 29, 30, 31, 32, 0, 0, 0, 0, - 0, 0, 0, 33, 34, 35, 36, 0, 0, 0, 0, 0, 37, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 38, 39, 0, 0, 0, 0, 1, 2, 40, 41, - 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 5, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, - 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 10, 0, 0, 10, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, - 0, 0, 0, 0, 0, 0, 11, 12, 0, 13, 0, 14, 15, 16, 0, 0, - 0, 0, 0, 1, 17, 18, 0, 19, 7, 1, 0, 0, 0, 20, 20, 7, - 20, 20, 20, 20, 20, 20, 20, 8, 21, 0, 22, 0, 7, 23, 24, 0, - 20, 20, 25, 0, 0, 0, 26, 27, 1, 7, 20, 20, 20, 20, 20, 1, - 28, 29, 30, 31, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 10, 0, - 0, 0, 0, 0, 0, 0, 20, 20, 20, 1, 0, 0, 8, 21, 32, 4, - 0, 10, 0, 33, 7, 20, 20, 20, 0, 0, 0, 0, 8, 34, 34, 35, - 36, 34, 37, 0, 38, 1, 20, 20, 0, 0, 39, 0, 1, 1, 0, 8, - 21, 1, 20, 0, 0, 0, 1, 0, 0, 40, 1, 1, 0, 0, 8, 21, - 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 26, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 21, 7, 20, 41, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 21, 0, 42, 43, 44, 0, 45, 0, 8, 21, 0, 0, 0, 0, 0, - 0, 0, 0, 46, 7, 1, 10, 1, 0, 0, 0, 1, 20, 20, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 34, 9, 0, 0, 20, 20, - 1, 20, 20, 0, 0, 0, 0, 0, 0, 0, 26, 21, 0, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 47, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 11, 11, 11, 12, 13, - 13, 13, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 13, 13, 13, - 24, 25, 26, 26, 26, 27, 13, 13, 13, 28, 29, 30, 13, 31, 32, 33, - 34, 35, 36, 37, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 38, 7, 7, 39, 7, 40, 7, 7, - 7, 41, 13, 42, 7, 7, 43, 7, 7, 7, 44, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 45, 0, 0, 1, 2, 2, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 32, 33, 34, 35, 36, 37, 37, - 37, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 2, 2, 53, 54, 55, 56, 57, 58, 59, 59, 59, 59, 60, 59, - 59, 59, 59, 59, 59, 59, 61, 61, 59, 59, 59, 59, 62, 59, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 59, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 78, 69, 69, 69, 69, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, - 81, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 69, 69, 96, 97, 98, 99, 99, 99, - 100,101,102,103,104,105,106,107,108,109, 95,110,111,112,113,114, - 115,116,117,117,118,119,120,121,122,123,124,125,126,127,128,129, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,102, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, + 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, + 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, + 11, 11, 11, 11, 11, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, + 13, 13, 13, 13, 13, 13, 13, 13, 16, 16, 16, 16, 16, 16, 16, 16, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 14, + 1, 1, 1, 1, 14, 1, 1, 1, 18, 18, 18, 18, 18, 18, 18, 18, + 1, 5, 0, 11, 11, 11, 11, 11, 1, 1, 1, 1, 1, 1, 14, 0, + 1, 1, 1, 1, 14, 0, 0, 0, 6, 6, 6, 6, 7, 7, 7, 7, + 1, 1, 1, 1, 1, 14, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 14, 0, 0, 0, 0, + 1, 1, 1, 14, 1, 1, 1, 14, 3, 3, 3, 3, 3, 3, 0, 0, + 28, 28, 28, 28, 28, 28, 28, 28, 11, 11, 11, 11, 11, 1, 1, 1, + 14, 17, 1, 1, 1, 1, 1, 1, 14, 0, 0, 0, 0, 0, 0, 0, + 14, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 0, 0, 0, + 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 29, 0, + 11, 11, 11, 11, 11, 11, 11, 11, 7, 7, 7, 7, 7, 6, 6, 6, + 0, 0, 0, 11, 11, 11, 11, 11, 17, 1, 1, 1, 1, 1, 1, 1, + 11, 11, 11, 11, 11, 10, 10, 10, 1, 1, 1, 0, 0, 0, 0, 0, + 5, 46, 1, 1, 1, 1, 1, 1, 6, 6, 6, 6, 41, 41, 41, 41, + 3, 3, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 0, 0, 12, + 1, 1, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, + 49, 10, 10, 10, 10, 10, 10, 10, 7, 6, 6, 6, 6, 6, 6, 6, + 44, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, + 3, 3, 3, 3, 0, 0, 0, 0, 11, 11, 11, 11, 11, 12, 9, 77, + 88, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,102,103,104, + 89, 6, 6, 6, 6, 6, 6, 6, 22, 22, 22, 22, 22, 22, 22, 22, + 26, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 5, 5, 5, 5, 5, + 5, 20, 1, 1, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, + 11, 11, 11, 11, 11, 12, 12, 12, 1, 1, 1, 1, 14, 1, 1, 0, + 14, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 14, 1, 1, 1, 1, + 10, 10, 10, 10, 10, 10, 51, 0,115, 1, 1, 1, 1, 1, 1, 1, + 5, 5, 5, 5, 5, 5, 5, 0, 1, 1, 1, 1, 13, 13, 13, 12, + 6, 6, 6, 0, 7, 7, 7, 0, 30, 30, 30, 30, 30, 30, 30, 30, + 3, 3, 3, 3, 3, 29, 0, 0, 3, 3, 3, 3, 3, 3, 3, 29, + 10, 10, 10, 10, 10, 3, 3, 3, 75, 10, 10, 10, 10, 10, 10, 10, + 3, 3, 3, 29, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, + 7, 7, 7, 7, 7, 32, 7, 7, 0, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 51, 0, 0, 0, 1, 1, 1, 1, 1, 1, 86, 10, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 15, 19, + 1, 1, 1, 1, 1, 1, 1, 34, 1, 1, 1, 1, 1, 1, 1, 5, + 15, 15, 15, 15, 15, 15, 15, 15, 1, 14, 0, 0, 0, 0, 0, 0, + 5, 5, 5, 23, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, + 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, + 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, + 3, 3, 3, 3, 29, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 87, 12,100, 12, 27,101, 76, 12, 6, 6, 6, 6, 6,105,106,135, + 87, 30, 30, 66,107,136,137,108, 50, 10, 89, 12,138,139, 10, 78, + 7, 7, 7, 59, 7, 7, 7, 8, 6, 6, 6, 60, 6, 6, 6, 6, + 8, 8, 8, 8, 21, 21, 21, 21, 21, 21, 21, 21, 6, 8, 8, 8, + 8, 8, 8, 8, 7, 21, 21, 6, 21, 8, 8, 7, 21, 7, 6, 7, + 7, 21, 8, 7, 8, 6, 7, 21, 8, 8, 8, 7, 21, 6, 8, 7, + 21, 7, 21, 21, 8, 67, 8, 6, 1, 1,109, 21,110,109, 21, 21, + 21, 21, 21, 21, 21, 21, 6, 8, 21,110, 8, 7, 8, 8, 8, 8, + 8, 8, 6, 6, 6, 7, 21, 8, 21, 21, 7, 8, 8, 8, 8, 8, + 6, 6, 1, 6, 6, 6, 6, 6, 13, 22, 22, 13, 13, 13, 13, 13, + 13, 22, 22, 22, 22, 22, 22, 22, 13, 13, 68, 22, 22, 22, 68, 68, + 8, 8, 68, 8, 0, 69, 6, 88, 0, 0, 22,140, 7, 32, 32, 7, + 21, 7, 7, 7, 7, 7, 7, 7, 7, 39, 7, 7, 7, 7, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 21, 6, 7, 8, 6, 8, 8, 8, 8, + 6, 6, 8, 90, 21, 8, 21, 7, 8, 43, 5, 5, 79, 8, 8, 8, + 7, 21, 21, 21, 21, 21, 21, 6, 39, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 32, 54, 12, 12, 12, 6, 6, 6, 6,111,141, 44, 70, + 5, 5, 5, 5, 5, 5, 5,142, 71, 36, 5, 71, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 14, 0, 17, 1, 40, 33, 0, 0, 0, 0, 0, + 18, 18, 18, 9, 77, 80, 12, 3, 5, 5, 5, 5, 5, 36,143, 12, + 52, 1, 1, 1, 1, 24, 5, 5, 11, 11, 11, 11, 11, 12, 12, 1, + 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 5, 5, 5,144, 43, + 5, 5, 81, 72, 55, 5, 5, 1, 11, 11, 11, 11, 11, 1, 56, 82, + 12, 12, 12, 12, 12, 12, 12, 73, 24, 1, 1, 1, 1, 1, 1, 1, + 5, 5, 5, 5, 5, 23, 17, 1, 25, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 24, 5, 5, 5, 5, 13, 66, 12, 61, 26, 30, + 1, 1, 1, 5, 5, 72, 5, 5, 5, 5, 72, 5, 72, 5, 5, 0, + 12, 12, 12, 12, 12, 12, 12, 33, 1, 1, 1, 1, 24, 5, 0, 33, + 1, 1, 1, 1,145, 1, 1, 1, 18, 0, 0, 26, 5, 5, 5, 5, + 1, 1, 1, 1, 45, 5, 5, 5, 5, 91, 5, 5, 5, 5, 5, 5, + 1, 1, 1, 1, 1, 20, 25, 15, 19, 5, 5, 5, 20, 15, 19, 15, + 24, 5, 5, 5, 1, 1, 1, 1, 1, 5, 12, 11, 11, 11, 11, 11, + 62, 1, 1, 1, 1, 1, 1, 1, 24, 15, 17, 1, 1, 1, 14, 17, + 14, 14, 0, 1, 1, 0, 25, 15, 19, 5, 23, 35, 37, 35, 19, 14, + 0, 0, 0, 35, 0, 0, 1, 17, 1, 30, 10, 10, 10, 70, 40, 23, + 26, 20, 17, 1, 1, 14, 0, 17, 14, 1, 17, 14, 1, 0, 23, 15, + 19, 23, 0, 26, 23, 26, 5, 0, 26, 0, 0, 0, 17, 1, 14, 14, + 5, 1, 24, 33, 0, 0, 0, 0, 26, 20, 17, 1, 1, 1, 1, 17, + 14, 1, 17, 1, 1, 0, 25, 15, 19, 5, 5, 26, 20, 35, 19, 0, + 80, 0, 0, 0, 17, 5, 5, 5, 26, 15, 17, 1, 1, 1, 14, 17, + 14, 1, 17, 1, 1, 0, 25, 19, 19, 5, 23, 35, 37, 35, 19, 0, + 0, 0, 26, 20, 0, 0, 1, 17, 82, 10, 10, 10, 0, 0, 0, 0, + 0, 25, 17, 1, 1, 14, 0, 1, 14, 1, 1, 0, 17, 14, 14, 1, + 0, 17, 14, 0, 1, 14, 0, 1, 1, 1, 1, 1, 1, 0, 0, 15, + 20, 37, 0, 15, 37, 15, 19, 0, 14, 0, 0, 35, 0, 0, 0, 0, + 10, 63, 3, 3, 70, 29, 0, 0, 20, 15, 25, 1, 1, 1, 14, 1, + 1, 1, 1, 1, 1, 0, 25, 5, 20, 15, 37, 5, 23, 5, 5, 0, + 0, 0, 26, 23, 1, 14, 1, 0, 0, 0, 0, 38, 10, 10, 10, 63, + 24, 15, 53, 1, 1, 1, 14, 1, 1, 1, 17, 1, 1, 0, 25, 19, + 15, 15, 37, 20, 37, 15, 5, 0, 0, 0, 35, 37, 0, 0, 1, 14, + 17, 34, 0, 0, 0, 0, 0, 0, 5, 15, 1, 1, 1, 1, 14, 1, + 1, 1, 1, 1, 1, 24, 25, 15, 19, 5, 23, 15, 37, 15, 19, 56, + 0, 0, 1, 34, 10, 10, 10,112, 10, 10, 10, 10, 63, 1, 1, 1, + 26, 15, 17, 1, 1, 1, 1, 1, 1, 1, 1, 14, 0, 1, 1, 1, + 1, 17, 1, 1, 1, 1, 17, 0, 1, 1, 1, 14, 0, 23, 0, 35, + 15, 5, 23, 23, 15, 15, 15, 15, 0, 15, 33, 0, 0, 0, 0, 0, + 24, 1, 5, 5, 5, 23, 0,113, 1, 1, 1, 72, 5, 5, 5, 36, + 11, 11, 11, 11, 11, 12, 0, 0, 17, 14, 14, 1, 1, 14, 1, 1, + 1, 1, 17, 17, 1, 1, 1, 1, 24, 1, 5, 5, 5, 5, 25, 0, + 1, 1, 14, 61, 5, 5, 5, 23, 11, 11, 11, 11, 11, 0, 1, 1, + 56, 3, 12, 12, 12, 12, 12, 12, 12, 57, 57, 3, 5, 3, 3, 3, + 10, 10, 43, 43, 43, 27, 27, 15, 1, 1, 1, 1, 17, 1, 1, 1, + 26, 5, 5, 5, 5, 5, 5, 20, 5, 5, 36, 5, 1, 1, 24, 5, + 5, 5, 5, 5, 26, 5, 5, 5, 5, 5, 5, 5, 5, 5, 23, 3, + 3, 3, 3, 55, 3, 3, 29, 3, 12, 12, 57, 3, 66, 33, 0, 0, + 1, 1, 1, 1, 1, 34, 19, 5, 20, 5, 5, 5, 19, 20, 19, 25, + 1, 1, 1, 15, 5, 1, 1, 5, 25, 15, 46, 34, 15, 15, 15, 1, + 24, 5, 25, 1, 1, 1, 1, 1, 1, 20, 19, 20, 15, 15, 19, 34, + 11, 11, 11, 11, 11, 15, 19, 3, 7, 7, 7, 39, 0, 0, 39, 0, + 6, 6, 6, 6, 6,111, 69, 6, 1, 1, 1, 14, 14, 1, 1, 0, + 14, 1, 1, 0, 1, 1, 1, 14, 1, 1, 1, 1, 1, 14, 26, 5, + 12, 12, 12, 12,114, 10, 10, 10, 7, 7, 7, 0, 6, 6, 6, 0, + 1, 1, 1, 1, 1, 1, 56, 53,146, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1,147,116, 0, 1, 1, 1, 1, 1, 40, 12, 16, + 148, 1, 1, 1, 14, 0, 0, 0, 1, 5, 20, 0, 0, 0, 0, 17, + 1, 5, 83, 33, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 14, 1, 14, 5, 0, 0, 0, 0, 0, 0, + 1, 1, 5, 19, 5, 5, 5, 15, 15, 15, 15, 20, 19, 5, 5, 5, + 5, 5, 12, 62, 12, 80, 24, 0, 10, 10, 10, 10, 10, 0, 0, 0, + 12, 12, 12, 92, 12, 71, 5, 91, 1, 45, 1, 1, 1, 1, 1, 1, + 1, 1, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 24, 14, 0, 0, + 5, 20, 15, 19, 20, 15, 0, 0, 15, 20, 15, 15, 19, 5, 0, 0, + 29, 0, 12, 11, 11, 11, 11, 11, 1, 1, 14, 0, 0, 0, 0, 0, + 11, 11, 11, 11, 11, 51, 0, 3, 1, 1, 1, 24, 20, 19, 0, 12, + 1, 1, 34, 20, 5, 5, 5, 23, 20, 20, 19, 5, 5, 5, 20, 15, + 15, 19, 5, 5, 5, 5, 23, 26, 12, 12, 12, 62, 12, 12, 12, 0, + 5, 5, 5, 5, 5, 5, 5, 93, 5, 5, 5, 5, 5, 5, 0, 0, + 5, 5, 46, 1, 1, 1, 1, 1, 1, 1, 20, 5, 5, 20, 20, 15, + 15, 20, 46, 1, 1, 1, 14, 12, 57, 3, 3, 3, 3, 43, 5, 5, + 5, 5, 3, 3, 3, 3, 66, 12, 34, 5, 5, 15, 5, 19, 5, 1, + 1, 1, 1, 20, 5, 15, 19, 19, 5, 15, 0, 0, 0, 0, 12, 12, + 1, 1, 15, 15, 15, 15, 5, 5, 5, 5, 15, 5, 0, 38, 12, 12, + 11, 11, 11, 11, 11, 0, 17, 1, 6, 6, 6, 6, 21, 47, 0, 0, + 7, 7, 7, 7, 7, 32, 39, 7, 12, 12, 12, 12, 0, 0, 0, 0, + 5, 36, 5, 5, 5, 5, 5, 5, 20, 5, 5, 5, 25, 1, 24, 1, + 1, 1, 25, 34, 5, 14, 0, 0, 6, 6, 6, 6, 6, 6, 13, 13, + 13, 13, 13, 13, 13, 69, 6, 6, 6, 6, 6, 6, 69, 6, 6, 6, + 6, 6, 6, 6, 6,117, 13, 13, 8, 8, 8, 6, 6, 6, 6, 8, + 6, 6, 6, 6, 39, 39, 39, 39, 6, 6, 6, 6, 6, 6, 6, 0, + 6, 6, 47, 6, 7, 7, 94,118, 22, 6, 47, 6, 7, 7, 94, 22, + 6, 6, 0, 6, 7, 7,149, 22, 6, 6, 6, 6, 7, 7,150, 22, + 0, 6, 47, 6, 7, 7, 94,151, 74, 74, 74, 74, 74,152, 18, 18, + 84, 84, 84, 12, 58,119, 58,119, 12, 12, 12, 12,153, 18, 18,154, + 12, 12, 12, 12,120,121, 12,122,123, 12, 64, 65, 12, 12, 12, 12, + 12, 77,123, 12, 12, 12, 12,155, 18, 18,156, 18, 18, 18, 18, 18, + 157, 0, 10, 10, 10, 9, 64,158, 10, 10, 10, 10, 10, 9, 64,116, + 13, 13, 13, 13, 13, 13, 61, 0, 30, 0, 0, 0, 0, 0, 0, 0, + 5, 5, 5, 5, 5, 5,159, 79, 93, 79, 93, 5, 5, 5, 5, 5, + 23, 0, 0, 0, 0, 0, 0, 0, 3, 85, 3, 95, 3, 21, 7, 6, + 7, 8, 95, 3, 90, 7, 7, 3, 3, 3, 85, 85, 85, 7, 7,160, + 7, 7, 67, 1,124, 3, 6, 7, 9, 9, 90, 6, 6, 50, 3,125, + 16,161,162, 16,126, 3, 0, 0, 9, 9, 48, 3, 3, 9, 3, 3, + 48, 50, 3, 48, 3, 3, 3, 48, 3, 3, 3, 3, 3, 3, 3, 9, + 3, 48, 48, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, + 3, 3, 3, 3, 27, 27, 3, 3, 9, 3, 3, 3,163,164, 3, 3, + 3, 3, 3, 3, 3, 3, 48, 3, 3, 3, 3, 3, 3, 50, 9, 9, + 9, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 9, 9, + 9, 3, 3, 3, 3, 3, 3, 3, 10, 10, 10, 10, 10, 10, 3, 3, + 3, 3, 3, 3, 3, 10, 10, 10, 3, 3, 3, 50, 3, 3, 3, 3, + 50, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, + 3, 3, 3, 3, 3, 3, 3, 50, 3, 3, 3, 3, 27, 27, 27, 27, + 27, 27, 27, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, + 9, 9, 64,127, 9, 9, 9, 9, 9, 9, 9, 27, 27, 27, 27, 27, + 9, 64, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,127, 9, 9, 9, + 9, 9, 9, 9, 27, 27, 9, 9, 9, 9, 9, 9, 9, 9, 27, 9, + 9, 9, 48, 50, 9, 9, 48, 3, 3, 3, 0, 3, 3, 3, 3, 3, + 8, 7, 8, 21, 21, 21, 21, 7, 8, 8, 21, 6, 6, 6, 13, 7, + 8, 8,125, 3, 3, 95, 21,165, 5, 8, 0, 0, 38, 12,114, 12, + 6, 6, 6, 42, 0, 0, 42, 0, 1, 1, 1, 1, 0, 0, 0, 54, + 33, 0, 0, 0, 0, 0, 0, 26, 12, 58, 58, 12,120,121, 58, 12, + 12, 12, 12, 76, 12, 92, 58, 12, 58, 27, 27, 27, 27, 12, 12, 62, + 12, 12, 12, 12, 12, 84, 12, 12, 92,166, 12, 12, 12, 12, 12, 12, + 3, 12, 96, 31, 31, 31,167, 0, 3, 3, 3, 3, 3, 44, 3, 3, + 87, 12,168,128, 27, 27, 27, 27, 27, 3, 27, 27, 27, 27,129,169, + 170, 16, 16, 16, 16, 5, 5, 15,130, 13, 13, 3, 16,171, 40, 3, + 1, 1, 1, 14, 26,172,131, 52, 1, 1, 1, 1, 1, 40, 13, 52, + 0, 0, 17, 1, 1, 1, 1, 1, 3, 10, 10, 3, 3, 3, 3, 3, + 3, 3, 3, 0, 0, 0, 0, 44, 3, 3, 3, 3, 10, 10, 10, 10, + 1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,132, 12, + 11, 11, 11, 11, 11, 1, 0, 0, 8, 8, 8, 8, 8, 8, 8, 24, + 79,173, 5, 5, 5, 5, 5, 62, 8, 8, 8, 8, 8, 8, 13, 5, + 1, 1, 1, 16, 16, 16, 16, 16, 5, 12, 12, 12, 0, 0, 0, 0, + 22, 22, 22,131, 13, 13, 13, 13, 22, 8, 8, 8, 8, 8, 8, 8, + 6, 8, 8, 8, 8, 8, 8, 8, 69, 6, 6, 6, 21, 21, 21, 8, + 8, 8, 8, 8, 68,174, 21, 67, 8, 8, 6, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 7, 7, 8, 7, 7, 8, 8, 8, 8, 8, 8, + 8, 8, 7, 7, 21, 21, 8, 8, 8, 8, 8, 8, 8, 8, 32, 0, + 54, 13,175, 67, 13, 67, 1, 1, 1, 25, 1, 25, 1, 24, 1, 1, + 1, 34, 19, 20, 3, 3, 23, 0, 10, 10, 10, 3, 97, 0, 0, 0, + 1, 1, 12, 12, 0, 0, 0, 0, 15, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 5, 0, 0, 0, 0, 12, + 5, 1, 1, 1, 12, 53, 53, 24, 1, 1, 1, 5, 5, 5, 5, 12, + 1, 1, 1, 24, 5, 5, 5, 5, 5, 15, 0, 0, 0, 0, 0, 38, + 1, 24, 15, 5, 5, 15, 5, 15, 83, 12, 12, 12, 12, 12, 12, 54, + 1, 1, 24, 52, 1, 1, 1, 1, 11, 11, 11, 11, 11, 1, 1, 14, + 1, 1, 1, 1, 24, 5, 5, 20, 19, 20, 19, 23, 0, 0, 0, 0, + 1, 24, 1, 1, 1, 1, 20, 0, 11, 11, 11, 11, 11, 0, 12, 12, + 52, 1, 1, 56, 3, 34, 20, 1, 25, 5, 25, 24, 25, 1, 1, 5, + 24, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 45, 12, + 1, 1, 1, 1, 1, 34, 5, 15, 12, 45,176, 23, 0, 0, 0, 0, + 17, 1, 1, 14, 17, 1, 1, 14, 17, 1, 1, 14, 0, 0, 0, 0, + 6, 6, 6, 6, 6,118, 13, 13, 6, 6, 6, 6,117, 22, 0, 0, + 1, 34, 19, 15, 20, 83, 19, 0, 1, 1, 1, 14, 0, 17, 1, 1, + 6, 6, 6, 47, 0, 0, 0, 0, 0, 42, 6, 6, 0, 0, 17, 25, + 1, 1, 1, 1,177, 1, 1, 1, 1, 1, 1, 14, 1, 1, 14, 14, + 1, 17, 14, 1, 1, 1, 1, 1, 1, 22, 22, 22, 22, 22, 22, 22, + 22,107, 3, 3, 3, 3, 3, 3, 3, 82, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 31, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 97, 3, + 12, 12, 12, 96, 65, 0, 0, 0, 76,178,179, 31, 31, 31, 31, 31, + 31, 31, 65, 96, 65, 12,122,180, 12, 33, 12, 12,129, 31, 31, 65, + 12,181, 9, 98, 80, 12, 0, 0, 1, 1, 14, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 14, 73, 38, 12,100, 12, 27,101, 76, 12, + 6, 6, 6, 6, 6,105,106, 64, 65, 27, 12, 1, 1, 1, 1, 1, + 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, + 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 14, 0, + 30,182, 70,183, 50, 9, 48, 29, 0, 0, 0, 0, 73, 18, 3, 0, + 1, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, 14, 1, 17, + 12, 33, 0, 49, 10, 10, 10, 10, 10, 10, 0, 44, 3, 3, 3, 3, + 16, 16,126, 10, 63, 3, 3, 3, 3, 3, 3, 3, 3, 10, 3, 29, + 3, 3, 3, 3, 3, 3, 43, 0,133, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 0, 0, 10, 10, 0, 0, 0, 0, 17, 1, + 128, 1, 1, 1, 1, 99, 0, 0, 1, 1, 1, 5, 5, 23, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 38, 1, 1, 0, 0, 1, 1, 1, 1, + 184, 16, 16, 0, 0, 0, 0, 0, 7, 7, 7, 7, 6, 6, 6, 6, + 7, 7, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 38, 7, 32, 7, 42, 6, 6, 6, 6, + 6, 42, 6, 6, 6, 6, 6, 6, 6, 42, 6, 6, 6, 42, 47, 0, + 13, 13, 13, 54, 13, 13, 13, 13, 61, 13, 13, 13, 13, 61, 0, 0, + 1, 1, 1, 0, 14, 1, 1, 1, 1, 1, 1, 17, 14, 0, 14, 17, + 1, 1, 1, 38, 10, 10, 10, 10, 1, 1, 1, 56, 75, 10, 10, 10, + 0, 0, 0, 49, 10, 10, 10, 10, 1, 14, 1, 0, 0, 49, 10, 10, + 1, 1, 1, 10, 10, 10, 0, 38, 1, 1, 1, 1, 1, 0, 0, 38, + 1, 1, 1, 1, 0, 0, 10, 1, 24, 5, 26, 23, 0, 0, 5, 5, + 1, 1, 17, 1, 17, 1, 1, 1, 1, 1, 1, 0, 5, 23, 0, 26, + 12, 12, 12, 12, 33, 0, 0, 0, 1, 1, 1, 1, 1, 1, 86, 78, + 1, 1, 1, 1, 82, 1, 1, 1, 1, 1, 24, 23, 0, 49, 10, 10, + 12, 12, 12, 33, 0, 0, 0, 0, 1, 1, 1, 0, 38, 12, 12, 12, + 1, 1, 1, 0, 10, 10, 10, 10, 1, 14, 0, 0, 10, 10, 10, 10, + 1, 0, 0, 0, 38, 12, 33, 0, 0, 0, 0, 0, 49, 10, 10, 10, + 7, 32, 0, 0, 0, 0, 0, 0, 6, 47, 0, 0, 0, 10, 10, 10, + 1, 1, 5, 5, 0, 0, 0, 0, 11, 11, 11, 11, 11, 1, 1, 52, + 7, 7, 7, 0, 26, 5, 5,130, 6, 6, 6, 0, 0, 0, 0, 9, + 10, 10, 10, 10, 10, 10, 10, 51, 1, 1, 1, 1, 1, 26,185, 0, + 0, 1, 45, 1, 0, 0, 0, 0, 57, 3, 3, 3, 29, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 5, 5, 10, 10, 10,112, 0, 0, 0, 0, + 133, 10, 78, 12, 12, 0, 0, 0, 1, 5, 5, 12, 12, 0, 0, 0, + 1, 1, 86, 10, 10, 10, 0, 0, 19, 46, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 36, 12, 12, 12, 0, + 10, 10, 10, 11, 11, 11, 11, 11, 25, 24, 25, 0, 0, 0, 0, 26, + 15, 19, 5, 20, 19, 36,186, 12, 12, 23, 0, 0, 0, 0, 73, 0, + 5, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 5, 5, 19, 5, + 5, 5, 23, 11, 11, 11, 11, 11, 12, 12, 34, 46, 0, 0, 0, 0, + 1, 24, 12, 14, 0, 0, 0, 0, 1, 34, 15, 5, 5, 5, 5, 20, + 46, 1, 40, 12, 71, 5, 36, 19, 11, 11, 11, 11, 11, 40, 40, 12, + 10, 10, 51, 0, 0, 0, 0, 0, 5, 15, 20, 5, 12, 12, 12, 25, + 24, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 14, 14, 1, 1, 17, + 1, 1, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 40, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 24, 15, 19, 5, 5, 5, 23, 0, 0, + 5, 15, 17, 1, 1, 1, 14, 17, 14, 1, 17, 1, 1, 26, 25, 15, + 20, 15, 37, 35, 37, 35, 15, 0, 14, 0, 0, 35, 0, 0, 17, 1, + 1, 15, 0, 5, 5, 5, 23, 0, 5, 5, 23, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 17, 0, 14, 1, 1, 1, 17, 15, 19, 5, 5, + 23, 37, 35, 35, 15, 37, 15, 20, 25, 25, 12, 38, 33, 0, 0, 0, + 26, 23, 0, 0, 0, 0, 0, 0, 1, 1, 34, 15, 5, 5, 5, 5, + 15, 5, 20, 25, 1, 40, 12, 12, 11, 11, 11, 11, 11, 12, 38, 25, + 15, 19, 5, 5, 20, 20, 15, 19, 20, 5, 1, 53, 0, 0, 0, 0, + 15, 5, 5, 0, 15, 15, 5, 19, 36, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 1, 1, 5, 0, 15, 19, 5, 5, 5, 20, 19, 19, + 36, 12, 14, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 33, 0, + 1, 1, 1, 1, 1, 24, 19, 15, 5, 5, 5, 19, 40, 0, 0, 0, + 11, 11, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 14, 26, 19, + 15, 5, 5, 19, 5, 5, 0, 0, 11, 11, 11, 11, 11, 10, 12, 57, + 5, 5, 5, 5, 19, 36, 0, 0, 10, 51, 0, 0, 0, 0, 0, 17, + 1, 1, 1, 14, 17, 0, 1, 1, 1, 1, 17, 14, 1, 1, 1, 1, + 15, 15, 15, 35, 37, 26, 20, 25, 46, 19, 12, 33, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 1, 1, 1, 34, 15, 5, 5, 0, 5, 15, 15, + 25, 53, 37, 0, 0, 0, 0, 0, 24, 5, 5, 5, 5, 25, 1, 1, + 1, 24, 5, 5, 20, 24, 5, 36, 12, 12, 12, 71, 0, 0, 0, 0, + 24, 5, 5, 20, 19, 5, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, + 5, 5, 5, 20, 5, 12, 53, 12, 12, 33, 0, 0, 0, 0, 0, 0, + 12, 12, 12, 12, 12, 0, 0, 0, 20, 5, 20, 20, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 23, 5, 5, 5, 19, + 40, 12, 12, 0, 0, 0, 0, 0, 12, 1, 1, 1, 1, 1, 1, 1, + 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 35, 5, 5, 5, + 20, 5, 19, 23, 0, 0, 0, 0, 1, 1, 1, 14, 1, 17, 1, 1, + 24, 5, 5, 23, 0, 23, 5, 26, 5, 5, 5, 24, 0, 0, 0, 0, + 1, 1, 1, 17, 14, 1, 1, 1, 1, 1, 1, 1, 1, 15, 15, 37, + 5, 35, 19, 19, 14, 0, 0, 0, 1, 1, 1, 1, 45, 1, 0, 0, + 1, 24, 20, 83, 33, 0, 0, 0, 5, 34, 1, 1, 1, 1, 1, 1, + 1, 1, 15, 5, 5, 23, 0, 15, 20, 36, 12, 12, 12, 12, 12, 12, + 11, 11, 11, 11, 11, 23, 0, 0, 10, 10, 63, 3, 3, 3, 70, 30, + 97, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 38, + 16, 16, 16, 16, 16, 16, 16, 99, 12, 12, 33, 0, 0, 0, 0, 0, + 40, 33, 0, 0, 0, 0, 0, 0, 25, 1, 1, 24, 5, 5, 5, 5, + 5, 5, 5, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 15, 19, 5, + 5, 5, 36, 0, 0, 0, 0, 0, 5, 5, 5, 36, 12, 12, 3, 3, + 13, 13, 57, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 49, 10, 10, + 10, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 17, 1, + 13, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45,132, 12, + 10, 10, 10, 78, 12, 33, 0, 0, 7, 7, 7, 7, 32, 42, 6, 6, + 6, 6, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 14, 0, 26, + 34, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 26, + 5, 81, 13, 13, 13, 13, 13, 13, 13, 62, 23, 0, 0, 0, 0, 0, + 15, 13, 16, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 13, 13, 54, 13, 13, 13, 54, 61, 0, 14, 0, 0, 0, 0, 0, 0, + 1, 14, 17, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, 43, 36, 18, 18, 0, 0, 0, 0, 0, 0, + 11, 11, 11, 11, 11, 3, 29, 0, 3, 3, 0, 0, 0, 3, 3, 3, + 98, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 29, 44, 3, 3, 3, + 3, 3,134, 19, 5, 3,134, 15, 15,187, 18, 18, 18, 91, 5, 5, + 5, 55, 43, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 5, 5, 3, + 3, 5, 55, 0, 0, 0, 0, 0, 6, 6, 47, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 32, 7, 0, 32, 39, 32, 39, 7, 32, 7, + 7, 7, 7, 6, 6, 42, 42, 6, 6, 6, 42, 6, 6, 6, 6, 6, + 6, 6, 7, 39, 7, 32, 39, 7, 7, 7, 32, 7, 7, 7, 32, 6, + 6, 6, 6, 6, 7, 39, 7, 32, 7, 7, 32, 32, 0, 7, 7, 7, + 32, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 7, 7, 7, 7, + 59, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 60, 6, 6, + 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 59, 6, 6, + 6, 6, 60, 6, 6, 6, 7, 7, 7, 7, 59, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 60, 6, 6, 6, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 59, 6, 6, 6, 6, 60, 6, 6, 6, + 7, 7, 7, 7, 59, 6, 6, 6, 6, 60, 6, 6, 6, 8, 0, 11, + 5, 5, 5, 55, 3, 43, 5, 5, 5, 5, 5, 5, 5, 5, 55, 3, + 3, 3, 43, 3, 3, 3, 3, 3, 3, 3, 55, 66, 12, 12, 0, 0, + 0, 0, 0, 0, 0, 26, 5, 5, 6, 6, 6, 6, 6,124, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 47, 0, 0, 42, 6, 6, 47, 0, 0, + 5, 5, 5, 23, 5, 5, 5, 5, 5, 5, 5, 5, 23, 26, 5, 5, + 5, 26, 23, 5, 5, 23, 0, 0, 13, 13, 13, 13, 13, 13, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 26, 5, 5, 5, 81, 13, 13, 13, 0, + 11, 11, 11, 11, 11, 0, 0, 56, 1, 1, 1, 1, 1, 1, 1, 23, + 1, 1, 1, 1, 1, 1, 5, 5, 11, 11, 11, 11, 11, 0, 0,113, + 1, 1, 1, 1, 1, 45, 5, 5,188, 11, 11, 11, 11,189, 0, 38, + 1, 24, 1, 25, 1, 1, 1, 5, 1, 1, 24, 0, 0, 0, 0, 45, + 1, 1, 1, 14, 1, 1, 17, 14, 1, 1, 14, 49, 10, 10, 10, 10, + 6, 6, 5, 5, 5, 81, 0, 0, 10, 10, 10, 10, 10, 10, 75, 10, + 190, 10, 51, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 75, + 10, 10, 10, 10, 10, 10, 10, 0, 1, 1, 17, 1, 1, 1, 1, 1, + 17, 14, 14, 17, 17, 1, 1, 1, 1, 14, 1, 1, 17, 17, 0, 0, + 0, 14, 0, 17, 17, 17, 17, 1, 17, 14, 14, 17, 17, 17, 17, 17, + 17, 14, 14, 17, 1, 14, 1, 1, 1, 14, 1, 1, 17, 1, 14, 14, + 1, 1, 1, 1, 1, 17, 1, 1, 17, 1, 17, 1, 1, 17, 1, 1, + 9, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 63, 3, + 0, 0, 0, 3, 3, 3, 3, 3, 3, 29, 0, 0, 0, 0, 0, 0, + 3, 3, 3, 3, 3,108, 22, 22, 3, 3, 3, 3, 29, 0, 3, 3, + 9, 9, 9, 9, 98, 0, 0, 0, 3, 3, 3, 3, 3, 29, 0, 3, + 3, 3, 3, 29, 29, 0, 44, 3, 3, 3, 3, 3, 3, 3, 29, 44, + 3, 3, 3, 3, 3, 29, 0, 44, 3, 29, 3, 3, 3, 3, 3, 3, + 11, 11, 11, 11, 11, 29, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 7, 7, 3, 3, 26, 26, + 4, 4, 12, 12, 5, 5, 9, 9, 9, 5, 25, 25, 15, 15, 13, 13, + 21, 21, 6, 6, 7, 2, 10, 10, 14, 14, 2, 7, 1, 1, 10, 12, + 12, 10, 5, 9, 24, 24, 12, 2, 7, 12, 12, 7, 2, 12, 22, 18, + 0, 0, 26, 2, 23, 23, 18, 22, 9, 2, 21, 2, 7, 10, 2, 10, + 12, 21, 10, 2, 2, 21, 2, 9, 7, 21, 8, 8, 2, 5, 26, 12, + 2, 26, 7, 6, 10, 7, 5, 2, 25, 26, 2, 15, 26, 25, 15, 2, + 6, 7, 21, 7, 2, 6, 12, 26, 7, 26, 21, 26, 20, 19, 9, 25, + 5, 25, 6, 2, 21, 6, 15, 26, 25, 22, 18, 21, 26, 21, 5, 7, + 6, 24, 6, 5, 26, 23, 21, 12, 6, 12, 2, 1, 29, 29, 26, 15, + 21, 17, 25, 21, 15, 21, 11, 11, 21, 23, 12, 6, 26, 7, 10, 21, + 17, 17, 9, 26, 7, 15, 29, 21, 21, 9, 24, 5, 25, 9, 1, 12, + 17, 21, 11, 12, 8, 24, 26, 9, 21, 22, 23, 26, 25, 2, 14, 2, + 23, 21, 21, 25, 9, 22, 21, 18, 24, 16, 5, 22, 25, 18, 24, 26, + 26, 24, 9, 8, 8, 5, 5, 21, 15, 7, 2, 23, 21, 15, 17, 7, + 18, 2, 5, 6, 5, 24, 22, 20, 21, 20, 19, 21, 21, 16, 16, 21, + 7, 5, 5, 26, 14, 15, 18, 25, 7, 14, 17, 22, 17, 6, 24, 6, + 6, 21, 12, 15, 26, 10, 25, 0, 7, 20, 25, 1, 24, 15, 7, 19, + 9, 21, 17, 2, 17, 12, 1, 21, 12, 1, 24, 7, 29, 7, 7, 22, + 14, 7, 2, 24, 9, 24, 24, 2, 29, 1, 27, 28, 1, 29, 21, 29, + 1, 2, 15, 6, 18, 6, 12, 11, 26, 5, 14, 9, 5, 14, 26, 22, + 18, 26, 5, 12, 22, 21, 18, 17, 26, 6, 18, 18, 26, 14, 14, 6, + 12, 24, 11, 21, 24, 9, 6, 9, 6, 10, 7, 25, 17, 16, 16, 22, + 16, 16, 25, 17, 25, 24, 23, 2, 21, 14, 12, 17, 21, 1, 10, 1, + 7, 13, 13, 2, 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 10, 11, 12, 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 37, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 0, 0, 0, 0, 0, 0, 0, 16, 17, 18, 0, 19, 0, 20, 21, 0, + 0, 22, 23, 24, 25, 26, 0, 0, 0, 0, 27, 28, 29, 30, 0, 31, + 0, 32, 33, 0, 2, 34, 0, 0, 2, 1, 35, 0, 2, 1, 0, 0, + 2, 1, 0, 0, 2, 1, 0, 0, 0, 1, 0, 0, 2, 36, 0, 0, + 2, 1, 0, 0, 37, 1, 0, 0, 0, 38, 0, 0, 39, 40, 0, 0, + 41, 42, 0, 43, 44, 0, 45, 46, 0, 47, 0, 0, 48, 0, 0, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 51, 4, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, + 53, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 56, 0, + 57, 58, 59, 0, 60, 5, 61, 0, 62, 0, 63, 0, 64, 0, 0, 0, + 0, 65, 66, 0, 0, 0, 0, 0, 0, 67, 68, 0, 0, 0, 0, 0, + 0, 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 71, 0, 0, 0, 3, 0, 0, 0, 72, 0, 73, 0, 0, 74, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, + 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 6, 78, 0, 0, 0, + 0, 5, 79, 0, 80, 81, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, + 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, + 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 0, 90, 91, 0, 0, 0, + 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 93, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 95, 0, 96, 0, 0, 97, 0, 98, 0, 0, 0, 0, 0, 6, 99, 0, + 9, 0, 0,100,101, 0, 7, 0, 0,102, 0, 0,103, 0, 0, 0, + 0, 0,104, 0,105, 1,106, 0, 0,107, 0, 0, 0,108, 0, 0, + 0,109, 0, 0, 0, 0, 0, 0, 3,110, 0, 0, 3, 0, 0, 0, + 111, 0, 0, 0,112, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0,113,114, 0, 0, 0, 0, 8, 0, 4,115, 0,116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0,117, 0,118, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,121, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 0, 0, 0, 0,123, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,124,125,126, 0, 0, 0, 0,127, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,129, 0, 0,130, + 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 0,132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,133, 0, 0, 0, 0, 0, 0, 0,134, 0, 0, 0, 0, 0, + 0, 0,135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,136, 0, 0, 0,137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 1, 12, 0, 0, 1, 1, + 1, 1, 1, 49, 50, 5, 51, 52, 53, 5, 5, 22, 32, 23, 1, 54, + 24, 55, 16, 33, 56, 57, 58, 1, 1, 1, 0, 0, 0, 0, 6, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 7, 60, 1, 34, 5, + 7, 61, 62, 63, 64, 65, 66, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 68, 0, 0, 0, 69, 70, 71, 35, 1, 25, 0, 0, + 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, 26, 16, 26, + 73, 27, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, + 0, 0, 36, 25, 75, 37, 7, 37, 76, 0, 0, 0, 0, 0, 0, 0, + 6, 1, 7, 0, 0, 17, 0, 0, 0, 0, 0, 8, 38, 1, 1, 13, + 13, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, + 0, 0, 0, 6, 18, 1, 0, 0, 8, 16, 5, 1, 1, 1, 77, 7, + 36, 18, 78, 7, 35, 1, 0, 0, 0, 4, 79, 10, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 4, 0, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 3, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 85, 86, 0, 0, 0, + 0, 0, 87, 88, 89, 90, 91, 92, 0, 0, 0, 0, 0, 0, 0, 93, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 28, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, + 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 14, 0, 0, 20, 0, 0, + 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, + 0, 0, 0, 6, 29, 0, 3, 0, 0, 0, 0, 13, 1, 96, 0, 0, + 0, 0, 1, 18, 33, 97, 25, 23, 7, 1, 1, 1, 1, 27, 1, 7, + 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, + 6, 23, 1, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 21, + 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 12, 32, 24, 5, 99, 22, 42, 17, 0, 10, 11, 0, 7, 1, + 7,100,101, 1, 1, 1, 1, 1, 1, 1, 1,102,103,104, 0, 0, + 0, 0,105, 1,106, 10, 20,107,108, 5, 10, 0, 0, 0, 0, 0, + 0, 6, 11, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + 109,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, + 0, 6, 0, 1, 1, 11, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, + 0, 0, 11, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, + 1, 1, 11, 0, 0, 0, 0, 0, 43, 40, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 44,112, 10, 8, 20, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0,113, 1, 16, 5, 24, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 12, 0, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,115, 2, 0,116, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 11, 0, 0, 0, 0, 0, 0, + 6, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 39, 0, 45, + 16, 18, 29, 0, 0, 0, 46, 27, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 2, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 3, 0, 0, 3, 0, 21, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 9, 0, 8, 1, 10, 1, 10, 0, 0, 0, 0, + 0, 30, 3, 0, 0, 0, 14, 21, 0, 0, 0, 0, 0, 19, 47, 0, + 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 47, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 28, 15, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 21, 41, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 28, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 22, 42, 0, 0, 0, 0, 0, 0,118, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,119, 0,120,121,122,123, 0, 43, 5, 48, 13, + 34, 0, 0, 0, 0, 0, 0, 0, 8, 11, 0, 0, 0, 0, 8, 10, + 0, 0, 0, 0, 0, 0, 1, 12, 1, 1, 1, 1, 26, 1, 38, 44, + 12, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, + 0, 19, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0,124, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 6, 19, + 0, 8, 0, 20, 0, 0, 0, 0, 0, 0, 5, 48, 0, 0, 0, 1, + 125, 0, 0, 0, 0, 0,230,230,230,230, 0, 0, 0, 9, 9, 0, + 0, 0, 0, 9, 0, 0,220,220,220,220, 0, 0, 0,230,230,230, + 220,230, 0, 0,230,230, 7, 0, 0, 0,230, 0, 0, 0,230,230, + 0, 0,230,230,230, 0, 0,230,230,230, 0, 0, 9, 0, 0, 0, + 0, 7,230,230,230,220, 0,220, 0, 0,230,220,220,220, 0, 0, + 230, 0, 0,230, 0, 0, 0, 0, 7, 0, 1, 1, 1, 1,220,230, + 230,230,220,220,230,230,220,230,230,220,230, 0, 0,230,230,220, + 0, 0, 0, 9, 9, 0,220, 0, 0, 0, 0, 0, 9, 9, 0, 9, + 7, 0, 1,220,220,220,220,220,220,230,230,230,220,220,230,220, + 220,230,230,220,230,230,220,230,220,230,230,230, 0,230, 0,220, + 220,220,220,220, 0, 0, 9, 9, 0, 0, 1, 0, 0, 0, 0, 0, + 0,220,230, 0,230,230, 0, 0,220,220, 0, 0,230,220, 0, 0, + 9, 7,220,220,220, 0,230,232,220,220,220,220,232,216,220,202, + 202,220,220,220,220,202,202,220,220,220,230,240,230,220,230,220, + 220, 0,232,220,220,230,233,234,234,233,234,234,233,230, 0,220, + 230,230,230,230,222,220,230,222,228,230, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, 0, 24, 25, 0,230,220, + 0, 18, 30, 31, 32, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, + 34,230, 35, 0, 0, 0,230, 0,220,230, 0, 36, 0, 0,220,220, + 230,220,220,230,230, 0,230,230, 0,220, 27, 28, 29,230, 0,230, + 220,230, 0, 84, 91, 0,103,103, 9, 0,107,107,107,107,118,118, + 9, 0,122,122,122,122, 0,220, 0,220, 0,216, 0, 0, 0,129, + 130, 0,132, 0, 0, 0, 0, 0,130,130,130,130, 0, 0,130, 0, + 230,230, 9, 0,230,230, 0, 0,220, 0, 0,228, 0, 0, 0,222, + 230,220,230, 0, 0,220,230,220, 0,220,230,230,230,234,230, 0, + 1, 1,230,234,214,220,202,230,230,230,230,230,232,228,228,220, + 218,230,233,220,230,220,230,230, 1, 1, 1, 1, 1,230, 0, 1, + 1,230,220,230, 1, 1, 0, 0,218,228,232,222,224,224, 0, 8, + 8, 0,220, 0, 0,230, 0, 0, 26, 0, 0,220, 0,230,230, 1, + 220, 0, 0,230,220, 0, 0, 7, 9, 0, 6, 6, 0, 0, 0, 0, + 1, 0, 0,216,216, 1, 1, 1, 0, 0, 0,226,216,216,216,216, + 216, 0,232,232,220,230,230,230, 7, 0, 1, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 3, 0, 0, 0, 0, 4,101, 0,112,128,169, + 0, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,237, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 1, 1, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 6, 7, 8, 9, 0, + 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 20, 0, 0, 21, 22, 0, 0, 0, 0, 23, 24, + 25, 26, 0, 27, 0, 28, 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, + 0, 33, 34, 35, 36, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 39, 0, 0, 0, 0, 2, 1, 40, 41, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 36, 0, 0, + 8, 0, 0, 0, 0, 44, 0, 0, 52, 0, 0, 0, 56, 0, 0, 0, + 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0, 24, 48, 0, 0, + 0, 0, 0, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, + 60, 64, 0, 68, 0, 72, 76, 80, 0, 0, 0, 0, 0, 8, 84, 88, + 0, 92, 16, 8, 0, 0, 0, 4, 4, 16, 4, 4, 4, 4, 4, 4, + 4, 24, 20, 0, 96, 0, 16,100,104, 0, 4, 4,108, 0, 0, 0, + 40,112, 8, 16, 4, 4, 4, 4, 4, 8,116,120,124,128, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 4, 8, 0, 0, 24, 20,132, 36, 0, 28, 0,136, 16, 4, + 4, 4, 0, 0, 0, 0, 24, 12, 12,140,144, 12,148, 0,152, 8, + 4, 4, 0, 0,156, 0, 8, 8, 0, 24, 20, 8, 4, 0, 0, 0, + 8, 0, 0,160, 8, 8, 0, 0, 24, 20, 0, 8, 0, 8, 0, 8, + 0, 0, 0, 0, 40, 12, 12, 12, 12, 12, 12, 12, 12, 12, 20, 16, + 4,164, 12, 12, 12, 12, 12, 12, 12, 12, 12, 20, 0,168,172,176, + 0,180, 0, 24, 20, 0, 0, 0, 0, 0, 0, 0, 0,184, 16, 8, + 28, 8, 0, 0, 0, 8, 4, 4, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 40, 12, 48, 0, 0, 4, 4, 8, 4, 4, 0, 0, 0, + 0, 0, 0, 0, 40, 20, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 32,188,192, 0, 0, 0, 0, 0, 0, 0, 4, 5, + 6, 7, 8, 9, 10, 1, 1, 11, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 12, 13, 2, 2, 2, 2, 14, 0, 0, 0, 0, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, 25, 26, 3, 3, 3, 27, + 0, 0, 0, 28, 29, 30, 0, 31, 32, 33, 34, 35, 36, 37, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 38, 1, 1, 39, 1, 40, 1, 1, 1, 41, 0, 42, 1, 1, + 43, 1, 1, 1, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 20, + 21, 8, 8, 8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 2, 2, 51, 52, 53, 54, 9, 9, 9, 9, 9, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 8, 8, 70, 71, 72, + 73, 74, 75, 5, 5, 5, 5, 76, 5, 5, 5, 5, 5, 5, 5, 15, + 15, 5, 5, 5, 5, 77, 5, 78, 79, 80, 81, 82, 83, 1, 84, 85, + 86, 87, 88, 89, 90, 91, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 92, 1, 1, 1, 1, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 93, 16, 16, 94, 95, 96, 97, 98, + 99,100,101,102,103,104,105, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,106, 0, + 0, 1, 1,107,108,109, 13, 13, 13,110,111,112,113,114,115,116, + 117,118,119, 0,120,121,122,123,124,125,126, 17, 17,127,128,129, 130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145, - 95,146,147,148,149, 95,150,151,152,153,154,155,156,157,158,159, - 160,161, 95,162,163,164,165,165,165,165,165,165,165,166,167,165, - 168, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95,169,170,170,170,170,170,170,170,170,171,170, - 170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170, - 170,170,170,170,170,170,170,170,170,170,170,170,170,172,173,173, - 173,173,174, 95, 95, 95, 95, 95,175, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95,176,176,176,176,177,178,179,180, 95, 95, - 181, 95,182,183,184,185,186,186,186,186,186,186,186,186,186,186, - 186,186,186,186,186,186,186,186,186,186,186,186,187,187,187,188, - 189,190, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95,191,192,193,194,195,195,196, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,197,198, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 59,199, - 59, 59, 59,200,201,202, 59,203,204,205,206,207,208, 95,209,210, - 211, 59, 59,212, 59,213,214,214,214,214,214,215, 95, 95, 95, 95, - 95, 95, 95, 95,216, 95,217,218,219, 95, 95,220, 95, 95, 95,221, - 95,222, 95,223, 95,224,225,226,227, 95, 95, 95, 95, 95,228,229, - 230, 95,231,232, 95, 95,233,234, 59,235,236, 95, 59, 59, 59, 59, - 59, 59, 59,237, 59,238,239,240, 59, 59,241,242, 59,243, 95, 95, - 95, 95, 95, 95, 95, 95, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69,244, 69, 69,245, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69,246, 69, 69, 69, 69, 69, 69, 69, 69, 69,247, 69, 69, - 69, 69,248, 95, 95, 95, 69, 69, 69, 69,249, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 69, 69, 69, 69, 69, 69,250, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,251, 95, - 95, 95, 95, 95, 95, 95,252, 95,253,254, 0, 1, 2, 2, 0, 1, - 2, 2, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 19, 19, - 19, 19, 19, 19, 19, 0, 19, 0, 0, 0, 0, 0, 0, 0, 19, 19, - 19, 19, 19, 0, 0, 0, 0, 0, 26, 26, 0, 0, 0, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 0, 9, 9, 9, 2, 2, - 9, 9, 9, 9, 0, 9, 2, 2, 2, 2, 9, 0, 9, 0, 9, 9, - 9, 2, 9, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 2, 9, 9, 9, 9, 9, 9, 9, 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 1, 1, 6, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, - 4, 2, 2, 4, 4, 4, 2, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 2, 2, 2, 2, 2, 2, 2, 2, 14, 14, - 14, 2, 2, 2, 2, 14, 14, 14, 14, 14, 14, 2, 2, 2, 3, 3, - 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, 0, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 2, 37, 37, 37, - 37, 2, 2, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 2, 2, 2, 2, 2, 2, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 2, 2, 64, 64, 64, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 2, 2, 90, 90, 90, 90, 90, 90, 90, 2, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 2, 2, 95, 2, 37, 37, - 37, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 3, 3, 3, - 0, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, - 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 5, 5, - 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 5, 5, 2, - 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, - 5, 5, 5, 5, 5, 5, 5, 2, 5, 2, 2, 2, 5, 5, 5, 5, - 2, 2, 5, 5, 5, 5, 5, 2, 2, 5, 5, 5, 5, 2, 2, 2, - 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 5, 5, 2, 5, 5, 5, - 5, 5, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 11, - 11, 11, 2, 11, 11, 11, 11, 11, 11, 2, 2, 2, 2, 11, 11, 2, - 2, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, - 11, 11, 11, 11, 11, 11, 11, 2, 11, 11, 2, 11, 11, 2, 11, 11, - 2, 2, 11, 2, 11, 11, 11, 2, 2, 11, 11, 11, 2, 2, 2, 11, - 2, 2, 2, 2, 2, 2, 2, 11, 11, 11, 11, 2, 11, 2, 2, 2, - 2, 2, 2, 2, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 2, 10, - 10, 10, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, - 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2, - 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 2, 10, 10, 10, 10, 10, - 2, 2, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, 2, 2, 10, 2, - 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, 2, 2, 10, 10, 10, 10, - 2, 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, 10, 10, 10, 2, 21, - 21, 21, 2, 21, 21, 21, 21, 21, 21, 21, 21, 2, 2, 21, 21, 2, - 2, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 2, - 21, 21, 21, 21, 21, 21, 21, 2, 21, 21, 2, 21, 21, 21, 21, 21, - 2, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 21, 2, 2, 2, 2, - 2, 2, 2, 21, 21, 21, 2, 2, 2, 2, 21, 21, 2, 21, 21, 21, - 21, 21, 2, 2, 21, 21, 2, 2, 22, 22, 2, 22, 22, 22, 22, 22, - 22, 2, 2, 2, 22, 22, 22, 2, 22, 22, 22, 22, 2, 2, 2, 22, - 22, 2, 22, 2, 22, 22, 2, 2, 2, 22, 22, 2, 2, 2, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 2, 2, 2, 2, 22, 22, 22, 2, - 2, 2, 2, 2, 2, 22, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, - 22, 2, 2, 2, 2, 2, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 2, 23, 23, 23, 2, 23, 23, 23, 23, 23, 23, 23, 23, - 2, 2, 23, 23, 23, 23, 23, 2, 23, 23, 23, 23, 2, 2, 2, 2, - 2, 2, 2, 23, 23, 2, 23, 23, 23, 2, 23, 23, 2, 2, 23, 23, - 23, 23, 2, 2, 23, 23, 2, 2, 2, 2, 2, 2, 2, 23, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 16, 16, 16, 2, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 16, - 2, 2, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 2, 2, 2, 2, - 2, 2, 2, 16, 16, 2, 2, 2, 2, 2, 16, 16, 16, 2, 16, 16, - 16, 16, 2, 2, 16, 16, 2, 16, 16, 16, 2, 2, 2, 2, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 2, 20, 20, 20, 2, - 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, - 20, 20, 2, 2, 20, 20, 2, 36, 36, 36, 2, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 2, 2, - 36, 36, 36, 36, 36, 36, 36, 36, 2, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 2, 36, 2, 2, 2, 2, 36, 2, 2, 2, 2, 36, 36, 36, - 36, 36, 36, 2, 36, 2, 2, 2, 2, 2, 2, 2, 36, 36, 2, 2, - 36, 36, 36, 2, 2, 2, 2, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 2, 2, 2, 2, 0, 24, 24, - 24, 24, 2, 2, 2, 2, 2, 18, 18, 2, 18, 2, 18, 18, 18, 18, - 18, 2, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 2, 18, 2, 18, 18, 18, 18, 18, 18, 18, 2, 2, 18, 18, - 18, 18, 18, 2, 18, 2, 18, 18, 18, 18, 18, 18, 18, 2, 18, 18, - 2, 2, 18, 18, 18, 18, 25, 25, 25, 25, 25, 25, 25, 25, 2, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 2, 2, 2, 25, 25, - 25, 25, 25, 2, 25, 25, 25, 25, 25, 25, 25, 0, 0, 0, 0, 25, - 25, 2, 2, 2, 2, 2, 33, 33, 33, 33, 33, 33, 33, 33, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2, 8, 2, 2, - 2, 2, 2, 8, 2, 2, 8, 8, 8, 0, 8, 8, 8, 8, 12, 12, - 12, 12, 12, 12, 12, 12, 30, 30, 30, 30, 30, 30, 30, 30, 30, 2, - 30, 30, 30, 30, 2, 2, 30, 30, 30, 30, 30, 30, 30, 2, 30, 30, - 30, 2, 2, 30, 30, 30, 30, 30, 30, 30, 30, 2, 2, 2, 30, 30, - 2, 2, 2, 2, 2, 2, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 2, 2, 28, 28, 28, 28, 28, 28, 28, 28, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 2, 2, 2, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, 2, - 2, 2, 2, 2, 2, 2, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 2, 2, 2, 2, 2, 2, 2, 2, 2, 45, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 0, 0, 2, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 2, 2, 2, 2, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 2, 46, 46, 46, 2, - 46, 46, 2, 2, 2, 2, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 2, 2, 31, 31, 2, 2, 2, 2, 2, 2, 32, 32, - 0, 0, 32, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 2, 2, 2, 2, 2, 2, 32, 2, 2, 2, 2, 2, 2, 2, 32, 32, - 32, 2, 2, 2, 2, 2, 28, 28, 28, 28, 28, 28, 2, 2, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 2, 48, 48, - 48, 48, 2, 2, 2, 2, 48, 2, 2, 2, 48, 48, 48, 48, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 2, 2, 52, 52, - 52, 52, 52, 2, 2, 2, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 2, 2, 2, 2, 58, 58, 2, 2, 2, 2, 2, 2, 58, 58, - 58, 2, 2, 2, 58, 58, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 2, 2, 54, 54, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 2, 91, 91, 91, 91, 91, 2, 2, 91, 91, 91, - 2, 2, 2, 2, 2, 2, 91, 91, 91, 91, 91, 91, 2, 2, 1, 1, - 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 2, 62, 62, 76, 76, - 76, 76, 76, 76, 76, 76, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 2, 2, 2, 2, 2, 2, 2, 2, 93, 93, 93, 93, 70, 70, - 70, 70, 70, 70, 70, 70, 2, 2, 2, 70, 70, 70, 70, 70, 70, 70, - 2, 2, 2, 70, 70, 70, 73, 73, 73, 73, 73, 73, 73, 73, 6, 6, - 6, 2, 2, 2, 2, 2, 8, 8, 8, 2, 2, 8, 8, 8, 1, 1, - 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, - 0, 2, 2, 2, 2, 2, 19, 19, 19, 19, 19, 19, 9, 9, 9, 9, - 9, 6, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 9, 9, 9, 9, - 19, 19, 19, 19, 9, 9, 9, 9, 9, 19, 19, 19, 19, 19, 6, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 9, 9, - 9, 9, 9, 9, 2, 2, 2, 9, 2, 9, 2, 9, 2, 9, 9, 9, - 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 2, 2, 9, 9, 9, 9, - 9, 9, 2, 9, 9, 9, 2, 2, 9, 9, 9, 2, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 2, 0, 0, 0, 19, 2, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 2, 19, 19, - 19, 19, 19, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 2, - 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 19, 0, - 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 27, 27, - 27, 27, 27, 27, 27, 27, 0, 0, 0, 0, 2, 2, 0, 0, 56, 56, - 56, 56, 56, 56, 56, 56, 55, 55, 55, 55, 2, 2, 2, 2, 2, 55, - 55, 55, 55, 55, 55, 55, 61, 61, 61, 61, 61, 61, 61, 61, 2, 2, - 2, 2, 2, 2, 2, 61, 61, 2, 2, 2, 2, 2, 2, 2, 0, 0, - 0, 0, 0, 0, 2, 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 2, 2, 2, 2, 13, 13, - 13, 13, 13, 13, 2, 2, 0, 0, 0, 0, 0, 13, 0, 13, 0, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 13, 13, - 13, 13, 0, 0, 0, 0, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 2, 2, 1, - 1, 0, 0, 15, 15, 15, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 17, 17, 17, 2, 2, - 2, 2, 2, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 2, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 2, 2, 2, - 2, 2, 2, 2, 2, 0, 12, 12, 12, 12, 12, 12, 12, 0, 17, 17, - 17, 17, 17, 17, 17, 0, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 2, 2, 2, 39, 39, 39, 39, 39, 39, 39, 2, 86, 86, - 86, 86, 86, 86, 86, 86, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 2, 2, 2, 2, 79, 79, 79, 79, 79, 79, 79, 79, 0, 0, - 19, 19, 19, 19, 19, 19, 0, 0, 0, 19, 19, 19, 19, 19, 2, 19, - 19, 19, 19, 19, 19, 19, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 2, 2, 2, 65, 65, 65, 65, 65, 65, 65, 65, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 2, 2, 2, 2, - 2, 2, 2, 2, 75, 75, 75, 75, 2, 2, 2, 2, 2, 2, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 0, 69, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 74, 12, 12, 12, 12, 12, 2, 2, 2, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 2, 0, 84, 84, - 2, 2, 2, 2, 84, 84, 33, 33, 33, 33, 33, 33, 33, 2, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 2, 68, 68, - 68, 68, 68, 68, 2, 2, 68, 68, 2, 2, 68, 68, 68, 68, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 2, 2, 2, 2, 2, 2, 2, - 2, 92, 92, 92, 92, 92, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 2, 2, 30, 30, 30, 30, 30, 30, 2, 19, 19, - 19, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 19, 19, 19, 19, - 0, 0, 2, 2, 2, 2, 87, 87, 87, 87, 87, 87, 2, 2, 87, 87, - 2, 2, 2, 2, 2, 2, 12, 12, 12, 12, 2, 2, 2, 2, 2, 2, - 2, 12, 12, 12, 12, 12, 13, 13, 2, 2, 2, 2, 2, 2, 19, 19, - 19, 19, 19, 19, 19, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, - 2, 2, 2, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 2, 14, 14, - 14, 14, 14, 2, 14, 2, 14, 14, 2, 14, 14, 2, 14, 14, 3, 3, - 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 6, 6, 0, 0, - 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 3, - 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, - 17, 17, 17, 17, 0, 0, 2, 2, 12, 12, 12, 12, 12, 12, 2, 2, - 12, 12, 12, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 2, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 2, 49, 49, 49, 2, 49, 49, 2, 49, 49, 49, - 49, 49, 49, 49, 2, 2, 49, 49, 49, 2, 2, 2, 2, 2, 0, 0, - 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, - 0, 0, 0, 2, 2, 2, 9, 2, 2, 2, 2, 2, 2, 2, 0, 0, - 0, 0, 0, 1, 2, 2, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 2, 2, 2, 67, 67, 67, 67, 67, 67, 67, 67, 67, 2, - 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 2, 2, 2, 2, 2,118,118,118,118,118,118,118,118,118,118, - 118, 2, 2, 2, 2, 2, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 2, 53, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 2, 2, 2, 2, 59, 59, 59, 59, 59, 59, 2, 2, 40, 40, - 40, 40, 40, 40, 40, 40, 51, 51, 51, 51, 51, 51, 51, 51, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 2, 2, 50, 50, - 2, 2, 2, 2, 2, 2,135,135,135,135,135,135,135,135,135,135, - 135,135, 2, 2, 2, 2,106,106,106,106,106,106,106,106,104,104, - 104,104,104,104,104,104,104,104,104,104, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2,104,161,161,161,161,161,161,161,161,161,161, - 161, 2,161,161,161,161,161,161,161, 2,161,161, 2,161,161,161, - 2,161,161,161,161,161,161,161, 2,161,161, 2, 2, 2,170,170, - 170,170,170,170,170,170,170,170,170,170, 2, 2, 2, 2,110,110, - 110,110,110,110,110,110,110,110,110,110,110,110,110, 2,110,110, - 110,110,110,110, 2, 2, 19, 19, 19, 19, 19, 19, 2, 19, 19, 2, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 2, 2, 2, 2, 2, 47, 47, - 47, 47, 47, 47, 2, 2, 47, 2, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 2, 47, 47, 2, - 2, 2, 47, 2, 2, 47, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 2, 81,120,120,120,120,120,120,120,120,116,116, - 116,116,116,116,116,116,116,116,116,116,116,116,116, 2, 2, 2, - 2, 2, 2, 2, 2,116,128,128,128,128,128,128,128,128,128,128, - 128, 2,128,128, 2, 2, 2, 2, 2,128,128,128,128,128, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 2, 2, 2, 66, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 2, 2, 2, 2, 2, 72,173,173, - 173,173,173,173,173,173,173,173, 2, 2, 2, 2, 2, 2, 98, 98, - 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 2, 2, - 2, 2, 97, 97, 97, 97, 2, 2, 97, 97, 97, 97, 97, 97, 57, 57, - 57, 57, 2, 57, 57, 2, 2, 2, 2, 2, 57, 57, 57, 57, 57, 57, - 57, 57, 2, 57, 57, 57, 2, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 2, 2, 57, 57, - 57, 2, 2, 2, 2, 57, 57, 2, 2, 2, 2, 2, 2, 2, 88, 88, - 88, 88, 88, 88, 88, 88,117,117,117,117,117,117,117,117,112,112, - 112,112,112,112,112,112,112,112,112,112,112,112,112, 2, 2, 2, - 2,112,112,112,112,112, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 2, 2, 2, 78, 78, 78, 78, 78, 78, 78, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 2, 2, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 2, 2, 2, 2, 2,122,122, - 122,122,122,122,122,122,122,122, 2, 2, 2, 2, 2, 2, 2,122, - 122,122,122, 2, 2, 2, 2,122,122,122,122,122,122,122, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 2, 2, 2, 2, 2, 2, 2,130,130, - 130,130,130,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, - 130,130,130,130,130,130,144,144,144,144,144,144,144,144,144,144, - 2, 2, 2, 2, 2, 2,165,165,165,165,165,165,165,165,165,165, - 165,165,165,165, 2, 2, 2,165,165,165,165,165,165,165, 2, 2, - 2, 2, 2, 2,165,165, 3, 3, 3, 3, 3, 3, 3, 2,156,156, - 156,156,156,156,156,156,156,156, 2,156,156,156, 2, 2,156,156, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, - 2, 2, 2, 2, 2, 2,147,147,147,147,147,147,147,147,148,148, - 148,148,148,148,148,148,148,148, 2, 2, 2, 2, 2, 2,158,158, - 158,158,158,158,158,158,158,158, 2, 2, 2, 2, 2, 2,153,153, - 153,153,153,153,153,153,153,153,153,153, 2, 2, 2, 2,149,149, - 149,149,149,149,149,149,149,149,149,149,149,149,149, 2, 94, 94, - 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 2, 2, 2, 2, - 94, 94, 94, 94, 94, 94, 2, 2, 2, 2, 2, 2, 2, 94, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 85, 2, 2,101,101,101,101,101,101,101,101,101, 2, - 2, 2, 2, 2, 2, 2,101,101, 2, 2, 2, 2, 2, 2, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 2, 96, 96,111,111, - 111,111,111,111,111,111,111,111,111,111,111,111,111, 2,100,100, - 100,100,100,100,100,100, 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 2, 2, 2,108,108,108,108,108,108,108,108,108,108, - 2,108,108,108,108,108,108,108, 2, 2, 2, 2, 2, 2,129,129, - 129,129,129,129,129, 2,129, 2,129,129,129,129, 2,129,129,129, - 129,129,129,129,129,129,129,129,129,129,129,129, 2,129,129,129, - 2, 2, 2, 2, 2, 2,109,109,109,109,109,109,109,109,109,109, - 109, 2, 2, 2, 2, 2,109,109, 2, 2, 2, 2, 2, 2,107,107, - 107,107, 2,107,107,107,107,107,107,107,107, 2, 2,107,107, 2, - 2,107,107,107,107,107,107,107,107,107,107,107,107,107,107, 2, - 107,107,107,107,107,107,107, 2,107,107, 2,107,107,107,107,107, - 2, 1,107,107,107,107,107, 2, 2,107,107,107, 2, 2,107, 2, - 2, 2, 2, 2, 2,107, 2, 2, 2, 2, 2,107,107,107,107,107, - 107,107, 2, 2,107,107,107,107,107,107,107, 2, 2, 2,171,171, - 171,171,171,171,171,171,171,171, 2,171, 2, 2,171, 2,171,171, - 171,171,171,171, 2,171,171, 2,171, 2, 2,171, 2,171,171,171, - 171, 2,171,171,171,171,171, 2, 2, 2, 2, 2, 2, 2, 2,171, - 171, 2, 2, 2, 2, 2,137,137,137,137,137,137,137,137,137,137, - 137,137, 2,137,137,137,137,137, 2, 2, 2, 2, 2, 2,124,124, - 124,124,124,124,124,124,124,124, 2, 2, 2, 2, 2, 2,123,123, - 123,123,123,123,123,123,123,123,123,123,123,123, 2, 2,114,114, - 114,114,114,114,114,114,114,114,114,114,114, 2, 2, 2,114,114, - 2, 2, 2, 2, 2, 2, 32, 32, 32, 32, 32, 2, 2, 2,102,102, - 102,102,102,102,102,102,102,102, 2, 2, 2, 2, 2, 2, 33, 33, - 33, 33, 2, 2, 2, 2,126,126,126,126,126,126,126,126,126,126, - 126, 2, 2,126,126,126,126,126,126,126, 2, 2, 2, 2,126,126, - 126,126,126,126,126, 2,142,142,142,142,142,142,142,142,142,142, - 142,142, 2, 2, 2, 2,125,125,125,125,125,125,125,125,125,125, - 125, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,125,154,154, - 154,154,154,154,154, 2, 2,154, 2, 2,154,154,154,154,154,154, - 154,154, 2,154,154, 2,154,154,154,154,154,154,154,154,154,154, - 154,154,154,154, 2,154,154, 2, 2,154,154,154,154,154,154,154, - 2, 2, 2, 2, 2, 2,150,150,150,150,150,150,150,150, 2, 2, - 150,150,150,150,150,150,150,150,150,150,150, 2, 2, 2,141,141, - 141,141,141,141,141,141,140,140,140,140,140,140,140,140,140,140, - 140, 2, 2, 2, 2, 2,121,121,121,121,121,121,121,121,121, 2, - 2, 2, 2, 2, 2, 2, 7, 7, 2, 2, 2, 2, 2, 2,169,169, - 169,169,169,169,169,169,169,169, 2, 2, 2, 2, 2, 2,133,133, - 133,133,133,133,133,133,133, 2,133,133,133,133,133,133,133,133, - 133,133,133,133,133, 2,133,133,133,133,133,133, 2, 2,133,133, - 133,133,133, 2, 2, 2,134,134,134,134,134,134,134,134, 2, 2, - 134,134,134,134,134,134, 2,134,134,134,134,134,134,134,134,134, - 134,134,134,134,134, 2,138,138,138,138,138,138,138, 2,138,138, - 2,138,138,138,138,138,138,138,138,138,138,138,138,138, 2, 2, - 138, 2,138,138, 2,138,138,138, 2, 2, 2, 2, 2, 2,143,143, - 143,143,143,143, 2,143,143, 2,143,143,143,143,143,143,143,143, - 143,143,143,143,143,143,143,143,143,143,143,143,143, 2,143,143, - 2,143,143,143,143,143,143, 2, 2, 2, 2, 2, 2, 2,143,143, - 2, 2, 2, 2, 2, 2,175,175,175,175,175,175,175,175,175,175, - 175,175, 2, 2, 2, 2,175,175, 2, 2, 2, 2, 2, 2,145,145, - 145,145,145,145,145,145,145, 2, 2, 2, 2, 2, 2, 2,163,163, - 163,163,163,163,163,163,163, 2,163,163,163,163,163,163,163,163, - 163, 2, 2, 2,163,163,163,163,163, 2, 2, 2, 2, 2, 86, 2, - 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 22, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 2, 2, 2, 2, 2, 2, 63, 63, 63, 63, 63, 63, 63, 2, 63, 63, - 63, 63, 63, 2, 2, 2, 63, 63, 63, 63, 2, 2, 2, 2,157,157, - 157,157,157,157,157,157,157,157,157, 2, 2, 2, 2, 2, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 2, 2, 80, 80, - 80, 2, 2, 2, 2, 2,127,127,127,127,127,127,127,127,127,127, - 127,127,127,127,127, 2,166,166,166,166,166,166,166,166,166,166, - 2, 2, 2, 2, 2, 2, 79, 2, 2, 2, 2, 2, 2, 2,115,115, - 115,115,115,115,115,115,115,115,115,115,115,115,115, 2,115,115, - 2, 2, 2, 2,115,115,159,159,159,159,159,159,159,159,159,159, - 159,159,159,159,159, 2,159,159, 2, 2, 2, 2, 2, 2,103,103, - 103,103,103,103,103,103,103,103,103,103,103,103, 2, 2,119,119, - 119,119,119,119,119,119,119,119,119,119,119,119, 2, 2,119,119, - 2,119,119,119,119,119, 2, 2, 2, 2, 2,119,119,119,167,167, - 167,167,167,167,167,167,167,167, 2, 2, 2, 2, 2, 2,146,146, - 146,146,146,146,146,146,146,146,146, 2, 2, 2, 2, 2,172,172, - 172,172,172,172,172,172,172, 2, 2,172,172,172,172,172,172,172, - 172,172, 2, 2, 2, 2, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 2, 2, 2, 2, 99, 2, 2, 2, 2, 2, 2, 2, 99,136,139, - 13, 13,155, 2, 2, 2, 13, 13, 13, 13, 13, 13, 13, 2,136,136, - 136,136,136,136,136,136,155,155,155,155,155,155,155,155,155,155, - 155,155,155,155, 2, 2, 2, 2, 2, 2, 2, 2, 2,155,136,136, - 136,136,136,136,136, 2,136,136,136, 2, 2, 2, 2, 2, 17, 17, - 17, 17, 2, 17, 17, 17, 17, 17, 17, 17, 2, 17, 17, 2, 17, 15, - 15, 15, 15, 15, 15, 15, 17, 17, 17, 2, 2, 2, 2, 2, 2, 2, - 15, 2, 2, 2, 2, 2, 15, 15, 15, 2, 2, 17, 2, 2, 2, 2, - 2, 2, 17, 17, 17, 17,139,139,139,139,139,139,139,139,139,139, - 139,139, 2, 2, 2, 2,105,105,105,105,105,105,105,105,105,105, - 105, 2, 2, 2, 2, 2,105,105,105,105,105, 2, 2, 2,105, 2, - 2, 2, 2, 2, 2, 2,105,105, 2, 2,105,105,105,105, 2, 2, - 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 1, 0, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 0, - 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0,131,131, - 131,131,131,131,131,131,131,131,131,131, 2, 2, 2, 2, 2, 2, - 2,131,131,131,131,131, 2,131,131,131,131,131,131,131, 2, 2, - 2, 2, 2, 19, 19, 19, 56, 56, 56, 56, 56, 56, 56, 2, 56, 2, - 2, 56, 56, 56, 56, 56, 56, 56, 2, 56, 56, 2, 56, 56, 56, 56, - 56, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 6,151,151,151,151,151,151,151,151,151,151, - 151,151,151, 2, 2, 2,151,151,151,151,151,151, 2, 2,151,151, - 2, 2, 2, 2,151,151,160,160,160,160,160,160,160,160,160,160, - 160,160,160,160,160, 2,152,152,152,152,152,152,152,152,152,152, - 2, 2, 2, 2, 2,152,164,164,164,164,164,164,164,164,164,164, - 2, 2, 2, 2, 2, 2,168,168,168,168,168,168,168,168,168,168, - 168, 2, 2, 2, 2,168,174,174,174,174,174,174,174,174,174,174, - 174,174,174,174,174, 2,174,174,174,174,174,174, 2, 2, 2, 2, - 2, 2, 2, 2,174,174, 30, 30, 30, 30, 2, 30, 30, 2,113,113, - 113,113,113,113,113,113,113,113,113,113,113, 2, 2,113,113,113, - 113,113,113,113,113, 2,132,132,132,132,132,132,132,132,132,132, - 132,132, 2, 2, 2, 2,132,132, 2, 2, 2, 2,132,132, 3, 3, - 3, 3, 2, 3, 3, 3, 2, 3, 3, 2, 3, 2, 2, 3, 2, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 2, 3, - 2, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, 2, 3, - 2, 3, 2, 3, 3, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, - 3, 3, 3, 2, 3, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 15, 0, - 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 2, 2, 0, 13, 2, 2, 2, 2, 2, 2, 2, 13, 13, - 13, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 10, 9, 11, 12, 13, - 9, 9, 9, 14, 9, 9, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 16, 17, 9, 9, 9, 9, - 18, 9, 9, 9, 9, 9, 19, 20, 21, 9, 22, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 23, 9, - 9, 9, 9, 9, 24, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 25, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 26, 27, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 23, 0, 0, 24, 25, 26, 27, 28, 29, 30, 0, 0, 31, 32, 0, 33, - 0, 34, 0, 35, 0, 0, 0, 0, 36, 37, 38, 39, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, - 0, 45, 0, 0, 0, 0, 0, 0, 46, 47, 0, 0, 0, 0, 0, 48, - 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 51, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, - 56, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 58, 59, 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, 0, 0, 66, 0, + 146,147,148,149,150,151,152,153,154, 0,155,156,157,158, 0,159, + 160,161,162,163,164,165,166,167,168,169,170, 0,171,172,173, 7, + 7, 7, 7, 7, 7, 7,174,175, 7,176, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 4, + 4, 4, 4, 4, 4, 4, 4,178, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4,179, 11, 11, 11, 11,180, 0, 0, 0, 0, + 0,181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 12, 12, 12,182,183,184,185, 0, 0,186, 0,187,188,189,190, 3, + 3, 3, 3, 3, 3, 14, 14, 14,191,192,193, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194,195, + 196,197, 18, 18,198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,199,200, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 5,201, 5, 5, 5,202,203,204, 5, + 205,206,207,208,209,210, 0,211,212,213, 5, 5,214, 5,215, 10, + 10, 10, 10, 10,216, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,218, + 219,220, 0, 0,221, 0, 0, 0,222, 0,223, 0,224, 0,225,226, + 227,228, 0, 0, 0, 0, 0,229,230,231, 0,232,233, 0, 0,234, + 235, 5,236,237, 0, 5, 5, 5, 5, 5, 5, 5,238, 5,239,240, + 241, 5, 5,242,243, 5,244, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,245, 1, 1,246, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,247, 1, 1, 1, + 1, 1, 1, 1, 1, 1,248, 1, 1, 1, 1,249, 0, 0, 0, 1, + 1, 1, 1,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 1, 1, 1,251, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1,252, 0, 0, 0, 0, 0, 0, 0,253, + 0, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 2, 2, 2, 2, 2, 2, 13, 13, 13, 13, 13, 13, 13, 13, 12, + 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0,136, + 136,136,136,136,136,136,136, 80, 80, 80, 80, 80, 80, 80, 80, 19, + 19, 19, 19, 19, 19, 19, 19, 3, 3, 3, 3, 3, 3, 3, 3, 63, + 63, 63, 63, 63, 63, 63, 63, 39, 39, 39, 39, 39, 39, 39, 39, 28, + 28, 28, 28, 28, 28, 28, 28, 79, 79, 79, 79, 79, 79, 79, 79,131, + 131,131,131,131,131,131,131, 1, 1, 1, 1, 1, 1, 1, 1,127, + 127,127,127,127,127,127,127, 6, 6, 6, 6, 6, 6, 6, 6,155, + 155,155,155,155,155,155,155,139,139,139,139,139,139,139,139, 9, + 9, 9, 9, 9, 9, 9, 9, 15, 15, 15, 15, 15, 15, 15, 15, 30, + 30, 30, 30, 30, 30, 30, 30,110,110,110,110,110,110,110,110, 77, + 77, 77, 77, 77, 77, 77, 77, 17, 17, 17, 17, 17, 17, 17, 17, 27, + 27, 27, 27, 27, 27, 27, 27, 33, 33, 33, 33, 33, 33, 33, 33,113, + 113,113,113,113,113,113,113, 49, 49, 49, 49, 49, 49, 49, 49, 25, + 25, 25, 25, 25, 25, 25, 25, 29, 29, 29, 29, 29, 29, 29, 29, 7, + 7, 7, 7, 7, 7, 7, 7, 32, 32, 32, 32, 32, 32, 32, 32, 8, + 8, 8, 8, 8, 8, 8, 8, 99, 99, 99, 99, 99, 99, 99, 99, 31, + 31, 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30, 2,105, + 105,105,105,105,105,105,105, 55, 55, 55, 55, 55, 55, 55, 55, 62, + 62, 62, 62, 62, 62, 62, 62, 56, 56, 56, 56, 56, 56, 56, 56, 91, + 91, 91, 91, 91, 91, 91, 91, 0, 0, 0, 0, 2, 2, 2, 2,100, + 100,100,100,100,100,100,100,119,119,119,119,119,119,119,119, 14, + 14, 14, 14, 14, 14, 14, 14,130,130,130,130,130,130,130,130, 94, + 94, 94, 94, 94, 94, 94, 94,157,157,157,157,157,157,157,157,137, + 137,137,137,137,137,137,137,146,146,146,146,146,146,146,146, 20, + 20, 20, 20, 20, 20, 20, 20, 35, 35, 35, 35, 35, 35, 35, 35, 0, + 0, 0, 0, 0, 0, 2, 2, 84, 84, 84, 84, 84, 84, 84, 84, 40, + 40, 40, 40, 40, 40, 40, 40, 97, 97, 97, 97, 97, 97, 97, 97,124, + 124,124,124,124,124,124,124,123,123,123,123,123,123,123,123,125, + 125,125,125,125,125,125,125,140,140,140,140,140,140,140,140,159, + 159,159,159,159,159,159,159,132,132,132,132,132,132,132,132, 37, + 37, 37, 37, 37, 37, 37, 37, 22, 22, 22, 22, 22, 22, 22, 22, 24, + 24, 24, 24, 24, 24, 24, 24, 58, 58, 58, 58, 58, 58, 58, 58, 76, + 76, 76, 76, 76, 76, 76, 76, 26, 26, 26, 26, 26, 26, 26, 26, 75, + 75, 75, 75, 75, 75, 75, 75, 89, 89, 89, 89, 89, 89, 89, 89,114, + 114,114,114,114,114,114,114,141,141,141,141,141,141,141,141,133, + 133,133,133,133,133,133,133,163,163,163,163,163,163,163,163, 4, + 4, 4, 4, 4, 4, 4, 4, 70, 70, 70, 70, 70, 70, 70, 70, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 68, + 68, 68, 68, 68, 68, 68, 68, 92, 92, 92, 92, 92, 92, 92, 92, 87, + 87, 87, 87, 87, 87, 87, 87,135,135,135,135,135,135,135,135, 85, + 85, 85, 85, 85, 85, 85, 85, 96, 96, 96, 96, 96, 96, 96, 96,109, + 109,109,109,109,109,109,109,102,102,102,102,102,102,102,102, 64, + 64, 64, 64, 64, 64, 64, 64, 61, 61, 61, 61, 61, 61, 61, 61, 65, + 65, 65, 65, 65, 65, 65, 65, 2, 0, 0, 0, 0, 0, 0, 0,108, + 108,108,108,108,108,108,108,142,142,142,142,142,142,142,142,121, + 121,121,121,121,121,121,121,166,166,166,166,166,166,166,166,167, + 167,167,167,167,167,167,167, 0, 2, 2, 2, 2, 2, 2, 2,151, + 151,151,151,151,151,151,151,152,152,152,152,152,152,152,152, 38, + 38, 38, 38, 38, 38, 38, 38, 90, 90, 90, 90, 90, 90, 90, 90, 23, + 23, 23, 23, 23, 23, 23, 23, 36, 36, 36, 36, 36, 36, 36, 36, 30, + 2, 30, 30, 30, 30, 2, 2, 48, 48, 48, 48, 48, 48, 48, 48, 93, + 93, 93, 93, 93, 93, 93, 93, 73, 73, 73, 73, 73, 73, 73, 73, 9, + 9, 9, 9, 9, 9, 2, 2, 13, 13, 13, 13, 13, 13, 2, 2, 86, + 86, 86, 86, 86, 86, 86, 86, 0, 0, 0, 0, 0, 2, 2, 2, 67, + 67, 67, 67, 67, 67, 67, 67, 51, 51, 51, 51, 51, 51, 51, 51,104, + 104,104,104,104,104,104,104,170,170,170,170,170,170,170,170, 78, + 78, 78, 78, 78, 78, 78, 78,144,144,144,144,144,144,144,144,165, + 165,165,165,165,165,165,165,171,171,171,171,171,171,171,171,126, + 126,126,126,126,126,126,126,150,150,150,150,150,150,150,150,134, + 134,134,134,134,134,134,134,138,138,138,138,138,138,138,138,175, + 175,175,175,175,175,175,175, 18, 18, 18, 18, 18, 18, 18, 18, 0, + 0, 0, 0, 0, 2, 0, 0, 60, 60, 60, 60, 60, 60, 60, 60, 69, + 69, 69, 69, 69, 69, 69, 69,118,118,118,118,118,118,118,118, 59, + 59, 59, 59, 59, 59, 59, 59,106,106,106,106,106,106,106,106,156, + 156,156,156,156,156,156,156,147,147,147,147,147,147,147,147,148, + 148,148,148,148,148,148,148,169,169,169,169,169,169,169,169,172, + 172,172,172,172,172,172,172,164,164,164,164,164,164,164,164,168, + 168,168,168,168,168,168,168,174,174,174,174,174,174,174,174, 0, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, 5, + 5, 5, 5, 5, 5, 5, 5, 21, 21, 21, 21, 21, 21, 21, 21, 16, + 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 12, 12, 12, 12, 2, 74, + 74, 74, 74, 74, 74, 74, 74, 42, 42, 42, 42, 42, 42, 42, 42, 50, + 50, 50, 50, 50, 50, 50, 50,161,161,161,161,161,161,161,161, 47, + 47, 47, 47, 47, 47, 47, 47,120,120,120,120,120,120,120,120,116, + 116,116,116,116,116,116,116, 98, 98, 98, 98, 98, 98, 98, 98, 57, + 57, 57, 57, 57, 57, 57, 57, 88, 88, 88, 88, 88, 88, 88, 88,117, + 117,117,117,117,117,117,117,112,112,112,112,112,112,112,112,101, + 101,101,101,101,101,101,101,111,111,111,111,111,111,111,111,154, + 154,154,154,154,154,154,154,143,143,143,143,143,143,143,143,115, + 115,115,115,115,115,115,115, 0, 0, 19, 0, 0, 0, 0, 0, 95, + 95, 95, 95, 95, 95, 95, 95, 11, 11, 11, 11, 11, 11, 11, 11, 10, + 10, 10, 10, 10, 10, 10, 10, 22, 22, 22, 2, 2, 2, 22, 22, 2, + 25, 25, 25, 25, 25, 25, 25, 34, 34, 34, 34, 34, 34, 34, 34, 52, + 52, 52, 52, 52, 52, 52, 52, 54, 54, 54, 54, 54, 54, 54, 54, 0, + 0, 0, 2, 2, 2, 2, 2, 2, 30, 30, 30, 30, 30, 30, 2, 2, + 2, 12, 12, 12, 12, 12, 12, 71, 71, 71, 71, 71, 71, 71, 71, 41, + 41, 41, 41, 41, 41, 41, 41, 53, 53, 53, 53, 53, 53, 53, 53, 81, + 81, 81, 81, 81, 81, 81, 81, 66, 66, 66, 66, 66, 66, 66, 66, 72, + 72, 72, 72, 72, 72, 72, 72,173,173,173,173,173,173,173,173, 83, + 83, 83, 83, 83, 83, 83, 83, 82, 82, 82, 82, 82, 82, 82, 82,158, + 158,158,158,158,158,158,158,153,153,153,153,153,153,153,153,145, + 145,145,145,145,145,145,145,103,103,103,103,103,103,103,103,160, + 160,160,160,160,160,160,160, 2, 3, 3, 2, 3, 2, 2, 3, 3, + 3, 3, 2, 3, 3, 3, 3, 19, 19, 19, 19, 19, 19, 19, 0, 2, + 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 0, 3, 3, 5, + 5, 5, 5, 5, 2, 2, 5, 11, 11, 11, 2, 2, 2, 2, 11, 10, + 10, 10, 10, 10, 10, 2, 10, 21, 21, 21, 21, 21, 2, 2, 21, 22, + 2, 22, 22, 22, 22, 2, 2, 23, 23, 23, 23, 23, 2, 23, 23, 23, + 2, 23, 23, 23, 23, 23, 23, 16, 16, 16, 16, 16, 2, 16, 16, 16, + 2, 16, 16, 16, 16, 16, 16, 20, 20, 20, 20, 20, 2, 20, 20, 20, + 2, 20, 20, 20, 20, 20, 20, 36, 36, 36, 36, 36, 36, 36, 2, 25, + 25, 25, 25, 25, 2, 25, 25, 8, 8, 8, 8, 8, 8, 2, 8, 2, + 2, 2, 2, 2, 8, 2, 2, 29, 29, 29, 29, 29, 29, 2, 2, 45, + 45, 45, 45, 45, 45, 45, 45, 44, 44, 44, 44, 44, 44, 44, 44, 43, + 43, 43, 43, 43, 43, 43, 43, 31, 31, 2, 2, 2, 2, 2, 2, 48, + 48, 48, 48, 2, 2, 2, 2, 91, 91, 2, 2, 2, 2, 2, 2, 1, + 1, 1, 1, 1, 1, 2, 2, 9, 9, 9, 9, 9, 2, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 2, 19, 19, 19, 19, 19, 2, 2, 2, 0, + 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 61, 0, + 17, 17, 17, 17, 17, 17, 17, 12, 12, 12, 12, 2, 2, 2, 2, 13, + 13, 2, 2, 2, 2, 2, 2, 19, 19, 19, 19, 19, 19, 19, 2, 0, + 0, 0, 2, 0, 0, 0, 0, 49, 49, 49, 49, 49, 49, 2, 2, 0, + 0, 0, 2, 2, 2, 2, 0,135,135,135,135, 2, 2, 2, 2,161, + 161,161, 2,161,161,161,161,161,161, 2,161,161,161,161,161, 19, + 19, 19, 2, 2, 2, 2, 2,128,128,128,128,128,128,128,128, 57, + 2, 2, 2, 2, 2, 2, 2,112,112,112,112,112,112,112, 2,122, + 122,122,122,122,122,122,122,130,130,130, 2, 2, 2, 2, 2,165, + 165,165,165,165,165, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3,149, + 149,149,149,149,149,149,149, 94, 94, 94, 94, 94, 94, 2, 2,129, + 129,129,129,129,129,129,129,107,107,107,107,107, 2, 2,107,107, + 107,107,107,107,107,107,107,107,107,107,107,107, 2, 2, 2,171, + 171,171,171,171,171, 2,171,123,123,123,123,123,123, 2, 2,102, + 102, 2, 2, 2, 2, 2, 2,154,154,154,154,154,154,154, 2, 2, + 2,150,150,150,150,150,150,169,169, 2, 2, 2, 2, 2, 2,138, + 138,138,138,138,138,138, 2,103,103,103,103,103,103, 2, 2,119, + 119, 2,119,119,119,119,119, 2, 2, 0, 0, 0, 0, 0, 0, 3, + 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 19, + 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 26, 26, 0, 0, 0, 0, 9, 9, 9, 9, 0, 9, 9, 9, 2, + 2, 9, 9, 9, 9, 0, 9, 2, 2, 2, 2, 9, 0, 9, 0, 9, + 9, 9, 2, 9, 2, 9, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, + 9, 55, 55, 55, 55, 55, 55, 6, 6, 6, 6, 6, 1, 1, 6, 4, + 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 2, 2, 2, 2, 14, 14, + 14, 14, 14, 14, 2, 2, 2, 3, 3, 3, 3, 0, 3, 3, 3, 3, + 3, 3, 0, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, + 3, 3, 3, 3, 3, 3, 3, 37, 37, 37, 37, 37, 37, 2, 37, 37, + 37, 37, 2, 2, 37, 37, 37, 38, 38, 2, 2, 2, 2, 2, 2, 64, + 64, 64, 2, 2, 64, 64, 64, 90, 90, 90, 90, 90, 90, 2, 2, 90, + 90, 90, 90, 90, 90, 90, 2, 95, 95, 95, 95, 2, 2, 95, 2, 37, + 37, 37, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 3, 3, + 3, 0, 3, 3, 3, 3, 3, 7, 1, 1, 1, 1, 7, 7, 7, 7, + 7, 7, 7, 0, 0, 7, 7, 5, 5, 5, 5, 2, 5, 5, 5, 5, + 2, 2, 5, 5, 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, + 2, 5, 2, 2, 2, 5, 5, 5, 5, 2, 2, 5, 5, 5, 5, 5, + 2, 2, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, + 2, 2, 2, 5, 5, 2, 5, 5, 5, 5, 5, 2, 2, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 2, 2, 11, 11, 11, 2, 11, 11, 11, 11, + 2, 2, 11, 11, 11, 11, 11, 11, 2, 11, 11, 11, 11, 11, 11, 11, + 2, 11, 11, 2, 11, 11, 2, 11, 11, 2, 2, 11, 2, 11, 11, 11, + 2, 2, 11, 11, 11, 2, 2, 2, 11, 2, 2, 2, 2, 2, 2, 2, + 11, 11, 11, 11, 2, 11, 2, 2, 2, 2, 2, 2, 2, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 2, 2, 10, 10, 10, 2, 10, 10, 10, 10, + 10, 2, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, 10, 10, 10, 10, + 2, 10, 10, 2, 10, 10, 10, 10, 10, 2, 2, 10, 10, 10, 10, 10, + 10, 2, 10, 10, 10, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2, 10, + 10, 10, 10, 2, 2, 10, 10, 10, 10, 2, 2, 2, 2, 2, 2, 2, + 10, 10, 10, 10, 10, 10, 10, 2, 21, 21, 21, 2, 21, 21, 21, 21, + 2, 2, 21, 21, 21, 21, 21, 21, 2, 21, 21, 21, 21, 21, 21, 21, + 2, 21, 21, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 21, 21, 21, + 2, 2, 21, 21, 21, 2, 2, 2, 2, 2, 2, 2, 21, 21, 21, 2, + 2, 2, 2, 21, 21, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 2, + 2, 22, 22, 2, 22, 22, 22, 2, 22, 22, 2, 22, 2, 22, 22, 2, + 2, 2, 22, 22, 2, 2, 2, 22, 22, 2, 2, 2, 2, 22, 22, 22, + 2, 2, 2, 2, 2, 2, 22, 2, 2, 2, 2, 2, 2, 22, 22, 22, + 22, 22, 2, 2, 2, 2, 2, 23, 23, 2, 2, 23, 23, 23, 23, 23, + 2, 23, 23, 23, 23, 2, 2, 2, 2, 2, 2, 2, 23, 23, 2, 23, + 23, 23, 2, 23, 23, 2, 2, 23, 23, 23, 23, 2, 2, 23, 23, 2, + 2, 2, 2, 2, 2, 2, 23, 16, 16, 16, 16, 2, 16, 16, 16, 16, + 16, 2, 2, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 2, 2, 2, + 2, 2, 2, 2, 16, 16, 2, 2, 2, 2, 2, 16, 16, 16, 2, 16, + 16, 16, 16, 2, 2, 16, 16, 2, 16, 16, 16, 2, 2, 2, 2, 2, + 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 20, 2, 2, 20, 20, 2, + 36, 36, 36, 2, 36, 36, 36, 2, 2, 36, 36, 36, 36, 36, 36, 36, + 36, 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 36, 2, 2, 2, + 2, 36, 2, 2, 2, 2, 36, 36, 36, 36, 36, 36, 2, 36, 2, 2, + 2, 2, 2, 2, 2, 36, 36, 2, 2, 36, 36, 36, 2, 2, 2, 2, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 2, 2, 2, 2, 0, 24, + 24, 24, 24, 2, 2, 2, 2, 2, 18, 18, 2, 18, 2, 18, 18, 18, + 18, 18, 2, 18, 18, 18, 18, 18, 18, 18, 18, 2, 18, 2, 18, 18, + 18, 18, 18, 18, 18, 2, 2, 18, 18, 18, 18, 18, 2, 18, 2, 18, + 18, 18, 18, 18, 18, 18, 2, 18, 18, 2, 2, 18, 18, 18, 18, 25, + 25, 25, 25, 25, 2, 2, 2, 25, 25, 25, 25, 25, 0, 0, 0, 0, + 25, 25, 2, 2, 2, 2, 2, 8, 8, 8, 0, 8, 8, 8, 8, 30, + 30, 30, 2, 2, 30, 30, 30, 30, 30, 30, 30, 30, 2, 2, 2, 30, + 30, 2, 2, 2, 2, 2, 2, 34, 34, 34, 34, 34, 2, 2, 2, 35, + 35, 35, 0, 0, 0, 35, 35, 35, 2, 2, 2, 2, 2, 2, 2, 45, + 45, 45, 45, 45, 45, 2, 2, 2, 2, 2, 2, 2, 2, 2, 45, 44, + 44, 44, 44, 44, 0, 0, 2, 43, 43, 43, 43, 2, 2, 2, 2, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 2, 46, 46, 46, + 2, 46, 46, 2, 2, 2, 2, 31, 31, 31, 31, 31, 31, 2, 2, 32, + 32, 0, 0, 32, 0, 32, 32, 32, 32, 2, 2, 2, 2, 2, 2, 32, + 2, 2, 2, 2, 2, 2, 2, 32, 32, 32, 2, 2, 2, 2, 2, 28, + 28, 28, 28, 28, 28, 2, 2, 48, 48, 48, 48, 48, 48, 48, 2, 48, + 2, 2, 2, 48, 48, 48, 48, 52, 52, 52, 52, 52, 52, 2, 2, 52, + 52, 52, 52, 52, 2, 2, 2, 58, 58, 58, 58, 2, 2, 2, 2, 58, + 58, 2, 2, 2, 2, 2, 2, 58, 58, 58, 2, 2, 2, 58, 58, 54, + 54, 54, 54, 2, 2, 54, 54, 91, 91, 91, 91, 91, 91, 91, 2, 91, + 91, 91, 91, 91, 2, 2, 91, 91, 91, 91, 91, 91, 91, 2, 2, 1, + 1, 1, 1, 2, 2, 2, 2, 62, 62, 62, 62, 62, 2, 62, 62, 93, + 93, 93, 93, 2, 2, 2, 2, 2, 2, 2, 2, 93, 93, 93, 93, 2, + 2, 2, 70, 70, 70, 70, 70, 70, 70, 2, 2, 2, 70, 70, 70, 6, + 6, 6, 2, 2, 2, 2, 2, 8, 8, 8, 2, 2, 8, 8, 8, 1, + 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, + 1, 0, 2, 2, 2, 2, 2, 19, 19, 19, 19, 19, 19, 9, 9, 9, + 9, 9, 6, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 9, 9, 9, + 9, 19, 19, 19, 19, 9, 9, 9, 9, 9, 19, 19, 19, 19, 19, 6, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 2, + 9, 2, 9, 2, 9, 2, 9, 9, 9, 9, 9, 2, 2, 9, 9, 9, + 9, 9, 9, 2, 9, 9, 9, 2, 2, 9, 9, 9, 2, 9, 9, 0, + 0, 0, 0, 1, 1, 0, 0, 0, 19, 2, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 1, 2, 2, 2, 2, 2, 2, 2, 0, + 0, 0, 0, 0, 0, 9, 0, 0, 0, 19, 19, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 0, 19, 0, 0, 0, 2, 2, 2, 2, 55, + 55, 55, 55, 2, 2, 2, 2, 2, 55, 55, 55, 55, 55, 55, 55, 61, + 2, 2, 2, 2, 2, 2, 2, 13, 13, 2, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 2, 2, 2, 2, 0, 0, 0, 0, 0, 13, 0, 13, 0, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 13, + 13, 13, 13, 0, 0, 0, 0, 2, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 2, 2, 1, 1, 0, 0, 15, 15, 15, 17, + 17, 17, 0, 0, 17, 17, 17, 2, 2, 2, 2, 2, 26, 26, 26, 2, + 12, 12, 12, 12, 12, 12, 12, 2, 2, 2, 2, 2, 2, 2, 0, 12, + 12, 12, 12, 12, 12, 12, 0, 17, 17, 17, 17, 17, 17, 17, 0, 39, + 39, 39, 39, 39, 2, 2, 2, 39, 39, 39, 39, 39, 39, 39, 2, 77, + 77, 77, 77, 2, 2, 2, 2, 0, 0, 19, 19, 19, 19, 19, 19, 0, + 0, 0, 19, 19, 19, 19, 19, 2, 19, 19, 19, 19, 19, 19, 19, 60, + 60, 60, 60, 60, 2, 2, 2, 75, 75, 75, 75, 75, 75, 2, 2, 2, + 2, 2, 2, 2, 2, 75, 75, 75, 75, 2, 2, 2, 2, 2, 2, 69, + 69, 69, 69, 69, 69, 0, 69, 74, 74, 74, 74, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 74, 12, 12, 12, 12, 12, 2, 2, 2, 84, + 84, 84, 84, 84, 84, 2, 0, 84, 84, 2, 2, 2, 2, 84, 84, 33, + 33, 33, 33, 33, 33, 33, 2, 68, 68, 68, 68, 68, 68, 68, 2, 68, + 68, 68, 68, 68, 68, 2, 2, 68, 68, 2, 2, 68, 68, 68, 68, 92, + 92, 92, 2, 2, 2, 2, 2, 2, 2, 2, 92, 92, 92, 92, 92, 87, + 87, 87, 87, 87, 87, 87, 2, 19, 19, 19, 0, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 9, 19, 19, 19, 19, 0, 0, 2, 2, 2, 2, 87, + 87, 87, 87, 87, 87, 2, 2, 87, 87, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 12, 12, 12, 12, 12, 2, 2, 2, 4, 4, 4, 4, 4, 2, + 2, 2, 2, 2, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 2, 14, + 14, 14, 14, 14, 2, 14, 2, 14, 14, 2, 14, 14, 2, 14, 14, 3, + 3, 3, 3, 3, 3, 0, 0, 1, 1, 1, 1, 1, 1, 6, 6, 3, + 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 2, + 2, 12, 12, 12, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 49, + 49, 49, 49, 2, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 2, 49, + 49, 49, 2, 49, 49, 2, 49, 49, 49, 49, 2, 2, 2, 2, 2, 0, + 0, 0, 0, 2, 2, 2, 0, 9, 2, 2, 2, 2, 2, 2, 2, 0, + 0, 0, 0, 0, 1, 2, 2, 71, 71, 71, 71, 71, 2, 2, 2, 67, + 2, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 42, + 42, 42, 42, 2, 2, 2, 2, 2, 2, 2, 2, 2, 42, 42, 42, 41, + 41, 41, 2, 2, 2, 2, 2,118,118,118, 2, 2, 2, 2, 2, 53, + 53, 53, 53, 53, 53, 2, 53, 59, 59, 59, 59, 2, 2, 2, 2, 59, + 59, 59, 59, 59, 59, 2, 2, 50, 50, 50, 50, 50, 50, 2, 2, 50, + 50, 2, 2, 2, 2, 2, 2,104,104,104,104, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2,104,161,161,161, 2,161,161, 2,161,161, + 161, 2,161,161, 2, 2, 2,170,170,170,170, 2, 2, 2, 2,110, + 110,110,110,110,110,110, 2,110,110,110,110,110,110, 2, 2, 19, + 19, 19, 19, 19, 19, 2, 19, 19, 2, 19, 19, 19, 19, 19, 19, 47, + 47, 47, 47, 47, 47, 2, 2, 47, 2, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 2, 47, 47, 2, 2, 2, 47, 2, 2, 47, 81, + 81, 81, 81, 81, 81, 2, 81,116,116,116,116,116,116,116, 2, 2, + 2, 2, 2, 2, 2, 2,116,128,128,128, 2,128,128, 2, 2, 2, + 2, 2,128,128,128,128,128, 66, 66, 66, 66, 2, 2, 2, 66, 72, + 72, 2, 2, 2, 2, 2, 72,173,173, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 97, 97, 97, 97, 2, 2, 97, 97, 97, 97, 97, 97, 57, + 57, 57, 57, 2, 57, 57, 2, 2, 2, 2, 2, 57, 57, 57, 57, 57, + 57, 57, 57, 2, 57, 57, 57, 2, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 2, 2, 57, 57, 57, 2, 2, 2, 2, 57, 2, + 2, 2,112,112,112,112,112, 78, 78, 78, 78, 78, 78, 2, 2, 2, + 78, 78, 78, 78, 78, 78, 78, 83, 83, 83, 83, 83, 83, 2, 2, 82, + 82, 82, 2, 2, 2, 2, 2,122,122, 2, 2, 2, 2, 2, 2, 2, + 122,122,122,122, 2, 2, 2, 2,122,122,122,122,122,122,122, 89, + 2, 2, 2, 2, 2, 2, 2, 2, 2,130,130,130,130,130,130,144, + 144, 2, 2, 2, 2, 2, 2, 2,165,165,165,165,165,165,165, 2, + 2, 2, 2, 2, 2,165,165, 3, 3, 3, 3, 3, 3, 3, 2,156, + 156, 2,156,156,156, 2, 2,156,156, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2,148,148, 2, 2, 2, 2, 2, 2,158, + 158, 2, 2, 2, 2, 2, 2,153,153,153,153, 2, 2, 2, 2,149, + 149,149,149,149,149,149, 2, 2, 2, 94, 94, 94, 94, 94, 94, 2, + 2, 2, 2, 2, 2, 2, 94, 85, 85, 85, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 85, 2, 2,101, 2, 2, 2, 2, 2, 2, 2,101, + 101, 2, 2, 2, 2, 2, 2, 96, 96, 96, 96, 96, 2, 96, 96,111, + 111,111,111,111,111,111, 2, 2, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 2, 2, 2,108,108, 2,108,108,108,108,108,108, + 108, 2, 2, 2, 2, 2, 2,129,129,129,129,129,129,129, 2,129, + 2,129,129,129,129, 2,129,129,129,129,129,129,129, 2,129,129, + 129, 2, 2, 2, 2, 2, 2,109,109,109, 2, 2, 2, 2, 2,109, + 109, 2, 2, 2, 2, 2, 2,107,107,107,107, 2,107,107,107,107, + 2, 2,107,107,107,107,107,107, 2,107,107,107,107,107,107,107, + 2,107,107, 2,107,107,107,107,107, 2, 1,107,107,107,107,107, + 2, 2,107,107,107, 2, 2,107, 2, 2, 2, 2, 2, 2,107, 2, + 2, 2, 2, 2,107,107,107,107,107,107,107, 2, 2,107,107,171, + 171, 2,171, 2, 2,171, 2,171, 2,171, 2, 2,171, 2,171,171, + 171,171, 2,171,171,171,171,171, 2, 2, 2, 2, 2, 2, 2, 2, + 171,171, 2, 2, 2, 2, 2,137,137,137,137, 2,137,137,137,137, + 137, 2, 2, 2, 2, 2, 2,124,124, 2, 2, 2, 2, 2, 2,114, + 114,114,114,114, 2, 2, 2,114,114, 2, 2, 2, 2, 2, 2, 32, + 32, 32, 32, 32, 2, 2, 2, 33, 33, 33, 33, 2, 2, 2, 2,126, + 126,126, 2, 2,126,126,126,126,126,126,126, 2, 2, 2, 2,126, + 126,126,126,126,126,126, 2,142,142,142,142, 2, 2, 2, 2,125, + 125,125, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,125, 2, + 154, 2, 2,154,154,154,154,154,154,154,154, 2,154,154, 2,154, + 154,154,154,154,154, 2,154,154, 2, 2,154,154,154,154,154,154, + 154, 2, 2, 2, 2, 2, 2,150,150,150,150,150, 2, 2, 2,140, + 140,140, 2, 2, 2, 2, 2,121, 2, 2, 2, 2, 2, 2, 2, 7, + 7, 2, 2, 2, 2, 2, 2,133, 2,133,133,133,133,133,133,133, + 133,133,133,133,133,133, 2,133,133,133,133,133,133, 2, 2,133, + 133,133,133,133, 2, 2, 2, 2, 2,134,134,134,134,134,134, 2, + 134,134,134,134,134,134,134,134,134,134,134,134,134,134, 2,138, + 138, 2,138,138,138,138,138, 2, 2,138, 2,138,138, 2,138,138, + 138, 2, 2, 2, 2, 2, 2,143,143,143,143,143,143, 2,143,143, + 2,143,143,143,143,143,143,143,143,143,143,143,143,143, 2,143, + 143, 2,143,143,143,143,143,143, 2, 2, 2, 2, 2, 2, 2,143, + 143, 2, 2, 2, 2, 2, 2,175,175,175,175, 2, 2, 2, 2,175, + 175, 2, 2, 2, 2, 2, 2,145, 2, 2, 2, 2, 2, 2, 2,163, + 2,163,163,163,163,163,163,163,163,163, 2, 2, 2,163,163,163, + 163,163, 2, 2, 2, 2, 2, 86, 2, 2, 2, 2, 2, 2, 2, 22, + 22, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 63, + 63, 2, 2, 2, 2, 2, 2, 63, 63, 63, 63, 63, 63, 63, 2, 63, + 63, 63, 63, 63, 2, 2, 2, 63, 63, 63, 63, 2, 2, 2, 2,157, + 157,157, 2, 2, 2, 2, 2, 80, 80, 80, 80, 80, 80, 2, 2, 80, + 80, 80, 2, 2, 2, 2, 2,127,127,127,127,127,127,127, 2,166, + 166, 2, 2, 2, 2, 2, 2, 79, 2, 2, 2, 2, 2, 2, 2,115, + 115,115,115,115,115,115, 2,115,115, 2, 2, 2, 2,115,115,159, + 159,159,159,159,159,159, 2,159,159, 2, 2, 2, 2, 2, 2,119, + 119,119,119,119,119, 2, 2, 2, 2, 2, 2, 2,119,119,119,167, + 167, 2, 2, 2, 2, 2, 2,146,146,146, 2, 2, 2, 2, 2,172, + 2, 2,172,172,172,172,172,172,172,172,172, 2, 2, 2, 2, 99, + 99, 99, 2, 2, 2, 2, 99, 2, 2, 2, 2, 2, 2, 2, 99,136, + 139, 13, 13,155, 2, 2, 2, 13, 13, 13, 13, 13, 13, 13, 2,155, + 155,155,155,155,155, 2, 2, 2, 2, 2, 2, 2, 2, 2,155,136, + 136,136,136,136,136,136, 2,136,136,136, 2, 2, 2, 2, 2, 17, + 17, 17, 17, 2, 17, 17, 17, 17, 17, 17, 17, 2, 17, 17, 2, 17, + 15, 15, 15, 15, 15, 15, 15, 17, 17, 17, 2, 2, 2, 2, 2, 2, + 2, 15, 2, 2, 2, 2, 2, 15, 15, 15, 2, 2, 17, 2, 2, 2, + 2, 2, 2, 17, 17, 17, 17,139,139,139,139, 2, 2, 2, 2,105, + 105,105, 2, 2, 2, 2, 2,105,105,105,105,105, 2, 2, 2,105, + 2, 2, 2, 2, 2, 2, 2,105,105, 2, 2,105,105,105,105, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 0, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0,131, + 131,131,131, 2, 2, 2, 2, 2, 2, 2,131,131,131,131,131, 2, + 131,131,131,131,131,131,131, 2, 2, 2, 2, 2, 19, 19, 19, 56, + 56, 56, 56, 56, 56, 56, 2, 56, 2, 2, 56, 56, 56, 56, 56, 56, + 56, 2, 56, 56, 2, 56, 56, 56, 56, 56, 2, 2, 2, 2, 2, 6, + 6, 6, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,151, + 151,151,151,151, 2, 2, 2,151,151,151,151,151,151, 2, 2,151, + 151, 2, 2, 2, 2,151,151,160,160,160,160,160,160,160, 2,152, + 152, 2, 2, 2, 2, 2,152,164,164, 2, 2, 2, 2, 2, 2,168, + 168,168, 2, 2, 2, 2,168,174,174,174,174,174,174,174, 2,174, + 174,174,174,174,174, 2, 2, 2, 2, 2, 2, 2, 2,174,174, 30, + 30, 30, 30, 2, 30, 30, 2,113,113,113,113,113, 2, 2,113,113, + 113,113,113,113,113,113, 2,132,132,132,132, 2, 2, 2, 2,132, + 132, 2, 2, 2, 2,132,132, 3, 3, 3, 3, 2, 3, 3, 3, 2, + 3, 3, 3, 3, 3, 3, 3, 2, 3, 2, 3, 2, 2, 2, 2, 2, + 2, 3, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 2, + 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 2, 3, 2, 2, + 3, 3, 3, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 0, 0, 15, 0, 0, 2, 2, 2, 2, 2, 0, + 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 13, + 2, 2, 2, 2, 2, 2, 2, 13, 13, 13, 2, 2, 2, 2, 2, 2, + 0, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 0, 0, 0, 10, 0, 11, 12, 13, 0, 0, 0, 14, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 0, 69, - 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 0, - 0, 0, 0, 0, 0,105,106, 0,107, 0, 0, 0,108, 0,109, 0, - 110, 0,111,112,113, 0,114, 0, 0, 0,115, 0, 0, 0,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 118,119,120,121, 0,122,123,124,125,126, 0,127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,129,130,131, - 132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147, - 148,149,150,151,152,153,154,155,156,157, 0, 0, 0,158,159,160, - 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,162, 0,163, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,164,165, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 167, 0, 0, 0,168,169, 0, 0,170, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,172, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,173, + 0, 0, 0, 16, 17, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 19, + 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,176,177, 0, 0, 0, 0,178,179, 0, 0, 0,180,181,182,183, - 184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199, - 200,201,202,203,204,205,206,207,208,209,210,211,212,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 25, 26, 27, + 28, 29, 30, 0, 0, 31, 32, 0, 33, 0, 34, 0, 35, 0, 0, 0, + 0, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 43, 44, 0, 45, 0, 0, 0, 0, 0, + 0, 46, 47, 0, 0, 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 0, 0, 0, 52, 0, + 0, 53, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, + 0, 55, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, + 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 59, 60, 61, 62, 63, 64, + 65, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 67, 68, 0, 69, 70, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99,100,101,102,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0,105,106, + 0,107, 0, 0, 0,108, 0,109, 0,110, 0,111,112,113, 0,114, + 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,118,119,120,121, 0,122,123, + 124,125,126, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,129,130,131,132,133,134,135,136,137,138, + 139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154, + 155,156,157, 0, 0, 0,158,159,160,161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,162, 0,163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,165, + 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 0, 0, 0,168,169, 0, + 0,170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,173, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,175, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176,177, 0, 0, 0, 0, + 178,179, 0, 0, 0,180,181,182,183,184,185,186,187,188,189,190, + 191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, + 207,208,209,210,211,212,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, }; -static const uint16_t _hb_ucd_u16[10832]= +static const uint16_t _hb_ucd_u16[10784]= { - 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12, - 13, 13, 13, 14, 15, 13, 13, 16, 17, 18, 19, 20, 21, 22, 13, 23, - 13, 13, 13, 24, 25, 11, 11, 11, 11, 26, 11, 27, 28, 29, 30, 31, - 32, 32, 32, 32, 32, 32, 32, 33, 34, 35, 36, 11, 37, 38, 13, 39, - 9, 9, 9, 11, 11, 11, 13, 13, 40, 13, 13, 13, 41, 13, 13, 13, - 13, 13, 13, 42, 9, 43, 11, 11, 44, 45, 32, 46, 47, 48, 49, 50, - 51, 52, 48, 48, 53, 32, 54, 55, 48, 48, 48, 48, 48, 56, 57, 58, - 59, 60, 48, 32, 61, 48, 48, 48, 48, 48, 62, 63, 64, 48, 65, 66, - 48, 67, 68, 69, 48, 70, 71, 48, 72, 73, 48, 48, 74, 32, 75, 32, - 76, 48, 48, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 83, 84, 91, 92, 93, 94, 95, 96, 97, 84, 98, 99, 100, 88, 101, - 102, 83, 84, 103, 104, 105, 88, 106, 107, 108, 109, 110, 111, 112, 94, 113, - 114, 115, 84, 116, 117, 118, 88, 119, 120, 115, 84, 121, 122, 123, 88, 124, - 125, 115, 48, 126, 127, 128, 88, 129, 130, 131, 48, 132, 133, 134, 94, 135, - 136, 48, 48, 137, 138, 139, 140, 140, 141, 48, 142, 143, 144, 145, 140, 140, - 146, 147, 148, 149, 150, 48, 151, 152, 153, 154, 32, 155, 156, 157, 140, 140, - 48, 48, 158, 159, 160, 161, 162, 163, 164, 165, 9, 9, 166, 11, 11, 167, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 168, 169, 48, 48, 168, 48, 48, 170, 171, 172, 48, 48, - 48, 171, 48, 48, 48, 173, 174, 175, 48, 176, 9, 9, 9, 9, 9, 177, - 178, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 179, 48, 180, 181, 48, 48, 48, 48, 182, 183, - 48, 184, 48, 185, 48, 186, 187, 188, 48, 48, 48, 189, 190, 191, 192, 193, - 194, 192, 48, 48, 195, 48, 48, 196, 197, 48, 198, 48, 48, 48, 48, 199, - 48, 200, 201, 202, 203, 48, 204, 205, 48, 48, 206, 48, 207, 208, 209, 209, - 48, 210, 48, 48, 48, 211, 212, 213, 192, 192, 214, 215, 32, 216, 217, 140, - 218, 48, 48, 219, 220, 160, 221, 222, 223, 48, 224, 64, 48, 48, 225, 226, - 48, 48, 227, 228, 229, 64, 48, 230, 231, 9, 9, 232, 233, 234, 235, 236, - 11, 11, 237, 27, 27, 27, 238, 239, 11, 240, 27, 27, 32, 32, 32, 32, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 241, 13, 13, 13, 13, 13, 13, - 242, 243, 242, 242, 243, 244, 242, 245, 246, 246, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 273, 274, 275, 276, 209, 277, 278, 209, 279, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 281, 209, 282, 209, 209, 209, 209, 283, 209, 284, 280, 285, 209, 286, 287, 209, - 209, 209, 176, 140, 288, 140, 272, 272, 272, 289, 209, 209, 209, 209, 290, 272, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 291, 292, 209, 209, 293, - 209, 209, 209, 209, 209, 209, 294, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 295, 296, 272, 297, 209, 209, 298, 280, 299, 280, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 280, 280, 280, 280, 280, 280, 280, 280, 300, 301, 280, 280, 280, 302, 280, 303, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 209, 209, 209, 280, 304, 209, 209, 305, 209, 209, 209, 209, 209, 209, 209, 209, - 9, 9, 9, 11, 11, 11, 306, 307, 13, 13, 13, 13, 13, 13, 308, 309, - 11, 11, 310, 48, 48, 48, 311, 312, 48, 313, 314, 314, 314, 314, 32, 32, - 315, 316, 317, 318, 319, 320, 140, 140, 209, 321, 209, 209, 209, 209, 209, 322, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323, 140, 209, - 324, 325, 326, 327, 136, 48, 48, 48, 48, 328, 178, 48, 48, 48, 48, 329, - 330, 48, 48, 136, 48, 48, 48, 48, 200, 331, 48, 48, 209, 209, 332, 48, - 209, 333, 334, 209, 335, 336, 209, 209, 334, 209, 209, 336, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 209, 209, 209, 209, - 48, 337, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 151, 209, 209, 209, 338, 48, 48, 230, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 339, 48, 340, 140, 13, 13, 341, 342, 13, 343, 48, 48, 48, 48, 344, 345, - 31, 346, 347, 348, 13, 13, 13, 349, 350, 351, 352, 353, 354, 355, 140, 356, - 357, 48, 358, 359, 48, 48, 48, 360, 361, 48, 48, 362, 363, 192, 32, 364, - 64, 48, 365, 48, 366, 367, 48, 151, 76, 48, 48, 368, 369, 370, 371, 372, - 48, 48, 373, 374, 375, 376, 48, 377, 48, 48, 48, 378, 379, 380, 381, 382, - 383, 384, 314, 11, 11, 385, 386, 11, 11, 11, 11, 11, 48, 48, 387, 192, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 388, 48, 389, 48, 48, 206, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 204, 48, 48, 48, 48, 48, 48, 207, 140, 140, - 392, 393, 394, 395, 396, 48, 48, 48, 48, 48, 48, 397, 398, 399, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 400, 209, 48, 48, 48, 48, 401, 48, 48, 402, 140, 140, 403, - 32, 404, 32, 405, 406, 407, 408, 409, 48, 48, 48, 48, 48, 48, 48, 410, - 411, 2, 3, 4, 5, 412, 413, 414, 48, 415, 48, 200, 416, 417, 418, 419, - 420, 48, 172, 421, 204, 204, 140, 140, 48, 48, 48, 48, 48, 48, 48, 71, - 422, 272, 272, 423, 273, 273, 273, 424, 425, 426, 427, 140, 140, 209, 209, 428, - 140, 140, 140, 140, 140, 140, 140, 140, 48, 151, 48, 48, 48, 100, 429, 430, - 48, 48, 431, 48, 432, 48, 48, 433, 48, 434, 48, 48, 435, 436, 140, 140, - 9, 9, 437, 11, 11, 48, 48, 48, 48, 204, 192, 9, 9, 438, 11, 439, - 48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 48, 48, 48, 388, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 313, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140, - 448, 48, 48, 449, 48, 450, 48, 451, 48, 200, 452, 140, 140, 140, 48, 453, - 48, 454, 48, 455, 48, 207, 140, 140, 48, 48, 48, 456, 272, 457, 272, 272, - 458, 459, 48, 460, 461, 462, 48, 463, 48, 464, 140, 140, 465, 48, 466, 467, - 48, 48, 48, 468, 48, 469, 48, 470, 48, 471, 472, 140, 140, 140, 140, 140, - 48, 48, 48, 48, 196, 140, 140, 140, 9, 9, 9, 473, 11, 11, 11, 474, - 48, 48, 475, 192, 476, 9, 477, 11, 478, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 272, 479, 48, 48, 480, 481, 482, 483, 140, 484, - 48, 464, 485, 48, 62, 486, 140, 48, 487, 140, 140, 48, 488, 140, 48, 313, - 489, 48, 48, 490, 491, 457, 492, 493, 223, 48, 48, 494, 495, 48, 196, 192, - 496, 48, 497, 498, 499, 48, 48, 500, 223, 48, 48, 501, 502, 503, 504, 505, - 48, 97, 506, 507, 508, 140, 140, 140, 509, 510, 511, 48, 48, 512, 513, 192, - 514, 83, 84, 515, 516, 517, 518, 519, 520, 48, 48, 521, 522, 523, 524, 140, - 48, 48, 48, 525, 526, 527, 481, 140, 48, 48, 48, 528, 529, 192, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 530, 531, 532, 533, 140, 140, - 48, 48, 48, 534, 535, 192, 536, 140, 48, 48, 537, 538, 192, 539, 540, 140, - 48, 541, 542, 543, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 48, 506, 544, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 545, - 546, 547, 48, 548, 549, 192, 140, 140, 140, 140, 550, 48, 48, 551, 552, 140, - 553, 48, 48, 554, 555, 556, 48, 48, 557, 558, 559, 48, 48, 48, 48, 196, - 560, 140, 140, 140, 140, 140, 561, 140, 140, 140, 140, 140, 48, 48, 562, 192, - 84, 48, 530, 563, 564, 148, 175, 565, 48, 566, 567, 568, 140, 140, 140, 140, - 569, 48, 48, 570, 571, 192, 572, 48, 573, 574, 192, 48, 48, 575, 192, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 576, - 577, 115, 48, 578, 579, 580, 140, 140, 140, 140, 140, 100, 272, 581, 582, 583, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 207, 140, 140, 140, 140, 140, 140, - 273, 273, 273, 273, 273, 273, 584, 585, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 388, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 586, - 48, 48, 48, 587, 588, 589, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 71, - 48, 48, 48, 48, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 590, 591, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 592, - 48, 48, 48, 593, 594, 595, 596, 597, 48, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 598, 48, 599, 192, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 9, 9, 11, 11, 272, 600, 9, 601, 11, 602, 140, 140, - 48, 48, 48, 48, 603, 604, 605, 605, 606, 607, 140, 140, 140, 140, 608, 609, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 199, 140, 610, - 48, 200, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 48, 611, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 612, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 611, 613, 140, 614, 615, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 206, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 48, 48, 48, 48, 48, 71, 151, 196, 616, 617, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 618, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 619, 209, 427, 209, 620, - 32, 32, 216, 32, 621, 209, 209, 209, 209, 209, 209, 209, 322, 140, 140, 140, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323, - 209, 209, 622, 209, 209, 209, 623, 624, 625, 209, 626, 209, 209, 209, 288, 140, - 209, 209, 209, 209, 627, 140, 140, 140, 140, 140, 140, 140, 272, 628, 272, 628, - 209, 209, 209, 209, 209, 338, 272, 461, 140, 140, 140, 140, 140, 140, 140, 140, - 9, 629, 11, 630, 631, 632, 242, 9, 633, 634, 635, 636, 637, 9, 629, 11, - 638, 639, 11, 640, 641, 642, 643, 9, 644, 11, 9, 629, 11, 630, 631, 11, - 242, 9, 633, 643, 9, 644, 11, 9, 629, 11, 645, 9, 646, 647, 648, 649, - 11, 650, 9, 651, 652, 653, 654, 11, 655, 9, 656, 11, 657, 539, 539, 539, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 32, 32, 32, 658, 32, 32, 659, 660, 661, 662, 45, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 663, 664, 665, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 666, 667, 668, 27, 27, 27, 669, 140, 670, 140, 140, 140, 140, 140, 140, 140, - 48, 48, 151, 671, 672, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 673, 140, 48, 48, 674, 675, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 676, 192, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 590, 677, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 200, 678, 679, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 680, 200, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 681, 621, 140, 140, - 9, 9, 633, 11, 682, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 504, 272, 272, 683, 684, 140, 140, 140, 140, - 504, 272, 685, 686, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 687, 48, 688, 689, 690, 691, 692, 693, 694, 206, 695, 206, 140, 140, 140, 696, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 209, 209, 697, 209, 209, 209, 209, 209, 209, 322, 333, 698, 698, 698, 209, 323, - 699, 209, 209, 209, 209, 209, 209, 209, 209, 209, 700, 140, 140, 140, 701, 209, - 702, 209, 209, 697, 703, 704, 323, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 705, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 706, 426, 426, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 176, 697, 427, - 697, 209, 209, 209, 707, 176, 209, 209, 707, 209, 700, 697, 704, 708, 140, 140, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 707, 700, 426, 709, 209, 209, 209, 710, 711, 712, 703, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 713, 209, 209, 209, 209, 209, 714, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 204, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 100, 48, - 48, 48, 48, 48, 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 71, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 207, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 715, 140, 587, 587, 587, 587, 587, 587, 140, 140, 140, 140, 140, 140, 140, 140, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 140, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 716, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 717, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 3, 1, 2, 2, 3, - 0, 0, 0, 0, 0, 4, 0, 4, 2, 2, 5, 2, 2, 2, 5, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 7, 8, 0, 0, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 16, 17, 14, 14, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 20, 21, 21, 21, 22, 20, 21, 21, 21, 21, - 21, 23, 24, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 27, 28, 26, - 29, 30, 31, 32, 31, 31, 31, 31, 33, 34, 35, 31, 31, 31, 36, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 29, 31, 31, 31, 31, - 37, 38, 37, 37, 37, 37, 37, 37, 37, 39, 31, 31, 31, 31, 31, 31, - 40, 40, 40, 40, 40, 40, 41, 26, 42, 42, 42, 42, 42, 42, 42, 43, - 44, 44, 44, 44, 44, 45, 44, 46, 47, 47, 47, 48, 37, 49, 31, 31, - 31, 31, 50, 31, 31, 31, 31, 31, 31, 31, 31, 31, 51, 31, 31, 31, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 52, 54, 52, 52, 52, - 55, 56, 57, 58, 58, 59, 60, 61, 56, 62, 63, 64, 65, 58, 58, 66, - 67, 68, 69, 70, 70, 71, 72, 73, 68, 74, 75, 76, 77, 70, 78, 26, - 79, 80, 81, 82, 82, 83, 84, 85, 80, 86, 87, 26, 88, 82, 89, 90, - 91, 92, 93, 94, 94, 95, 96, 97, 92, 98, 99, 100, 101, 94, 94, 26, - 102, 103, 104, 105, 106, 103, 107, 108, 103, 104, 109, 26, 110, 107, 107, 111, - 112, 113, 114, 112, 112, 114, 112, 115, 113, 116, 117, 118, 119, 112, 120, 112, - 121, 122, 123, 121, 121, 123, 124, 125, 122, 126, 127, 128, 129, 121, 130, 26, - 131, 132, 133, 131, 131, 131, 131, 131, 132, 133, 134, 131, 135, 131, 131, 131, - 136, 137, 138, 139, 137, 137, 140, 141, 138, 142, 143, 137, 144, 137, 145, 26, - 146, 147, 147, 147, 147, 147, 147, 148, 147, 147, 147, 149, 26, 26, 26, 26, - 150, 151, 152, 152, 153, 152, 152, 154, 155, 156, 152, 157, 26, 26, 26, 26, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, 158, 158, 158, 160, 159, 158, - 158, 158, 158, 159, 158, 158, 158, 161, 158, 161, 162, 163, 26, 26, 26, 26, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 165, 165, 165, 165, 166, 167, 165, 165, 165, 165, 165, 168, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 172, 171, 170, 170, 170, 170, - 170, 171, 170, 170, 170, 170, 171, 172, 171, 170, 172, 170, 170, 170, 170, 170, - 170, 170, 171, 170, 170, 170, 170, 170, 170, 170, 170, 173, 170, 170, 170, 174, - 170, 170, 170, 175, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 177, 177, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 179, 179, 179, 180, 181, 181, 181, 181, 181, 181, 181, 181, 181, 182, 181, 183, - 184, 184, 185, 186, 187, 187, 188, 26, 189, 189, 190, 26, 191, 192, 193, 26, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 195, 194, 196, 194, 196, - 197, 198, 198, 199, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 200, - 198, 198, 198, 198, 198, 201, 178, 178, 178, 178, 178, 178, 178, 178, 202, 26, - 203, 203, 203, 204, 203, 205, 203, 205, 206, 203, 207, 207, 207, 208, 209, 26, - 210, 210, 210, 210, 210, 211, 210, 210, 210, 212, 210, 213, 194, 194, 194, 194, - 214, 214, 214, 215, 216, 216, 216, 216, 216, 216, 216, 217, 216, 216, 216, 218, - 216, 219, 216, 219, 216, 220, 9, 9, 9, 9, 9, 221, 9, 222, 26, 26, - 223, 223, 223, 223, 223, 223, 223, 223, 223, 224, 223, 223, 223, 223, 223, 223, - 225, 225, 225, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 226, 227, 228, - 229, 229, 229, 229, 229, 229, 229, 230, 229, 231, 232, 232, 232, 232, 232, 232, - 18, 233, 165, 165, 165, 165, 165, 234, 225, 26, 235, 9, 236, 237, 238, 239, - 2, 2, 2, 2, 240, 241, 2, 2, 2, 2, 2, 242, 243, 244, 2, 245, - 2, 2, 2, 2, 2, 2, 2, 246, 9, 9, 9, 9, 9, 9, 9, 9, - 14, 14, 247, 247, 14, 14, 14, 14, 247, 247, 14, 248, 14, 14, 14, 247, - 14, 14, 14, 14, 14, 14, 249, 14, 249, 14, 250, 251, 14, 14, 252, 253, - 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 256, 257, - 0, 258, 2, 259, 0, 0, 0, 0, 260, 26, 9, 9, 9, 9, 261, 26, - 0, 0, 0, 0, 262, 263, 4, 0, 0, 264, 0, 0, 2, 2, 2, 2, - 2, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 260, 26, 26, 0, 266, 26, 26, 0, 0, 0, 0, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 2, 2, 2, 2, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 270, 271, - 165, 165, 165, 165, 166, 167, 272, 272, 272, 272, 272, 272, 272, 273, 274, 273, - 170, 170, 172, 26, 172, 172, 172, 172, 172, 172, 172, 172, 18, 18, 18, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 275, 26, 26, 26, 26, - 276, 276, 276, 277, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 278, 26, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 279, 26, 26, 26, 0, 0, - 280, 0, 0, 0, 281, 282, 0, 283, 284, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 286, 287, 288, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 290, - 291, 292, 292, 292, 292, 292, 293, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 169, 294, 0, 0, 292, 292, 292, 292, 0, 0, 0, 0, 275, 295, 289, 289, - 169, 169, 169, 294, 0, 0, 0, 0, 0, 0, 0, 0, 169, 169, 169, 296, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289, 289, 289, 289, 289, 297, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 0, 0, 0, 0, 0, - 276, 276, 276, 276, 276, 276, 276, 276, 0, 0, 0, 0, 0, 0, 0, 0, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 299, 298, 298, 298, 298, 298, 298, 300, 26, 301, 301, 301, 301, 301, 301, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 303, 26, 26, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 26, - 0, 0, 0, 0, 305, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 306, 2, 2, 2, 2, 2, 2, 2, 2, 2, 259, 26, 26, 307, 2, - 308, 308, 308, 308, 308, 309, 0, 260, 310, 310, 310, 310, 310, 310, 310, 26, - 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 311, 314, 52, 52, 52, 52, - 315, 315, 315, 315, 315, 316, 317, 317, 317, 317, 318, 319, 169, 169, 169, 320, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 322, 321, 323, 164, 164, 164, 324, - 325, 325, 325, 325, 325, 325, 326, 26, 325, 327, 325, 328, 164, 164, 164, 164, - 329, 329, 329, 329, 329, 329, 329, 329, 330, 26, 26, 331, 332, 332, 333, 26, - 334, 334, 334, 26, 172, 172, 2, 2, 2, 2, 2, 335, 336, 337, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 332, 332, 332, 332, 332, 338, 332, 339, - 169, 169, 169, 169, 340, 26, 169, 169, 294, 341, 169, 169, 169, 169, 169, 340, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 279, 276, 276, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 342, 26, 26, 26, 26, - 343, 26, 344, 345, 25, 25, 346, 347, 348, 25, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 349, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 26, 26, 26, 26, 31, 31, - 9, 9, 0, 260, 9, 350, 0, 0, 0, 0, 351, 0, 258, 352, 353, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 354, - 355, 0, 0, 0, 1, 2, 2, 3, 1, 2, 2, 3, 356, 289, 288, 289, - 289, 289, 289, 357, 169, 169, 169, 294, 358, 358, 358, 359, 258, 258, 26, 360, - 361, 362, 361, 361, 363, 361, 361, 364, 361, 365, 361, 365, 26, 26, 26, 26, - 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, 366, - 367, 0, 0, 0, 0, 0, 368, 0, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 253, 0, 369, 370, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 371, - 372, 372, 372, 373, 374, 374, 374, 374, 374, 374, 375, 26, 376, 0, 0, 352, - 377, 377, 377, 377, 378, 379, 380, 380, 380, 381, 382, 382, 382, 382, 382, 383, - 384, 384, 384, 385, 386, 386, 386, 386, 387, 386, 388, 26, 26, 26, 26, 26, - 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, 390, 390, 390, 390, 390, 390, - 391, 391, 391, 392, 391, 393, 394, 394, 394, 394, 395, 394, 394, 394, 394, 395, - 396, 396, 396, 396, 396, 26, 397, 397, 397, 397, 397, 397, 398, 399, 400, 401, - 400, 401, 402, 400, 403, 400, 403, 404, 405, 405, 405, 405, 405, 405, 406, 26, - 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, 407, - 407, 407, 407, 407, 407, 407, 408, 26, 407, 407, 409, 26, 407, 26, 26, 26, - 410, 2, 2, 2, 2, 2, 411, 412, 26, 26, 26, 26, 26, 26, 26, 26, - 413, 414, 415, 415, 415, 415, 416, 417, 418, 418, 419, 418, 420, 420, 420, 420, - 421, 421, 421, 422, 423, 421, 26, 26, 26, 26, 26, 26, 424, 424, 425, 426, - 427, 427, 427, 428, 429, 429, 429, 430, 431, 431, 431, 432, 26, 26, 26, 26, - 433, 433, 433, 433, 434, 434, 434, 435, 434, 434, 436, 434, 434, 434, 434, 434, - 437, 438, 439, 440, 441, 441, 442, 443, 441, 444, 441, 444, 445, 445, 445, 445, - 446, 446, 446, 446, 26, 26, 26, 26, 447, 447, 447, 447, 448, 449, 448, 26, - 450, 450, 450, 450, 450, 450, 451, 452, 453, 453, 454, 453, 455, 455, 456, 455, - 457, 457, 458, 459, 26, 460, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 462, 26, 26, 26, 26, 26, 26, - 463, 463, 463, 463, 463, 463, 464, 26, 463, 463, 463, 463, 463, 463, 464, 465, - 466, 466, 466, 466, 466, 26, 466, 467, 468, 468, 468, 468, 469, 470, 468, 468, - 469, 471, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 31, 31, 31, 472, - 473, 473, 473, 473, 473, 474, 475, 26, 476, 26, 31, 477, 26, 26, 26, 476, - 478, 478, 478, 478, 478, 26, 479, 479, 479, 479, 479, 480, 26, 26, 481, 481, - 481, 482, 26, 26, 26, 26, 483, 483, 483, 484, 26, 26, 485, 485, 486, 26, - 487, 487, 487, 487, 487, 487, 487, 487, 487, 488, 489, 487, 487, 487, 488, 490, - 491, 491, 491, 491, 491, 491, 491, 491, 492, 493, 494, 494, 494, 495, 494, 496, - 497, 497, 497, 497, 497, 497, 498, 497, 497, 26, 499, 499, 499, 499, 500, 26, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, 502, 137, 503, 26, - 504, 504, 505, 504, 504, 504, 504, 504, 506, 26, 26, 26, 26, 26, 26, 26, - 507, 508, 509, 510, 509, 511, 512, 512, 512, 512, 512, 512, 512, 513, 512, 514, - 515, 516, 517, 518, 518, 519, 520, 521, 516, 522, 523, 524, 525, 526, 526, 26, - 527, 528, 527, 527, 527, 527, 529, 527, 530, 531, 529, 532, 533, 26, 26, 26, - 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, 535, 536, 26, 26, 26, - 537, 537, 537, 537, 537, 537, 537, 537, 537, 26, 537, 538, 26, 26, 26, 26, - 539, 539, 539, 539, 539, 539, 540, 539, 539, 539, 539, 540, 26, 26, 26, 26, - 541, 541, 541, 541, 541, 541, 541, 541, 542, 26, 541, 543, 198, 544, 26, 26, - 545, 545, 545, 545, 545, 545, 545, 546, 545, 546, 164, 164, 547, 26, 26, 26, - 548, 548, 548, 549, 548, 550, 548, 548, 551, 26, 26, 26, 26, 26, 26, 26, - 552, 552, 552, 552, 552, 552, 552, 553, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 555, 556, - 557, 558, 559, 560, 560, 560, 561, 562, 557, 26, 560, 563, 26, 26, 26, 26, - 26, 26, 26, 26, 564, 565, 564, 564, 564, 564, 564, 565, 566, 26, 26, 26, - 567, 567, 567, 567, 567, 567, 567, 567, 567, 26, 568, 568, 568, 568, 568, 568, - 568, 568, 568, 568, 569, 26, 178, 178, 570, 570, 570, 570, 570, 570, 570, 571, - 52, 572, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 501, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 573, 573, 573, 573, 574, 26, 573, 574, - 575, 576, 575, 575, 575, 575, 577, 575, 578, 26, 575, 575, 575, 579, 580, 580, - 580, 580, 581, 580, 580, 582, 583, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 584, 585, 586, 586, 586, 586, 584, 587, 586, 26, 586, 588, 589, 590, 591, 591, - 591, 592, 593, 594, 591, 595, 596, 596, 596, 596, 596, 597, 596, 598, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 599, 599, 599, 600, - 601, 601, 602, 601, 601, 601, 601, 603, 601, 601, 601, 604, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 605, 26, 107, 107, 107, 107, 107, 107, 606, 607, - 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, - 608, 608, 608, 609, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 610, 611, 26, - 608, 608, 608, 608, 608, 608, 608, 608, 612, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, 614, 26, - 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, - 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 616, 26, 615, 615, 615, 615, - 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, 617, - 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, - 618, 618, 618, 618, 618, 618, 618, 618, 619, 26, 26, 26, 26, 26, 26, 26, - 620, 620, 620, 620, 620, 620, 620, 621, 26, 26, 26, 26, 26, 26, 26, 26, - 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, - 304, 304, 304, 304, 304, 304, 304, 622, 623, 623, 623, 624, 623, 625, 626, 626, - 626, 626, 626, 626, 626, 626, 626, 627, 626, 628, 629, 629, 629, 630, 630, 26, - 631, 631, 631, 631, 631, 631, 631, 631, 632, 26, 631, 633, 633, 631, 631, 634, - 631, 631, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 635, 635, 635, 635, 635, 635, 635, 636, - 26, 26, 26, 26, 26, 26, 26, 26, 637, 637, 637, 637, 637, 637, 637, 637, - 637, 637, 637, 638, 639, 639, 639, 640, 639, 639, 641, 26, 26, 26, 26, 26, - 642, 642, 642, 642, 642, 642, 642, 642, 642, 643, 642, 642, 642, 642, 642, 642, - 642, 644, 642, 642, 26, 26, 26, 26, 26, 26, 26, 26, 645, 26, 646, 26, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, 648, 648, 649, 26, 26, 26, 26, 650, - 647, 647, 647, 651, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 647, 652, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 653, 654, - 655, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 656, 26, 657, 26, 26, 26, 658, 26, 659, 26, 660, 660, - 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, - 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 660, 661, - 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 662, 663, 662, 664, - 662, 665, 662, 666, 352, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 369, - 0, 0, 0, 0, 0, 0, 352, 667, 0, 0, 668, 26, 0, 0, 668, 26, - 9, 9, 9, 9, 9, 221, 9, 9, 669, 26, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 352, 26, 26, 26, 26, 26, 26, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 275, 26, - 0, 0, 0, 0, 258, 355, 0, 0, 0, 0, 0, 0, 670, 671, 0, 672, - 673, 674, 0, 0, 0, 675, 0, 0, 0, 0, 0, 0, 0, 266, 26, 26, - 14, 14, 14, 14, 14, 14, 14, 14, 247, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, 352, 26, 0, 0, 352, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 258, 26, 0, 0, 0, 668, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, - 0, 0, 0, 255, 676, 677, 0, 678, 679, 0, 0, 0, 0, 0, 0, 0, - 680, 681, 255, 255, 0, 0, 0, 682, 683, 667, 684, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, - 685, 685, 685, 685, 685, 685, 685, 685, 685, 685, 685, 685, 685, 685, 685, 685, - 685, 686, 26, 687, 688, 685, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 2, 2, 2, 343, 689, 412, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 690, 269, 269, 691, 692, 693, 18, 18, 18, 18, 18, 18, 18, 694, 26, 26, - 26, 695, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 696, 696, 696, 696, 696, 697, 696, 698, 696, 699, 26, 26, 26, 26, 26, 26, - 26, 26, 700, 700, 700, 701, 26, 26, 702, 702, 702, 702, 702, 702, 702, 703, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 704, 704, 704, 704, 704, 705, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 706, 706, 706, 706, 706, 707, - 26, 26, 26, 26, 26, 26, 26, 26, 708, 708, 708, 709, 708, 708, 710, 711, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 172, 712, 170, 172, - 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, 713, - 713, 713, 713, 713, 713, 713, 713, 713, 714, 713, 715, 26, 26, 26, 26, 26, - 716, 716, 716, 716, 716, 716, 716, 716, 716, 717, 716, 718, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 355, 0, - 0, 0, 0, 0, 0, 0, 369, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 355, 0, 0, 0, 0, 0, 0, 275, 26, 26, 26, 26, 26, 26, 26, 26, - 719, 31, 31, 31, 720, 721, 722, 723, 724, 725, 720, 726, 720, 722, 722, 727, - 31, 728, 31, 729, 730, 728, 31, 729, 26, 26, 26, 26, 26, 26, 731, 26, - 0, 0, 0, 0, 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 352, 26, 0, 258, 355, 0, 355, 0, 355, 0, 0, 0, 275, 26, - 0, 0, 0, 0, 0, 275, 26, 26, 26, 26, 26, 26, 732, 0, 0, 0, - 733, 26, 0, 0, 0, 0, 0, 352, 0, 668, 260, 26, 275, 26, 26, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 734, 0, 369, 0, 369, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, 0, 352, 668, 26, - 0, 352, 0, 0, 0, 0, 0, 0, 0, 26, 0, 260, 0, 0, 0, 0, - 0, 26, 0, 0, 0, 275, 0, 352, 260, 26, 0, 668, 26, 26, 26, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 275, 0, 369, - 0, 735, 0, 0, 0, 0, 0, 0, 258, 736, 0, 737, 0, 367, 0, 668, - 0, 0, 351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 266, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 26, 26, 26, 26, - 276, 276, 276, 279, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, - 276, 276, 276, 276, 276, 279, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 738, 26, 276, 276, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 279, 26, 26, 26, 26, - 276, 276, 276, 279, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 739, 276, 276, 276, 276, 276, 276, - 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 342, - 740, 26, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 224, 224, 768, 424, 432, 440, 448, 776, 224, 224, 784, 792, 72, 800, 40, 808, + 48, 48, 48, 816, 824, 48, 48, 832, 840, 848, 856, 864, 872, 880, 48, 888, + 48, 48, 48, 896, 904, 40, 40, 40, 40, 912, 40, 96, 920, 928, 936, 456, + 64, 64, 64, 64, 64, 64, 64, 944, 952, 960, 968, 40, 976, 984, 48, 992, + 72, 72, 72, 40, 40, 40, 48, 48,1000, 48, 48, 48,1008, 48, 48, 48, + 48, 48, 48,1016, 72,1024, 40, 40,1032, 464, 64,1040,1048, 8,1056,1064, + 1072,1080, 8, 8,1088, 64,1096,1104, 8, 8, 8, 8, 8,1112,1120,1128, + 1136,1144, 8, 64,1152, 8, 8, 8, 8, 8, 472,1160, 232, 8,1168,1176, + 8,1184,1192,1200, 8,1208, 176, 8,1216,1224, 8, 8,1232, 64,1240, 64, + 480, 8, 8,1248,1256,1264,1272,1280,1288, 240, 128,1296,1304,1312, 144,1320, + 1328, 240, 128,1336,1344,1352, 304,1360,1368, 488, 128,1376,1384, 248, 144,1392, + 1400, 240, 128,1408,1416,1424, 144,1432,1440,1448,1456,1464,1472,1480, 304,1488, + 1496, 256, 128,1504,1512,1520, 144,1528,1536, 256, 128,1544,1552,1560, 144,1568, + 1576, 256, 8,1584,1592,1600, 144,1608,1616,1624, 8,1632,1640,1648, 304,1656, + 312, 8, 8,1664,1672,1680, 0, 0,1688, 8,1696,1704,1712,1720, 0, 0, + 1728,1736, 320,1744,1752, 8, 152,1760,1768,1776, 64,1784,1792,1800, 0, 0, + 8, 8,1808,1816, 496,1824,1832,1840,1848,1856, 72, 72,1864, 40, 40,1872, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 504,1880, 8, 8, 504, 8, 8,1888, 512, 520, 8, 8, + 8, 512, 8, 8, 8,1896,1904, 528, 8, 264, 72, 72, 72, 72, 72,1912, + 536, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8,1920, 8,1928,1936, 8, 8, 8, 8,1944,1952, + 8,1960, 8,1968, 8,1976,1984,1992, 8, 8, 8,2000,2008,2016, 80,2024, + 2032, 80, 8, 8,2040, 8, 8, 160,2048, 8,2056, 8, 8, 8, 8, 328, + 8, 120,2064,2072,2080, 8, 112,2088, 8, 8, 184, 8, 192,2096, 24, 24, + 8,2104, 8, 8, 8,2112,2120,2128, 80, 80,2136,2144, 64, 544,2152, 0, + 2160, 8, 8,2168,2176, 496,2184,2192, 336, 8,2200, 232, 8, 8,2208,2216, + 8, 8,2224,2232,2240, 232, 8, 552,2248, 72, 72,2256,2264,2272,2280,2288, + 40, 40,2296, 96, 96, 96,2304,2312, 40,2320, 96, 96, 64, 64, 64, 64, + 48, 48, 48, 48, 48, 48, 48, 48, 48,2328, 48, 48, 48, 48, 48, 48, + 168, 560, 168, 168, 560,2336, 168,2344, 344, 344, 344,2352,2360,2368,2376,2384, + 2392,2400,2408,2416,2424,2432,2440,2448,2456,2464, 568, 568,2472,2480,2488,2496, + 2504,2512,2520,2528,2536, 88, 104, 104,2544,2552,2560, 24,2568,2576, 24,2584, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 2592, 24,2600, 24, 24, 24, 24,2608, 24,2616, 56,2624, 24,2632,2640, 24, + 24, 24, 264, 0, 576, 0, 88, 88, 88,2648, 24, 24, 24, 24,2656, 88, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,2664,2672, 24, 24,2680, + 24, 24, 24, 24, 24, 24,2688, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24,2696,2704, 88,2712, 24, 24,2720, 56,2728, 56, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 56, 56, 56, 56, 56, 56, 56, 56,2736,2744, 56, 56, 56,2752, 56,2760, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 24, 24, 24, 56,2768, 24, 24,2776, 24, 24, 24, 24, 24, 24, 24, 24, + 72, 72, 72, 40, 40, 40,2784,2792, 48, 48, 48, 48, 48, 48,2800,2808, + 40, 40,2816, 8, 8, 8,2824,2832, 8, 200, 208, 208, 208, 208, 64, 64, + 2840,2848,2856,2864,2872,2880, 0, 0, 24,2888, 24, 24, 24, 24, 24, 352, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 272, 0, 24, + 2896,2904,2912,2920, 312, 8, 8, 8, 8,2928, 536, 8, 8, 8, 8,2936, + 2944, 8, 8, 312, 8, 8, 8, 8, 120,2952, 8, 8, 24, 24,2960, 8, + 24, 584, 592, 24,2968, 600, 24, 24, 592, 24, 24, 600, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, + 8,2976, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 152, 24, 24, 24, 608, 8, 8, 552, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 2984, 8,2992, 0, 48, 48,3000,3008, 48,3016, 8, 8, 8, 8,3024,3032, + 456,3040,3048,3056, 48, 48, 48,3064,3072,3080,3088,3096,3104,3112, 0,3120, + 3128, 8,3136,3144, 8, 8, 8,3152,3160, 8, 8,3168,3176, 80, 64,3184, + 232, 8,3192, 8,3200,3208, 8, 152, 480, 8, 8,3216,3224, 360,3232,3240, + 8, 8,3248,3256,3264,3272, 8,3280, 8, 8, 8,3288,3296,3304,3312,3320, + 3328,3336, 208, 40, 40,3344,3352, 40, 40, 40, 40, 40, 8, 8,3360, 80, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 368, 8,3368, 8, 8, 184, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 112, 8, 8, 8, 8, 8, 8, 192, 0, 0, + 3376,3384,3392,3400,3408, 8, 8, 8, 8, 8, 8,3416,3424,3432, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8,3440, 24, 8, 8, 8, 8,3448, 8, 8,3456, 0, 0,3464, + 64,3472, 64,3480,3488,3496,3504,3512, 8, 8, 8, 8, 8, 8, 8,3520, + 3528, 424, 432, 440, 448,3536,3544,3552, 8,3560, 8, 120,3568,3576,3584,3592, + 3600, 8, 520,3608, 112, 112, 0, 0, 8, 8, 8, 8, 8, 8, 8, 176, + 3616, 88, 88,3624, 104, 104, 104,3632,3640, 280, 376, 0, 0, 24, 24,3648, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 152, 8, 8, 8, 248,3656,3664, + 8, 8,3672, 8,3680, 8, 8,3688, 8,3696, 8, 8,3704,3712, 0, 0, + 72, 72,3720, 40, 40, 8, 8, 8, 8, 112, 80, 72, 72,3728, 40,3736, + 8, 8, 616, 8, 8, 8,3744, 624, 624,3752,3760,3768, 8, 8, 8, 368, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 200, 8, 328, 616, 0,3776, 96, 96,3784, 0, 0, 0, 0, + 3792, 8, 8,3800, 8,3808, 8,3816, 8, 120,3824, 0, 0, 0, 8,3832, + 8,3840, 8,3848, 8, 192, 0, 0, 8, 8, 8,3856, 88, 632, 88, 88, + 3864,3872, 8,3880, 640,3888, 8,3896, 8, 648, 0, 0,3904, 8,3912,3920, + 8, 8, 8,3928, 8,3936, 8,3944, 8,3952,3960, 0, 0, 0, 0, 0, + 8, 8, 8, 8, 160, 0, 0, 0, 72, 72, 72,3968, 40, 40, 40,3976, + 8, 8,3984, 80,3992, 72,4000, 40,4008, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88,4016, 8, 8,4024, 656,4032,4040, 0,4048, + 8, 648,4056, 8, 472,4064, 0, 8,4072, 0, 0, 8,4080, 0, 8, 200, + 4088, 8, 8,4096,4104, 632,4112,4120, 336, 8, 8,4128,4136, 8, 160, 80, + 4144, 8,4152,4160,4168, 8, 8,4176, 336, 8, 8,4184,4192,4200, 384,4208, + 8, 488, 664,4216,4224, 0, 0, 0,4232,4240,4248, 8, 8,4256,4264, 80, + 4272, 240, 128,4280,4288,4296,4304,4312,4320, 8, 8,4328,4336,4344,4352, 0, + 8, 8, 8,4360,4368,4376, 656, 0, 8, 8, 8,4384,4392, 80, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 672,4400,4408,4416, 0, 0, + 8, 8, 8,4424,4432, 80,4440, 0, 8, 8,4448,4456, 80, 288,4464, 0, + 8,4472,4480,4488, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 664,4496, 0, 0, 0, 0, 0, 0, 72, 72, 40, 40, 320,4504, + 4512,4520, 8,4528,4536, 80, 0, 0, 0, 0,4544, 8, 8,4552,4560, 0, + 4568, 8, 8,4576,4584,4592, 8, 8,4600,4608,4616, 8, 8, 8, 8, 160, + 4624, 0, 0, 0, 0, 0,4632, 0, 0, 0, 0, 0, 8, 8,4640, 80, + 128, 8, 672,4648,4656, 320, 528,4664, 8,4672,4680,4688, 0, 0, 0, 0, + 4696, 8, 8,4704,4712, 80,4720, 8,4728,4736, 80, 8, 8,4744, 80, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,4752, + 4760, 256, 8,4768,4776,4784, 0, 0, 0, 0, 0, 248, 88,4792,4800,4808, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 192, 0, 0, 0, 0, 0, 0, + 104, 104, 104, 104, 104, 104,4816,4824, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8,4832, + 8, 8, 8, 136,4840,4848, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 176, + 8, 8, 8, 8, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 680,4856, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 8, 160, 8, 120, 360, 8, 8, 8, 8, 120, 80, 8, 112,4864, + 8, 8, 8,4872,4880,4888,4896,4904, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,4912, 8,4920, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 72, 72, 40, 40, 88,4928, 72,4936, 40,4944, 0, 0, + 8, 8, 8, 8,4952,4960, 688, 688,4968,4976, 0, 0, 0, 0,4984,4992, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 328, 0,5000, + 8, 120, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 696, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,5008, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 696,5016, 0,5024,5032, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 184, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 8, 8, 8, 8, 176, 152, 160,5040,5048, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,5056, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,5064, 24, 376, 24,5072, + 64, 64, 544, 64, 704, 24, 24, 24, 24, 24, 24, 24, 352, 0, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 272, + 24, 24,5080, 24, 24, 24,5088,5096,5104, 24,5112, 24, 24, 24, 576, 0, + 24, 24, 24, 24,5120, 0, 0, 0, 0, 0, 0, 0, 88, 712, 88, 712, + 24, 24, 24, 24, 24, 608, 88, 640, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 296, 40, 720, 728,5128, 168, 72, 392,5136,5144,5152,5160, 72, 296, 40, + 5168,5176, 40,5184,5192,5200, 736, 72, 744, 40, 72, 296, 40, 720, 728, 40, + 168, 72, 392, 736, 72, 744, 40, 72, 296, 40,5208, 72,5216,5224,5232,5240, + 40,5248, 72,5256,5264,5272,5280, 40,5288, 72,5296, 40,5304, 288, 288, 288, + 64, 64, 64,5312, 64, 64,5320,5328,5336,5344, 464, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5352,5360,5368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5376,5384,5392, 96, 96, 96,5400, 0,5408, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 152,5416,5424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,5432, 0, 8, 8,5440,5448, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,5456, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 680,5464, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 120,5472,5480, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,5488, 120, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,5496, 704, 0, 0, + 72, 72, 392, 40,5504, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 384, 88, 88,5512,5520, 0, 0, 0, 0, + 384, 88,5528,5536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5544, 8,5552,5560,5568,5576,5584,5592,5600, 184,5608, 184, 0, 0, 0,5616, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 24, 216, 24, 24, 24, 24, 24, 24, 352, 584, 400, 400, 400, 24, 272, + 5624, 24, 24, 24, 24, 24, 24, 24, 24, 24, 408, 0, 0, 0,5632, 24, + 5640, 24, 24, 216, 752, 760, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,5648, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,5656, 280, 280, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 264, 216, 376, + 216, 24, 24, 24, 416, 264, 24, 24, 416, 24, 408, 216, 760,5664, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 416, 408, 280,5672, 24, 24, 24,5680,5688,5696, 752, + 24, 24, 24, 24, 24, 24, 24, 24, 24,5704, 24, 24, 24, 24, 24,5712, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 112, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 112, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 248, 8, + 8, 8, 8, 8, 8, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 176, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 192, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5720, 0, 136, 136, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,5728, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 24, 24, 24, 24, 24, 24, 24, 24,1104, 48, 48,1112,1104, 48, 48,1112, + 24, 24, 24, 24, 24,1288, 24,1288, 48, 48,1512, 48, 48, 48,1512, 48, + 48, 48, 48, 48, 48, 48, 48,2048, 24, 24, 24, 24,2056,2064, 24, 24, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,2072,2080, + 2088,2096, 144, 144,2104, 144, 144, 144, 144, 144, 144, 144,2112, 296, 144, 144, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 2120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120,1520, 592, 592, 592,2128,1520, 592, 592, 592, 592, + 592,2136,2144, 352, 352, 352, 352, 352, 352, 0, 352, 352, 352,2152,2160, 0, + 1528,2168, 56,2176, 56, 56, 56, 56,2184,2192,2200, 56, 56, 56,2208, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,1528, 56, 56, 56, 56, + 496,2216, 496, 496, 496, 496, 496, 496, 496,2224, 56, 56, 56, 56, 56, 56, + 784, 784, 784, 784, 784, 784,2232, 0, 688, 688, 688, 688, 688, 688, 688,2240, + 792, 792, 792, 792, 792,2248, 792,2256,1296,1296,1296,2264, 496,2272, 56, 56, + 56, 56,2280, 56, 56, 56, 56, 56, 56, 56, 56, 56,2288, 56, 56, 56, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,2296, 240,2304, 240, 240, 240, + 2312,1536,2320,1120,1120,2328,2336,2344,1536,2352,2360,2368,2376,1120,1120,2384, + 2392,1544,2400,1304,1304,2408,2416,2424,1544,2432,2440,2448,2456,1304,2464, 0, + 2472,1552,2480,1312,1312,2488,2496,2504,1552,2512,2520, 0,2528,1312,2536,2544, + 2552,1560,2560,1128,1128,2568,2576,2584,1560,2592,2600,2608,2616,1128,1128, 0, + 2624,1320,1568,2632,2640,1320, 504,2648,1320,1568,2656, 0,2664, 504, 504,2672, + 800,1576,1584, 800, 800,1584, 800,2680,1576,2688,2696,2704,2712, 800,2720, 800, + 1136,1592,1600,1136,1136,1600,2728,2736,1592,2744,2752,2760,2768,1136,2776, 0, + 400,1608,1616, 400, 400, 400, 400, 400,1608,1616,2784, 400,2792, 400, 400, 400, + 2800, 808,1624,2808, 808, 808,2816,2824,1624,2832,2840, 808,2848, 808,2856, 0, + 2864, 512, 512, 512, 512, 512, 512,2872, 512, 512, 512,2880, 0, 0, 0, 0, + 2888,2896, 984, 984,2904, 984, 984,2912,2920,2928, 984,2936, 0, 0, 0, 0, + 224, 224, 224, 224, 224, 224, 224, 224, 224,1328, 224, 224, 224,2944,1328, 224, + 224, 224, 224,1328, 224, 224, 224,1632, 224,1632,2952,2960, 0, 0, 0, 0, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 200, 200, 200, 200, 256, 256, 256, 256,1640,1648, 256, 256, 256, 256, 256,2968, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 816, 280, 816, 160, 160, 160, 160, + 160, 816, 160, 160, 160, 160, 816, 280, 816, 160, 280, 160, 160, 160, 160, 160, + 160, 160, 816, 160, 160, 160, 160, 160, 160, 160, 160,2976, 160, 160, 160,2984, + 160, 160, 160,2992, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,1656,1656, + 1336,1336,1336,3000, 408, 408, 408, 408, 408, 408, 408, 408, 408,3008, 408,3016, + 1664,1664,3024,3032,1672,1672,3040, 0,1680,1680,3048, 0,3056,3064,3072, 0, + 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272,3080, 272,1688, 272,1688, + 3088, 248, 248,3096, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,3104, + 248, 248, 248, 248, 248,3112, 80, 80, 80, 80, 80, 80, 80, 80,3120, 0, + 824, 824, 824,3128, 824,1696, 824,1696,3136, 824,1344,1344,1344,3144,3152, 0, + 520, 520, 520, 520, 520,3160, 520, 520, 520,3168, 520,3176, 272, 272, 272, 272, + 1352,1352,1352,3184, 320, 320, 320, 320, 320, 320, 320,3192, 320, 320, 320,3200, + 320,1704, 320,1704, 320,3208, 104, 104, 104, 104, 104,1712, 104,3216, 0, 0, + 304, 304, 304, 304, 304, 304, 304, 304, 304,3224, 304, 304, 304, 304, 304, 304, + 528, 528, 528, 528, 528, 528, 528, 528, 832, 832, 832, 832, 832, 832,3232,3240, + 600, 600, 600, 600, 600, 600, 600,3248, 600,3256, 840, 840, 840, 840, 840, 840, + 120,3264, 256, 256, 256, 256, 256,3272, 528, 0,3280, 104,3288,3296,3304,3312, + 48, 48, 48, 48,3320,3328, 48, 48, 48, 48, 48,3336,3344,3352, 48,3360, + 48, 48, 48, 48, 48, 48, 48,3368, 104, 104, 104, 104, 104, 104, 104, 104, + 144, 144, 848, 848, 144, 144, 144, 144, 848, 848, 144,3376, 144, 144, 144, 848, + 144, 144, 144, 144, 144, 144,1720, 144,1720, 144,3384,3392, 144, 144,3400,1728, + 24,3408, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 992, 24,3416,3424, + 24, 608, 48,1736, 24, 24, 24, 24, 616, 0, 104, 104, 104, 104,3432, 0, + 24, 24, 24, 24,3440,3448,1288, 24, 24,3456, 24, 24, 48, 48, 48, 48, + 48,3464, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 616, 0, 0, 24,1360, 0, 0, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,1744, 24, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 48, 48, 48, 48, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,3472,3480, + 256, 256, 256, 256,1640,1648, 696, 696, 696, 696, 696, 696, 696,1752,3488,1752, + 160, 160, 280, 0, 280, 280, 280, 280, 280, 280, 280, 280, 120, 120, 120, 120, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 416, 0, 0, 0, 0, + 8, 8, 8,3496, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,3504, 0, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 856, 0, 0, 0, 24, 24, + 3512, 24, 24, 24,3520,3528, 24,3536,3544, 152, 152, 152, 152, 152, 152, 152, + 152, 152,3552,3560,1760, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,3568, + 3576, 536, 536, 536, 536, 536,3584, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16,1144, 24, 24, 536, 536, 536, 536, 24, 24, 24, 24, 416,3592, 184, 184, + 16, 16, 16,1144, 24, 24, 24, 24, 24, 24, 24, 24, 16, 16, 16,3600, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 184, 184, 184, 184, 184,3608, + 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 24, 24, 24, 24, 24, + 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, 24, 24, 24, 24, + 72,3616, 72, 72, 72, 72, 72, 72,3624, 0, 864, 864, 864, 864, 864, 864, + 176, 176, 176, 176, 176,3632, 0, 0, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 0, + 24, 24, 24, 24,3640, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48,3648, 48, 48, 48, 48, 48, 48, 48, 48, 48,1736, 0, 0,3656, 48, + 1000,1000,1000,1000,1000,3664, 24, 616, 704, 704, 704, 704, 704, 704, 704, 0, + 544, 544, 544, 544, 544, 544, 544, 544,3672,3680, 544,3688, 240, 240, 240, 240, + 1008,1008,1008,1008,1008,3696,1152,1152,1152,1152,3704,3712, 16, 16, 16,3720, + 424, 424, 424, 424, 424, 424, 424, 424, 424,3728, 424,3736, 200, 200, 200,3744, + 624, 624, 624, 624, 624, 624,3752, 0, 624,3760, 624,3768, 200, 200, 200, 200, + 632, 632, 632, 632, 632, 632, 632, 632,3776, 0, 0,3784, 640, 640,3792, 0, + 1368,1368,1368, 0, 280, 280, 48, 48, 48, 48, 48,3800,3808,3816, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 640, 640, 640, 640, 640,3824, 640,3832, + 16, 16, 16, 16,1768, 0, 16, 16,1144,3840, 16, 16, 16, 16, 16,1768, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 856, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,1776, 0, 0, 0, 0, + 1784, 0,3848,3856, 352, 352,3864,3872,3880, 352, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56,3888, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 0, 0, 0, 0, 56, 56, + 104, 104, 24, 616, 104,3896, 24, 24, 24, 24,1792, 24, 608, 328,3904, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,3912, + 712, 24, 24, 24,1104, 48, 48,1112,1104, 48, 48,1112,3920, 184,1760, 184, + 184, 184, 184,3928, 16, 16, 16,1144,1376,1376,1376,3936, 608, 608, 0,3944, + 216,3952, 216, 216,3960, 216, 216,3968, 216,1800, 216,1800, 0, 0, 0, 0, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,3976, + 1808, 24, 24, 24, 24, 24,3984, 24, 144, 144, 144, 144, 144, 144, 144, 144, + 144,1728, 24, 872,3992, 0, 0, 0, 0, 0, 24, 24, 24, 24, 24,4000, + 1384,1384,1384,4008, 880, 880, 880, 880, 880, 880,4016, 0,4024, 24, 24, 328, + 1160,1160,1160,1160,4032,4040,1392,1392,1392,4048,1016,1016,1016,1016,1016,4056, + 1400,1400,1400,4064,1024,1024,1024,1024,4072,1024,4080, 0, 0, 0, 0, 0, + 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 888, 888, 888, 888, 888, 888, + 1168,1168,1168,4088,1168,4096, 648, 648, 648, 648,1816, 648, 648, 648, 648,1816, + 1032,1032,1032,1032,1032, 0, 896, 896, 896, 896, 896, 896,4104,4112,1176,1824, + 1176,1824,4120,1176,1832,1176,1832,4128, 904, 904, 904, 904, 904, 904,4136, 0, + 168, 168, 168, 168, 168, 168,4144, 0, 168, 168,4152, 0, 168, 0, 0, 0, + 4160, 48, 48, 48, 48, 48,4168,1840, 0, 0, 0, 0, 0, 0, 0, 0, + 4176,4184,1184,1184,1184,1184,4192,4200,1408,1408,4208,1408,1192,1192,1192,1192, + 1200,1200,1200,4216,4224,1200, 0, 0, 0, 0, 0, 0,1848,1848,4232,4240, + 1416,1416,1416,4248,1424,1424,1424,4256,1432,1432,1432,4264, 0, 0, 0, 0, + 1208,1208,1208,1208, 440, 440, 440,4272, 440, 440,4280, 440, 440, 440, 440, 440, + 4288,4296,4304,4312,1216,1216,4320,4328,1216,1856,1216,1856,1224,1224,1224,1224, + 1232,1232,1232,1232, 0, 0, 0, 0,1240,1240,1240,1240,1864,4336,1864, 0, + 912, 912, 912, 912, 912, 912,4344,4352,1440,1440,4360,1440,1448,1448,4368,1448, + 1872,1872,4376,4384, 0,4392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 552, 552, 552, 552, 552, 552, 552, 552, 552,4400, 0, 0, 0, 0, 0, 0, + 360, 360, 360, 360, 360, 360,1880, 0, 360, 360, 360, 360, 360, 360,1880,4408, + 920, 920, 920, 920, 920, 0, 920,4416, 928, 928, 928, 928,1888,4424, 928, 928, + 1888,4432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 56, 56,4440, + 1040,1040,1040,1040,1040,4448,4456, 0,1896, 0, 56,4464, 0, 0, 0,1896, + 1048,1048,1048,1048,1048, 0,1056,1056,1056,1056,1056,4472, 0, 0,1456,1456, + 1456,4480, 0, 0, 0, 0,1464,1464,1464,4488, 0, 0,1904,1904,4496, 0, + 368, 368, 368, 368, 368, 368, 368, 368, 368,1912,4504, 368, 368, 368,1912,4512, + 656, 656, 656, 656, 656, 656, 656, 656,4520,4528,1248,1248,1248,4536,1248,4544, + 664, 664, 664, 664, 664, 664,4552, 664, 664, 0,1256,1256,1256,1256,4560, 0, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, 336,4568, 808,4576, 0, + 720, 720,4584, 720, 720, 720, 720, 720,4592, 0, 0, 0, 0, 0, 0, 0, + 4600,4608,1920,4616,1920,4624, 672, 672, 672, 672, 672, 672, 672,4632, 672,4640, + 4648,1928,4656,1936,1936,4664,4672,4680,1928,4688,4696,4704,4712,1944,1944, 0, + 936,4720, 936, 936, 936, 936,1952, 936,4728,4736,1952,4744,4752, 0, 0, 0, + 384, 384, 384, 384, 384, 384, 384, 384, 384, 384, 384,4760,4768, 0, 0, 0, + 448, 448, 448, 448, 448, 448, 448, 448, 448, 0, 448,4776, 0, 0, 0, 0, + 456, 456, 456, 456, 456, 456,1960, 456, 456, 456, 456,1960, 0, 0, 0, 0, + 560, 560, 560, 560, 560, 560, 560, 560,4784, 0, 560,4792, 248,4800, 0, 0, + 680, 680, 680, 680, 680, 680, 680,1968, 680,1968, 200, 200,4808, 0, 0, 0, + 944, 944, 944,4816, 944,4824, 944, 944,4832, 0, 0, 0, 0, 0, 0, 0, + 728, 728, 728, 728, 728, 728, 728,4840, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 464, 464, 464, 464, 464, 464, 464, 464, 464, 464,4848,4856, + 1976,4864,4872,1264,1264,1264,4880,4888,1976, 0,1264,4896, 0, 0, 0, 0, + 0, 0, 0, 0, 952,1984, 952, 952, 952, 952, 952,1984,4904, 0, 0, 0, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 0, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472,4912, 0, 80, 80, 736, 736, 736, 736, 736, 736, 736,4920, + 240,4928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,1064,1064,1064,1064,1992, 0,1064,1992, + 576,4936, 576, 576, 576, 576,4944, 576,4952, 0, 576, 576, 576,4960, 960, 960, + 960, 960,4968, 960, 960,4976,4984, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2000,4992, 968, 968, 968, 968,2000,5000, 968, 0, 968,5008,5016,5024,1272,1272, + 1272,5032,5040,5048,1272,5056, 976, 976, 976, 976, 976,5064, 976,5072, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1472,1472,1472,5080, + 584, 584,5088, 584, 584, 584, 584,5096, 584, 584, 584,5104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,5112, 0, 504, 504, 504, 504, 504, 504,5120,5128, + 64, 64, 64,5136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,5144,5152, 0, + 64, 64, 64, 64, 64, 64, 64, 64,5160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,5168, 0, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,5176, 0, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,5184, + 112, 112, 112, 112, 112, 112, 112, 112,5192, 0, 0, 0, 0, 0, 0, 0, + 744, 744, 744, 744, 744, 744, 744,5200, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 88, 88, 88, 88, 88, 88,5208,1280,1280,1280,5216,1280,5224, 480, 480, + 480, 480, 480, 480, 480, 480, 480,5232, 480,5240,1480,1480,1480,2008,2008, 0, + 344, 344, 344, 344, 344, 344, 344, 344,5248, 0, 344,2016,2016, 344, 344,5256, + 344, 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 752, 752, 752, 752, 752, 752, 752,5264, + 0, 0, 0, 0, 0, 0, 0, 0, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392,5272,1072,1072,1072,5280,1072,1072,5288, 0, 0, 0, 0, 0, + 264, 264, 264, 264, 264, 264, 264, 264, 264,5296, 264, 264, 264, 264, 264, 264, + 264,5304, 264, 264, 0, 0, 0, 0, 0, 0, 0, 0,5312, 0,5320, 0, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,5328, 0, 0, 0, 0,5336, + 32, 32, 32,5344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,5352, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,5360,5368, + 5376, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152,5384, 0,5392, 0, 0, 0,5400, 0,5408, 0, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,5416, + 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288,5424, 288,5432, + 288,5440, 288,5448, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 872, + 24, 24, 24, 24, 24, 24, 328,2024, 24, 24, 760, 0, 24, 24, 760, 0, + 104, 104, 104, 104, 104,1712, 104, 104,5456, 0, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 328, 0, 0, 0, 0, 0, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 416, 0, + 24, 24, 24, 24, 608, 712, 24, 24, 24, 24, 24, 24,5464,5472, 24,5480, + 5488,5496, 24, 24, 24,5504, 24, 24, 24, 24, 24, 24, 24,1360, 0, 0, + 144, 144, 144, 144, 144, 144, 144, 144, 848, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 328, 0, 24, 24, 328, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 608, 0, 24, 24, 24, 760, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 992, 24, 24, 24, 24, 24, + 24, 24, 24, 992,5512,5520, 24,5528,5536, 24, 24, 24, 24, 24, 24, 24, + 5544,5552, 992, 992, 24, 24, 24,5560,5568,2024,5576, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 416, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24,1744, 24, 24, 24, 24, 24, 24, + 96,5584, 0,5592,5600, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 48, 48,1784,5608,1840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5616, 312, 312,5624,5632,5640, 120, 120, 120, 120, 120, 120, 120,5648, 0, 0, + 0,5656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 768, 768, 768, 768, 768,5664, 768,5672, 768,5680, 0, 0, 0, 0, 0, 0, + 0, 0,1488,1488,1488,5688, 0, 0, 776, 776, 776, 776, 776, 776, 776,5696, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1080,1080,1080,1080,1080,5704, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1088,1088,1088,1088,1088,5712, + 0, 0, 0, 0, 0, 0, 0, 0,1096,1096,1096,5720,1096,1096,5728,5736, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280,5744, 160, 280, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 208, 208, 208, 208, 208, 208,5752, 208,5760, 0, 0, 0, 0, 0, + 488, 488, 488, 488, 488, 488, 488, 488, 488,5768, 488,5776, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 712, 24, + 24, 24, 24, 24, 24, 24, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 712, 24, 24, 24, 24, 24, 24, 416, 0, 0, 0, 0, 0, 0, 0, 0, + 5784, 56, 56, 56,1496,5792,1504,5800,5808,5816,1496,5824,1496,1504,1504,5832, + 56,2032, 56,2040,5840,2032, 56,2040, 0, 0, 0, 0, 0, 0,5848, 0, + 24, 24, 24, 24, 24, 328, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 328, 0, 24, 608, 712, 24, 712, 24, 712, 24, 24, 24, 416, 0, + 24, 24, 24, 24, 24, 416, 0, 0, 0, 0, 0, 0,5856, 24, 24, 24, + 5864, 0, 24, 24, 24, 24, 24, 328, 24, 760, 616, 0, 416, 0, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,5872, 24, 872, 24, 872, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 616, 24, 328, 760, 0, + 24, 328, 24, 24, 24, 24, 24, 24, 24, 0, 24, 616, 24, 24, 24, 24, + 24, 0, 24, 24, 24, 416, 24, 328, 616, 0, 24, 760, 0, 0, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 24, 416, 24, 872, + 24,5880, 24, 24, 24, 24, 24, 24, 608,5888, 24,5896, 24,1808, 24, 760, + 24, 24,1792, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,1360, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, + 8, 8, 8, 856, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 856, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,5904, 0, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 856, 0, 0, 0, 0, + 8, 8, 8, 856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 8, 8, 8, 8, 8, 8, 8,5912, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,1776, + 5920, 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 939, 940, 941, 942, 946, 948, 0, 962, 969, 970, 971, 976,1001,1002,1003,1008, 0,1033,1040,1041,1042,1043,1047, 0, 0,1080,1081,1082,1086,1110, 0, 0, @@ -2690,15 +2686,15 @@ static const uint16_t _hb_ucd_u16[10832]= }; static const int16_t _hb_ucd_i16[196]= { - 0, 0, 0, 0, 1, -1, 0, 0, 2, 0, -2, 0, 0, 0, 0, 2, - 0, -2, 0, 0, 0, 0, 0, 16, 0, 0, 0, -16, 0, 0, 1, -1, - 0, 0, 0, 1, -1, 0, 0, 0, 0, 1, -1, 0, 3, 3, 3, -3, + 0, 0, 0, 0, 1, -1, 1, -1, 1, -1, 0, 0, -1, 1, -1, 1, + 0, 0, 1, -1, -1, 1, -1, 0, 0, 0, 0, 1, 0, 1, -1, 0, + 0, 0, 0, 2, 0, -2, 0, 0, 0, 1, -1, 1, 2, 0, -2, 0, + -1, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, -16, 3, 3, 3, -3, -3, -3, 0, 0, 0, 2016, 0, 0, 0, 0, 0, 2527, 1923, 1914, 1918, 0, 2250, 0, 0, 0, 0, 0, 0, 138, 0, 7, 0, 0, -7, 0, 0, 0, - 1, -1, 1, -1, -1, 1, -1, 0, 1824, 0, 0, 0, 0, 0, 2104, 0, - 2108, 2106, 0, 2106, 1316, 0, 0, 0, 0, 1, -1, 1, -1, -138, 0, 0, - 1, -1, 8, 8, 8, 0, 7, 7, 0, 0, -8, -8, -8, -7, -7, 0, - 1, -1, 0, 2,-1316, 1, -1, 0, -1, 1, -1, 1, -1, 3, 1, -1, + 1824, 0, 0, 0, 0, 0, 2104, 0, 2108, 2106, 0, 2106, 1316, 0, 0, 0, + -1, -138, 0, 0, 1, -1, 8, 8, 8, 0, 7, 7, 0, 0, -8, -8, + -8, -7, -7, 0, 1, -1, 0, 2,-1316, 1, -1, 0, -1, 3, 1, -1, -3, 1, -1, 1, -1, 0, 0,-1914,-1918, 0, 0,-1923,-1824, 0, 0, 0, 0,-2016, 0, 0, 1, -1, 0, 1, 0, 0,-2104, 0, 0, 0, 0,-2106, -2108,-2106, 0, 0, 1, -1,-2250, 0, 0, 0,-2527, 0, 0, -2, 0, 1, @@ -2707,11 +2703,13 @@ static const int16_t _hb_ucd_i16[196]= static inline uint8_t _hb_ucd_gc (unsigned u) { - return u<1114110 ? _hb_ucd_u8[7920u+((_hb_ucd_u8[2176u+((_hb_ucd_u16[((_hb_ucd_u8[((((((u)>>1))>>3))>>5)])<<5)+((((((u)>>1))>>3))&31)])<<3)+((((u)>>1))&7)])<<1)+((u)&1)] : 2; + /* packtab: [2^8,2^5,2^3,2^1] */ + return u<1114110u ? (uint8_t)(_hb_ucd_u8[7912u+((_hb_ucd_u8[2176u+_hb_ucd_u16[((_hb_ucd_u8[((((((u)>>1))>>3))>>5)])<<5)+((((((u)>>1))>>3))&31)]+((((u)>>1))&7)])<<1)+((u)&1)]) : 2; } static inline uint8_t _hb_ucd_ccc (unsigned u) { - return u<125259 ? _hb_ucd_u8[10388u+((_hb_ucd_u8[9284u+((_hb_ucd_u8[8548u+((_hb_ucd_u8[8302u+((((((u)>>2))>>3))>>4)])<<4)+((((((u)>>2))>>3))&15)])<<3)+((((u)>>2))&7)])<<2)+((u)&3)] : 0; + /* packtab: [2^8,2^4,2^3,2^2] */ + return u<125259u ? (uint8_t)(_hb_ucd_u8[10370u+((_hb_ucd_u8[9270u+((_hb_ucd_u8[8539u+((_hb_ucd_u8[8294u+((((((u)>>2))>>3))>>4)])<<4)+((((((u)>>2))>>3))&15)])<<3)+((((u)>>2))&7)])<<2)+((u)&3)]) : 0; } static inline uint8_t _hb_ucd_b4 (const uint8_t* a, unsigned i) { @@ -2719,15 +2717,18 @@ static inline uint8_t _hb_ucd_b4 (const uint8_t* a, unsigned i) } static inline int16_t _hb_ucd_bmg (unsigned u) { - return u<65380 ? _hb_ucd_i16[((_hb_ucd_u8[11140u+((_hb_ucd_u8[11020u+((_hb_ucd_b4(_hb_ucd_u8+10892u,((((((u)>>2))>>3))>>3)))<<3)+((((((u)>>2))>>3))&7)])<<3)+((((u)>>2))&7)])<<2)+((u)&3)] : 0; + /* packtab: [2^4,2^3,2^3,2^2] */ + return u<65380u ? (int16_t)(_hb_ucd_i16[_hb_ucd_u8[11118u+((_hb_ucd_u8[11002u+((_hb_ucd_b4(_hb_ucd_u8+10874u,((((((u)>>2))>>3))>>3)))<<3)+((((((u)>>2))>>3))&7)])<<3)+((((u)>>2))&7)]+((u)&3)]) : 0; } static inline uint8_t _hb_ucd_sc (unsigned u) { - return u<918000 ? _hb_ucd_u8[12662u+((_hb_ucd_u16[3328u+((_hb_ucd_u8[11926u+((_hb_ucd_u8[11476u+((((((u)>>3))>>4))>>4)])<<4)+((((((u)>>3))>>4))&15)])<<4)+((((u)>>3))&15)])<<3)+((u)&7)] : 2; + /* packtab: [2^8,2^4,2^4,2^3] */ + return u<918000u ? (uint8_t)(_hb_ucd_u8[12639u+_hb_ucd_u16[3296u+((_hb_ucd_u8[11903u+((_hb_ucd_u8[11454u+((((((u)>>3))>>4))>>4)])<<4)+((((((u)>>3))>>4))&15)])<<4)+((((u)>>3))&15)]+((u)&7)]) : 2; } static inline uint16_t _hb_ucd_dm (unsigned u) { - return u<195102 ? _hb_ucd_u16[7408u+((_hb_ucd_u8[18972u+((_hb_ucd_u8[18590u+((((u)>>4))>>5)])<<5)+((((u)>>4))&31)])<<4)+((u)&15)] : 0; + /* packtab: [2^8,2^5,2^4] */ + return u<195102u ? (uint16_t)(_hb_ucd_u16[7360u+((_hb_ucd_u8[18949u+((_hb_ucd_u8[18567u+((((u)>>4))>>5)])<<5)+((((u)>>4))&31)])<<4)+((u)&15)]) : 0; } @@ -2735,1624 +2736,1620 @@ static inline uint16_t _hb_ucd_dm (unsigned u) #include -static const uint8_t _hb_ucd_u8[14800]= +static const uint8_t _hb_ucd_u8[14763]= { - 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 6, 5, 5, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 5, 17, 15, 18, 19, 20, 21, 22, 23, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 25, 26, 5, 27, 28, - 5, 29, 5, 30, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 31, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 32, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 33, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 17, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 33, 41, 42, 43, 44, 45, - 46, 47, 48, 39, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 49, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 50, 17, 17, 17, 51, 17, 52, 53, 54, 55, 56, 57, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 58, 59, 59, 59, 59, 59, 59, 59, 59, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 17, 61, 62, 17, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 17, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 17, 17, 17, 97, 98, 99,100,100,100,100,100,100,100,100,100,101, - 17, 17, 17, 17,102, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17,103, 17, 17,104,100,100,100,100,100,100,100,100,100, - 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, - 100,105,100,100,100,100,100,100, 17, 17,106,107,100,108,109,110, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,111,112,100,100, - 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,113, - 17,114,115,100,100,100,100,100,100,100,100,100,116,100,100,100, - 100,100,100,100,100,100,100,100,100,100,100,100,117, 39,118,119, - 120,121,122,123,124,125,126,127, 39, 39,128,100,100,100,100,129, - 130,131,132,100,133,134,135,136,137,138,100,100,139,140,141,100, - 142,143,144,145, 39, 39,146,147,148, 39,149,150,100,100,100,100, - 17, 17, 17, 17, 17, 17,151, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17,152, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,153, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,154, 17, 17,155,100, - 100,100,100,100,100,100,100,100, 17, 17,156,100,100,100,100,100, - 17, 17, 17,157, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17,158,100,100,100,100,100,100,100,100,100,100,100, - 159,160,100,100,100,100,100,100,100,100,100,100,100,100,100,100, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,161, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,162, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 4, 5, 6, 2, - 7, 7, 7, 7, 7, 2, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 17, 18, 19, 1, 20, 20, 21, 22, 23, 24, 25, - 26, 27, 15, 2, 28, 29, 27, 30, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 31, 11, 11, 11, 32, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 33, 16, 16, 16, 16, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 34, 34, 34, 34, 34, 34, 34, 34, 16, 32, 32, 32, - 32, 32, 32, 32, 11, 34, 34, 16, 34, 32, 32, 11, 34, 11, 16, 11, - 11, 34, 32, 11, 32, 16, 11, 34, 32, 32, 32, 11, 34, 16, 32, 11, - 34, 11, 34, 34, 32, 35, 32, 16, 36, 36, 37, 34, 38, 37, 34, 34, - 34, 34, 34, 34, 34, 34, 16, 32, 34, 38, 32, 11, 32, 32, 32, 32, - 32, 32, 16, 16, 16, 11, 34, 32, 34, 34, 11, 32, 32, 32, 32, 32, - 16, 16, 36, 16, 16, 16, 16, 16, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 40, 40, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, - 39, 39, 41, 40, 40, 40, 41, 41, 40, 40, 40, 40, 40, 40, 40, 40, - 42, 42, 42, 42, 42, 42, 42, 42, 32, 32, 41, 32, 43, 44, 16, 10, - 43, 43, 40, 45, 11, 46, 46, 11, 34, 11, 11, 11, 11, 11, 11, 11, - 11, 47, 11, 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 34, - 16, 11, 32, 16, 32, 32, 32, 32, 16, 16, 32, 48, 34, 32, 34, 11, - 32, 49, 42, 42, 50, 32, 32, 32, 11, 34, 34, 34, 34, 34, 34, 16, - 47, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 46, 51, 2, 2, 2, - 16, 16, 16, 16, 52, 53, 54, 55, 56, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 57, 58, 59, 42, 58, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 60, 43, 61, - 36, 62, 63, 43, 43, 43, 43, 43, 64, 64, 64, 8, 9, 65, 2, 66, - 42, 42, 42, 42, 42, 59, 67, 2, 68, 36, 36, 36, 36, 69, 42, 42, - 7, 7, 7, 7, 7, 2, 2, 36, 70, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 71, 42, 42, 42, 72, 49, 42, 42, 73, 74, 75, 42, 42, 36, - 7, 7, 7, 7, 7, 36, 76, 77, 2, 2, 2, 2, 2, 2, 2, 78, - 69, 36, 36, 36, 36, 36, 36, 36, 42, 42, 42, 42, 42, 79, 61, 36, - 36, 36, 36, 42, 42, 42, 42, 42, 70, 43, 43, 43, 43, 43, 43, 43, - 7, 7, 7, 7, 7, 36, 36, 36, 36, 36, 36, 36, 36, 69, 42, 42, - 42, 42, 39, 21, 2, 80, 56, 20, 36, 36, 36, 42, 42, 74, 42, 42, - 42, 42, 74, 42, 74, 42, 42, 43, 2, 2, 2, 2, 2, 2, 2, 63, - 36, 36, 36, 36, 69, 42, 43, 63, 36, 36, 36, 36, 36, 60, 43, 43, - 36, 36, 36, 36, 81, 36, 36, 36, 64, 43, 43, 56, 42, 42, 42, 42, - 36, 36, 36, 36, 82, 42, 42, 42, 42, 83, 42, 42, 42, 42, 42, 42, - 42, 84, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 84, 70, 85, - 86, 42, 42, 42, 84, 85, 86, 85, 69, 42, 42, 42, 36, 36, 36, 36, - 36, 42, 2, 7, 7, 7, 7, 7, 87, 36, 36, 36, 36, 36, 36, 36, - 69, 85, 61, 36, 36, 36, 60, 61, 60, 61, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 60, 36, 36, 36, 60, 60, 43, 36, 36, 43, 70, 85, - 86, 42, 79, 88, 89, 88, 86, 60, 43, 43, 43, 88, 43, 43, 36, 61, - 36, 42, 43, 7, 7, 7, 7, 7, 36, 20, 27, 27, 27, 55, 62, 79, - 56, 84, 61, 36, 36, 60, 43, 61, 60, 36, 61, 60, 36, 43, 79, 85, - 86, 79, 43, 56, 79, 56, 42, 43, 56, 43, 43, 43, 61, 36, 60, 60, - 43, 43, 43, 7, 7, 7, 7, 7, 42, 36, 69, 63, 43, 43, 43, 43, - 56, 84, 61, 36, 36, 36, 36, 61, 36, 61, 36, 36, 36, 36, 36, 36, - 60, 36, 61, 36, 36, 43, 70, 85, 86, 42, 42, 56, 84, 88, 86, 43, - 60, 43, 43, 43, 43, 43, 43, 43, 65, 43, 43, 43, 61, 42, 42, 42, - 56, 85, 61, 36, 36, 36, 60, 61, 60, 36, 61, 36, 36, 43, 70, 86, - 86, 42, 79, 88, 89, 88, 86, 43, 43, 43, 56, 84, 43, 43, 36, 61, - 77, 27, 27, 27, 43, 43, 43, 43, 43, 70, 61, 36, 36, 60, 43, 36, - 60, 36, 36, 43, 61, 60, 60, 36, 43, 61, 60, 43, 36, 60, 43, 36, - 36, 36, 36, 36, 36, 43, 43, 85, 84, 89, 43, 85, 89, 85, 86, 43, - 60, 43, 43, 88, 43, 43, 43, 43, 27, 90, 66, 66, 55, 91, 43, 43, - 84, 85, 70, 36, 36, 36, 60, 36, 60, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 43, 70, 42, 84, 85, 89, 42, 79, 42, 42, 43, - 43, 43, 56, 79, 36, 60, 36, 43, 43, 43, 43, 92, 27, 27, 27, 90, - 69, 85, 71, 36, 36, 36, 60, 36, 36, 36, 61, 36, 36, 43, 70, 86, - 85, 85, 89, 84, 89, 85, 42, 43, 43, 43, 88, 89, 43, 43, 36, 60, - 61, 93, 43, 43, 43, 43, 43, 43, 42, 85, 36, 36, 36, 36, 60, 36, - 36, 36, 36, 36, 36, 69, 70, 85, 86, 42, 79, 85, 89, 85, 86, 76, - 43, 43, 36, 93, 27, 27, 27, 94, 27, 27, 27, 27, 90, 36, 36, 36, - 56, 85, 61, 36, 36, 36, 36, 36, 36, 36, 36, 60, 43, 36, 36, 36, - 36, 61, 36, 36, 36, 36, 61, 43, 36, 36, 36, 60, 43, 79, 43, 88, - 85, 42, 79, 79, 85, 85, 85, 85, 43, 85, 63, 43, 43, 43, 43, 43, - 61, 36, 36, 36, 36, 36, 36, 36, 69, 36, 42, 42, 42, 79, 43, 95, - 36, 36, 36, 74, 42, 42, 42, 59, 7, 7, 7, 7, 7, 2, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 61, 60, 60, 36, 36, 60, 36, 36, - 36, 36, 61, 61, 36, 36, 36, 36, 69, 36, 42, 42, 42, 42, 70, 43, - 36, 36, 60, 80, 42, 42, 42, 79, 7, 7, 7, 7, 7, 43, 36, 36, - 76, 66, 2, 2, 2, 2, 2, 2, 2, 96, 96, 66, 42, 66, 66, 66, - 7, 7, 7, 7, 7, 27, 27, 27, 27, 27, 49, 49, 49, 4, 4, 85, - 36, 36, 36, 36, 61, 36, 36, 36, 36, 36, 36, 36, 36, 36, 60, 43, - 56, 42, 42, 42, 42, 42, 42, 84, 42, 42, 59, 42, 36, 36, 69, 42, - 42, 42, 42, 42, 56, 42, 42, 42, 42, 42, 42, 42, 42, 42, 79, 66, - 66, 66, 66, 75, 66, 66, 91, 66, 2, 2, 96, 66, 21, 63, 43, 43, - 36, 36, 36, 36, 36, 93, 86, 42, 84, 42, 42, 42, 86, 84, 86, 70, - 7, 7, 7, 7, 7, 2, 2, 2, 36, 36, 36, 85, 42, 36, 36, 42, - 70, 85, 97, 93, 85, 85, 85, 36, 69, 42, 70, 36, 36, 36, 36, 36, - 36, 84, 86, 84, 85, 85, 86, 93, 7, 7, 7, 7, 7, 85, 86, 66, - 11, 11, 11, 47, 43, 43, 47, 43, 16, 16, 16, 16, 16, 52, 44, 16, - 36, 36, 36, 36, 60, 36, 36, 43, 36, 36, 36, 60, 60, 36, 36, 43, - 60, 36, 36, 43, 36, 36, 36, 60, 60, 36, 36, 43, 36, 36, 36, 36, - 36, 36, 36, 60, 36, 36, 36, 36, 36, 36, 36, 36, 36, 60, 56, 42, - 2, 2, 2, 2, 98, 27, 27, 27, 27, 27, 27, 27, 27, 27, 99, 43, - 66, 66, 66, 66, 66, 43, 43, 43, 11, 11, 11, 43, 16, 16, 16, 43, - 100, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 76, 71, - 101, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,102,103, 43, - 36, 36, 36, 36, 36, 62, 2,104,105, 36, 36, 36, 60, 43, 43, 43, - 36, 42, 84, 43, 43, 43, 43, 61, 36, 42,106, 63, 43, 43, 43, 43, - 36, 42, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 36, 36, 60, 36, - 60, 42, 43, 43, 43, 43, 43, 43, 36, 36, 42, 86, 42, 42, 42, 85, - 85, 85, 85, 84, 86, 42, 42, 42, 42, 42, 2, 87, 2, 65, 69, 43, - 7, 7, 7, 7, 7, 43, 43, 43, 27, 27, 27, 27, 27, 43, 43, 43, - 2, 2, 2,107, 2, 58, 42, 83, 36, 82, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 60, 43, 43, 43, 36, 36, 69, 70, 36, 36, 36, 36, - 36, 36, 36, 36, 69, 60, 43, 43, 36, 36, 36, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 60, 42, 84, 85, 86, 84, 85, 43, 43, - 85, 84, 85, 85, 86, 42, 43, 43, 91, 43, 2, 7, 7, 7, 7, 7, - 36, 36, 36, 36, 36, 36, 36, 43, 36, 36, 60, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 43, 43, 36, 36, 36, 36, 36, 43, 43, 43, - 7, 7, 7, 7, 7, 99, 43, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 36, 36, 36, 69, 84, 86, 43, 2, 36, 36, 93, 84, 42, 42, 42, 79, - 84, 84, 86, 42, 42, 42, 84, 85, 85, 86, 42, 42, 42, 42, 79, 56, - 2, 2, 2, 87, 2, 2, 2, 43, 42, 42, 42, 42, 42, 42, 42,108, - 42, 42, 42, 42, 42, 42, 42, 43, 42, 42, 42, 42, 42, 42, 43, 43, - 42, 42, 97, 36, 36, 36, 36, 36, 36, 36, 84, 42, 42, 84, 84, 85, - 85, 84, 97, 36, 36, 36, 60, 2, 96, 66, 66, 66, 66, 49, 42, 42, - 42, 42, 66, 66, 66, 66, 21, 2, 42, 97, 36, 36, 36, 36, 36, 36, - 93, 42, 42, 85, 42, 86, 42, 36, 36, 36, 36, 84, 42, 85, 86, 86, - 42, 85, 43, 43, 43, 43, 2, 2, 36, 36, 85, 85, 85, 85, 42, 42, - 42, 42, 85, 42, 43, 92, 2, 2, 7, 7, 7, 7, 7, 43, 61, 36, - 36, 36, 36, 36, 39, 39, 39, 2, 16, 16, 16, 16, 34,109, 43, 43, - 11, 11, 11, 11, 11, 46, 47, 11, 2, 2, 2, 2, 43, 43, 43, 43, - 42, 59, 42, 42, 42, 42, 42, 42, 84, 42, 42, 42, 70, 36, 69, 36, - 36, 36, 70, 93, 42, 60, 43, 43, 16, 16, 16, 16, 16, 16, 39, 39, - 39, 39, 39, 39, 39, 44, 16, 16, 16, 16, 16, 16, 44, 16, 16, 16, - 16, 16, 16, 16, 16,110, 39, 39, 32, 32, 32, 16, 16, 16, 16, 32, - 16, 16, 16, 16, 11, 11, 11, 11, 16, 16, 16, 43, 11, 11, 11, 43, - 16, 16, 16, 16, 47, 47, 47, 47, 16, 16, 16, 16, 16, 16, 16, 43, - 16, 16, 16, 16,111,111,111,111, 16, 16,109, 16, 11, 11,112,113, - 40, 16,109, 16, 11, 11,112, 40, 16, 16, 43, 16, 11, 11,114, 40, - 16, 16, 16, 16, 11, 11,115, 40, 43, 16,109, 16, 11, 11,112,116, - 117,117,117,117,117,118, 64, 64,119,119,119, 2,120,121,120,121, - 2, 2, 2, 2,122, 64, 64,123, 2, 2, 2, 2,124,125, 2,126, - 127, 2,128,129, 2, 2, 2, 2, 2, 9,127, 2, 2, 2, 2,130, - 64, 64,131, 64, 64, 64, 64, 64,132, 43, 27, 27, 27, 8,128,133, - 27, 27, 27, 27, 27, 8,128,103, 39, 39, 39, 39, 39, 39, 80, 43, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 43, 43, 43, 43, 43, 43, 43, - 42, 42, 42, 42, 42, 42,134, 50,108, 50,108, 42, 42, 42, 42, 42, - 79, 43, 43, 43, 43, 43, 43, 43, 66,135, 66,136, 66, 34, 11, 16, - 11, 32,136, 66, 48, 11, 11, 66, 66, 66,135,135,135, 11, 11,137, - 11, 11, 35, 36,138, 66, 16, 11, 8, 8, 48, 16, 16, 26, 66,139, - 27, 27, 27, 27, 27, 27, 27, 27,104,104,104,104,104,104,104,104, - 104,140,141,104,142, 66, 43, 43, 8, 8,143, 66, 66, 8, 66, 66, - 143, 26, 66,143, 66, 66, 66,143, 66, 66, 66, 66, 66, 66, 66, 8, - 66,143,143, 66, 66, 66, 66, 66, 66, 66, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 66, 66, 66, 66, 4, 4, 66, 66, - 8, 66, 66, 66,144,145, 66, 66, 66, 66, 66, 66, 66, 66,143, 66, - 66, 66, 66, 66, 66, 26, 8, 8, 8, 8, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 8, 8, 8, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 91, 43, 43, 27, 27, 27, 27, 27, 27, 66, 66, - 66, 66, 66, 66, 66, 27, 27, 27, 66, 66, 66, 26, 66, 66, 66, 66, - 26, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 8, 8, 8, 8, - 66, 66, 66, 66, 66, 66, 66, 26, 66, 66, 66, 66, 4, 4, 4, 4, - 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 66, 66, 66, 66, 66, 66, - 8, 8,128,146, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, - 8,128,147,147,147,147,147,147,147,147,147,147,146, 8, 8, 8, - 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, - 8, 8,143, 26, 8, 8,143, 66, 66, 66, 43, 66, 66, 66, 66, 66, - 32, 11, 32, 34, 34, 34, 34, 11, 32, 32, 34, 16, 16, 16, 39, 11, - 32, 32,139, 66, 66,136, 34,148, 42, 32, 43, 43, 92, 2, 98, 2, - 16, 16, 16,149, 43, 43,149, 43, 36, 36, 36, 36, 43, 43, 43, 51, - 63, 43, 43, 43, 43, 43, 43, 56, 36, 36, 36, 60, 43, 43, 43, 43, - 36, 36, 36, 60, 36, 36, 36, 60, 2,120,120, 2,124,125,120, 2, - 2, 2, 2, 6, 2,107,120, 2,120, 4, 4, 4, 4, 2, 2, 87, - 2, 2, 2, 2, 2,119, 2, 2,107,150, 2, 2, 2, 2, 2, 2, - 66, 2,151,147,147,147,152, 43, 66, 66, 66, 66, 66, 54, 66, 66, - 66, 66, 43, 43, 43, 43, 43, 43, 66, 66, 66, 43, 43, 43, 43, 43, - 1, 2,153,154, 4, 4, 4, 4, 4, 66, 4, 4, 4, 4,155,156, - 157,104,104,104,104, 42, 42, 85,158, 39, 39, 66,104,159, 62, 66, - 36, 36, 36, 60, 56,160,161, 68, 36, 36, 36, 36, 36, 62, 39, 68, - 43, 43, 61, 36, 36, 36, 36, 36, 66, 27, 27, 66, 66, 66, 66, 66, - 66, 66, 66, 43, 43, 43, 43, 54, 66, 66, 66, 66, 66, 66, 66, 91, - 27, 27, 27, 27, 27, 66, 66, 66, 66, 66, 66, 66, 27, 27, 27, 27, - 162, 27, 27, 27, 27, 27, 27, 27, 36, 36, 82, 36, 36, 36, 36, 36, - 66, 66, 66, 91, 43, 43, 43, 43, 36, 36, 36, 36, 36, 36,163, 2, - 7, 7, 7, 7, 7, 36, 43, 43, 32, 32, 32, 32, 32, 32, 32, 69, - 50,164, 42, 42, 42, 42, 42, 87, 32, 32, 32, 32, 32, 32, 39, 42, - 36, 36, 36,104,104,104,104,104, 42, 2, 2, 2, 43, 43, 43, 43, - 40, 40, 40,161, 39, 39, 39, 39, 40, 32, 32, 32, 32, 32, 32, 32, - 16, 32, 32, 32, 32, 32, 32, 32, 44, 16, 16, 16, 34, 34, 34, 32, - 32, 32, 32, 32, 41,165, 34, 35, 32, 32, 16, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 11, 11, 32, 11, 11, 32, 32, 32, 32, 32, 32, - 32, 32, 11, 11, 34, 34, 32, 32, 32, 32, 32, 32, 32, 32, 46, 43, - 51, 39,166, 35, 39, 35, 36, 36, 36, 70, 36, 70, 36, 69, 36, 36, - 36, 93, 86, 84, 66, 66, 79, 43, 27, 27, 27, 66,167, 43, 43, 43, - 36, 36, 2, 2, 43, 43, 43, 43, 85, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 85, 85, 85, 85, 85, 85, 85, 85, 42, 43, 43, 43, 43, 2, - 42, 36, 36, 36, 2, 71, 71, 69, 36, 36, 36, 42, 42, 42, 42, 2, - 36, 36, 36, 69, 42, 42, 42, 42, 42, 85, 43, 43, 43, 43, 43, 92, - 36, 69, 85, 42, 42, 85, 42, 85,106, 2, 2, 2, 2, 2, 2, 51, - 7, 7, 7, 7, 7, 43, 43, 2, 36, 36, 69, 68, 36, 36, 36, 36, - 7, 7, 7, 7, 7, 36, 36, 60, 36, 36, 36, 36, 69, 42, 42, 84, - 86, 84, 86, 79, 43, 43, 43, 43, 36, 69, 36, 36, 36, 36, 84, 43, - 7, 7, 7, 7, 7, 43, 2, 2, 68, 36, 36, 76, 66, 93, 84, 36, - 70, 42, 70, 69, 70, 36, 36, 42, 69, 60, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 61, 82, 2, 36, 36, 36, 36, 36, 93, 42, 85, - 2, 82,168, 79, 43, 43, 43, 43, 61, 36, 36, 60, 61, 36, 36, 60, - 61, 36, 36, 60, 43, 43, 43, 43, 16, 16, 16, 16, 16,113, 39, 39, - 16, 16, 16, 16,110, 40, 43, 43, 36, 93, 86, 85, 84,106, 86, 43, - 36, 36, 43, 43, 43, 43, 43, 43, 36, 36, 36, 60, 43, 61, 36, 36, - 169,169,169,169,169,169,169,169,170,170,170,170,170,170,170,170, - 16, 16, 16,109, 43, 43, 43, 43, 43,149, 16, 16, 43, 43, 61, 70, - 36, 36, 36, 36,171, 36, 36, 36, 36, 36, 36, 60, 36, 36, 60, 60, - 36, 61, 60, 36, 36, 36, 36, 36, 36, 40, 40, 40, 40, 40, 40, 40, - 40, 22, 66, 66, 66, 66, 66, 66, 66, 77, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36,147, 66, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 66, 66, 66, 66, 36, 36, 36, 36, 36, 36,167, 66, - 2, 2, 2,151,129, 43, 43, 43, 6,172,173,147,147,147,147,147, - 147,147,129,151,129, 2,126,174, 2, 63, 2, 2,155,147,147,129, - 2,175, 8,176, 65, 2, 43, 43, 36, 36, 60, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 60, 78, 92, 2, 3, 2, 4, 5, 6, 2, - 16, 16, 16, 16, 16, 17, 18,128,129, 4, 2, 36, 36, 36, 36, 36, - 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 39, - 43, 36, 36, 36, 43, 36, 36, 36, 43, 36, 36, 36, 43, 36, 60, 43, - 20,177, 55,178, 26, 8,143, 91, 43, 43, 43, 43, 78, 64, 66, 43, - 36, 36, 36, 36, 36, 36, 61, 36, 36, 36, 36, 36, 36, 60, 36, 61, - 2, 63, 43,179, 27, 27, 27, 27, 27, 27, 43, 54, 66, 66, 66, 66, - 104,104,142, 27, 90, 66, 66, 66, 66, 66, 66, 66, 66, 27, 66, 91, - 66, 66, 66, 66, 66, 66, 91, 43, 91, 43, 43, 43, 43, 43, 43, 43, - 66, 66, 66, 66, 66, 66, 49, 43,180, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 43, 43, 27, 27, 43, 43, 43, 43, 61, 36, - 154, 36, 36, 36, 36,181, 43, 43, 36, 36, 36, 42, 42, 79, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 92, 36, 36, 43, 43, 36, 36, 36, 36, - 182,104,104, 43, 43, 43, 43, 43, 11, 11, 11, 11, 16, 16, 16, 16, - 11, 11, 43, 43, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 43, 43, - 36, 36, 36, 36, 43, 43, 43, 43, 36, 36, 43, 43, 43, 43, 43, 92, - 11, 11, 11, 11, 11, 46, 11, 11, 11, 46, 11,149, 16, 16, 16, 16, - 16,149, 16, 16, 16, 16, 16, 16, 16,149, 16, 16, 16,149,109, 43, - 39, 39, 39, 51, 39, 39, 39, 39, 80, 39, 39, 39, 39, 80, 43, 43, - 36, 36, 36, 43, 60, 36, 36, 36, 36, 36, 36, 61, 60, 43, 60, 61, - 36, 36, 36, 92, 27, 27, 27, 27, 36, 36, 36, 76,162, 27, 27, 27, - 43, 43, 43,179, 27, 27, 27, 27, 36, 60, 36, 43, 43,179, 27, 27, - 36, 36, 36, 27, 27, 27, 43, 92, 36, 36, 36, 36, 36, 43, 43, 92, - 36, 36, 36, 36, 43, 43, 27, 36, 43, 27, 27, 27, 27, 27, 27, 27, - 69, 42, 56, 79, 43, 43, 42, 42, 36, 36, 61, 36, 61, 36, 36, 36, - 36, 36, 36, 43, 42, 79, 43, 56, 27, 27, 27, 27, 99, 43, 43, 43, - 2, 2, 2, 2, 63, 43, 43, 43, 36, 36, 36, 36, 36, 36,183, 30, - 36, 36, 36, 36, 36, 36,183, 27, 36, 36, 36, 36, 77, 36, 36, 36, - 36, 36, 69, 79, 43,179, 27, 27, 2, 2, 2, 63, 43, 43, 43, 43, - 36, 36, 36, 43, 92, 2, 2, 2, 36, 36, 36, 43, 27, 27, 27, 27, - 36, 60, 43, 43, 27, 27, 27, 27, 36, 43, 43, 43, 92, 2, 63, 43, - 43, 43, 43, 43,179, 27, 27, 27, 11, 46, 43, 43, 43, 43, 43, 43, - 16,109, 43, 43, 43, 27, 27, 27, 36, 36, 42, 42, 43, 43, 43, 43, - 7, 7, 7, 7, 7, 36, 36, 68, 11, 11, 11, 43, 56, 42, 42,158, - 16, 16, 16, 43, 43, 43, 43, 8, 27, 27, 27, 27, 27, 27, 27, 99, - 36, 36, 36, 36, 36, 56,184, 43, 36, 43, 43, 43, 43, 43, 43, 43, - 43, 36, 82, 36, 43, 43, 43, 43, 96, 66, 66, 66, 91, 43, 43, 43, - 43, 43, 43, 43, 43, 42, 42, 42, 27, 27, 27, 94, 43, 43, 43, 43, - 180, 27, 30, 2, 2, 43, 43, 43, 36, 42, 42, 2, 2, 43, 43, 43, - 36, 36,183, 27, 27, 27, 43, 43, 86, 97, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 42, 42, 42, 42, 42, 42, 42, 59, 2, 2, 2, 43, - 27, 27, 27, 7, 7, 7, 7, 7, 70, 69, 70, 43, 43, 43, 43, 56, - 85, 86, 42, 84, 86, 59,185, 2, 2, 79, 43, 43, 43, 43, 78, 43, - 42, 70, 36, 36, 36, 36, 36, 36, 36, 36, 36, 69, 42, 42, 86, 42, - 42, 42, 79, 7, 7, 7, 7, 7, 2, 2, 93, 97, 43, 43, 43, 43, - 36, 69, 2, 60, 43, 43, 43, 43, 36, 93, 85, 42, 42, 42, 42, 84, - 97, 36, 62, 2, 58, 42, 59, 86, 7, 7, 7, 7, 7, 62, 62, 2, - 179, 27, 27, 27, 27, 27, 27, 27, 27, 27, 99, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 85, 86, 42, 85, 84, 42, 2, 2, 2, 70, - 69, 43, 43, 43, 43, 43, 43, 43, 36, 36, 36, 60, 60, 36, 36, 61, - 36, 36, 36, 36, 36, 36, 36, 61, 36, 36, 36, 36, 62, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 69, 85, 86, 42, 42, 42, 79, 43, 43, - 42, 85, 61, 36, 36, 36, 60, 61, 60, 36, 61, 36, 36, 56, 70, 85, - 84, 85, 89, 88, 89, 88, 85, 43, 60, 43, 43, 88, 43, 43, 61, 36, - 36, 85, 43, 42, 42, 42, 79, 43, 42, 42, 79, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 61, 43, 60, 36, 36, 36, 61, 85, 86, 42, 42, - 79, 89, 88, 88, 85, 89, 85, 84, 70, 70, 2, 92, 63, 43, 43, 43, - 56, 79, 43, 43, 43, 43, 43, 43, 36, 36, 93, 85, 42, 42, 42, 42, - 85, 42, 84, 70, 36, 62, 2, 2, 7, 7, 7, 7, 7, 2, 92, 70, - 85, 86, 42, 42, 84, 84, 85, 86, 84, 42, 36, 71, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 93, 85, 42, 42, 43, 85, 85, 42, 86, - 59, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 42, 43, - 85, 86, 42, 42, 42, 84, 86, 86, 59, 2, 60, 43, 43, 43, 43, 43, - 2, 2, 2, 2, 2, 2, 63, 43, 36, 36, 36, 36, 36, 69, 86, 85, - 42, 42, 42, 86, 62, 43, 43, 43, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 36, 60, 56, 86, - 85, 42, 42, 86, 42, 42, 43, 43, 7, 7, 7, 7, 7, 27, 2, 96, - 42, 42, 42, 42, 86, 59, 43, 43, 27, 99, 43, 43, 43, 43, 43, 61, - 36, 36, 36, 60, 61, 43, 36, 36, 36, 36, 61, 60, 36, 36, 36, 36, - 85, 85, 85, 88, 89, 56, 84, 70, 97, 86, 2, 63, 43, 43, 43, 43, - 36, 36, 36, 36, 43, 36, 36, 36, 93, 85, 42, 42, 43, 42, 85, 85, - 70, 71, 89, 43, 43, 43, 43, 43, 69, 42, 42, 42, 42, 70, 36, 36, - 36, 69, 42, 42, 84, 69, 42, 59, 2, 2, 2, 58, 43, 43, 43, 43, - 69, 42, 42, 84, 86, 42, 36, 36, 36, 36, 36, 36, 36, 42, 42, 42, - 42, 42, 42, 84, 42, 2, 71, 2, 2, 63, 43, 43, 43, 43, 43, 43, - 2, 2, 2, 2, 2, 43, 43, 43, 84, 42, 84, 84, 43, 43, 43, 43, - 62, 43, 43, 43, 43, 43, 43, 43, 42, 42, 42, 79, 42, 42, 42, 86, - 62, 2, 2, 43, 43, 43, 43, 43, 2, 36, 36, 36, 36, 36, 36, 36, - 43, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 88, 42, 42, 42, - 84, 42, 86, 79, 43, 43, 43, 43, 36, 36, 36, 60, 36, 61, 36, 36, - 69, 42, 42, 79, 43, 79, 42, 56, 42, 42, 42, 69, 43, 43, 43, 43, - 36, 36, 36, 61, 60, 36, 36, 36, 36, 36, 36, 36, 36, 85, 85, 89, - 42, 88, 86, 86, 60, 43, 43, 43, 36, 36, 36, 36, 82, 36, 43, 43, - 36, 69, 84,106, 63, 43, 43, 43, 42, 93, 36, 36, 36, 36, 36, 36, - 36, 36, 85, 42, 42, 79, 43, 85, 84, 59, 2, 2, 2, 2, 2, 2, - 7, 7, 7, 7, 7, 79, 43, 43, 27, 27, 90, 66, 66, 66, 55, 20, - 167, 66, 66, 66, 66, 66, 66, 66, 66, 43, 43, 43, 43, 43, 43, 92, - 104,104,104,104,104,104,104,181, 2, 2, 63, 43, 43, 43, 43, 43, - 62, 63, 43, 43, 43, 43, 43, 43, 64, 64, 64, 64, 64, 64, 64, 64, - 70, 36, 36, 69, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 36, 36, 42, 42, 42, 42, 42, 42, 85, 86, 42, - 42, 42, 59, 43, 43, 43, 43, 43, 42, 42, 42, 59, 2, 2, 66, 66, - 39, 39, 96, 43, 43, 43, 43, 43, 7, 7, 7, 7, 7,179, 27, 27, - 27, 61, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 43, 43, 61, 36, - 39, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 82,163, 2, - 27, 27, 27, 30, 2, 63, 43, 43, 11, 11, 11, 11, 46,149, 16, 16, - 16, 16, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 36, 60, 43, 56, - 93, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 43, 43, 43, 56, 42, 73, 39, 39, 39, 39, 39, 39, - 39, 87, 79, 43, 43, 43, 43, 43, 85, 39,104,181, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 61, 36, 60, 43, 43, 43, 43, 43, 43, - 39, 39, 51, 39, 39, 39, 51, 80, 43, 60, 43, 43, 43, 43, 43, 43, - 36, 60, 61, 43, 43, 43, 43, 43, 43, 43, 36, 36, 43, 43, 43, 43, - 36, 36, 36, 36, 36, 43, 49, 59, 64, 64, 43, 43, 43, 43, 43, 43, - 7, 7, 7, 7, 7, 66, 91, 43, 66, 66, 43, 43, 43, 66, 66, 66, - 176, 43, 43, 43, 43, 43, 43, 43, 42, 42, 42, 79, 43, 43, 43, 43, - 66, 66, 66, 91, 54, 66, 66, 66, 66, 66,186, 86, 42, 66,186, 85, - 85,187, 64, 64, 64, 83, 42, 42, 42, 75, 49, 42, 42, 42, 66, 66, - 66, 66, 66, 66, 66, 42, 42, 66, 66, 42, 75, 43, 43, 43, 43, 43, - 27, 27, 43, 43, 43, 43, 43, 43, 11, 11, 11, 11, 11, 16, 16, 16, - 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, - 16, 16,109, 16, 16, 16, 16, 16, 11, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 46, 11, 43, 46, 47, 46, 47, 11, 46, 11, - 11, 11, 11, 16, 16,149,149, 16, 16, 16,149, 16, 16, 16, 16, 16, - 16, 16, 11, 47, 11, 46, 47, 11, 11, 11, 46, 11, 11, 11, 46, 16, - 16, 16, 16, 16, 11, 47, 11, 46, 11, 11, 46, 46, 43, 11, 11, 11, - 46, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 11, 11, - 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 43, 11, 11, 11, 11, - 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, - 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, - 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, - 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 32, 43, 7, - 42, 42, 42, 75, 66, 49, 42, 42, 42, 42, 42, 42, 42, 42, 75, 66, - 66, 66, 49, 66, 66, 66, 66, 66, 66, 66, 75, 21, 2, 2, 43, 43, - 43, 43, 43, 43, 43, 56, 42, 42, 16, 16, 16, 16, 16,138, 16, 16, - 16, 16, 16, 16, 16, 16, 16,109, 43, 43,149, 16, 16,109, 43, 43, - 42, 42, 42, 79, 42, 42, 42, 42, 42, 42, 42, 42, 79, 56, 42, 42, - 42, 56, 79, 42, 42, 79, 43, 43, 39, 39, 39, 39, 39, 39, 39, 43, - 43, 43, 43, 43, 43, 43, 43, 56, 42, 42, 42, 73, 39, 39, 39, 43, - 7, 7, 7, 7, 7, 43, 43, 76, 36, 36, 36, 36, 36, 36, 36, 79, - 36, 36, 36, 36, 36, 36, 42, 42, 7, 7, 7, 7, 7, 43, 43, 95, - 36, 36, 36, 36, 36, 82, 42, 42,188, 7, 7, 7, 7,189, 43, 92, - 36, 69, 36, 70, 36, 36, 36, 42, 36, 36, 69, 43, 43, 43, 43, 82, - 36, 36, 36, 60, 36, 36, 61, 60, 36, 36, 60,179, 27, 27, 27, 27, - 16, 16, 42, 42, 42, 73, 43, 43, 27, 27, 27, 27, 27, 27,162, 27, - 190, 27, 99, 43, 43, 43, 43, 43, 27, 27, 27, 27, 27, 27, 27,162, - 27, 27, 27, 27, 27, 27, 27, 43, 36, 36, 61, 36, 36, 36, 36, 36, - 61, 60, 60, 61, 61, 36, 36, 36, 36, 60, 36, 36, 61, 61, 43, 43, - 43, 60, 43, 61, 61, 61, 61, 36, 61, 60, 60, 61, 61, 61, 61, 61, - 61, 60, 60, 61, 36, 60, 36, 36, 36, 60, 36, 36, 61, 36, 60, 60, - 36, 36, 36, 36, 36, 61, 36, 36, 61, 36, 61, 36, 36, 61, 36, 36, - 8, 43, 43, 43, 43, 43, 43, 43, 66, 66, 66, 66, 66, 66, 43, 43, - 54, 66, 66, 66, 66, 66, 66, 66, 27, 27, 27, 27, 27, 27, 90, 66, - 66, 66, 66, 66, 66, 66, 66, 43, 43, 43, 43, 66, 66, 66, 66, 66, - 66, 91, 43, 43, 43, 43, 43, 43, 66, 66, 66, 66, 91, 43, 43, 43, - 66, 43, 43, 43, 43, 43, 43, 43, 66, 66, 66, 66, 66, 25, 40, 40, - 66, 66, 66, 66, 91, 43, 66, 66, 66, 66, 66, 66, 43, 43, 43, 43, - 8, 8, 8, 8,176, 43, 43, 43, 66, 66, 66, 66, 66, 91, 43, 66, - 66, 66, 66, 91, 91, 43, 54, 66, 66, 66, 66, 66, 66, 66, 91, 54, - 66, 66, 66, 66, 66, 91, 43, 54, 66, 91, 66, 66, 66, 66, 66, 66, - 7, 7, 7, 7, 7, 91, 43, 43, 78, 43, 43, 43, 43, 43, 43, 43, - 170,170,170,170,170,170,170, 43,170,170,170,170,170,170,170, 0, - 0, 0, 29, 21, 21, 21, 23, 21, 22, 18, 21, 25, 21, 17, 13, 13, - 25, 25, 25, 21, 21, 9, 9, 9, 9, 22, 21, 18, 24, 16, 24, 5, - 5, 5, 5, 22, 25, 18, 25, 0, 23, 23, 26, 21, 24, 26, 7, 20, - 25, 1, 26, 24, 26, 25, 15, 15, 24, 15, 7, 19, 15, 21, 9, 25, - 9, 5, 5, 25, 5, 9, 5, 7, 7, 7, 9, 8, 8, 5, 6, 6, - 24, 24, 6, 24, 12, 12, 2, 2, 6, 5, 9, 21, 9, 2, 2, 9, - 25, 9, 26, 12, 11, 11, 2, 6, 5, 21, 17, 2, 2, 26, 26, 23, - 2, 12, 17, 12, 21, 12, 12, 21, 7, 2, 2, 7, 7, 21, 21, 2, - 1, 1, 21, 23, 26, 26, 1, 21, 6, 7, 7, 12, 12, 7, 21, 7, - 12, 1, 12, 6, 6, 12, 12, 26, 7, 26, 26, 7, 2, 1, 12, 2, - 6, 2, 24, 7, 7, 6, 1, 12, 12, 10, 10, 10, 10, 12, 21, 6, - 2, 10, 10, 2, 15, 26, 26, 2, 2, 21, 7, 10, 15, 7, 2, 23, - 21, 26, 10, 7, 21, 15, 15, 2, 17, 7, 29, 7, 7, 22, 18, 2, - 14, 14, 14, 7, 10, 21, 17, 21, 11, 12, 5, 2, 5, 6, 8, 8, - 8, 24, 5, 24, 2, 24, 9, 24, 24, 2, 29, 29, 29, 1, 17, 17, - 20, 19, 22, 20, 27, 28, 1, 29, 21, 20, 19, 21, 21, 16, 16, 21, - 25, 22, 18, 21, 21, 29, 1, 2, 15, 6, 18, 6, 12, 11, 9, 26, - 26, 9, 26, 5, 7, 5, 5, 26, 14, 9, 5, 14, 14, 15, 25, 26, - 26, 22, 18, 26, 18, 25, 18, 22, 5, 12, 2, 5, 22, 21, 21, 22, - 18, 17, 26, 6, 7, 14, 17, 22, 18, 18, 26, 14, 17, 6, 14, 6, - 12, 24, 24, 6, 26, 15, 6, 21, 11, 21, 24, 9, 6, 9, 23, 26, - 6, 10, 4, 4, 3, 3, 7, 25, 17, 16, 16, 22, 16, 16, 25, 17, - 25, 2, 25, 24, 23, 2, 2, 15, 12, 15, 14, 2, 21, 14, 7, 15, - 12, 17, 21, 1, 26, 10, 10, 1, 7, 13, 13, 2, 23, 15, 0, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 0, 14, 0, - 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, 22, 23, - 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 36, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, - 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 5, 6, 7, 0, 8, - 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, 16, 18, 16, 19, 16, 19, - 16, 19, 0, 19, 16, 20, 16, 19, 21, 19, 0, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 35, 0, 0, 36, 0, - 37, 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, 0, 47, - 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50, - 0, 51, 0, 52, 53, 0, 54, 0, 0, 0, 0, 0, 0, 55, 56, 57, - 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, 62, 63, 0, 0, 64, 65, - 0, 0, 0, 66, 0, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 70, - 0, 71, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, - 74, 75, 0, 0, 0, 0, 76, 77, 0, 78, 79, 0, 0, 80, 81, 0, - 82, 62, 0, 83, 84, 0, 0, 85, 86, 87, 0, 88, 0, 89, 0, 90, - 0, 0, 51, 91, 51, 0, 92, 0, 93, 0, 0, 0, 81, 0, 0, 0, - 94, 95, 0, 96, 97, 98, 99, 0, 0, 0, 0, 0, 51, 0, 0, 0, - 0,100,101, 0, 0, 0, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, - 103, 0, 0, 0, 0, 0, 0,104,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,106, 0, 0,107, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,108,109, 0, 0,110, 0, 0, 0, 0, 0, 0,111, 0,112, 0, - 105, 0, 0, 0, 0, 0,113,114, 0, 0, 0, 0, 0, 0, 0,115, - 0, 0, 0,116, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0,118, - 0,119, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, - 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, 0, 13, 0, 0, - 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, - 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, 0, 27, 0, 0, - 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, 33, 0, 0, 35, - 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, - 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, - 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, 47, 0, 0, 0, - 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 52, - 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, 0, 56, 0, 0, - 0, 0, 57, 58, 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, 63, - 52, 0, 64, 65, 0, 0, 66, 0, 0, 0, 67, 68, 0, 0, 0, 69, - 0, 70, 71, 72, 73, 74, 1, 75, 0, 76, 77, 78, 0, 0, 79, 80, - 0, 0, 0, 81, 0, 0, 1, 1, 0, 0, 82, 0, 0, 83, 0, 0, - 0, 0, 79, 84, 0, 85, 0, 0, 0, 0, 0, 80, 86, 0, 87, 0, - 52, 0, 1, 80, 0, 0, 88, 0, 0, 89, 0, 0, 0, 0, 0, 90, - 57, 0, 0, 0, 0, 0, 0, 91, 92, 0, 0, 86, 0, 0, 33, 0, - 0, 93, 0, 0, 0, 0, 94, 0, 0, 0, 0, 49, 0, 0, 95, 0, - 0, 0, 0, 96, 97, 0, 0, 98, 0, 0, 99, 0, 0, 0,100, 0, - 0, 0,101, 0, 0, 0,102, 0, 0, 0, 0,103,104, 95, 0, 0, - 105, 0, 0, 0, 86, 0, 0,106, 0, 0, 0,107,108, 0, 0,109, - 110, 0, 0, 0, 0, 0, 0,111, 0, 0,112, 0, 0, 0, 0,113, - 33, 0,114,115,116, 57, 0, 0,117, 35, 0, 0,118, 0, 0, 0, - 119, 0, 0, 0, 0, 0, 0,120, 0, 0,121, 0, 0, 0, 0,122, - 90, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 52,123, 0, 0, 0, - 0,124, 0, 0,125, 0, 0, 0, 0,123, 0, 0,126, 0, 0, 0, - 0, 0, 81, 0, 0, 0, 0,127, 0, 0, 0,128, 0, 0, 0,129, - 0,130, 0, 0, 0, 0,131,132,133, 0,134, 0,135, 0, 0, 0, - 136,137,138, 0, 79, 0, 0, 0, 0, 0, 35, 0, 0, 0,139, 0, - 0, 0,140, 0, 0, 0,141, 0, 0, 0,142,143, 0,144, 0, 0, - 145, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, - 5, 6, 7, 4, 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, - 18, 1, 1, 1, 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, - 25, 26, 27, 28, 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, - 34, 35, 1, 36, 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, - 42, 0, 0, 0, 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, - 21, 0, 0, 47, 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, - 0, 19, 52, 1, 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, - 54, 21, 35, 1, 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, - 0, 0, 0, 59, 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, - 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, - 0, 0, 68, 0, 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, - 0, 77, 0, 0, 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, - 0, 80, 0, 0, 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, - 0, 0, 83, 0, 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, - 1, 52, 15, 86, 36, 10, 21, 1, 1, 1, 1, 41, 1, 21, 87, 0, - 0, 55, 0, 0, 0, 0, 19, 10, 1, 0, 0, 0, 0, 0, 88, 0, - 0, 89, 0, 0, 88, 0, 0, 0, 0, 78, 0, 0, 90, 9, 12, 4, - 91, 8, 92, 47, 0, 58, 50, 0, 21, 1, 21, 93, 94, 1, 1, 1, - 1, 95, 96, 97, 98, 1, 99, 58, 81,100,101, 4, 58, 0, 0, 0, - 0, 0, 0, 19, 50, 0, 0, 0, 0, 0, 0, 61, 0, 0,102,103, - 0, 0,104, 0, 0, 1, 1, 50, 0, 0, 0, 38, 0, 63, 0, 0, - 0, 0, 0, 62, 0, 0,105, 68, 61, 0, 0, 0, 78, 0, 0, 0, - 106,107, 58, 38, 81, 0, 0, 0, 0, 0, 0,108, 1, 14, 4, 12, - 84, 0, 0, 0, 0, 38, 90, 0, 0, 0, 0,109, 0, 0,110, 61, - 0,111, 0, 0, 0, 1, 0, 0, 0, 0, 49, 50, 0, 0, 19, 58, - 0, 0,112, 51, 0,112, 14, 52,113, 41, 0, 0, 62, 0, 0, 61, - 0, 0,114, 0, 90, 0, 0, 0, 61, 62, 0, 0, 62, 0, 89, 0, - 0,114, 0, 0, 0, 0,115, 0, 0, 0, 78, 55, 0, 38, 1, 58, - 1, 58, 0, 0, 0, 0, 0, 88, 63, 89, 0, 0,116, 0, 0, 0, - 55, 0, 0, 0, 0,116, 0, 0, 0, 0, 61, 0, 0, 0, 0, 79, - 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, 79, 0, 0, 0, - 8, 92, 0, 0, 1, 90, 0, 0,117, 0, 0, 0, 0, 0, 0,118, - 0,119,120,121,122, 0,105, 4,123, 49, 23, 0, 0, 0, 38, 50, - 38, 58, 0, 0, 1, 90, 1, 1, 1, 1, 39, 1, 48,106, 90, 0, - 0, 0, 0, 1, 0, 0, 0,124, 0, 0, 0,113, 19, 59, 0, 38, - 0, 81, 0, 0, 4,123, 0, 0, 0, 1,125, 0, 0, 0, 0, 0, - 230,230,230,230,230,232,220,220,220,220,232,216,220,220,220,220, - 220,202,202,220,220,220,220,202,202,220,220,220, 1, 1, 1, 1, - 1,220,220,220,220,230,230,230,230,240,230,220,220,220,230,230, - 230,220,220, 0,230,230,230,220,220,220,220,230,232,220,220,230, - 233,234,234,233,234,234,233,230, 0, 0, 0,230, 0,220,230,230, - 230,230,220,230,230,230,222,220,230,230,220,220,230,222,228,230, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, - 0, 24, 25, 0,230,220, 0, 18, 30, 31, 32, 0, 0, 0, 0, 27, - 28, 29, 30, 31, 32, 33, 34,230,230,220,220,230,220,230,230,220, - 35, 0, 0, 0, 0, 0,230,230,230, 0, 0,230,230, 0,220,230, - 230,220, 0, 0, 0, 36, 0, 0,230,220,230,230,220,220,230,220, - 220,230,220,230,220,230,230, 0, 0,220, 0, 0,230,230, 0,230, - 0,230,230,230,230,230, 0, 0, 0,220,220,220,230,220,220,220, - 230,230, 0,220, 27, 28, 29,230, 7, 0, 0, 0, 0, 9, 0, 0, - 0,230,220,230,230, 0, 0, 0, 0, 0,230, 0, 0, 84, 91, 0, - 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 9, 0,103,103, 9, 0, - 107,107,107,107,118,118, 9, 0,122,122,122,122,220,220, 0, 0, - 0,220, 0,220, 0,216, 0, 0, 0,129,130, 0,132, 0, 0, 0, - 0, 0,130,130,130,130, 0, 0,130, 0,230,230, 9, 0,230,230, - 0, 0,220, 0, 0, 0, 0, 7, 0, 9, 9, 0, 9, 9, 0, 0, - 0,230, 0, 0, 0,228, 0, 0, 0,222,230,220,220, 0, 0, 0, - 230, 0, 0,220,230,220, 0,220,230,230,230,234, 0, 0, 9, 9, - 0, 0, 7, 0,230,230,230, 0,230, 0, 1, 1, 1, 0, 0, 0, - 230,234,214,220,202,230,230,230,230,230,232,228,228,220,218,230, - 233,220,230,220,230,230, 1, 1, 1, 1, 1,230, 0, 1, 1,230, - 220,230, 1, 1, 0, 0,218,228,232,222,224,224, 0, 8, 8, 0, - 0, 0, 0,220,230, 0,230,230,220, 0, 0,230, 0, 0, 26, 0, - 0,220, 0,230,230, 1,220, 0, 0,230,220, 0, 0, 0,220,220, - 0, 0,230,220, 0, 9, 7, 0, 0, 7, 9, 0, 0, 0, 9, 7, - 6, 6, 0, 0, 0, 0, 1, 0, 0,216,216, 1, 1, 1, 0, 0, - 0,226,216,216,216,216,216, 0,220,220,220, 0,232,232,220,230, - 230,230, 7, 0, 16, 17, 17, 33, 17, 49, 17, 17, 84, 97,135,145, - 26, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17,177, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 5, 3, - 3, 3, 3, 3, 6, 7, 8, 3, 3, 3, 3, 3, 9, 10, 11, 12, - 13, 3, 3, 3, 3, 3, 3, 3, 3, 14, 3, 15, 3, 3, 3, 3, - 3, 3, 16, 17, 18, 19, 20, 21, 3, 3, 3, 22, 23, 24, 3, 3, - 3, 3, 3, 3, 25, 3, 3, 3, 3, 3, 3, 3, 3, 26, 3, 3, - 27, 28, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, - 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 5, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, - 0, 0, 0, 9, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, - 13, 0, 0, 14, 15, 16, 6, 0, 17, 18, 19, 19, 19, 20, 21, 22, - 23, 24, 19, 25, 0, 26, 27, 19, 19, 28, 29, 30, 0, 31, 0, 0, - 0, 8, 0, 0, 0, 0, 0, 0, 0, 19, 28, 0, 32, 33, 9, 34, - 35, 19, 0, 0, 36, 37, 38, 39, 40, 19, 0, 41, 42, 43, 44, 31, - 0, 1, 45, 42, 0, 0, 0, 0, 0, 32, 14, 14, 0, 0, 0, 0, - 14, 0, 0, 46, 47, 47, 47, 47, 48, 49, 47, 47, 47, 47, 50, 51, - 52, 53, 43, 21, 0, 0, 0, 0, 0, 0, 0, 54, 6, 55, 0, 14, - 19, 1, 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 19, 58, 31, - 0, 0, 0, 0, 0, 0, 0, 59, 14, 0, 0, 0, 0, 1, 0, 2, - 0, 0, 0, 3, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 2, 3, 0, 4, 5, 0, 0, 6, 0, 0, - 0, 7, 0, 0, 0, 1, 1, 0, 0, 8, 9, 0, 8, 9, 0, 0, - 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 13, 0, 0, 0, 0, 14, - 15, 16, 17, 0, 0, 0, 1, 0, 0, 18, 19, 0, 0, 0, 20, 0, - 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 8, - 21, 9, 0, 0, 22, 0, 0, 0, 0, 1, 0, 23, 24, 25, 0, 0, - 26, 0, 0, 0, 8, 21, 27, 0, 1, 0, 0, 1, 1, 1, 1, 0, - 1, 28, 29, 30, 0, 31, 32, 20, 1, 1, 0, 0, 0, 8, 21, 9, - 1, 4, 5, 0, 0, 0, 33, 9, 0, 1, 1, 1, 0, 8, 21, 21, - 21, 21, 34, 1, 35, 21, 21, 21, 9, 36, 0, 0, 37, 38, 1, 0, - 39, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 8, 21, 9, 1, 0, - 0, 0, 40, 0, 8, 21, 21, 21, 21, 21, 21, 21, 21, 9, 0, 1, - 1, 1, 1, 8, 21, 21, 21, 9, 0, 0, 0, 41, 0, 42, 43, 0, - 0, 0, 1, 44, 0, 0, 0, 45, 8, 9, 1, 0, 0, 0, 8, 21, - 21, 21, 9, 0, 1, 0, 1, 1, 8, 21, 21, 9, 0, 4, 5, 8, - 9, 1, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 11, 11, 11, 12, 13, - 13, 13, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 13, 13, 13, - 24, 25, 26, 26, 26, 27, 13, 13, 13, 28, 29, 30, 13, 31, 32, 33, - 34, 35, 36, 37, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 38, 7, 7, 39, 7, 40, 7, 7, - 7, 41, 13, 42, 7, 7, 43, 7, 7, 7, 44, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 45, 0, 0, 1, 2, 2, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 32, 33, 34, 35, 36, 37, 37, - 37, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 2, 2, 53, 54, 55, 56, 57, 58, 59, 59, 59, 59, 60, 59, - 59, 59, 59, 59, 59, 59, 61, 61, 59, 59, 59, 59, 62, 59, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 59, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 78, 69, 69, 69, 69, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, - 81, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 69, 69, 96, 97, 98, 99, 99, 99, - 100,101,102,103,104,105,106,107,108,109, 95,110,111,112,113,114, - 115,116,117,117,118,119,120,121,122,123,124,125,126,127,128,129, - 130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145, - 95,146,147,148,149, 95,150,151,152,153,154,155,156,157,158,159, - 160,161, 95,162,163,164,165,165,165,165,165,165,165,166,167,165, - 168, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95,169,170,170,170,170,170,170,170,170,171,170, - 170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170, - 170,170,170,170,170,170,170,170,170,170,170,170,170,172,173,173, - 173,173,174, 95, 95, 95, 95, 95,175, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95,176,176,176,176,177,178,179,180, 95, 95, - 181, 95,182,183,184,185,186,186,186,186,186,186,186,186,186,186, - 186,186,186,186,186,186,186,186,186,186,186,186,187,187,187,188, - 189,190, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95,191,192,193,194,195,195,196, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,197,198, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 59,199, - 59, 59, 59,200,201,202, 59,203,204,205,206,207,208, 95,209,210, - 211, 59, 59,212, 59,213,214,214,214,214,214,215, 95, 95, 95, 95, - 95, 95, 95, 95,216, 95,217,218,219, 95, 95,220, 95, 95, 95,221, - 95,222, 95,223, 95,224,225,226,227, 95, 95, 95, 95, 95,228,229, - 230, 95,231,232, 95, 95,233,234, 59,235,236, 95, 59, 59, 59, 59, - 59, 59, 59,237, 59,238,239,240, 59, 59,241,242, 59,243, 95, 95, - 95, 95, 95, 95, 95, 95, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69,244, 69, 69,245, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69,246, 69, 69, 69, 69, 69, 69, 69, 69, 69,247, 69, 69, - 69, 69,248, 95, 95, 95, 69, 69, 69, 69,249, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 69, 69, 69, 69, 69, 69,250, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,251, 95, - 95, 95, 95, 95, 95, 95,252, 95,253,254, 0, 1, 2, 2, 0, 1, - 2, 2, 2, 3, 4, 5, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 0, 0, 0, 19, 0, 19, 0, 0, 0, 0, 0, - 26, 26, 1, 1, 1, 1, 9, 9, 9, 9, 0, 9, 9, 9, 2, 2, - 9, 9, 9, 9, 0, 9, 2, 2, 2, 2, 9, 0, 9, 0, 9, 9, - 9, 2, 9, 2, 9, 9, 9, 9, 2, 9, 9, 9, 55, 55, 55, 55, - 55, 55, 6, 6, 6, 6, 6, 1, 1, 6, 2, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 2, 2, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 2, 2, 2, 2, 14, 14, 2, 2, 2, 3, 3, 3, 3, 3, 0, - 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 1, 1, 1, - 3, 3, 1, 3, 3, 3, 37, 37, 37, 37, 37, 37, 2, 37, 37, 37, - 37, 2, 2, 37, 37, 37, 38, 38, 38, 38, 38, 38, 2, 2, 64, 64, - 64, 64, 64, 64, 64, 2, 2, 64, 64, 64, 90, 90, 90, 90, 90, 90, - 2, 2, 90, 90, 90, 2, 95, 95, 95, 95, 2, 2, 95, 2, 3, 3, - 2, 2, 2, 2, 2, 3, 3, 3, 0, 3, 7, 7, 7, 7, 7, 1, - 1, 1, 1, 7, 7, 7, 0, 0, 7, 7, 5, 5, 5, 5, 2, 5, - 5, 5, 5, 2, 2, 5, 5, 2, 5, 5, 5, 2, 5, 2, 2, 2, - 5, 5, 5, 5, 2, 2, 5, 5, 5, 2, 2, 2, 2, 5, 5, 5, - 2, 5, 2, 11, 11, 11, 11, 11, 11, 2, 2, 2, 2, 11, 11, 2, - 2, 11, 11, 11, 11, 11, 11, 2, 11, 11, 2, 11, 11, 2, 11, 11, - 2, 2, 2, 11, 2, 2, 11, 2, 11, 2, 2, 2, 11, 11, 2, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 2, 10, 10, 10, 10, - 2, 2, 10, 2, 2, 2, 2, 2, 10, 10, 2, 21, 21, 21, 21, 21, - 21, 21, 21, 2, 2, 21, 21, 2, 21, 21, 21, 21, 2, 2, 21, 21, - 2, 21, 2, 2, 21, 21, 2, 2, 22, 22, 2, 22, 22, 22, 22, 22, - 22, 2, 22, 2, 22, 22, 22, 22, 2, 2, 2, 22, 22, 2, 2, 2, - 2, 22, 22, 2, 2, 2, 22, 22, 22, 22, 23, 23, 23, 23, 23, 2, - 23, 23, 23, 23, 2, 2, 2, 23, 23, 2, 23, 23, 23, 2, 2, 2, - 23, 23, 2, 2, 2, 23, 16, 16, 16, 16, 16, 2, 16, 16, 2, 16, - 16, 16, 16, 16, 2, 2, 2, 16, 16, 2, 16, 16, 16, 2, 2, 2, - 16, 16, 20, 20, 20, 20, 20, 2, 20, 20, 2, 2, 20, 20, 2, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 2, 2, 36, 36, 36, 36, - 2, 36, 2, 36, 2, 2, 2, 2, 36, 2, 2, 2, 2, 36, 36, 2, - 36, 2, 36, 2, 2, 2, 2, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 2, 2, 2, 2, 0, 2, 18, 18, 2, 18, 2, 18, 18, 18, 18, - 18, 2, 18, 18, 18, 18, 2, 18, 2, 18, 18, 18, 2, 2, 18, 2, - 18, 2, 25, 25, 25, 25, 2, 25, 25, 25, 25, 2, 2, 2, 25, 2, - 25, 25, 25, 0, 0, 0, 0, 25, 25, 2, 33, 33, 33, 33, 8, 8, - 8, 8, 8, 8, 2, 8, 2, 8, 2, 2, 8, 8, 8, 0, 12, 12, - 12, 12, 30, 30, 30, 30, 30, 2, 30, 30, 30, 30, 2, 2, 30, 30, - 30, 2, 2, 30, 30, 30, 30, 2, 2, 2, 29, 29, 29, 29, 29, 29, - 2, 2, 28, 28, 28, 28, 34, 34, 34, 34, 34, 2, 2, 2, 35, 35, - 35, 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, 2, 2, 2, 45, 45, - 45, 45, 45, 45, 2, 2, 2, 2, 2, 45, 44, 44, 44, 44, 44, 0, - 0, 2, 43, 43, 43, 43, 46, 46, 46, 46, 46, 2, 46, 46, 31, 31, - 31, 31, 31, 31, 2, 2, 32, 32, 0, 0, 32, 0, 32, 32, 32, 32, - 32, 32, 32, 32, 2, 2, 32, 2, 2, 2, 32, 32, 32, 2, 28, 28, - 2, 2, 48, 48, 48, 48, 48, 48, 48, 2, 48, 2, 2, 2, 52, 52, - 52, 52, 52, 52, 2, 2, 52, 2, 2, 2, 58, 58, 58, 58, 58, 58, - 2, 2, 58, 58, 58, 2, 2, 2, 58, 58, 54, 54, 54, 54, 2, 2, - 54, 54, 91, 91, 91, 91, 91, 91, 91, 2, 91, 2, 2, 91, 91, 91, - 2, 2, 1, 1, 2, 2, 62, 62, 62, 62, 62, 2, 62, 62, 76, 76, - 76, 76, 93, 93, 93, 93, 70, 70, 70, 70, 2, 2, 2, 70, 70, 70, - 2, 2, 2, 70, 70, 70, 73, 73, 73, 73, 6, 6, 6, 2, 8, 8, - 8, 2, 2, 8, 8, 8, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, - 0, 0, 0, 1, 0, 0, 1, 1, 0, 2, 19, 19, 9, 9, 9, 9, - 9, 6, 19, 9, 9, 9, 9, 9, 19, 19, 9, 9, 9, 19, 6, 19, - 19, 19, 19, 19, 19, 9, 9, 9, 2, 2, 2, 9, 2, 9, 2, 9, - 9, 9, 1, 1, 0, 0, 0, 2, 0, 0, 0, 19, 2, 2, 0, 0, - 0, 19, 0, 0, 0, 2, 19, 2, 2, 2, 0, 0, 2, 2, 1, 2, - 2, 2, 0, 0, 9, 0, 0, 0, 19, 19, 27, 27, 27, 27, 2, 2, - 0, 0, 56, 56, 56, 56, 2, 55, 55, 55, 61, 61, 61, 61, 2, 2, - 2, 61, 61, 2, 2, 2, 13, 13, 13, 13, 13, 13, 2, 13, 13, 13, - 2, 2, 0, 13, 0, 13, 0, 13, 13, 13, 13, 13, 1, 1, 1, 1, - 12, 12, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 2, 2, 1, - 1, 0, 0, 15, 15, 15, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 0, 2, 26, 26, 26, 26, 26, 26, 26, 2, 12, 12, 12, 12, 12, - 12, 2, 12, 12, 12, 0, 39, 39, 39, 39, 39, 2, 2, 2, 39, 39, - 39, 2, 86, 86, 86, 86, 77, 77, 77, 77, 79, 79, 79, 79, 2, 19, - 19, 19, 60, 60, 60, 60, 60, 2, 2, 2, 65, 65, 65, 65, 75, 75, - 75, 75, 75, 75, 2, 2, 2, 2, 75, 75, 69, 69, 69, 69, 69, 69, - 0, 69, 74, 74, 74, 74, 2, 2, 2, 74, 12, 2, 2, 2, 84, 84, - 84, 84, 84, 84, 2, 0, 84, 84, 2, 2, 2, 2, 84, 84, 33, 33, - 33, 2, 68, 68, 68, 68, 68, 68, 68, 2, 68, 68, 2, 2, 92, 92, - 92, 92, 92, 92, 92, 2, 2, 2, 2, 92, 87, 87, 87, 87, 87, 87, - 87, 2, 19, 9, 19, 19, 19, 19, 0, 0, 87, 87, 2, 2, 2, 2, - 2, 12, 19, 19, 19, 2, 2, 2, 2, 4, 14, 2, 14, 2, 14, 14, - 2, 14, 14, 2, 14, 14, 3, 3, 0, 0, 1, 1, 6, 6, 3, 2, - 3, 3, 3, 2, 2, 0, 2, 0, 0, 0, 0, 0, 17, 17, 17, 17, - 0, 0, 2, 2, 12, 12, 49, 49, 49, 49, 2, 49, 49, 49, 49, 49, - 49, 2, 49, 49, 2, 49, 49, 49, 2, 2, 0, 2, 2, 2, 9, 2, - 2, 2, 0, 1, 2, 2, 71, 71, 71, 71, 71, 2, 2, 2, 67, 67, - 67, 67, 67, 2, 2, 2, 42, 42, 42, 42, 2, 42, 42, 42, 41, 41, - 41, 41, 41, 41, 41, 2,118,118,118,118,118,118,118, 2, 53, 53, - 53, 53, 53, 53, 2, 53, 59, 59, 59, 59, 59, 59, 2, 2, 40, 40, - 40, 40, 51, 51, 51, 51, 50, 50, 50, 50, 50, 50, 2, 2,135,135, - 135,135,106,106,106,106,104,104,104,104, 2, 2, 2,104,161,161, - 161,161,161,161,161, 2,161,161, 2,161,161, 2, 2, 2,170,170, - 170,170,110,110,110,110,110,110,110, 2,110,110, 2, 2, 19, 19, - 2, 19, 19, 2, 19, 19, 47, 47, 47, 47, 47, 47, 2, 2, 47, 2, - 47, 47, 47, 47, 2, 47, 47, 2, 2, 2, 47, 2, 2, 47, 81, 81, - 81, 81, 81, 81, 2, 81,120,120,120,120,116,116,116,116,116,116, - 116, 2, 2, 2, 2,116,128,128,128,128,128,128,128, 2,128,128, - 2, 2, 2, 2, 2,128, 66, 66, 66, 66, 2, 2, 2, 66, 72, 72, - 72, 72, 72, 72, 2, 2, 2, 2, 2, 72,173,173,173,173,173,173, - 2, 2, 98, 98, 98, 98, 97, 97, 97, 97, 2, 2, 97, 97, 57, 57, - 57, 57, 2, 57, 57, 2, 2, 57, 57, 57, 57, 57, 2, 2, 57, 57, - 57, 2, 2, 2, 2, 57, 57, 2, 2, 2, 88, 88, 88, 88,117,117, - 117,117,112,112,112,112,112,112,112, 2, 2, 2, 2,112, 78, 78, - 78, 78, 78, 78, 2, 2, 2, 78, 78, 78, 83, 83, 83, 83, 83, 83, - 2, 2, 82, 82, 82, 82, 82, 82, 82, 2,122,122,122,122,122,122, - 2, 2, 2,122,122,122,122, 2, 2, 2, 89, 89, 89, 89, 89, 2, - 2, 2,130,130,130,130,130,130,130, 2, 2, 2,130,130,144,144, - 144,144,144,144, 2, 2,165,165,165,165,165,165, 2, 2, 2,165, - 165,165, 2, 2,165,165, 3, 3, 3, 2,156,156,156,156,156,156, - 2,156,156,156, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2,147,147, - 147,147,148,148,148,148,148,148, 2, 2,158,158,158,158,158,158, - 2, 2,153,153,153,153,149,149,149,149,149,149,149, 2, 94, 94, - 94, 94, 94, 94, 2, 2, 2, 2, 94, 94, 2, 2, 2, 94, 85, 85, - 85, 85, 85, 85, 85, 2, 2, 85, 2, 2,101,101,101,101,101, 2, - 2, 2,101,101, 2, 2, 96, 96, 96, 96, 96, 2, 96, 96,111,111, - 111,111,111,111,111, 2,100,100,100,100,108,108,108,108,108,108, - 2,108,108,108, 2, 2,129,129,129,129,129,129,129, 2,129, 2, - 129,129,129,129, 2,129,129,129, 2, 2,109,109,109,109,109,109, - 109, 2,109,109, 2, 2,107,107,107,107, 2,107,107,107,107, 2, - 2,107,107, 2,107,107,107,107, 2, 1,107,107, 2, 2,107, 2, - 2, 2, 2, 2, 2,107, 2, 2,107,107,171,171,171,171,171,171, - 2,171, 2, 2,171, 2,171, 2,171, 2, 2,171, 2,171,171,171, - 171, 2,171, 2, 2, 2, 2,171,171, 2,137,137,137,137, 2,137, - 137,137,137,137, 2, 2,124,124,124,124,124,124, 2, 2,123,123, - 123,123,123,123, 2, 2,114,114,114,114,114, 2, 2, 2,114,114, - 2, 2,102,102,102,102,102,102, 2, 2,126,126,126,126,126,126, - 126, 2, 2,126,126,126,142,142,142,142,125,125,125,125,125,125, - 125, 2, 2, 2, 2,125,154,154,154,154,154,154,154, 2, 2,154, - 2, 2, 2,154,154, 2,154,154, 2,154,154, 2, 2,154,154,154, - 2, 2,150,150,150,150, 2, 2,150,150,150, 2, 2, 2,141,141, - 141,141,140,140,140,140,140,140,140, 2,121,121,121,121,121, 2, - 2, 2, 7, 7, 2, 2,169,169,169,169,169,169, 2, 2,133,133, - 133,133,133, 2,133,133,133,133,133, 2,133,133, 2, 2,133, 2, - 2, 2,134,134,134,134, 2, 2,134,134, 2,134,134,134,134,134, - 134, 2,138,138,138,138,138,138,138, 2,138,138, 2,138, 2, 2, - 138, 2,138,138, 2, 2,143,143,143,143,143,143, 2,143,143, 2, - 143,143,143,143,143, 2,143, 2, 2, 2,143,143, 2, 2,175,175, - 175,175,175,175, 2, 2,145,145,145,145,145, 2, 2, 2,163,163, - 163,163,163, 2,163,163,163,163,163, 2, 2, 2,163,163, 86, 2, - 2, 2, 63, 63, 63, 63, 63, 63, 2, 2, 63, 63, 63, 2, 63, 2, - 2, 2,157,157,157,157,157,157,157, 2, 80, 80, 80, 80, 80, 80, - 2, 2, 80, 80, 80, 2,127,127,127,127,127,127,127, 2,166,166, - 166,166,166,166, 2, 2, 79, 2, 2, 2,115,115,115,115,115,115, - 115, 2,115,115, 2, 2, 2, 2,115,115,159,159,159,159,159,159, - 159, 2,159,159, 2, 2,103,103,103,103,103,103, 2, 2,119,119, - 119,119,119,119, 2, 2,119,119, 2,119, 2,119,119,119,167,167, - 167,167,167,167, 2, 2,146,146,146,146,146,146,146, 2,172,172, - 172,172,172, 2, 2,172, 99, 99, 99, 99, 99, 99, 99, 2, 2, 2, - 2, 99,136,139, 13, 13,155, 2, 2, 2, 13, 13, 13, 2,136,136, - 136,136,155,155,155,155,155,155, 2, 2, 2, 2, 2,155,136,136, - 136, 2, 2, 17, 17, 17, 2, 17, 17, 2, 17, 15, 15, 15, 17, 17, - 17, 2, 2, 2, 15, 2, 2, 17, 2, 2,139,139,139,139,105,105, - 105,105,105,105,105, 2,105, 2, 2, 2,105,105, 2, 2, 1, 1, - 1, 2, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 2, 2, - 0, 2, 2, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 2,131,131, - 131,131, 2, 2, 2,131, 2,131,131,131, 56, 56, 56, 2, 56, 2, - 2, 56, 56, 56, 2, 56, 56, 2, 56, 56, 6, 6, 2, 2, 2, 2, - 2, 6,151,151,151,151,151, 2, 2, 2,151,151, 2, 2, 2, 2, - 151,151,160,160,160,160,160,160,160, 2,152,152,152,152,152,152, - 2, 2, 2, 2, 2,152,164,164,164,164,164,164, 2, 2,168,168, - 168,168,168,168,168, 2, 2, 2, 2,168,174,174,174,174,174,174, - 174, 2,174,174, 2, 2, 2, 2,174,174, 2, 30, 30, 2,113,113, - 113,113,113, 2, 2,113,113,113,113, 2,132,132,132,132,132,132, - 2, 2, 2, 2,132,132, 2, 3, 3, 3, 2, 3, 3, 2, 3, 2, - 2, 3, 2, 3, 2, 3, 2, 2, 3, 2, 3, 2, 3, 2, 3, 3, - 2, 3, 15, 0, 0, 2, 0, 2, 2, 0, 13, 2, 2, 2, 2, 0, - 2, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 10, - 9, 11, 12, 13, 9, 9, 9, 14, 9, 9, 15, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 16, 17, - 9, 9, 9, 9, 18, 9, 9, 9, 9, 9, 19, 20, 21, 9, 22, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 23, 9, 9, 9, 9, 9, 24, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 25, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 26, 27, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 0, 0, 24, 25, 26, 27, 28, 29, 30, 0, 0, - 31, 32, 0, 33, 0, 34, 0, 35, 0, 0, 0, 0, 36, 37, 38, 39, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 44, 0, 45, 0, 0, 0, 0, 0, 0, 46, 47, 0, 0, - 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 51, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, - 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 5, 6, 7, 2, 2, 2, 2, 2, 8, 2, 2, 9, 1, 10, + 11, 12, 13, 14, 15, 0, 16, 2, 17, 0, 18, 19, 20, 21, 22, 23, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 24, 25, 26, 2, 27, 28, + 2, 29, 2, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67, 68, 0, 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102, - 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,104, 0, 0, 0, 0, 0, 0,105,106, 0,107, 0, 0, 0, - 108, 0,109, 0,110, 0,111,112,113, 0,114, 0, 0, 0,115, 0, - 0, 0,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,118,119,120,121, 0,122,123,124,125,126, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 32, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 2, 23, 24, 25, 2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 5, 38, 39, 40, 41, 42, 3, 43, 5, 44, 45, 46, 47, 48, + 49, 50, 51, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 52, 2, 2, + 53, 2, 2, 2, 54, 2, 55, 56, 57, 58, 59, 60, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 61, 4, 4, 4, 4, 4, 4, 4, 4, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 62, 63, 2, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 2, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 2, 2, 2, 98, 99,100, 0, 0, 0, 0, 0, 0, 0, 0, 0,101, + 2, 2, 2, 2,102, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2,103, 2, 2,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,105, 0, 0, 0, 0, 0, 0, 2, 2,106,107, 0,108,109,110, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,111,112, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,113, + 2,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0,116, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 3,118,119, + 120,121,122,123,124,125,126,127, 3, 3,128, 0, 0, 0, 0,129, + 130,131,132, 0,133,134,135,136,137,138, 0, 0,139,140,141, 0, + 142,143,144,145, 3, 3,146,147,148, 3,149,150, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2,151, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2,152, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,153, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,154, 2, 2,155, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,156, 0, 0, 0, 0, 0, + 2, 2, 2,157, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2,158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 159,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,161, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, + 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, + 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, + 11, 11, 11, 11, 11, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, + 13, 13, 13, 13, 13, 13, 13, 13, 16, 16, 16, 16, 16, 16, 16, 16, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 14, + 1, 1, 1, 1, 14, 1, 1, 1, 18, 18, 18, 18, 18, 18, 18, 18, + 1, 5, 0, 11, 11, 11, 11, 11, 1, 1, 1, 1, 1, 1, 14, 0, + 1, 1, 1, 1, 14, 0, 0, 0, 6, 6, 6, 6, 7, 7, 7, 7, + 1, 1, 1, 1, 1, 14, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 14, 0, 0, 0, 0, + 1, 1, 1, 14, 1, 1, 1, 14, 3, 3, 3, 3, 3, 3, 0, 0, + 28, 28, 28, 28, 28, 28, 28, 28, 11, 11, 11, 11, 11, 1, 1, 1, + 14, 17, 1, 1, 1, 1, 1, 1, 14, 0, 0, 0, 0, 0, 0, 0, + 14, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 0, 0, 0, + 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 29, 0, + 11, 11, 11, 11, 11, 11, 11, 11, 7, 7, 7, 7, 7, 6, 6, 6, + 0, 0, 0, 11, 11, 11, 11, 11, 17, 1, 1, 1, 1, 1, 1, 1, + 11, 11, 11, 11, 11, 10, 10, 10, 1, 1, 1, 0, 0, 0, 0, 0, + 5, 46, 1, 1, 1, 1, 1, 1, 6, 6, 6, 6, 41, 41, 41, 41, + 3, 3, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 0, 0, 12, + 1, 1, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, + 49, 10, 10, 10, 10, 10, 10, 10, 7, 6, 6, 6, 6, 6, 6, 6, + 44, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, + 3, 3, 3, 3, 0, 0, 0, 0, 11, 11, 11, 11, 11, 12, 9, 77, + 88, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,102,103,104, + 89, 6, 6, 6, 6, 6, 6, 6, 22, 22, 22, 22, 22, 22, 22, 22, + 26, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 5, 5, 5, 5, 5, + 5, 20, 1, 1, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, + 11, 11, 11, 11, 11, 12, 12, 12, 1, 1, 1, 1, 14, 1, 1, 0, + 14, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 14, 1, 1, 1, 1, + 10, 10, 10, 10, 10, 10, 51, 0,115, 1, 1, 1, 1, 1, 1, 1, + 5, 5, 5, 5, 5, 5, 5, 0, 1, 1, 1, 1, 13, 13, 13, 12, + 6, 6, 6, 0, 7, 7, 7, 0, 30, 30, 30, 30, 30, 30, 30, 30, + 3, 3, 3, 3, 3, 29, 0, 0, 3, 3, 3, 3, 3, 3, 3, 29, + 10, 10, 10, 10, 10, 3, 3, 3, 75, 10, 10, 10, 10, 10, 10, 10, + 3, 3, 3, 29, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, + 7, 7, 7, 7, 7, 32, 7, 7, 0, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 51, 0, 0, 0, 1, 1, 1, 1, 1, 1, 86, 10, + 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 15, 19, + 1, 1, 1, 1, 1, 1, 1, 34, 1, 1, 1, 1, 1, 1, 1, 5, + 15, 15, 15, 15, 15, 15, 15, 15, 1, 14, 0, 0, 0, 0, 0, 0, + 5, 5, 5, 23, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, + 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, + 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, + 3, 3, 3, 3, 29, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 87, 12,100, 12, 27,101, 76, 12, 6, 6, 6, 6, 6,105,106,135, + 87, 30, 30, 66,107,136,137,108, 50, 10, 89, 12,138,139, 10, 78, + 7, 7, 7, 59, 7, 7, 7, 8, 6, 6, 6, 60, 6, 6, 6, 6, + 8, 8, 8, 8, 21, 21, 21, 21, 21, 21, 21, 21, 6, 8, 8, 8, + 8, 8, 8, 8, 7, 21, 21, 6, 21, 8, 8, 7, 21, 7, 6, 7, + 7, 21, 8, 7, 8, 6, 7, 21, 8, 8, 8, 7, 21, 6, 8, 7, + 21, 7, 21, 21, 8, 67, 8, 6, 1, 1,109, 21,110,109, 21, 21, + 21, 21, 21, 21, 21, 21, 6, 8, 21,110, 8, 7, 8, 8, 8, 8, + 8, 8, 6, 6, 6, 7, 21, 8, 21, 21, 7, 8, 8, 8, 8, 8, + 6, 6, 1, 6, 6, 6, 6, 6, 13, 22, 22, 13, 13, 13, 13, 13, + 13, 22, 22, 22, 22, 22, 22, 22, 13, 13, 68, 22, 22, 22, 68, 68, + 8, 8, 68, 8, 0, 69, 6, 88, 0, 0, 22,140, 7, 32, 32, 7, + 21, 7, 7, 7, 7, 7, 7, 7, 7, 39, 7, 7, 7, 7, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 21, 6, 7, 8, 6, 8, 8, 8, 8, + 6, 6, 8, 90, 21, 8, 21, 7, 8, 43, 5, 5, 79, 8, 8, 8, + 7, 21, 21, 21, 21, 21, 21, 6, 39, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 32, 54, 12, 12, 12, 6, 6, 6, 6,111,141, 44, 70, + 5, 5, 5, 5, 5, 5, 5,142, 71, 36, 5, 71, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 14, 0, 17, 1, 40, 33, 0, 0, 0, 0, 0, + 18, 18, 18, 9, 77, 80, 12, 3, 5, 5, 5, 5, 5, 36,143, 12, + 52, 1, 1, 1, 1, 24, 5, 5, 11, 11, 11, 11, 11, 12, 12, 1, + 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 53, 5, 5, 5,144, 43, + 5, 5, 81, 72, 55, 5, 5, 1, 11, 11, 11, 11, 11, 1, 56, 82, + 12, 12, 12, 12, 12, 12, 12, 73, 24, 1, 1, 1, 1, 1, 1, 1, + 5, 5, 5, 5, 5, 23, 17, 1, 25, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 24, 5, 5, 5, 5, 13, 66, 12, 61, 26, 30, + 1, 1, 1, 5, 5, 72, 5, 5, 5, 5, 72, 5, 72, 5, 5, 0, + 12, 12, 12, 12, 12, 12, 12, 33, 1, 1, 1, 1, 24, 5, 0, 33, + 1, 1, 1, 1,145, 1, 1, 1, 18, 0, 0, 26, 5, 5, 5, 5, + 1, 1, 1, 1, 45, 5, 5, 5, 5, 91, 5, 5, 5, 5, 5, 5, + 1, 1, 1, 1, 1, 20, 25, 15, 19, 5, 5, 5, 20, 15, 19, 15, + 24, 5, 5, 5, 1, 1, 1, 1, 1, 5, 12, 11, 11, 11, 11, 11, + 62, 1, 1, 1, 1, 1, 1, 1, 24, 15, 17, 1, 1, 1, 14, 17, + 14, 14, 0, 1, 1, 0, 25, 15, 19, 5, 23, 35, 37, 35, 19, 14, + 0, 0, 0, 35, 0, 0, 1, 17, 1, 30, 10, 10, 10, 70, 40, 23, + 26, 20, 17, 1, 1, 14, 0, 17, 14, 1, 17, 14, 1, 0, 23, 15, + 19, 23, 0, 26, 23, 26, 5, 0, 26, 0, 0, 0, 17, 1, 14, 14, + 5, 1, 24, 33, 0, 0, 0, 0, 26, 20, 17, 1, 1, 1, 1, 17, + 14, 1, 17, 1, 1, 0, 25, 15, 19, 5, 5, 26, 20, 35, 19, 0, + 80, 0, 0, 0, 17, 5, 5, 5, 26, 15, 17, 1, 1, 1, 14, 17, + 14, 1, 17, 1, 1, 0, 25, 19, 19, 5, 23, 35, 37, 35, 19, 0, + 0, 0, 26, 20, 0, 0, 1, 17, 82, 10, 10, 10, 0, 0, 0, 0, + 0, 25, 17, 1, 1, 14, 0, 1, 14, 1, 1, 0, 17, 14, 14, 1, + 0, 17, 14, 0, 1, 14, 0, 1, 1, 1, 1, 1, 1, 0, 0, 15, + 20, 37, 0, 15, 37, 15, 19, 0, 14, 0, 0, 35, 0, 0, 0, 0, + 10, 63, 3, 3, 70, 29, 0, 0, 20, 15, 25, 1, 1, 1, 14, 1, + 1, 1, 1, 1, 1, 0, 25, 5, 20, 15, 37, 5, 23, 5, 5, 0, + 0, 0, 26, 23, 1, 14, 1, 0, 0, 0, 0, 38, 10, 10, 10, 63, + 24, 15, 53, 1, 1, 1, 14, 1, 1, 1, 17, 1, 1, 0, 25, 19, + 15, 15, 37, 20, 37, 15, 5, 0, 0, 0, 35, 37, 0, 0, 1, 14, + 17, 34, 0, 0, 0, 0, 0, 0, 5, 15, 1, 1, 1, 1, 14, 1, + 1, 1, 1, 1, 1, 24, 25, 15, 19, 5, 23, 15, 37, 15, 19, 56, + 0, 0, 1, 34, 10, 10, 10,112, 10, 10, 10, 10, 63, 1, 1, 1, + 26, 15, 17, 1, 1, 1, 1, 1, 1, 1, 1, 14, 0, 1, 1, 1, + 1, 17, 1, 1, 1, 1, 17, 0, 1, 1, 1, 14, 0, 23, 0, 35, + 15, 5, 23, 23, 15, 15, 15, 15, 0, 15, 33, 0, 0, 0, 0, 0, + 24, 1, 5, 5, 5, 23, 0,113, 1, 1, 1, 72, 5, 5, 5, 36, + 11, 11, 11, 11, 11, 12, 0, 0, 17, 14, 14, 1, 1, 14, 1, 1, + 1, 1, 17, 17, 1, 1, 1, 1, 24, 1, 5, 5, 5, 5, 25, 0, + 1, 1, 14, 61, 5, 5, 5, 23, 11, 11, 11, 11, 11, 0, 1, 1, + 56, 3, 12, 12, 12, 12, 12, 12, 12, 57, 57, 3, 5, 3, 3, 3, + 10, 10, 43, 43, 43, 27, 27, 15, 1, 1, 1, 1, 17, 1, 1, 1, + 26, 5, 5, 5, 5, 5, 5, 20, 5, 5, 36, 5, 1, 1, 24, 5, + 5, 5, 5, 5, 26, 5, 5, 5, 5, 5, 5, 5, 5, 5, 23, 3, + 3, 3, 3, 55, 3, 3, 29, 3, 12, 12, 57, 3, 66, 33, 0, 0, + 1, 1, 1, 1, 1, 34, 19, 5, 20, 5, 5, 5, 19, 20, 19, 25, + 1, 1, 1, 15, 5, 1, 1, 5, 25, 15, 46, 34, 15, 15, 15, 1, + 24, 5, 25, 1, 1, 1, 1, 1, 1, 20, 19, 20, 15, 15, 19, 34, + 11, 11, 11, 11, 11, 15, 19, 3, 7, 7, 7, 39, 0, 0, 39, 0, + 6, 6, 6, 6, 6,111, 69, 6, 1, 1, 1, 14, 14, 1, 1, 0, + 14, 1, 1, 0, 1, 1, 1, 14, 1, 1, 1, 1, 1, 14, 26, 5, + 12, 12, 12, 12,114, 10, 10, 10, 7, 7, 7, 0, 6, 6, 6, 0, + 1, 1, 1, 1, 1, 1, 56, 53,146, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1,147,116, 0, 1, 1, 1, 1, 1, 40, 12, 16, + 148, 1, 1, 1, 14, 0, 0, 0, 1, 5, 20, 0, 0, 0, 0, 17, + 1, 5, 83, 33, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 14, 1, 14, 5, 0, 0, 0, 0, 0, 0, + 1, 1, 5, 19, 5, 5, 5, 15, 15, 15, 15, 20, 19, 5, 5, 5, + 5, 5, 12, 62, 12, 80, 24, 0, 10, 10, 10, 10, 10, 0, 0, 0, + 12, 12, 12, 92, 12, 71, 5, 91, 1, 45, 1, 1, 1, 1, 1, 1, + 1, 1, 24, 25, 1, 1, 1, 1, 1, 1, 1, 1, 24, 14, 0, 0, + 5, 20, 15, 19, 20, 15, 0, 0, 15, 20, 15, 15, 19, 5, 0, 0, + 29, 0, 12, 11, 11, 11, 11, 11, 1, 1, 14, 0, 0, 0, 0, 0, + 11, 11, 11, 11, 11, 51, 0, 3, 1, 1, 1, 24, 20, 19, 0, 12, + 1, 1, 34, 20, 5, 5, 5, 23, 20, 20, 19, 5, 5, 5, 20, 15, + 15, 19, 5, 5, 5, 5, 23, 26, 12, 12, 12, 62, 12, 12, 12, 0, + 5, 5, 5, 5, 5, 5, 5, 93, 5, 5, 5, 5, 5, 5, 0, 0, + 5, 5, 46, 1, 1, 1, 1, 1, 1, 1, 20, 5, 5, 20, 20, 15, + 15, 20, 46, 1, 1, 1, 14, 12, 57, 3, 3, 3, 3, 43, 5, 5, + 5, 5, 3, 3, 3, 3, 66, 12, 34, 5, 5, 15, 5, 19, 5, 1, + 1, 1, 1, 20, 5, 15, 19, 19, 5, 15, 0, 0, 0, 0, 12, 12, + 1, 1, 15, 15, 15, 15, 5, 5, 5, 5, 15, 5, 0, 38, 12, 12, + 11, 11, 11, 11, 11, 0, 17, 1, 6, 6, 6, 6, 21, 47, 0, 0, + 7, 7, 7, 7, 7, 32, 39, 7, 12, 12, 12, 12, 0, 0, 0, 0, + 5, 36, 5, 5, 5, 5, 5, 5, 20, 5, 5, 5, 25, 1, 24, 1, + 1, 1, 25, 34, 5, 14, 0, 0, 6, 6, 6, 6, 6, 6, 13, 13, + 13, 13, 13, 13, 13, 69, 6, 6, 6, 6, 6, 6, 69, 6, 6, 6, + 6, 6, 6, 6, 6,117, 13, 13, 8, 8, 8, 6, 6, 6, 6, 8, + 6, 6, 6, 6, 39, 39, 39, 39, 6, 6, 6, 6, 6, 6, 6, 0, + 6, 6, 47, 6, 7, 7, 94,118, 22, 6, 47, 6, 7, 7, 94, 22, + 6, 6, 0, 6, 7, 7,149, 22, 6, 6, 6, 6, 7, 7,150, 22, + 0, 6, 47, 6, 7, 7, 94,151, 74, 74, 74, 74, 74,152, 18, 18, + 84, 84, 84, 12, 58,119, 58,119, 12, 12, 12, 12,153, 18, 18,154, + 12, 12, 12, 12,120,121, 12,122,123, 12, 64, 65, 12, 12, 12, 12, + 12, 77,123, 12, 12, 12, 12,155, 18, 18,156, 18, 18, 18, 18, 18, + 157, 0, 10, 10, 10, 9, 64,158, 10, 10, 10, 10, 10, 9, 64,116, + 13, 13, 13, 13, 13, 13, 61, 0, 30, 0, 0, 0, 0, 0, 0, 0, + 5, 5, 5, 5, 5, 5,159, 79, 93, 79, 93, 5, 5, 5, 5, 5, + 23, 0, 0, 0, 0, 0, 0, 0, 3, 85, 3, 95, 3, 21, 7, 6, + 7, 8, 95, 3, 90, 7, 7, 3, 3, 3, 85, 85, 85, 7, 7,160, + 7, 7, 67, 1,124, 3, 6, 7, 9, 9, 90, 6, 6, 50, 3,125, + 16,161,162, 16,126, 3, 0, 0, 9, 9, 48, 3, 3, 9, 3, 3, + 48, 50, 3, 48, 3, 3, 3, 48, 3, 3, 3, 3, 3, 3, 3, 9, + 3, 48, 48, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, + 3, 3, 3, 3, 27, 27, 3, 3, 9, 3, 3, 3,163,164, 3, 3, + 3, 3, 3, 3, 3, 3, 48, 3, 3, 3, 3, 3, 3, 50, 9, 9, + 9, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 9, 9, + 9, 3, 3, 3, 3, 3, 3, 3, 10, 10, 10, 10, 10, 10, 3, 3, + 3, 3, 3, 3, 3, 10, 10, 10, 3, 3, 3, 50, 3, 3, 3, 3, + 50, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, + 3, 3, 3, 3, 3, 3, 3, 50, 3, 3, 3, 3, 27, 27, 27, 27, + 27, 27, 27, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, + 9, 9, 64,127, 9, 9, 9, 9, 9, 9, 9, 27, 27, 27, 27, 27, + 9, 64, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,127, 9, 9, 9, + 9, 9, 9, 9, 27, 27, 9, 9, 9, 9, 9, 9, 9, 9, 27, 9, + 9, 9, 48, 50, 9, 9, 48, 3, 3, 3, 0, 3, 3, 3, 3, 3, + 8, 7, 8, 21, 21, 21, 21, 7, 8, 8, 21, 6, 6, 6, 13, 7, + 8, 8,125, 3, 3, 95, 21,165, 5, 8, 0, 0, 38, 12,114, 12, + 6, 6, 6, 42, 0, 0, 42, 0, 1, 1, 1, 1, 0, 0, 0, 54, + 33, 0, 0, 0, 0, 0, 0, 26, 12, 58, 58, 12,120,121, 58, 12, + 12, 12, 12, 76, 12, 92, 58, 12, 58, 27, 27, 27, 27, 12, 12, 62, + 12, 12, 12, 12, 12, 84, 12, 12, 92,166, 12, 12, 12, 12, 12, 12, + 3, 12, 96, 31, 31, 31,167, 0, 3, 3, 3, 3, 3, 44, 3, 3, + 87, 12,168,128, 27, 27, 27, 27, 27, 3, 27, 27, 27, 27,129,169, + 170, 16, 16, 16, 16, 5, 5, 15,130, 13, 13, 3, 16,171, 40, 3, + 1, 1, 1, 14, 26,172,131, 52, 1, 1, 1, 1, 1, 40, 13, 52, + 0, 0, 17, 1, 1, 1, 1, 1, 3, 10, 10, 3, 3, 3, 3, 3, + 3, 3, 3, 0, 0, 0, 0, 44, 3, 3, 3, 3, 10, 10, 10, 10, + 1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,132, 12, + 11, 11, 11, 11, 11, 1, 0, 0, 8, 8, 8, 8, 8, 8, 8, 24, + 79,173, 5, 5, 5, 5, 5, 62, 8, 8, 8, 8, 8, 8, 13, 5, + 1, 1, 1, 16, 16, 16, 16, 16, 5, 12, 12, 12, 0, 0, 0, 0, + 22, 22, 22,131, 13, 13, 13, 13, 22, 8, 8, 8, 8, 8, 8, 8, + 6, 8, 8, 8, 8, 8, 8, 8, 69, 6, 6, 6, 21, 21, 21, 8, + 8, 8, 8, 8, 68,174, 21, 67, 8, 8, 6, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 7, 7, 8, 7, 7, 8, 8, 8, 8, 8, 8, + 8, 8, 7, 7, 21, 21, 8, 8, 8, 8, 8, 8, 8, 8, 32, 0, + 54, 13,175, 67, 13, 67, 1, 1, 1, 25, 1, 25, 1, 24, 1, 1, + 1, 34, 19, 20, 3, 3, 23, 0, 10, 10, 10, 3, 97, 0, 0, 0, + 1, 1, 12, 12, 0, 0, 0, 0, 15, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 5, 0, 0, 0, 0, 12, + 5, 1, 1, 1, 12, 53, 53, 24, 1, 1, 1, 5, 5, 5, 5, 12, + 1, 1, 1, 24, 5, 5, 5, 5, 5, 15, 0, 0, 0, 0, 0, 38, + 1, 24, 15, 5, 5, 15, 5, 15, 83, 12, 12, 12, 12, 12, 12, 54, + 1, 1, 24, 52, 1, 1, 1, 1, 11, 11, 11, 11, 11, 1, 1, 14, + 1, 1, 1, 1, 24, 5, 5, 20, 19, 20, 19, 23, 0, 0, 0, 0, + 1, 24, 1, 1, 1, 1, 20, 0, 11, 11, 11, 11, 11, 0, 12, 12, + 52, 1, 1, 56, 3, 34, 20, 1, 25, 5, 25, 24, 25, 1, 1, 5, + 24, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 45, 12, + 1, 1, 1, 1, 1, 34, 5, 15, 12, 45,176, 23, 0, 0, 0, 0, + 17, 1, 1, 14, 17, 1, 1, 14, 17, 1, 1, 14, 0, 0, 0, 0, + 6, 6, 6, 6, 6,118, 13, 13, 6, 6, 6, 6,117, 22, 0, 0, + 1, 34, 19, 15, 20, 83, 19, 0, 1, 1, 1, 14, 0, 17, 1, 1, + 6, 6, 6, 47, 0, 0, 0, 0, 0, 42, 6, 6, 0, 0, 17, 25, + 1, 1, 1, 1,177, 1, 1, 1, 1, 1, 1, 14, 1, 1, 14, 14, + 1, 17, 14, 1, 1, 1, 1, 1, 1, 22, 22, 22, 22, 22, 22, 22, + 22,107, 3, 3, 3, 3, 3, 3, 3, 82, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 31, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 97, 3, + 12, 12, 12, 96, 65, 0, 0, 0, 76,178,179, 31, 31, 31, 31, 31, + 31, 31, 65, 96, 65, 12,122,180, 12, 33, 12, 12,129, 31, 31, 65, + 12,181, 9, 98, 80, 12, 0, 0, 1, 1, 14, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 14, 73, 38, 12,100, 12, 27,101, 76, 12, + 6, 6, 6, 6, 6,105,106, 64, 65, 27, 12, 1, 1, 1, 1, 1, + 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, + 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 14, 0, + 30,182, 70,183, 50, 9, 48, 29, 0, 0, 0, 0, 73, 18, 3, 0, + 1, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, 14, 1, 17, + 12, 33, 0, 49, 10, 10, 10, 10, 10, 10, 0, 44, 3, 3, 3, 3, + 16, 16,126, 10, 63, 3, 3, 3, 3, 3, 3, 3, 3, 10, 3, 29, + 3, 3, 3, 3, 3, 3, 43, 0,133, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 0, 0, 10, 10, 0, 0, 0, 0, 17, 1, + 128, 1, 1, 1, 1, 99, 0, 0, 1, 1, 1, 5, 5, 23, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 38, 1, 1, 0, 0, 1, 1, 1, 1, + 184, 16, 16, 0, 0, 0, 0, 0, 7, 7, 7, 7, 6, 6, 6, 6, + 7, 7, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 38, 7, 32, 7, 42, 6, 6, 6, 6, + 6, 42, 6, 6, 6, 6, 6, 6, 6, 42, 6, 6, 6, 42, 47, 0, + 13, 13, 13, 54, 13, 13, 13, 13, 61, 13, 13, 13, 13, 61, 0, 0, + 1, 1, 1, 0, 14, 1, 1, 1, 1, 1, 1, 17, 14, 0, 14, 17, + 1, 1, 1, 38, 10, 10, 10, 10, 1, 1, 1, 56, 75, 10, 10, 10, + 0, 0, 0, 49, 10, 10, 10, 10, 1, 14, 1, 0, 0, 49, 10, 10, + 1, 1, 1, 10, 10, 10, 0, 38, 1, 1, 1, 1, 1, 0, 0, 38, + 1, 1, 1, 1, 0, 0, 10, 1, 24, 5, 26, 23, 0, 0, 5, 5, + 1, 1, 17, 1, 17, 1, 1, 1, 1, 1, 1, 0, 5, 23, 0, 26, + 12, 12, 12, 12, 33, 0, 0, 0, 1, 1, 1, 1, 1, 1, 86, 78, + 1, 1, 1, 1, 82, 1, 1, 1, 1, 1, 24, 23, 0, 49, 10, 10, + 12, 12, 12, 33, 0, 0, 0, 0, 1, 1, 1, 0, 38, 12, 12, 12, + 1, 1, 1, 0, 10, 10, 10, 10, 1, 14, 0, 0, 10, 10, 10, 10, + 1, 0, 0, 0, 38, 12, 33, 0, 0, 0, 0, 0, 49, 10, 10, 10, + 7, 32, 0, 0, 0, 0, 0, 0, 6, 47, 0, 0, 0, 10, 10, 10, + 1, 1, 5, 5, 0, 0, 0, 0, 11, 11, 11, 11, 11, 1, 1, 52, + 7, 7, 7, 0, 26, 5, 5,130, 6, 6, 6, 0, 0, 0, 0, 9, + 10, 10, 10, 10, 10, 10, 10, 51, 1, 1, 1, 1, 1, 26,185, 0, + 0, 1, 45, 1, 0, 0, 0, 0, 57, 3, 3, 3, 29, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 5, 5, 10, 10, 10,112, 0, 0, 0, 0, + 133, 10, 78, 12, 12, 0, 0, 0, 1, 5, 5, 12, 12, 0, 0, 0, + 1, 1, 86, 10, 10, 10, 0, 0, 19, 46, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, 36, 12, 12, 12, 0, + 10, 10, 10, 11, 11, 11, 11, 11, 25, 24, 25, 0, 0, 0, 0, 26, + 15, 19, 5, 20, 19, 36,186, 12, 12, 23, 0, 0, 0, 0, 73, 0, + 5, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 24, 5, 5, 19, 5, + 5, 5, 23, 11, 11, 11, 11, 11, 12, 12, 34, 46, 0, 0, 0, 0, + 1, 24, 12, 14, 0, 0, 0, 0, 1, 34, 15, 5, 5, 5, 5, 20, + 46, 1, 40, 12, 71, 5, 36, 19, 11, 11, 11, 11, 11, 40, 40, 12, + 10, 10, 51, 0, 0, 0, 0, 0, 5, 15, 20, 5, 12, 12, 12, 25, + 24, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 14, 14, 1, 1, 17, + 1, 1, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 40, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 24, 15, 19, 5, 5, 5, 23, 0, 0, + 5, 15, 17, 1, 1, 1, 14, 17, 14, 1, 17, 1, 1, 26, 25, 15, + 20, 15, 37, 35, 37, 35, 15, 0, 14, 0, 0, 35, 0, 0, 17, 1, + 1, 15, 0, 5, 5, 5, 23, 0, 5, 5, 23, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 17, 0, 14, 1, 1, 1, 17, 15, 19, 5, 5, + 23, 37, 35, 35, 15, 37, 15, 20, 25, 25, 12, 38, 33, 0, 0, 0, + 26, 23, 0, 0, 0, 0, 0, 0, 1, 1, 34, 15, 5, 5, 5, 5, + 15, 5, 20, 25, 1, 40, 12, 12, 11, 11, 11, 11, 11, 12, 38, 25, + 15, 19, 5, 5, 20, 20, 15, 19, 20, 5, 1, 53, 0, 0, 0, 0, + 15, 5, 5, 0, 15, 15, 5, 19, 36, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 1, 1, 5, 0, 15, 19, 5, 5, 5, 20, 19, 19, + 36, 12, 14, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 33, 0, + 1, 1, 1, 1, 1, 24, 19, 15, 5, 5, 5, 19, 40, 0, 0, 0, + 11, 11, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 14, 26, 19, + 15, 5, 5, 19, 5, 5, 0, 0, 11, 11, 11, 11, 11, 10, 12, 57, + 5, 5, 5, 5, 19, 36, 0, 0, 10, 51, 0, 0, 0, 0, 0, 17, + 1, 1, 1, 14, 17, 0, 1, 1, 1, 1, 17, 14, 1, 1, 1, 1, + 15, 15, 15, 35, 37, 26, 20, 25, 46, 19, 12, 33, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 1, 1, 1, 34, 15, 5, 5, 0, 5, 15, 15, + 25, 53, 37, 0, 0, 0, 0, 0, 24, 5, 5, 5, 5, 25, 1, 1, + 1, 24, 5, 5, 20, 24, 5, 36, 12, 12, 12, 71, 0, 0, 0, 0, + 24, 5, 5, 20, 19, 5, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, + 5, 5, 5, 20, 5, 12, 53, 12, 12, 33, 0, 0, 0, 0, 0, 0, + 12, 12, 12, 12, 12, 0, 0, 0, 20, 5, 20, 20, 0, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 23, 5, 5, 5, 19, + 40, 12, 12, 0, 0, 0, 0, 0, 12, 1, 1, 1, 1, 1, 1, 1, + 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 35, 5, 5, 5, + 20, 5, 19, 23, 0, 0, 0, 0, 1, 1, 1, 14, 1, 17, 1, 1, + 24, 5, 5, 23, 0, 23, 5, 26, 5, 5, 5, 24, 0, 0, 0, 0, + 1, 1, 1, 17, 14, 1, 1, 1, 1, 1, 1, 1, 1, 15, 15, 37, + 5, 35, 19, 19, 14, 0, 0, 0, 1, 1, 1, 1, 45, 1, 0, 0, + 1, 24, 20, 83, 33, 0, 0, 0, 5, 34, 1, 1, 1, 1, 1, 1, + 1, 1, 15, 5, 5, 23, 0, 15, 20, 36, 12, 12, 12, 12, 12, 12, + 11, 11, 11, 11, 11, 23, 0, 0, 10, 10, 63, 3, 3, 3, 70, 30, + 97, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 38, + 16, 16, 16, 16, 16, 16, 16, 99, 12, 12, 33, 0, 0, 0, 0, 0, + 40, 33, 0, 0, 0, 0, 0, 0, 25, 1, 1, 24, 5, 5, 5, 5, + 5, 5, 5, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 15, 19, 5, + 5, 5, 36, 0, 0, 0, 0, 0, 5, 5, 5, 36, 12, 12, 3, 3, + 13, 13, 57, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 49, 10, 10, + 10, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 17, 1, + 13, 52, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45,132, 12, + 10, 10, 10, 78, 12, 33, 0, 0, 7, 7, 7, 7, 32, 42, 6, 6, + 6, 6, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 14, 0, 26, + 34, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 26, + 5, 81, 13, 13, 13, 13, 13, 13, 13, 62, 23, 0, 0, 0, 0, 0, + 15, 13, 16, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, + 13, 13, 54, 13, 13, 13, 54, 61, 0, 14, 0, 0, 0, 0, 0, 0, + 1, 14, 17, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 0, 43, 36, 18, 18, 0, 0, 0, 0, 0, 0, + 11, 11, 11, 11, 11, 3, 29, 0, 3, 3, 0, 0, 0, 3, 3, 3, + 98, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 29, 44, 3, 3, 3, + 3, 3,134, 19, 5, 3,134, 15, 15,187, 18, 18, 18, 91, 5, 5, + 5, 55, 43, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 5, 5, 3, + 3, 5, 55, 0, 0, 0, 0, 0, 6, 6, 47, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 32, 7, 0, 32, 39, 32, 39, 7, 32, 7, + 7, 7, 7, 6, 6, 42, 42, 6, 6, 6, 42, 6, 6, 6, 6, 6, + 6, 6, 7, 39, 7, 32, 39, 7, 7, 7, 32, 7, 7, 7, 32, 6, + 6, 6, 6, 6, 7, 39, 7, 32, 7, 7, 32, 32, 0, 7, 7, 7, + 32, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 7, 7, 7, 7, + 59, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 60, 6, 6, + 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 59, 6, 6, + 6, 6, 60, 6, 6, 6, 7, 7, 7, 7, 59, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 60, 6, 6, 6, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 59, 6, 6, 6, 6, 60, 6, 6, 6, + 7, 7, 7, 7, 59, 6, 6, 6, 6, 60, 6, 6, 6, 8, 0, 11, + 5, 5, 5, 55, 3, 43, 5, 5, 5, 5, 5, 5, 5, 5, 55, 3, + 3, 3, 43, 3, 3, 3, 3, 3, 3, 3, 55, 66, 12, 12, 0, 0, + 0, 0, 0, 0, 0, 26, 5, 5, 6, 6, 6, 6, 6,124, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 47, 0, 0, 42, 6, 6, 47, 0, 0, + 5, 5, 5, 23, 5, 5, 5, 5, 5, 5, 5, 5, 23, 26, 5, 5, + 5, 26, 23, 5, 5, 23, 0, 0, 13, 13, 13, 13, 13, 13, 13, 0, + 0, 0, 0, 0, 0, 0, 0, 26, 5, 5, 5, 81, 13, 13, 13, 0, + 11, 11, 11, 11, 11, 0, 0, 56, 1, 1, 1, 1, 1, 1, 1, 23, + 1, 1, 1, 1, 1, 1, 5, 5, 11, 11, 11, 11, 11, 0, 0,113, + 1, 1, 1, 1, 1, 45, 5, 5,188, 11, 11, 11, 11,189, 0, 38, + 1, 24, 1, 25, 1, 1, 1, 5, 1, 1, 24, 0, 0, 0, 0, 45, + 1, 1, 1, 14, 1, 1, 17, 14, 1, 1, 14, 49, 10, 10, 10, 10, + 6, 6, 5, 5, 5, 81, 0, 0, 10, 10, 10, 10, 10, 10, 75, 10, + 190, 10, 51, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 75, + 10, 10, 10, 10, 10, 10, 10, 0, 1, 1, 17, 1, 1, 1, 1, 1, + 17, 14, 14, 17, 17, 1, 1, 1, 1, 14, 1, 1, 17, 17, 0, 0, + 0, 14, 0, 17, 17, 17, 17, 1, 17, 14, 14, 17, 17, 17, 17, 17, + 17, 14, 14, 17, 1, 14, 1, 1, 1, 14, 1, 1, 17, 1, 14, 14, + 1, 1, 1, 1, 1, 17, 1, 1, 17, 1, 17, 1, 1, 17, 1, 1, + 9, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 63, 3, + 0, 0, 0, 3, 3, 3, 3, 3, 3, 29, 0, 0, 0, 0, 0, 0, + 3, 3, 3, 3, 3,108, 22, 22, 3, 3, 3, 3, 29, 0, 3, 3, + 9, 9, 9, 9, 98, 0, 0, 0, 3, 3, 3, 3, 3, 29, 0, 3, + 3, 3, 3, 29, 29, 0, 44, 3, 3, 3, 3, 3, 3, 3, 29, 44, + 3, 3, 3, 3, 3, 29, 0, 44, 3, 29, 3, 3, 3, 3, 3, 3, + 11, 11, 11, 11, 11, 29, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 7, 7, 3, 3, 26, 26, + 4, 4, 12, 12, 5, 5, 9, 9, 9, 5, 25, 25, 15, 15, 13, 13, + 21, 21, 6, 6, 7, 2, 10, 10, 14, 14, 2, 7, 1, 1, 10, 12, + 12, 10, 5, 9, 24, 24, 12, 2, 7, 12, 12, 7, 2, 12, 22, 18, + 0, 0, 26, 2, 23, 23, 18, 22, 9, 2, 21, 2, 7, 10, 2, 10, + 12, 21, 10, 2, 2, 21, 2, 9, 7, 21, 8, 8, 2, 5, 26, 12, + 2, 26, 7, 6, 10, 7, 5, 2, 25, 26, 2, 15, 26, 25, 15, 2, + 6, 7, 21, 7, 2, 6, 12, 26, 7, 26, 21, 26, 20, 19, 9, 25, + 5, 25, 6, 2, 21, 6, 15, 26, 25, 22, 18, 21, 26, 21, 5, 7, + 6, 24, 6, 5, 26, 23, 21, 12, 6, 12, 2, 1, 29, 29, 26, 15, + 21, 17, 25, 21, 15, 21, 11, 11, 21, 23, 12, 6, 26, 7, 10, 21, + 17, 17, 9, 26, 7, 15, 29, 21, 21, 9, 24, 5, 25, 9, 1, 12, + 17, 21, 11, 12, 8, 24, 26, 9, 21, 22, 23, 26, 25, 2, 14, 2, + 23, 21, 21, 25, 9, 22, 21, 18, 24, 16, 5, 22, 25, 18, 24, 26, + 26, 24, 9, 8, 8, 5, 5, 21, 15, 7, 2, 23, 21, 15, 17, 7, + 18, 2, 5, 6, 5, 24, 22, 20, 21, 20, 19, 21, 21, 16, 16, 21, + 7, 5, 5, 26, 14, 15, 18, 25, 7, 14, 17, 22, 17, 6, 24, 6, + 6, 21, 12, 15, 26, 10, 25, 0, 7, 20, 25, 1, 24, 15, 7, 19, + 9, 21, 17, 2, 17, 12, 1, 21, 12, 1, 24, 7, 29, 7, 7, 22, + 14, 7, 2, 24, 9, 24, 24, 2, 29, 1, 27, 28, 1, 29, 21, 29, + 1, 2, 15, 6, 18, 6, 12, 11, 26, 5, 14, 9, 5, 14, 26, 22, + 18, 26, 5, 12, 22, 21, 18, 17, 26, 6, 18, 18, 26, 14, 14, 6, + 12, 24, 11, 21, 24, 9, 6, 9, 6, 10, 7, 25, 17, 16, 16, 22, + 16, 16, 25, 17, 25, 24, 23, 2, 21, 14, 12, 17, 21, 1, 10, 1, + 7, 13, 13, 2, 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 10, 11, 12, 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 37, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 9, 0, 0, + 0, 10, 11, 12, 13, 0, 14, 15, 16, 0, 17, 18, 19, 20, 21, 1, + 22, 1, 23, 1, 2, 1, 2, 1, 2, 0, 2, 1, 24, 1, 2, 25, + 2, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0, 36, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, + 0, 0, 39, 0, 0, 40, 0, 41, 0, 0, 0, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 53, 0, + 0, 0, 0, 0, 0, 0, 54, 0, 3, 0, 55, 56, 0, 57, 0, 0, + 0, 0, 0, 0, 58, 59, 60, 0, 0, 0, 0, 61, 0, 0, 62, 63, + 64, 4, 65, 0, 0, 66, 67, 0, 0, 0, 68, 0, 0, 0, 0, 69, + 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 71, 0, 0, 0, 72, 0, 73, 0, 0, 74, 0, 0, 75, 0, + 0, 0, 0, 0, 0, 0, 0, 76, 77, 0, 0, 0, 0, 78, 79, 0, + 80, 81, 0, 0, 82, 5, 0, 83, 4, 0, 84, 85, 0, 0, 86, 87, + 88, 0, 89, 0, 90, 0, 91, 0, 0, 3, 92, 3, 0, 93, 0, 94, + 0, 0, 0, 5, 0, 0, 0, 95, 96, 0, 97, 98, 99,100, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0,101,102, 0, 0, 0, 0, 0, 0, + 103, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0,105, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0,107, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,108,109, 0, 0,110, 0, 0, 0, + 0, 0, 0,111, 0,112, 0, 6, 0, 0, 0, 0, 0,113,114, 0, + 0, 0, 0, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,117, 0, + 0, 0, 0, 0, 0, 0,118, 0,119, 0, 0, 0, 0, 0, 0, 0, + 2, 1, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, + 14, 0, 0, 0, 16, 3, 17, 18, 19, 20, 21, 22, 0, 23, 0, 0, + 0, 0, 24, 25, 26, 27, 0, 0, 0, 0, 28, 0, 0, 29, 30, 0, + 31, 0, 32, 33, 0, 0, 34, 0, 35, 36, 0, 0, 0, 0, 0, 37, + 38, 0, 39, 40, 0, 0, 41, 0, 0, 0, 42, 0, 0, 43, 44, 45, + 46, 1, 47, 0, 0, 1, 0, 0, 7, 1, 48, 0, 0, 0, 0, 0, + 49, 50, 0, 0, 0, 0, 0, 0, 51, 52, 0, 0, 0, 0, 0, 0, + 53, 54, 0, 0, 0, 0, 55, 0, 56, 0, 0, 0, 57, 58, 0, 0, + 0, 59, 0, 0, 0, 0, 0, 0, 60, 12, 0, 0, 0, 0, 61, 0, + 0, 0, 62, 0, 5, 0, 63, 0, 0, 0, 0, 64, 0, 0, 0, 0, + 65, 0, 66, 0, 0, 0, 0, 6, 67, 0, 0, 0, 68, 69, 70, 71, + 0, 0, 0, 0, 72, 5, 0, 73, 74, 0, 0, 75, 0, 0, 0, 76, + 77, 0, 0, 0, 78, 0, 79, 80, 81, 82, 83, 3, 84, 0, 85, 86, + 87, 0, 0, 8, 9, 0, 0, 3, 3, 0, 0, 88, 0, 0, 89, 0, + 0, 0, 0, 8, 90, 0, 91, 0, 0, 0, 0, 0, 9, 10, 0, 92, + 0, 5, 0, 3, 9, 0, 0, 93, 0, 0, 94, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 95, 96, 0, 0, 10, 0, 0, 1, 0, 0, 97, 0, + 0, 0, 0, 98, 0, 0, 0, 0, 12, 0, 0, 13, 0, 0, 0, 0, + 99,100, 0, 0,101, 0, 0,102, 0, 0, 0,103, 0, 0, 0,104, + 0, 0, 0,105, 0, 0, 0, 0,106,107, 13, 0, 0,108, 0, 0, + 0, 10, 0, 0,109,110, 0, 0,111,112, 0, 0, 0, 0, 0, 0, + 113, 0, 0,114, 0, 0, 0, 0,115, 1, 0,116,117,118, 6, 0, + 0,119, 7, 0, 0,120, 0, 0, 0,121, 0, 0, 0, 0, 0, 0, + 122, 0, 0,123, 0, 0, 0, 0,124, 11, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 5, 15, 0, 0, 0, 0,125, 0, 0,126, 0, 0, + 0, 0, 15, 0, 0,127, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, + 128, 0, 0, 0,129, 0,130, 0, 0, 0, 0,131,132,133, 0,134, + 0,135, 0, 0, 0,136,137,138, 0, 8, 0, 0, 0, 0, 0, 7, + 0, 0, 0,139, 0, 0, 0,140, 0, 0, 0,141, 0, 0, 0,142, + 143, 0,144, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 9, 1, 1, 1, 1, 0, 0, 0, 2, 0, 3, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 6, 11, 0, 0, 0, 0, 14, + 0, 0, 15, 0, 0, 0, 0, 0, 0, 17, 29, 0, 0, 0, 0, 0, + 31, 0, 0, 2, 0, 0, 1, 12, 0, 0, 1, 49, 50, 5, 51, 52, + 53, 5, 5, 22, 32, 23, 1, 54, 24, 55, 16, 33, 56, 57, 58, 1, + 1, 1, 6, 1, 0, 0, 59, 7, 60, 1, 34, 5, 7, 61, 62, 63, + 64, 65, 66, 67, 0, 0, 1, 1, 68, 0, 0, 0, 69, 70, 71, 35, + 1, 25, 72, 0, 0, 0, 0, 8, 1, 26, 16, 26, 73, 27, 74, 0, + 0, 0, 36, 25, 75, 37, 7, 37, 76, 0, 0, 0, 6, 1, 7, 0, + 0, 17, 0, 8, 38, 1, 1, 13, 13, 11, 0, 0, 39, 0, 0, 6, + 18, 1, 0, 0, 8, 16, 5, 1, 1, 1, 77, 7, 36, 18, 78, 7, + 35, 1, 79, 10, 0, 0, 0, 80, 0, 0, 0, 0, 2, 3, 0, 0, + 14, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, + 84, 0, 0, 0, 40, 0, 0, 85, 86, 0, 87, 88, 89, 90, 91, 92, + 0, 0, 0, 93, 0, 0, 0, 15, 28, 0, 0, 0, 0, 13, 0, 41, + 0, 0, 14, 0, 0, 20, 0, 0, 94, 0, 0, 0, 95, 0, 0, 6, + 29, 0, 0, 13, 1, 96, 1, 18, 33, 97, 25, 23, 7, 1, 1, 1, + 1, 27, 1, 7, 98, 0, 0, 9, 0, 0, 0, 0, 6, 23, 1, 0, + 0, 0, 0, 0, 30, 0, 0, 21, 0, 0, 30, 0, 0, 0, 0, 15, + 0, 0, 12, 32, 24, 5, 99, 22, 42, 17, 0, 10, 11, 0, 7, 1, + 7,100,101, 1, 1, 1, 1,102,103,104,105, 1,106, 10, 20,107, + 108, 5, 10, 0, 0, 0, 0, 0,109,110, 0, 0,111, 0, 0, 1, + 1, 11, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 43, 40, 2, 0, + 0, 0, 44,112, 10, 8, 20, 0, 0, 0, 0, 0, 0,113, 1, 16, + 5, 24, 0, 8, 12, 0, 0, 0, 0,114, 0, 0,115, 2, 0,116, + 0, 0, 0, 1, 0, 0, 0, 0, 13, 11, 0, 0, 6, 10, 0, 0, + 45, 39, 0, 45, 16, 18, 46, 27, 0, 0, 3, 0, 0, 2, 12, 0, + 0, 0, 2, 3, 0, 0, 3, 0, 21, 0, 0, 31, 0, 0, 0, 0, + 117, 0, 0, 0, 15, 9, 0, 8, 1, 10, 1, 10, 0, 0, 0, 0, + 0, 30, 14, 21, 0, 0, 47, 0, 0, 0, 9, 0, 0, 0, 0, 47, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 28, 0, 0, 4, 0, 21, 41, + 0, 0, 28, 0, 0, 0, 22, 42, 0, 0,118, 0, 0, 0, 0, 0, + 0,119, 0,120,121,122,123, 0, 43, 5, 48, 13, 34, 0, 0, 0, + 8, 11, 8, 10, 0, 0, 1, 12, 1, 1, 1, 1, 26, 1, 38, 44, + 12, 0, 0, 0, 0, 1, 0, 0, 0,124, 0, 0, 0, 46, 6, 19, + 0, 8, 0, 20, 0, 0, 5, 48, 0, 0, 0, 1,125, 0, 0, 0, + 0,230,230,230,230, 0, 0, 0, 9, 9, 0, 0, 0, 0, 9, 0, + 0,220,220,220,220, 0, 0, 0,230,230,230,220,230, 0, 0,230, + 230, 7, 0, 0, 0,230, 0, 0, 0,230,230, 0, 0,230,230,230, + 0, 0,230,230,230, 0, 0, 9, 0, 0, 0, 0, 7,230,230,230, + 220, 0,220, 0, 0,230,220,220,220, 0, 0,230, 0, 0,230, 0, + 0, 0, 0, 7, 0, 1, 1, 1, 1,220,230,230,230,220,220,230, + 230,220,230,230,220,230, 0, 0,230,230,220, 0, 0, 0, 9, 9, + 0,220, 0, 0, 0, 0, 0, 9, 9, 0, 9, 7, 0, 1,220,220, + 220,220,220,220,230,230,230,220,220,230,220,220,230,230,220,230, + 230,220,230,220,230,230,230, 0,230, 0,220,220,220,220,220, 0, + 0, 9, 9, 0, 0, 1, 0, 0, 0, 0, 0, 0,220,230, 0,230, + 230, 0, 0,220,220, 0, 0,230,220, 0, 0, 9, 7,220,220,220, + 0,230,232,220,220,220,220,232,216,220,202,202,220,220,220,220, + 202,202,220,220,220,230,240,230,220,230,220,220, 0,232,220,220, + 230,233,234,234,233,234,234,233,230, 0,220,230,230,230,230,222, + 220,230,222,228,230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, + 20, 21, 22, 0, 23, 0, 24, 25, 0,230,220, 0, 18, 30, 31, 32, + 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34,230, 35, 0, 0, + 0,230, 0,220,230, 0, 36, 0, 0,220,220,230,220,220,230,230, + 0,230,230, 0,220, 27, 28, 29,230, 0,230,220,230, 0, 84, 91, + 0,103,103, 9, 0,107,107,107,107,118,118, 9, 0,122,122,122, + 122, 0,220, 0,220, 0,216, 0, 0, 0,129,130, 0,132, 0, 0, + 0, 0, 0,130,130,130,130, 0, 0,130, 0,230,230, 9, 0,230, + 230, 0, 0,220, 0, 0,228, 0, 0, 0,222,230,220,230, 0, 0, + 220,230,220, 0,220,230,230,230,234,230, 0, 1, 1,230,234,214, + 220,202,230,230,230,230,230,232,228,228,220,218,230,233,220,230, + 220,230,230, 1, 1, 1, 1, 1,230, 0, 1, 1,230,220,230, 1, + 1, 0, 0,218,228,232,222,224,224, 0, 8, 8, 0,220, 0, 0, + 230, 0, 0, 26, 0, 0,220, 0,230,230, 1,220, 0, 0,230,220, + 0, 0, 7, 9, 0, 6, 6, 0, 0, 0, 0, 1, 0, 0,216,216, + 1, 1, 1, 0, 0, 0,226,216,216,216,216,216, 0,232,232,220, + 230,230,230, 7, 0, 1, 0, 0, 32, 0, 48, 0, 0, 84, 96,135, + 144, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,176, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 24, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 40, + 0, 0, 0, 0, 0, 48, 56, 64, 0, 0, 0, 0, 0, 72, 80, 88, + 96,104, 0, 0, 0, 0, 0, 0, 0, 0,112, 0,120, 0, 0, 0, + 0, 0, 0,128,136,144,152,160,168, 0, 0, 0,176,184,192, 0, + 0, 0, 0, 0, 0,200, 0, 0, 0, 0, 0, 0, 0, 0,208, 0, + 0,216,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 36, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 0, 0, + 64, 0, 68, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 72, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 20, 0, 0, 0, 0, + 0, 0, 20, 0, 20, 0, 0, 0, 0, 0, 0, 0, 76, 80, 84, 88, + 0, 0, 12, 92, 96, 28, 0,100,104, 4, 4, 4,108, 44,112,116, + 120, 4,124, 0,128,132, 4, 4, 48,136,140, 0, 32, 0, 0, 0, + 40, 0, 0, 0, 0, 0, 0, 0, 4, 48, 0, 52,144, 20,148,152, + 4, 0, 0,156,160,164,168,172, 4, 0,176, 56, 60,180, 32, 0, + 16,184, 56, 0, 0, 0, 0, 0, 52, 12, 12, 0, 0, 0, 0, 12, + 0, 0,188, 8, 8, 8, 8,192,196, 8, 8, 8, 8,200,204,208, + 212, 60, 44, 0, 0, 0, 0, 0, 0, 0,216, 28,220, 0, 12, 4, + 16, 0, 0, 0, 0,224,228, 0, 0, 0, 0, 0, 4,232, 32, 0, + 0, 0, 0, 0, 0, 0,236, 12, 0, 0, 0, 0, 16, 0, 36, 0, + 0, 0, 24, 0, 0, 0,240,244, 0, 0, 0, 0, 2, 2, 2, 2, + 4, 4, 4, 4, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 6, 8, + 0, 10, 12, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 14, 16, + 6, 8, 0, 0, 4, 8, 0, 0, 2, 2, 2, 0, 0, 6, 4, 8, + 2, 0, 2, 0, 0, 0, 0, 6, 0, 20, 0, 0, 0, 22, 0, 0, + 0, 6, 8, 0, 24, 26, 28, 0, 0, 0, 30, 0, 0, 0, 0, 32, + 34, 36, 38, 0, 0, 40, 42, 0, 0, 0, 18, 0, 0, 0, 2, 2, + 2, 2, 0, 2, 2, 2, 0, 6, 44, 0, 0, 0, 0, 2, 0, 46, + 48, 50, 0, 0, 52, 0, 0, 0, 6, 4, 54, 0, 2, 0, 0, 2, + 2, 56, 58, 60, 0, 62, 64, 18, 2, 10, 12, 0, 0, 0, 66, 8, + 0, 2, 2, 2, 0, 6, 4, 4, 4, 4, 68, 2, 70, 4, 4, 4, + 8, 72, 0, 0, 74, 76, 2, 0, 78, 0, 0, 0, 4, 8, 2, 0, + 0, 0, 80, 0, 6, 4, 4, 4, 4, 8, 0, 2, 2, 2, 2, 6, + 4, 4, 4, 8, 0, 0, 0, 82, 0, 84, 86, 0, 0, 0, 2, 88, + 0, 0, 0, 90, 6, 8, 2, 0, 0, 0, 6, 4, 4, 4, 8, 0, + 2, 0, 2, 2, 6, 4, 4, 8, 0, 10, 12, 6, 8, 2, 0, 0, + 4, 5, 6, 7, 8, 9, 10, 1, 1, 11, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 12, 13, 2, 2, 2, 2, 14, 0, 0, 0, 0, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, 25, 26, 3, 3, + 3, 27, 0, 0, 0, 28, 29, 30, 0, 31, 32, 33, 34, 35, 36, 37, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 38, 1, 1, 39, 1, 40, 1, 1, 1, 41, 0, 42, + 1, 1, 43, 1, 1, 1, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 20, 21, 8, 8, 8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 2, 2, 51, 52, 53, 54, 9, 9, 9, 9, 9, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 8, 8, 70, + 71, 72, 73, 74, 75, 5, 5, 5, 5, 76, 5, 5, 5, 5, 5, 5, + 5, 15, 15, 5, 5, 5, 5, 77, 5, 78, 79, 80, 81, 82, 83, 1, + 84, 85, 86, 87, 88, 89, 90, 91, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 92, 1, 1, 1, + 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 93, 16, 16, 94, 95, 96, + 97, 98, 99,100,101,102,103,104,105, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 106, 0, 0, 1, 1,107,108,109, 13, 13, 13,110,111,112,113,114, + 115,116,117,118,119, 0,120,121,122,123,124,125,126, 17, 17,127, 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, - 144,145,146,147,148,149,150,151,152,153,154,155,156,157, 0, 0, - 0,158,159,160,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 144,145,146,147,148,149,150,151,152,153,154, 0,155,156,157,158, + 0,159,160,161,162,163,164,165,166,167,168,169,170, 0,171,172, + 173, 7, 7, 7, 7, 7, 7, 7,174,175, 7,176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,162, 0,163, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,164,165, 0, 0, 0, 0, 0, - 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 177, 4, 4, 4, 4, 4, 4, 4, 4,178, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4,179, 11, 11, 11, 11,180, 0, 0, + 0, 0, 0,181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 12, 12, 12, 12,182,183,184,185, 0, 0,186, 0,187,188,189, + 190, 3, 3, 3, 3, 3, 3, 14, 14, 14,191,192,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167, 0, 0, 0,168,169, 0, 0,170, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,172, 0, 0, 0, 0, + 194,195,196,197, 18, 18,198, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,199,200, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,201, 5, 5, 5,202,203, + 204, 5,205,206,207,208,209,210, 0,211,212,213, 5, 5,214, 5, + 215, 10, 10, 10, 10, 10,216, 0, 0, 0, 0, 0, 0, 0, 0,217, + 0,218,219,220, 0, 0,221, 0, 0, 0,222, 0,223, 0,224, 0, + 225,226,227,228, 0, 0, 0, 0, 0,229,230,231, 0,232,233, 0, + 0,234,235, 5,236,237, 0, 5, 5, 5, 5, 5, 5, 5,238, 5, + 239,240,241, 5, 5,242,243, 5,244, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,245, 1, + 1,246, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,247, 1, + 1, 1, 1, 1, 1, 1, 1, 1,248, 1, 1, 1, 1,249, 0, 0, + 0, 1, 1, 1, 1,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1,251, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1,252, 0, 0, 0, 0, 0, 0, + 0,253, 0, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 13, 13, 13, 13, 12, 12, 12, 12, 0, 0, 0, + 0,136,136,136,136, 80, 80, 80, 80, 19, 19, 19, 19, 3, 3, 3, + 3, 63, 63, 63, 63, 39, 39, 39, 39, 28, 28, 28, 28,131,131,131, + 131, 79, 79, 79, 79, 1, 1, 1, 1,127,127,127,127, 6, 6, 6, + 6,155,155,155,155, 9, 9, 9, 9, 30, 30, 30, 30,139,139,139, + 139, 15, 15, 15, 15,110,110,110,110, 77, 77, 77, 77, 17, 17, 17, + 17, 27, 27, 27, 27, 33, 33, 33, 33,113,113,113,113, 49, 49, 49, + 49, 25, 25, 25, 25, 29, 29, 29, 29, 7, 7, 7, 7, 8, 8, 8, + 8, 32, 32, 32, 32, 99, 99, 99, 99, 31, 31, 31, 31,105,105,105, + 105, 55, 55, 55, 55, 62, 62, 62, 62, 56, 56, 56, 56, 91, 91, 91, + 91,119,119,119,119, 14, 14, 14, 14, 94, 94, 94, 94, 20, 20, 20, + 20,100,100,100,100,130,130,130,130,157,157,157,157,137,137,137, + 137, 97, 97, 97, 97,123,123,123,123,133,133,133,133,146,146,146, + 146, 84, 84, 84, 84,159,159,159,159,132,132,132,132, 4, 4, 4, + 4, 36, 36, 36, 36, 24, 24, 24, 24, 30, 30, 30, 2, 35, 35, 35, + 35, 40, 40, 40, 40,124,124,124,124,125,125,125,125,140,140,140, + 140, 37, 37, 37, 37, 58, 58, 58, 58, 0, 0, 2, 2, 75, 75, 75, + 75, 68, 68, 68, 68,114,114,114,114,163,163,163,163, 22, 22, 22, + 22, 23, 23, 23, 23, 76, 76, 76, 76, 0, 0, 0, 2, 26, 26, 26, + 26, 87, 87, 87, 87,135,135,135,135, 89, 89, 89, 89,141,141,141, + 141, 70, 70, 70, 70, 92, 92, 92, 92, 96, 96, 96, 96, 5, 5, 5, + 5, 18, 18, 18, 18, 48, 48, 48, 48, 85, 85, 85, 85,109,109,109, + 109,102,102,102,102,151,151,151,151, 16, 16, 16, 16, 0, 2, 2, + 2,165,165,165,165,108,108,108,108,171,171,171,171,142,142,142, + 142,150,150,150,150,134,134,134,134,138,138,138,138, 64, 64, 64, + 64, 90, 90, 90, 90, 21, 21, 21, 21, 93, 93, 93, 93, 61, 61, 61, + 61, 65, 65, 65, 65, 78, 78, 78, 78,126,126,126,126,154,154,154, + 154,121,121,121,121,166,166,166,166,167,167,167,167,152,152,152, + 152, 10, 10, 10, 10, 2, 0, 0, 0,104,104,104,104,170,170,170, + 170, 57, 57, 57, 57,107,107,107,107,175,175,175,175, 38, 38, 38, + 38, 73, 73, 73, 73, 86, 86, 86, 86, 67, 67, 67, 67, 59, 59, 59, + 59, 51, 51, 51, 51,161,161,161,161,144,144,144,144,143,143,143, + 143,172,172,172,172,174,174,174,174, 60, 60, 60, 60, 69, 69, 69, + 69, 47, 47, 47, 47,112,112,112,112,118,118,118,118,106,106,106, + 106,156,156,156,156,147,147,147,147,148,148,148,148,169,169,169, + 169,164,164,164,164,168,168,168,168, 11, 11, 11, 11, 74, 74, 74, + 74, 42, 42, 42, 42, 50, 50, 50, 50,116,116,116,116,111,111,111, + 111,115,115,115,115, 52, 52, 52, 52, 13, 13, 2, 2,120,120,120, + 120, 98, 98, 98, 98, 88, 88, 88, 88,117,117,117,117,101,101,101, + 101,103,103,103,103, 19, 19, 19, 0, 95, 95, 95, 95, 30, 30, 2, + 2, 34, 34, 34, 34, 54, 54, 54, 54, 0, 2, 0, 0, 71, 71, 71, + 71, 53, 53, 53, 53, 81, 81, 81, 81, 66, 66, 66, 66, 83, 83, 83, + 83,153,153,153,153,160,160,160,160, 2, 2, 22, 22, 30, 2, 30, + 30, 9, 9, 2, 2, 2, 2, 0, 0, 41, 41, 41, 41, 72, 72, 72, + 72,173,173,173,173, 82, 82, 82, 82,158,158,158,158,129,129,129, + 129,145,145,145,145, 2, 3, 3, 3, 23, 2, 23, 23, 16, 2, 16, + 16, 2, 2, 2, 0, 45, 45, 45, 45, 44, 44, 44, 44, 43, 43, 43, + 43,128,128,128,128,122,122,122,122,149,149,149,149, 0, 19, 19, + 19, 0, 0, 19, 0, 9, 2, 9, 9, 5, 2, 2, 5, 2, 10, 10, + 10, 10, 10, 2, 10, 2, 21, 21, 21, 21, 2, 2, 21, 22, 22, 22, + 2, 22, 22, 2, 2, 20, 2, 20, 20, 2, 30, 30, 30, 12, 12, 12, + 2, 19, 19, 19, 2, 2, 2, 12, 12,161,161, 2,161, 3, 3, 3, + 2,107, 2, 2,107, 2, 3, 2, 3, 19, 0, 0, 0, 2, 2, 9, + 9, 9, 9, 9, 2, 2, 4, 4, 4, 2, 11, 11, 11, 11, 11, 11, + 2, 11, 2, 11, 11, 10, 10, 2, 2, 22, 2, 22, 22, 2, 2, 2, + 22, 23, 23, 2, 2, 2, 36, 36, 36, 2, 2, 36, 36, 2, 25, 25, + 25, 46, 46, 46, 46, 31, 31, 2, 2, 91, 91, 2, 2, 1, 0, 0, + 0, 1, 1, 0, 0, 0, 17, 17, 17, 49, 49, 49, 2,161,161,161, + 2, 2,107,107,107,107, 2, 2, 2,171,171, 2,171, 0, 0, 2, + 0, 2, 3, 3, 2, 3, 2, 2, 3, 4, 4, 4, 2, 2, 14, 14, + 14, 14, 14, 14, 2, 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, + 0, 37, 37, 37, 2, 3, 3, 2, 2, 2, 2, 2, 3, 2, 2, 5, + 5, 5, 5, 5, 2, 2, 2, 2, 11, 11, 2, 2, 11, 11, 11, 2, + 2, 10, 2, 10, 10, 21, 2, 21, 21, 21, 21, 2, 2, 22, 2, 2, + 2, 2, 16, 16, 16, 16, 16, 2, 2, 36, 36, 36, 2, 36, 2, 2, + 2, 18, 18, 18, 2, 18, 18, 2, 2, 25, 2, 25, 25, 8, 8, 2, + 8, 2, 8, 2, 2, 29, 29, 2, 2, 46, 2, 46, 46, 32, 2, 2, + 2, 1, 1, 2, 2, 1, 1, 1, 0, 19, 19, 9, 9, 2, 9, 2, + 9, 0, 0, 0, 19, 19, 2, 2, 2, 0, 0, 19, 19, 2, 2, 2, + 61, 15, 15, 15, 2, 17, 17, 17, 0, 2, 19, 19, 19, 75, 75, 2, + 2, 12, 2, 2, 2, 68, 68, 2, 2, 87, 87, 2, 2, 49, 49, 2, + 2, 50, 50, 2, 2, 2, 57, 57, 57, 57, 2, 2, 2,112,112,112, + 2, 2,122,122,122,130,130,130, 2,165,165, 2, 2,156,156, 2, + 2, 2, 2, 3, 3, 94, 94, 2, 2,129,129, 2,129,107, 2,107, + 107,123,123, 2, 2,102,102, 2, 2,126,126,126, 2,154,154,154, + 2, 2, 2,150,150,169,169, 2, 2,138,138,138, 2,138,138, 2, + 138,143,143, 2,143,163,163,163, 2,103,103, 2, 2,119,119, 2, + 119, 2, 2, 2, 99, 13, 13, 13, 2,136,136,136, 2,105, 2, 2, + 2, 0, 0, 0, 1, 56, 56, 56, 2,151,151, 2, 2, 3, 3, 2, + 3, 0, 0, 26, 26, 0, 9, 9, 9, 9, 9, 0, 9, 9, 0, 9, + 0, 9, 9, 2, 9, 9, 9, 55, 55, 6, 1, 1, 6, 2, 2, 2, + 14, 14, 2, 2, 2, 3, 3, 3, 1, 1, 1, 3, 3, 1, 3, 3, + 3, 37, 37, 2, 37, 2, 37, 37, 37, 38, 38, 2, 2, 64, 64, 64, + 2, 2, 64, 64, 64, 90, 90, 2, 2, 90, 90, 90, 2, 2, 2, 95, + 2, 3, 3, 0, 3, 7, 1, 1, 1, 1, 7, 7, 7, 0, 0, 7, + 7, 2, 5, 5, 5, 5, 2, 5, 5, 5, 2, 5, 2, 5, 5, 2, + 2, 2, 2, 2, 5, 5, 5, 2, 5, 2, 11, 11, 2, 2, 11, 2, + 2, 11, 2, 11, 2, 2, 2, 11, 11, 10, 2, 2, 2, 2, 2, 10, + 10, 21, 21, 2, 21, 2, 2, 21, 21, 2, 22, 22, 22, 2, 22, 22, + 2, 2, 23, 23, 2, 23, 23, 23, 2, 2, 2, 23, 23, 2, 2, 2, + 23, 2, 16, 16, 2, 16, 16, 16, 2, 2, 2, 16, 16, 2, 2, 20, + 20, 36, 36, 2, 36, 2, 36, 2, 2, 2, 2, 36, 2, 2, 2, 2, + 36, 36, 2, 36, 2, 2, 24, 24, 24, 24, 24, 24, 2, 2, 18, 18, + 2, 18, 2, 18, 18, 2, 18, 2, 18, 18, 2, 18, 2, 25, 2, 2, + 2, 25, 0, 0, 0, 0, 25, 25, 2, 8, 8, 8, 0, 30, 2, 2, + 2, 34, 2, 2, 2, 35, 35, 35, 0, 0, 0, 35, 35, 35, 2, 2, + 2, 45, 45, 2, 2, 2, 2, 2, 45, 44, 0, 0, 2, 32, 32, 0, + 0, 32, 0, 32, 32, 32, 32, 2, 2, 32, 32, 32, 2, 28, 28, 2, + 2, 48, 48, 48, 2, 48, 2, 2, 2, 52, 52, 2, 2, 52, 2, 2, + 2, 58, 58, 2, 2, 58, 58, 58, 2, 2, 2, 58, 58, 2, 2, 54, + 54, 91, 91, 91, 2, 91, 2, 2, 91, 62, 2, 62, 62, 2, 2, 2, + 70, 70, 70, 2, 2, 2, 70, 70, 70, 6, 6, 6, 2, 8, 8, 8, + 2, 2, 8, 8, 8, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, + 2, 9, 9, 9, 6, 19, 9, 9, 9, 9, 9, 19, 19, 9, 9, 9, + 19, 6, 19, 19, 19, 19, 19, 19, 9, 2, 9, 9, 9, 0, 19, 2, + 2, 1, 2, 2, 2, 0, 0, 9, 0, 2, 55, 55, 55, 61, 2, 2, + 2, 13, 13, 2, 13, 0, 13, 0, 13, 0, 13, 13, 13, 13, 13, 1, + 1, 1, 1, 12, 12, 2, 15, 15, 15, 2, 1, 1, 0, 0, 15, 15, + 15, 2, 26, 26, 26, 2, 12, 12, 12, 12, 12, 12, 0, 39, 2, 2, + 2, 39, 39, 39, 2, 60, 2, 2, 2, 2, 2, 75, 75, 69, 69, 0, + 69, 2, 2, 2, 74, 84, 84, 2, 0, 84, 84, 2, 2, 2, 2, 84, + 84, 33, 33, 33, 2, 68, 68, 68, 2, 92, 92, 92, 2, 2, 2, 2, + 92, 87, 87, 87, 2, 19, 9, 19, 19, 19, 19, 0, 0, 2, 2, 2, + 12, 2, 2, 2, 4, 14, 2, 14, 2, 14, 14, 2, 14, 14, 2, 14, + 14, 3, 3, 0, 0, 1, 1, 6, 6, 3, 2, 3, 3, 3, 2, 2, + 0, 0, 0, 17, 17, 17, 17, 0, 0, 2, 49, 49, 49, 49, 49, 2, + 49, 9, 2, 2, 2, 0, 1, 2, 2, 71, 2, 2, 2, 67, 2, 2, + 2, 2, 42, 42, 42, 41, 41, 41, 2,118,118,118, 2, 53, 53, 2, + 53, 59, 59, 2, 2, 2, 2, 2,104,161, 2, 2, 2,110,110,110, + 2,110,110, 2, 2, 19, 19, 2, 19, 19, 2, 19, 19, 47, 47, 2, + 2, 47, 2, 47, 47, 47, 47, 2, 47, 47, 2, 2, 2, 47, 2, 2, + 47, 81, 81, 2, 81,116,116,116, 2, 2, 2, 2,116,128,128,128, + 2,128,128, 2, 2, 2, 2, 2,128, 2, 2, 2, 66, 72, 72, 2, + 2, 2, 2, 2, 72,173,173, 2, 2, 2, 2, 97, 97, 2, 57, 57, + 2, 57, 57, 2, 2, 57, 57, 57, 2, 2, 2, 2, 57, 2, 2, 2, + 112, 78, 78, 2, 2, 2, 78, 78, 78, 83, 83, 2, 2, 82, 82, 82, + 2,122,122, 2, 2,122, 2, 2, 2, 89, 2, 2, 2, 2, 2,130, + 130,144,144, 2, 2, 2,165,165,165, 2, 2,165,165,156,156, 2, + 156, 3, 2, 2, 2,148,148, 2, 2,158,158, 2, 2,149,149,149, + 2, 2, 2, 94, 94, 2, 2, 2, 94, 85, 85, 85, 2, 2, 85, 2, + 2,101, 2, 2, 2,101,101, 2, 2, 96, 2, 96, 96,111,111,111, + 2,108,108, 2,108,108,108, 2, 2,129,129,129, 2,129, 2,129, + 129,129,129, 2, 2,109,109,109, 2,109,109, 2, 2,107,107, 2, + 1,107,107, 2, 2, 2, 2, 2,107, 2, 2,107,107, 2, 2,171, + 2,171, 2,171, 2, 2,171, 2,171,171,171,171, 2,171, 2, 2, + 2, 2,171,171, 2, 2,137,137,137,137,137, 2, 2,124,124, 2, + 2,114, 2, 2, 2,114,114, 2, 2, 2,126,126,126,125,125,125, + 2, 2, 2, 2,125, 2,154, 2, 2, 2,154,154, 2,154,154, 2, + 154,154, 2, 2,154,154,154, 2, 2,150, 2, 2, 2,140,140,140, + 2,121, 2, 2, 2, 7, 7, 2, 2,133, 2,133,133,133,133,133, + 2,133,133, 2, 2,133, 2, 2, 2, 2, 2,134,134, 2,134,134, + 134,134,134,134, 2, 2, 2,138, 2,138,138, 2, 2,143, 2,143, + 143,143,143,143, 2,143, 2, 2, 2,143,143, 2, 2,175,175, 2, + 2,145, 2, 2, 2,163, 2,163,163, 2, 2,163,163, 86, 2, 2, + 2, 63, 63, 2, 2, 63, 63, 63, 2, 63, 2, 2, 2,157,157,157, + 2, 80, 80, 2, 2, 80, 80, 80, 2,127,127,127, 2,166,166, 2, + 2, 79, 2, 2, 2,115,115,115, 2,115,115, 2, 2, 2, 2,115, + 115,159,159,159, 2,159,159, 2, 2,119,119, 2, 2, 2,119,119, + 119,167,167, 2, 2,146,146,146, 2,172, 2, 2,172, 99, 99, 99, + 2,136,139, 13, 13,155, 2, 2, 2,155,155, 2, 2, 2, 2, 2, + 155, 2, 17, 17, 17, 2, 17, 17, 2, 17, 15, 15, 15, 17, 17, 17, + 2, 2, 2, 15, 2, 2, 17, 2, 2,105,105,105, 2,105,105, 2, + 2, 1, 1, 1, 2, 0, 1, 1, 1, 0, 0, 1, 1, 2, 2, 0, + 2, 2, 0, 0, 2, 0, 2, 0, 2, 2, 2, 2,131, 2,131,131, + 131, 56, 2, 2, 56, 56, 56, 2, 56, 56, 2, 56, 56, 6, 6, 2, + 2, 2, 2, 2, 6,151, 2, 2, 2, 2, 2,151,151,160,160,160, + 2,152,152, 2, 2, 2, 2, 2,152,164,164, 2, 2,168,168,168, + 2, 2, 2, 2,168,174,174,174, 2,174,174, 2, 2, 2, 2,174, + 174, 2, 30, 30, 2,113, 2, 2,113,113,113,113, 2,132,132, 2, + 2, 2, 2,132,132, 2, 2, 3, 2, 3, 2, 3, 2, 15, 0, 0, + 2, 0, 2, 2, 0, 13, 2, 2, 2, 2, 0, 2, 2, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 10, 0, 11, 12, 13, 0, + 0, 0, 14, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,176,177, 0, 0, 0, 0,178,179, 0, 0, 0, - 180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195, - 196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211, - 212,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 19, 20, 21, 0, 22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, + 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, + 0, 0, 24, 25, 26, 27, 28, 29, 30, 0, 0, 31, 32, 0, 33, 0, + 34, 0, 35, 0, 0, 0, 0, 36, 37, 38, 39, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 0, + 45, 0, 0, 0, 0, 0, 0, 46, 47, 0, 0, 0, 0, 0, 48, 0, + 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, + 51, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, + 59, 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, 0, 0, 66, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 0, 69, 70, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, + 0, 0, 0, 0,105,106, 0,107, 0, 0, 0,108, 0,109, 0,110, + 0,111,112,113, 0,114, 0, 0, 0,115, 0, 0, 0,116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, + 119,120,121, 0,122,123,124,125,126, 0,127, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,129,130,131,132, + 133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148, + 149,150,151,152,153,154,155,156,157, 0, 0, 0,158,159,160,161, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,162, 0,163, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,164,165, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, + 0, 0, 0,168,169, 0, 0,170, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,173, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 176,177, 0, 0, 0, 0,178,179, 0, 0, 0,180,181,182,183,184, + 185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200, + 201,202,203,204,205,206,207,208,209,210,211,212,213, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -static const uint16_t _hb_ucd_u16[10904]= +static const uint16_t _hb_ucd_u16[10877]= { - 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12, - 13, 13, 13, 14, 15, 13, 13, 16, 17, 18, 19, 20, 21, 22, 13, 23, - 13, 13, 13, 24, 25, 11, 11, 11, 11, 26, 11, 27, 28, 29, 30, 31, - 32, 32, 32, 32, 32, 32, 32, 33, 34, 35, 36, 11, 37, 38, 13, 39, - 9, 9, 9, 11, 11, 11, 13, 13, 40, 13, 13, 13, 41, 13, 13, 13, - 13, 13, 13, 42, 9, 43, 11, 11, 44, 45, 32, 46, 47, 48, 49, 50, - 51, 52, 48, 48, 53, 32, 54, 55, 48, 48, 48, 48, 48, 56, 57, 58, - 59, 60, 48, 32, 61, 48, 48, 48, 48, 48, 62, 63, 64, 48, 65, 66, - 48, 67, 68, 69, 48, 70, 71, 48, 72, 73, 48, 48, 74, 32, 75, 32, - 76, 48, 48, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 83, 84, 91, 92, 93, 94, 95, 96, 97, 84, 98, 99, 100, 88, 101, - 102, 83, 84, 103, 104, 105, 88, 106, 107, 108, 109, 110, 111, 112, 94, 113, - 114, 115, 84, 116, 117, 118, 88, 119, 120, 115, 84, 121, 122, 123, 88, 124, - 125, 115, 48, 126, 127, 128, 88, 129, 130, 131, 48, 132, 133, 134, 94, 135, - 136, 48, 48, 137, 138, 139, 140, 140, 141, 48, 142, 143, 144, 145, 140, 140, - 146, 147, 148, 149, 150, 48, 151, 152, 153, 154, 32, 155, 156, 157, 140, 140, - 48, 48, 158, 159, 160, 161, 162, 163, 164, 165, 9, 9, 166, 11, 11, 167, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 168, 169, 48, 48, 168, 48, 48, 170, 171, 172, 48, 48, - 48, 171, 48, 48, 48, 173, 174, 175, 48, 176, 9, 9, 9, 9, 9, 177, - 178, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 179, 48, 180, 181, 48, 48, 48, 48, 182, 183, - 48, 184, 48, 185, 48, 186, 187, 188, 48, 48, 48, 189, 190, 191, 192, 193, - 194, 192, 48, 48, 195, 48, 48, 196, 197, 48, 198, 48, 48, 48, 48, 199, - 48, 200, 201, 202, 203, 48, 204, 205, 48, 48, 206, 48, 207, 208, 209, 209, - 48, 210, 48, 48, 48, 211, 212, 213, 192, 192, 214, 215, 32, 216, 217, 140, - 218, 48, 48, 219, 220, 160, 221, 222, 223, 48, 224, 64, 48, 48, 225, 226, - 48, 48, 227, 228, 229, 64, 48, 230, 231, 9, 9, 232, 233, 234, 235, 236, - 11, 11, 237, 27, 27, 27, 238, 239, 11, 240, 27, 27, 32, 32, 32, 32, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 241, 13, 13, 13, 13, 13, 13, - 242, 243, 242, 242, 243, 244, 242, 245, 246, 246, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 273, 274, 275, 276, 209, 277, 278, 209, 279, - 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 281, 209, 282, 209, 209, 209, 209, 283, 209, 284, 280, 285, 209, 286, 287, 209, - 209, 209, 176, 140, 288, 140, 272, 272, 272, 289, 209, 209, 209, 209, 290, 272, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 291, 292, 209, 209, 293, - 209, 209, 209, 209, 209, 209, 294, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 295, 296, 272, 297, 209, 209, 298, 280, 299, 280, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 280, 280, 280, 280, 280, 280, 280, 280, 300, 301, 280, 280, 280, 302, 280, 303, - 209, 209, 209, 280, 304, 209, 209, 305, 209, 209, 209, 209, 209, 209, 209, 209, - 9, 9, 9, 11, 11, 11, 306, 307, 13, 13, 13, 13, 13, 13, 308, 309, - 11, 11, 310, 48, 48, 48, 311, 312, 48, 313, 314, 314, 314, 314, 32, 32, - 315, 316, 317, 318, 319, 320, 140, 140, 209, 321, 209, 209, 209, 209, 209, 322, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323, 140, 209, - 324, 325, 326, 327, 136, 48, 48, 48, 48, 328, 178, 48, 48, 48, 48, 329, - 330, 48, 48, 136, 48, 48, 48, 48, 200, 331, 48, 48, 209, 209, 332, 48, - 209, 333, 334, 209, 335, 336, 209, 209, 334, 209, 209, 336, 209, 209, 209, 209, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 209, 209, 209, 209, - 48, 337, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 151, 209, 209, 209, 338, 48, 48, 230, - 339, 48, 340, 140, 13, 13, 341, 342, 13, 343, 48, 48, 48, 48, 344, 345, - 31, 346, 347, 348, 13, 13, 13, 349, 350, 351, 352, 353, 354, 355, 140, 356, - 357, 48, 358, 359, 48, 48, 48, 360, 361, 48, 48, 362, 363, 192, 32, 364, - 64, 48, 365, 48, 366, 367, 48, 151, 76, 48, 48, 368, 369, 370, 371, 372, - 48, 48, 373, 374, 375, 376, 48, 377, 48, 48, 48, 378, 379, 380, 381, 382, - 383, 384, 314, 11, 11, 385, 386, 11, 11, 11, 11, 11, 48, 48, 387, 192, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 388, 48, 389, 48, 48, 206, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 48, 48, 48, 48, 48, 48, 204, 48, 48, 48, 48, 48, 48, 207, 140, 140, - 392, 393, 394, 395, 396, 48, 48, 48, 48, 48, 48, 397, 398, 399, 48, 48, - 48, 48, 48, 400, 209, 48, 48, 48, 48, 401, 48, 48, 402, 140, 140, 403, - 32, 404, 32, 405, 406, 407, 408, 409, 48, 48, 48, 48, 48, 48, 48, 410, - 411, 2, 3, 4, 5, 412, 413, 414, 48, 415, 48, 200, 416, 417, 418, 419, - 420, 48, 172, 421, 204, 204, 140, 140, 48, 48, 48, 48, 48, 48, 48, 71, - 422, 272, 272, 423, 273, 273, 273, 424, 425, 426, 427, 140, 140, 209, 209, 428, - 140, 140, 140, 140, 140, 140, 140, 140, 48, 151, 48, 48, 48, 100, 429, 430, - 48, 48, 431, 48, 432, 48, 48, 433, 48, 434, 48, 48, 435, 436, 140, 140, - 9, 9, 437, 11, 11, 48, 48, 48, 48, 204, 192, 9, 9, 438, 11, 439, - 48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 48, 48, 48, 388, - 48, 48, 48, 313, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140, - 448, 48, 48, 449, 48, 450, 48, 451, 48, 200, 452, 140, 140, 140, 48, 453, - 48, 454, 48, 455, 48, 207, 140, 140, 48, 48, 48, 456, 272, 457, 272, 272, - 458, 459, 48, 460, 461, 462, 48, 463, 48, 464, 140, 140, 465, 48, 466, 467, - 48, 48, 48, 468, 48, 469, 48, 470, 48, 471, 472, 140, 140, 140, 140, 140, - 48, 48, 48, 48, 196, 140, 140, 140, 9, 9, 9, 473, 11, 11, 11, 474, - 48, 48, 475, 192, 476, 9, 477, 11, 478, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 272, 479, 48, 48, 480, 481, 482, 483, 140, 484, - 48, 464, 485, 48, 62, 486, 140, 48, 487, 140, 140, 48, 488, 140, 48, 313, - 489, 48, 48, 490, 491, 457, 492, 493, 223, 48, 48, 494, 495, 48, 196, 192, - 496, 48, 497, 498, 499, 48, 48, 500, 223, 48, 48, 501, 502, 503, 504, 505, - 48, 97, 506, 507, 508, 140, 140, 140, 509, 510, 511, 48, 48, 512, 513, 192, - 514, 83, 84, 515, 516, 517, 518, 519, 520, 48, 48, 521, 522, 523, 524, 140, - 48, 48, 48, 525, 526, 527, 481, 140, 48, 48, 48, 528, 529, 192, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 530, 531, 532, 533, 140, 140, - 48, 48, 48, 534, 535, 192, 536, 140, 48, 48, 537, 538, 192, 539, 540, 140, - 48, 541, 542, 543, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 48, 506, 544, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 545, - 546, 547, 48, 548, 549, 192, 140, 140, 140, 140, 550, 48, 48, 551, 552, 140, - 553, 48, 48, 554, 555, 556, 48, 48, 557, 558, 559, 48, 48, 48, 48, 196, - 560, 140, 140, 140, 140, 140, 561, 140, 140, 140, 140, 140, 48, 48, 562, 192, - 84, 48, 530, 563, 564, 148, 175, 565, 48, 566, 567, 568, 140, 140, 140, 140, - 569, 48, 48, 570, 571, 192, 572, 48, 573, 574, 192, 48, 48, 575, 192, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 576, - 577, 115, 48, 578, 579, 580, 140, 140, 140, 140, 140, 100, 272, 581, 582, 583, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 207, 140, 140, 140, 140, 140, 140, - 273, 273, 273, 273, 273, 273, 584, 585, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 388, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 586, - 48, 48, 48, 587, 588, 589, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 71, - 48, 48, 48, 48, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 590, 591, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 592, - 48, 48, 48, 593, 594, 595, 596, 597, 48, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 598, 48, 599, 192, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 9, 9, 11, 11, 272, 600, 9, 601, 11, 602, 140, 140, - 48, 48, 48, 48, 603, 604, 605, 605, 606, 607, 140, 140, 140, 140, 608, 609, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 199, 140, 610, - 48, 200, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 48, 611, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 612, - 48, 48, 611, 613, 140, 614, 615, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 206, - 48, 48, 48, 48, 48, 48, 71, 151, 196, 616, 617, 140, 140, 140, 140, 140, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 618, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 619, 209, 427, 209, 620, - 32, 32, 216, 32, 621, 209, 209, 209, 209, 209, 209, 209, 322, 140, 140, 140, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323, - 209, 209, 622, 209, 209, 209, 623, 624, 625, 209, 626, 209, 209, 209, 288, 140, - 209, 209, 209, 209, 627, 140, 140, 140, 140, 140, 140, 140, 272, 628, 272, 628, - 209, 209, 209, 209, 209, 338, 272, 461, 140, 140, 140, 140, 140, 140, 140, 140, - 9, 629, 11, 630, 631, 632, 242, 9, 633, 634, 635, 636, 637, 9, 629, 11, - 638, 639, 11, 640, 641, 642, 643, 9, 644, 11, 9, 629, 11, 630, 631, 11, - 242, 9, 633, 643, 9, 644, 11, 9, 629, 11, 645, 9, 646, 647, 648, 649, - 11, 650, 9, 651, 652, 653, 654, 11, 655, 9, 656, 11, 657, 539, 539, 539, - 32, 32, 32, 658, 32, 32, 659, 660, 661, 662, 45, 140, 140, 140, 140, 140, - 663, 664, 665, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 666, 667, 668, 27, 27, 27, 669, 140, 670, 140, 140, 140, 140, 140, 140, 140, - 48, 48, 151, 671, 672, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 673, 140, 48, 48, 674, 675, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 676, 192, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 590, 677, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 200, 678, 679, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 680, 200, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 681, 621, 140, 140, - 9, 9, 633, 11, 682, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 504, 272, 272, 683, 684, 140, 140, 140, 140, - 504, 272, 685, 686, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 687, 48, 688, 689, 690, 691, 692, 693, 694, 206, 695, 206, 140, 140, 140, 696, - 209, 209, 697, 209, 209, 209, 209, 209, 209, 322, 333, 698, 698, 698, 209, 323, - 699, 209, 209, 209, 209, 209, 209, 209, 209, 209, 700, 140, 140, 140, 701, 209, - 702, 209, 209, 697, 703, 704, 323, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 705, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 706, 426, 426, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 176, 697, 427, - 697, 209, 209, 209, 707, 176, 209, 209, 707, 209, 700, 697, 704, 708, 140, 140, - 209, 209, 209, 209, 209, 707, 700, 426, 709, 209, 209, 209, 710, 711, 712, 703, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 713, 209, 209, 209, 209, 209, 714, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140, - 48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 204, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 100, 48, - 48, 48, 48, 48, 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 48, 48, 48, 48, 71, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 207, 140, 140, 140, 140, 140, 140, 140, 140, - 715, 140, 587, 587, 587, 587, 587, 587, 140, 140, 140, 140, 140, 140, 140, 140, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 140, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 716, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 717, - 0, 0, 0, 0, 1, 2, 1, 2, 0, 0, 3, 3, 4, 5, 4, 5, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 0, 0, 7, 0, - 8, 8, 8, 8, 8, 8, 8, 9, 10, 11, 12, 11, 11, 11, 13, 11, - 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 16, 17, 18, 17, 17, 19, 20, 21, 21, 22, 21, 23, 24, - 25, 26, 27, 27, 28, 29, 27, 30, 27, 27, 27, 27, 27, 31, 27, 27, - 32, 33, 33, 33, 34, 27, 27, 27, 35, 35, 35, 36, 37, 37, 37, 38, - 39, 39, 40, 41, 42, 43, 44, 27, 27, 45, 27, 27, 27, 27, 46, 27, - 47, 47, 47, 47, 47, 48, 49, 47, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 108, 109, 110, 111, 108, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 121, 122, 121, 123, 124, 124, 125, 126, 127, 128, 129, 130, 124, 124, - 131, 131, 131, 131, 132, 131, 133, 134, 131, 132, 131, 135, 135, 136, 124, 124, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 138, 138, 139, 138, 138, 140, - 141, 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, 142, 143, 144, 142, 142, - 143, 142, 142, 145, 146, 147, 142, 142, 142, 146, 142, 142, 142, 148, 142, 149, - 142, 150, 151, 151, 151, 151, 151, 152, 153, 153, 153, 153, 153, 153, 153, 153, - 154, 155, 156, 156, 156, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 167, 167, 167, 167, 168, 169, 169, 170, 171, 172, 172, 172, 172, 172, 173, - 172, 172, 174, 153, 153, 153, 153, 175, 176, 177, 178, 178, 179, 180, 181, 182, - 183, 183, 184, 183, 185, 186, 167, 167, 187, 188, 189, 189, 189, 190, 189, 191, - 192, 192, 193, 8, 8, 194, 195, 124, 196, 196, 196, 196, 197, 196, 196, 196, - 198, 198, 198, 198, 199, 199, 199, 200, 201, 201, 201, 202, 203, 204, 204, 204, - 205, 138, 138, 206, 207, 208, 209, 210, 4, 4, 211, 4, 4, 212, 213, 214, - 4, 4, 4, 215, 8, 8, 8, 8, 11, 216, 11, 11, 216, 217, 11, 218, - 11, 11, 11, 219, 219, 220, 11, 221, 222, 0, 0, 0, 0, 0, 223, 224, - 225, 226, 0, 0, 227, 8, 8, 228, 0, 0, 229, 230, 231, 0, 4, 4, - 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 233, 124, 234, 124, 0, 0, 235, 235, 235, 235, 235, 235, 235, 235, - 0, 0, 0, 0, 0, 0, 0, 236, 237, 237, 237, 237, 237, 237, 4, 4, - 238, 238, 238, 238, 238, 238, 238, 239, 138, 138, 139, 240, 240, 240, 241, 242, - 142, 243, 244, 244, 244, 244, 14, 14, 0, 0, 0, 0, 0, 245, 124, 124, - 246, 247, 246, 246, 246, 246, 246, 248, 246, 246, 246, 246, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 249, 124, 0, 250, 0, 251, 252, 253, 254, 254, 254, - 254, 255, 256, 257, 257, 257, 257, 258, 259, 260, 260, 261, 141, 141, 141, 141, - 262, 0, 260, 260, 0, 0, 263, 257, 141, 262, 0, 0, 0, 0, 141, 264, - 0, 0, 0, 0, 0, 257, 257, 265, 257, 257, 257, 257, 257, 266, 0, 0, - 246, 246, 246, 246, 0, 0, 0, 0, 267, 267, 267, 267, 267, 267, 267, 267, - 268, 267, 267, 267, 269, 270, 270, 270, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 272, 124, 14, 14, 14, 14, 14, 14, 273, 273, 273, 273, 273, 274, - 0, 0, 275, 4, 4, 4, 4, 4, 276, 4, 4, 4, 4, 226, 124, 277, - 278, 278, 279, 233, 280, 280, 280, 281, 282, 282, 282, 282, 283, 284, 47, 47, - 285, 285, 286, 287, 287, 288, 141, 289, 290, 290, 290, 290, 291, 292, 137, 293, - 294, 294, 294, 295, 296, 297, 137, 137, 298, 298, 298, 298, 299, 300, 301, 302, - 303, 304, 244, 4, 4, 305, 306, 151, 151, 151, 151, 151, 301, 301, 307, 308, - 141, 141, 309, 141, 310, 141, 141, 311, 124, 124, 124, 124, 124, 124, 124, 124, - 246, 246, 246, 246, 246, 246, 312, 246, 246, 246, 246, 246, 246, 313, 124, 124, - 314, 315, 21, 316, 317, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 318, 27, 27, 27, 27, 27, 27, 27, 27, 27, 124, 124, 27, - 8, 233, 319, 0, 0, 320, 321, 322, 27, 27, 27, 27, 27, 27, 27, 323, - 324, 0, 1, 2, 1, 2, 325, 256, 257, 326, 141, 262, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 335, 124, 124, 332, 332, 332, 332, 332, 332, 332, 336, - 337, 0, 0, 338, 11, 11, 11, 11, 339, 340, 341, 124, 124, 0, 0, 342, - 343, 344, 345, 345, 345, 346, 347, 348, 349, 349, 350, 351, 352, 353, 353, 354, - 355, 356, 357, 357, 358, 359, 124, 124, 360, 360, 360, 360, 360, 361, 361, 361, - 362, 363, 364, 365, 365, 366, 365, 367, 368, 368, 369, 370, 370, 370, 371, 372, - 372, 373, 374, 375, 376, 376, 376, 377, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 379, 378, 380, 381, 124, 382, 4, 4, 383, 124, 124, 124, 124, - 384, 385, 385, 386, 387, 388, 389, 389, 390, 391, 392, 124, 124, 124, 393, 394, - 395, 396, 397, 398, 399, 400, 124, 124, 401, 401, 402, 403, 402, 404, 402, 402, - 405, 406, 407, 408, 409, 409, 410, 410, 411, 411, 124, 124, 412, 412, 413, 414, - 415, 415, 415, 416, 417, 418, 419, 420, 421, 422, 423, 124, 124, 124, 124, 124, - 424, 424, 424, 424, 425, 124, 124, 124, 426, 426, 426, 427, 426, 426, 426, 428, - 429, 429, 430, 431, 432, 432, 433, 432, 434, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 27, 435, 436, 436, 437, 438, 439, 440, 124, 441, - 442, 442, 443, 444, 444, 445, 124, 446, 447, 124, 124, 448, 449, 124, 450, 451, - 452, 452, 452, 452, 453, 454, 452, 455, 456, 456, 456, 456, 457, 458, 459, 460, - 461, 461, 461, 462, 463, 464, 464, 465, 466, 466, 466, 466, 466, 466, 467, 468, - 469, 470, 469, 469, 471, 124, 124, 124, 472, 473, 474, 475, 475, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 487, 488, 489, 490, 491, 124, - 492, 492, 492, 492, 492, 493, 494, 124, 495, 495, 495, 495, 496, 497, 124, 124, - 498, 498, 498, 499, 498, 500, 124, 124, 501, 501, 501, 501, 502, 503, 504, 124, - 505, 505, 505, 506, 506, 137, 507, 124, 508, 509, 510, 508, 511, 124, 124, 124, - 512, 512, 512, 513, 124, 124, 124, 124, 124, 124, 514, 514, 514, 514, 514, 515, - 516, 517, 518, 519, 520, 521, 124, 124, 124, 124, 522, 523, 523, 522, 524, 124, - 525, 525, 525, 525, 526, 527, 527, 527, 527, 527, 528, 153, 529, 529, 529, 530, - 531, 124, 124, 124, 124, 124, 532, 124, 124, 124, 124, 124, 533, 533, 534, 535, - 536, 537, 537, 538, 539, 537, 540, 541, 541, 542, 543, 544, 124, 124, 124, 124, - 545, 546, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 555, 556, 557, 124, - 124, 124, 124, 124, 124, 124, 558, 559, 560, 561, 560, 562, 560, 563, 124, 124, - 124, 124, 124, 564, 565, 565, 565, 566, 567, 567, 567, 567, 567, 567, 567, 567, - 567, 568, 124, 124, 124, 124, 124, 124, 567, 567, 567, 567, 567, 567, 569, 570, - 567, 567, 567, 567, 571, 124, 124, 124, 124, 572, 572, 572, 572, 572, 572, 573, - 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 575, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 576, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 578, 124, 124, 124, 579, 579, 579, 580, 124, 124, 124, 124, - 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 581, 582, 583, 584, 585, - 585, 585, 585, 586, 587, 588, 589, 590, 591, 591, 591, 591, 592, 593, 594, 595, - 591, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 596, 596, 596, 597, - 124, 124, 124, 124, 598, 598, 598, 598, 598, 599, 600, 601, 600, 602, 124, 124, - 603, 603, 603, 603, 604, 603, 603, 603, 605, 603, 124, 124, 124, 124, 606, 607, - 608, 608, 608, 608, 608, 608, 608, 608, 609, 609, 609, 609, 609, 609, 609, 609, - 609, 609, 609, 609, 609, 610, 124, 611, 608, 612, 124, 124, 124, 124, 124, 124, - 608, 608, 608, 608, 608, 608, 608, 613, 124, 124, 124, 124, 124, 124, 124, 614, - 615, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 616, 617, 124, 618, 619, 620, 620, 620, 620, 620, 620, 620, 620, 620, - 620, 620, 620, 620, 620, 620, 620, 621, 622, 622, 622, 622, 622, 622, 623, 624, - 625, 626, 627, 124, 124, 124, 124, 124, 0, 0, 0, 0, 0, 0, 0, 340, - 0, 0, 0, 628, 0, 629, 0, 629, 8, 8, 194, 8, 630, 0, 0, 0, - 0, 0, 0, 0, 627, 124, 124, 124, 0, 0, 0, 0, 0, 0, 0, 631, - 0, 0, 632, 0, 0, 0, 633, 634, 635, 0, 636, 0, 0, 0, 234, 124, - 11, 11, 11, 11, 637, 124, 124, 124, 124, 124, 124, 124, 0, 627, 0, 627, - 0, 0, 0, 0, 0, 638, 0, 639, 0, 0, 0, 0, 0, 223, 0, 0, - 0, 640, 641, 642, 643, 0, 0, 0, 644, 645, 0, 646, 647, 648, 0, 0, - 0, 0, 649, 0, 0, 0, 0, 0, 0, 0, 0, 0, 650, 0, 0, 0, - 651, 651, 651, 651, 651, 651, 651, 651, 652, 653, 654, 124, 124, 124, 124, 124, - 4, 655, 656, 124, 124, 124, 124, 124, 657, 658, 659, 14, 14, 14, 660, 124, - 661, 124, 124, 124, 124, 124, 124, 124, 662, 662, 663, 664, 665, 124, 124, 124, - 124, 666, 667, 124, 668, 668, 668, 669, 124, 124, 124, 124, 124, 670, 670, 671, - 124, 124, 124, 124, 124, 672, 672, 673, 124, 124, 124, 124, 674, 675, 674, 676, - 124, 124, 124, 124, 124, 124, 677, 678, 679, 679, 679, 679, 679, 679, 679, 679, - 679, 679, 679, 679, 680, 681, 124, 124, 682, 682, 682, 682, 683, 684, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 324, 0, 0, 0, 685, 124, 124, 124, 124, - 324, 0, 0, 245, 124, 124, 124, 124, 686, 27, 687, 688, 689, 690, 691, 692, - 693, 694, 695, 694, 124, 124, 124, 696, 0, 0, 348, 0, 0, 0, 0, 0, - 0, 627, 225, 324, 324, 324, 0, 631, 0, 0, 245, 124, 124, 124, 697, 0, - 698, 0, 0, 348, 639, 227, 631, 124, 0, 0, 0, 0, 0, 699, 340, 340, - 0, 0, 0, 0, 0, 233, 348, 629, 348, 0, 0, 0, 700, 233, 0, 0, - 700, 0, 245, 348, 227, 639, 124, 124, 0, 0, 0, 0, 0, 700, 245, 340, - 701, 0, 0, 0, 702, 703, 704, 639, 0, 320, 0, 0, 0, 0, 0, 234, - 246, 246, 246, 246, 246, 246, 124, 124, 246, 312, 246, 246, 246, 246, 246, 246, - 246, 246, 312, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 705, 246, - 246, 246, 246, 246, 246, 312, 124, 124, 246, 312, 124, 124, 124, 124, 124, 124, - 246, 246, 246, 246, 706, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 313, - 707, 124, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 1, 2, 2, 2, - 2, 2, 3, 0, 0, 0, 4, 0, 2, 2, 2, 2, 2, 3, 2, 2, - 2, 2, 5, 0, 2, 5, 6, 0, 7, 7, 7, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 8, 8, 8, 8, 16, 8, 8, 8, 17, 18, 18, 18, - 19, 19, 19, 19, 19, 20, 19, 19, 21, 22, 22, 22, 22, 22, 22, 22, - 22, 23, 21, 22, 22, 22, 23, 21, 24, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 12, 12, 25, 25, 26, 27, 25, 28, 12, 12, 29, 30, 29, 31, - 29, 29, 32, 32, 29, 29, 29, 29, 31, 29, 33, 7, 7, 34, 29, 29, - 35, 29, 29, 29, 29, 29, 29, 30, 36, 36, 36, 37, 36, 36, 36, 36, - 36, 36, 38, 39, 40, 40, 40, 40, 41, 12, 12, 12, 42, 42, 42, 42, - 42, 42, 43, 44, 45, 45, 45, 45, 45, 45, 45, 46, 45, 45, 45, 47, - 48, 48, 48, 48, 48, 48, 48, 49, 36, 36, 38, 12, 50, 51, 29, 29, - 52, 29, 29, 29, 53, 53, 53, 53, 54, 55, 53, 53, 53, 56, 53, 53, - 57, 58, 57, 59, 59, 57, 57, 57, 57, 57, 60, 57, 61, 62, 63, 57, - 57, 59, 59, 64, 12, 65, 12, 66, 57, 62, 57, 57, 57, 57, 57, 64, - 67, 67, 68, 69, 70, 71, 71, 71, 71, 71, 72, 71, 72, 73, 74, 72, - 68, 69, 70, 74, 75, 12, 67, 76, 12, 77, 71, 71, 71, 68, 12, 12, - 78, 78, 79, 80, 80, 79, 79, 79, 79, 79, 81, 79, 81, 78, 82, 79, - 79, 80, 80, 82, 83, 12, 12, 12, 79, 84, 79, 79, 82, 12, 78, 79, - 85, 85, 86, 87, 87, 86, 86, 86, 86, 86, 88, 86, 88, 85, 89, 86, - 86, 87, 87, 89, 12, 85, 12, 90, 86, 91, 86, 86, 86, 86, 12, 12, - 92, 93, 94, 92, 95, 96, 97, 95, 98, 99, 94, 92, 100, 100, 96, 92, - 94, 92, 95, 96, 99, 98, 12, 12, 12, 92, 100, 100, 100, 100, 94, 12, - 101, 101, 101, 102, 102, 101, 101, 101, 101, 101, 102, 101, 101, 101, 103, 101, - 101, 102, 102, 103, 12, 104, 105, 103, 101, 106, 101, 101, 12, 107, 101, 101, - 108, 108, 108, 109, 109, 108, 108, 108, 108, 108, 109, 108, 108, 110, 111, 108, - 108, 109, 109, 111, 12, 112, 12, 113, 108, 114, 108, 108, 110, 12, 12, 12, - 115, 115, 115, 116, 116, 115, 115, 115, 115, 115, 115, 115, 115, 116, 116, 115, - 12, 115, 115, 115, 115, 117, 115, 115, 118, 118, 119, 119, 119, 120, 121, 119, - 119, 119, 119, 119, 122, 119, 119, 123, 119, 120, 124, 125, 119, 126, 119, 119, - 12, 121, 119, 119, 121, 127, 12, 12, 128, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 130, 131, 129, 129, 129, 12, 12, 12, 12, 12, 132, 133, 134, 135, - 135, 135, 135, 135, 135, 136, 135, 135, 135, 135, 135, 137, 135, 138, 135, 134, - 135, 135, 137, 135, 139, 139, 139, 139, 139, 139, 140, 139, 139, 139, 139, 141, - 140, 139, 139, 139, 139, 139, 139, 142, 139, 143, 144, 12, 145, 145, 145, 145, - 146, 146, 146, 146, 146, 147, 12, 148, 146, 146, 149, 146, 150, 150, 150, 150, - 151, 151, 151, 151, 151, 151, 152, 153, 151, 154, 152, 153, 152, 153, 151, 154, - 152, 153, 151, 151, 151, 154, 151, 151, 151, 151, 154, 155, 151, 151, 151, 156, - 151, 151, 153, 12, 157, 157, 157, 157, 157, 158, 157, 158, 159, 159, 159, 159, - 160, 160, 160, 160, 160, 160, 160, 161, 162, 162, 162, 162, 162, 162, 163, 164, - 162, 162, 165, 12, 166, 166, 166, 166, 166, 167, 12, 168, 169, 169, 169, 169, - 169, 170, 12, 12, 171, 171, 171, 171, 171, 12, 12, 12, 172, 172, 172, 173, - 173, 12, 12, 12, 174, 174, 174, 174, 174, 174, 174, 175, 174, 174, 175, 12, - 176, 177, 178, 178, 178, 178, 179, 12, 178, 178, 178, 178, 178, 178, 180, 12, - 178, 178, 181, 12, 159, 182, 12, 12, 183, 183, 183, 183, 183, 183, 183, 184, - 183, 183, 183, 12, 185, 183, 183, 183, 186, 186, 186, 186, 186, 186, 186, 187, - 186, 188, 12, 12, 189, 189, 189, 189, 189, 189, 189, 12, 189, 189, 190, 12, - 189, 189, 191, 192, 193, 193, 193, 193, 193, 193, 193, 194, 195, 195, 195, 195, - 195, 195, 195, 196, 195, 195, 195, 197, 195, 195, 198, 12, 195, 195, 195, 198, - 7, 7, 7, 199, 7, 7, 7, 12, 200, 200, 200, 200, 200, 200, 200, 201, - 202, 202, 202, 202, 203, 203, 203, 203, 203, 12, 12, 203, 204, 204, 204, 204, - 204, 204, 205, 204, 204, 204, 206, 207, 208, 208, 208, 208, 19, 19, 209, 12, - 146, 146, 210, 211, 202, 202, 12, 12, 212, 7, 7, 7, 213, 7, 214, 215, - 0, 214, 216, 12, 2, 217, 218, 2, 2, 2, 2, 219, 220, 217, 221, 2, - 2, 2, 222, 2, 2, 2, 2, 223, 8, 224, 8, 224, 8, 8, 225, 225, - 8, 8, 8, 224, 8, 15, 8, 8, 8, 10, 8, 226, 10, 15, 8, 14, - 0, 0, 0, 227, 0, 228, 0, 0, 229, 0, 0, 230, 0, 0, 0, 231, - 2, 2, 2, 232, 233, 12, 12, 12, 234, 12, 12, 12, 0, 235, 236, 0, - 4, 0, 0, 0, 0, 0, 0, 4, 2, 2, 5, 12, 0, 0, 233, 12, - 0, 0, 231, 12, 237, 237, 237, 237, 0, 238, 0, 0, 239, 239, 239, 239, - 18, 18, 18, 18, 18, 12, 240, 18, 241, 241, 241, 241, 241, 241, 12, 242, - 243, 12, 12, 242, 151, 154, 12, 12, 151, 154, 151, 154, 0, 0, 0, 233, - 244, 244, 244, 244, 244, 244, 245, 244, 244, 12, 12, 12, 244, 246, 12, 12, - 0, 247, 0, 0, 248, 244, 249, 250, 0, 0, 244, 0, 251, 252, 252, 252, - 252, 252, 252, 252, 252, 253, 254, 255, 256, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 258, 256, 12, 259, 260, 260, 260, 260, 260, 260, 261, 150, 150, 150, - 150, 150, 150, 262, 0, 233, 12, 131, 150, 150, 150, 263, 257, 257, 257, 258, - 257, 257, 0, 0, 264, 264, 264, 264, 264, 264, 264, 265, 264, 266, 12, 12, - 267, 267, 267, 267, 268, 268, 268, 268, 268, 268, 268, 12, 269, 269, 269, 269, - 269, 269, 12, 12, 236, 2, 2, 2, 2, 2, 230, 2, 270, 2, 2, 2, - 271, 271, 271, 271, 271, 271, 271, 272, 273, 273, 273, 273, 273, 273, 12, 12, - 274, 274, 274, 274, 274, 275, 12, 276, 274, 274, 275, 12, 277, 277, 277, 277, - 277, 277, 277, 278, 279, 279, 279, 279, 279, 12, 12, 280, 150, 150, 150, 281, - 282, 282, 282, 282, 282, 282, 282, 283, 282, 282, 284, 285, 145, 145, 145, 286, - 287, 287, 287, 287, 287, 288, 12, 12, 287, 287, 287, 289, 287, 287, 289, 287, - 290, 290, 290, 290, 291, 12, 12, 12, 12, 12, 292, 290, 293, 293, 293, 293, - 293, 294, 12, 12, 155, 154, 155, 154, 155, 154, 12, 12, 2, 2, 3, 2, - 2, 295, 296, 12, 293, 293, 293, 297, 293, 293, 297, 12, 150, 12, 12, 12, - 150, 262, 298, 150, 150, 150, 150, 12, 244, 244, 244, 246, 244, 244, 246, 12, - 2, 299, 12, 12, 300, 22, 12, 24, 25, 26, 25, 301, 302, 303, 25, 25, - 29, 29, 29, 304, 7, 7, 7, 305, 231, 0, 0, 0, 0, 231, 0, 12, - 29, 306, 29, 29, 29, 29, 29, 307, 308, 0, 0, 0, 0, 309, 257, 257, - 257, 257, 257, 310, 311, 150, 311, 150, 311, 150, 311, 281, 0, 231, 0, 231, - 12, 12, 308, 233, 312, 312, 312, 313, 312, 312, 312, 312, 312, 314, 312, 312, - 312, 312, 314, 315, 312, 312, 312, 316, 312, 312, 314, 12, 231, 131, 0, 0, - 0, 131, 0, 0, 8, 8, 8, 14, 0, 0, 0, 317, 318, 12, 12, 12, - 0, 0, 0, 319, 320, 320, 320, 320, 320, 320, 320, 321, 322, 322, 322, 322, - 323, 12, 12, 12, 214, 0, 0, 0, 0, 0, 0, 12, 324, 324, 324, 324, - 324, 12, 12, 325, 326, 326, 326, 326, 326, 326, 327, 12, 328, 328, 328, 328, - 328, 328, 329, 12, 330, 330, 330, 330, 330, 330, 330, 331, 332, 332, 332, 332, - 332, 12, 332, 332, 332, 333, 12, 12, 334, 334, 334, 334, 335, 335, 335, 335, - 336, 336, 336, 336, 336, 336, 336, 337, 336, 336, 337, 12, 338, 338, 338, 338, - 338, 12, 338, 338, 338, 338, 338, 12, 339, 339, 339, 339, 339, 339, 12, 12, - 340, 340, 340, 340, 340, 12, 12, 341, 342, 342, 343, 342, 343, 344, 342, 342, - 344, 342, 342, 342, 344, 342, 344, 345, 346, 346, 346, 346, 346, 12, 12, 12, - 347, 347, 347, 347, 347, 348, 12, 12, 347, 349, 12, 12, 347, 347, 12, 12, - 2, 350, 2, 2, 351, 2, 299, 12, 352, 353, 354, 352, 352, 352, 352, 352, - 352, 355, 356, 357, 358, 358, 358, 358, 358, 359, 358, 358, 360, 360, 360, 360, - 361, 361, 361, 361, 361, 361, 361, 362, 12, 363, 361, 361, 364, 364, 364, 364, - 365, 366, 367, 364, 368, 368, 368, 368, 368, 368, 368, 369, 370, 370, 370, 370, - 370, 370, 371, 372, 373, 373, 373, 373, 373, 373, 374, 12, 375, 375, 375, 375, - 376, 376, 376, 376, 376, 376, 12, 376, 377, 376, 376, 376, 378, 379, 12, 378, - 378, 380, 380, 378, 378, 378, 378, 378, 378, 381, 382, 383, 378, 378, 384, 12, - 385, 385, 385, 385, 386, 386, 386, 386, 387, 387, 387, 387, 387, 388, 389, 387, - 387, 388, 12, 12, 390, 390, 390, 390, 390, 391, 392, 390, 393, 393, 393, 393, - 393, 394, 393, 393, 395, 395, 395, 395, 396, 12, 395, 395, 397, 397, 397, 397, - 398, 12, 399, 400, 12, 12, 399, 397, 401, 401, 401, 401, 401, 401, 402, 12, - 403, 403, 403, 403, 404, 12, 12, 12, 404, 12, 405, 403, 406, 406, 406, 406, - 406, 406, 12, 12, 406, 406, 407, 12, 408, 408, 408, 408, 408, 409, 410, 408, - 408, 409, 12, 411, 29, 29, 29, 412, 413, 413, 413, 413, 413, 413, 414, 415, - 415, 12, 12, 12, 416, 29, 12, 12, 29, 29, 417, 12, 12, 12, 416, 29, - 418, 418, 418, 418, 418, 418, 12, 12, 419, 419, 419, 419, 419, 419, 420, 12, - 421, 421, 421, 421, 421, 421, 422, 12, 423, 423, 423, 423, 423, 423, 423, 12, - 424, 424, 424, 424, 424, 425, 12, 12, 426, 426, 426, 426, 426, 426, 426, 427, - 428, 426, 426, 426, 426, 427, 12, 429, 430, 430, 430, 430, 431, 12, 12, 432, - 433, 433, 433, 433, 433, 433, 434, 12, 433, 433, 435, 12, 436, 436, 436, 436, - 436, 437, 436, 436, 436, 436, 12, 12, 438, 438, 438, 438, 438, 439, 12, 12, - 440, 440, 440, 440, 118, 119, 119, 119, 119, 127, 12, 12, 441, 441, 441, 441, - 442, 441, 441, 441, 443, 12, 12, 12, 444, 445, 446, 447, 444, 444, 444, 447, - 444, 444, 448, 12, 449, 449, 449, 449, 449, 449, 450, 12, 449, 449, 451, 12, - 452, 453, 452, 454, 454, 452, 452, 452, 452, 452, 455, 452, 455, 453, 456, 452, - 452, 454, 454, 457, 458, 459, 12, 453, 452, 460, 452, 458, 452, 458, 12, 12, - 461, 461, 462, 463, 461, 461, 461, 461, 461, 462, 461, 461, 464, 465, 466, 461, - 461, 462, 467, 12, 468, 12, 12, 12, 469, 469, 469, 469, 469, 469, 469, 470, - 471, 12, 12, 12, 472, 472, 472, 472, 472, 472, 12, 12, 472, 472, 473, 12, - 474, 474, 474, 474, 474, 475, 474, 474, 474, 474, 474, 475, 476, 476, 476, 476, - 476, 477, 12, 12, 476, 476, 478, 12, 178, 178, 178, 180, 479, 479, 479, 479, - 479, 479, 480, 12, 145, 12, 12, 12, 481, 481, 481, 481, 481, 481, 482, 483, - 481, 481, 481, 12, 481, 482, 12, 12, 484, 484, 484, 484, 484, 484, 484, 12, - 485, 485, 485, 485, 486, 12, 12, 487, 488, 489, 490, 488, 488, 491, 488, 488, - 488, 488, 488, 488, 488, 492, 493, 488, 488, 489, 12, 12, 488, 488, 494, 12, - 495, 495, 496, 495, 495, 495, 495, 495, 495, 497, 12, 12, 498, 498, 498, 498, - 498, 498, 12, 12, 499, 499, 499, 499, 500, 12, 12, 12, 501, 501, 501, 501, - 501, 501, 502, 12, 53, 53, 503, 12, 440, 440, 12, 12, 504, 504, 504, 504, - 505, 12, 12, 12, 504, 504, 505, 12, 506, 506, 507, 506, 506, 506, 506, 506, - 506, 508, 506, 506, 506, 509, 12, 12, 506, 506, 506, 510, 511, 511, 511, 511, - 512, 511, 511, 511, 511, 511, 513, 511, 511, 514, 12, 12, 515, 516, 517, 515, - 515, 515, 515, 515, 515, 516, 518, 517, 515, 515, 12, 12, 515, 515, 519, 12, - 520, 521, 522, 520, 520, 520, 520, 520, 520, 520, 520, 523, 521, 520, 524, 12, - 520, 520, 525, 12, 526, 526, 526, 526, 526, 526, 526, 12, 526, 526, 527, 12, - 528, 528, 528, 528, 528, 528, 529, 12, 530, 530, 530, 530, 531, 530, 530, 530, - 530, 530, 532, 533, 530, 530, 532, 12, 534, 12, 12, 12, 100, 100, 100, 100, - 96, 12, 12, 98, 535, 535, 535, 535, 535, 535, 536, 12, 535, 535, 535, 537, - 535, 538, 12, 12, 535, 12, 12, 12, 539, 539, 539, 539, 540, 12, 12, 12, - 541, 541, 541, 541, 541, 542, 12, 12, 541, 541, 543, 12, 544, 544, 544, 544, - 544, 545, 12, 12, 546, 546, 546, 546, 546, 546, 547, 12, 269, 269, 548, 12, - 549, 549, 549, 549, 549, 549, 549, 550, 549, 549, 551, 552, 553, 553, 553, 553, - 553, 553, 553, 554, 553, 553, 555, 12, 556, 556, 556, 556, 556, 556, 556, 557, - 556, 557, 12, 12, 558, 558, 558, 558, 558, 559, 12, 12, 558, 558, 560, 558, - 560, 558, 558, 558, 558, 558, 12, 561, 562, 562, 562, 562, 562, 562, 563, 12, - 564, 564, 564, 564, 564, 564, 565, 12, 566, 566, 566, 566, 566, 566, 567, 566, - 566, 12, 12, 12, 568, 568, 568, 568, 568, 568, 569, 570, 568, 568, 12, 570, - 571, 572, 12, 12, 244, 573, 12, 12, 574, 574, 574, 574, 575, 575, 575, 575, - 575, 576, 12, 12, 12, 12, 12, 577, 574, 574, 574, 578, 578, 12, 12, 12, - 257, 579, 257, 580, 581, 252, 252, 252, 582, 12, 12, 12, 583, 12, 12, 12, - 253, 584, 12, 12, 12, 257, 12, 12, 585, 585, 585, 585, 585, 585, 585, 12, - 586, 586, 586, 586, 586, 586, 587, 12, 586, 586, 586, 588, 586, 586, 588, 12, - 586, 586, 589, 586, 0, 12, 12, 12, 0, 12, 238, 0, 317, 12, 12, 12, - 7, 590, 12, 12, 0, 233, 12, 12, 0, 231, 308, 0, 0, 591, 227, 0, - 0, 0, 591, 7, 212, 592, 7, 0, 0, 0, 593, 227, 8, 224, 12, 12, - 0, 231, 12, 12, 0, 0, 317, 12, 0, 0, 0, 228, 594, 595, 308, 228, - 0, 0, 596, 308, 0, 308, 0, 0, 0, 596, 231, 308, 0, 228, 0, 228, - 0, 0, 596, 231, 0, 597, 238, 0, 228, 0, 0, 0, 0, 233, 0, 0, - 0, 0, 0, 238, 598, 598, 598, 598, 598, 598, 598, 12, 12, 12, 599, 598, - 600, 598, 598, 598, 2, 2, 2, 299, 12, 270, 299, 12, 239, 601, 239, 239, - 239, 239, 602, 239, 603, 604, 601, 12, 19, 19, 19, 605, 12, 12, 12, 606, - 607, 607, 607, 607, 607, 607, 607, 608, 607, 607, 607, 609, 607, 607, 609, 610, - 611, 611, 611, 611, 611, 611, 611, 612, 613, 613, 613, 613, 613, 613, 614, 615, - 616, 616, 616, 616, 616, 616, 617, 12, 618, 618, 618, 618, 618, 618, 619, 620, - 621, 621, 621, 621, 621, 621, 621, 622, 621, 623, 12, 624, 151, 154, 151, 625, - 151, 151, 151, 154, 626, 626, 626, 626, 626, 627, 626, 626, 626, 628, 12, 12, - 629, 629, 629, 629, 629, 629, 629, 12, 629, 629, 630, 631, 0, 317, 12, 12, - 29, 632, 29, 29, 633, 634, 632, 29, 412, 29, 635, 12, 636, 51, 635, 632, - 633, 634, 635, 635, 633, 634, 412, 29, 412, 29, 632, 637, 29, 29, 638, 29, - 29, 29, 29, 12, 632, 632, 638, 29, 50, 12, 12, 12, 12, 238, 0, 0, - 639, 12, 12, 12, 0, 0, 317, 0, 0, 0, 12, 12, 0, 0, 231, 238, - 0, 231, 317, 308, 0, 0, 0, 640, 0, 0, 231, 131, 641, 12, 12, 12, - 244, 244, 573, 12, 642, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 939, 940, 941, 942, 946, 948, 0, 962, - 969, 970, 971, 976,1001,1002,1003,1008, 0,1033,1040,1041,1042,1043,1047, 0, - 0,1080,1081,1082,1086,1110, 0, 0,1124,1125,1126,1127,1131,1133, 0,1147, - 1154,1155,1156,1161,1187,1188,1189,1193, 0,1219,1226,1227,1228,1229,1233, 0, - 0,1267,1268,1269,1273,1298, 0,1303, 943,1128, 944,1129, 954,1139, 958,1143, - 959,1144, 960,1145, 961,1146, 964,1149, 0, 0, 973,1158, 974,1159, 975,1160, - 983,1168, 978,1163, 988,1173, 990,1175, 991,1176, 993,1178, 994,1179, 0, 0, - 1004,1190,1005,1191,1006,1192,1014,1199,1007, 0, 0, 0,1016,1201,1020,1206, - 0,1022,1208,1025,1211,1023,1209, 0, 0, 0, 0,1032,1218,1037,1223,1035, - 1221, 0, 0, 0,1044,1230,1045,1231,1049,1235, 0, 0,1058,1244,1064,1250, - 1060,1246,1066,1252,1067,1253,1072,1258,1069,1255,1077,1264,1074,1261, 0, 0, - 1083,1270,1084,1271,1085,1272,1088,1275,1089,1276,1096,1283,1103,1290,1111,1299, - 1115,1118,1307,1120,1309,1121,1310, 0,1053,1239, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,1093,1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 949,1134,1010,1195,1050,1236,1090,1277,1341,1368,1340, - 1367,1342,1369,1339,1366, 0,1320,1347,1418,1419,1323,1350, 0, 0, 992,1177, - 1018,1204,1055,1241,1416,1417,1415,1424,1202, 0, 0, 0, 987,1172, 0, 0, - 1031,1217,1321,1348,1322,1349,1338,1365, 950,1135, 951,1136, 979,1164, 980,1165, - 1011,1196,1012,1197,1051,1237,1052,1238,1061,1247,1062,1248,1091,1278,1092,1279, - 1071,1257,1076,1263, 0, 0, 997,1182, 0, 0, 0, 0, 0, 0, 945,1130, - 982,1167,1337,1364,1335,1362,1046,1232,1422,1423,1113,1301, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 10,1425, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,1314,1427, 5, - 1434,1438,1443, 0,1450, 0,1455,1461,1514, 0, 0, 0, 0, 0, 0, 0, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 224, 224, 768, 424, 432, 440, 448, 776, 224, 224, 784, 792, 72, 800, 40, 808, + 48, 48, 48, 816, 824, 48, 48, 832, 840, 848, 856, 864, 872, 880, 48, 888, + 48, 48, 48, 896, 904, 40, 40, 40, 40, 912, 40, 96, 920, 928, 936, 456, + 64, 64, 64, 64, 64, 64, 64, 944, 952, 960, 968, 40, 976, 984, 48, 992, + 72, 72, 72, 40, 40, 40, 48, 48,1000, 48, 48, 48,1008, 48, 48, 48, + 48, 48, 48,1016, 72,1024, 40, 40,1032, 464, 64,1040,1048, 8,1056,1064, + 1072,1080, 8, 8,1088, 64,1096,1104, 8, 8, 8, 8, 8,1112,1120,1128, + 1136,1144, 8, 64,1152, 8, 8, 8, 8, 8, 472,1160, 232, 8,1168,1176, + 8,1184,1192,1200, 8,1208, 176, 8,1216,1224, 8, 8,1232, 64,1240, 64, + 480, 8, 8,1248,1256,1264,1272,1280,1288, 240, 128,1296,1304,1312, 144,1320, + 1328, 240, 128,1336,1344,1352, 304,1360,1368, 488, 128,1376,1384, 248, 144,1392, + 1400, 240, 128,1408,1416,1424, 144,1432,1440,1448,1456,1464,1472,1480, 304,1488, + 1496, 256, 128,1504,1512,1520, 144,1528,1536, 256, 128,1544,1552,1560, 144,1568, + 1576, 256, 8,1584,1592,1600, 144,1608,1616,1624, 8,1632,1640,1648, 304,1656, + 312, 8, 8,1664,1672,1680, 0, 0,1688, 8,1696,1704,1712,1720, 0, 0, + 1728,1736, 320,1744,1752, 8, 152,1760,1768,1776, 64,1784,1792,1800, 0, 0, + 8, 8,1808,1816, 496,1824,1832,1840,1848,1856, 72, 72,1864, 40, 40,1872, + 8, 8, 8, 8, 504,1880, 8, 8, 504, 8, 8,1888, 512, 520, 8, 8, + 8, 512, 8, 8, 8,1896,1904, 528, 8, 264, 72, 72, 72, 72, 72,1912, + 536, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8,1920, 8,1928,1936, 8, 8, 8, 8,1944,1952, + 8,1960, 8,1968, 8,1976,1984,1992, 8, 8, 8,2000,2008,2016, 80,2024, + 2032, 80, 8, 8,2040, 8, 8, 160,2048, 8,2056, 8, 8, 8, 8, 328, + 8, 120,2064,2072,2080, 8, 112,2088, 8, 8, 184, 8, 192,2096, 24, 24, + 8,2104, 8, 8, 8,2112,2120,2128, 80, 80,2136,2144, 64, 544,2152, 0, + 2160, 8, 8,2168,2176, 496,2184,2192, 336, 8,2200, 232, 8, 8,2208,2216, + 8, 8,2224,2232,2240, 232, 8, 552,2248, 72, 72,2256,2264,2272,2280,2288, + 40, 40,2296, 96, 96, 96,2304,2312, 40,2320, 96, 96, 64, 64, 64, 64, + 48, 48, 48, 48, 48, 48, 48, 48, 48,2328, 48, 48, 48, 48, 48, 48, + 168, 560, 168, 168, 560,2336, 168,2344, 344, 344, 344,2352,2360,2368,2376,2384, + 2392,2400,2408,2416,2424,2432,2440,2448,2456,2464, 568, 568,2472,2480,2488,2496, + 2504,2512,2520,2528,2536, 88, 104, 104,2544,2552,2560, 24,2568,2576, 24,2584, + 2592, 24,2600, 24, 24, 24, 24,2608, 24,2616, 56,2624, 24,2632,2640, 24, + 24, 24, 264, 0, 576, 0, 88, 88, 88,2648, 24, 24, 24, 24,2656, 88, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,2664,2672, 24, 24,2680, + 24, 24, 24, 24, 24, 24,2688, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24,2696,2704, 88,2712, 24, 24,2720, 56,2728, 56, + 56, 56, 56, 56, 56, 56, 56, 56,2736,2744, 56, 56, 56,2752, 56,2760, + 24, 24, 24, 56,2768, 24, 24,2776, 24, 24, 24, 24, 24, 24, 24, 24, + 72, 72, 72, 40, 40, 40,2784,2792, 48, 48, 48, 48, 48, 48,2800,2808, + 40, 40,2816, 8, 8, 8,2824,2832, 8, 200, 208, 208, 208, 208, 64, 64, + 2840,2848,2856,2864,2872,2880, 0, 0, 24,2888, 24, 24, 24, 24, 24, 352, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 272, 0, 24, + 2896,2904,2912,2920, 312, 8, 8, 8, 8,2928, 536, 8, 8, 8, 8,2936, + 2944, 8, 8, 312, 8, 8, 8, 8, 120,2952, 8, 8, 24, 24,2960, 8, + 24, 584, 592, 24,2968, 600, 24, 24, 592, 24, 24, 600, 24, 24, 24, 24, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, + 8,2976, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 152, 24, 24, 24, 608, 8, 8, 552, + 2984, 8,2992, 0, 48, 48,3000,3008, 48,3016, 8, 8, 8, 8,3024,3032, + 456,3040,3048,3056, 48, 48, 48,3064,3072,3080,3088,3096,3104,3112, 0,3120, + 3128, 8,3136,3144, 8, 8, 8,3152,3160, 8, 8,3168,3176, 80, 64,3184, + 232, 8,3192, 8,3200,3208, 8, 152, 480, 8, 8,3216,3224, 360,3232,3240, + 8, 8,3248,3256,3264,3272, 8,3280, 8, 8, 8,3288,3296,3304,3312,3320, + 3328,3336, 208, 40, 40,3344,3352, 40, 40, 40, 40, 40, 8, 8,3360, 80, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 368, 8,3368, 8, 8, 184, + 8, 8, 8, 8, 8, 8, 112, 8, 8, 8, 8, 8, 8, 192, 0, 0, + 3376,3384,3392,3400,3408, 8, 8, 8, 8, 8, 8,3416,3424,3432, 8, 8, + 8, 8, 8,3440, 24, 8, 8, 8, 8,3448, 8, 8,3456, 0, 0,3464, + 64,3472, 64,3480,3488,3496,3504,3512, 8, 8, 8, 8, 8, 8, 8,3520, + 3528, 424, 432, 440, 448,3536,3544,3552, 8,3560, 8, 120,3568,3576,3584,3592, + 3600, 8, 520,3608, 112, 112, 0, 0, 8, 8, 8, 8, 8, 8, 8, 176, + 3616, 88, 88,3624, 104, 104, 104,3632,3640, 280, 376, 0, 0, 24, 24,3648, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 152, 8, 8, 8, 248,3656,3664, + 8, 8,3672, 8,3680, 8, 8,3688, 8,3696, 8, 8,3704,3712, 0, 0, + 72, 72,3720, 40, 40, 8, 8, 8, 8, 112, 80, 72, 72,3728, 40,3736, + 8, 8, 616, 8, 8, 8,3744, 624, 624,3752,3760,3768, 8, 8, 8, 368, + 8, 8, 8, 200, 8, 328, 616, 0,3776, 96, 96,3784, 0, 0, 0, 0, + 3792, 8, 8,3800, 8,3808, 8,3816, 8, 120,3824, 0, 0, 0, 8,3832, + 8,3840, 8,3848, 8, 192, 0, 0, 8, 8, 8,3856, 88, 632, 88, 88, + 3864,3872, 8,3880, 640,3888, 8,3896, 8, 648, 0, 0,3904, 8,3912,3920, + 8, 8, 8,3928, 8,3936, 8,3944, 8,3952,3960, 0, 0, 0, 0, 0, + 8, 8, 8, 8, 160, 0, 0, 0, 72, 72, 72,3968, 40, 40, 40,3976, + 8, 8,3984, 80,3992, 72,4000, 40,4008, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88,4016, 8, 8,4024, 656,4032,4040, 0,4048, + 8, 648,4056, 8, 472,4064, 0, 8,4072, 0, 0, 8,4080, 0, 8, 200, + 4088, 8, 8,4096,4104, 632,4112,4120, 336, 8, 8,4128,4136, 8, 160, 80, + 4144, 8,4152,4160,4168, 8, 8,4176, 336, 8, 8,4184,4192,4200, 384,4208, + 8, 488, 664,4216,4224, 0, 0, 0,4232,4240,4248, 8, 8,4256,4264, 80, + 4272, 240, 128,4280,4288,4296,4304,4312,4320, 8, 8,4328,4336,4344,4352, 0, + 8, 8, 8,4360,4368,4376, 656, 0, 8, 8, 8,4384,4392, 80, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 672,4400,4408,4416, 0, 0, + 8, 8, 8,4424,4432, 80,4440, 0, 8, 8,4448,4456, 80, 288,4464, 0, + 8,4472,4480,4488, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 664,4496, 0, 0, 0, 0, 0, 0, 72, 72, 40, 40, 320,4504, + 4512,4520, 8,4528,4536, 80, 0, 0, 0, 0,4544, 8, 8,4552,4560, 0, + 4568, 8, 8,4576,4584,4592, 8, 8,4600,4608,4616, 8, 8, 8, 8, 160, + 4624, 0, 0, 0, 0, 0,4632, 0, 0, 0, 0, 0, 8, 8,4640, 80, + 128, 8, 672,4648,4656, 320, 528,4664, 8,4672,4680,4688, 0, 0, 0, 0, + 4696, 8, 8,4704,4712, 80,4720, 8,4728,4736, 80, 8, 8,4744, 80, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,4752, + 4760, 256, 8,4768,4776,4784, 0, 0, 0, 0, 0, 248, 88,4792,4800,4808, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 192, 0, 0, 0, 0, 0, 0, + 104, 104, 104, 104, 104, 104,4816,4824, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8,4832, + 8, 8, 8, 136,4840,4848, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 176, + 8, 8, 8, 8, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 680,4856, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 8, 160, 8, 120, 360, 8, 8, 8, 8, 120, 80, 8, 112,4864, + 8, 8, 8,4872,4880,4888,4896,4904, 8, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,4912, 8,4920, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 72, 72, 40, 40, 88,4928, 72,4936, 40,4944, 0, 0, + 8, 8, 8, 8,4952,4960, 688, 688,4968,4976, 0, 0, 0, 0,4984,4992, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 328, 0,5000, + 8, 120, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 696, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,5008, + 8, 8, 696,5016, 0,5024,5032, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 184, + 8, 8, 8, 8, 8, 8, 176, 152, 160,5040,5048, 0, 0, 0, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,5056, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,5064, 24, 376, 24,5072, + 64, 64, 544, 64, 704, 24, 24, 24, 24, 24, 24, 24, 352, 0, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 272, + 24, 24,5080, 24, 24, 24,5088,5096,5104, 24,5112, 24, 24, 24, 576, 0, + 24, 24, 24, 24,5120, 0, 0, 0, 0, 0, 0, 0, 88, 712, 88, 712, + 24, 24, 24, 24, 24, 608, 88, 640, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 296, 40, 720, 728,5128, 168, 72, 392,5136,5144,5152,5160, 72, 296, 40, + 5168,5176, 40,5184,5192,5200, 736, 72, 744, 40, 72, 296, 40, 720, 728, 40, + 168, 72, 392, 736, 72, 744, 40, 72, 296, 40,5208, 72,5216,5224,5232,5240, + 40,5248, 72,5256,5264,5272,5280, 40,5288, 72,5296, 40,5304, 288, 288, 288, + 64, 64, 64,5312, 64, 64,5320,5328,5336,5344, 464, 0, 0, 0, 0, 0, + 5352,5360,5368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5376,5384,5392, 96, 96, 96,5400, 0,5408, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 152,5416,5424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,5432, 0, 8, 8,5440,5448, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,5456, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 680,5464, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 120,5472,5480, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,5488, 120, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,5496, 704, 0, 0, + 72, 72, 392, 40,5504, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 384, 88, 88,5512,5520, 0, 0, 0, 0, + 384, 88,5528,5536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5544, 8,5552,5560,5568,5576,5584,5592,5600, 184,5608, 184, 0, 0, 0,5616, + 24, 24, 216, 24, 24, 24, 24, 24, 24, 352, 584, 400, 400, 400, 24, 272, + 5624, 24, 24, 24, 24, 24, 24, 24, 24, 24, 408, 0, 0, 0,5632, 24, + 5640, 24, 24, 216, 752, 760, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,5648, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,5656, 280, 280, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 264, 216, 376, + 216, 24, 24, 24, 416, 264, 24, 24, 416, 24, 408, 216, 760,5664, 0, 0, + 24, 24, 24, 24, 24, 416, 408, 280,5672, 24, 24, 24,5680,5688,5696, 752, + 24, 24, 24, 24, 24, 24, 24, 24, 24,5704, 24, 24, 24, 24, 24,5712, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, + 8, 112, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 112, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 248, 8, + 8, 8, 8, 8, 8, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 8, 8, 176, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 192, 0, 0, 0, 0, 0, 0, 0, 0, + 5720, 0, 136, 136, 136, 136, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,5728, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, + 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, + 20, 20, 20, 20, 20, 20, 20, 20, 12, 12, 12, 12, 12, 12, 12, 12, + 24, 24, 24, 24, 24, 24, 24, 24, 28, 28, 28, 28, 28, 28, 28, 28, + 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 40, 40, 40, + 48, 48, 48, 48, 48, 48, 48, 48, 52, 52, 52, 52, 52, 52, 52, 52, + 44, 44, 44, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, + 64, 64, 64, 64, 64, 64, 64, 64, 92, 92, 92, 92, 92, 92, 92, 92, + 84, 84, 84, 84, 84, 84, 84, 84, 80, 80, 80, 80, 80, 80, 80, 80, + 68, 68, 68, 68, 68, 68, 68, 68, 56, 56, 56, 56, 56, 56, 56, 56, + 12, 12, 12, 12, 228, 232, 228, 232, 12, 12, 468, 468, 32, 472, 32, 472, + 32, 32, 32, 692, 12, 12, 696, 12, 56, 56, 56, 56, 56, 56, 56, 700, + 704, 72, 708, 72, 72, 72, 712, 72, 60, 60, 60, 60, 60, 60, 60, 60, + 716, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 720, 308, 724, 308, 308, + 728, 732, 236, 236, 736, 236, 740, 744, 748, 752, 36, 36, 756, 760, 36, 764, + 36, 36, 36, 36, 36, 768, 36, 36, 772, 312, 312, 312, 776, 36, 36, 36, + 316, 316, 316, 780, 320, 320, 320, 784, 476, 476, 788, 792, 796, 800, 804, 36, + 36, 808, 36, 36, 36, 36, 812, 36, 112, 112, 112, 112, 112, 816, 820, 112, + 824, 828, 832, 836, 840, 844, 848, 852, 856, 860, 864, 868, 872, 876, 880, 884, + 888, 892, 896, 900, 904, 908, 912, 916, 920, 924, 928, 932, 936, 940, 944, 948, + 952, 956, 960, 964, 968, 972, 976, 980, 984, 988, 992, 996,1000,1004,1008,1012, + 1016,1020,1024,1028,1032,1036,1040,1044,1048,1052, 324, 324,1056,1060,1064, 324, + 1068,1072,1076,1080,1084,1088,1092,1096,1100, 328, 328,1104, 328,1108, 0, 0, + 1112,1116,1120,1124,1128,1132, 0, 0, 128, 128, 128, 128, 480, 128,1136,1140, + 128, 480, 128, 484, 484,1144, 0, 0, 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 116, 116, 488, 116, 116,1148, 88, 88, 88, 88, 492,1152, 88, 88, + 492, 88, 88,1156, 496,1160, 88, 88, 88, 496, 88, 88, 88,1164, 88,1168, + 88,1172, 108, 108, 108, 108, 108,1176,1180,1184, 240, 240, 240, 240,1188,1192, + 1196,1200,1204,1208,1212,1216,1220,1224, 132, 132, 132, 132, 132,1228, 500, 500, + 1232,1236, 136, 136, 136, 136, 136,1240, 136, 136,1244, 40, 40, 40, 40,1248, + 1252,1256, 504, 504,1260,1264,1268,1272, 332, 332,1276, 332,1280,1284, 132, 132, + 1288,1292, 244, 244, 244,1296, 244,1300, 508, 508,1304, 56, 56, 512,1308, 0, + 140, 140, 140, 140,1312, 140, 140, 140, 248, 248, 248, 248, 336, 336, 336,1316, + 340, 340, 340,1320,1324, 344, 344, 344,1328, 116, 116,1332,1336,1340,1344,1348, + 32, 32,1352, 32, 32,1356,1360,1364, 32, 32, 32,1368, 56, 56, 56, 56, + 72, 516, 72, 72, 516,1372, 72,1376, 72, 72, 72, 520, 520,1380, 72,1384, + 1388, 12, 12, 12, 12, 12, 524,1392, 528, 532, 12, 12, 348, 56, 56,1396, + 12, 12,1400,1404,1408, 12, 32, 32,1412, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 176, 0, 352, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12,1416, + 148, 148, 148, 148, 148, 148, 32, 32, 144, 144, 144, 144, 144, 144, 144,1420, + 116, 116, 488, 356, 356, 356,1424,1428, 88,1432, 180, 180, 180, 180, 60, 60, + 12, 12, 12, 12, 12, 184, 0, 0, 4,1436, 4, 4, 4, 4, 4,1440, + 4, 4, 4, 4, 4,1444, 0, 12,1448, 12,1452,1456,1460, 76, 76, 76, + 76,1464, 536, 100, 100, 100, 100,1468,1472, 252, 252,1476, 8, 8, 8, 8, + 360, 12, 252, 252, 12, 12,1480, 100, 8, 360, 12, 12, 12, 12, 8,1484, + 12, 12, 12, 12, 12, 100, 100,1488, 100, 100, 100, 100, 100,1492, 12, 12, + 4, 4, 4, 4, 12, 12, 12, 12,1496, 24, 24, 24,1500, 364, 364, 364, + 84, 84,1504, 0, 60, 60, 60, 60, 60, 60, 44, 44, 44, 44, 44,1508, + 12, 12,1512, 32, 32, 32, 32, 32,1516, 32, 32, 32, 32, 532, 0,1520, + 540, 540,1524, 176, 368, 368, 368,1528, 256, 256, 256, 256,1532,1536, 112, 112, + 544, 544,1540, 548, 548,1544, 8,1548, 260, 260, 260, 260,1552,1556, 96,1560, + 372, 372, 372,1564,1568,1572, 96, 96, 264, 264, 264, 264,1576,1580, 376,1584, + 1588,1592, 180, 32, 32,1596,1600, 108, 108, 108, 108, 108, 376, 376,1604,1608, + 8, 8,1612, 8,1616, 8, 8,1620, 4, 4, 4, 4, 4, 4, 188, 4, + 4, 4, 4, 4, 4, 552, 0, 0,1624,1628, 236,1632,1636, 36, 36, 36, + 36, 36, 36,1640, 36, 36, 36, 36, 36, 36, 36, 36, 36, 0, 0, 36, + 56, 176,1644, 12, 12, 556,1648,1652, 36, 36, 36, 36, 36, 36, 36,1656, + 152, 12, 228, 232, 228, 232,1660, 536, 100,1664, 8, 360,1668,1672,1676,1680, + 1684, 120,1688,1692, 560, 560, 0, 0, 120, 120, 120, 120, 120, 120, 120,1696, + 1700, 12, 12,1704, 72, 72, 72, 72,1708, 192,1712, 0, 0, 12, 12,1716, + 1720,1724, 380, 380, 380,1728,1732, 156, 564, 564,1736,1740,1744, 568, 568,1748, + 1752,1756, 572, 572,1760,1764, 0, 0, 196, 196, 196, 196, 196, 384, 384, 384, + 1768,1772,1776, 388, 388,1780, 388,1784, 576, 576,1788, 392, 392, 392,1792, 580, + 580,1796,1800,1804, 396, 396, 396,1808, 80, 80, 80,1812, 80,1816,1820, 0, + 1824, 32, 32,1828, 0, 0, 0, 0,1832, 584, 584,1836,1840,1844, 588, 588, + 1848,1852,1856, 0, 0, 0,1860,1864,1868,1872,1876,1880,1884,1888, 0, 0, + 592, 592, 268,1892, 268,1896, 268, 268,1900,1904,1908,1912, 596, 596, 600, 600, + 604, 604, 0, 0, 608, 608,1916,1920, 400, 400, 400,1924,1928,1932,1936,1940, + 1944,1948,1952, 0, 0, 0, 0, 0, 272, 272, 272, 272,1956, 0, 0, 0, + 160, 160, 160,1960, 160, 160, 160,1964, 612, 612,1968,1972, 404, 404,1976, 404, + 1980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36,1984, + 616, 616,1988,1992,1996,2000, 0,2004, 620, 620,2008, 624, 624,2012, 0,2016, + 2020, 0, 0,2024,2028, 0,2032,2036, 200, 200, 200, 200,2040,2044, 200,2048, + 276, 276, 276, 276,2052,2056,2060,2064, 408, 408, 408,2068,2072, 628, 628,2076, + 164, 164, 164, 164, 164, 164,2080,2084, 412,2088, 412, 412,2092, 0, 0, 0, + 2096,2100,2104, 416, 416, 416,2108,2112,2116,2120,2124,2128,2132,2136,2140,2144, + 2148, 632, 632,2152,2156,2160,2164, 0, 204, 204, 204, 204, 204,2168,2172, 0, + 280, 280, 280, 280,2176,2180, 0, 0, 284, 284, 284,2184, 284,2188, 0, 0, + 288, 288, 288, 288,2192,2196,2200, 0, 420, 420, 420, 636, 636, 96,2204, 0, + 640,2208,2212, 640,2216, 0, 0, 0, 424, 424, 424,2220, 0, 0, 0, 0, + 0, 0, 208, 208, 208, 208, 208,2224,2228,2232,2236,2240,2244,2248, 0, 0, + 0, 0, 644, 648, 648, 644,2252, 0, 292, 292, 292, 292,2256, 212, 212, 212, + 212, 212,2260, 40, 428, 428, 428,2264,2268, 0, 0, 0, 0, 0,2272, 0, + 0, 0, 0, 0, 652, 652,2276,2280,2284, 432, 432,2288,2292, 432,2296, 656, + 656,2300,2304,2308, 0, 0, 0, 0,2312, 660, 660,2316,2320,2324,2328,2332, + 2336,2340,2344, 664, 664,2348,2352, 0, 0, 0, 0, 0, 0, 0,2356,2360, + 436,2364, 436,2368, 436,2372, 0, 0, 0, 0, 0,2376, 440, 440, 440,2380, + 28,2384, 0, 0, 0, 0, 0, 0, 28, 28, 28, 28, 28, 28,2388,2392, + 28, 28, 28, 28,2396, 0, 0, 0, 0, 168, 168, 168, 168, 168, 168,2400, + 20, 20, 20, 20, 20,2404, 20, 20, 20, 20, 20, 20, 20, 20, 20,2408, + 52, 52, 52, 52,2412, 0, 0, 0, 444, 444, 444,2416, 0, 0, 0, 0, + 44, 44, 44,2420,2424,2428,2432, 296, 296, 296, 296,2436,2440,2444,2448,2452, + 216, 216, 216, 216,2456,2460,2464,2468, 216, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 448, 448, 448,2472, 0, 0, 0, 0, 220, 220, 220, 220, + 220,2476, 668,2480, 668,2484, 0, 0, 124, 124, 124, 124,2488, 124, 124, 124, + 2492, 124, 0, 0, 0, 0,2496,2500, 64, 64, 64, 64, 64,2504, 0,2508, + 16,2512, 0, 0, 0, 0, 0, 0, 16, 16, 16, 16, 16, 16, 16,2516, + 0, 0, 0, 0, 0, 0, 0,2520,2524, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,2528,2532, 0,2536,2540, 68, + 68, 68, 68, 68, 68, 68, 68,2544, 172, 172, 172, 172, 172, 172,2548,2552, + 2556,2560, 224, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 192, + 12, 12, 12,2564, 12, 452, 12, 452, 56, 56, 512, 56,2568, 12, 12, 12, + 12, 12, 12, 12, 224, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 456, + 12, 12,2572, 12, 12, 12,2576,2580,2584, 12,2588, 12, 12, 12, 352, 0, + 72, 72, 72, 72,2592, 0, 0, 0, 0, 0, 0, 0, 12, 224, 12, 224, + 12, 12, 12, 12, 12,2596, 12, 300, 12, 12, 12, 12, 12, 524, 12, 12, + 12,2600,2604,2608,2612, 12, 12, 12,2616,2620, 12,2624,2628,2632, 12, 12, + 12, 12,2636, 12, 12, 12, 12, 12, 12, 12, 12, 12,2640, 12, 12, 12, + 2644,2648,2652, 0, 0, 0, 0, 0, 32,2656,2660, 0, 0, 0, 0, 0, + 2664,2668,2672, 60, 60, 60,2676, 0,2680, 0, 0, 0, 0, 0, 0, 0, + 672, 672,2684,2688,2692, 0, 0, 0, 0,2696,2700, 0, 460, 460, 460,2704, + 0, 0, 0, 0, 0, 676, 676,2708, 0, 0, 0, 0, 0, 680, 680,2712, + 0, 0, 0, 0, 684,2716, 684,2720, 0, 0, 0, 0, 0, 0,2724,2728, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,2732,2736, 0, 0, + 304, 304, 304, 304,2740,2744, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, + 12, 12, 12,2748, 0, 0, 0, 0, 152, 12, 12, 184, 0, 0, 0, 0, + 2752, 36,2756,2760,2764,2768,2772,2776,2780, 688,2784, 688, 0, 0, 0,2788, + 12, 12, 156, 12, 12, 12, 12, 12, 12, 224, 528, 152, 152, 152, 12, 456, + 12, 12, 184, 0, 0, 0,2792, 12,2796, 12, 12, 156, 300, 348, 456, 0, + 12, 12, 12, 12, 12,2800, 192, 192, 12, 12, 12, 12, 12, 176, 156, 452, + 156, 12, 12, 12, 464, 176, 12, 12, 464, 12, 184, 156, 348, 300, 0, 0, + 12, 12, 12, 12, 12, 464, 184, 192,2804, 12, 12, 12,2808,2812,2816, 300, + 12, 556, 12, 12, 12, 12, 12, 352, 4, 4, 4, 4, 4, 4, 0, 0, + 4, 188, 4, 4, 4, 4, 4, 4, 4, 4, 188, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4,2820, 4, 4, 4, 4, 4, 4, 188, 0, 0, + 4, 188, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4,2824, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 552,2828, 0, 12, 12, 12, 12, 12, 12, + 0, 0, 0, 0, 4, 4, 4, 4, 8, 8, 8, 8, 12, 12, 12, 12, + 16, 16, 16, 16, 20, 20, 20, 20, 36, 36, 36, 36, 32, 32, 32, 32, + 24, 24, 24, 24, 28, 28, 28, 28, 40, 40, 40, 40, 48, 48, 48, 48, + 44, 44, 44, 44, 56, 56, 56, 56, 52, 52, 52, 52, 60, 60, 60, 60, + 64, 64, 64, 64, 76, 76, 76, 76, 68, 68, 68, 68, 80, 80, 80, 80, + 84, 84, 84, 84, 88, 88, 88, 88, 72, 72, 72, 72, 96, 96, 96, 96, + 100, 100, 100, 100, 92, 92, 92, 92, 104, 104, 104, 104, 116, 116, 116, 116, + 120, 120, 120, 120, 124, 124, 124, 124, 108, 108, 108, 108, 132, 132, 132, 132, + 112, 112, 112, 112, 136, 136, 136, 136, 128, 128, 128, 128, 148, 148, 148, 148, + 144, 144, 144, 144, 152, 152, 152, 152, 452, 12, 12, 12, 12, 12, 12, 0, + 180, 180, 180, 180, 176, 176, 176, 176, 184, 184, 184, 184, 140, 140, 140, 140, + 12, 12, 264, 0, 72, 232, 72, 232, 12, 12, 12, 264, 4, 4, 4, 600, + 12, 12, 12, 364, 240, 240, 240, 240, 168, 168, 168, 168, 188, 188, 188, 188, + 248, 248, 248, 248, 252, 252, 252, 252, 160, 160, 160, 160, 204, 204, 204, 204, + 12, 0, 0, 0, 764, 24, 24, 24, 24, 24, 628, 12, 164, 164, 164, 164, + 236, 236, 236, 236, 156, 156, 156, 156, 292, 292, 292, 292, 300, 300, 300, 300, + 268, 268, 268, 268, 208, 208, 208, 208, 324, 324, 324, 324, 192, 192, 192, 192, + 312, 312, 312, 312, 344, 344, 344, 344, 244, 244, 244, 244, 196, 196, 196, 196, + 276, 276, 276, 276, 316, 316, 316, 316, 212, 212, 212, 212, 12, 12, 364, 0, + 216, 216, 216, 216, 220, 220, 220, 220, 256, 256, 256, 256, 476, 476, 476, 476, + 396, 396, 396, 396, 172, 172, 172, 172, 228, 228, 228, 228, 260, 260, 260, 260, + 408, 408, 408, 408, 320, 320, 320, 320, 480, 480, 480, 480, 264, 0, 0, 0, + 12, 12, 296, 0, 412, 412, 412, 412, 8, 8, 8, 812, 484, 484, 484, 484, + 416, 416, 416, 416, 272, 272, 272, 272, 304, 304, 304, 304, 488, 488, 488, 488, + 496, 496, 496, 496, 308, 308, 308, 308, 456, 456, 456, 456, 460, 460, 460, 460, + 420, 420, 420, 420, 368, 368, 368, 368, 328, 328, 328, 328, 372, 372, 372, 372, + 348, 348, 348, 348, 352, 352, 352, 352, 380, 380, 380, 380, 432, 432, 432, 432, + 200, 200, 200, 200, 280, 280, 280, 280, 284, 284, 284, 284, 436, 436, 436, 436, + 440, 440, 440, 440, 364, 0, 0, 0, 12, 264, 0, 0, 444, 444, 444, 444, + 12, 12, 0, 0, 12, 12, 768, 12, 24, 628, 24, 24, 400, 400, 400, 400, + 112, 112, 892, 112, 112, 112, 112,1048, 124,1052, 0,1056, 72, 72, 684, 636, + 684, 636, 72, 72, 136, 136, 900, 0, 340, 340, 340, 0, 156, 156, 904, 0, + 52, 52, 52,1072, 68, 688, 68, 688, 68, 772, 68, 68, 12, 648, 12, 12, + 12, 12, 12, 296, 24, 24, 24,1092, 916, 92, 92, 92, 520, 520, 520, 520, + 524, 524, 524, 524, 572, 572, 572, 572, 4, 4, 600, 0, 296, 12, 12, 12, + 108, 108, 108,1132, 576, 576, 576, 576, 536, 536, 536, 536, 492, 492, 492, 492, + 540, 540, 540, 540, 500, 500, 924, 500, 528, 528, 528, 528, 604, 604, 604, 604, + 608, 608, 608, 608, 464, 464,1144, 0, 612, 612, 612, 612, 616, 616, 616, 616, + 532, 532, 532, 532, 504, 504, 504, 504, 544, 544, 544, 544, 548, 548, 548, 548, + 552, 552, 552, 552, 588, 588, 588, 588, 376, 376, 376, 376, 352, 352,1188, 0, + 424, 424, 424, 424, 384, 384,1200, 384, 384, 384, 384, 384, 556, 556, 556, 556, + 388, 388, 388, 388, 392, 392, 392, 392, 472, 472, 472, 472, 512, 512, 512, 512, + 356, 356, 356, 356, 560, 560, 560, 560, 564, 564, 564, 564, 516, 516, 516, 516, + 28, 28, 28, 0, 24, 24, 840, 12, 24, 840,1264, 12, 68,1268, 844,1272, + 0,1276, 848, 772,1280, 68, 68, 68,1284, 144, 144, 144, 60,1288, 60, 60, + 852, 220, 220, 220, 220, 952, 852, 220, 220, 220, 952, 852, 956, 164, 164, 164, + 164, 164, 0, 0, 164, 164, 960,1292, 164,1296, 0, 0, 28, 964, 28, 968, + 28, 28, 972, 972, 968, 28,1300, 52, 52,1304, 28, 28,1308, 28, 28, 28, + 28, 28, 28, 964, 256, 256, 256,1312, 256, 256, 976,1316,1320, 0, 0, 0, + 396, 396,1324,1328, 400, 400, 400,1332, 400, 400, 400,1336, 632, 632, 632, 632, + 632, 632, 632,1340, 256, 256, 976, 0, 980, 984, 28, 28,1344, 28, 28, 28, + 1348,1352, 120, 120, 120,1356, 120, 120, 332,1360, 332, 776, 776, 332, 332, 332, + 332, 332,1364, 332,1368, 988,1372, 332, 332, 776, 776, 992, 0,1376, 0,1380, + 332, 988, 332, 332, 332, 332, 332, 992, 856, 856, 860, 996,1000, 568, 568, 568, + 568, 568, 864, 568, 864,1384,1004, 864, 860, 996,1000,1004,1388, 0, 856,1392, + 0,1396, 568, 568, 568, 860, 0, 0, 780, 780, 448, 784, 784, 448, 448, 448, + 448, 448,1008, 448,1008, 780, 868, 448, 448, 784, 784, 868,1400, 0, 0, 0, + 448,1404, 448, 448, 868, 0, 780, 448, 788, 788, 404, 792, 792, 404, 404, 404, + 404, 404,1012, 404,1012, 788,1016, 404, 404, 792, 792,1016, 0, 788, 0,1408, + 404,1412, 404, 404, 404, 404, 0, 0, 680,1416, 796, 680, 872, 800,1420, 872, + 876,1020, 796, 680, 284, 284, 800, 680, 796, 680, 872, 800,1020, 876, 0, 0, + 0, 680, 284, 284, 284, 284, 796, 0, 288, 288, 288, 728, 728, 288, 288, 288, + 288, 288, 728, 288, 288, 288, 880, 288, 288, 728, 728, 880, 0,1424,1428, 880, + 288,1432, 288, 288, 0,1436, 288, 288, 360, 360, 360, 732, 732, 360, 360, 360, + 360, 360, 732, 360, 360,1024,1028, 360, 360, 732, 732,1028, 0,1440, 0,1444, + 360,1448, 360, 360,1024, 0, 0, 0, 172, 172, 172, 804, 804, 172, 172, 172, + 172, 804, 804, 172, 0, 172, 172, 172, 172,1452, 172, 172, 884, 884, 224, 224, + 224,1032, 888, 224, 224, 224, 224, 224,1456, 224, 224,1460, 224,1032,1464,1468, + 224,1472, 224, 224, 0, 888, 224, 224, 888,1036, 0, 0,1476, 228, 228, 228, + 228, 228,1480, 736, 228, 228, 228, 0,1484,1488,1040, 336, 336, 336, 336, 336, + 336,1492, 336, 336, 336, 336, 336,1044, 336,1496, 336,1040, 336, 336,1044, 336, + 112, 112, 112,1500, 892, 112, 112, 112, 112,1504,1508, 0, 124, 124,1512, 124, + 72, 232, 684, 636, 684, 636, 72, 232, 72, 232, 72, 72, 72, 72, 232, 808, + 72, 72, 72,1516, 72, 72, 636, 0, 116,1060, 116,1060, 640, 640, 640, 640, + 640, 640, 640,1520, 236, 236,1524,1528, 236, 236,1532, 0, 740, 740, 740, 740, + 740,1536, 0,1540, 744, 744, 744, 744, 744,1544, 0, 0, 748, 748, 748, 748, + 748, 0, 0, 0, 896, 896, 896,1064,1064, 0, 0, 0, 136, 136, 136, 900, + 1548,1552, 128, 128, 128, 128,1556, 0, 128, 128,1068, 0, 128, 128,1560, 0, + 40,1564, 0, 0, 340, 340, 340, 340, 340, 340, 340,1568,1572, 340, 340, 340, + 596, 596, 596, 596, 596, 596, 596,1576, 596,1580, 0, 0, 260, 260, 260, 0, + 260, 260,1584, 0, 260, 260,1588,1592, 644, 644, 644, 644, 644, 644, 644,1596, + 156, 156, 156,1600, 156, 156, 156,1604, 156, 156, 156, 904, 52, 52, 52, 0, + 148, 148, 148,1608, 408, 0, 0, 408, 320, 320,1612, 320, 320, 320,1616,1620, + 60, 60,1624, 0, 124, 124,1628,1632, 292, 292, 0, 0,1076, 52, 52, 52, + 1636, 52, 908,1640, 12, 908,1644, 0, 24,1080,1648, 24, 24, 24, 24,1652, + 1656,1080,1660, 24, 24, 24,1664, 24, 24, 24, 24,1668, 68, 68,1084,1084, + 68, 68, 68, 688, 68, 844, 68,1672, 844, 772, 68, 848, 12, 12, 12, 912, + 1676, 12, 12,1088,1680, 0, 0, 0, 12,1684,1096, 12, 768, 12, 12, 12, + 12, 12, 12, 768, 24, 24, 840, 0, 12, 692, 12, 12, 144, 0,1688, 144, + 412, 412, 0,1100,1692, 0, 0,1100, 72, 232, 0, 0, 4, 4,1696, 4, + 4, 0, 0, 0, 4, 600, 0, 0, 12,1700, 12, 12,1704, 4,1708,1712, + 12, 12, 4, 12,1716, 80, 80, 80, 80,1104,1720,1724, 92, 92,1108, 916, + 0,1728, 300, 300,1732, 8, 8, 8, 12, 264, 0, 736, 8, 8, 8,1736, + 92, 92, 92,1108, 92, 92, 12, 12, 36, 36, 36,1740, 36,1744, 0, 0, + 88, 88, 88, 0, 48, 48, 0, 0,1096, 24, 24, 24, 24, 24,1088, 24, + 1112, 24, 24, 24, 520, 520, 520,1748, 416, 416, 0, 0, 268,1116, 0,1752, + 268, 268,1116, 0, 524, 524, 524,1756, 572, 0, 0,1760, 8, 8, 8,1120, + 208, 208, 208,1764, 208, 208,1768,1772, 100, 100, 100,1776, 272,1780, 0, 0, + 272, 272, 272,1124, 272, 272,1124, 272,1784, 0, 0, 0, 0, 0,1788, 324, + 304,1792, 0, 0, 808, 232, 808, 232, 808, 232, 0, 0, 24, 24, 628, 24, + 24,1796,1800, 0, 304, 304, 304,1128, 304, 304,1128, 0, 8, 0, 0, 0, + 8, 812,1804, 8, 8, 8, 8, 0, 24, 816, 0, 0,1808, 220, 0, 956, + 164, 960, 164,1812,1816,1820, 164, 164, 28, 28, 28,1824, 52, 52, 52,1828, + 12, 296, 12, 0, 28,1832, 28, 28, 28, 28, 28,1836, 12,1840, 92, 92, + 92, 92, 92,1844, 820, 8, 820, 8, 820, 8, 820,1120, 12, 296, 12, 296, + 0, 0, 452, 264, 108, 108, 108,1848, 108, 920, 108, 108, 108, 108, 920,1852, + 108, 108, 920, 0, 296, 736, 12, 12, 12, 736, 12, 12, 68, 68, 68, 848, + 1856, 0, 0, 0, 12, 12, 12,1860, 652, 652, 652, 652, 652, 652, 652,1864, + 1868, 0, 0, 0, 908, 12, 12, 12, 576, 0, 0,1872, 696, 696, 696, 696, + 696, 696,1876, 0, 536, 536,1880, 0, 656, 656, 656, 656, 656, 656, 656,1884, + 492, 0, 492, 492, 492,1888, 0, 0, 580, 580, 580, 580, 580, 580, 580,1136, + 580, 580,1136, 0, 308, 0, 308, 308, 308, 308, 308, 0, 540, 540, 0, 0, + 456, 0, 0,1892, 924, 824, 500, 500, 824, 500, 500, 500, 824, 500, 824,1896, + 460, 0, 0, 0, 84,1900, 0, 0, 84,1904, 0, 0, 84, 84, 0, 0, + 24,1908, 24, 24,1912, 24, 816, 0, 528,1916,1920, 528, 528,1924,1928,1932, + 660, 660, 660, 660, 660,1936, 660, 660, 584, 584, 584, 584, 584, 584, 584,1940, + 0,1944, 584, 584, 752, 752, 752, 752,1948,1952,1956, 752, 664, 664, 664, 664, + 664, 664, 664,1960, 700, 700, 700, 700, 700, 700,1964,1968, 704, 704, 704, 704, + 704, 704,1972, 0, 192, 192, 0, 192,1976, 192, 192, 192, 464,1980, 0, 464, + 464,1140,1140, 464, 464, 464, 464, 464, 464,1984,1988,1992, 532,1148,1996, 532, + 532,1148, 0, 0, 420,2000,2004, 420, 668, 668, 668, 668, 668,2008, 668, 668, + 708, 708, 708, 708,2012, 0, 708, 708, 756, 756, 756, 756,2016, 0,1152,2020, + 0, 0,1152, 756, 312, 312,2024, 0,1156, 0, 0, 0,1156, 0,2028, 180, + 504, 504, 0, 0, 504, 504,2032, 0, 368,1160,2036, 368, 368,1160, 0,2040, + 28, 28, 28, 828, 544, 544,2044,1164,1164, 0, 0, 0,1168, 28, 0, 0, + 28, 28,2048, 0, 0, 0,1168, 28, 548, 548, 0, 0, 552, 552,2052, 0, + 712, 712, 712, 712, 712, 712,2056, 0, 672, 672, 672, 672, 672, 672, 672, 0, + 760, 760, 760, 760, 760,2060, 0, 0, 168, 168, 168,1172,2064, 168, 168, 168, + 168,1172, 0,2068,2072, 0, 0,2076, 620, 620, 620, 620, 620, 620,2080, 0, + 620, 620,2084, 0, 328,2088, 328, 328, 328, 328, 0, 0, 588,2092, 0, 0, + 884, 224, 224, 224, 224,1036, 0, 0,2096, 372, 372, 372,2100, 0, 0, 0, + 716,2104,2108,1176, 716, 716, 716,1176, 716, 716,2112, 0, 348, 348,2116, 0, + 348, 348,2120, 0, 468, 928, 468, 832, 832, 468, 468, 468, 468, 468,1180, 468, + 1180, 928,2124, 468, 468, 832, 832,2128, 932,2132, 0, 928, 468,2136, 468, 932, + 468, 932, 0, 0, 376, 376, 936,2140, 376, 936, 376, 376,2144,2148,2152, 376, + 376, 936,2156, 0,2160, 0, 0, 0, 188, 188, 188,2164,2168, 0, 0, 0, + 244, 244, 0, 0, 244, 244,2172, 0, 196,1184, 196, 196, 196, 196, 196,1184, + 276,2176, 0, 0, 276, 276,2180, 0, 128, 128, 128,1068, 100, 0, 0, 0, + 424, 424,1192,2184, 424, 424, 424, 0, 424,1192, 0, 0, 380, 380, 380, 0, + 2188, 0, 0,2192, 428,1196,2196, 428, 428,2200, 428, 428, 428, 428, 428, 428, + 428,2204,2208, 428, 428,1196, 0, 0, 428, 428,2212, 0, 384,2216, 0, 0, + 316, 316, 0, 0,2220, 0, 0, 0, 432, 432,2224, 0, 120, 120,2228, 0, + 176, 176, 0, 0,1204, 0, 0, 0, 556, 556,1204, 0, 200, 200,2232, 200, + 200,2236, 200, 200, 200,2240, 0, 0, 200, 200, 200,2244,2248, 388, 388, 388, + 388, 388,2252, 388, 388,2256, 0, 0, 392,1208,1212, 392, 392,1208,2260,1212, + 392, 392, 0, 0, 392, 392,2264, 0, 508,1216,2268, 508, 508, 508, 508, 508, + 508, 508, 508,2272,1216, 508,2276, 0, 508, 508,2280, 0, 472, 472, 472, 0, + 472, 472,2284, 0, 720, 720, 720, 720, 720, 720,2288, 0,2292, 280, 280, 280, + 280, 280,1220,2296, 280, 280,1220, 0,2300, 0, 0, 0, 800, 0, 0, 876, + 32, 32,2304, 0, 32, 32, 32,2308, 32,2312, 0, 0, 32, 0, 0, 0, + 2316, 0, 0, 0, 20,2320, 0, 0, 20, 20,2324, 0, 56,2328, 0, 0, + 436, 436,2332, 0, 48, 48,2336, 0, 592, 592, 592, 592, 592, 592, 592,2340, + 592, 592,2344,2348, 212, 212, 212,2352, 212, 212,2356, 0, 624, 624, 624, 624, + 624, 624, 624,1224, 624,1224, 0, 0, 160,2360, 0, 0, 160, 160,1228, 160, + 1228, 160, 160, 160, 160, 160, 0,2364, 440, 440,2368, 0, 204, 204,2372, 0, + 512, 512,2376, 512, 512, 0, 0, 0, 132, 132,2380,1232, 132, 132, 0,1232, + 2384,2388, 0, 0, 4,1236, 0, 0, 64,2392, 0, 0, 0, 0, 0,2396, + 16, 16, 16,1240,1240, 0, 0, 0, 92,2400, 92,2404,2408, 80, 80, 80, + 2412, 0, 0, 0,2416, 0, 0, 0,1104,2420, 0, 0, 0, 92, 0, 0, + 76, 76, 76, 0, 140, 140,2424, 0, 140, 140, 140,1244, 140, 140,1244, 0, + 140, 140,2428, 140, 12, 0, 692, 12, 52,2432, 0, 0, 12, 296, 452, 12, + 12,1248, 912, 12, 12, 12,1248, 52,1076,2436, 52, 12, 12, 12,2440, 912, + 68, 688, 0, 0, 12, 296, 0, 0, 12, 12, 12, 648,2444,2448, 452, 648, + 12, 12, 940, 452, 12, 452, 12, 12, 12, 940, 296, 452, 12, 648, 12, 648, + 12, 12, 940, 296, 12,2452, 692, 12, 648, 12, 12, 12, 12, 264, 12, 12, + 12, 12, 12, 692, 44, 44, 44, 0, 0, 0,2456, 44,2460, 44, 44, 44, + 24, 24, 24, 816, 0,1112, 816, 0, 152,1252, 152, 152, 152, 152,2464, 152, + 2468,2472,1252, 0, 60, 60, 60,2476, 0, 0, 0,2480, 356, 356, 356,2484, + 356, 356, 356,1256, 356, 356,1256,2488, 676, 676, 676, 676, 676, 676, 676,2492, + 444, 444,2496,2500, 560, 560,2504, 0, 564, 564,2508,2512, 516, 516, 516,2516, + 516,2520, 0,2524, 72, 232, 72,2528, 72, 72, 72, 232, 104,2532, 104, 104, + 104,2536, 0, 0, 216, 216, 216, 0, 216, 216,2540,2544, 12, 364, 0, 0, + 28, 724, 28, 28, 944, 948, 724, 28, 828, 28, 836, 0,2548, 984, 836, 724, + 944, 948, 836, 836, 944, 948, 828, 28, 828, 28, 724,2552, 28, 28,1260, 28, + 724, 724,1260, 28, 980, 0, 0, 0, 0, 692, 12, 12,2556, 0, 0, 0, + 12, 12, 364, 12, 12, 12, 296, 692, 12, 296, 364, 452, 12, 12, 12,2560, + 12, 12, 296, 736,2564, 0, 0, 0, 4, 4,1236, 0,2568, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 939, 940, 941, + 942, 946, 948, 0, 962, 969, 970, 971, 976,1001,1002,1003,1008, 0,1033,1040, + 1041,1042,1043,1047, 0, 0,1080,1081,1082,1086,1110, 0, 0,1124,1125,1126, + 1127,1131,1133, 0,1147,1154,1155,1156,1161,1187,1188,1189,1193, 0,1219,1226, + 1227,1228,1229,1233, 0, 0,1267,1268,1269,1273,1298, 0,1303, 943,1128, 944, + 1129, 954,1139, 958,1143, 959,1144, 960,1145, 961,1146, 964,1149, 0, 0, 973, + 1158, 974,1159, 975,1160, 983,1168, 978,1163, 988,1173, 990,1175, 991,1176, 993, + 1178, 994,1179, 0, 0,1004,1190,1005,1191,1006,1192,1014,1199,1007, 0, 0, + 0,1016,1201,1020,1206, 0,1022,1208,1025,1211,1023,1209, 0, 0, 0, 0, + 1032,1218,1037,1223,1035,1221, 0, 0, 0,1044,1230,1045,1231,1049,1235, 0, + 0,1058,1244,1064,1250,1060,1246,1066,1252,1067,1253,1072,1258,1069,1255,1077, + 1264,1074,1261, 0, 0,1083,1270,1084,1271,1085,1272,1088,1275,1089,1276,1096, + 1283,1103,1290,1111,1299,1115,1118,1307,1120,1309,1121,1310, 0,1053,1239, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1093,1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1446,1458,1468,1476,1480,1486,1517, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 949,1134,1010,1195,1050,1236, + 1090,1277,1341,1368,1340,1367,1342,1369,1339,1366, 0,1320,1347,1418,1419,1323, + 1350, 0, 0, 992,1177,1018,1204,1055,1241,1416,1417,1415,1424,1202, 0, 0, + 0, 987,1172, 0, 0,1031,1217,1321,1348,1322,1349,1338,1365, 950,1135, 951, + 1136, 979,1164, 980,1165,1011,1196,1012,1197,1051,1237,1052,1238,1061,1247,1062, + 1248,1091,1278,1092,1279,1071,1257,1076,1263, 0, 0, 997,1182, 0, 0, 0, + 0, 0, 0, 945,1130, 982,1167,1337,1364,1335,1362,1046,1232,1422,1423,1113, + 1301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, + 10,1425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0,1314,1427, 5,1434,1438,1443, 0,1450, 0,1455,1461,1514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1489,1503,1494,1500,1508, 0, 0, 0, 0,1520,1521, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,1526,1528, 0,1525, 0, 0, 0,1522, - 0, 0, 0, 0,1536,1532,1539, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,1534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,1556, 0, 0, 0, 0, 0, 0,1548,1550, 0,1547, 0, 0, 0,1567, - 0, 0, 0, 0,1558,1554,1561, 0, 0, 0, 0, 0, 0, 0,1568,1569, - 0, 0, 0, 0, 0, 0, 0, 0, 0,1529,1551, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,1523,1545,1524,1546, 0, 0,1527,1549, - 0, 0,1570,1571,1530,1552,1531,1553, 0, 0,1533,1555,1535,1557,1537,1559, - 0, 0,1572,1573,1544,1566,1538,1560,1540,1562,1541,1563,1542,1564, 0, 0, - 1543,1565, 0, 0, 0, 0, 0, 0, 0, 0,1606,1607,1609,1608,1610, 0, - 0, 0, 0, 0, 0, 0, 0, 0,1613, 0,1611, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1612, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1446,1458,1468,1476,1480,1486,1517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,1620, 0, 0, 0, 0, 0, 0, 0,1623, 0, 0,1624, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1489,1503,1494,1500,1508, 0, 0, 0, 0, + 1520,1521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1526,1528, 0, + 1525, 0, 0, 0,1522, 0, 0, 0, 0,1536,1532,1539, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,1534, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,1556, 0, 0, 0, 0, 0, 0,1548,1550, 0, + 1547, 0, 0, 0,1567, 0, 0, 0, 0,1558,1554,1561, 0, 0, 0, 0, + 0, 0, 0,1568,1569, 0, 0, 0, 0, 0, 0, 0, 0, 0,1529,1551, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1523,1545,1524, + 1546, 0, 0,1527,1549, 0, 0,1570,1571,1530,1552,1531,1553, 0, 0,1533, + 1555,1535,1557,1537,1559, 0, 0,1572,1573,1544,1566,1538,1560,1540,1562,1541, + 1563,1542,1564, 0, 0,1543,1565, 0, 0, 0, 0, 0, 0, 0, 0,1606, + 1607,1609,1608,1610, 0, 0, 0, 0, 0, 0, 0, 0, 0,1613, 0,1611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1614,1615,1616,1617,1618,1619,1621,1622, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,1628,1629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,1625,1626, 0,1627, 0, 0, 0,1634, 0, 0,1635, 0, + 1612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,1620, 0, 0, 0, 0, 0, 0, 0,1623, 0, + 0,1624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,1614,1615,1616,1617,1618,1619,1621,1622, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,1628,1629, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,1625,1626, 0,1627, 0, 0, 0, + 1634, 0, 0,1635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,1630,1631,1632, 0, 0,1633, 0, 0, 0, 0, + 0, 0, 0, 0, 0,1639, 0, 0,1638,1640, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,1636,1637, 0, 0, 0, 0, 0, + 0,1641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1642,1644,1643, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,1645, 0, 0, 0, 0, 0, 0, 0,1646, 0, 0, + 0, 0, 0, 0,1648,1649, 0,1647,1650, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1651,1653,1652, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1654, 0,1655,1657,1656, 0, 0, 0, 0, + 1659, 0, 0, 0, 0, 0, 0, 0, 0, 0,1660, 0, 0, 0, 0,1661, + 0, 0, 0, 0,1662, 0, 0, 0, 0,1663, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,1658, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1664, 0,1665,1673, 0,1674, 0, 0, 0, 0, 0, 0, 0, 0,1666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,1630,1631,1632, 0, 0,1633, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1639, 0, 0,1638,1640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,1636,1637, 0, 0, 0, 0, 0, 0,1641, 0, 0, 0, + 1668, 0, 0, 0, 0, 0, 0, 0, 0, 0,1669, 0, 0, 0, 0,1670, + 0, 0, 0, 0,1671, 0, 0, 0, 0,1672, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,1667, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,1675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,1676, 0,1677, 0,1678, 0,1679, 0,1680, 0, 0, 0,1681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1642,1644,1643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1645, 0, 0, 0, 0, 0, 0, 0,1646, 0, 0, 0, 0, 0, 0,1648, - 1649, 0,1647,1650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1651,1653,1652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1654, 0,1655,1657,1656, 0, 0, 0, 0,1659, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1660, 0, 0, 0, 0,1661, 0, 0, 0, 0,1662, - 0, 0, 0, 0,1663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,1658, 0, 0, 0, 0, 0, 0, 0, 0, 0,1664, 0,1665,1673, 0, - 1674, 0, 0, 0, 0, 0, 0, 0, 0,1666, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1668, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1669, 0, 0, 0, 0,1670, 0, 0, 0, 0,1671, - 0, 0, 0, 0,1672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,1667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1675, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1676, 0, - 1677, 0,1678, 0,1679, 0,1680, 0, 0, 0,1681, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,1682, 0,1683, 0, 0,1684,1685, 0, + 1686, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 953,1138, 955, + 1140, 956,1141, 957,1142,1324,1351, 963,1148, 965,1150, 968,1153, 966,1151, 967, + 1152,1378,1380,1379,1381, 984,1169, 985,1170,1420,1421, 986,1171, 989,1174, 995, + 1180, 998,1183, 996,1181, 999,1184,1000,1185,1015,1200,1329,1356,1017,1203,1019, + 1205,1021,1207,1024,1210,1687,1688,1027,1213,1026,1212,1028,1214,1029,1215,1030, + 1216,1034,1220,1036,1222,1039,1225,1038,1224,1334,1361,1336,1363,1382,1384,1383, + 1385,1056,1242,1057,1243,1059,1245,1063,1249,1689,1690,1065,1251,1068,1254,1070, + 1256,1386,1387,1388,1389,1691,1692,1073,1259,1075,1262,1079,1266,1078,1265,1095, + 1282,1098,1285,1097,1284,1390,1391,1392,1393,1099,1286,1100,1287,1101,1288,1102, + 1289,1105,1292,1104,1291,1106,1294,1107,1295,1108,1296,1114,1302,1119,1308,1122, + 1311,1123,1312,1186,1260,1293,1305, 0,1394, 0, 0, 0, 0, 952,1137, 947, + 1132,1317,1344,1316,1343,1319,1346,1318,1345,1693,1695,1371,1375,1370,1374,1373, + 1377,1372,1376,1694,1696, 981,1166, 977,1162, 972,1157,1326,1353,1325,1352,1328, + 1355,1327,1354,1697,1698,1009,1194,1013,1198,1054,1240,1048,1234,1331,1358,1330, + 1357,1333,1360,1332,1359,1699,1700,1396,1401,1395,1400,1398,1403,1397,1402,1399, + 1404,1094,1281,1087,1274,1406,1411,1405,1410,1408,1413,1407,1412,1409,1414,1109, + 1297,1117,1306,1116,1304,1112,1300, 0, 0, 0, 0, 0, 0,1471,1472,1701, + 1705,1702,1706,1703,1707,1430,1431,1715,1719,1716,1720,1717,1721,1477,1478,1729, + 1731,1730,1732, 0, 0,1435,1436,1733,1735,1734,1736, 0, 0,1481,1482,1737, + 1741,1738,1742,1739,1743,1439,1440,1751,1755,1752,1756,1753,1757,1490,1491,1765, + 1768,1766,1769,1767,1770,1447,1448,1771,1774,1772,1775,1773,1776,1495,1496,1777, + 1779,1778,1780, 0, 0,1451,1452,1781,1783,1782,1784, 0, 0,1504,1505,1785, + 1788,1786,1789,1787,1790, 0,1459, 0,1791, 0,1792, 0,1793,1509,1510,1794, + 1798,1795,1799,1796,1800,1462,1463,1808,1812,1809,1813,1810,1814,1467, 21,1475, + 22,1479, 23,1485, 24,1493, 27,1499, 28,1507, 29, 0, 0,1704,1708,1709, + 1710,1711,1712,1713,1714,1718,1722,1723,1724,1725,1726,1727,1728,1740,1744,1745, + 1746,1747,1748,1749,1750,1754,1758,1759,1760,1761,1762,1763,1764,1797,1801,1802, + 1803,1804,1805,1806,1807,1811,1815,1816,1817,1818,1819,1820,1821,1470,1469,1822, + 1474,1465, 0,1473,1825,1429,1428,1426, 12,1432, 0, 26, 0, 0,1315,1823, + 1484,1466, 0,1483,1829,1433, 13,1437, 14,1441,1826,1827,1828,1488,1487,1513, + 19, 0, 0,1492,1515,1445,1444,1442, 15, 0,1831,1832,1833,1502,1501,1516, + 25,1497,1498,1506,1518,1457,1456,1454, 17,1453,1313, 11, 3, 0, 0,1824, + 1512,1519, 0,1511,1830,1449, 16,1460, 18,1464, 4, 0, 0, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,1682, 0,1683, 0, 0,1684,1685, 0,1686, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 953,1138, 955,1140, 956,1141, 957,1142, - 1324,1351, 963,1148, 965,1150, 968,1153, 966,1151, 967,1152,1378,1380,1379,1381, - 984,1169, 985,1170,1420,1421, 986,1171, 989,1174, 995,1180, 998,1183, 996,1181, - 999,1184,1000,1185,1015,1200,1329,1356,1017,1203,1019,1205,1021,1207,1024,1210, - 1687,1688,1027,1213,1026,1212,1028,1214,1029,1215,1030,1216,1034,1220,1036,1222, - 1039,1225,1038,1224,1334,1361,1336,1363,1382,1384,1383,1385,1056,1242,1057,1243, - 1059,1245,1063,1249,1689,1690,1065,1251,1068,1254,1070,1256,1386,1387,1388,1389, - 1691,1692,1073,1259,1075,1262,1079,1266,1078,1265,1095,1282,1098,1285,1097,1284, - 1390,1391,1392,1393,1099,1286,1100,1287,1101,1288,1102,1289,1105,1292,1104,1291, - 1106,1294,1107,1295,1108,1296,1114,1302,1119,1308,1122,1311,1123,1312,1186,1260, - 1293,1305, 0,1394, 0, 0, 0, 0, 952,1137, 947,1132,1317,1344,1316,1343, - 1319,1346,1318,1345,1693,1695,1371,1375,1370,1374,1373,1377,1372,1376,1694,1696, - 981,1166, 977,1162, 972,1157,1326,1353,1325,1352,1328,1355,1327,1354,1697,1698, - 1009,1194,1013,1198,1054,1240,1048,1234,1331,1358,1330,1357,1333,1360,1332,1359, - 1699,1700,1396,1401,1395,1400,1398,1403,1397,1402,1399,1404,1094,1281,1087,1274, - 1406,1411,1405,1410,1408,1413,1407,1412,1409,1414,1109,1297,1117,1306,1116,1304, - 1112,1300, 0, 0, 0, 0, 0, 0,1471,1472,1701,1705,1702,1706,1703,1707, - 1430,1431,1715,1719,1716,1720,1717,1721,1477,1478,1729,1731,1730,1732, 0, 0, - 1435,1436,1733,1735,1734,1736, 0, 0,1481,1482,1737,1741,1738,1742,1739,1743, - 1439,1440,1751,1755,1752,1756,1753,1757,1490,1491,1765,1768,1766,1769,1767,1770, - 1447,1448,1771,1774,1772,1775,1773,1776,1495,1496,1777,1779,1778,1780, 0, 0, - 1451,1452,1781,1783,1782,1784, 0, 0,1504,1505,1785,1788,1786,1789,1787,1790, - 0,1459, 0,1791, 0,1792, 0,1793,1509,1510,1794,1798,1795,1799,1796,1800, - 1462,1463,1808,1812,1809,1813,1810,1814,1467, 21,1475, 22,1479, 23,1485, 24, - 1493, 27,1499, 28,1507, 29, 0, 0,1704,1708,1709,1710,1711,1712,1713,1714, - 1718,1722,1723,1724,1725,1726,1727,1728,1740,1744,1745,1746,1747,1748,1749,1750, - 1754,1758,1759,1760,1761,1762,1763,1764,1797,1801,1802,1803,1804,1805,1806,1807, - 1811,1815,1816,1817,1818,1819,1820,1821,1470,1469,1822,1474,1465, 0,1473,1825, - 1429,1428,1426, 12,1432, 0, 26, 0, 0,1315,1823,1484,1466, 0,1483,1829, - 1433, 13,1437, 14,1441,1826,1827,1828,1488,1487,1513, 19, 0, 0,1492,1515, - 1445,1444,1442, 15, 0,1831,1832,1833,1502,1501,1516, 25,1497,1498,1506,1518, - 1457,1456,1454, 17,1453,1313, 11, 3, 0, 0,1824,1512,1519, 0,1511,1830, - 1449, 16,1460, 18,1464, 4, 0, 0, 30, 31, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1834,1835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1836, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1837,1839,1838, 0, 0, 0, 0,1840, 0, 0, 0, - 0,1841, 0, 0,1842, 0, 0, 0, 0, 0, 0, 0,1843, 0,1844, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,1845, 0, 0,1846, 0, 0,1847, - 0,1848, 0, 0, 0, 0, 0, 0, 937, 0,1850, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1849, 936, 938,1851,1852, 0, 0,1853,1854, 0, 0, - 1855,1856, 0, 0, 0, 0, 0, 0,1857,1858, 0, 0,1861,1862, 0, 0, - 1863,1864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,1867,1868,1869,1870,1859,1860,1865,1866, 0, 0, 0, 0, - 0, 0,1871,1872,1873,1874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,1875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,1877, 0,1878, 0,1879, 0,1880, 0,1881, 0,1882, 0, - 1883, 0,1884, 0,1885, 0,1886, 0,1887, 0,1888, 0, 0,1889, 0,1890, - 0,1891, 0, 0, 0, 0, 0, 0,1892,1893, 0,1894,1895, 0,1896,1897, - 0,1898,1899, 0,1900,1901, 0, 0, 0, 0, 0, 0,1876, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1902, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,1904, 0,1905, 0,1906, 0,1907, 0,1908, 0,1909, 0, - 1910, 0,1911, 0,1912, 0,1913, 0,1914, 0,1915, 0, 0,1916, 0,1917, - 0,1918, 0, 0, 0, 0, 0, 0,1919,1920, 0,1921,1922, 0,1923,1924, - 0,1925,1926, 0,1927,1928, 0, 0, 0, 0, 0, 0,1903, 0, 0,1929, - 1930,1931,1932, 0, 0, 0,1933, 0, 710, 385, 724, 715, 455, 103, 186, 825, - 825, 242, 751, 205, 241, 336, 524, 601, 663, 676, 688, 738, 411, 434, 474, 500, - 649, 746, 799, 108, 180, 416, 482, 662, 810, 275, 462, 658, 692, 344, 618, 679, - 293, 388, 440, 492, 740, 116, 146, 168, 368, 414, 481, 527, 606, 660, 665, 722, - 781, 803, 809, 538, 553, 588, 642, 758, 811, 701, 233, 299, 573, 612, 487, 540, - 714, 779, 232, 267, 412, 445, 457, 585, 594, 766, 167, 613, 149, 148, 560, 589, - 648, 768, 708, 345, 411, 704, 105, 259, 313, 496, 518, 174, 542, 120, 307, 101, - 430, 372, 584, 183, 228, 529, 650, 697, 424, 732, 428, 349, 632, 355, 517, 110, - 135, 147, 403, 580, 624, 700, 750, 170, 193, 245, 297, 374, 463, 543, 763, 801, - 812, 815, 162, 384, 420, 730, 287, 330, 337, 366, 459, 476, 509, 558, 591, 610, - 726, 652, 734, 759, 154, 163, 198, 473, 683, 697, 292, 311, 353, 423, 572, 494, - 113, 217, 259, 280, 314, 499, 506, 603, 608, 752, 778, 782, 788, 117, 557, 748, - 774, 320, 109, 126, 260, 265, 373, 411, 479, 523, 655, 737, 823, 380, 765, 161, - 395, 398, 438, 451, 502, 516, 537, 583, 791, 136, 340, 769, 122, 273, 446, 727, - 305, 322, 400, 496, 771, 155, 190, 269, 377, 391, 406, 432, 501, 519, 599, 684, - 687, 749, 776, 175, 452, 191, 480, 510, 659, 772, 805, 813, 397, 444, 619, 566, - 568, 575, 491, 471, 707, 111, 636, 156, 153, 288, 346, 578, 256, 435, 383, 729, - 680, 767, 694, 295, 128, 210, 0, 0, 227, 0, 379, 0, 0, 150, 493, 525, - 544, 551, 552, 556, 783, 576, 604, 0, 661, 0, 703, 0, 0, 735, 743, 0, - 0, 0, 793, 794, 795, 808, 741, 773, 118, 127, 130, 166, 169, 177, 207, 213, - 215, 226, 229, 268, 270, 317, 327, 329, 335, 369, 375, 381, 404, 441, 448, 458, - 477, 484, 503, 539, 545, 547, 546, 548, 549, 550, 554, 555, 561, 564, 569, 591, - 593, 595, 598, 607, 620, 625, 625, 651, 690, 695, 705, 706, 716, 717, 733, 735, - 777, 786, 790, 315, 869, 623, 0, 0, 102, 145, 134, 115, 129, 138, 165, 171, - 207, 202, 206, 212, 227, 231, 240, 243, 250, 254, 294, 296, 303, 308, 319, 325, - 321, 329, 326, 335, 341, 357, 360, 362, 370, 379, 388, 389, 393, 421, 424, 438, - 456, 454, 458, 465, 477, 535, 485, 490, 493, 507, 512, 514, 521, 522, 525, 526, - 528, 533, 532, 541, 565, 569, 574, 586, 591, 597, 607, 637, 647, 674, 691, 693, - 695, 698, 703, 699, 705, 704, 702, 706, 709, 717, 728, 736, 747, 754, 770, 777, - 783, 784, 786, 787, 790, 802, 825, 848, 847, 857, 55, 65, 66, 883, 892, 916, - 822, 824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1586, 0,1605, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1602,1603,1934,1935,1574,1575,1576,1577,1579,1580,1581,1583,1584, 0, - 1585,1587,1588,1589,1591, 0,1592, 0,1593,1594, 0,1595,1596, 0,1598,1599, - 1600,1601,1604,1582,1578,1590,1597, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,1936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1937, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1834,1835, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1836, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1837,1839,1838, 0, 0, 0, + 0,1840, 0, 0, 0, 0,1841, 0, 0,1842, 0, 0, 0, 0, 0, 0, + 0,1843, 0,1844, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1845, 0, + 0,1846, 0, 0,1847, 0,1848, 0, 0, 0, 0, 0, 0, 937, 0,1850, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1849, 936, 938,1851,1852, 0, + 0,1853,1854, 0, 0,1855,1856, 0, 0, 0, 0, 0, 0,1857,1858, 0, + 0,1861,1862, 0, 0,1863,1864, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,1867,1868,1869,1870,1859,1860,1865, + 1866, 0, 0, 0, 0, 0, 0,1871,1872,1873,1874, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,1875, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,1877, 0,1878, 0,1879, 0,1880, + 0,1881, 0,1882, 0,1883, 0,1884, 0,1885, 0,1886, 0,1887, 0,1888, + 0, 0,1889, 0,1890, 0,1891, 0, 0, 0, 0, 0, 0,1892,1893, 0, + 1894,1895, 0,1896,1897, 0,1898,1899, 0,1900,1901, 0, 0, 0, 0, 0, + 0,1876, 0, 0, 0, 0, 0, 0, 0, 0, 0,1902, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,1904, 0,1905, 0,1906, 0,1907, + 0,1908, 0,1909, 0,1910, 0,1911, 0,1912, 0,1913, 0,1914, 0,1915, + 0, 0,1916, 0,1917, 0,1918, 0, 0, 0, 0, 0, 0,1919,1920, 0, + 1921,1922, 0,1923,1924, 0,1925,1926, 0,1927,1928, 0, 0, 0, 0, 0, + 0,1903, 0, 0,1929,1930,1931,1932, 0, 0, 0,1933, 0, 710, 385, 724, + 715, 455, 103, 186, 825, 825, 242, 751, 205, 241, 336, 524, 601, 663, 676, 688, + 738, 411, 434, 474, 500, 649, 746, 799, 108, 180, 416, 482, 662, 810, 275, 462, + 658, 692, 344, 618, 679, 293, 388, 440, 492, 740, 116, 146, 168, 368, 414, 481, + 527, 606, 660, 665, 722, 781, 803, 809, 538, 553, 588, 642, 758, 811, 701, 233, + 299, 573, 612, 487, 540, 714, 779, 232, 267, 412, 445, 457, 585, 594, 766, 167, + 613, 149, 148, 560, 589, 648, 768, 708, 345, 411, 704, 105, 259, 313, 496, 518, + 174, 542, 120, 307, 101, 430, 372, 584, 183, 228, 529, 650, 697, 424, 732, 428, + 349, 632, 355, 517, 110, 135, 147, 403, 580, 624, 700, 750, 170, 193, 245, 297, + 374, 463, 543, 763, 801, 812, 815, 162, 384, 420, 730, 287, 330, 337, 366, 459, + 476, 509, 558, 591, 610, 726, 652, 734, 759, 154, 163, 198, 473, 683, 697, 292, + 311, 353, 423, 572, 494, 113, 217, 259, 280, 314, 499, 506, 603, 608, 752, 778, + 782, 788, 117, 557, 748, 774, 320, 109, 126, 260, 265, 373, 411, 479, 523, 655, + 737, 823, 380, 765, 161, 395, 398, 438, 451, 502, 516, 537, 583, 791, 136, 340, + 769, 122, 273, 446, 727, 305, 322, 400, 496, 771, 155, 190, 269, 377, 391, 406, + 432, 501, 519, 599, 684, 687, 749, 776, 175, 452, 191, 480, 510, 659, 772, 805, + 813, 397, 444, 619, 566, 568, 575, 491, 471, 707, 111, 636, 156, 153, 288, 346, + 578, 256, 435, 383, 729, 680, 767, 694, 295, 128, 210, 0, 0, 227, 0, 379, + 0, 0, 150, 493, 525, 544, 551, 552, 556, 783, 576, 604, 0, 661, 0, 703, + 0, 0, 735, 743, 0, 0, 0, 793, 794, 795, 808, 741, 773, 118, 127, 130, + 166, 169, 177, 207, 213, 215, 226, 229, 268, 270, 317, 327, 329, 335, 369, 375, + 381, 404, 441, 448, 458, 477, 484, 503, 539, 545, 547, 546, 548, 549, 550, 554, + 555, 561, 564, 569, 591, 593, 595, 598, 607, 620, 625, 625, 651, 690, 695, 705, + 706, 716, 717, 733, 735, 777, 786, 790, 315, 869, 623, 0, 0, 102, 145, 134, + 115, 129, 138, 165, 171, 207, 202, 206, 212, 227, 231, 240, 243, 250, 254, 294, + 296, 303, 308, 319, 325, 321, 329, 326, 335, 341, 357, 360, 362, 370, 379, 388, + 389, 393, 421, 424, 438, 456, 454, 458, 465, 477, 535, 485, 490, 493, 507, 512, + 514, 521, 522, 525, 526, 528, 533, 532, 541, 565, 569, 574, 586, 591, 597, 607, + 637, 647, 674, 691, 693, 695, 698, 703, 699, 705, 704, 702, 706, 709, 717, 728, + 736, 747, 754, 770, 777, 783, 784, 786, 787, 790, 802, 825, 848, 847, 857, 55, + 65, 66, 883, 892, 916, 822, 824, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1586, 0,1605, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1602,1603,1934,1935,1574,1575,1576,1577,1579, + 1580,1581,1583,1584, 0,1585,1587,1588,1589,1591, 0,1592, 0,1593,1594, 0, + 1595,1596, 0,1598,1599,1600,1601,1604,1582,1578,1590,1597, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,1936, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,1937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1938, 0,1939, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,1940, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1941,1942, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,1943,1944, 0, 0, 0, 0, 0, 0, + 1945, 0,1946, 0, 0, 0, 0, 0, 0, 0, 0,1947, 0, 0,1948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1938, 0,1939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,1940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1941,1942, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,1943,1944, 0, 0, 0, 0, 0, 0,1945, 0,1946, 0, 0, - 0, 0, 0, 0, 0, 0,1947, 0, 0,1948, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1950, 0,1949, - 1951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,1953,1952, 0,1954, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1955,1956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1957, 0, 0, 0, 0, 0, 0, 0, 0,1958,1961,1959,1965,1960,1962,1964, - 1963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1967,1966,1968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1969,1970,1971,1972,1973,1974,1975, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,1976,1977,1978,1980,1979,1981, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 106, 104, 107, 826, 114, 118, 119, 121, - 123, 124, 127, 125, 34, 830, 130, 131, 132, 137, 827, 35, 133, 139, 829, 142, - 143, 112, 144, 145, 924, 151, 152, 37, 157, 158, 159, 160, 38, 165, 166, 169, - 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 182, 182, 833, 468, 184, 185, - 834, 187, 188, 189, 196, 192, 194, 195, 197, 199, 200, 201, 203, 204, 204, 206, - 208, 209, 211, 218, 213, 219, 214, 216, 153, 234, 221, 222, 223, 220, 225, 224, - 230, 835, 235, 236, 237, 238, 239, 244, 836, 837, 247, 248, 249, 246, 251, 39, - 40, 253, 255, 255, 838, 257, 258, 259, 261, 839, 262, 263, 301, 264, 41, 266, - 270, 272, 271, 841, 274, 842, 277, 276, 278, 281, 282, 42, 283, 284, 285, 286, - 43, 843, 44, 289, 290, 291, 293, 934, 298, 845, 845, 621, 300, 300, 45, 852, - 894, 302, 304, 46, 306, 309, 310, 312, 316, 48, 47, 317, 846, 318, 323, 324, - 325, 324, 328, 329, 333, 331, 332, 334, 335, 336, 338, 339, 342, 343, 347, 351, - 849, 350, 348, 352, 354, 359, 850, 361, 358, 356, 49, 363, 365, 367, 364, 50, - 369, 371, 851, 376, 386, 378, 53, 381, 52, 51, 140, 141, 387, 382, 614, 78, - 388, 389, 390, 394, 392, 856, 54, 399, 396, 402, 404, 858, 405, 401, 407, 55, - 408, 409, 410, 413, 859, 415, 56, 417, 860, 418, 57, 419, 422, 424, 425, 861, - 840, 862, 426, 863, 429, 431, 427, 433, 437, 441, 438, 439, 442, 443, 864, 436, - 449, 450, 58, 454, 453, 865, 447, 460, 866, 867, 461, 466, 465, 464, 59, 467, - 470, 469, 472, 828, 475, 868, 478, 870, 483, 485, 486, 871, 488, 489, 872, 873, - 495, 497, 60, 498, 61, 61, 504, 505, 507, 508, 511, 62, 513, 874, 515, 875, - 518, 844, 520, 876, 877, 878, 63, 64, 528, 880, 879, 881, 882, 530, 531, 531, - 533, 66, 534, 67, 68, 884, 536, 538, 541, 69, 885, 549, 886, 887, 556, 559, - 70, 561, 562, 563, 888, 889, 889, 567, 71, 890, 570, 571, 72, 891, 577, 73, - 581, 579, 582, 893, 587, 74, 590, 592, 596, 75, 895, 896, 76, 897, 600, 898, - 602, 605, 607, 899, 900, 609, 901, 611, 853, 77, 615, 616, 79, 617, 252, 902, - 903, 854, 855, 621, 622, 731, 80, 627, 626, 628, 164, 629, 630, 631, 633, 904, - 632, 634, 639, 640, 635, 641, 646, 651, 638, 643, 644, 645, 905, 907, 906, 81, - 653, 654, 656, 911, 657, 908, 82, 83, 909, 910, 84, 664, 665, 666, 667, 669, - 668, 671, 670, 674, 672, 673, 675, 85, 677, 678, 86, 681, 682, 912, 685, 686, - 87, 689, 36, 913, 914, 88, 89, 696, 702, 709, 711, 915, 712, 713, 718, 719, - 917, 831, 721, 720, 723, 832, 725, 728, 918, 919, 739, 742, 744, 920, 745, 753, - 756, 757, 755, 760, 761, 921, 762, 90, 764, 922, 91, 775, 279, 780, 923, 925, - 92, 93, 785, 926, 94, 927, 787, 787, 789, 928, 792, 95, 796, 797, 798, 800, - 96, 929, 802, 804, 806, 97, 98, 807, 930, 99, 931, 932, 933, 814, 100, 816, - 817, 818, 819, 820, 821, 935, 0, 0, + 0, 0,1950, 0,1949,1951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,1953,1952, 0,1954, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1955,1956, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,1957, 0, 0, 0, 0, 0, 0, 0, 0,1958,1961, + 1959,1965,1960,1962,1964,1963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,1967,1966,1968, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1969,1970,1971,1972,1973, + 1974,1975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,1976,1977,1978,1980,1979,1981, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 104, 107, + 826, 114, 118, 119, 121, 123, 124, 127, 125, 34, 830, 130, 131, 132, 137, 827, + 35, 133, 139, 829, 142, 143, 112, 144, 145, 924, 151, 152, 37, 157, 158, 159, + 160, 38, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 182, + 182, 833, 468, 184, 185, 834, 187, 188, 189, 196, 192, 194, 195, 197, 199, 200, + 201, 203, 204, 204, 206, 208, 209, 211, 218, 213, 219, 214, 216, 153, 234, 221, + 222, 223, 220, 225, 224, 230, 835, 235, 236, 237, 238, 239, 244, 836, 837, 247, + 248, 249, 246, 251, 39, 40, 253, 255, 255, 838, 257, 258, 259, 261, 839, 262, + 263, 301, 264, 41, 266, 270, 272, 271, 841, 274, 842, 277, 276, 278, 281, 282, + 42, 283, 284, 285, 286, 43, 843, 44, 289, 290, 291, 293, 934, 298, 845, 845, + 621, 300, 300, 45, 852, 894, 302, 304, 46, 306, 309, 310, 312, 316, 48, 47, + 317, 846, 318, 323, 324, 325, 324, 328, 329, 333, 331, 332, 334, 335, 336, 338, + 339, 342, 343, 347, 351, 849, 350, 348, 352, 354, 359, 850, 361, 358, 356, 49, + 363, 365, 367, 364, 50, 369, 371, 851, 376, 386, 378, 53, 381, 52, 51, 140, + 141, 387, 382, 614, 78, 388, 389, 390, 394, 392, 856, 54, 399, 396, 402, 404, + 858, 405, 401, 407, 55, 408, 409, 410, 413, 859, 415, 56, 417, 860, 418, 57, + 419, 422, 424, 425, 861, 840, 862, 426, 863, 429, 431, 427, 433, 437, 441, 438, + 439, 442, 443, 864, 436, 449, 450, 58, 454, 453, 865, 447, 460, 866, 867, 461, + 466, 465, 464, 59, 467, 470, 469, 472, 828, 475, 868, 478, 870, 483, 485, 486, + 871, 488, 489, 872, 873, 495, 497, 60, 498, 61, 61, 504, 505, 507, 508, 511, + 62, 513, 874, 515, 875, 518, 844, 520, 876, 877, 878, 63, 64, 528, 880, 879, + 881, 882, 530, 531, 531, 533, 66, 534, 67, 68, 884, 536, 538, 541, 69, 885, + 549, 886, 887, 556, 559, 70, 561, 562, 563, 888, 889, 889, 567, 71, 890, 570, + 571, 72, 891, 577, 73, 581, 579, 582, 893, 587, 74, 590, 592, 596, 75, 895, + 896, 76, 897, 600, 898, 602, 605, 607, 899, 900, 609, 901, 611, 853, 77, 615, + 616, 79, 617, 252, 902, 903, 854, 855, 621, 622, 731, 80, 627, 626, 628, 164, + 629, 630, 631, 633, 904, 632, 634, 639, 640, 635, 641, 646, 651, 638, 643, 644, + 645, 905, 907, 906, 81, 653, 654, 656, 911, 657, 908, 82, 83, 909, 910, 84, + 664, 665, 666, 667, 669, 668, 671, 670, 674, 672, 673, 675, 85, 677, 678, 86, + 681, 682, 912, 685, 686, 87, 689, 36, 913, 914, 88, 89, 696, 702, 709, 711, + 915, 712, 713, 718, 719, 917, 831, 721, 720, 723, 832, 725, 728, 918, 919, 739, + 742, 744, 920, 745, 753, 756, 757, 755, 760, 761, 921, 762, 90, 764, 922, 91, + 775, 279, 780, 923, 925, 92, 93, 785, 926, 94, 927, 787, 787, 789, 928, 792, + 95, 796, 797, 798, 800, 96, 929, 802, 804, 806, 97, 98, 807, 930, 99, 931, + 932, 933, 814, 100, 816, 817, 818, 819, 820, 821, 935, 0, 0, }; static const int16_t _hb_ucd_i16[92]= { - 0, 0, 1, -1, 2, 0, -2, 0, 0, 2, 0, -2, 0, 16, 0, -16, - 0, 1, -1, 0, 3, 3, 3, -3, -3, -3, 0, 2016, 0, 2527, 1923, 1914, - 1918, 0, 2250, 0, 0, 138, 0, 7, -7, 0, -1, 1, 1824, 0, 2104, 0, + 0, 0, 1, -1, -1, 1, 0, 1, -1, 0, 0, 2, 0, -2, 2, 0, + -2, 0, -7, 0, 0, 16, 0, -16, 3, 3, 3, -3, -3, -3, 0, 2016, + 0, 2527, 1923, 1914, 1918, 0, 2250, 0, 0, 138, 0, 7, 1824, 0, 2104, 0, 2108, 2106, 0, 2106, 1316, 0, -1, -138, 8, 8, 8, 0, 7, 7, -8, -8, -8, -7,-1316, 1, -1, 3, -3, 1, 0,-1914,-1918, 0, 0,-1923,-1824, 0, 0,-2016,-2104, 0, 0,-2106,-2108,-2106,-2250, 0,-2527, 0, @@ -4360,11 +4357,13 @@ static const int16_t _hb_ucd_i16[92]= static inline uint8_t _hb_ucd_gc (unsigned u) { - return u<1114110 ? _hb_ucd_u8[6560u+((_hb_ucd_u8[816u+((_hb_ucd_u16[((_hb_ucd_u8[272u+((_hb_ucd_u8[((((((((u)>>1))>>3))>>4))>>4)])<<4)+((((((((u)>>1))>>3))>>4))&15)])<<4)+((((((u)>>1))>>3))&15)])<<3)+((((u)>>1))&7)])<<1)+((u)&1)] : 2; + /* packtab: [2^8,2^4,2^4,2^3,2^1] */ + return u<1114110u ? (uint8_t)(_hb_ucd_u8[6536u+((_hb_ucd_u8[800u+_hb_ucd_u16[((_hb_ucd_u8[272u+((_hb_ucd_u8[((((((((u)>>1))>>3))>>4))>>4)])<<4)+((((((((u)>>1))>>3))>>4))&15)])<<4)+((((((u)>>1))>>3))&15)]+((((u)>>1))&7)])<<1)+((u)&1)]) : 2; } static inline uint8_t _hb_ucd_ccc (unsigned u) { - return u<125259 ? _hb_ucd_u8[8620u+((_hb_ucd_u8[8036u+((_hb_ucd_u8[7556u+((_hb_ucd_u8[7188u+((_hb_ucd_u8[6942u+((((((((u)>>2))>>2))>>2))>>3)])<<3)+((((((((u)>>2))>>2))>>2))&7)])<<2)+((((((u)>>2))>>2))&3)])<<2)+((((u)>>2))&3)])<<2)+((u)&3)] : 0; + /* packtab: [2^8,2^3,2^2,2^2,2^2] */ + return u<125259u ? (uint8_t)(_hb_ucd_u8[8589u+((_hb_ucd_u8[8006u+((_hb_ucd_u8[7529u+((_hb_ucd_u8[7163u+((_hb_ucd_u8[6918u+((((((((u)>>2))>>2))>>2))>>3)])<<3)+((((((((u)>>2))>>2))>>2))&7)])<<2)+((((((u)>>2))>>2))&3)])<<2)+((((u)>>2))&3)])<<2)+((u)&3)]) : 0; } static inline uint8_t _hb_ucd_b4 (const uint8_t* a, unsigned i) { @@ -4372,15 +4371,18 @@ static inline uint8_t _hb_ucd_b4 (const uint8_t* a, unsigned i) } static inline int16_t _hb_ucd_bmg (unsigned u) { - return u<65380 ? _hb_ucd_i16[((_hb_ucd_u8[9516u+((_hb_ucd_u8[9284u+((_hb_ucd_u8[9188u+((_hb_ucd_b4(_hb_ucd_u8+9124u,((((((((u)>>1))>>2))>>3))>>3)))<<3)+((((((((u)>>1))>>2))>>3))&7)])<<3)+((((((u)>>1))>>2))&7)])<<2)+((((u)>>1))&3)])<<1)+((u)&1)] : 0; + /* packtab: [2^4,2^3,2^3,2^2,2^1] */ + return u<65380u ? (int16_t)(_hb_ucd_i16[_hb_ucd_u8[9480u+_hb_ucd_u8[9251u+_hb_ucd_u8[9157u+((_hb_ucd_b4(_hb_ucd_u8+9093u,((((((((u)>>1))>>2))>>3))>>3)))<<3)+((((((((u)>>1))>>2))>>3))&7)]+((((((u)>>1))>>2))&7)]+((((u)>>1))&3)]+((u)&1)]) : 0; } static inline uint8_t _hb_ucd_sc (unsigned u) { - return u<918000 ? _hb_ucd_u8[10950u+((_hb_ucd_u16[4648u+((_hb_ucd_u16[2608u+((_hb_ucd_u8[10214u+((_hb_ucd_u8[9764u+((((((((u)>>2))>>2))>>3))>>4)])<<4)+((((((((u)>>2))>>2))>>3))&15)])<<3)+((((((u)>>2))>>2))&7)])<<2)+((((u)>>2))&3)])<<2)+((u)&3)] : 2; + /* packtab: [2^8,2^4,2^3,2^2,2^2] */ + return u<918000u ? (uint8_t)(_hb_ucd_u8[10913u+_hb_ucd_u16[4624u+_hb_ucd_u16[2592u+((_hb_ucd_u8[10177u+((_hb_ucd_u8[9728u+((((((((u)>>2))>>2))>>3))>>4)])<<4)+((((((((u)>>2))>>2))>>3))&15)])<<3)+((((((u)>>2))>>2))&7)]+((((u)>>2))&3)]+((u)&3)]) : 2; } static inline uint16_t _hb_ucd_dm (unsigned u) { - return u<195102 ? _hb_ucd_u16[7480u+((_hb_ucd_u8[13904u+((_hb_ucd_u8[13522u+((((u)>>4))>>5)])<<5)+((((u)>>4))&31)])<<4)+((u)&15)] : 0; + /* packtab: [2^8,2^5,2^4] */ + return u<195102u ? (uint16_t)(_hb_ucd_u16[7453u+((_hb_ucd_u8[13867u+((_hb_ucd_u8[13485u+((((u)>>4))>>5)])<<5)+((((u)>>4))&31)])<<4)+((u)&15)]) : 0; } @@ -4388,824 +4390,824 @@ static inline uint16_t _hb_ucd_dm (unsigned u) #include -static const uint8_t _hb_ucd_u8[13937]= +static const uint8_t _hb_ucd_u8[13905]= { - 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 9, 10, 7, 7, 7, 7, 7, 11, 12, 12, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 7, 21, 22, 22, 22, 23, 24, 7, 7, - 7, 25, 22, 22, 22, 26, 27, 28, 22, 29, 30, 31, 32, 33, 34, 35, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 21, 22, 36, - 7, 7, 7, 7, 7, 7, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 38, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 34, 34, 34, 35, 36, 37, 34, 34, 34, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 62, 63, 64, 65, 66, 67, 68, 69, 67, 70, 71, - 67, 67, 62, 72, 62, 62, 73, 67, 74, 75, 76, 77, 78, 67, 67, 67, - 79, 80, 34, 81, 82, 83, 67, 67, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 84, 34, 34, 34, 34, - 85, 34, 34, 34, 34, 34, 34, 34, 34, 86, 34, 34, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 34, 34, 34, 34, 34, 34, 34, 34, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, - 100,100, 34, 34, 34, 34,101,102, 34, 34,103,104,105,106,107,108, - 34, 34,109,110,111,112,113,114,115,116,117,118, 34, 34, 34,119, - 120,121,122,123,124,125,126,127, 34,128,129,130,131,132,133,134, - 135,136,137,138,139,140,141,142,143,144,111,145,146,147,148,111, - 149,150,151,152,153,154,155,156,157,158,159,160,111,161,162,163, - 34, 34, 34, 34, 34, 34, 34, 34,164, 34, 34,111,111,111,111,111, - 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,165, - 34, 34, 34, 34, 34, 34, 34, 34,166, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,111,111,111, - 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111, - 111,111,167,111,111,111,111,111,111,111,111,111,111,111,111,111, - 34, 34, 34, 34,168,169,170, 34,111,111,171,111,172,173,174,175, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,111,111,111,111, - 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,119, - 34, 34, 34, 34, 34, 34,111,111,111,111,111,111,111,111,111,111, - 111,111,111,111,111,111,111,111, 34,176,111,111,111,111,111,111, - 111,111,111,111,111,111,111,111, 67,177, 67, 67, 67,178,179, 67, - 67, 67,180,181,182,131, 65,111,183,184,185,186,187,188,189,190, - 67, 67, 67, 67,191,192,111,111,111,111,111,111,111,111,193,111, - 194,195,196,111,111,197,111,111,111,198,111,199,111,200,111, 34, - 34,201,202,111,111,111,111,111,131,203,204,111, 34,205,111,111, - 67, 67,206, 67, 67,111, 67,207, 67, 67, 67, 67, 67, 67, 67, 67, - 67,208, 67, 67, 67, 67, 67,177,111,111,111,111,111,111,111,111, - 34, 34, 34, 34, 34,111,111,111,111,111,111,111,111,111,111,111, - 34, 34, 34, 34, 34, 34, 34, 34, 34,111,111,111,111,111,111,111, - 209,111,195,195,111,111,111,111,111,111,111,111,111,111,111,111, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 4, 5, 6, 2, - 7, 7, 7, 7, 7, 2, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 17, 18, 19, 1, 20, 20, 21, 22, 23, 24, 25, - 26, 27, 15, 2, 28, 29, 27, 30, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 31, 11, 11, 11, 32, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 33, 16, 16, 16, 16, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 34, 34, 34, 34, 34, 34, 34, 34, 16, 32, 32, 32, - 32, 32, 32, 32, 11, 34, 34, 16, 34, 32, 32, 11, 34, 11, 16, 11, - 11, 34, 32, 11, 32, 16, 11, 34, 32, 32, 32, 11, 34, 16, 32, 11, - 34, 11, 34, 34, 32, 35, 32, 16, 36, 36, 37, 34, 38, 37, 34, 34, - 34, 34, 34, 34, 34, 34, 16, 32, 34, 38, 32, 11, 32, 32, 32, 32, - 32, 32, 16, 16, 16, 11, 34, 32, 34, 34, 11, 32, 32, 32, 32, 32, - 16, 16, 36, 16, 16, 16, 16, 16, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 40, 40, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, - 39, 39, 41, 40, 40, 40, 41, 41, 40, 40, 40, 40, 40, 40, 40, 40, - 42, 42, 42, 42, 42, 42, 42, 42, 32, 32, 41, 32, 16, 43, 16, 10, - 40, 40, 40, 44, 11, 11, 11, 11, 34, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 34, - 16, 11, 32, 16, 32, 32, 32, 32, 16, 16, 32, 45, 34, 32, 34, 11, - 32, 46, 42, 42, 47, 32, 32, 32, 11, 34, 34, 34, 34, 34, 34, 16, - 11, 11, 11, 11, 48, 2, 2, 2, 16, 16, 16, 16, 49, 50, 51, 52, - 53, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 54, - 55, 56, 42, 55, 42, 42, 42, 42, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 57, 2, 2, 2, 2, 2, 2, 58, 58, 58, 8, 9, 59, 2, 60, - 42, 42, 42, 42, 42, 56, 61, 2, 62, 36, 36, 36, 36, 63, 42, 42, - 7, 7, 7, 7, 7, 2, 2, 36, 64, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 65, 42, 42, 42, 66, 46, 42, 42, 67, 68, 69, 42, 42, 36, - 7, 7, 7, 7, 7, 36, 70, 71, 2, 2, 2, 2, 2, 2, 2, 72, - 63, 36, 36, 36, 36, 36, 36, 36, 42, 42, 42, 42, 42, 42, 64, 36, - 36, 36, 36, 42, 42, 42, 42, 42, 7, 7, 7, 7, 7, 36, 36, 36, - 36, 36, 36, 36, 36, 63, 42, 42, 42, 42, 39, 21, 2, 39, 68, 20, - 36, 36, 36, 42, 42, 68, 42, 42, 42, 42, 68, 42, 68, 42, 42, 42, - 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 36, 36, 63, 42, 42, 2, - 36, 36, 36, 36, 73, 36, 36, 36, 58, 58, 58, 74, 42, 42, 42, 42, - 36, 36, 36, 36, 75, 42, 42, 42, 42, 74, 42, 42, 42, 42, 42, 42, - 42, 76, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 76, 64, 77, - 78, 42, 42, 42, 76, 77, 78, 77, 63, 42, 42, 42, 36, 36, 36, 36, - 36, 42, 2, 7, 7, 7, 7, 7, 79, 36, 36, 36, 36, 36, 36, 36, - 63, 77, 80, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 64, 77, - 78, 42, 42, 76, 77, 77, 78, 36, 36, 36, 36, 81, 77, 77, 36, 36, - 36, 42, 42, 7, 7, 7, 7, 7, 36, 20, 27, 27, 27, 52, 57, 42, - 42, 76, 80, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 42, 77, - 78, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 64, 36, 36, 36, - 36, 36, 36, 7, 7, 7, 7, 7, 42, 36, 63, 2, 2, 2, 2, 2, - 78, 42, 42, 42, 76, 77, 78, 42, 59, 20, 20, 20, 82, 42, 42, 42, - 42, 77, 80, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 64, 78, - 78, 42, 42, 76, 77, 77, 78, 42, 42, 42, 42, 76, 77, 77, 36, 36, - 71, 27, 27, 27, 27, 27, 27, 27, 42, 64, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 77, 76, 77, 77, 77, 77, 77, 78, 42, - 36, 36, 36, 81, 77, 77, 77, 77, 77, 77, 77, 7, 7, 7, 7, 7, - 27, 83, 60, 60, 52, 60, 60, 60, 76, 77, 64, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 64, 42, 76, 77, 77, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 36, 36, 36, 36, 7, 7, 7, 84, 27, 27, 27, 83, - 63, 77, 65, 36, 36, 36, 36, 36, 77, 77, 77, 76, 77, 77, 42, 42, - 42, 42, 76, 77, 77, 77, 36, 36, 85, 81, 77, 77, 77, 77, 77, 77, - 42, 77, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 63, 64, 77, - 78, 42, 42, 77, 77, 77, 78, 70, 60, 60, 36, 81, 27, 27, 27, 86, - 27, 27, 27, 27, 83, 36, 36, 36, 36, 36, 36, 36, 36, 42, 42, 76, - 77, 42, 42, 42, 77, 77, 77, 77, 7, 77, 2, 2, 2, 2, 2, 2, - 63, 36, 42, 42, 42, 42, 42, 87, 36, 36, 36, 68, 42, 42, 42, 56, - 7, 7, 7, 7, 7, 2, 2, 2, 63, 36, 42, 42, 42, 42, 64, 36, - 36, 36, 36, 39, 42, 42, 42, 42, 7, 7, 7, 7, 7, 7, 36, 36, - 70, 60, 2, 2, 2, 2, 2, 2, 2, 88, 88, 60, 42, 60, 60, 60, - 7, 7, 7, 7, 7, 27, 27, 27, 27, 27, 46, 46, 46, 4, 4, 77, - 63, 42, 42, 42, 42, 42, 42, 76, 42, 42, 56, 42, 36, 36, 63, 42, - 42, 42, 42, 42, 42, 42, 42, 60, 60, 60, 60, 69, 60, 60, 60, 60, - 2, 2, 88, 60, 21, 2, 2, 2, 36, 36, 36, 36, 36, 81, 78, 42, - 76, 42, 42, 42, 78, 76, 78, 64, 36, 36, 36, 77, 42, 36, 36, 42, - 64, 77, 80, 81, 77, 77, 77, 36, 63, 42, 64, 36, 36, 36, 36, 36, - 36, 76, 78, 76, 77, 77, 78, 81, 7, 7, 7, 7, 7, 77, 78, 60, - 16, 16, 16, 16, 16, 49, 43, 16, 36, 36, 36, 36, 36, 36, 63, 42, - 2, 2, 2, 2, 89, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 60, 60, 60, 60, 60, 60, 60, 60, 11, 11, 11, 11, 16, 16, 16, 16, - 90, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 70, 65, - 91, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 92, 93, 93, - 36, 36, 36, 36, 36, 57, 2, 94, 95, 36, 36, 36, 36, 36, 36, 36, - 36, 42, 76, 77, 77, 77, 77, 80, 36, 42, 96, 2, 2, 2, 2, 2, - 36, 42, 42, 42, 42, 42, 42, 42, 36, 36, 42, 78, 42, 42, 42, 77, - 77, 77, 77, 76, 78, 42, 42, 42, 42, 42, 2, 79, 2, 59, 63, 42, - 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 97, 2, 55, 42, 74, - 36, 75, 36, 36, 36, 36, 36, 36, 36, 36, 63, 64, 36, 36, 36, 36, - 36, 36, 36, 36, 63, 36, 36, 36, 42, 76, 77, 78, 76, 77, 77, 77, - 77, 76, 77, 77, 78, 42, 42, 42, 60, 60, 2, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 27, 27, 60, 36, 36, 36, 63, 76, 78, 42, 2, - 36, 36, 81, 76, 42, 42, 42, 42, 76, 76, 78, 42, 42, 42, 76, 77, - 77, 78, 42, 42, 42, 42, 42, 42, 2, 2, 2, 79, 2, 2, 2, 2, - 42, 42, 42, 42, 42, 42, 42, 98, 42, 42, 80, 36, 36, 36, 36, 36, - 36, 36, 76, 42, 42, 76, 76, 77, 77, 76, 80, 36, 36, 36, 36, 2, - 88, 60, 60, 60, 60, 46, 42, 42, 42, 42, 60, 60, 60, 60, 21, 2, - 42, 80, 36, 36, 36, 36, 36, 36, 81, 42, 42, 77, 42, 78, 42, 36, - 36, 36, 36, 76, 42, 77, 78, 78, 42, 77, 77, 77, 77, 77, 2, 2, - 36, 36, 77, 77, 77, 77, 42, 42, 42, 42, 77, 42, 42, 56, 2, 2, - 7, 7, 7, 7, 7, 7, 85, 36, 36, 36, 36, 36, 39, 39, 39, 2, - 16, 16, 16, 16, 34, 16, 16, 16, 42, 56, 42, 42, 42, 42, 42, 42, - 76, 42, 42, 42, 64, 36, 63, 36, 36, 36, 64, 81, 42, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 39, 39, 39, 39, 39, 39, 39, 43, 16, 16, - 16, 16, 16, 16, 43, 16, 16, 16, 16, 16, 16, 16, 16, 99, 39, 39, - 32, 32, 32, 16, 16, 16, 16, 32, 16, 16, 16, 16, 11, 11, 11, 11, - 16, 16, 16, 16, 34, 11, 11, 11, 16, 16, 16, 16,100,100,100,100, - 16, 16, 16, 16, 11, 11,101,102, 40, 16, 16, 16, 11, 11,101, 40, - 16, 16, 16, 16, 11, 11,103, 40,104,104,104,104,104,105, 58, 58, - 50, 50, 50, 2,106,107,106,107, 2, 2, 2, 2,108, 58, 58,109, - 2, 2, 2, 2,110,111, 2,112,113, 2,114,115, 2, 2, 2, 2, - 2, 9,113, 2, 2, 2, 2,116, 58, 58, 58, 58, 58, 58, 58, 58, - 117, 39, 27, 27, 27, 8,114,118, 27, 27, 27, 27, 27, 8,114, 93, - 20, 20, 20, 20, 20, 20, 20, 20, 42, 42, 42, 42, 42, 42,119, 47, - 98, 47, 98, 42, 42, 42, 42, 42, 60,120, 60,121, 60, 34, 11, 16, - 11, 32,121, 60, 45, 11, 11, 60, 60, 60,120,120,120, 11, 11,122, - 11, 11, 35, 36,123, 60, 16, 11, 8, 8, 45, 16, 16, 26, 60,124, - 94, 94, 94, 94, 94, 94, 94, 94, 94,125,126, 94,127, 60, 60, 60, - 8, 8,128, 60, 60, 8, 60, 60,128, 26, 60,128, 60, 60, 60,128, - 60, 60, 60, 60, 60, 60, 60, 8, 60,128,128, 60, 60, 60, 60, 60, - 60, 60, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 60, 60, 60, 60, 4, 4, 60, 60, 8, 60, 60, 60,129,130, 60, 60, - 60, 60, 60, 60, 60, 60,128, 60, 60, 60, 60, 60, 60, 26, 8, 8, - 8, 8, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 8, 8, - 8, 60, 60, 60, 60, 60, 60, 60, 27, 27, 27, 27, 27, 27, 60, 60, - 60, 60, 60, 60, 60, 27, 27, 27, 60, 60, 60, 26, 60, 60, 60, 60, - 26, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 8, 8, 8, 8, - 60, 60, 60, 60, 60, 60, 60, 26, 60, 60, 60, 60, 4, 4, 4, 4, - 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 60, 60, 60, 60, 60, 60, - 8, 8,114,131, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, - 8,114,132,132,132,132,132,132,132,132,132,132,131, 8, 8, 8, - 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, - 8, 8,128, 26, 8, 8,128, 60, 32, 11, 32, 34, 34, 34, 34, 11, - 32, 32, 34, 16, 16, 16, 39, 11, 32, 32,124, 60, 60,121, 34,133, - 42, 32, 16, 16, 49, 2, 89, 2, 36, 36, 36, 36, 36, 36, 36, 75, - 2, 2, 2, 2, 2, 2, 2, 55, 2,106,106, 2,110,111,106, 2, - 2, 2, 2, 6, 2, 97,106, 2,106, 4, 4, 4, 4, 2, 2, 79, - 2, 2, 2, 2, 2, 50, 2, 2, 97,134, 2, 2, 2, 2, 2, 2, - 60, 2,135,132,132,132,136, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 1, 2,137,138, 4, 4, 4, 4, 4, 60, 4, 4, 4, 4,139, 93, - 140, 94, 94, 94, 94, 42, 42, 77,141, 39, 39, 60, 94,142, 57, 60, - 71, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 63,143,144, 62, - 36, 36, 36, 36, 36, 57, 39, 62, 60, 27, 27, 60, 60, 60, 60, 60, - 27, 27, 27, 27, 27, 60, 60, 60, 60, 60, 60, 60, 27, 27, 27, 27, - 145, 27, 27, 27, 27, 27, 27, 27, 36, 36, 75, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36,146, 2, 32, 32, 32, 32, 32, 32, 32, 63, - 47,147, 42, 42, 42, 42, 42, 79, 32, 32, 32, 32, 32, 32, 39, 42, - 36, 36, 36, 94, 94, 94, 94, 94, 42, 2, 2, 2, 2, 2, 2, 2, - 40, 40, 40,144, 39, 39, 39, 39, 40, 32, 32, 32, 32, 32, 32, 32, - 16, 32, 32, 32, 32, 32, 32, 32, 43, 16, 16, 16, 34, 34, 34, 32, - 32, 32, 32, 32, 41,148, 34, 35, 32, 32, 16, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 11, 11, 32, 11, 11, 32, 32, 32, 32, 32, 32, - 32, 32, 11, 11, 34, 34, 32, 32, 32, 32, 32, 32, 32, 32, 11, 11, - 48, 39,149, 35, 39, 35, 36, 36, 36, 64, 36, 64, 36, 63, 36, 36, - 36, 81, 78, 76, 60, 60, 42, 42, 27, 27, 27, 60,150, 60, 60, 60, - 36, 36, 2, 2, 2, 2, 2, 2, 77, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 77, 77, 77, 77, 77, 77, 77, 77, 42, 42, 42, 42, 42, 2, - 42, 36, 36, 36, 2, 65, 65, 63, 36, 36, 36, 42, 42, 42, 42, 2, - 36, 36, 36, 63, 42, 42, 42, 42, 42, 77, 77, 77, 77, 77, 77, 96, - 36, 63, 77, 42, 42, 77, 42, 77, 96, 2, 2, 2, 2, 2, 2, 79, - 7, 7, 7, 7, 7, 7, 7, 2, 36, 36, 63, 62, 36, 36, 36, 36, - 36, 36, 36, 36, 63, 42, 42, 76, 78, 76, 78, 42, 42, 42, 42, 42, - 36, 63, 36, 36, 36, 36, 76, 77, 7, 7, 7, 7, 7, 7, 2, 2, - 62, 36, 36, 70, 60, 81, 76, 36, 64, 42, 64, 63, 64, 36, 36, 42, - 36, 36, 36, 36, 36, 36, 75, 2, 36, 36, 36, 36, 36, 81, 42, 77, - 2, 75,151, 42, 42, 42, 42, 42, 16, 16, 16, 16, 16,102, 39, 39, - 16, 16, 16, 16, 99, 40, 40, 40, 36, 81, 78, 77, 76, 96, 78, 42, - 152,152,152,152,152,152,152,152,153,153,153,153,153,153,153,153, - 16, 16, 16, 16, 16, 16, 35, 64, 36, 36, 36, 36,154, 36, 36, 36, - 36, 40, 40, 40, 40, 40, 40, 40, 40, 22, 60, 60, 60, 60, 60, 60, - 60, 71, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,132, - 60, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 60, 60, 60, 60, - 36, 36, 36, 36, 36, 36,150, 60, 2, 2, 2,135,115, 2, 2, 2, - 6,155,156,132,132,132,132,132,132,132,115,135,115, 2,112,157, - 2, 2, 2, 2,139,132,132,115, 2,158, 8, 8, 59, 2, 2, 2, - 36, 36, 36, 36, 36, 36, 36,159, 2, 2, 3, 2, 4, 5, 6, 2, - 16, 16, 16, 16, 16, 17, 18,114,115, 4, 2, 36, 36, 36, 36, 36, - 62, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 39, - 20,160, 52, 20, 26, 8,128, 60, 60, 60, 60, 60,161, 58, 60, 60, - 2, 2, 2, 89, 27, 27, 27, 27, 27, 27, 27, 83, 60, 60, 60, 60, - 94, 94,127, 27, 83, 60, 60, 60, 60, 60, 60, 60, 60, 27, 60, 60, - 60, 60, 60, 60, 60, 60, 46, 42,162,162,162,162,162,162,162,162, - 163, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 86, 36, - 138, 36, 36, 36, 36, 94, 94, 94, 36, 36, 36, 36, 36, 36, 36, 57, - 164, 94, 94, 94, 94, 94, 94, 94, 11, 11, 11, 32, 16, 16, 16, 16, - 36, 36, 36, 57, 27, 27, 27, 27, 36, 36, 36, 70,145, 27, 27, 27, - 36, 36, 36,165, 27, 27, 27, 27, 36, 36, 36, 36, 36,165, 27, 27, - 36, 36, 36, 27, 27, 27, 27, 30, 36, 36, 36, 36, 36, 36, 27, 36, - 63, 42, 42, 42, 42, 42, 42, 42, 36, 36, 36, 36, 42, 42, 42, 42, - 36, 36, 36, 36, 36, 36,165, 30, 36, 36, 36, 36, 36, 36,165, 27, - 36, 36, 36, 36, 71, 36, 36, 36, 36, 36, 63, 42, 42,163, 27, 27, - 36, 36, 36, 36, 57, 2, 2, 2, 36, 36, 36, 36, 27, 27, 27, 27, - 16, 16, 16, 16, 16, 27, 27, 27, 36, 36, 42, 42, 42, 42, 42, 42, - 7, 7, 7, 7, 7, 36, 36, 62, 11, 11, 11, 11,166, 42, 42,141, - 16, 16, 16, 16, 16, 16, 16, 8, 36, 36, 36, 36, 36, 63,167, 50, - 88, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 42, 42, 42, - 27, 27, 27, 86, 36, 36, 36, 36,163, 27, 30, 2, 2, 2, 2, 2, - 36, 42, 42, 2, 2, 2, 2, 2, 36, 36,165, 27, 27, 27, 27, 27, - 78, 80, 36, 36, 36, 36, 36, 36, 42, 42, 42, 56, 2, 2, 2, 2, - 2, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 7, 7, 7, 7, 7, - 64, 63, 64, 36, 36, 36, 36, 63, 77, 78, 42, 76, 78, 56, 72, 2, - 2, 42, 42, 42, 42, 42, 66, 58, 36, 36, 36, 63, 42, 42, 78, 42, - 42, 42, 42, 7, 7, 7, 7, 7, 2, 2, 81, 80, 36, 36, 36, 36, - 36, 63, 2, 36, 36, 36, 36, 36, 36, 81, 77, 42, 42, 42, 42, 76, - 80, 36, 57, 2, 55, 42, 56, 78, 7, 7, 7, 7, 7, 57, 57, 2, - 89, 27, 27, 27, 27, 27, 27, 27, 36, 36, 36, 36, 36, 36, 77, 78, - 42, 77, 76, 42, 2, 2, 2, 64, 36, 36, 36, 36, 36, 36, 36, 63, - 76, 77, 77, 77, 77, 77, 77, 77, 36, 36, 36, 81, 77, 77, 80, 36, - 36, 77, 77, 42, 42, 42, 42, 42, 36, 36, 36, 36, 77, 78, 42, 42, - 42, 77, 77, 77, 77, 77, 77, 76, 64, 64, 2, 2, 2, 2, 2, 2, - 55, 42, 42, 42, 42, 42, 42, 42, 36, 36, 81, 77, 42, 42, 42, 42, - 77, 42, 76, 64, 36, 57, 2, 2, 7, 7, 7, 7, 7, 2, 2, 64, - 77, 78, 42, 42, 76, 76, 77, 78, 76, 42, 36, 65, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 81, 77, 42, 42, 42, 77, 77, 42, 78, - 56, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 42, 42, - 77, 78, 42, 42, 42, 76, 78, 78, 56, 2, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 63, 78, 77, 42, 42, 42, 78, 57, 2, 2, 2, - 36, 36, 36, 36, 36, 36, 63, 78, 77, 42, 42, 78, 42, 42, 42, 42, - 7, 7, 7, 7, 7, 27, 2, 88, 42, 42, 42, 42, 78, 56, 2, 2, - 27, 27, 27, 27, 27, 27, 27, 86, 77, 77, 77, 77, 77, 78, 76, 64, - 80, 78, 2, 2, 2, 2, 2, 2, 81, 77, 42, 42, 42, 42, 77, 77, - 64, 65, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 63, 42, 42, 42, 42, 64, 36, 36, 36, 63, 42, 42, 76, 63, 42, 56, - 2, 2, 2, 55, 42, 42, 42, 42, 63, 42, 42, 76, 78, 42, 36, 36, - 36, 36, 36, 36, 36, 42, 42, 42, 42, 42, 42, 76, 42, 2, 65, 2, - 76, 42, 76, 76, 77, 77, 77, 77, 57, 2, 2, 2, 2, 2, 2, 2, - 42, 42, 42, 42, 42, 42, 42, 78, 2, 36, 36, 36, 36, 36, 36, 36, - 42, 42, 42, 42, 76, 42, 42, 42, 76, 42, 78, 42, 42, 42, 42, 42, - 42, 42, 42, 63, 42, 42, 42, 42, 36, 36, 36, 36, 36, 77, 77, 77, - 42, 76, 78, 78, 36, 36, 36, 36, 36, 36, 36, 36, 75, 36, 36, 36, - 36, 63, 76, 96, 2, 2, 2, 2, 42, 81, 36, 36, 36, 36, 36, 36, - 36, 36, 77, 42, 42, 42, 42, 77, 76, 56, 2, 2, 2, 2, 2, 2, - 7, 7, 7, 7, 7, 42, 42, 42, 27, 27, 83, 60, 60, 60, 52, 20, - 150, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 21, - 64, 36, 36, 63, 42, 42, 42, 42, 36, 36, 36, 36, 36, 36, 36, 42, - 42, 42, 42, 42, 42, 77, 78, 42, 42, 42, 56, 2, 2, 2, 2, 2, - 42, 42, 42, 56, 2, 2, 60, 60, 39, 39, 88, 60, 60, 60, 60, 60, - 7, 7, 7, 7, 7,168, 27, 27, 27, 86, 36, 36, 36, 36, 36, 36, - 39, 62, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 75,146, 2, - 27, 27, 27, 30, 2, 2, 2, 2, 11, 11, 11, 11, 11, 32, 16, 16, - 81, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, - 42, 67, 39, 39, 39, 39, 39, 39, 39, 79, 42, 42, 42, 42, 42, 42, - 77, 39, 94, 94, 94, 94, 94, 94, 36, 36, 36, 36, 36, 36, 46, 56, - 7, 7, 7, 7, 7, 60, 60, 60, 60, 60,169, 78, 42, 60,169, 77, - 77,170, 58, 58, 58, 74, 42, 42, 42, 69, 46, 42, 42, 42, 60, 60, - 60, 60, 60, 60, 60, 42, 42, 60, 60, 42, 69, 60, 60, 60, 60, 60, - 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 16, 11, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, - 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, - 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, - 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, - 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 32, 16, 7, - 42, 42, 42, 69, 60, 46, 42, 42, 42, 42, 42, 42, 42, 42, 69, 60, - 60, 60, 46, 60, 60, 60, 60, 60, 60, 60, 69, 21, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 55, 42, 42, 16, 16, 16, 16, 16,123, 16, 16, - 42, 42, 42, 67, 39, 39, 39, 39, 7, 7, 7, 7, 7, 7, 7, 70, - 36, 36, 36, 36, 36, 36, 42, 42, 7, 7, 7, 7, 7, 7, 7,171, - 36, 36, 36, 36, 36, 75, 42, 42,172, 7, 7, 7, 7, 7, 7, 84, - 36, 63, 36, 64, 36, 36, 36, 42, 36, 36, 63, 42, 42, 42, 42, 75, - 16, 16, 42, 42, 42, 67, 39, 39, 27, 27, 27, 27, 27, 27,145, 27, - 173, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,145, - 27, 27, 27, 27, 27, 27, 83, 60, 60, 60, 60, 60, 60, 25, 40, 40, - 0, 0, 29, 21, 21, 21, 23, 21, 22, 18, 21, 25, 21, 17, 13, 13, - 25, 25, 25, 21, 21, 9, 9, 9, 9, 22, 21, 18, 24, 16, 24, 5, - 5, 5, 5, 22, 25, 18, 25, 0, 23, 23, 26, 21, 24, 26, 7, 20, - 25, 1, 26, 24, 26, 25, 15, 15, 24, 15, 7, 19, 15, 21, 9, 25, - 9, 5, 5, 25, 5, 9, 5, 7, 7, 7, 9, 8, 8, 5, 6, 6, - 24, 24, 6, 24, 12, 12, 6, 5, 9, 21, 25, 9, 26, 12, 11, 11, - 9, 6, 5, 21, 17, 17, 17, 26, 26, 23, 23, 12, 17, 12, 21, 12, - 12, 21, 7, 21, 1, 1, 21, 23, 26, 26, 1, 21, 6, 7, 7, 12, - 12, 7, 21, 7, 12, 1, 12, 6, 6, 12, 12, 26, 7, 26, 26, 7, - 21, 1, 24, 7, 1, 12, 7, 6, 12, 10, 10, 10, 10, 12, 21, 6, - 10, 7, 7, 10, 23, 7, 15, 26, 13, 21, 13, 7, 15, 7, 12, 23, - 21, 26, 21, 15, 17, 7, 29, 7, 7, 22, 18, 18, 14, 14, 14, 7, - 10, 21, 17, 21, 11, 12, 5, 6, 8, 8, 8, 24, 5, 24, 9, 24, - 29, 29, 29, 1, 20, 19, 22, 20, 27, 28, 1, 29, 21, 20, 19, 21, - 21, 16, 16, 21, 25, 22, 18, 21, 21, 29, 15, 6, 18, 6, 12, 11, - 9, 26, 26, 9, 26, 5, 7, 5, 5, 26, 14, 9, 5, 14, 14, 15, - 25, 26, 26, 22, 18, 26, 18, 25, 18, 22, 5, 12, 22, 21, 21, 22, - 18, 17, 26, 6, 7, 14, 17, 22, 26, 14, 17, 6, 14, 6, 12, 24, - 24, 6, 26, 15, 6, 21, 11, 21, 24, 9, 6, 9, 23, 26, 6, 10, - 4, 4, 3, 3, 7, 25, 17, 16, 16, 22, 16, 16, 25, 17, 7, 1, - 25, 24, 26, 1, 2, 2, 12, 15, 21, 14, 7, 15, 9, 12, 12, 17, - 13, 15, 26, 10, 10, 1, 13, 23, 7, 13, 23, 15, 0, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 0, 14, 0, 0, 0, - 0, 0, 15, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 5, 6, 7, 8, 9, 10, 2, 2, 11, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 12, 13, 2, 2, 2, 2, 2, 14, 1, 1, 1, 15, + 16, 17, 18, 19, 20, 21, 22, 2, 3, 0, 0, 0, 23, 24, 2, 2, + 2, 25, 0, 0, 0, 26, 27, 28, 0, 29, 30, 31, 32, 33, 34, 35, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 36, + 2, 2, 2, 2, 2, 2, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, - 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, 22, 23, 0, 0, - 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, - 0, 36, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 43, 44, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, - 0, 0, 0, 0, 3, 0, 0, 0, 4, 5, 6, 7, 0, 8, 9, 10, - 0, 11, 12, 13, 14, 15, 16, 17, 16, 18, 16, 19, 16, 19, 16, 19, - 0, 19, 16, 20, 16, 19, 21, 19, 0, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, - 0, 0, 0, 0, 0, 0, 34, 0, 0, 35, 0, 0, 36, 0, 37, 0, - 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, 0, 47, 0, 0, - 0, 48, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, - 0, 52, 53, 0, 54, 0, 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, - 0, 0, 58, 0, 0, 59, 60, 61, 62, 63, 0, 0, 64, 65, 0, 0, - 0, 66, 0, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 70, 0, 71, - 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 74, 75, - 0, 0, 0, 0, 76, 77, 0, 78, 79, 0, 0, 80, 81, 0, 82, 62, - 0, 83, 84, 0, 0, 85, 86, 87, 0, 88, 0, 89, 0, 90, 0, 0, - 51, 91, 51, 0, 92, 0, 93, 0, 0, 0, 81, 0, 0, 0, 94, 95, - 0, 96, 97, 98, 99, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0,100, - 101, 0, 0, 0, 0, 0, 0,102, 0, 0, 0, 0, 0, 0,103, 0, - 0, 0, 0, 0, 0,104,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,106, 0, 0,107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, - 109, 0, 0,110, 0, 0, 0, 0, 0, 0,111, 0,112, 0,105, 0, - 0, 0, 0, 0,113,114, 0, 0, 0, 0, 0, 0, 0,115, 0, 0, - 0,116, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0,118, 0,119, - 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 8, 0, - 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, 0, 13, 0, 0, 14, 15, - 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, 0, 0, - 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, 0, 27, 0, 0, 28, 29, - 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, 33, 0, 0, 35, 33, 0, - 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, - 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 0, 43, - 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, - 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 52, 0, 53, - 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, 0, 56, 0, 0, 0, 0, - 57, 58, 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, 63, 52, 0, - 64, 65, 0, 0, 66, 0, 0, 0, 67, 68, 0, 0, 0, 69, 0, 70, - 71, 72, 73, 74, 1, 75, 0, 76, 77, 78, 0, 0, 79, 80, 0, 0, - 0, 81, 0, 0, 1, 1, 0, 0, 82, 0, 0, 83, 0, 0, 0, 0, - 79, 84, 0, 85, 0, 0, 0, 0, 0, 80, 86, 0, 87, 0, 52, 0, - 1, 80, 0, 0, 88, 0, 0, 89, 0, 0, 0, 0, 0, 90, 57, 0, - 0, 0, 0, 0, 0, 91, 92, 0, 0, 86, 0, 0, 33, 0, 0, 93, - 0, 0, 0, 0, 94, 0, 0, 0, 0, 49, 0, 0, 95, 0, 0, 0, - 0, 96, 97, 0, 0, 98, 0, 0, 99, 0, 0, 0,100, 0, 0, 0, - 101, 0, 0, 0,102, 0, 0, 0, 0,103,104, 95, 0, 0,105, 0, - 0, 0, 86, 0, 0,106, 0, 0, 0,107,108, 0, 0,109,110, 0, - 0, 0, 0, 0, 0,111, 0, 0,112, 0, 0, 0, 0,113, 33, 0, - 114,115,116, 57, 0, 0,117, 35, 0, 0,118, 0, 0, 0,119, 0, - 0, 0, 0, 0, 0,120, 0, 0,121, 0, 0, 0, 0,122, 90, 0, - 0, 0, 0, 0, 57, 0, 0, 0, 0, 52,123, 0, 0, 0, 0,124, - 0, 0,125, 0, 0, 0, 0,123, 0, 0,126, 0, 0, 0, 0, 0, - 81, 0, 0, 0, 0,127, 0, 0, 0,128, 0, 0, 0,129, 0,130, - 0, 0, 0, 0,131,132,133, 0,134, 0,135, 0, 0, 0,136,137, - 138, 0, 79, 0, 0, 0, 0, 0, 35, 0, 0, 0,139, 0, 0, 0, - 140, 0, 0, 0,141, 0, 0, 0,142,143, 0,144, 0, 0,145, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, - 7, 4, 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, 18, 1, - 1, 1, 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, 25, 26, - 27, 28, 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, 34, 35, - 1, 36, 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, 42, 0, - 0, 0, 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, 21, 0, - 0, 47, 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, 0, 19, - 52, 1, 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, 54, 21, - 35, 1, 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, 0, 0, - 0, 59, 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, 0, 0, - 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, - 68, 0, 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, 0, 77, - 0, 0, 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, 0, 80, - 0, 0, 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, 0, 0, - 83, 0, 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, 1, 52, - 15, 86, 36, 10, 21, 1, 1, 1, 1, 41, 1, 21, 87, 0, 0, 55, - 0, 0, 0, 0, 19, 10, 1, 0, 0, 0, 0, 0, 88, 0, 0, 89, - 0, 0, 88, 0, 0, 0, 0, 78, 0, 0, 90, 9, 12, 4, 91, 8, - 92, 47, 0, 58, 50, 0, 21, 1, 21, 93, 94, 1, 1, 1, 1, 95, - 96, 97, 98, 1, 99, 58, 81,100,101, 4, 58, 0, 0, 0, 0, 0, - 0, 19, 50, 0, 0, 0, 0, 0, 0, 61, 0, 0,102,103, 0, 0, - 104, 0, 0, 1, 1, 50, 0, 0, 0, 38, 0, 63, 0, 0, 0, 0, - 0, 62, 0, 0,105, 68, 61, 0, 0, 0, 78, 0, 0, 0,106,107, - 58, 38, 81, 0, 0, 0, 0, 0, 0,108, 1, 14, 4, 12, 84, 0, - 0, 0, 0, 38, 90, 0, 0, 0, 0,109, 0, 0,110, 61, 0,111, - 0, 0, 0, 1, 0, 0, 0, 0, 49, 50, 0, 0, 19, 58, 0, 0, - 112, 51, 0,112, 14, 52,113, 41, 0, 0, 62, 0, 0, 61, 0, 0, - 114, 0, 90, 0, 0, 0, 61, 62, 0, 0, 62, 0, 89, 0, 0,114, - 0, 0, 0, 0,115, 0, 0, 0, 78, 55, 0, 38, 1, 58, 1, 58, - 0, 0, 0, 0, 0, 88, 63, 89, 0, 0,116, 0, 0, 0, 55, 0, - 0, 0, 0,116, 0, 0, 0, 0, 61, 0, 0, 0, 0, 79, 0, 61, - 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, 79, 0, 0, 0, 8, 92, - 0, 0, 1, 90, 0, 0,117, 0, 0, 0, 0, 0, 0,118, 0,119, - 120,121,122, 0,105, 4,123, 49, 23, 0, 0, 0, 38, 50, 38, 58, - 0, 0, 1, 90, 1, 1, 1, 1, 39, 1, 48,106, 90, 0, 0, 0, - 0, 1, 0, 0, 0,124, 0, 0, 0,113, 19, 59, 0, 38, 0, 81, - 0, 0, 4,123, 0, 0, 0, 1,125, 0, 0, 0, 0, 0,230,230, - 230,230,230,232,220,220,220,220,232,216,220,220,220,220,220,202, - 202,220,220,220,220,202,202,220,220,220, 1, 1, 1, 1, 1,220, - 220,220,220,230,230,230,230,240,230,220,220,220,230,230,230,220, - 220, 0,230,230,230,220,220,220,220,230,232,220,220,230,233,234, - 234,233,234,234,233,230, 0, 0, 0,230, 0,220,230,230,230,230, - 220,230,230,230,222,220,230,230,220,220,230,222,228,230, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, 0, 24, - 25, 0,230,220, 0, 18, 30, 31, 32, 0, 0, 0, 0, 27, 28, 29, - 30, 31, 32, 33, 34,230,230,220,220,230,220,230,230,220, 35, 0, - 0, 0, 0, 0,230,230,230, 0, 0,230,230, 0,220,230,230,220, - 0, 0, 0, 36, 0, 0,230,220,230,230,220,220,230,220,220,230, - 220,230,220,230,230, 0, 0,220, 0, 0,230,230, 0,230, 0,230, - 230,230,230,230, 0, 0, 0,220,220,220,230,220,220,220,230,230, - 0,220, 27, 28, 29,230, 7, 0, 0, 0, 0, 9, 0, 0, 0,230, - 220,230,230, 0, 0, 0, 0, 0,230, 0, 0, 84, 91, 0, 0, 0, - 0, 9, 9, 0, 0, 0, 0, 0, 9, 0,103,103, 9, 0,107,107, - 107,107,118,118, 9, 0,122,122,122,122,220,220, 0, 0, 0,220, - 0,220, 0,216, 0, 0, 0,129,130, 0,132, 0, 0, 0, 0, 0, - 130,130,130,130, 0, 0,130, 0,230,230, 9, 0,230,230, 0, 0, - 220, 0, 0, 0, 0, 7, 0, 9, 9, 0, 9, 9, 0, 0, 0,230, - 0, 0, 0,228, 0, 0, 0,222,230,220,220, 0, 0, 0,230, 0, - 0,220,230,220, 0,220,230,230,230,234, 0, 0, 9, 9, 0, 0, - 7, 0,230,230,230, 0,230, 0, 1, 1, 1, 0, 0, 0,230,234, - 214,220,202,230,230,230,230,230,232,228,228,220,218,230,233,220, - 230,220,230,230, 1, 1, 1, 1, 1,230, 0, 1, 1,230,220,230, - 1, 1, 0, 0,218,228,232,222,224,224, 0, 8, 8, 0, 0, 0, - 0,220,230, 0,230,230,220, 0, 0,230, 0, 0, 26, 0, 0,220, - 0,230,230, 1,220, 0, 0,230,220, 0, 0, 0,220,220, 0, 0, - 230,220, 0, 9, 7, 0, 0, 7, 9, 0, 0, 0, 9, 7, 6, 6, - 0, 0, 0, 0, 1, 0, 0,216,216, 1, 1, 1, 0, 0, 0,226, - 216,216,216,216,216, 0,220,220,220, 0,232,232,220,230,230,230, - 7, 0, 16, 17, 17, 33, 17, 49, 17, 17, 84, 97,135,145, 26, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17,177, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 5, 3, 3, 3, - 3, 3, 6, 7, 8, 3, 3, 3, 3, 3, 9, 10, 11, 12, 13, 3, - 3, 3, 3, 3, 3, 3, 3, 14, 3, 15, 3, 3, 3, 3, 3, 3, - 16, 17, 18, 19, 20, 21, 3, 3, 3, 22, 23, 24, 3, 3, 3, 3, - 3, 3, 25, 3, 3, 3, 3, 3, 3, 3, 3, 26, 3, 3, 27, 28, - 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 4, 0, 5, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, - 0, 9, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 0, - 0, 14, 15, 16, 6, 0, 17, 18, 19, 19, 19, 20, 21, 22, 23, 24, - 19, 25, 0, 26, 27, 19, 19, 28, 29, 30, 0, 31, 0, 0, 0, 8, - 0, 0, 0, 0, 0, 0, 0, 19, 28, 0, 32, 33, 9, 34, 35, 19, - 0, 0, 36, 37, 38, 39, 40, 19, 0, 41, 42, 43, 44, 31, 0, 1, - 45, 42, 0, 0, 0, 0, 0, 32, 14, 14, 0, 0, 0, 0, 14, 0, - 0, 46, 47, 47, 47, 47, 48, 49, 47, 47, 47, 47, 50, 51, 52, 53, - 43, 21, 0, 0, 0, 0, 0, 0, 0, 54, 6, 55, 0, 14, 19, 1, - 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 19, 58, 31, 0, 0, - 0, 0, 0, 0, 0, 59, 14, 0, 0, 0, 0, 1, 0, 2, 0, 0, - 0, 3, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 2, 3, 0, 4, 5, 0, 0, 6, 0, 0, 0, 7, - 0, 0, 0, 1, 1, 0, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, - 8, 9, 10, 11, 12, 0, 0, 0, 13, 0, 0, 0, 0, 14, 15, 16, - 17, 0, 0, 0, 1, 0, 0, 18, 19, 0, 0, 0, 20, 0, 0, 0, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 8, 21, 9, - 0, 0, 22, 0, 0, 0, 0, 1, 0, 23, 24, 25, 0, 0, 26, 0, - 0, 0, 8, 21, 27, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 28, - 29, 30, 0, 31, 32, 20, 1, 1, 0, 0, 0, 8, 21, 9, 1, 4, - 5, 0, 0, 0, 33, 9, 0, 1, 1, 1, 0, 8, 21, 21, 21, 21, - 34, 1, 35, 21, 21, 21, 9, 36, 0, 0, 37, 38, 1, 0, 39, 0, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 8, 21, 9, 1, 0, 0, 0, - 40, 0, 8, 21, 21, 21, 21, 21, 21, 21, 21, 9, 0, 1, 1, 1, - 1, 8, 21, 21, 21, 9, 0, 0, 0, 41, 0, 42, 43, 0, 0, 0, - 1, 44, 0, 0, 0, 45, 8, 9, 1, 0, 0, 0, 8, 21, 21, 21, - 9, 0, 1, 0, 1, 1, 8, 21, 21, 9, 0, 4, 5, 8, 9, 1, - 0, 0, 16, 50, 84,118,136,152,186,187,187,187,187,187,187,187, - 187,187,187,187,187,187,187,187,187,187,187,187,187,187, 12, 0, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 13, 13, - 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 19, 32, 33, 33, 33, 33, 33, - 34, 19, 19, 19, 19, 19, 19, 35, 19, 36, 37, 38, 38, 38, 38, 38, - 38, 39, 40, 19, 19, 19, 19, 19, 19, 19, 41, 42, 19, 19, 43, 19, - 19, 19, 44, 45, 9, 46, 47, 48, 49, 50, 51, 52, 9, 9, 19, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 53, 19, 19, 53, 19, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 54, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 55, - 0, 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 0, - 1, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 32, 33, 33, 33, 34, 35, 35, 35, 35, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 2, 2, 51, 51, 52, - 53, 54, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, - 57, 56, 56, 56, 56, 56, 56, 58, 59, 60, 61, 56, 62, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 56, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 71, 62, 62, 62, 62, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 73, 74, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 32, - 32, 32, 32, 32, 32, 32, 32, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 62, 62, 62, 62, 88, 89, 89, 89, 90, 89, 91, 92, 93, 94, 95, - 95, 96, 97, 87, 98, 99,100,101,102,103,104,105,105,105, 2,106, - 107,108,109,110,111,112,113,114,115,116,117, 89,118,119,120,121, - 122,123,124,125,126,127,128,129,130, 87,131,132,133,134, 87,135, - 136,137,138,139,140,141,142,143,144,145,146, 87,147,148,149,150, - 150,150,150,150,150,150,150,150,150,150, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87,151,152,152,152,152,152,152,152,152,153, - 153,153,153,153, 87, 87, 87, 87, 87,154, 87, 87, 87, 87, 87,155, - 155,155,155,156,157,158,158, 87, 87,159, 87,160,161,162,163,164, - 164,164,164,164,164,164,164,164,164,164,164,164,164,165,165,165, - 165,164,164, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87,166,167, - 168,169,170,170,170, 87, 87,171,172, 87, 87, 87, 87, 87, 87, 56, - 56, 56, 56, 56, 56,173, 56, 56, 56,174,175, 51, 56, 56, 87,176, - 176,176,176,176,176, 87, 87, 87, 87, 87, 87, 87, 87, 2, 87,177, - 6,178, 87, 87,179, 87, 87, 87,180, 87,181, 87,182, 87, 33,183, - 183,184, 87, 87, 87, 87, 87, 56, 56, 56, 87, 89, 89, 87, 87, 56, - 56, 56, 56,185, 87, 56, 56, 62, 62, 62, 62, 62, 87, 87, 87, 62, - 87, 87, 87, 87, 87, 87, 87, 56, 87,186,186, 0, 1, 2, 2, 0, - 0, 0, 0, 1, 2, 1, 2, 0, 0, 3, 3, 4, 5, 4, 5, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 0, 0, 7, 0, 8, - 8, 8, 8, 8, 8, 8, 9, 10, 11, 11, 11, 11, 11, 12, 11, 13, - 13, 13, 13, 13, 13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 15, 16, 16, 16, 16, 16, 17, 18, 18, 18, 18, 18, 18, 19, - 20, 21, 21, 22, 23, 21, 24, 21, 21, 21, 21, 21, 25, 21, 21, 26, - 26, 26, 26, 26, 21, 21, 21, 27, 27, 27, 27, 28, 28, 28, 28, 29, - 29, 29, 29, 30, 30, 26, 21, 21, 21, 21, 21, 21, 21, 31, 21, 32, - 32, 32, 32, 32, 33, 34, 32, 35, 35, 35, 35, 35, 35, 35, 35, 36, - 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 38, - 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 40, - 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 42, - 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, 43, 43, 43, 44, - 44, 44, 45, 44, 44, 44, 44, 46, 46, 46, 46, 46, 46, 46, 46, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 48, 47, 47, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 51, 52, - 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 56, - 56, 57, 57, 57, 57, 58, 57, 59, 59, 60, 61, 62, 62, 63, 63, 64, - 64, 64, 64, 64, 64, 64, 64, 65, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 55, 55, 55, 55, 55, 67, 67, 67, 67, 67, 68, 68, 68, 69, - 69, 69, 69, 69, 69, 64, 64, 70, 70, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 8, 8, 8, 8, 8, 72, 72, 72, 72, 72, 72, 72, 72, 73, - 73, 73, 73, 74, 74, 74, 74, 75, 75, 75, 75, 75, 76, 76, 76, 13, - 50, 50, 50, 73, 77, 78, 79, 4, 4, 80, 4, 4, 81, 82, 83, 4, - 4, 4, 84, 8, 8, 8, 8, 11, 11, 11, 11, 11, 11, 11, 11, 85, - 0, 0, 0, 0, 0, 0, 86, 0, 4, 0, 0, 0, 8, 8, 8, 0, - 0, 87, 88, 89, 0, 4, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 90, 90, 90, 90, 90, 90, 90, 91, - 91, 91, 91, 91, 91, 4, 4, 92, 92, 92, 92, 92, 92, 92, 92, 50, - 50, 50, 93, 93, 93, 93, 93, 53, 53, 53, 53, 53, 53, 13, 13, 94, - 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 0, 95, - 0, 96, 97, 98, 99, 99, 99, 99,100,101,102,102,102,102,103,104, - 104,104,105, 52, 52, 52, 52, 52, 0,104,104, 0, 0, 0,102, 52, - 52, 0, 0, 0, 0, 52,106, 0, 0, 0, 0, 0,102,102,107,102, - 102,102,102,102,108, 0, 0, 94, 94, 94, 94, 0, 0, 0, 0,109, - 109,109,109,109,109,109,109,109,109,109,109,109,110,110,110,111, - 111,111,111,111,111,111,111,111,111,111,111, 13, 13, 13, 13, 13, - 13,112,112,112,112,112,112, 0, 0,113, 4, 4, 4, 4, 4,114, - 4, 4, 4, 4, 4, 4, 4,115,115,115, 0,116,116,116,116,117, - 117,117,117,117,117, 32, 32,118,118,119,120,120,120, 52, 52,121, - 121,121,121,122,121, 49, 49,123,123,123,123,123,123, 49, 49,124, - 124,124,124,124,124,125,125, 53, 53, 53, 4, 4,126,127, 54, 54, - 54, 54, 54,125,125,125,125,128,128,128,128,128,128,128,128, 4, - 129, 18, 18, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21,130, 21, 21, 21, 21, 8, 0,131, 0, 0, 0, 0, 21, 21, - 21, 21, 21, 21, 21, 21,132, 0, 0, 1, 2, 1, 2,133,101,102, - 134, 52, 52, 52, 52, 0, 0,135,135,135,135,135,135,135,135, 0, - 0, 0, 0, 11, 11, 11, 11, 11, 0, 11, 11, 11, 0, 0,136,137, - 137,138,138,138,138,139, 0,140,140,140,141,141,142,142,142,143, - 143,144,144,144,144,144,144,145,145,145,145,145,146,146,146,147, - 147,147,148,148,148,148,148,149,149,149,150,150,150,150,151,151, - 151,151,151,152,152,152,152,153,153,153,153,153,153,153,153,154, - 154,154,154,155,155,156,156,157,157,157,157,157,157,158,158,159, - 159,160,160,161,161,161,161,162,162,163,163,163,163,163,163,164, - 164,164,164,164,164,165,165,166,166,166,166,167,167,167,167,168, - 168,168,168,169,169,170,170,171,171,171,171,171,171,171,171,172, - 172,172,172,172,172,172,172,173,173,173,173,173,173,173,173,174, - 174,174,174,175,175,175,175,175,175,175,175,175,175,175,175,176, - 176,176,176,177, 21, 21, 21,178,178,178,179,179,179,179,180,180, - 180,180,181,181,181,182,182,183,183,183,183,183,183,183,183,184, - 184,184,184,184,185,185,185,186,186,186,186,186,187,187,187,188, - 188,188,188,188,188,189, 43,190,190,190,190,190,190,190,190,191, - 191,191,192,192,192,192,192,193,193,193,194,193,193,193,193,195, - 195,195,195,195,195,195,195,196,196,196,196,196,196,196,196,197, - 197,197,197,197,197,197,197,198,198,198,198,198,198,198,198,199, - 199,199,199,199,199, 66, 66,200,200,200,200,200, 49, 49, 49,201, - 201,201,201,201,201,201,201,202,202,202,202,202,202,202,202,203, - 203,203,203,203,203,203,203,204,204,204,204,204,204,204,204,205, - 205,205,205,205,205,205,205,206,206,206,206,206,207,207,207,207, - 207,207, 55,208,208,208,208, 32, 32, 32, 32, 32, 32,188,188,209, - 209,209,209,209,209,209,209,210,210,210,210,210,210,210,211,211, - 211,211,211,211,211,211,211,212,212,212,212,212,212,213,213,213, - 213,213,214,214,214,214,214,215,215,215,215,215,215,215,215,216, - 216,216,216,216,216,216,216,110,110,110,110, 39, 39, 39, 39,217, - 217,217,217,217,217,217,217,218,218,218,218,218,218,218,218,219, - 219,219,219,219,219,219,219,220,220,220,220,220,220,220,220,221, - 221,221,221,221,221,221,221,112,112,112,112,112,112,112,112,112, - 112,112,112,222,222,222,223,223,223,223,223,223,224,224,224,225, - 225,225,225,225,225,225,225,226,226,226,226,226,226,226,226,227, - 227,227,227,227,227,227,227,227,227,228,228,228,228,228,228,229, - 229,229,229,229,229,229,229,229,229,229,229,229,229,230, 94,231, - 231,231,231,231,231,231,231,232,232,232,232,232,232,232,232,102, - 102,102,102,102,102,102,102,233, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99,102,234, 99,235,102,236,236, - 236,236,236,236,236,236,236,237,237,237,237,237,237,237,237,237, - 237, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0,238,239,240, 0,241, 0, 0, 0, 0, 0,242, - 242,242,242,242,242,242,242, 91, 91, 91, 13, 13, 13, 13, 13,243, - 243,243,243,243,243,243,243,244,244,244,244,245,245,245,245,246, - 246,246,246,246,246,246,246,247,247,247,247,247,247,247,247,248, - 248,248,248,248,248,248,248,249,249,249,249,249,249,249,249,250, - 250,250,250,250,250,250,250,251, 0, 0, 0, 0, 0, 0, 0, 8, - 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 1, 2, 2, 2, 2, - 2, 3, 0, 0, 0, 4, 0, 2, 2, 2, 2, 2, 3, 2, 2, 2, - 2, 5, 0, 2, 5, 6, 0, 7, 7, 7, 7, 8, 9, 8, 10, 8, - 11, 8, 8, 8, 8, 8, 8, 12, 13, 13, 13, 14, 14, 14, 14, 14, - 15, 14, 14, 16, 17, 17, 17, 17, 17, 17, 17, 18, 19, 19, 19, 19, - 19, 19, 19, 20, 21, 20, 22, 20, 20, 23, 23, 20, 20, 20, 20, 22, - 20, 24, 7, 7, 25, 20, 20, 26, 20, 20, 20, 20, 20, 20, 21, 27, - 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, - 31, 31, 31, 32, 20, 20, 20, 33, 33, 33, 33, 34, 35, 33, 33, 33, - 36, 33, 33, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, - 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, - 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46, 47, 48, - 48, 48, 48, 49, 49, 49, 49, 49, 50, 51, 49, 52, 52, 52, 52, 53, - 53, 53, 53, 53, 53, 54, 53, 55, 55, 55, 55, 56, 56, 56, 56, 57, - 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 60, - 60, 61, 62, 63, 63, 63, 63, 64, 64, 64, 64, 64, 65, 0, 0, 66, - 66, 66, 66, 67, 67, 67, 67, 68, 68, 68, 68, 69, 70, 71, 71, 71, - 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 74, 74, 74, 74, 75, - 75, 75, 75, 76, 76, 76, 76, 77, 77, 77, 77, 78, 78, 78, 78, 79, - 79, 79, 79, 80, 80, 80, 80, 81, 81, 81, 81, 82, 7, 7, 7, 83, - 7, 84, 85, 0, 84, 86, 0, 2, 87, 88, 2, 2, 2, 2, 89, 90, - 87, 91, 2, 2, 2, 92, 2, 2, 2, 2, 93, 0, 0, 0, 86, 1, - 0, 0, 94, 0, 95, 96, 0, 4, 0, 0, 0, 0, 0, 0, 4, 97, - 97, 97, 97, 98, 98, 98, 98, 13, 13, 13, 13, 99, 99, 99, 99,100, - 100,100,100, 0,101, 0, 0,102,100,103,104, 0, 0,100, 0,105, - 106,106,106,106,106,106,106,106,106,107,105,108,109,109,109,109, - 109,109,109,109,109,110,108,111,111,111,111,112, 55, 55, 55, 55, - 55, 55,113,109,109,109,110,109,109, 0, 0,114,114,114,114,115, - 115,115,115,116,116,116,116,117,117,117,117, 96, 2, 2, 2, 2, - 2, 94, 2,118,118,118,118,119,119,119,119,120,120,120,120,121, - 121,121,121,121,121,121,122,123,123,123,123,124,124,124,124,124, - 124,124,125,126,126,126,126,127,127,127,127,128,128,128,128, 2, - 2, 3, 2, 2,129,130, 0,131,131,131,131,132, 17, 17, 18, 20, - 20, 20,133, 7, 7, 7,134, 20, 20, 20, 23, 0,135,109,109,109, - 109,109,136,137,137,137,137, 0, 0, 0,138,139,139,139,139,140, - 140,140,140, 84, 0, 0, 0,141,141,141,141,142,142,142,142,143, - 143,143,143,144,144,144,144,145,145,145,145,146,146,146,146,147, - 147,147,147,148,148,148,148,149,149,149,149,150,150,150,150,151, - 151,151,151,152,152,152,152,153,153,153,153,154,154,154,154,155, - 155,155,155,156,156,156,156,157,157,157,157,158,158,158,158,159, - 159,159,159,160,160,160,160,161,161,161,161,162,162,162,162,163, - 163,163,163,164,164,164,164,165,165,165,165,166,166,166,166,167, - 167,167,167,168,168,168,168,169,169,169,169,170,170,170,170,171, - 171,171,171,172,172,172,172,173,173,173,173,174,174,174,174,175, - 175,175,175,176,176,176,176,177,177,177,177,178, 20, 20, 20,179, - 179,179,179,180,180,180,180,181,181,181,181,182,182,182,182,183, - 183,183,183,184,184,184,184,185,185,185,185,186,186,186,186,187, - 187,187,187,188,188,188,188,189,189,189,189,190, 45, 45, 45,191, - 191,191,191,192,192,192,192,193,193,193,193,194,194,194,194,194, - 194,195,194,196,196,196,196,197,197,197,197,198,198,198,198,199, - 199,199,199,200,200,200,200,201,201,201,201,202,202,202,202,203, - 203,203,203,204,204,204,204,205,205,205,205,206,206,206,206,207, - 207,207,207,208,208,208,208,209,209,209,209,210,210,210,210,211, - 211,211,211,212,212,212,212,213,213,213,213,214,214,214,214,215, - 215,215,215,216,216,216,216,217,217,217,217,218,218,218,218,219, - 219,219,219,220,220,220,220,221,221,221,221,222,222,222,222,223, - 223,223,223,224,224,224,224,225,225,225,225,226,226,226,226,227, - 227,227,227,228,228,228,228,229,229,229,229,230,230,230,230,231, - 232,232,232,233,233,233,233,232,232,232,232,234,106,106,106,235, - 106,106,106,106,236,109,109,237,237,237,237,238,238,238,238, 0, - 239, 86, 0, 0, 0,239, 7, 82,138, 7, 0, 0, 0,240, 86,241, - 241,241,241,242,242,242,242,243,243,243,243,244,244,244,244,245, - 245,245,245,246,246,246,246,247,247,247,247,248,248,248,248,249, - 249,249,249,250, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 0, 0, 0, 19, 0, 19, 0, 0, 0, 0, - 0, 26, 26, 1, 1, 1, 1, 9, 9, 9, 9, 0, 9, 9, 9, 9, - 9, 0, 9, 9, 0, 9, 0, 9, 9, 55, 55, 55, 55, 55, 55, 6, - 6, 6, 6, 6, 1, 1, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, - 14, 14, 14, 14, 14, 14, 14, 3, 3, 3, 3, 3, 0, 3, 3, 0, - 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 1, 1, 1, 3, 3, 1, - 3, 3, 3, 37, 37, 37, 37, 38, 38, 38, 38, 64, 64, 64, 64, 90, - 90, 90, 90, 95, 95, 95, 95, 3, 3, 0, 3, 7, 7, 7, 7, 7, - 1, 1, 1, 1, 7, 7, 7, 0, 0, 7, 7, 5, 5, 5, 5, 11, - 11, 11, 11, 10, 10, 10, 10, 21, 21, 21, 21, 22, 22, 22, 22, 23, - 23, 23, 23, 16, 16, 16, 16, 20, 20, 20, 20, 36, 36, 36, 36, 24, - 24, 24, 24, 24, 24, 24, 0, 18, 18, 18, 18, 25, 25, 25, 25, 25, - 0, 0, 0, 0, 25, 25, 25, 33, 33, 33, 33, 8, 8, 8, 8, 8, - 8, 8, 0, 12, 12, 12, 12, 30, 30, 30, 30, 29, 29, 29, 29, 28, - 28, 28, 28, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 0, 0, - 0, 35, 35, 45, 45, 45, 45, 44, 44, 44, 44, 44, 0, 0, 0, 43, - 43, 43, 43, 46, 46, 46, 46, 31, 31, 31, 31, 32, 32, 0, 0, 32, - 0, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 52, 52, 52, 52, 58, - 58, 58, 58, 54, 54, 54, 54, 91, 91, 91, 91, 62, 62, 62, 62, 76, - 76, 76, 76, 93, 93, 93, 93, 70, 70, 70, 70, 73, 73, 73, 73, 1, - 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, - 1, 0, 0, 19, 19, 9, 9, 9, 9, 9, 6, 19, 9, 9, 9, 9, - 9, 19, 19, 9, 9, 9, 19, 6, 19, 19, 19, 19, 19, 19, 9, 0, - 0, 0, 19, 0, 0, 9, 0, 0, 0, 19, 19, 27, 27, 27, 27, 56, - 56, 56, 56, 61, 61, 61, 61, 13, 13, 13, 13, 0, 13, 0, 13, 0, - 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 0, 15, 15, 15, 15, - 15, 15, 15, 15, 1, 1, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 0, 26, 26, 26, 26, 26, 12, 12, 12, 12, 12, 12, 0, 39, - 39, 39, 39, 86, 86, 86, 86, 77, 77, 77, 77, 79, 79, 79, 79, 60, - 60, 60, 60, 65, 65, 65, 65, 75, 75, 75, 75, 69, 69, 69, 69, 69, - 69, 0, 69, 74, 74, 74, 74, 84, 84, 84, 84, 84, 84, 84, 0, 68, - 68, 68, 68, 92, 92, 92, 92, 87, 87, 87, 87, 19, 9, 19, 19, 19, - 19, 0, 0, 2, 2, 2, 2, 19, 19, 19, 4, 3, 3, 0, 0, 1, - 1, 6, 6, 0, 0, 17, 17, 17, 17, 0, 0, 49, 49, 49, 49, 0, - 1, 1, 1, 71, 71, 71, 71, 67, 67, 67, 67, 42, 42, 42, 42, 41, - 41, 41, 41,118,118,118,118, 53, 53, 53, 53, 59, 59, 59, 59, 40, - 40, 40, 40, 51, 51, 51, 51, 50, 50, 50, 50,135,135,135,135,106, - 106,106,106,104,104,104,104,161,161,161,161,170,170,170,170,110, - 110,110,110, 47, 47, 47, 47, 81, 81, 81, 81,120,120,120,120,116, - 116,116,116,128,128,128,128, 66, 66, 66, 66, 72, 72, 72, 72,173, - 173,173,173, 98, 98, 98, 98, 97, 97, 97, 97, 57, 57, 57, 57, 88, - 88, 88, 88,117,117,117,117,112,112,112,112, 78, 78, 78, 78, 83, - 83, 83, 83, 82, 82, 82, 82,122,122,122,122, 89, 89, 89, 89,130, - 130,130,130,144,144,144,144,165,165,165,165,156,156,156,156,156, - 156, 3, 3,147,147,147,147,148,148,148,148,158,158,158,158,153, - 153,153,153,149,149,149,149, 94, 94, 94, 94, 85, 85, 85, 85,101, - 101,101,101, 96, 96, 96, 96,111,111,111,111,100,100,100,100,100, - 36, 36, 36,108,108,108,108,129,129,129,129,109,109,109,109,107, - 107,107,107,107,107,107, 1,171,171,171,171,137,137,137,137,124, - 124,124,124,123,123,123,123,114,114,114,114,102,102,102,102,126, - 126,126,126,142,142,142,142,125,125,125,125,154,154,154,154,150, - 150,150,150,141,141,141,141,140,140,140,140,121,121,121,121,169, - 169,169,169,133,133,133,133,134,134,134,134,138,138,138,138,143, - 143,143,143,175,175,175,175,145,145,145,145,163,163,163,163, 63, - 63, 63, 63,157,157,157,157, 80, 80, 80, 80,127,127,127,127,166, - 166,166,166,115,115,115,115,159,159,159,159,103,103,103,103,119, - 119,119,119,167,167,167,167,146,146,146,146,172,172,172,172, 99, - 99, 99, 99,136,139, 13, 13,155,155,155,155,136,136,136,136, 17, - 15, 15, 15, 17, 17, 15, 15, 15, 17, 17, 17,139,139,139,139,105, - 105,105,105, 0, 0, 0, 1, 0, 0, 1, 1,131,131,131,131,151, - 151,151,151,160,160,160,160,152,152,152,152,164,164,164,164,168, - 168,168,168,174,174,174,174,113,113,113,113,132,132,132,132, 15, - 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, - 10, 9, 11, 12, 13, 9, 9, 9, 14, 9, 9, 15, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 16, - 17, 9, 9, 9, 9, 18, 9, 9, 9, 9, 9, 19, 20, 21, 9, 22, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 23, 9, 9, 9, 9, 9, 24, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 25, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 26, - 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 2, 2, 2, 2, 45, 46, 47, 2, 2, 2, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 5, 5, 72, 73, 8, 74, 3, 75, 76, 3, 77, 78, + 3, 3, 5, 79, 5, 5, 80, 3, 81, 82, 83, 84, 85, 3, 3, 3, + 86, 87, 2, 88, 89, 90, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 91, 2, 2, 2, 2, + 92, 2, 2, 2, 2, 2, 2, 2, 2, 93, 2, 2, 94, 95, 96, 97, + 98, 99,100,101,102,103,104,105, 2, 2, 2, 2, 2, 2, 2, 2, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 1, 1, 2, 2, 2, 2,106,107, 2, 2,108,109,110,111,112,113, + 2, 2,114,115, 0,116,117,118,119,120,121,122, 2, 2, 2, 9, + 123,124,125,126,127,128,129,130, 2,131,132,133, 6,134,135,136, + 137,138,139,140,141,142,143,144,145,146, 0,147,148,149,150, 0, + 151,152,153,154,155,156,157,158,159,160,161,162, 0,163,164,165, + 2, 2, 2, 2, 2, 2, 2, 2,166, 2, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, + 2, 2, 2, 2, 2, 2, 2, 2,168, 2, 2, 2, 2, 2, 2, 2, + 0, 0,169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2,170,171,172, 2, 0, 0,173, 0,174,175,176,177, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2,178, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 10, 3, 3, 3,179,180, 3, + 3, 3,181,182,183, 6, 8, 0,184,185,186,187,188,189,190,191, + 3, 3, 3, 3,192,193, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, + 195, 7,196, 0, 0,197, 0, 0, 0,198, 0,199, 0,200, 0, 2, + 2,201,202, 0, 0, 0, 0, 0, 6,203,204, 0, 2,205, 0, 0, + 3, 3,206, 3, 3, 0, 3,207, 3, 3, 3, 3, 3, 3, 3, 3, + 3,208, 3, 3, 3, 3, 3, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 209, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, + 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, + 7, 7, 7, 7, 7, 7, 7, 7, 11, 11, 11, 11, 11, 11, 11, 11, + 8, 8, 8, 8, 8, 8, 8, 8, 12, 12, 12, 12, 12, 12, 12, 12, + 9, 9, 9, 9, 9, 9, 9, 9, 13, 13, 13, 13, 13, 13, 13, 13, + 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, + 16, 16, 16, 16, 16, 16, 16, 16, 6, 6, 6, 6, 8, 8, 8, 8, + 9, 9, 9, 9, 9, 1, 1, 1, 1, 4, 4, 9, 9, 9, 9, 9, + 25, 25, 25, 25, 25, 25, 25, 25, 14, 14, 14, 14, 14, 14, 14, 14, + 8, 8, 8, 8, 8, 6, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, + 1, 1, 1, 4, 4, 4, 4, 4, 4, 14, 30, 1, 1, 1, 1, 1, + 9, 9, 9, 9, 9, 10, 10, 10, 9, 9, 9, 9, 9, 7, 7, 7, + 8, 8, 8, 8, 6, 6, 6, 6, 1, 4, 4, 4, 4, 4, 4, 4, + 4, 30, 1, 1, 1, 1, 1, 1, 6, 6, 6, 6, 32, 32, 32, 32, + 24, 24, 24, 24, 24, 24, 24, 24, 9, 9, 9, 9, 9, 9, 9, 10, + 1, 1, 1, 1, 1, 1, 1, 29, 21, 4, 4, 4, 4, 4, 4, 4, + 1, 1, 1, 1, 29, 10, 10, 10, 29, 10, 10, 10, 10, 10, 10, 10, + 1, 1, 1, 1, 1, 1, 1, 4, 6, 6, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 8, 8, + 8, 8, 8, 6, 6, 6, 6, 6, 9, 9, 9, 9, 9, 10, 11, 65, + 73, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 86, 87, 88, + 74, 6, 6, 6, 6, 6, 6, 6, 20, 20, 20, 20, 20, 20, 20, 20, + 19, 8, 8, 8, 8, 8, 8, 8, 22, 1, 1, 1, 1, 1, 1, 1, + 21, 1, 1, 1, 1, 1, 1, 1, 4, 17, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 22, 14, 4, 17, 30, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 22, 18, 4, 22, 1, 1, 1, 1, 1, 1, + 14, 14, 14, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 21, 22, 14, + 10, 10, 10, 10, 60, 7, 7, 7,100, 1, 1, 1, 1, 1, 1, 1, + 14, 18, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 13, 13, 13, 10, + 20, 6, 6, 6, 8, 8, 79, 20, 6, 6, 6, 6, 8, 8,103, 20, + 26, 26, 26, 26, 26, 26, 26, 26, 7, 7, 7, 7, 7, 3, 3, 3, + 63, 7, 7, 7, 7, 7, 7, 7, 1, 1, 34, 1, 1, 1, 1, 1, + 1, 1, 1, 46, 7, 7, 7, 7, 1, 1, 1, 1, 4, 4, 4, 4, + 1, 1, 1, 1, 1, 1, 46, 7, 1, 1, 1, 1, 7, 7, 7, 7, + 1, 1, 1, 1, 1, 1, 14, 18, 1, 1, 1, 1, 1, 1, 1, 21, + 1, 1, 1, 1, 1, 1, 1, 27, 9, 9, 9, 9, 9, 3, 3, 3, + 72, 10, 84, 10, 23, 85, 64, 10, 6, 6, 6, 6, 6, 89, 90,119, + 72, 24, 24, 47, 91,120,121, 92, 36, 7, 74, 10,122,123, 7, 54, + 8, 8, 8, 48, 8, 8, 8, 12, 6, 6, 6, 49, 6, 6, 6, 6, + 12, 12, 12, 12, 19, 19, 19, 19, 19, 19, 19, 19, 6, 12, 12, 12, + 12, 12, 12, 12, 8, 19, 19, 6, 19, 12, 12, 8, 19, 8, 6, 8, + 8, 19, 12, 8, 12, 6, 8, 19, 12, 12, 12, 8, 19, 6, 12, 8, + 19, 8, 19, 19, 12, 50, 12, 6, 1, 1, 93, 19, 94, 93, 19, 19, + 19, 19, 19, 19, 19, 19, 6, 12, 19, 94, 12, 8, 12, 12, 12, 12, + 12, 12, 6, 6, 6, 8, 19, 12, 19, 19, 8, 12, 12, 12, 12, 12, + 6, 6, 1, 6, 6, 6, 6, 6, 13, 20, 20, 13, 13, 13, 13, 13, + 13, 20, 20, 20, 20, 20, 20, 20, 13, 13, 55, 20, 20, 20, 55, 55, + 12, 12, 55, 12, 6, 56, 6, 73, 20, 20, 20,124, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 19, + 6, 8, 12, 6, 12, 12, 12, 12, 6, 6, 12, 75, 19, 12, 19, 8, + 12, 33, 4, 4, 66, 12, 12, 12, 8, 19, 19, 19, 19, 19, 19, 6, + 8, 8, 8, 8, 95, 10, 10, 10, 6, 6, 6, 6, 76, 26,125, 57, + 126, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,127, + 37, 31, 4, 37, 4, 4, 4, 4, 1, 29, 10, 10, 10, 10, 10, 10, + 15, 15, 15, 11, 65, 67, 10, 3, 4, 4, 4, 4, 4, 31,128, 10, + 38, 1, 1, 1, 1, 21, 4, 4, 9, 9, 9, 9, 9, 10, 10, 1, + 1, 1, 39, 4, 4, 4, 96, 33, 4, 4, 68, 51, 40, 4, 4, 1, + 9, 9, 9, 9, 9, 1, 41, 58, 10, 10, 10, 10, 10, 10, 10, 97, + 4, 4, 4, 4, 4, 4, 22, 1, 1, 1, 1, 1, 1, 21, 4, 4, + 4, 4, 13, 47, 10, 13, 51, 24, 1, 1, 1, 4, 4, 51, 4, 4, + 4, 4, 51, 4, 51, 4, 4, 4, 1, 1, 1, 1, 21, 4, 4, 10, + 1, 1, 1, 1,129, 1, 1, 1, 15, 15, 15, 69, 4, 4, 4, 4, + 1, 1, 1, 1, 34, 4, 4, 4, 4, 69, 4, 4, 4, 4, 4, 4, + 1, 1, 1, 1, 1, 17, 22, 14, 18, 4, 4, 4, 17, 14, 18, 14, + 21, 4, 4, 4, 1, 1, 1, 1, 1, 4, 10, 9, 9, 9, 9, 9, + 42, 1, 1, 1, 1, 1, 1, 1, 21, 14, 30, 1, 1, 1, 1, 1, + 18, 4, 4, 17, 14, 14, 18, 1, 1, 1, 1, 27, 14, 14, 1, 1, + 1, 24, 7, 7, 7, 57, 29, 4, 1, 1, 1, 1, 1, 1, 4, 14, + 18, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 22, 1, 1, 1, + 1, 1, 1, 9, 9, 9, 9, 9, 4, 1, 21, 10, 10, 10, 10, 10, + 18, 4, 4, 4, 17, 14, 18, 4, 67, 24, 24, 24,130, 4, 4, 4, + 18, 4, 4, 17, 14, 14, 18, 4, 4, 4, 4, 17, 14, 14, 1, 1, + 58, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 14, + 17, 14, 14, 14, 14, 14, 18, 4, 1, 1, 1, 27, 14, 14, 14, 14, + 7, 43, 3, 3, 57, 3, 3, 3, 17, 14, 22, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 22, 4, 17, 14, 14, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 1, 1, 1, 1, 9, 9, 9, 98, 7, 7, 7, 43, + 21, 14, 39, 1, 1, 1, 1, 1, 14, 14, 14, 17, 14, 14, 4, 4, + 4, 4, 17, 14, 14, 14, 1, 1, 99, 27, 14, 14, 14, 14, 14, 14, + 4, 14, 1, 1, 1, 1, 1, 1, 18, 4, 4, 14, 14, 14, 18, 41, + 3, 3, 1, 27, 7, 7, 7, 59, 7, 7, 7, 7, 43, 1, 1, 1, + 1, 1, 1, 1, 1, 4, 4, 17, 14, 4, 4, 4, 14, 14, 14, 14, + 9, 14, 10, 10, 10, 10, 10, 10, 21, 1, 4, 4, 4, 4, 4,131, + 1, 1, 1, 51, 4, 4, 4, 31, 21, 1, 4, 4, 4, 4, 22, 1, + 1, 1, 1, 13, 4, 4, 4, 4, 9, 9, 9, 9, 9, 9, 1, 1, + 41, 3, 10, 10, 10, 10, 10, 10, 10, 44, 44, 3, 4, 3, 3, 3, + 7, 7, 33, 33, 33, 23, 23, 14, 21, 4, 4, 4, 4, 4, 4, 17, + 4, 4, 31, 4, 1, 1, 21, 4, 4, 4, 4, 4, 4, 4, 4, 3, + 3, 3, 3, 40, 3, 3, 3, 3, 10, 10, 44, 3, 47, 10, 10, 10, + 1, 1, 1, 1, 1, 27, 18, 4, 17, 4, 4, 4, 18, 17, 18, 22, + 1, 1, 1, 14, 4, 1, 1, 4, 22, 14, 30, 27, 14, 14, 14, 1, + 21, 4, 22, 1, 1, 1, 1, 1, 1, 17, 18, 17, 14, 14, 18, 27, + 9, 9, 9, 9, 9, 14, 18, 3, 6, 6, 6, 6, 6, 76, 56, 6, + 1, 1, 1, 1, 1, 1, 21, 4, 1, 1, 1, 1, 1, 1, 41, 39, + 132, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,133, 70, 70, + 1, 1, 1, 1, 1, 29, 10, 16,134, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 17, 14, 14, 14, 14, 30, 1, 4, 61, 10, 10, 10, 10, 10, + 1, 1, 4, 18, 4, 4, 4, 14, 14, 14, 14, 17, 18, 4, 4, 4, + 4, 4, 10, 42, 10, 67, 21, 4, 10, 10, 10, 77, 10, 37, 4, 69, + 1, 34, 1, 1, 1, 1, 1, 1, 1, 1, 21, 22, 1, 1, 1, 1, + 1, 1, 1, 1, 21, 1, 1, 1, 4, 17, 14, 18, 17, 14, 14, 14, + 14, 17, 14, 14, 18, 4, 4, 4, 3, 3, 10, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 7, 7, 3, 1, 1, 1, 21, 17, 18, 4, 10, + 1, 1, 27, 17, 4, 4, 4, 4, 17, 17, 18, 4, 4, 4, 17, 14, + 10, 10, 10, 42, 10, 10, 10, 10, 4, 4, 4, 4, 4, 4, 4, 78, + 4, 4, 30, 1, 1, 1, 1, 1, 1, 1, 17, 4, 4, 17, 17, 14, + 14, 17, 30, 1, 1, 1, 1, 10, 44, 3, 3, 3, 3, 33, 4, 4, + 4, 4, 3, 3, 3, 3, 47, 10, 27, 4, 4, 14, 4, 18, 4, 1, + 1, 1, 1, 17, 4, 14, 18, 18, 4, 14, 14, 14, 14, 14, 10, 10, + 1, 1, 14, 14, 14, 14, 4, 4, 4, 4, 14, 4, 4, 31, 10, 10, + 9, 9, 9, 9, 9, 9, 99, 1, 6, 6, 6, 6, 19, 6, 6, 6, + 4, 31, 4, 4, 4, 4, 4, 4, 17, 4, 4, 4, 22, 1, 21, 1, + 1, 1, 22, 27, 4, 1, 1, 1, 6, 6, 6, 6, 6, 6, 13, 13, + 13, 13, 13, 13, 13, 56, 6, 6, 6, 6, 6, 6, 56, 6, 6, 6, + 6, 6, 6, 6, 6,101, 13, 13, 12, 12, 12, 6, 6, 6, 6, 12, + 6, 6, 6, 6, 19, 8, 8, 8, 6, 6, 6, 6, 8, 8, 79,102, + 62, 62, 62, 62, 62,135, 15, 15, 26, 26, 26, 10, 45,104, 45,104, + 10, 10, 10, 10,136, 15, 15,137, 10, 10, 10, 10,105,106, 10,107, + 108, 10, 52, 53, 10, 10, 10, 10, 10, 65,108, 10, 10, 10, 10,138, + 139, 13, 7, 7, 7, 11, 52,140, 7, 7, 7, 7, 7, 11, 52, 70, + 4, 4, 4, 4, 4, 4,141, 66, 78, 66, 78, 4, 4, 4, 4, 4, + 3, 71, 3, 80, 3, 19, 8, 6, 8, 12, 80, 3, 75, 8, 8, 3, + 3, 3, 71, 71, 71, 8, 8,142, 8, 8, 50, 1,109, 3, 6, 8, + 11, 11, 75, 6, 6, 36, 3,110, 16,143,144, 16,111, 3, 3, 3, + 11, 11, 35, 3, 3, 11, 3, 3, 35, 36, 3, 35, 3, 3, 3, 35, + 3, 3, 3, 3, 3, 3, 3, 11, 3, 35, 35, 3, 3, 3, 3, 3, + 3, 3, 11, 11, 11, 11, 11, 11, 3, 3, 3, 3, 23, 23, 3, 3, + 11, 3, 3, 3,145,146, 3, 3, 3, 3, 3, 3, 3, 3, 35, 3, + 3, 3, 3, 3, 3, 36, 11, 11, 11, 11, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 11, 11, 11, 3, 3, 3, 3, 3, 3, 3, + 7, 7, 7, 7, 7, 7, 3, 3, 3, 3, 3, 3, 3, 7, 7, 7, + 3, 3, 3, 36, 3, 3, 3, 3, 36, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 11, 11, 11, 11, 3, 3, 3, 3, 3, 3, 3, 36, + 3, 3, 3, 3, 23, 23, 23, 23, 23, 23, 23, 7, 7, 7, 7, 7, + 7, 7, 3, 3, 3, 3, 3, 3, 11, 11, 52,112, 11, 11, 11, 11, + 11, 11, 11, 23, 23, 23, 23, 23, 11, 52, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28,112, 11, 11, 11, 11, 11, 11, 11, 23, 23, 11, 11, + 11, 11, 11, 11, 11, 11, 23, 11, 11, 11, 35, 36, 11, 11, 35, 3, + 12, 8, 12, 19, 19, 19, 19, 8, 12, 12, 19, 6, 6, 6, 13, 8, + 12, 12,110, 3, 3, 80, 19,147, 4, 12, 6, 6, 76, 10, 60, 10, + 1, 1, 1, 1, 1, 1, 1, 34, 10, 10, 10, 10, 10, 10, 10, 37, + 10, 45, 45, 10,105,106, 45, 10, 10, 10, 10, 64, 10, 77, 45, 10, + 45, 23, 23, 23, 23, 10, 10, 42, 10, 10, 10, 10, 10, 26, 10, 10, + 77,148, 10, 10, 10, 10, 10, 10, 3, 10, 81, 28, 28, 28,149, 26, + 72, 10,150,113, 23, 23, 23, 23, 23, 3, 23, 23, 23, 23,114, 70, + 151, 16, 16, 16, 16, 4, 4, 14,115, 13, 13, 3, 16,152, 29, 3, + 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21,153,116, 38, + 1, 1, 1, 1, 1, 29, 13, 38, 3, 7, 7, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1,117, 10, + 12, 12, 12, 12, 12, 12, 12, 21, 66,154, 4, 4, 4, 4, 4, 42, + 12, 12, 12, 12, 12, 12, 13, 4, 1, 1, 1, 16, 16, 16, 16, 16, + 4, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20,116, 13, 13, 13, 13, + 20, 12, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, + 56, 6, 6, 6, 19, 19, 19, 12, 12, 12, 12, 12, 55,155, 19, 50, + 12, 12, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 12, + 8, 8, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 19, 19, 12, 12, + 12, 12, 12, 12, 12, 12, 8, 8, 95, 13,156, 50, 13, 50, 1, 1, + 1, 22, 1, 22, 1, 21, 1, 1, 1, 27, 18, 17, 3, 3, 4, 4, + 7, 7, 7, 3, 82, 3, 3, 3, 1, 1, 10, 10, 10, 10, 10, 10, + 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 14, 14, 14, 14, 14, + 14, 14, 4, 4, 4, 4, 4, 10, 4, 1, 1, 1, 10, 39, 39, 21, + 1, 1, 1, 4, 4, 4, 4, 10, 1, 1, 1, 21, 4, 4, 4, 4, + 4, 14, 14, 14, 14, 14, 14, 61, 1, 21, 14, 4, 4, 14, 4, 14, + 61, 10, 10, 10, 10, 10, 10, 42, 1, 1, 21, 38, 1, 1, 1, 1, + 1, 1, 1, 1, 21, 4, 4, 17, 18, 17, 18, 4, 4, 4, 4, 4, + 1, 21, 1, 1, 1, 1, 17, 14, 9, 9, 9, 9, 9, 9, 10, 10, + 38, 1, 1, 41, 3, 27, 17, 1, 22, 4, 22, 21, 22, 1, 1, 4, + 1, 1, 1, 1, 1, 1, 34, 10, 1, 1, 1, 1, 1, 27, 4, 14, + 10, 34,157, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6,102, 13, 13, + 6, 6, 6, 6,101, 20, 20, 20, 1, 27, 18, 14, 17, 61, 18, 4, + 6, 6, 6, 6, 6, 6, 50, 22, 1, 1, 1, 1,158, 1, 1, 1, + 1, 20, 20, 20, 20, 20, 20, 20, 20, 91, 3, 3, 3, 3, 3, 3, + 3, 58, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 28, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 82, 3, 10, 10, 10, 81, 53, 10, 10, 10, + 64,159,160, 28, 28, 28, 28, 28, 28, 28, 53, 81, 53, 10,107,161, + 10, 10, 10, 10,114, 28, 28, 53, 10,162, 11, 11, 67, 10, 10, 10, + 1, 1, 1, 1, 1, 1, 1,163, 10, 10, 84, 10, 23, 85, 64, 10, + 6, 6, 6, 6, 6, 89, 90, 52, 53, 23, 10, 1, 1, 1, 1, 1, + 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, + 24,164, 57, 24, 36, 11, 35, 3, 3, 3, 3, 3,165, 15, 3, 3, + 10, 10, 10, 60, 7, 7, 7, 7, 7, 7, 7, 43, 3, 3, 3, 3, + 16, 16,111, 7, 43, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 3, + 3, 3, 3, 3, 3, 3, 33, 4, 83, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 59, 1,113, 1, 1, 1, 1, 16, 16, 16, + 166, 16, 16, 16, 16, 16, 16, 16, 8, 8, 8, 12, 6, 6, 6, 6, + 1, 1, 1, 29, 7, 7, 7, 7, 1, 1, 1, 41, 63, 7, 7, 7, + 1, 1, 1, 1, 1, 46, 7, 7, 1, 1, 1, 7, 7, 7, 7, 54, + 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 46, 54, + 1, 1, 1, 1, 58, 1, 1, 1, 1, 1, 21, 4, 4, 83, 7, 7, + 6, 6, 6, 6, 6, 7, 7, 7, 1, 1, 4, 4, 4, 4, 4, 4, + 9, 9, 9, 9, 9, 1, 1, 38, 8, 8, 8, 8,167, 4, 4,115, + 6, 6, 6, 6, 6, 6, 6, 11, 1, 1, 1, 1, 1, 21,168, 26, + 44, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, + 7, 7, 7, 59, 1, 1, 1, 1, 83, 7, 54, 10, 10, 10, 10, 10, + 1, 4, 4, 10, 10, 10, 10, 10, 1, 1, 46, 7, 7, 7, 7, 7, + 18, 30, 1, 1, 1, 1, 1, 1, 4, 4, 4, 31, 10, 10, 10, 10, + 10, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 9, 9, 9, 9, + 22, 21, 22, 1, 1, 1, 1, 21, 14, 18, 4, 17, 18, 31, 97, 10, + 10, 4, 4, 4, 4, 4, 96, 15, 1, 1, 1, 21, 4, 4, 18, 4, + 4, 4, 4, 9, 9, 9, 9, 9, 10, 10, 27, 30, 1, 1, 1, 1, + 1, 21, 10, 1, 1, 1, 1, 1, 1, 27, 14, 4, 4, 4, 4, 17, + 30, 1, 29, 10, 37, 4, 31, 18, 9, 9, 9, 9, 9, 29, 29, 10, + 60, 7, 7, 7, 7, 7, 7, 7, 4, 14, 17, 4, 10, 10, 10, 22, + 17, 14, 14, 14, 14, 14, 14, 14, 1, 1, 1, 27, 14, 14, 30, 1, + 1, 14, 14, 4, 4, 4, 4, 4, 1, 1, 1, 1, 14, 18, 4, 4, + 4, 14, 14, 14, 14, 14, 14, 17, 22, 22, 10, 10, 10, 10, 10, 10, + 37, 4, 4, 4, 4, 4, 4, 4, 1, 1, 27, 14, 4, 4, 4, 4, + 14, 4, 17, 22, 1, 29, 10, 10, 9, 9, 9, 9, 9, 10, 10, 22, + 14, 18, 4, 4, 17, 17, 14, 18, 17, 4, 1, 39, 1, 1, 1, 1, + 14, 4, 4, 4, 14, 14, 4, 18, 31, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 1, 1, 4, 4, 14, 18, 4, 4, 4, 17, 18, 18, + 31, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 18, 14, + 4, 4, 4, 18, 29, 10, 10, 10, 1, 1, 1, 1, 1, 1, 21, 18, + 14, 4, 4, 18, 4, 4, 4, 4, 9, 9, 9, 9, 9, 7, 10, 44, + 4, 4, 4, 4, 18, 31, 10, 10, 7, 7, 7, 7, 7, 7, 7, 59, + 14, 14, 14, 14, 14, 18, 17, 22, 30, 18, 10, 10, 10, 10, 10, 10, + 27, 14, 4, 4, 4, 4, 14, 14, 22, 39, 14, 14, 14, 14, 14, 14, + 21, 4, 4, 4, 4, 22, 1, 1, 1, 21, 4, 4, 17, 21, 4, 31, + 10, 10, 10, 37, 4, 4, 4, 4, 21, 4, 4, 17, 18, 4, 1, 1, + 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 17, 4, 10, 39, 10, + 17, 4, 17, 17, 14, 14, 14, 14, 4, 4, 4, 4, 4, 4, 4, 18, + 10, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 17, 4, 4, 4, + 17, 4, 18, 4, 4, 4, 4, 4, 4, 4, 4, 21, 4, 4, 4, 4, + 1, 1, 1, 1, 1, 14, 14, 14, 4, 17, 18, 18, 1, 1, 1, 1, + 1, 1, 1, 1, 34, 1, 1, 1, 1, 21, 17, 61, 10, 10, 10, 10, + 4, 27, 1, 1, 1, 1, 1, 1, 1, 1, 14, 4, 4, 4, 4, 14, + 17, 31, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 4, 4, 4, + 7, 7, 43, 3, 3, 3, 57, 24, 82, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 47, 22, 1, 1, 21, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 14, 18, 4, 4, 4, 31, 10, 10, 10, 10, 10, + 4, 4, 4, 31, 10, 10, 3, 3, 13, 13, 44, 3, 3, 3, 3, 3, + 9, 9, 9, 9, 9,169, 7, 7, 7, 59, 1, 1, 1, 1, 1, 1, + 13, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 34,117, 10, + 7, 7, 7, 54, 10, 10, 10, 10, 8, 8, 8, 8, 8, 12, 6, 6, + 27, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, + 4, 68, 13, 13, 13, 13, 13, 13, 13, 42, 4, 4, 4, 4, 4, 4, + 14, 13, 16, 16, 16, 16, 16, 16, 1, 1, 1, 1, 1, 1, 33, 31, + 3, 3,118, 18, 4, 3,118, 14, 14,170, 15, 15, 15, 69, 4, 4, + 4, 40, 33, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, + 3, 4, 40, 3, 3, 3, 3, 3, 48, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 49, 6, 6, 6, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 48, 6, 6, 6, 6, 49, 6, 6, 6, 8, 8, + 8, 8, 48, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 49, + 6, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 48, + 6, 6, 6, 6, 49, 6, 6, 6, 8, 8, 8, 8, 48, 6, 6, 6, + 6, 49, 6, 6, 6, 12, 6, 9, 4, 4, 4, 40, 3, 33, 4, 4, + 4, 4, 4, 4, 4, 4, 40, 3, 3, 3, 33, 3, 3, 3, 3, 3, + 3, 3, 40, 47, 10, 10, 10, 10, 10, 10, 10, 10, 10, 37, 4, 4, + 6, 6, 6, 6, 6,109, 6, 6, 4, 4, 4, 68, 13, 13, 13, 13, + 9, 9, 9, 9, 9, 9, 9, 41, 1, 1, 1, 1, 1, 1, 4, 4, + 9, 9, 9, 9, 9, 9, 9,171, 1, 1, 1, 1, 1, 34, 4, 4, + 172, 9, 9, 9, 9, 9, 9, 98, 1, 21, 1, 22, 1, 1, 1, 4, + 1, 1, 21, 4, 4, 4, 4, 34, 6, 6, 4, 4, 4, 68, 13, 13, + 7, 7, 7, 7, 7, 7, 63, 7,173, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 63, 7, 7, 7, 7, 7, 7, 43, 3, + 3, 3, 3, 3, 3, 92, 20, 20, 2, 2, 7, 7, 3, 3, 26, 26, + 12, 12, 4, 4, 5, 5, 15, 15, 9, 9, 13, 13, 21, 21, 25, 25, + 9, 5, 6, 6, 10, 10, 1, 1, 14, 14, 12, 10, 10, 12, 5, 9, + 24, 24, 7, 12, 12, 7, 22, 18, 23, 23, 0, 0, 17, 17, 7, 10, + 18, 22, 7, 21, 10, 7, 12, 21, 8, 8, 26, 12, 7, 6, 25, 26, + 26, 25, 21, 12, 6, 7, 21, 7, 12, 26, 7, 26, 21, 6, 15, 26, + 21, 26, 20, 19, 7, 15, 26, 21, 9, 25, 5, 25, 5, 7, 6, 12, + 25, 22, 18, 21, 15, 21, 6, 24, 6, 5, 26, 23, 26, 7, 15, 7, + 21, 15, 10, 21, 29, 29, 26, 15, 21, 17, 25, 21, 11, 11, 21, 23, + 12, 6, 1, 12, 18, 18, 9, 26, 29, 21, 21, 9, 24, 5, 25, 9, + 5, 21, 17, 21, 11, 12, 8, 24, 26, 9, 21, 22, 23, 26, 12, 15, + 23, 21, 21, 25, 9, 22, 21, 18, 24, 16, 5, 22, 25, 18, 24, 26, + 26, 24, 9, 8, 8, 5, 9, 6, 12, 1, 21, 1, 13, 21, 13, 7, + 17, 7, 5, 6, 5, 24, 9, 24, 22, 20, 21, 20, 19, 21, 21, 16, + 16, 21, 7, 5, 5, 26, 14, 15, 18, 25, 7, 14, 17, 22, 17, 6, + 24, 6, 6, 21, 26, 10, 25, 0, 7, 20, 25, 1, 24, 15, 7, 19, + 9, 21, 17, 26, 23, 12, 17, 12, 1, 21, 24, 7, 23, 7, 12, 23, + 29, 7, 7, 22, 14, 7, 29, 1, 27, 28, 1, 29, 21, 29, 15, 6, + 18, 6, 12, 11, 26, 5, 14, 9, 5, 14, 26, 22, 18, 26, 5, 12, + 22, 21, 18, 17, 26, 6, 26, 14, 14, 6, 12, 24, 11, 21, 24, 9, + 6, 9, 6, 10, 7, 25, 17, 16, 16, 22, 16, 16, 25, 17, 7, 1, + 25, 24, 26, 1, 21, 14, 9, 12, 12, 17, 13, 15, 10, 1, 13, 23, + 7, 13, 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, + 11, 12, 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 37, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, + 0, 0, 0, 0, 41, 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 9, 0, 0, 0, 10, + 11, 12, 13, 0, 14, 15, 16, 0, 17, 18, 19, 20, 21, 1, 22, 1, + 23, 1, 2, 1, 2, 1, 2, 0, 2, 1, 24, 1, 2, 25, 2, 0, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0, 36, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, + 39, 0, 0, 40, 0, 41, 0, 0, 0, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, + 0, 0, 0, 0, 54, 0, 3, 0, 55, 56, 0, 57, 0, 0, 0, 0, + 0, 0, 58, 59, 60, 0, 0, 0, 0, 61, 0, 0, 62, 63, 64, 4, + 65, 0, 0, 66, 67, 0, 0, 0, 68, 0, 0, 0, 0, 69, 0, 0, + 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 71, 0, 0, 0, 72, 0, 73, 0, 0, 74, 0, 0, 75, 0, 0, 0, + 0, 0, 0, 0, 0, 76, 77, 0, 0, 0, 0, 78, 79, 0, 80, 81, + 0, 0, 82, 5, 0, 83, 4, 0, 84, 85, 0, 0, 86, 87, 88, 0, + 89, 0, 90, 0, 91, 0, 0, 3, 92, 3, 0, 93, 0, 94, 0, 0, + 0, 5, 0, 0, 0, 95, 96, 0, 97, 98, 99,100, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0,101,102, 0, 0, 0, 0, 0, 0,103, 0, + 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0,105, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0,107, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,108,109, 0, 0,110, 0, 0, 0, 0, 0, + 0,111, 0,112, 0, 6, 0, 0, 0, 0, 0,113,114, 0, 0, 0, + 0, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,117, 0, 0, 0, + 0, 0, 0, 0,118, 0,119, 0, 0, 0, 0, 0, 0, 0, 2, 1, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 14, 0, + 0, 0, 16, 3, 17, 18, 19, 20, 21, 22, 0, 23, 0, 0, 0, 0, + 24, 25, 26, 27, 0, 0, 0, 0, 28, 0, 0, 29, 30, 0, 31, 0, + 32, 33, 0, 0, 34, 0, 35, 36, 0, 0, 0, 0, 0, 37, 38, 0, + 39, 40, 0, 0, 41, 0, 0, 0, 42, 0, 0, 43, 44, 45, 46, 1, + 47, 0, 0, 1, 0, 0, 7, 1, 48, 0, 0, 0, 0, 0, 49, 50, + 0, 0, 0, 0, 0, 0, 51, 52, 0, 0, 0, 0, 0, 0, 53, 54, + 0, 0, 0, 0, 55, 0, 56, 0, 0, 0, 57, 58, 0, 0, 0, 59, + 0, 0, 0, 0, 0, 0, 60, 12, 0, 0, 0, 0, 61, 0, 0, 0, + 62, 0, 5, 0, 63, 0, 0, 0, 0, 64, 0, 0, 0, 0, 65, 0, + 66, 0, 0, 0, 0, 6, 67, 0, 0, 0, 68, 69, 70, 71, 0, 0, + 0, 0, 72, 5, 0, 73, 74, 0, 0, 75, 0, 0, 0, 76, 77, 0, + 0, 0, 78, 0, 79, 80, 81, 82, 83, 3, 84, 0, 85, 86, 87, 0, + 0, 8, 9, 0, 0, 3, 3, 0, 0, 88, 0, 0, 89, 0, 0, 0, + 0, 8, 90, 0, 91, 0, 0, 0, 0, 0, 9, 10, 0, 92, 0, 5, + 0, 3, 9, 0, 0, 93, 0, 0, 94, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 95, 96, 0, 0, 10, 0, 0, 1, 0, 0, 97, 0, 0, 0, + 0, 98, 0, 0, 0, 0, 12, 0, 0, 13, 0, 0, 0, 0, 99,100, + 0, 0,101, 0, 0,102, 0, 0, 0,103, 0, 0, 0,104, 0, 0, + 0,105, 0, 0, 0, 0,106,107, 13, 0, 0,108, 0, 0, 0, 10, + 0, 0,109,110, 0, 0,111,112, 0, 0, 0, 0, 0, 0,113, 0, + 0,114, 0, 0, 0, 0,115, 1, 0,116,117,118, 6, 0, 0,119, + 7, 0, 0,120, 0, 0, 0,121, 0, 0, 0, 0, 0, 0,122, 0, + 0,123, 0, 0, 0, 0,124, 11, 0, 0, 0, 0, 0, 6, 0, 0, + 0, 0, 5, 15, 0, 0, 0, 0,125, 0, 0,126, 0, 0, 0, 0, + 15, 0, 0,127, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,128, 0, + 0, 0,129, 0,130, 0, 0, 0, 0,131,132,133, 0,134, 0,135, + 0, 0, 0,136,137,138, 0, 8, 0, 0, 0, 0, 0, 7, 0, 0, + 0,139, 0, 0, 0,140, 0, 0, 0,141, 0, 0, 0,142,143, 0, + 144, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 9, + 1, 1, 1, 1, 0, 0, 0, 2, 0, 3, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 0, 6, 11, 0, 0, 0, 0, 14, 0, 0, + 15, 0, 0, 0, 0, 0, 0, 17, 29, 0, 0, 0, 0, 0, 31, 0, + 0, 2, 0, 0, 1, 12, 0, 0, 1, 49, 50, 5, 51, 52, 53, 5, + 5, 22, 32, 23, 1, 54, 24, 55, 16, 33, 56, 57, 58, 1, 1, 1, + 6, 1, 0, 0, 59, 7, 60, 1, 34, 5, 7, 61, 62, 63, 64, 65, + 66, 67, 0, 0, 1, 1, 68, 0, 0, 0, 69, 70, 71, 35, 1, 25, + 72, 0, 0, 0, 0, 8, 1, 26, 16, 26, 73, 27, 74, 0, 0, 0, + 36, 25, 75, 37, 7, 37, 76, 0, 0, 0, 6, 1, 7, 0, 0, 17, + 0, 8, 38, 1, 1, 13, 13, 11, 0, 0, 39, 0, 0, 6, 18, 1, + 0, 0, 8, 16, 5, 1, 1, 1, 77, 7, 36, 18, 78, 7, 35, 1, + 79, 10, 0, 0, 0, 80, 0, 0, 0, 0, 2, 3, 0, 0, 14, 0, + 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 84, 0, + 0, 0, 40, 0, 0, 85, 86, 0, 87, 88, 89, 90, 91, 92, 0, 0, + 0, 93, 0, 0, 0, 15, 28, 0, 0, 0, 0, 13, 0, 41, 0, 0, + 14, 0, 0, 20, 0, 0, 94, 0, 0, 0, 95, 0, 0, 6, 29, 0, + 0, 13, 1, 96, 1, 18, 33, 97, 25, 23, 7, 1, 1, 1, 1, 27, + 1, 7, 98, 0, 0, 9, 0, 0, 0, 0, 6, 23, 1, 0, 0, 0, + 0, 0, 30, 0, 0, 21, 0, 0, 30, 0, 0, 0, 0, 15, 0, 0, + 12, 32, 24, 5, 99, 22, 42, 17, 0, 10, 11, 0, 7, 1, 7,100, + 101, 1, 1, 1, 1,102,103,104,105, 1,106, 10, 20,107,108, 5, + 10, 0, 0, 0, 0, 0,109,110, 0, 0,111, 0, 0, 1, 1, 11, + 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 43, 40, 2, 0, 0, 0, + 44,112, 10, 8, 20, 0, 0, 0, 0, 0, 0,113, 1, 16, 5, 24, + 0, 8, 12, 0, 0, 0, 0,114, 0, 0,115, 2, 0,116, 0, 0, + 0, 1, 0, 0, 0, 0, 13, 11, 0, 0, 6, 10, 0, 0, 45, 39, + 0, 45, 16, 18, 46, 27, 0, 0, 3, 0, 0, 2, 12, 0, 0, 0, + 2, 3, 0, 0, 3, 0, 21, 0, 0, 31, 0, 0, 0, 0,117, 0, + 0, 0, 15, 9, 0, 8, 1, 10, 1, 10, 0, 0, 0, 0, 0, 30, + 14, 21, 0, 0, 47, 0, 0, 0, 9, 0, 0, 0, 0, 47, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 28, 0, 0, 4, 0, 21, 41, 0, 0, + 28, 0, 0, 0, 22, 42, 0, 0,118, 0, 0, 0, 0, 0, 0,119, + 0,120,121,122,123, 0, 43, 5, 48, 13, 34, 0, 0, 0, 8, 11, + 8, 10, 0, 0, 1, 12, 1, 1, 1, 1, 26, 1, 38, 44, 12, 0, + 0, 0, 0, 1, 0, 0, 0,124, 0, 0, 0, 46, 6, 19, 0, 8, + 0, 20, 0, 0, 5, 48, 0, 0, 0, 1,125, 0, 0, 0, 0,230, + 230,230,230, 0, 0, 0, 9, 9, 0, 0, 0, 0, 9, 0, 0,220, + 220,220,220, 0, 0, 0,230,230,230,220,230, 0, 0,230,230, 7, + 0, 0, 0,230, 0, 0, 0,230,230, 0, 0,230,230,230, 0, 0, + 230,230,230, 0, 0, 9, 0, 0, 0, 0, 7,230,230,230,220, 0, + 220, 0, 0,230,220,220,220, 0, 0,230, 0, 0,230, 0, 0, 0, + 0, 7, 0, 1, 1, 1, 1,220,230,230,230,220,220,230,230,220, + 230,230,220,230, 0, 0,230,230,220, 0, 0, 0, 9, 9, 0,220, + 0, 0, 0, 0, 0, 9, 9, 0, 9, 7, 0, 1,220,220,220,220, + 220,220,230,230,230,220,220,230,220,220,230,230,220,230,230,220, + 230,220,230,230,230, 0,230, 0,220,220,220,220,220, 0, 0, 9, + 9, 0, 0, 1, 0, 0, 0, 0, 0, 0,220,230, 0,230,230, 0, + 0,220,220, 0, 0,230,220, 0, 0, 9, 7,220,220,220, 0,230, + 232,220,220,220,220,232,216,220,202,202,220,220,220,220,202,202, + 220,220,220,230,240,230,220,230,220,220, 0,232,220,220,230,233, + 234,234,233,234,234,233,230, 0,220,230,230,230,230,222,220,230, + 222,228,230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, + 22, 0, 23, 0, 24, 25, 0,230,220, 0, 18, 30, 31, 32, 0, 0, + 0, 0, 27, 28, 29, 30, 31, 32, 33, 34,230, 35, 0, 0, 0,230, + 0,220,230, 0, 36, 0, 0,220,220,230,220,220,230,230, 0,230, + 230, 0,220, 27, 28, 29,230, 0,230,220,230, 0, 84, 91, 0,103, + 103, 9, 0,107,107,107,107,118,118, 9, 0,122,122,122,122, 0, + 220, 0,220, 0,216, 0, 0, 0,129,130, 0,132, 0, 0, 0, 0, + 0,130,130,130,130, 0, 0,130, 0,230,230, 9, 0,230,230, 0, + 0,220, 0, 0,228, 0, 0, 0,222,230,220,230, 0, 0,220,230, + 220, 0,220,230,230,230,234,230, 0, 1, 1,230,234,214,220,202, + 230,230,230,230,230,232,228,228,220,218,230,233,220,230,220,230, + 230, 1, 1, 1, 1, 1,230, 0, 1, 1,230,220,230, 1, 1, 0, + 0,218,228,232,222,224,224, 0, 8, 8, 0,220, 0, 0,230, 0, + 0, 26, 0, 0,220, 0,230,230, 1,220, 0, 0,230,220, 0, 0, + 7, 9, 0, 6, 6, 0, 0, 0, 0, 1, 0, 0,216,216, 1, 1, + 1, 0, 0, 0,226,216,216,216,216,216, 0,232,232,220,230,230, + 230, 7, 0, 1, 0, 0, 32, 0, 48, 0, 0, 84, 96,135,144, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,176, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 40, 0, 0, + 0, 0, 0, 48, 56, 64, 0, 0, 0, 0, 0, 72, 80, 88, 96,104, + 0, 0, 0, 0, 0, 0, 0, 0,112, 0,120, 0, 0, 0, 0, 0, + 0,128,136,144,152,160,168, 0, 0, 0,176,184,192, 0, 0, 0, + 0, 0, 0,200, 0, 0, 0, 0, 0, 0, 0, 0,208, 0, 0,216, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 36, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 0, 0, 64, 0, + 68, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40, 20, 0, 0, 0, 0, 0, 0, + 20, 0, 20, 0, 0, 0, 0, 0, 0, 0, 76, 80, 84, 88, 0, 0, + 12, 92, 96, 28, 0,100,104, 4, 4, 4,108, 44,112,116,120, 4, + 124, 0,128,132, 4, 4, 48,136,140, 0, 32, 0, 0, 0, 40, 0, + 0, 0, 0, 0, 0, 0, 4, 48, 0, 52,144, 20,148,152, 4, 0, + 0,156,160,164,168,172, 4, 0,176, 56, 60,180, 32, 0, 16,184, + 56, 0, 0, 0, 0, 0, 52, 12, 12, 0, 0, 0, 0, 12, 0, 0, + 188, 8, 8, 8, 8,192,196, 8, 8, 8, 8,200,204,208,212, 60, + 44, 0, 0, 0, 0, 0, 0, 0,216, 28,220, 0, 12, 4, 16, 0, + 0, 0, 0,224,228, 0, 0, 0, 0, 0, 4,232, 32, 0, 0, 0, + 0, 0, 0, 0,236, 12, 0, 0, 0, 0, 16, 0, 36, 0, 0, 0, + 24, 0, 0, 0,240,244, 0, 0, 0, 0, 2, 2, 2, 2, 4, 4, + 4, 4, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 6, 8, 0, 10, + 12, 0, 0, 2, 2, 0, 2, 2, 0, 0, 0, 0, 14, 16, 6, 8, + 0, 0, 4, 8, 0, 0, 2, 2, 2, 0, 0, 6, 4, 8, 2, 0, + 2, 0, 0, 0, 0, 6, 0, 20, 0, 0, 0, 22, 0, 0, 0, 6, + 8, 0, 24, 26, 28, 0, 0, 0, 30, 0, 0, 0, 0, 32, 34, 36, + 38, 0, 0, 40, 42, 0, 0, 0, 18, 0, 0, 0, 2, 2, 2, 2, + 0, 2, 2, 2, 0, 6, 44, 0, 0, 0, 0, 2, 0, 46, 48, 50, + 0, 0, 52, 0, 0, 0, 6, 4, 54, 0, 2, 0, 0, 2, 2, 56, + 58, 60, 0, 62, 64, 18, 2, 10, 12, 0, 0, 0, 66, 8, 0, 2, + 2, 2, 0, 6, 4, 4, 4, 4, 68, 2, 70, 4, 4, 4, 8, 72, + 0, 0, 74, 76, 2, 0, 78, 0, 0, 0, 4, 8, 2, 0, 0, 0, + 80, 0, 6, 4, 4, 4, 4, 8, 0, 2, 2, 2, 2, 6, 4, 4, + 4, 8, 0, 0, 0, 82, 0, 84, 86, 0, 0, 0, 2, 88, 0, 0, + 0, 90, 6, 8, 2, 0, 0, 0, 6, 4, 4, 4, 8, 0, 2, 0, + 2, 2, 6, 4, 4, 8, 0, 10, 12, 6, 8, 2, 0, 0, 50, 84, + 118,152, 17,161, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 5, 16, 17, 18, 1, 1, 1, 1, 1, 1, 19, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 20, 21, 22, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 0, 35, 4, 4, 4, 4, 4, 36, 0, 0, 0, + 0, 0, 0, 37, 0, 38, 39, 3, 3, 3, 3, 3, 3, 40, 41, 0, + 0, 0, 0, 0, 0, 0, 42, 43, 0, 0, 44, 0, 0, 0, 45, 46, + 5, 47, 48, 49, 50, 51, 52, 53, 5, 5, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 6, 0, 0, 6, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 54, 0, 0, 55, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, + 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, + 3, 3, 3, 1, 1, 1, 1, 1, 0, 0, 0, 26, 27, 8, 8, 8, + 28, 29, 30, 19, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 2, 2, 13, + 13, 13, 56, 11, 11, 11, 11, 11, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 8, 8, 16, 16, 72, 73, 74, 75, 3, + 3, 3, 3, 20, 20, 3, 3, 3, 3, 3, 3, 76, 77, 78, 79, 3, + 1, 1, 80, 81, 82, 83, 84, 85, 86, 87, 3, 1, 1, 1, 88, 1, + 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 89, 21, 21, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101, 0, 0, 1, 1, 1, + 1,102, 9, 9, 9,103, 9,104,105,106,107, 22, 22,108,109, 0, + 110,111,112,113,114,115,116, 17, 17, 17, 8,117,118,119,120,121, + 122,123,124,125,126,127,128, 9,129,130,131,132,133,134,135,136, + 137,138,139,140,141, 0,142,143,144,145, 0,146,147,148,149,150, + 151,152,153,154,155,156,157, 0,158,159,160, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,161, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0,162, 0, 0, + 0, 0, 0, 14, 14, 14, 14,163,164, 23, 23, 0, 0,165, 0,166, + 167,168,169, 4, 4, 4, 4, 4, 4, 15, 15, 15, 15, 4, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,170,171,172,173, 18, 18, + 18, 0, 0,174,175, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, + 3,176, 3, 3, 3,177,178, 16, 3, 3, 0, 10, 10, 10, 10, 10, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,179, 19,180, 0, 0, + 181, 0, 0, 0,182, 0,183, 0,184, 0, 13, 24, 24,185, 0, 0, + 0, 0, 0, 3, 3, 3, 0, 9, 9, 0, 0, 3, 3, 3, 3,186, + 0, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 25, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, + 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 8, + 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 7, + 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 10, + 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 16, + 16, 16, 16, 16, 16, 16, 16, 12, 12, 12, 12, 12, 12, 12, 12, 13, + 13, 13, 13, 13, 13, 13, 13, 18, 18, 18, 18, 18, 18, 18, 18, 17, + 17, 17, 17, 17, 17, 17, 17, 20, 20, 20, 20, 20, 20, 20, 20, 19, + 19, 19, 19, 19, 19, 19, 19, 15, 15, 15, 15, 15, 15, 15, 15, 25, + 25, 25, 25, 25, 25, 25, 25, 23, 23, 23, 23, 23, 23, 23, 23, 26, + 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 28, + 28, 28, 28, 28, 28, 28, 28, 14, 14, 14, 14, 14, 14, 14, 14, 3, + 3, 3, 3,118,119,118,119, 3, 3,156,156, 7,157, 7,157, 7, + 7, 7,158, 3, 3,180, 3, 14, 14, 14, 14, 14, 14, 14,181,182, + 17, 17, 17, 17, 17,183, 17,184, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15,185,100,100,100,100,100,186, 40, 40, 40, 40, 40, 40,187, + 188, 6, 6,189,190, 6,191, 6, 6, 6, 6, 6,192, 6, 6, 85, + 85, 85, 85, 85, 6, 6, 6,120,120,120,120,121,121,121,121,122, + 122,122,122,159,159, 85, 6, 6, 6, 6, 6, 6, 6,193, 6, 30, + 30, 30, 30, 30,194,195, 30, 45, 45, 45, 45, 45, 45, 45, 45, 46, + 46, 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, + 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 49, + 49, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, 50, 50, 51, + 51, 51, 51, 51, 51, 51, 51, 41, 41, 41, 41, 41, 41, 41, 41, 81, + 81, 81,196, 81, 81, 81, 81, 52, 52, 52, 52, 52, 52, 52, 52, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,197, 29, 29, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 35, 35, 35, 35, 35,198, 12, + 12, 36, 36, 36, 36, 36, 36,160,160,101,101,101,101,199,101,161, + 161,200,201,162,162,163,163, 37, 37, 37, 37, 37, 37, 37, 37,202, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 11, 11, 11, 11, 11,102, + 102,102,102,102,140,140,140, 86, 86, 86, 86, 86, 86, 37, 37,164, + 164, 42, 42, 42, 42, 42, 42, 42, 42, 42, 14, 14, 14, 14, 14, 53, + 53, 53, 53, 53, 53, 53, 53,103,103,103,103,123,123,123,123,104, + 104,104,104,104,141,141,141, 15, 35, 35, 35,103,203,204,205, 7, + 7,206, 7, 7,207,208,209, 7, 7, 7,210, 14, 14, 14, 14,211, + 3, 3, 3, 3, 3, 3,212, 3, 7, 3, 3, 3, 14, 14, 14, 3, + 3,213,214,215, 3, 7, 7,158, 3, 3, 3, 3, 3, 3, 3, 43, + 43, 43, 43, 43, 43, 7, 7, 54, 54, 54, 54, 54, 54, 54, 54, 35, + 35, 35,105,105,105,105,105, 12, 12, 12, 12, 12, 12, 15, 15, 1, + 1, 1, 1, 1, 1, 1, 3,216, 3,217,218,219, 22, 22, 22, 22, + 220,165, 21, 21, 21, 21,221,106,106,106,222, 2, 2, 2, 2, 2, + 3,106,106, 3, 3, 3, 21, 2, 2, 3, 3, 3, 3, 2,223, 3, + 3, 3, 3, 3, 21, 21,224, 21, 21, 21, 21, 21,225, 3, 3, 1, + 1, 1, 1, 3, 3, 3, 3, 9, 9, 9, 9, 9, 82, 82, 82, 23, + 23, 23, 23, 15, 15, 15, 15, 15, 15, 13, 13, 13, 13, 13, 13, 3, + 3,226, 7, 7, 7, 7, 7,227, 7, 7, 7, 7, 7, 7, 7,142, + 142,142, 3,124,124,124,124, 87, 87, 87, 87, 87, 87, 30, 30,166, + 166,228,143,143,143, 2, 2,107,107,107,107,229,107, 24, 24, 88, + 88, 88, 88, 88, 88, 24, 24, 89, 89, 89, 89, 89, 89, 90, 90, 12, + 12, 12, 7, 7,230,231, 36, 36, 36, 36, 36, 90, 90, 90, 90, 7, + 232, 40, 40, 40, 6, 6, 6, 6, 6, 6,233, 6, 6, 6, 6, 14, + 3,234, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6,235, 3, + 3,118,119,118,119,236,165, 21,237, 2, 2, 2, 2, 3, 3, 3, + 3, 3, 3, 17, 17, 17, 17, 17, 3, 17, 17, 17, 3, 3,238,167, + 167,125,125,125,125,239, 3,144,144,144,168,168,145,145,145,169, + 169, 91, 91, 91, 91, 91, 91,108,108,108,108,108,146,146,146,147, + 147,147,109,109,109,109,109,148,148,148,126,126,126,126,110,110, + 110,110,110,127,127,127,127,128,128,128,128,170,170,171,171, 92, + 92, 92, 92, 92, 92,172,172,173,173,174,174,129,129,129,129,175, + 175, 93, 93, 93, 93, 93, 93, 94, 94, 94, 94, 94, 94,176,176,130, + 130,130,130,131,131,131,131,132,132,132,132,177,177,178,178, 55, + 55, 55, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 57, + 57, 57, 57, 57, 57, 57, 57,133,133,133,133, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34,134,134,134,134,240, 6, 6, 6,149, + 149,149,135,135,135,135,136,136,136,136,150,150,150,179,179, 58, + 58, 58, 58, 58, 58, 58, 58,111,111,111,111,111,151,151,151,112, + 112,112,112,112,152,152,152, 59, 59, 59, 59, 59, 59,241, 41, 60, + 60, 60, 60, 60, 60, 60, 60,153,153,153,113,113,113,113,113, 83, + 83, 83,242, 83, 83, 83, 83, 61, 61, 61, 61, 61, 61, 61, 61, 62, + 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 64, + 64, 64, 64, 64, 64, 64, 64, 95, 95, 95, 95, 95, 95, 33, 33,114, + 114,114,114,114, 24, 24, 24, 65, 65, 65, 65, 65, 65, 65, 65, 66, + 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 68, + 68, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69,115, + 115,115,115,115, 96, 96, 96, 96, 96, 96, 11,137,137,137,137, 30, + 30, 30, 30, 30, 30, 59, 59, 70, 70, 70, 70, 70, 70, 70, 70, 84, + 84, 84, 84, 84, 84, 84, 44, 44, 44, 44, 44, 44, 44, 44, 44, 97, + 97, 97, 97, 97, 97,116,116,116,116,116,117,117,117,117,117, 71, + 71, 71, 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, 72, 72, 72, 82, + 82, 82, 82, 32, 32, 32, 32, 73, 73, 73, 73, 73, 73, 73, 73, 74, + 74, 74, 74, 74, 74, 74, 74, 13, 13, 13, 13,154,154,154, 98, 98, + 98, 98, 98, 98,155,155,155, 75, 75, 75, 75, 75, 75, 75, 75, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 38, 99, 99, 99, 99, 99, 99, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,243, 1, 21, + 21, 21, 21, 21, 21, 21, 21,244, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 21,245, 22,246, 21, 19, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 3, 3, 3, 3, 3, 3, 14, + 14, 14, 14, 14, 3, 3, 3, 3, 3, 3, 3, 3, 3,247,248,249, + 3,250, 3, 3, 3, 3, 3, 43, 43, 43, 15, 15, 15, 15, 15, 76, + 76, 76, 76, 76, 76, 76, 76,138,138,138,138,139,139,139,139, 77, + 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78, 78, 79, + 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80,251, + 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 1, 1, 1, 1, 2, + 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, + 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, + 10, 10, 10, 11, 11, 11, 11, 13, 13, 13, 13, 14, 14, 14, 14, 12, + 12, 12, 12, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, + 18, 18, 18, 21, 21, 21, 21, 22, 22, 22, 22, 19, 19, 19, 19, 20, + 20, 20, 20, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, + 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, + 30, 30, 30, 31, 31, 31, 31, 33, 33, 33, 33, 32, 32, 32, 32, 34, + 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 38, + 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 41, 41, 41, 41, 42, + 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 46, 46, 46, 46, 47, + 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, + 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 45, + 45, 45, 45, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, + 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 62, + 62, 62, 62, 63, 63, 63, 63, 64, 64, 64, 64, 65, 65, 65, 65, 66, + 66, 66, 66, 67, 67, 67, 67, 68, 68, 68, 68, 69, 69, 69, 69, 70, + 70, 70, 70, 71, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 74, + 74, 74, 74, 75, 75, 75, 75, 76, 76, 76, 76, 77, 77, 77, 77, 78, + 78, 78, 78, 79, 79, 79, 79, 80, 80, 80, 80, 81, 81, 81, 81, 83, + 83, 83, 83, 82, 82, 82, 82, 84, 84, 84, 84, 86, 86, 86, 86, 87, + 87, 87, 87, 88, 88, 88, 88, 89, 89, 89, 89, 90, 90, 90, 90, 91, + 91, 91, 91, 92, 92, 92, 92, 93, 93, 93, 93, 94, 94, 94, 94, 95, + 95, 95, 95, 96, 96, 96, 96, 97, 97, 97, 97, 98, 98, 98, 98, 99, + 99, 99, 99,100,100,100,100, 85, 85, 85, 85,102,102,102,102,103, + 103,103,103,104,104,104,104,105,105,105,105,106,106,106,106,107, + 107,107,107,101,101,101,101,108,108,108,108,109,109,109,109,110, + 110,110,110,111,111,111,111,112,112,112,112,113,113,113,113,114, + 114,114,114,115,115,115,115,116,116,116,116,117,117,117,117,175, + 7, 7, 7, 7, 7,174, 3,118,118,118,118,119,119,119,119,120, + 120,120,120,121,121,121,121,122,122,122,122,123,123,123,123,124, + 124,124,124,125,125,125,125,126,126,126,126,127,127,127,127,128, + 128,128,128,129,129,129,129,130,130,130,130,131,131,131,131,132, + 132,132,132,133,133,133,133,134,134,134,134,135,135,135,135,136, + 136,136,136,137,137,137,137,138,138,138,138,139,139,139,139,140, + 140,140,140,141,141,141,141,142,142,142,142,143,143,143,143,144, + 144,144,144,145,145,145,145,146,146,146,146,147,147,147,147,148, + 148,148,148,149,149,149,149,150,150,150,150,151,151,151,151,152, + 152,152,152,153,153,153,153, 3, 3,177, 3, 7,174, 7, 7, 7, + 7,179, 3,155,155,155,155,156,156,156,156,157,157,157,157,158, + 158,158,158,159,159,159,159,160,160,160,160,182, 19, 19, 19,154, + 154,154,154,161,161,161,161,162,162,162,162,163,163,163,163,164, + 164,164,164,165,165,165,165,166,166,166,166,167,167,167,167,168, + 168,168,168,169,169,169,169,170,170,170,170,171,171,171,171,172, + 172,172,172,173,173,173,173, 7,179,194, 3, 17,195, 17,196, 17, + 197, 17, 17,198, 45, 45, 45, 15,199, 15, 15,200, 85, 85, 85,183, + 40, 40, 40, 6,184, 6,185, 6, 6,180,180,185, 6,201, 12, 12, + 202, 6, 6,203, 6, 6, 6, 6, 6, 6,184,204, 6, 6, 6,205, + 206, 30, 30, 30,207, 30, 30, 81, 81, 81,208, 29,209,210, 29, 35, + 35,211, 35,102,102,212,213,176,176,176,176,176,214, 3, 3,215, + 216, 32, 32,186, 12, 12, 12,217, 12,181,218, 3,181,178, 3, 7, + 187,219, 7, 7, 7, 7,220,221,187,222, 7, 7, 7,223, 7, 7, + 7, 7,224, 3, 3, 3,178,175, 3, 3,188, 3,225,189, 3,177, + 3, 3, 3, 3, 3, 3,177, 3,226, 3, 3,227, 1,228,229, 3, + 3, 1, 3,190, 20, 20, 20, 20, 20,230,190, 19, 19,191,182,231, + 2, 2, 2, 2, 2, 2,232, 19, 19, 19,191, 19, 19, 3, 3,189, + 7, 7, 7, 7, 7,188, 7,154,154,154,233,101,101,101,234, 7, + 7,174, 7, 7,235,236, 3,237, 85, 85,183, 6, 6, 6,238, 12, + 12, 12,239, 6, 6, 6,180, 3,240, 19, 19, 19, 19, 19,241, 3, + 3, 3,192,181, 3, 3, 3,242, 6, 6, 6,243, 41, 41, 41, 82, + 82,244, 82,245, 18, 18, 18,246, 20, 20, 20,247, 20, 20, 20, 20, + 248, 19, 19, 3,193,178, 3, 3, 3,193, 12,186,192, 12, 3, 3, + 3,249,178,250, 3, 3, 3, 2, 2, 2, 2, 13, 13, 13, 13, 12, + 12, 12, 12, 0, 0, 0, 0,136,136,136,136, 80, 80, 80, 80, 3, + 3, 3, 3, 19, 19, 19, 19, 63, 63, 63, 63, 39, 39, 39, 39,131, + 131,131,131, 28, 28, 28, 28, 1, 1, 1, 1, 30, 30, 30, 30, 79, + 79, 79, 79, 6, 6, 6, 6,127,127,127,127, 9, 9, 9, 9,155, + 155,155,155, 17, 17, 17, 17, 15, 15, 15, 15,139,139,139,139,110, + 110,110,110, 77, 77, 77, 77, 33, 33, 33, 33, 27, 27, 27, 27, 49, + 49, 49, 49,119,119,119,119,113,113,113,113, 25, 25, 25, 25, 7, + 7, 7, 7, 99, 99, 99, 99, 32, 32, 32, 32, 22, 22, 22, 22,165, + 165,165,165, 8, 8, 8, 8, 29, 29, 29, 29, 31, 31, 31, 31,146, + 146,146,146,105,105,105,105, 14, 14, 14, 14, 36, 36, 36, 36, 91, + 91, 91, 91, 56, 56, 56, 56,134,134,134,134, 55, 55, 55, 55, 5, + 5, 5, 5, 11, 11, 11, 11, 10, 10, 10, 10, 21, 21, 21, 21, 23, + 23, 23, 23, 16, 16, 16, 16, 20, 20, 20, 20, 18, 18, 18, 18, 62, + 62, 62, 62,122,122,122,122, 89, 89, 89, 89,130,130,130,130, 94, + 94, 94, 94,100,100,100,100,108,108,108,108,171,171,171,171,137, + 137,137,137,124,124,124,124,123,123,123,123,126,126,126,126,142, + 142,142,142,125,125,125,125,154,154,154,154,150,150,150,150,169, + 169,169,169,145,145,145,145,163,163,163,163,157,157,157,157,166, + 166,166,166,167,167,167,167,151,151,151,151,164,164,164,164,168, + 168,168,168,174,174,174,174,132,132,132,132, 24, 24, 24, 24,107, + 107,107,107, 86, 86, 86, 86,133,133,133,133, 4, 4, 4, 4, 37, + 37, 37, 37, 58, 58, 58, 58, 75, 75, 75, 75, 68, 68, 68, 68, 92, + 92, 92, 92, 87, 87, 87, 87, 59, 59, 59, 59,116,116,116,116, 97, + 97, 97, 97, 57, 57, 57, 57,114,114,114,114,140,140,140,140,138, + 138,138,138,159,159,159,159,172,172,172,172, 84, 84, 84, 84, 35, + 35, 35, 35, 48, 48, 48, 48, 76, 76, 76, 76, 70, 70, 70, 70, 61, + 61, 61, 61, 26, 26, 26, 26, 40, 40, 40, 40,135,135,135,135,161, + 161,161,161, 85, 85, 85, 85, 96, 96, 96, 96,109,109,109,109,102, + 102,102,102,141,141,141,141,143,143,143,143,175,175,175,175, 38, + 38, 38, 38, 64, 64, 64, 64, 90, 90, 90, 90, 93, 93, 93, 93, 65, + 65, 65, 65, 67, 67, 67, 67,104,104,104,104,170,170,170,170, 47, + 47, 47, 47,173,173,173,173,117,117,117,117,112,112,112,112, 78, + 78, 78, 78,144,144,144,144,156,156,156,156,148,148,148,148,158, + 158,158,158,121,121,121,121,160,160,160,160,152,152,152,152, 52, + 52, 52, 52, 73, 73, 73, 73, 60, 60, 60, 60, 74, 74, 74, 74, 42, + 42, 42, 42,118,118,118,118, 51, 51, 51, 51, 50, 50, 50, 50,106, + 106,106,106,147,147,147,147,153,153,153,153,101,101,101,101,111, + 111,111,111,129,129,129,129,115,115,115,115,103,103,103,103, 69, + 69, 69, 69, 95, 95, 95, 95, 34, 34, 34, 34, 45, 45, 45, 45, 43, + 43, 43, 43, 46, 46, 46, 46, 54, 54, 54, 54, 71, 71, 71, 71, 41, + 41, 41, 41, 53, 53, 53, 53, 81, 81, 81, 81,120,120,120,120,128, + 128,128,128, 66, 66, 66, 66, 72, 72, 72, 72, 98, 98, 98, 98, 88, + 88, 88, 88, 83, 83, 83, 83, 82, 82, 82, 82,149,149,149,149, 19, + 19, 19, 0, 0, 19, 19, 19, 44, 44, 44, 44, 0, 0, 19, 0, 1, + 1, 0, 0, 19, 0, 0, 0, 3, 3, 3, 0, 1, 0, 0, 0, 0, + 17, 17, 17, 4, 14, 14, 14, 3, 0, 3, 3, 0, 3, 3, 3, 1, + 1, 1, 0, 19, 19, 9, 9, 0, 0, 0, 19, 0, 0, 19, 19, 0, + 15, 15, 15, 17, 17, 17, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, + 0, 26, 26, 0, 9, 9, 9, 9, 9, 0, 9, 9, 0, 9, 0, 9, + 9, 55, 55, 6, 1, 1, 6, 6, 4, 4, 4, 3, 3, 3, 1, 1, + 1, 3, 3, 1, 3, 3, 3, 3, 3, 0, 3, 7, 1, 1, 1, 1, + 7, 7, 7, 0, 0, 7, 7, 24, 24, 24, 0, 25, 0, 0, 0, 0, + 25, 25, 25, 8, 8, 8, 0, 35, 35, 35, 0, 0, 0, 35, 35, 44, + 0, 0, 0, 32, 32, 0, 0, 32, 0, 32, 32, 1, 0, 1, 1, 0, + 1, 0, 0, 9, 9, 9, 6, 19, 9, 9, 9, 9, 9, 19, 19, 9, + 9, 9, 19, 6, 19, 19, 19, 19, 19, 19, 9, 0, 0, 9, 0, 0, + 13, 0, 13, 0, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 15, + 1, 1, 0, 26, 12, 12, 12, 12, 12, 12, 0, 69, 69, 0, 69, 84, + 84, 84, 0, 19, 9, 19, 19, 19, 19, 0, 0, 19, 19, 19, 4, 3, + 3, 0, 0, 1, 1, 6, 6, 0, 0, 17, 17, 17, 17, 0, 0,156, + 156, 3, 3,100, 36, 36, 36,107,107,107, 1,136,139, 13, 13, 17, + 15, 15, 15, 17, 17, 15, 15, 15, 17, 17, 17, 0, 0, 1, 1, 15, + 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, + 10, 0, 11, 12, 13, 0, 0, 0, 14, 0, 0, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 17, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 19, 20, 21, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 23, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 25, 26, 27, 28, 29, 30, 0, @@ -5224,8 +5226,6 @@ static const uint8_t _hb_ucd_u8[13937]= 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 0, 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101, @@ -5260,116 +5260,116 @@ static const uint8_t _hb_ucd_u8[13937]= 0,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194, 195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210, 211,212,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, - 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, }; static const uint16_t _hb_ucd_u16[5104]= { - 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12, - 13, 13, 13, 14, 15, 13, 13, 16, 17, 18, 19, 20, 21, 22, 13, 23, - 13, 13, 13, 24, 25, 11, 11, 11, 11, 26, 11, 27, 28, 29, 30, 31, - 32, 32, 32, 32, 32, 32, 32, 33, 34, 35, 36, 11, 37, 38, 13, 39, - 9, 9, 9, 11, 11, 11, 13, 13, 40, 13, 13, 13, 41, 13, 13, 13, - 13, 13, 13, 35, 9, 42, 11, 11, 43, 44, 32, 45, 46, 47, 47, 48, - 49, 50, 47, 47, 51, 32, 52, 53, 47, 47, 47, 47, 47, 54, 55, 56, - 57, 58, 47, 32, 59, 47, 47, 47, 47, 47, 60, 53, 61, 47, 62, 63, - 47, 64, 65, 66, 47, 67, 47, 47, 68, 69, 47, 47, 70, 32, 71, 32, - 72, 47, 47, 73, 74, 75, 76, 77, 78, 47, 47, 79, 80, 81, 82, 83, - 84, 47, 47, 85, 86, 87, 88, 89, 84, 47, 47, 79, 90, 47, 82, 91, - 92, 47, 47, 93, 94, 95, 82, 96, 97, 47, 47, 98, 99, 100, 101, 102, - 103, 47, 47, 104, 105, 106, 82, 107, 108, 47, 47, 93, 109, 110, 82, 111, - 112, 47, 47, 113, 114, 115, 82, 116, 92, 47, 47, 47, 117, 118, 101, 119, - 47, 47, 47, 120, 121, 122, 66, 66, 47, 47, 47, 123, 124, 125, 47, 47, - 126, 127, 128, 129, 47, 47, 47, 130, 131, 32, 32, 132, 133, 134, 66, 66, - 47, 47, 135, 136, 122, 137, 138, 139, 140, 141, 9, 9, 9, 11, 11, 142, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 143, 144, 145, - 47, 146, 9, 9, 9, 9, 9, 147, 148, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 149, 47, 150, 151, 47, 47, 47, 47, 152, 153, - 47, 154, 47, 155, 47, 156, 47, 156, 47, 47, 47, 157, 158, 159, 160, 145, - 161, 160, 47, 47, 162, 47, 47, 47, 163, 47, 164, 47, 47, 47, 47, 47, - 47, 47, 165, 166, 167, 47, 47, 47, 47, 47, 47, 47, 47, 168, 146, 146, - 47, 169, 47, 47, 47, 170, 171, 172, 160, 160, 173, 174, 32, 32, 32, 32, - 175, 47, 47, 176, 177, 122, 178, 179, 180, 47, 181, 61, 47, 47, 182, 183, - 47, 47, 184, 185, 186, 61, 47, 187, 188, 9, 9, 9, 66, 189, 190, 191, - 11, 11, 192, 27, 27, 27, 193, 194, 11, 195, 27, 27, 32, 32, 32, 32, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 196, 13, 13, 13, 13, 13, 13, - 197, 197, 197, 197, 197, 198, 197, 11, 199, 199, 199, 200, 201, 202, 202, 201, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 27, 212, 212, 212, 213, 214, 32, - 215, 216, 217, 218, 219, 145, 220, 220, 221, 222, 223, 146, 224, 225, 146, 226, - 227, 227, 227, 227, 227, 227, 227, 227, 228, 146, 229, 146, 146, 146, 146, 230, - 146, 231, 227, 232, 146, 233, 234, 146, 146, 146, 146, 146, 146, 146, 145, 145, - 145, 235, 146, 146, 146, 146, 236, 145, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 237, 238, 146, 146, 239, 146, 146, 146, 146, 146, 146, 240, 146, - 146, 146, 146, 146, 146, 146, 241, 242, 145, 243, 146, 146, 244, 227, 245, 227, - 246, 247, 227, 227, 227, 248, 227, 249, 146, 146, 146, 227, 250, 146, 146, 146, - 9, 9, 9, 11, 11, 11, 251, 252, 13, 13, 13, 13, 13, 13, 253, 254, - 11, 11, 11, 47, 47, 47, 255, 256, 47, 47, 47, 47, 47, 47, 32, 32, - 257, 258, 259, 260, 261, 262, 263, 263, 264, 265, 266, 267, 268, 47, 47, 47, - 47, 269, 148, 47, 47, 47, 47, 270, 47, 271, 47, 47, 146, 146, 146, 47, - 146, 146, 272, 146, 273, 274, 146, 146, 272, 146, 146, 274, 146, 146, 146, 146, - 47, 47, 47, 47, 146, 146, 146, 146, 47, 275, 47, 47, 47, 47, 47, 47, - 47, 146, 146, 146, 146, 47, 47, 187, 276, 47, 61, 47, 13, 13, 277, 278, - 13, 279, 47, 47, 47, 47, 280, 281, 31, 282, 283, 284, 13, 13, 13, 285, - 286, 287, 288, 289, 290, 291, 9, 292, 293, 47, 294, 295, 47, 47, 47, 296, - 297, 47, 47, 298, 299, 160, 32, 300, 61, 47, 301, 47, 302, 303, 47, 47, - 72, 47, 47, 304, 305, 306, 307, 61, 47, 47, 308, 309, 310, 311, 47, 312, - 47, 47, 47, 313, 58, 314, 315, 316, 47, 47, 47, 11, 11, 317, 318, 11, - 11, 11, 11, 11, 47, 47, 319, 160, 320, 320, 320, 320, 320, 320, 320, 320, - 321, 321, 321, 321, 321, 321, 321, 321, 11, 322, 323, 47, 47, 47, 47, 47, - 47, 47, 47, 324, 325, 326, 47, 47, 47, 47, 47, 327, 146, 47, 47, 47, - 47, 328, 47, 47, 329, 146, 146, 330, 32, 331, 32, 332, 333, 334, 335, 47, - 47, 47, 47, 47, 47, 47, 47, 336, 337, 2, 3, 4, 5, 338, 339, 340, - 47, 341, 47, 47, 47, 47, 342, 343, 344, 145, 145, 345, 220, 220, 220, 346, - 347, 146, 146, 146, 146, 146, 146, 348, 349, 349, 349, 349, 349, 349, 349, 349, - 47, 47, 47, 47, 47, 47, 350, 145, 47, 47, 351, 47, 352, 47, 47, 60, - 47, 353, 47, 47, 47, 354, 220, 220, 9, 9, 147, 11, 11, 47, 47, 47, - 47, 47, 160, 9, 9, 147, 11, 11, 47, 47, 47, 47, 47, 47, 353, 9, - 9, 355, 11, 11, 47, 47, 47, 47, 27, 27, 27, 27, 27, 27, 27, 27, - 47, 47, 47, 47, 47, 356, 47, 357, 47, 47, 358, 145, 145, 145, 47, 359, - 47, 360, 47, 353, 47, 47, 47, 47, 47, 47, 47, 361, 145, 145, 145, 145, - 362, 47, 47, 363, 145, 66, 47, 364, 47, 365, 145, 145, 366, 47, 367, 66, - 47, 47, 47, 368, 47, 369, 47, 369, 47, 368, 144, 145, 145, 145, 145, 145, - 9, 9, 9, 9, 11, 11, 11, 370, 47, 47, 371, 160, 372, 9, 373, 11, - 374, 227, 227, 227, 227, 227, 227, 227, 145, 145, 145, 145, 145, 145, 145, 145, - 47, 47, 375, 47, 275, 376, 146, 377, 47, 365, 378, 47, 60, 379, 66, 47, - 380, 66, 66, 47, 381, 145, 47, 47, 382, 47, 47, 363, 383, 384, 385, 386, - 180, 47, 47, 387, 388, 47, 47, 160, 97, 47, 389, 390, 391, 47, 47, 392, - 180, 47, 47, 393, 394, 395, 396, 145, 47, 47, 397, 398, 362, 32, 32, 32, - 47, 47, 368, 47, 47, 399, 172, 160, 92, 47, 47, 113, 400, 401, 402, 32, - 47, 47, 47, 403, 404, 405, 406, 32, 47, 47, 47, 407, 408, 409, 47, 47, - 47, 47, 47, 410, 411, 160, 160, 160, 47, 47, 412, 413, 414, 415, 32, 32, - 47, 47, 47, 416, 417, 160, 66, 66, 47, 47, 418, 419, 160, 160, 160, 160, - 47, 420, 421, 422, 47, 47, 47, 47, 47, 47, 397, 423, 66, 66, 66, 66, - 9, 9, 9, 9, 11, 11, 128, 424, 47, 47, 47, 425, 426, 160, 160, 160, - 47, 47, 47, 47, 47, 427, 428, 429, 430, 47, 47, 431, 432, 433, 47, 47, - 434, 435, 66, 47, 47, 47, 47, 47, 66, 66, 66, 66, 66, 66, 436, 429, - 47, 47, 47, 47, 47, 47, 437, 160, 47, 47, 412, 438, 437, 128, 145, 439, - 47, 156, 440, 441, 32, 32, 32, 32, 47, 47, 47, 362, 442, 160, 47, 47, - 443, 444, 160, 47, 47, 445, 160, 160, 47, 47, 47, 47, 47, 47, 47, 446, - 447, 47, 47, 448, 449, 450, 32, 32, 47, 47, 47, 47, 145, 451, 452, 453, - 220, 220, 220, 220, 220, 220, 220, 66, 47, 47, 47, 47, 47, 47, 47, 437, - 47, 47, 47, 209, 454, 32, 47, 47, 47, 455, 456, 160, 160, 160, 160, 160, - 47, 47, 47, 47, 47, 47, 306, 47, 47, 47, 47, 47, 160, 47, 47, 457, - 47, 47, 47, 458, 459, 460, 461, 47, 27, 27, 27, 27, 462, 47, 463, 160, - 9, 9, 9, 9, 9, 9, 11, 11, 145, 464, 9, 465, 11, 11, 11, 11, - 47, 47, 47, 47, 399, 466, 429, 429, 467, 468, 27, 27, 27, 27, 469, 470, - 47, 471, 209, 209, 209, 209, 209, 209, 146, 146, 146, 146, 146, 146, 146, 472, - 146, 146, 146, 146, 146, 146, 146, 227, 32, 32, 32, 32, 32, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 473, 474, 475, 146, 476, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 477, 146, 146, 146, 9, 478, 11, 479, 480, 11, 197, 9, - 481, 482, 9, 483, 11, 9, 478, 11, 479, 480, 11, 197, 9, 481, 482, 9, - 483, 11, 9, 478, 11, 479, 480, 11, 197, 9, 481, 482, 9, 483, 11, 9, - 478, 11, 197, 9, 484, 485, 486, 487, 11, 488, 9, 489, 490, 491, 492, 11, - 493, 9, 494, 11, 495, 160, 160, 160, 32, 32, 32, 496, 32, 32, 497, 498, - 499, 500, 32, 32, 32, 32, 32, 32, 501, 11, 11, 11, 11, 11, 11, 11, - 32, 32, 32, 27, 27, 27, 27, 27, 32, 32, 32, 32, 32, 32, 32, 32, - 47, 47, 47, 502, 503, 146, 146, 146, 47, 47, 455, 32, 47, 47, 504, 505, - 47, 47, 47, 47, 47, 47, 506, 160, 47, 47, 47, 47, 47, 47, 455, 507, - 47, 47, 47, 47, 47, 47, 508, 509, 47, 47, 47, 47, 358, 32, 32, 32, - 9, 9, 481, 11, 510, 306, 66, 66, 145, 145, 511, 512, 145, 145, 145, 145, - 145, 145, 513, 145, 145, 145, 145, 145, 47, 47, 47, 47, 47, 47, 47, 227, - 514, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 515, - 146, 146, 146, 146, 146, 227, 227, 227, 209, 209, 209, 209, 209, 209, 209, 209, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 16, 16, 16, 16, 16, + 8, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, 24, 24, 24, 24, + 32, 32, 32, 32, 32, 32, 32, 32, 64, 64, 64, 64, 64, 64, 64, 64, + 56, 56, 56, 56, 56, 56, 56, 56, 40, 40, 40, 40, 40, 40, 40, 40, + 24, 24, 24, 24, 24, 24, 56, 56, 96, 96, 96, 96, 96, 96, 96, 96, + 24, 24, 24, 24, 24, 24, 24, 592, 152, 152, 600, 336, 344, 352, 360, 608, + 152, 152, 616, 624, 72, 632, 48, 640, 80, 80, 80, 648, 656, 80, 80, 664, + 672, 680, 688, 696, 704, 712, 80, 720, 80, 80, 80, 728, 736, 48, 48, 48, + 48, 744, 48, 96, 752, 760, 768, 368, 40, 40, 40, 40, 40, 40, 40, 776, + 784, 376, 792, 48, 800, 808, 80, 816, 72, 72, 72, 48, 48, 48, 80, 80, + 824, 80, 80, 80, 832, 80, 80, 80, 80, 80, 80, 376, 72, 840, 48, 48, + 848, 856, 40, 864, 872, 8, 8, 880, 888, 896, 8, 8, 904, 40, 912, 384, + 8, 8, 8, 8, 8, 920, 928, 936, 944, 392, 8, 40, 952, 8, 8, 8, + 8, 8, 184, 384, 136, 8, 960, 968, 8, 976, 984, 104, 8, 992, 8, 8, + 1000,1008, 8, 8,1016, 40,1024, 40, 400, 8, 8,1032,1040,1048,1056,1064, + 1072, 8, 8, 408,1080,1088, 144,1096, 416, 8, 8,1104,1112,1120,1128,1136, + 416, 8, 8, 408,1144, 8, 144,1152, 192, 8, 8, 424,1160,1168, 144,1176, + 432, 8, 8,1184,1192,1200, 440,1208,1216, 8, 8,1224,1232,1240, 144,1248, + 1256, 8, 8, 424,1264,1272, 144,1280,1288, 8, 8, 448,1296,1304, 144,1312, + 192, 8, 8, 8,1320,1328, 440,1336, 8, 8, 8,1344,1352, 200, 104, 104, + 8, 8, 8,1360,1368,1376, 8, 8,1384,1392, 208,1400, 8, 8, 8,1408, + 1416, 40, 40,1424,1432,1440, 104, 104, 8, 8,1448,1456, 200,1464,1472,1480, + 1488,1496, 72, 72, 72, 48, 48,1504, 8, 8, 8, 8, 8,1512, 456, 56, + 8, 24, 72, 72, 72, 72, 72, 216, 464, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8,1520, 8,1528,1536, 8, 8, 8, 8,1544,1552, + 8,1560, 8,1568, 8, 224, 8, 224, 8, 8, 8,1576,1584,1592, 88, 56, + 1600, 88, 8, 8,1608, 8, 8, 8,1616, 8,1624, 8, 8, 8, 8, 8, + 8, 8,1632,1640,1648, 8, 8, 8, 8, 8, 8, 8, 8,1656, 24, 24, + 8,1664, 8, 8, 8,1672,1680, 472, 88, 88,1688,1696, 40, 40, 40, 40, + 1704, 8, 8,1712,1720, 200,1728,1736, 232, 8,1744, 136, 8, 8,1752,1760, + 8, 8,1768,1776,1784, 136, 8, 480,1792, 72, 72, 72, 104,1800,1808,1816, + 48, 48,1824, 96, 96, 96,1832,1840, 48,1848, 96, 96, 40, 40, 40, 40, + 80, 80, 80, 80, 80, 80, 80, 80, 80,1856, 80, 80, 80, 80, 80, 80, + 128, 128, 128, 128, 128,1864, 128, 48, 240, 240, 240,1872, 488, 496, 496, 488, + 1880,1888,1896,1904,1912,1920, 112,1928,1936, 96, 248, 248, 248,1944,1952, 40, + 1960,1968,1976,1984,1992, 56, 120, 120,2000,2008,2016, 24,2024,2032, 24,2040, + 2048, 24,2056, 24, 24, 24, 24,2064, 24,2072, 64,2080, 24,2088,2096, 24, + 56,2104, 24, 24, 24, 24,2112, 56, 24, 24, 24,2120,2128, 24, 24,2136, + 24, 24, 24, 24, 24, 24,2144, 24, 24, 24, 24, 24, 24, 24,2152,2160, + 56,2168, 24, 24,2176, 64,2184, 64,2192,2200, 64, 64, 64,2208, 64,2216, + 24, 24, 24, 64,2224, 24, 24, 24, 72, 72, 72, 48, 48, 48,2232,2240, + 80, 80, 80, 80, 80, 80,2248,2256, 48, 48, 48, 8, 8, 8,2264,2272, + 8, 8, 8, 8, 8, 8, 40, 40,2280,2288,2296,2304,2312,2320, 504, 504, + 2328,2336,2344,2352,2360, 8, 8, 8, 8,2368, 464, 8, 8, 8, 8,2376, + 8,2384, 8, 8, 24, 24, 24, 8, 24, 24, 512, 24,2392, 520, 24, 24, + 512, 24, 24, 520, 24, 24, 24, 24, 8, 8, 8, 8, 24, 24, 24, 24, + 8, 528, 8, 8, 8, 8, 8, 8, 8, 24, 24, 24, 24, 8, 8, 480, + 2400, 8, 136, 8, 80, 80,2408,2416, 80,2424, 8, 8, 8, 8,2432,2440, + 368,2448,2456,2464, 80, 80, 80,2472,2480,2488,2496,2504,2512,2520, 72,2528, + 2536, 8,2544,2552, 8, 8, 8,2560,2568, 8, 8,2576,2584, 88, 40,2592, + 136, 8,2600, 8,2608,2616, 8, 8, 400, 8, 8,2624,2632, 256,2640, 136, + 8, 8,2648,2656,2664,2672, 8,2680, 8, 8, 8,2688, 392,2696,2704,2712, + 8, 8, 8, 48, 48,2720,2728, 48, 48, 48, 48, 48, 8, 8,2736, 88, + 48,2744,2752, 8, 8, 8, 8, 8, 8, 8, 8,2760,2768,2776, 8, 8, + 8, 8, 8,2784, 24, 8, 8, 8, 8,2792, 8, 8,2800, 24, 24,2808, + 40,2816, 40,2824,2832,2840,2848, 8, 8, 8, 8, 8, 8, 8, 8,2856, + 2864, 336, 344, 352, 360,2872,2880,2888, 8,2896, 8, 8, 8, 8,2904,2912, + 2920, 56, 56,2928, 120, 120, 120,2936,2944, 24, 24, 24, 24, 24, 24,2952, + 8, 8, 8, 8, 8, 8,2960, 56, 8, 8,2968, 8,2976, 8, 8, 184, + 8, 264, 8, 8, 8,2984, 120, 120, 72, 72, 216, 48, 48, 8, 8, 8, + 8, 8, 88, 72, 72, 216, 48, 48, 8, 8, 8, 8, 8, 8, 264, 72, + 72,2992, 48, 48, 8, 8, 8, 8, 8, 8, 8, 8, 8,3000, 8,3008, + 8, 8, 536, 56, 56, 56, 8,3016, 8,3024, 8, 264, 8, 8, 8, 8, + 8, 8, 8,3032, 56, 56, 56, 56, 272, 8, 8, 544, 56, 104, 8,3040, + 8, 552, 56, 56,3048, 8,3056, 104, 8, 8, 8, 280, 8, 560, 8, 560, + 8, 280, 456, 56, 56, 56, 56, 56, 72, 72, 72, 72, 48, 48, 48,3064, + 8, 8,3072, 88,3080, 72,3088, 48,3096, 64, 64, 64, 64, 64, 64, 64, + 8, 8,3104, 8, 528,3112, 24,3120, 8, 552,3128, 8, 184,3136, 104, 8, + 3144, 104, 104, 8,3152, 56, 8, 8,3160, 8, 8, 544,3168,3176,3184,3192, + 232, 8, 8,3200,3208, 8, 8, 88, 432, 8,3216,3224,3232, 8, 8,3240, + 232, 8, 8,3248,3256,3264,3272, 56, 8, 8, 568,3280, 272, 40, 40, 40, + 8, 8, 280, 8, 8, 576, 472, 88, 192, 8, 8, 448,3288,3296,3304, 40, + 8, 8, 8,3312,3320,3328,3336, 40, 8, 8, 8,3344,3352,3360, 8, 8, + 8, 8, 8,3368,3376, 88, 88, 88, 8, 8, 584,3384,3392,3400, 40, 40, + 8, 8, 8,3408,3416, 88, 104, 104, 8, 8,3424,3432, 88, 88, 88, 88, + 8,3440,3448,3456, 8, 8, 8, 8, 8, 8, 568,3464, 104, 104, 104, 104, + 72, 72, 72, 72, 48, 48, 208,3472, 8, 8, 8,3480,3488, 88, 88, 88, + 8, 8, 8, 8, 8,3496,3504, 160,3512, 8, 8,3520,3528,3536, 8, 8, + 3544,3552, 104, 8, 8, 8, 8, 8, 104, 104, 104, 104, 104, 104,3560, 160, + 8, 8, 8, 8, 8, 8, 288, 88, 8, 8, 584,3568, 288, 208, 56,3576, + 8, 224,3584,3592, 40, 40, 40, 40, 8, 8, 8, 272,3600, 88, 8, 8, + 3608,3616, 88, 8, 8,3624, 88, 88, 8, 8, 8, 8, 8, 8, 8,3632, + 3640, 8, 8,3648,3656,3664, 40, 40, 8, 8, 8, 8, 56,3672,3680,3688, + 120, 120, 120, 120, 120, 120, 120, 104, 8, 8, 8, 8, 8, 8, 8, 288, + 8, 8, 8, 112,3696, 40, 8, 8, 8, 296,3704, 88, 88, 88, 88, 88, + 8, 8, 8, 8, 8, 8, 256, 8, 8, 8, 8, 8, 88, 8, 8,3712, + 8, 8, 8,3720,3728,3736,3744, 8, 96, 96, 96, 96,3752, 8,3760, 88, + 72, 72, 72, 72, 72, 72, 48, 48, 56,3768, 72,3776, 48, 48, 48, 48, + 8, 8, 8, 8, 576,3784, 160, 160,3792,3800, 96, 96, 96, 96,3808,3816, + 8,3824, 112, 112, 112, 112, 112, 112, 24, 24, 24, 24, 24, 24, 24, 64, + 40, 40, 40, 40, 40, 24, 24, 24, 24, 24, 24, 24, 24, 24,3832,3840, + 3848, 24,3856, 24, 24, 24, 24, 24, 24, 24, 24, 24,3864, 24, 24, 24, + 72, 168, 48, 304, 312, 48, 128, 72, 176, 320, 72, 328, 48, 72, 168, 48, + 304, 312, 48, 128, 72, 176, 320, 72, 328, 48, 72, 168, 48, 304, 312, 48, + 128, 72, 176, 320, 72, 328, 48, 72, 168, 48, 128, 72,3872,3880,3888,3896, + 48,3904, 72,3912,3920,3928,3936, 48,3944, 72,3952, 48,3960, 88, 88, 88, + 40, 40, 40,3968, 40, 40,3976,3984,3992,4000, 40, 40, 40, 40, 40, 40, + 4008, 48, 48, 48, 48, 48, 48, 48, 40, 40, 40, 96, 96, 96, 96, 96, + 8, 8, 8,4016,4024, 24, 24, 24, 8, 8, 296, 40, 8, 8,4032,4040, + 8, 8, 8, 8, 8, 8,4048, 88, 8, 8, 8, 8, 8, 8, 296,4056, + 8, 8, 8, 8, 8, 8,4064,4072, 8, 8, 8, 8, 536, 40, 40, 40, + 72, 72, 176, 48,4080, 256, 104, 104, 56, 56,4088,4096, 56, 56, 56, 56, + 56, 56,4104, 56, 56, 56, 56, 56, 8, 8, 8, 8, 8, 8, 8, 64, + 4112, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,4120, + 24, 24, 24, 24, 24, 64, 64, 64, 112, 112, 112, 112, 112, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 939, 940, 941, 942, 946, 948, 0, 962, 969, 970, 971, 976,1001,1002,1003,1008, 0,1033,1040,1041,1042,1043,1047, 0, 0,1080,1081,1082,1086,1110, 0, 0, @@ -5587,9 +5587,9 @@ static const uint16_t _hb_ucd_u16[5104]= }; static const int16_t _hb_ucd_i16[92]= { - 0, 0, 1, -1, 2, 0, -2, 0, 0, 2, 0, -2, 0, 16, 0, -16, - 0, 1, -1, 0, 3, 3, 3, -3, -3, -3, 0, 2016, 0, 2527, 1923, 1914, - 1918, 0, 2250, 0, 0, 138, 0, 7, -7, 0, -1, 1, 1824, 0, 2104, 0, + 0, 0, 1, -1, -1, 1, 0, 1, -1, 0, 0, 2, 0, -2, 2, 0, + -2, 0, -7, 0, 0, 16, 0, -16, 3, 3, 3, -3, -3, -3, 0, 2016, + 0, 2527, 1923, 1914, 1918, 0, 2250, 0, 0, 138, 0, 7, 1824, 0, 2104, 0, 2108, 2106, 0, 2106, 1316, 0, -1, -138, 8, 8, 8, 0, 7, 7, -8, -8, -8, -7,-1316, 1, -1, 3, -3, 1, 0,-1914,-1918, 0, 0,-1923,-1824, 0, 0,-2016,-2104, 0, 0,-2106,-2108,-2106,-2250, 0,-2527, 0, @@ -5597,11 +5597,13 @@ static const int16_t _hb_ucd_i16[92]= static inline uint8_t _hb_ucd_gc (unsigned u) { - return u<1114112 ? _hb_ucd_u8[5296u+((_hb_ucd_u8[1168u+((_hb_ucd_u16[((_hb_ucd_u8[544u+((_hb_ucd_u8[((((((((u)>>1))>>3))>>3))>>4)])<<4)+((((((((u)>>1))>>3))>>3))&15)])<<3)+((((((u)>>1))>>3))&7)])<<3)+((((u)>>1))&7)])<<1)+((u)&1)] : 2; + /* packtab: [2^8,2^4,2^3,2^3,2^1] */ + return u<1114112u ? (uint8_t)(_hb_ucd_u8[5288u+((_hb_ucd_u8[1160u+_hb_ucd_u16[((_hb_ucd_u8[544u+((_hb_ucd_u8[((((((((u)>>1))>>3))>>3))>>4)])<<4)+((((((((u)>>1))>>3))>>3))&15)])<<3)+((((((u)>>1))>>3))&7)]+((((u)>>1))&7)])<<1)+((u)&1)]) : 2; } static inline uint8_t _hb_ucd_ccc (unsigned u) { - return u<125259 ? _hb_ucd_u8[7322u+((_hb_ucd_u8[6738u+((_hb_ucd_u8[6258u+((_hb_ucd_u8[5890u+((_hb_ucd_u8[5644u+((((((((u)>>2))>>2))>>2))>>3)])<<3)+((((((((u)>>2))>>2))>>2))&7)])<<2)+((((((u)>>2))>>2))&3)])<<2)+((((u)>>2))&3)])<<2)+((u)&3)] : 0; + /* packtab: [2^8,2^3,2^2,2^2,2^2] */ + return u<125259u ? (uint8_t)(_hb_ucd_u8[7307u+((_hb_ucd_u8[6724u+((_hb_ucd_u8[6247u+((_hb_ucd_u8[5881u+((_hb_ucd_u8[5636u+((((((((u)>>2))>>2))>>2))>>3)])<<3)+((((((((u)>>2))>>2))>>2))&7)])<<2)+((((((u)>>2))>>2))&3)])<<2)+((((u)>>2))&3)])<<2)+((u)&3)]) : 0; } static inline uint8_t _hb_ucd_b4 (const uint8_t* a, unsigned i) { @@ -5609,15 +5611,18 @@ static inline uint8_t _hb_ucd_b4 (const uint8_t* a, unsigned i) } static inline int16_t _hb_ucd_bmg (unsigned u) { - return u<65380 ? _hb_ucd_i16[((_hb_ucd_u8[8218u+((_hb_ucd_u8[7986u+((_hb_ucd_u8[7890u+((_hb_ucd_b4(_hb_ucd_u8+7826u,((((((((u)>>1))>>2))>>3))>>3)))<<3)+((((((((u)>>1))>>2))>>3))&7)])<<3)+((((((u)>>1))>>2))&7)])<<2)+((((u)>>1))&3)])<<1)+((u)&1)] : 0; + /* packtab: [2^4,2^3,2^3,2^2,2^1] */ + return u<65380u ? (int16_t)(_hb_ucd_i16[_hb_ucd_u8[8198u+_hb_ucd_u8[7969u+_hb_ucd_u8[7875u+((_hb_ucd_b4(_hb_ucd_u8+7811u,((((((((u)>>1))>>2))>>3))>>3)))<<3)+((((((((u)>>1))>>2))>>3))&7)]+((((((u)>>1))>>2))&7)]+((((u)>>1))&3)]+((u)&1)]) : 0; } static inline uint8_t _hb_ucd_sc (unsigned u) { - return u<918016 ? _hb_ucd_u8[11655u+((_hb_ucd_u8[10647u+((_hb_ucd_u8[9151u+((_hb_ucd_u8[8703u+((_hb_ucd_u8[8495u+((_hb_ucd_b4(_hb_ucd_u8+8466u,((((((((((u)>>2))>>2))>>3))>>3))>>4)))<<4)+((((((((((u)>>2))>>2))>>3))>>3))&15)])<<3)+((((((((u)>>2))>>2))>>3))&7)])<<3)+((((((u)>>2))>>2))&7)])<<2)+((((u)>>2))&3)])<<2)+((u)&3)] : 2; + /* packtab: [2^4,2^4,2^3,2^3,2^2,2^2] */ + return u<918016u ? (uint8_t)(_hb_ucd_u8[11623u+((_hb_ucd_u8[10615u+((_hb_ucd_u8[9119u+((_hb_ucd_u8[8675u+((_hb_ucd_u8[8475u+((_hb_ucd_b4(_hb_ucd_u8+8446u,((((((((((u)>>2))>>2))>>3))>>3))>>4)))<<4)+((((((((((u)>>2))>>2))>>3))>>3))&15)])<<3)+((((((((u)>>2))>>2))>>3))&7)])<<3)+((((((u)>>2))>>2))&7)])<<2)+((((u)>>2))&3)])<<2)+((u)&3)]) : 2; } static inline uint16_t _hb_ucd_dm (unsigned u) { - return u<195102 ? _hb_ucd_u16[1680u+((_hb_ucd_u8[13041u+((_hb_ucd_u8[12659u+((((u)>>4))>>5)])<<5)+((((u)>>4))&31)])<<4)+((u)&15)] : 0; + /* packtab: [2^8,2^5,2^4] */ + return u<195102u ? (uint16_t)(_hb_ucd_u16[1680u+((_hb_ucd_u8[13009u+((_hb_ucd_u8[12627u+((((u)>>4))>>5)])<<5)+((((u)>>4))&31)])<<4)+((u)&15)]) : 0; } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-unicode-emoji-table.hh b/src/java.desktop/share/native/libharfbuzz/hb-unicode-emoji-table.hh index 711dd9b6571..7200952547a 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-unicode-emoji-table.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-unicode-emoji-table.hh @@ -27,36 +27,36 @@ static const uint8_t _hb_emoji_u8[624]= { - 16, 17, 17, 17, 50, 20, 21, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,118,152, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 50, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 3, 0, 0, 4, 0, 5, 0, 0, 0, 0, 0, 6, 0, 0, 7, - 0, 0, 0, 8, 0, 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, - 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, - 23, 0, 24, 25, 0, 26, 27, 28, 29, 30, 31, 31, 32, 31, 33, 34, - 31, 31, 31, 35, 36, 37, 38, 39, 31, 40, 31, 41, 0, 0, 0, 42, - 43, 44, 45, 46, 47, 48, 31, 31, 0, 49, 31, 31, 0, 0, 0, 0, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 36, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 2, 0, 0,240, 3, 0, 6, 0, 0, - 0, 0, 0, 12, 0, 1, 0, 0, 0,128, 0, 0, 0,254, 15, 7, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64, 0, - 1, 0, 0, 0, 0, 0, 0,120, 31, 64, 50, 33, 77,196, 0, 7, - 5,255, 15,128,105, 1, 0,200, 0, 0,252, 26,131, 12, 3, 96, - 48,193, 26, 0, 0, 6,191, 39, 36,191, 84, 32, 2, 1, 24, 0, - 144, 80,184, 0, 24, 0, 0, 0, 0, 0,224, 0, 2, 0, 1,128, - 0, 0, 0, 0, 0, 0, 48, 0,224, 0, 0, 24, 0, 0, 0, 0, - 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, - 0, 0,128, 2, 0, 0, 0, 0, 16, 0, 0, 0, 0,240, 0, 0, - 0, 0,240,255, 0,128, 1, 0, 1,128, 1, 0, 0, 0,192,255, - 0, 0, 0, 0, 0, 0, 3,192, 0, 64,254, 7, 0,192,255,255, - 255,255,255,255, 63, 0, 0, 0,254,255, 0, 4, 0,128,252,247, - 0,254,255,255,192,255,255,255,255,255,255,255,255,255,255,255, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118,152, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 5, 0, 6, 0, 0, 0, 0, 0, 7, 0, 0, 8, + 0, 0, 0, 9, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, + 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 20, 21, 0, 0, + 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, + 24, 0, 25, 26, 0, 27, 28, 29, 30, 31, 1, 1, 32, 1, 33, 34, + 1, 1, 1, 35, 36, 37, 38, 39, 1, 40, 1, 41, 0, 0, 0, 42, + 43, 44, 45, 46, 47, 48, 1, 1, 0, 49, 1, 1, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255, + 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 2, + 0, 0,240, 3, 0, 6, 0, 0, 0, 0, 0, 12, 0, 1, 0, 0, + 0,128, 0, 0, 0,254, 15, 7, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 64, 0, 1, 0, 0, 0, 0, 0, 0,120, + 31, 64, 50, 33, 77,196, 0, 7, 5,255, 15,128,105, 1, 0,200, + 0, 0,252, 26,131, 12, 3, 96, 48,193, 26, 0, 0, 6,191, 39, + 36,191, 84, 32, 2, 1, 24, 0,144, 80,184, 0, 24, 0, 0, 0, + 0, 0,224, 0, 2, 0, 1,128, 0, 0, 0, 0, 0, 0, 48, 0, + 224, 0, 0, 24, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 32, 0, 0,128, 2, 0, 0, 0, 0, + 16, 0, 0, 0, 0,240, 0, 0, 0, 0,240,255, 0,128, 1, 0, + 1,128, 1, 0, 0, 0,192,255, 0, 0, 0, 0, 0, 0, 3,192, + 0, 64,254, 7, 0,192,255,255,255,255,255,255, 63, 0, 0, 0, + 254,255, 0, 4, 0,128,252,247, 0,254,255,255,192,255,255,255, 255,255,255,255,243,255,255,255,255,255,207,206,255,255,255,255, 255,255,255,255,255,255,185, 7,255,255,255,255,255,255,255,191, 255,255,255,255,255,255,255, 63, 0,126,255,255,255,128,249, 7, @@ -78,7 +78,8 @@ static inline uint8_t _hb_emoji_b1 (const uint8_t* a, unsigned i) } static inline uint8_t _hb_emoji_is_Extended_Pictographic (unsigned u) { - return u<131070 ? _hb_emoji_b1(_hb_emoji_u8+224u,((_hb_emoji_u8[64u+((_hb_emoji_b4(_hb_emoji_u8,((((u)>>6))>>4)))<<4)+((((u)>>6))&15)])<<6)+((u)&63)) : 0; + /* packtab: [2^4,2^4,2^6] */ + return u<131070u ? (uint8_t)(_hb_emoji_b1(_hb_emoji_u8+224u,((_hb_emoji_u8[64u+((_hb_emoji_b4(_hb_emoji_u8,((((u)>>6))>>4)))<<4)+((((u)>>6))&15)])<<6)+((u)&63))) : 0; } diff --git a/src/java.desktop/share/native/libharfbuzz/hb-unicode.cc b/src/java.desktop/share/native/libharfbuzz/hb-unicode.cc index fa0d66174ff..df76bd99d90 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-unicode.cc +++ b/src/java.desktop/share/native/libharfbuzz/hb-unicode.cc @@ -376,8 +376,12 @@ hb_unicode_funcs_set_##name##_func (hb_unicode_funcs_t *ufuncs, void *user_data, \ hb_destroy_func_t destroy) \ { \ + auto destroy_guard = hb_make_scope_guard ([&]() { \ + if (destroy) destroy (user_data); \ + }); \ + \ if (hb_object_is_immutable (ufuncs)) \ - goto fail; \ + return; \ \ if (!func) \ { \ @@ -396,11 +400,7 @@ hb_unicode_funcs_set_##name##_func (hb_unicode_funcs_t *ufuncs, ufuncs->func.name = ufuncs->parent->func.name; \ ufuncs->user_data.name = user_data; \ ufuncs->destroy.name = destroy; \ - return; \ - \ -fail: \ - if (destroy) \ - destroy (user_data); \ + destroy_guard.release (); \ } HB_UNICODE_FUNCS_IMPLEMENT_CALLBACKS diff --git a/src/java.desktop/share/native/libharfbuzz/hb-vector.hh b/src/java.desktop/share/native/libharfbuzz/hb-vector.hh index b650ca9f066..b0aa842bb23 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-vector.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb-vector.hh @@ -62,7 +62,7 @@ struct hb_vector_t hb_requires (hb_is_iterable (Iterable))> explicit hb_vector_t (const Iterable &o) : hb_vector_t () { - extend (o); + extend (o, true); } HB_ALWAYS_INLINE_VECTOR_ALLOCS hb_vector_t (const hb_vector_t &o) : hb_vector_t () @@ -117,12 +117,12 @@ struct hb_vector_t template HB_ALWAYS_INLINE_VECTOR_ALLOCS - void extend (const Iterable &o) + void extend (const Iterable &o, bool exact=false) { auto iter = hb_iter (o); if (iter.is_random_access_iterator || iter.has_fast_len) { - if (unlikely (!alloc (hb_len (iter), true))) + if (unlikely (!alloc (length + hb_len (iter), exact))) return; unsigned count = hb_len (iter); for (unsigned i = 0; i < count; i++) @@ -138,16 +138,16 @@ struct hb_vector_t } } HB_ALWAYS_INLINE_VECTOR_ALLOCS - void extend (array_t o) + void extend (array_t o, bool exact=false) { - alloc (length + o.length); + alloc (length + o.length, exact); if (unlikely (in_error ())) return; copy_array (o); } HB_ALWAYS_INLINE_VECTOR_ALLOCS - void extend (c_array_t o) + void extend (c_array_t o, bool exact=false) { - alloc (length + o.length); + alloc (length + o.length, exact); if (unlikely (in_error ())) return; copy_array (o); } @@ -182,10 +182,46 @@ struct hb_vector_t { if (unlikely (in_error ())) reset_error (); - resize (0); + clear (); return *this; } + HB_ALWAYS_INLINE_VECTOR_ALLOCS + hb_vector_t &reset_if_error () + { + if (unlikely (in_error ())) + reset (); + return *this; + } + + /* Transfer ownership of the backing storage to caller. + * Returns nullptr if storage is not owned by this vector. */ + Type * + steal (unsigned *len = nullptr, int *allocated_out = nullptr) + { + if (!is_owned ()) + return nullptr; + if (len) + *len = length; + if (allocated_out) + *allocated_out = allocated; + Type *p = arrayZ; + init (); + return p; + } + + /* Adopt a previously detached owned buffer. */ + void + recycle_buffer (Type *buffer, + unsigned len, + int allocated_len) + { + fini (); + arrayZ = buffer; + length = len; + allocated = allocated_len; + } + friend void swap (hb_vector_t& a, hb_vector_t& b) noexcept { hb_swap (a.allocated, b.allocated); @@ -236,7 +272,7 @@ struct hb_vector_t const Type& tail () const { return (*this)[length - 1]; } explicit operator bool () const { return length; } - unsigned get_size () const { return length * item_size; } + size_t get_size () const { return length * item_size; } /* Sink interface. */ template @@ -290,6 +326,12 @@ struct hb_vector_t } template HB_ALWAYS_INLINE_VECTOR_ALLOCS + bool push_or_fail (Args&&... args) + { + return push (std::forward (args)...) != std::addressof (Crap (Type)); + } + template + HB_ALWAYS_INLINE_VECTOR_ALLOCS Type *push_has_room (Args&&... args) { /* Emplace. */ @@ -543,7 +585,7 @@ struct hb_vector_t HB_ALWAYS_INLINE_VECTOR_ALLOCS void clear () { - resize (0); + shrink_vector (0); } template @@ -671,8 +713,11 @@ struct hb_vector_t /* Sorting API. */ - void qsort (int (*cmp)(const void*, const void*) = Type::cmp) - { as_array ().qsort (cmp); } + template + void qsort (Compar compar) + { as_array ().qsort (compar); } + void qsort () + { as_array ().qsort (); } /* Unsorted search API. */ template diff --git a/src/java.desktop/share/native/libharfbuzz/hb-version.h b/src/java.desktop/share/native/libharfbuzz/hb-version.h index c673d1e3612..7ab4a82fd85 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb-version.h +++ b/src/java.desktop/share/native/libharfbuzz/hb-version.h @@ -41,26 +41,26 @@ HB_BEGIN_DECLS * * The major component of the library version available at compile-time. */ -#define HB_VERSION_MAJOR 12 +#define HB_VERSION_MAJOR 14 /** * HB_VERSION_MINOR: * * The minor component of the library version available at compile-time. */ -#define HB_VERSION_MINOR 3 +#define HB_VERSION_MINOR 2 /** * HB_VERSION_MICRO: * * The micro component of the library version available at compile-time. */ -#define HB_VERSION_MICRO 2 +#define HB_VERSION_MICRO 0 /** * HB_VERSION_STRING: * * A string literal containing the library version available at compile-time. */ -#define HB_VERSION_STRING "12.3.2" +#define HB_VERSION_STRING "14.2.0" /** * HB_VERSION_ATLEAST: diff --git a/src/java.desktop/share/native/libharfbuzz/hb-zlib.hh b/src/java.desktop/share/native/libharfbuzz/hb-zlib.hh new file mode 100644 index 00000000000..3b8eb791a17 --- /dev/null +++ b/src/java.desktop/share/native/libharfbuzz/hb-zlib.hh @@ -0,0 +1,37 @@ +#ifndef HB_ZLIB_HH +#define HB_ZLIB_HH + +#include "hb-blob.hh" + +static inline bool +hb_blob_is_gzip (const char *data, + unsigned data_len) +{ + return data_len >= 3 && + (unsigned char) data[0] == 0x1Fu && + (unsigned char) data[1] == 0x8Bu && + (unsigned char) data[2] == 0x08u; +} + +static inline bool +hb_gzip_get_uncompressed_size (const char *data, + unsigned data_len, + uint32_t *size) +{ + if (data_len < 4) + return false; + + const unsigned char *trailer = (const unsigned char *) data + data_len - 4; + if (size) + *size = (uint32_t) trailer[0] | + ((uint32_t) trailer[1] << 8) | + ((uint32_t) trailer[2] << 16) | + ((uint32_t) trailer[3] << 24); + return true; +} + +HB_INTERNAL hb_blob_t * +hb_blob_decompress_gzip (hb_blob_t *blob, + unsigned max_output_len); + +#endif /* HB_ZLIB_HH */ diff --git a/src/java.desktop/share/native/libharfbuzz/hb.hh b/src/java.desktop/share/native/libharfbuzz/hb.hh index 7582abaa933..25565c0caa1 100644 --- a/src/java.desktop/share/native/libharfbuzz/hb.hh +++ b/src/java.desktop/share/native/libharfbuzz/hb.hh @@ -138,6 +138,7 @@ /* Ignored intentionally. */ #ifndef HB_NO_PRAGMA_GCC_DIAGNOSTIC_IGNORED +#pragma GCC diagnostic ignored "-Warray-bounds" // https://github.com/harfbuzz/harfbuzz/issues/5738 #pragma GCC diagnostic ignored "-Wclass-memaccess" #pragma GCC diagnostic ignored "-Wcast-function-type-strict" // https://github.com/harfbuzz/harfbuzz/pull/3859#issuecomment-1295409126 #pragma GCC diagnostic ignored "-Wdangling-reference" // https://github.com/harfbuzz/harfbuzz/issues/4043 @@ -526,7 +527,7 @@ static_assert ((sizeof (hb_var_int_t) == 4), ""); /* Pie time. */ // https://github.com/harfbuzz/harfbuzz/issues/4166 -#define HB_PI 3.14159265358979f +#define HB_PI 3.14159265358979323846f #define HB_2_PI (2.f * HB_PI) /* Compile-time custom allocator support. */ @@ -570,6 +571,13 @@ extern "C" void hb_free_impl(void *ptr); #include "hb-object.hh" // Requires: hb-atomic hb-mutex hb-vector +/* Library-internal alias for hb::unique_ptr defined in hb-cplusplus.hh. + * Unique-ownership RAII wrapper around an HB object; destroys on scope exit + * via the type's hb_*_destroy() function. Usage: hb_unique_ptr_t. + * Matches the hb_*_t naming used elsewhere in internal code. */ +template using hb_unique_ptr_t = hb::unique_ptr; + + /* Our src/test-*.cc use hb_assert(), such that it's not compiled out under NDEBUG. * https://github.com/harfbuzz/harfbuzz/issues/5418 */ #define hb_always_assert(x) \ diff --git a/src/java.desktop/unix/classes/sun/print/UnixPrintJob.java b/src/java.desktop/unix/classes/sun/print/UnixPrintJob.java index 4604167a0e4..c75efac714a 100644 --- a/src/java.desktop/unix/classes/sun/print/UnixPrintJob.java +++ b/src/java.desktop/unix/classes/sun/print/UnixPrintJob.java @@ -716,8 +716,8 @@ public final class UnixPrintJob implements CancelablePrintJob { /* add the user name to the job */ String userName = System.getProperty("user.name"); if (userName == null || userName.isEmpty()) { - RequestingUserName ruName = - (RequestingUserName)reqSet.get(RequestingUserName.class); + RequestingUserName ruName = (reqSet != null) ? + (RequestingUserName)reqSet.get(RequestingUserName.class) : null; if (ruName != null) { jobAttrSet.add( new JobOriginatingUserName(ruName.getValue(), diff --git a/src/java.desktop/windows/classes/sun/print/Win32PrintJob.java b/src/java.desktop/windows/classes/sun/print/Win32PrintJob.java index 0afd0ed60c7..48cf1472016 100644 --- a/src/java.desktop/windows/classes/sun/print/Win32PrintJob.java +++ b/src/java.desktop/windows/classes/sun/print/Win32PrintJob.java @@ -602,8 +602,8 @@ public final class Win32PrintJob implements CancelablePrintJob { String userName = System.getProperty("user.name"); if (userName == null || userName.isEmpty()) { - RequestingUserName ruName = - (RequestingUserName)reqSet.get(RequestingUserName.class); + RequestingUserName ruName = (reqSet != null) ? + (RequestingUserName)reqSet.get(RequestingUserName.class) : null; if (ruName != null) { jobAttrSet.add( new JobOriginatingUserName(ruName.getValue(), diff --git a/src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java b/src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java index 6121a0c1673..c4573317785 100644 --- a/src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java +++ b/src/java.net.http/share/classes/jdk/internal/net/http/Http2ClientImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -351,4 +351,9 @@ class Http2ClientImpl { public boolean stopping() { return stopping; } + + // getConnections() is used only by tests. + Map getConnections() { + return connections; + } } diff --git a/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java b/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java index 94b8505da47..11022ca5c96 100644 --- a/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java +++ b/src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -52,7 +52,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; -import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.function.Function; import java.util.function.Supplier; @@ -1610,16 +1609,37 @@ class Http2Connection implements Closeable { return frames; } - // Dedicated cache for headers encoding ByteBuffer. + // Dedicated reusable ByteBuffer for headers encoding. // There can be no concurrent access to this buffer as all access to this buffer // and its content happen within a single critical code block section protected - // by the sendLock. / (see sendFrame()) - // private final ByteBufferPool headerEncodingPool = new ByteBufferPool(); + // by the sendlock (see sendFrame()). + private ByteBuffer cachedHeaderBuffer; + + // getCachedHeaderBuffer() is used only by tests and it should not be + // called in source code without also holding `sendlock`. + ByteBuffer getCachedHeaderBuffer() { + return cachedHeaderBuffer; + } private ByteBuffer getHeaderBuffer(int size) { - ByteBuffer buf = ByteBuffer.allocate(size); - buf.limit(size); - return buf; + assert sendlock.isHeldByCurrentThread() : "current thread is not holding sendlock"; + + if (cachedHeaderBuffer == null || cachedHeaderBuffer.capacity() < size) { + cachedHeaderBuffer = ByteBuffer.allocate(size); + return cachedHeaderBuffer; + } + + cachedHeaderBuffer.clear(); + cachedHeaderBuffer.limit(size); + return cachedHeaderBuffer; + } + + private static ByteBuffer copyBuffer(ByteBuffer buffer) { + buffer.flip(); + ByteBuffer copy = ByteBuffer.allocate(buffer.remaining()); + copy.put(buffer); + copy.flip(); + return copy; } /* @@ -1634,8 +1654,8 @@ class Http2Connection implements Closeable { * encoding in HTTP/2... */ private List encodeHeadersImpl(int bufferSize, HttpHeaders... headers) { - ByteBuffer buffer = getHeaderBuffer(bufferSize); List buffers = new ArrayList<>(); + ByteBuffer buffer = getHeaderBuffer(bufferSize); for (HttpHeaders header : headers) { for (Map.Entry> e : header.map().entrySet()) { String lKey = e.getKey().toLowerCase(Locale.US); @@ -1644,16 +1664,17 @@ class Http2Connection implements Closeable { hpackOut.header(lKey, value); while (!hpackOut.encode(buffer)) { if (!buffer.hasRemaining()) { - buffer.flip(); - buffers.add(buffer); - buffer = getHeaderBuffer(bufferSize); + ByteBuffer copy = copyBuffer(buffer); + buffers.add(copy); + buffer.clear(); + buffer.limit(bufferSize); } } } } } - buffer.flip(); - buffers.add(buffer); + ByteBuffer copy = copyBuffer(buffer); + buffers.add(copy); return buffers; } @@ -1710,7 +1731,7 @@ class Http2Connection implements Closeable { } } - private final Lock sendlock = new ReentrantLock(); + private final ReentrantLock sendlock = new ReentrantLock(); void sendFrame(Http2Frame frame) { try { diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java index cf5e5ca83f5..5277972a56b 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java @@ -163,6 +163,11 @@ public enum Source { * 27, tbd */ JDK27("27"), + + /** + * 28, tbd + */ + JDK28("28"), ; // Reduce code churn when appending new constants private static final Context.Key sourceKey = new Context.Key<>(); @@ -215,6 +220,7 @@ public enum Source { public Target requiredTarget() { return switch(this) { + case JDK28 -> Target.JDK1_28; case JDK27 -> Target.JDK1_27; case JDK26 -> Target.JDK1_26; case JDK25 -> Target.JDK1_25; @@ -374,6 +380,7 @@ public enum Source { case JDK25 -> RELEASE_25; case JDK26 -> RELEASE_26; case JDK27 -> RELEASE_27; + case JDK28 -> RELEASE_28; default -> null; }; } diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java index 40628709dfe..34e1f595752 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java @@ -106,6 +106,8 @@ import static com.sun.tools.javac.code.Kinds.Kind.TYP; import static com.sun.tools.javac.code.Kinds.Kind.VAR; import static com.sun.tools.javac.code.TypeTag.BOT; import static com.sun.tools.javac.code.TypeTag.VOID; +import com.sun.tools.javac.jvm.Target; +import com.sun.tools.javac.tree.JCTree.JCThrow; /** * This pass desugars lambda expressions into static methods @@ -128,6 +130,7 @@ public class LambdaToMethod extends TreeTranslator { private TreeMaker make; private final Types types; private final TransTypes transTypes; + private final Target target; private Env attrEnv; /** info about the current class being processed */ @@ -188,6 +191,7 @@ public class LambdaToMethod extends TreeTranslator { make = TreeMaker.instance(context); types = Types.instance(context); transTypes = TransTypes.instance(context); + target = Target.instance(context); Options options = Options.instance(context); dumpLambdaToMethodStats = options.isSet("debug.dumpLambdaToMethodStats"); dumpLambdaDeserializationStats = options.isSet("debug.dumpLambdaDeserializationStats"); @@ -248,7 +252,7 @@ public class LambdaToMethod extends TreeTranslator { /** * list of deserialization cases */ - private final Map> deserializeCases = new HashMap<>(); + private final Map deserializeCases = new HashMap<>(); /** * deserialize method symbol @@ -319,7 +323,7 @@ public class LambdaToMethod extends TreeTranslator { int prevPos = make.pos; try { make.at(tree); - kInfo.addMethod(makeDeserializeMethod()); + makeDeserializeMethod().forEach(kInfo::addMethod); } finally { make.at(prevPos); } @@ -647,24 +651,59 @@ public class LambdaToMethod extends TreeTranslator { return trans_block; } - private JCMethodDecl makeDeserializeMethod() { + // When an instance created for a "lambda" is serialized, the type that is + // serialized is java.lang.invoke.SerializedLambda. + // Its SerializedLambda.readResolve will call method $deserializeLambda$ + // on the class containing the lambda, passing the SerializedLambda as + // a parameter. The $deserializeLambda$ is responsible for recreating the + // appropriate instance. + // + // The $deserializeLambda$ looks like this: + // private static Object $deserializeLambda$(final java.lang.invoke.SerializedLambda lambda) { + // switch (lambda.getImplMethodName()) { + // case -> return $deserializeLambda$(lambda); + // } + // throw new IllegalArgumentException("Invalid lambda deserialization"); + // } + // + // The $deserializeLambda$ methods then look like: + // private static Object $deserializeLambda$(final java.lang.invoke.SerializedLambda lambda) { + // if (lambda.getImplMethodKind() == ... && + // lambda.getFunctionalInterfaceClass().equals(...) && + // lambda.getFunctionalInterfaceMethodName().equals(...) && + // lambda.getFunctionalInterfaceMethodSignature().equals(...) && + // lambda.getImplClass().equals(...) && + // lambda.getImplMethodSignature().equals(...) && + // lambda.getInstantiatedMethodType().equals(...)) return ; + // //any additional deserialization cases with the same implMethodName. + // throw new IllegalArgumentException("Invalid lambda deserialization"); + // } + // + // The $deserializeLambda$ may contain multiple if statements if + // there are multiple SerializedLambdas with the same implMethodName name. + // This may happen when a method references is serialized. + private List makeDeserializeMethod() { ListBuffer cases = new ListBuffer<>(); ListBuffer breaks = new ListBuffer<>(); - for (Map.Entry> entry : kInfo.deserializeCases.entrySet()) { + ListBuffer deserializeMethods = new ListBuffer<>(); + for (Map.Entry entry : kInfo.deserializeCases.entrySet()) { + deserializeMethods.append(createImplementationNameDeserializationMethod(entry.getValue())); + JCBreak br = make.Break(null); breaks.add(br); - List stmts = entry.getValue().append(br).toList(); + List stmts = List.of( + make.Return(make.App(make.QualIdent(entry.getValue().deserializationMethod), List.of(make.Ident(kInfo.deserParamSym)))), + br + ); cases.add(make.Case(JCCase.STATEMENT, List.of(make.ConstantCaseLabel(make.Literal(entry.getKey()))), null, stmts, null)); } - JCSwitch sw = make.Switch(deserGetter("getImplMethodName", syms.stringType), cases.toList()); + JCSwitch sw = make.Switch(deserGetter(kInfo.deserParamSym, "getImplMethodName", syms.stringType), cases.toList()); for (JCBreak br : breaks) { br.target = sw; } JCBlock body = make.Block(0L, List.of( sw, - make.Throw(makeNewClass( - syms.illegalArgumentExceptionType, - List.of(make.Literal("Invalid lambda deserialization")))))); + createThrowInvalidLambdaDeserialization())); JCMethodDecl deser = make.MethodDef(make.Modifiers(kInfo.deserMethodSym.flags()), names.deserializeLambda, make.QualIdent(kInfo.deserMethodSym.getReturnType().tsym), @@ -676,6 +715,32 @@ public class LambdaToMethod extends TreeTranslator { deser.sym = kInfo.deserMethodSym; deser.type = kInfo.deserMethodSym.type; //System.err.printf("DESER: '%s'\n", deser); + deserializeMethods.append(lower.translateMethod(attrEnv, deser, make)); + return deserializeMethods.toList(); + } + + private JCThrow createThrowInvalidLambdaDeserialization() { + return make.Throw(makeNewClass( + syms.illegalArgumentExceptionType, + List.of(make.Literal("Invalid lambda deserialization")))); + } + + private JCMethodDecl createImplementationNameDeserializationMethod(DeserializationCase deserializationCase) { + JCBlock body = make.Block(0L, + deserializationCase.stmts + .append(createThrowInvalidLambdaDeserialization()) + .toList()); + JCMethodDecl deser = make.MethodDef(make.Modifiers(deserializationCase.deserializationMethod().flags()), + deserializationCase.deserializationMethod().name, + make.QualIdent(deserializationCase.deserializationMethod().getReturnType().tsym), + List.nil(), + List.of(make.VarDef(deserializationCase.deserParamSym(), null)), + List.nil(), + body, + null); + deser.sym = deserializationCase.deserializationMethod(); + deser.type = deserializationCase.deserializationMethod().type; + //System.err.printf("DESER: '%s'\n", deser); return lower.translateMethod(attrEnv, deser, make); } @@ -716,41 +781,55 @@ public class LambdaToMethod extends TreeTranslator { } } String implClass = classSig(types.erasure(refSym.owner.type)); - String implMethodName = refSym.getQualifiedName().toString(); + Name implMethodNameAsName = refSym.getQualifiedName(); + String implMethodName = implMethodNameAsName.toString(); String implMethodSignature = typeSig(types.erasure(refSym.type)); String instantiatedMethodType = typeSig(types.erasure(samType)); int implMethodKind = refSym.referenceKind(); - JCExpression kindTest = eqTest(syms.intType, deserGetter("getImplMethodKind", syms.intType), + + DeserializationCase deserializationCase = kInfo.deserializeCases.computeIfAbsent(implMethodName, _ -> { + Name currentDeserializationMethodName = implMethodNameAsName == names.init + ? names.deserializeLambda.append(names.fromString("init")) + : names.deserializeLambda.append(target.syntheticNameChar(), implMethodNameAsName); + MethodSymbol caseDeserializationMethod = makePrivateSyntheticMethod(STATIC, currentDeserializationMethodName, + kInfo.deserMethodSym.type, kInfo.clazz.sym); + VarSymbol caseDeserializationParam = new VarSymbol(FINAL, names.fromString("lambda"), + syms.serializedLambdaType, caseDeserializationMethod); + return new DeserializationCase(caseDeserializationMethod, caseDeserializationParam, new ListBuffer<>()); + }); + VarSymbol deserParamSym = deserializationCase.deserParamSym(); + + JCExpression kindTest = eqTest(syms.intType, deserGetter(deserParamSym, "getImplMethodKind", syms.intType), make.Literal(implMethodKind)); ListBuffer serArgs = new ListBuffer<>(); int i = 0; for (Type t : indyType.getParameterTypes()) { List indexAsArg = new ListBuffer().append(make.Literal(i)).toList(); List argTypes = new ListBuffer().append(syms.intType).toList(); - serArgs.add(make.TypeCast(types.erasure(t), deserGetter("getCapturedArg", syms.objectType, argTypes, indexAsArg))); + serArgs.add(make.TypeCast(types.erasure(t), deserGetter(deserParamSym, "getCapturedArg", syms.objectType, argTypes, indexAsArg))); ++i; } JCStatement stmt = make.If( - deserTest(deserTest(deserTest(deserTest(deserTest(deserTest( - kindTest, - "getFunctionalInterfaceClass", functionalInterfaceClass), - "getFunctionalInterfaceMethodName", functionalInterfaceMethodName), - "getFunctionalInterfaceMethodSignature", functionalInterfaceMethodSignature), - "getImplClass", implClass), - "getImplMethodSignature", implMethodSignature), - "getInstantiatedMethodType", instantiatedMethodType), + deserTest(deserParamSym, + deserTest(deserParamSym, + deserTest(deserParamSym, + deserTest(deserParamSym, + deserTest(deserParamSym, + deserTest(deserParamSym, + kindTest, + "getFunctionalInterfaceClass", functionalInterfaceClass), + "getFunctionalInterfaceMethodName", functionalInterfaceMethodName), + "getFunctionalInterfaceMethodSignature", functionalInterfaceMethodSignature), + "getImplClass", implClass), + "getImplMethodSignature", implMethodSignature), + "getInstantiatedMethodType", instantiatedMethodType), make.Return(makeIndyCall( pos, syms.lambdaMetafactory, names.altMetafactory, staticArgs, indyType, serArgs.toList(), samSym.name)), null); - ListBuffer stmts = kInfo.deserializeCases.get(implMethodName); - if (stmts == null) { - stmts = new ListBuffer<>(); - kInfo.deserializeCases.put(implMethodName, stmts); - } if (dumpLambdaDeserializationStats) { log.note(pos, Notes.LambdaDeserializationStat( functionalInterfaceClass, @@ -762,7 +841,7 @@ public class LambdaToMethod extends TreeTranslator { implMethodSignature, instantiatedMethodType)); } - stmts.append(stmt); + deserializationCase.stmts().append(stmt); } private JCExpression eqTest(Type argType, JCExpression arg1, JCExpression arg2) { @@ -772,12 +851,12 @@ public class LambdaToMethod extends TreeTranslator { return testExpr; } - private JCExpression deserTest(JCExpression prev, String func, String lit) { + private JCExpression deserTest(VarSymbol deserParamSym, JCExpression prev, String func, String lit) { MethodType eqmt = new MethodType(List.of(syms.objectType), syms.booleanType, List.nil(), syms.methodClass); Symbol eqsym = rs.resolveQualifiedMethod(null, attrEnv, syms.objectType, names.equals, List.of(syms.objectType), List.nil()); JCMethodInvocation eqtest = make.Apply( List.nil(), - make.Select(deserGetter(func, syms.stringType), eqsym).setType(eqmt), + make.Select(deserGetter(deserParamSym, func, syms.stringType), eqsym).setType(eqmt), List.of(make.Literal(lit))); eqtest.setType(syms.booleanType); JCBinary compound = make.Binary(Tag.AND, prev, eqtest); @@ -786,16 +865,16 @@ public class LambdaToMethod extends TreeTranslator { return compound; } - private JCExpression deserGetter(String func, Type type) { - return deserGetter(func, type, List.nil(), List.nil()); + private JCExpression deserGetter(VarSymbol deserParamSym, String func, Type type) { + return deserGetter(deserParamSym, func, type, List.nil(), List.nil()); } - private JCExpression deserGetter(String func, Type type, List argTypes, List args) { + private JCExpression deserGetter(VarSymbol deserParamSym, String func, Type type, List argTypes, List args) { MethodType getmt = new MethodType(argTypes, type, List.nil(), syms.methodClass); Symbol getsym = rs.resolveQualifiedMethod(null, attrEnv, syms.serializedLambdaType, names.fromString(func), argTypes, List.nil()); return make.Apply( List.nil(), - make.Select(make.Ident(kInfo.deserParamSym).setType(syms.serializedLambdaType), getsym).setType(getmt), + make.Select(make.Ident(deserParamSym).setType(syms.serializedLambdaType), getsym).setType(getmt), args).setType(type); } @@ -1273,6 +1352,14 @@ public class LambdaToMethod extends TreeTranslator { } } + /** + * Deserialization statements for a given lambda implementation name, together + * with the (future) enclosing deserialization method. + */ + record DeserializationCase(MethodSymbol deserializationMethod, + VarSymbol deserParamSym, + ListBuffer stmts) {} + /** * **************************************************************** * Signature Generation diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java index ae1aab1cefd..b8067c3df02 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassFile.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -131,6 +131,7 @@ public class ClassFile { V69(69, 0), // JDK 25 V70(70, 0), // JDK 26 V71(71, 0), // JDK 27 + V72(72, 0), // JDK 28 ; // Reduce code churn when appending new constants Version(int major, int minor) { this.major = major; diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java index b0a298fc845..451ac487cf7 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -116,6 +116,9 @@ public enum Target { /** JDK 27. */ JDK1_27("27", 71, 0), + + /** JDK 28. */ + JDK1_28("28", 72, 0), ; // Reduce code churn when appending new constants private static final Context.Key targetKey = new Context.Key<>(); diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java index bcc9ccd0113..fb946111709 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -55,7 +55,7 @@ import com.sun.tools.javac.util.StringUtils; * deletion without notice. */ @SupportedAnnotationTypes("*") -@SupportedSourceVersion(SourceVersion.RELEASE_27) +@SupportedSourceVersion(SourceVersion.RELEASE_28) public class PrintingProcessor extends AbstractProcessor { PrintWriter writer; diff --git a/src/jdk.compiler/share/data/symbols/java.base-R.sym.txt b/src/jdk.compiler/share/data/symbols/java.base-R.sym.txt new file mode 100644 index 00000000000..9853f8c70fd --- /dev/null +++ b/src/jdk.compiler/share/data/symbols/java.base-R.sym.txt @@ -0,0 +1,485 @@ +# +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# ########################################################## +# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ### +# ########################################################## +# +module name java.base +header exports java/io,java/lang,java/lang/annotation,java/lang/classfile,java/lang/classfile/attribute,java/lang/classfile/constantpool,java/lang/classfile/instruction,java/lang/constant,java/lang/foreign,java/lang/invoke,java/lang/module,java/lang/ref,java/lang/reflect,java/lang/runtime,java/math,java/net,java/net/spi,java/nio,java/nio/channels,java/nio/channels/spi,java/nio/charset,java/nio/charset/spi,java/nio/file,java/nio/file/attribute,java/nio/file/spi,java/security,java/security/cert,java/security/interfaces,java/security/spec,java/text,java/text/spi,java/time,java/time/chrono,java/time/format,java/time/temporal,java/time/zone,java/util,java/util/concurrent,java/util/concurrent/atomic,java/util/concurrent/locks,java/util/function,java/util/jar,java/util/random,java/util/regex,java/util/spi,java/util/stream,java/util/zip,javax/crypto,javax/crypto/interfaces,javax/crypto/spec,javax/net,javax/net/ssl,javax/security/auth,javax/security/auth/callback,javax/security/auth/login,javax/security/auth/spi,javax/security/auth/x500,javax/security/cert,jdk/internal/event[jdk.jfr],jdk/internal/javac[java.compiler\u005C;u002C;jdk.compiler],jdk/internal/vm/vector[jdk.incubator.vector] extraModulePackages jdk/internal/access/foreign,jdk/internal/classfile/impl,jdk/internal/constant,jdk/internal/foreign/abi,jdk/internal/foreign/abi/aarch64/linux,jdk/internal/foreign/abi/aarch64/macos,jdk/internal/foreign/abi/aarch64/windows,jdk/internal/foreign/abi/fallback,jdk/internal/foreign/abi/ppc64/aix,jdk/internal/foreign/abi/ppc64/linux,jdk/internal/foreign/abi/riscv64/linux,jdk/internal/foreign/abi/s390/linux,jdk/internal/foreign/abi/x64/sysv,jdk/internal/foreign/abi/x64/windows,jdk/internal/foreign/layout,jdk/internal/lang,sun/nio,sun/nio/ch,sun/net,jdk/internal/foreign,jdk/internal/foreign,sun/net,sun/nio/ch uses java/lang/System$LoggerFinder,java/net/ContentHandlerFactory,java/net/spi/InetAddressResolverProvider,java/net/spi/URLStreamHandlerProvider,java/nio/channels/spi/AsynchronousChannelProvider,java/nio/channels/spi/SelectorProvider,java/nio/charset/spi/CharsetProvider,java/nio/file/spi/FileSystemProvider,java/nio/file/spi/FileTypeDetector,java/security/Provider,java/text/spi/BreakIteratorProvider,java/text/spi/CollatorProvider,java/text/spi/DateFormatProvider,java/text/spi/DateFormatSymbolsProvider,java/text/spi/DecimalFormatSymbolsProvider,java/text/spi/NumberFormatProvider,java/time/chrono/AbstractChronology,java/time/chrono/Chronology,java/time/format/DateTimeFormatterPatternProvider,java/time/zone/ZoneRulesProvider,java/util/spi/CalendarDataProvider,java/util/spi/CalendarNameProvider,java/util/spi/CurrencyNameProvider,java/util/spi/LocaleNameProvider,java/util/spi/ResourceBundleControlProvider,java/util/spi/ResourceBundleProvider,java/util/spi/TimeZoneNameProvider,java/util/spi/ToolProvider,javax/security/auth/spi/LoginModule,jdk/internal/io/JdkConsoleProvider,jdk/internal/logger/DefaultLoggerFinder,sun/util/locale/provider/LocaleDataMetaInfo,sun/util/resources/LocaleData$LocaleDataResourceBundleProvider,sun/util/spi/CalendarProvider provides interface\u0020;java/nio/file/spi/FileSystemProvider\u0020;impls\u0020;jdk/internal/jrtfs/JrtFileSystemProvider target macos-aarch64 flags 8000 + +class name java/io/ProxyingConsole +header extends java/io/Console flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass java/util/Locale$Category outerClass java/util/Locale innerClassName Category flags 4019 + +class name java/lang/LazyConstant +-method name orElse descriptor (Ljava/lang/Object;)Ljava/lang/Object; +-method name isInitialized descriptor ()Z + +class name java/lang/Math +method name asinh descriptor (D)D flags 9 +method name acosh descriptor (D)D flags 9 +method name atanh descriptor (D)D flags 9 + +class name java/lang/ModuleLayer +header extends java/lang/Object nestMembers java/lang/ModuleLayer$Controller flags 31 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer; +innerclass innerClass java/lang/ModuleLayer$Controller outerClass java/lang/ModuleLayer innerClassName Controller flags 19 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name java/lang/StrictMath +method name asinh descriptor (D)D flags 9 +method name acosh descriptor (D)D flags 9 +method name atanh descriptor (D)D flags 9 + +class name java/lang/String +method name encodedLength descriptor (Ljava/nio/charset/Charset;)I flags 1 + +class name java/lang/classfile/ClassFile +field name JAVA_27_VERSION descriptor I constantValue 71 flags 19 + +class name java/lang/classfile/instruction/IncrementInstruction +header extends java/lang/Object implements java/lang/classfile/Instruction sealed true permittedSubclasses jdk/internal/classfile/impl/AbstractInstruction$BoundIncrementInstruction,jdk/internal/classfile/impl/AbstractInstruction$UnboundIncrementInstruction flags 601 +innerclass innerClass jdk/internal/classfile/impl/AbstractInstruction$UnboundIncrementInstruction outerClass jdk/internal/classfile/impl/AbstractInstruction innerClassName UnboundIncrementInstruction flags 19 +innerclass innerClass java/lang/classfile/Opcode$Kind outerClass java/lang/classfile/Opcode innerClassName Kind flags 4019 +innerclass innerClass jdk/internal/classfile/impl/AbstractInstruction$BoundIncrementInstruction outerClass jdk/internal/classfile/impl/AbstractInstruction innerClassName BoundIncrementInstruction flags 19 +method name of descriptor (Ljava/lang/classfile/Opcode;II)Ljava/lang/classfile/instruction/IncrementInstruction; flags 9 + +class name java/lang/foreign/MemorySegment +method name getString descriptor (JLjava/nio/charset/Charset;J)Ljava/lang/String; flags 401 +method name copy descriptor (Ljava/lang/String;Ljava/nio/charset/Charset;ILjava/lang/foreign/MemorySegment;JI)J flags 9 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name java/lang/foreign/SegmentAllocator +method name allocateFrom descriptor (Ljava/lang/String;Ljava/nio/charset/Charset;II)Ljava/lang/foreign/MemorySegment; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name java/lang/module/Configuration +header extends java/lang/Object flags 31 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer; +innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name java/lang/ref/PhantomReference +header extends java/lang/ref/Reference flags 21 signature Ljava/lang/ref/Reference; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"} + +class name java/lang/ref/Reference +header extends java/lang/Object sealed true permittedSubclasses java/lang/ref/PhantomReference,java/lang/ref/SoftReference,java/lang/ref/WeakReference,java/lang/ref/FinalReference flags 421 signature Ljava/lang/Object; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"} +-method name reachabilityFence descriptor (Ljava/lang/Object;)V +method name reachabilityFence descriptor (Ljava/lang/Object;)V flags 9 runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; + +class name java/lang/ref/ReferenceQueue +header extends java/lang/Object flags 21 signature Ljava/lang/Object; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"} + +class name java/lang/ref/SoftReference +header extends java/lang/ref/Reference flags 21 signature Ljava/lang/ref/Reference; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"} + +class name java/lang/ref/WeakReference +header extends java/lang/ref/Reference flags 21 signature Ljava/lang/ref/Reference; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"} + +class name java/lang/reflect/ClassFileFormatVersion +field name RELEASE_27 descriptor Ljava/lang/reflect/ClassFileFormatVersion; flags 4019 + +class name java/lang/reflect/Executable +-method name toGenericString descriptor ()Ljava/lang/String; +method name toGenericString descriptor ()Ljava/lang/String; flags 1 + +class name java/lang/reflect/Modifier +-method name toString descriptor (I)Ljava/lang/String; +-method name classModifiers descriptor ()I +-method name interfaceModifiers descriptor ()I +-method name constructorModifiers descriptor ()I +-method name methodModifiers descriptor ()I +-method name fieldModifiers descriptor ()I +-method name parameterModifiers descriptor ()I +method name toString descriptor (I)Ljava/lang/String; flags 9 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="27") +method name classModifiers descriptor ()I flags 9 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="27") +method name interfaceModifiers descriptor ()I flags 9 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="27") +method name constructorModifiers descriptor ()I flags 9 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="27") +method name methodModifiers descriptor ()I flags 9 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="27") +method name fieldModifiers descriptor ()I flags 9 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="27") +method name parameterModifiers descriptor ()I flags 9 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(since="27") + +class name java/math/BigDecimal +method name rootn descriptor (ILjava/math/MathContext;)Ljava/math/BigDecimal; flags 1 + +class name java/security/AsymmetricKey +header extends java/lang/Object implements java/security/Key,java/security/BinaryEncodable flags 601 + +class name java/security/BinaryEncodable +header extends java/lang/Object sealed true permittedSubclasses java/security/AsymmetricKey,java/security/KeyPair,java/security/spec/PKCS8EncodedKeySpec,java/security/spec/X509EncodedKeySpec,javax/crypto/EncryptedPrivateKeyInfo,java/security/cert/X509Certificate,java/security/cert/X509CRL,java/security/PEM flags 601 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;) + +-class name java/security/DEREncodable + +class name java/security/KeyPair +header extends java/lang/Object implements java/io/Serializable,java/security/BinaryEncodable flags 31 + +class name java/security/KeyStore +method name getCreationInstant descriptor (Ljava/lang/String;)Ljava/time/Instant; thrownTypes java/security/KeyStoreException flags 11 + +class name java/security/KeyStoreSpi +method name engineGetCreationInstant descriptor (Ljava/lang/String;)Ljava/time/Instant; flags 1 + +class name java/security/PEM +header extends java/lang/Object implements java/security/BinaryEncodable flags 31 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;) +innerclass innerClass java/lang/ref/Cleaner$Cleanable outerClass java/lang/ref/Cleaner innerClassName Cleanable flags 609 +innerclass innerClass java/util/Base64$Decoder outerClass java/util/Base64 innerClassName Decoder flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +-method name toString descriptor ()Ljava/lang/String; +-method name decode descriptor ()[B +-method name hashCode descriptor ()I +-method name equals descriptor (Ljava/lang/Object;)Z +-method name content descriptor ()Ljava/lang/String; +method name descriptor (Ljava/lang/String;[B[B)V flags 1 +method name descriptor (Ljava/lang/String;[B)V flags 1 +method name content descriptor ()[B flags 1 +method name decode descriptor ()[B flags 1 +method name toString descriptor ()Ljava/lang/String; flags 1 + +class name java/security/PEMDecoder +header extends java/lang/Object flags 31 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;) +innerclass innerClass java/lang/ref/Cleaner$Cleanable outerClass java/lang/ref/Cleaner innerClassName Cleanable flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +-method name decode descriptor (Ljava/lang/String;)Ljava/security/DEREncodable; +-method name decode descriptor (Ljava/io/InputStream;)Ljava/security/DEREncodable; +-method name decode descriptor (Ljava/lang/String;Ljava/lang/Class;)Ljava/security/DEREncodable; +-method name decode descriptor (Ljava/io/InputStream;Ljava/lang/Class;)Ljava/security/DEREncodable; +-method name withFactory descriptor (Ljava/security/Provider;)Ljava/security/PEMDecoder; +method name decode descriptor (Ljava/lang/String;)Ljava/security/BinaryEncodable; flags 1 +method name decode descriptor (Ljava/io/InputStream;)Ljava/security/BinaryEncodable; thrownTypes java/io/IOException flags 1 +method name decode descriptor (Ljava/lang/String;Ljava/lang/Class;)Ljava/security/BinaryEncodable; flags 1 signature (Ljava/lang/String;Ljava/lang/Class;)TS; +method name decode descriptor (Ljava/io/InputStream;Ljava/lang/Class;)Ljava/security/BinaryEncodable; thrownTypes java/io/IOException flags 1 signature (Ljava/io/InputStream;Ljava/lang/Class;)TS; +method name withFactoriesOf descriptor (Ljava/security/Provider;)Ljava/security/PEMDecoder; flags 1 + +class name java/security/PEMEncoder +header extends java/lang/Object flags 31 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;) +innerclass innerClass java/lang/ref/Cleaner$Cleanable outerClass java/lang/ref/Cleaner innerClassName Cleanable flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +-method name encodeToString descriptor (Ljava/security/DEREncodable;)Ljava/lang/String; +-method name encode descriptor (Ljava/security/DEREncodable;)[B +method name encodeToString descriptor (Ljava/security/BinaryEncodable;)Ljava/lang/String; flags 1 +method name encode descriptor (Ljava/security/BinaryEncodable;)[B flags 1 + +class name java/security/cert/X509CRL +header extends java/security/cert/CRL implements java/security/cert/X509Extension,java/security/BinaryEncodable flags 421 + +class name java/security/cert/X509Certificate +header extends java/security/cert/Certificate implements java/security/cert/X509Extension,java/security/BinaryEncodable flags 421 + +class name java/security/spec/PKCS8EncodedKeySpec +header extends java/security/spec/EncodedKeySpec implements java/security/BinaryEncodable flags 21 + +class name java/security/spec/X509EncodedKeySpec +header extends java/security/spec/EncodedKeySpec implements java/security/BinaryEncodable flags 21 + +class name java/text/AttributedString +header extends java/lang/Object flags 21 +innerclass innerClass java/text/AttributedCharacterIterator$Attribute outerClass java/text/AttributedCharacterIterator innerClassName Attribute flags 9 +innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609 + +class name java/time/format/DateTimeFormatterPatternProvider +header extends java/util/spi/LocaleServiceProvider flags 421 +method name descriptor ()V flags 4 +method name getDateTimeFormatterPattern descriptor (Ljava/time/format/FormatStyle;Ljava/time/format/FormatStyle;Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String; flags 401 +method name getDateTimeFormatterPattern descriptor (Ljava/lang/String;Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String; flags 401 + +class name java/util/EnumSet +method name spliterator descriptor ()Ljava/util/Spliterator; flags 1 signature ()Ljava/util/Spliterator; + +class name java/util/HexFormat +header extends java/lang/Object flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; + +class name java/util/Locale +-method name getDisplayLanguage descriptor ()Ljava/lang/String; +-method name getDisplayCountry descriptor ()Ljava/lang/String; +-method name getDisplayVariant descriptor ()Ljava/lang/String; +-method name getDisplayName descriptor ()Ljava/lang/String; +method name getDisplayLanguage descriptor ()Ljava/lang/String; flags 1 +method name getDisplayCountry descriptor ()Ljava/lang/String; flags 1 +method name getDisplayVariant descriptor ()Ljava/lang/String; flags 1 +method name getDisplayName descriptor ()Ljava/lang/String; flags 1 + +class name java/util/Optional +header extends java/lang/Object flags 31 signature Ljava/lang/Object; runtimeAnnotations @Ljdk/internal/ValueBased;@Ljdk/internal/vm/annotation/TrustFinalFields; + +class name java/util/Set +method name ofLazy descriptor (Ljava/util/Set;Ljava/util/function/Predicate;)Ljava/util/Set; flags 9 signature (Ljava/util/Set<+TE;>;Ljava/util/function/Predicate<-TE;>;)Ljava/util/Set; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LAZY_CONSTANTS;) + +class name java/util/WeakHashMap +header extends java/util/AbstractMap implements java/util/Map flags 21 signature Ljava/util/AbstractMap;Ljava/util/Map; runtimeTypeAnnotations @Ljdk/internal/RequiresIdentity;{typeParameterIndex=I0,targetType="CLASS_TYPE_PARAMETER"} +innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609 + +class name java/util/concurrent/StructuredTaskScope +header extends java/lang/Object implements java/lang/AutoCloseable nestMembers java/util/concurrent/StructuredTaskScope$CancelledByTimeoutException,java/util/concurrent/StructuredTaskScope$Configuration,java/util/concurrent/StructuredTaskScope$Joiner,java/util/concurrent/StructuredTaskScope$Subtask,java/util/concurrent/StructuredTaskScope$Subtask$State sealed true permittedSubclasses java/util/concurrent/StructuredTaskScopeImpl flags 601 signature Ljava/lang/Object;Ljava/lang/AutoCloseable; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;STRUCTURED_CONCURRENCY;) +innerclass innerClass java/util/concurrent/StructuredTaskScope$Joiner outerClass java/util/concurrent/StructuredTaskScope innerClassName Joiner flags 609 +innerclass innerClass java/util/concurrent/StructuredTaskScope$CancelledByTimeoutException outerClass java/util/concurrent/StructuredTaskScope innerClassName CancelledByTimeoutException flags 19 +innerclass innerClass java/util/concurrent/StructuredTaskScope$Configuration outerClass java/util/concurrent/StructuredTaskScope innerClassName Configuration flags 609 +innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask outerClass java/util/concurrent/StructuredTaskScope innerClassName Subtask flags 609 +innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask$State outerClass java/util/concurrent/StructuredTaskScope$Subtask innerClassName State flags 4019 +-method name open descriptor (Ljava/util/concurrent/StructuredTaskScope$Joiner;)Ljava/util/concurrent/StructuredTaskScope; +-method name open descriptor ()Ljava/util/concurrent/StructuredTaskScope; +-method name join descriptor ()Ljava/lang/Object; +-method name open descriptor (Ljava/util/concurrent/StructuredTaskScope$Joiner;Ljava/util/function/UnaryOperator;)Ljava/util/concurrent/StructuredTaskScope; +method name open descriptor (Ljava/util/concurrent/StructuredTaskScope$Joiner;Ljava/util/function/UnaryOperator;)Ljava/util/concurrent/StructuredTaskScope; flags 9 signature (Ljava/util/concurrent/StructuredTaskScope$Joiner<-TT;+TR;TR_X;>;Ljava/util/function/UnaryOperator;)Ljava/util/concurrent/StructuredTaskScope; +method name open descriptor (Ljava/util/concurrent/StructuredTaskScope$Joiner;)Ljava/util/concurrent/StructuredTaskScope; flags 9 signature (Ljava/util/concurrent/StructuredTaskScope$Joiner<-TT;+TR;TR_X;>;)Ljava/util/concurrent/StructuredTaskScope; +method name open descriptor (Ljava/util/function/UnaryOperator;)Ljava/util/concurrent/StructuredTaskScope; flags 9 signature (Ljava/util/function/UnaryOperator;)Ljava/util/concurrent/StructuredTaskScope; +method name open descriptor ()Ljava/util/concurrent/StructuredTaskScope; flags 9 signature ()Ljava/util/concurrent/StructuredTaskScope; +method name join descriptor ()Ljava/lang/Object; thrownTypes java/lang/Throwable,java/lang/InterruptedException flags 401 signature ()TR;^TR_X;^Ljava/lang/InterruptedException; + +class name java/util/concurrent/StructuredTaskScope$CancelledByTimeoutException +header extends java/lang/RuntimeException nestHost java/util/concurrent/StructuredTaskScope flags 31 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;STRUCTURED_CONCURRENCY;) +innerclass innerClass java/util/concurrent/StructuredTaskScope$CancelledByTimeoutException outerClass java/util/concurrent/StructuredTaskScope innerClassName CancelledByTimeoutException flags 19 +method name descriptor ()V flags 1 + +-class name java/util/concurrent/StructuredTaskScope$FailedException + +class name java/util/concurrent/StructuredTaskScope$Joiner +header extends java/lang/Object nestHost java/util/concurrent/StructuredTaskScope flags 601 signature Ljava/lang/Object; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;STRUCTURED_CONCURRENCY;) +innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask outerClass java/util/concurrent/StructuredTaskScope innerClassName Subtask flags 609 +innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask$State outerClass java/util/concurrent/StructuredTaskScope$Subtask innerClassName State flags 4019 +innerclass innerClass java/util/concurrent/StructuredTaskScope$Joiner outerClass java/util/concurrent/StructuredTaskScope innerClassName Joiner flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +-method name result descriptor ()Ljava/lang/Object; +-method name awaitAllSuccessfulOrThrow descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner; +-method name awaitAll descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner; +-method name onTimeout descriptor ()V +-method name allSuccessfulOrThrow descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner; +-method name anySuccessfulOrThrow descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner; +-method name allUntil descriptor (Ljava/util/function/Predicate;)Ljava/util/concurrent/StructuredTaskScope$Joiner; +method name result descriptor ()Ljava/lang/Object; thrownTypes java/lang/Throwable flags 401 signature ()TR;^TR_X; +method name timeout descriptor ()Ljava/lang/Object; thrownTypes java/lang/Throwable flags 401 signature ()TR;^TR_X; +method name allSuccessfulOrThrow descriptor (Ljava/util/function/Function;)Ljava/util/concurrent/StructuredTaskScope$Joiner; flags 9 signature (Ljava/util/function/Function;)Ljava/util/concurrent/StructuredTaskScope$Joiner;TR_X;>; +method name allSuccessfulOrThrow descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner; flags 9 signature ()Ljava/util/concurrent/StructuredTaskScope$Joiner;Ljava/util/concurrent/ExecutionException;>; +method name anySuccessfulOrThrow descriptor (Ljava/util/function/Function;)Ljava/util/concurrent/StructuredTaskScope$Joiner; flags 9 signature (Ljava/util/function/Function;)Ljava/util/concurrent/StructuredTaskScope$Joiner; +method name anySuccessfulOrThrow descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner; flags 9 signature ()Ljava/util/concurrent/StructuredTaskScope$Joiner; +method name awaitAllSuccessfulOrThrow descriptor (Ljava/util/function/Function;)Ljava/util/concurrent/StructuredTaskScope$Joiner; flags 9 signature (Ljava/util/function/Function;)Ljava/util/concurrent/StructuredTaskScope$Joiner; +method name awaitAllSuccessfulOrThrow descriptor ()Ljava/util/concurrent/StructuredTaskScope$Joiner; flags 9 signature ()Ljava/util/concurrent/StructuredTaskScope$Joiner; +method name allUntil descriptor (Ljava/util/function/Predicate;)Ljava/util/concurrent/StructuredTaskScope$Joiner; flags 9 signature (Ljava/util/function/Predicate<-Ljava/util/concurrent/StructuredTaskScope$Subtask;>;)Ljava/util/concurrent/StructuredTaskScope$Joiner;>;Ljava/lang/RuntimeException;>; + +-class name java/util/concurrent/StructuredTaskScope$TimeoutException + +class name java/util/concurrent/StructuredTaskScopeImpl +header extends java/lang/Object implements java/util/concurrent/StructuredTaskScope nestMembers java/util/concurrent/StructuredTaskScopeImpl$ConfigImpl,java/util/concurrent/StructuredTaskScopeImpl$SubtaskImpl flags 30 signature Ljava/lang/Object;Ljava/util/concurrent/StructuredTaskScope; +innerclass innerClass java/util/concurrent/StructuredTaskScope$Joiner outerClass java/util/concurrent/StructuredTaskScope innerClassName Joiner flags 609 +innerclass innerClass java/util/concurrent/StructuredTaskScopeImpl$ConfigImpl outerClass java/util/concurrent/StructuredTaskScopeImpl innerClassName ConfigImpl flags 18 +innerclass innerClass java/util/concurrent/StructuredTaskScope$Configuration outerClass java/util/concurrent/StructuredTaskScope innerClassName Configuration flags 609 +innerclass innerClass java/util/concurrent/StructuredTaskScopeImpl$SubtaskImpl outerClass java/util/concurrent/StructuredTaskScopeImpl innerClassName SubtaskImpl flags 18 +innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask outerClass java/util/concurrent/StructuredTaskScope innerClassName Subtask flags 609 +innerclass innerClass java/util/concurrent/StructuredTaskScope$Subtask$State outerClass java/util/concurrent/StructuredTaskScope$Subtask innerClassName State flags 4019 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +-method name join descriptor ()Ljava/lang/Object; +method name join descriptor ()Ljava/lang/Object; thrownTypes java/lang/Throwable,java/lang/InterruptedException flags 1 signature ()TR;^TR_X;^Ljava/lang/InterruptedException; + +class name java/util/concurrent/ThreadPoolExecutor +-method name finalize descriptor ()V + +class name java/util/jar/Attributes +header extends java/lang/Object implements java/util/Map,java/lang/Cloneable nestMembers java/util/jar/Attributes$Name flags 21 signature Ljava/lang/Object;Ljava/util/Map;Ljava/lang/Cloneable; runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer; +innerclass innerClass java/util/jar/Attributes$Name outerClass java/util/jar/Attributes innerClassName Name flags 9 +innerclass innerClass java/util/Map$Entry outerClass java/util/Map innerClassName Entry flags 609 + +class name java/util/jar/Attributes$Name +header extends java/lang/Object nestHost java/util/jar/Attributes flags 21 runtimeAnnotations @Ljdk/internal/vm/annotation/AOTSafeClassInitializer; +innerclass innerClass java/util/jar/Attributes$Name outerClass java/util/jar/Attributes innerClassName Name flags 9 + +class name javax/crypto/CryptoException +header extends java/lang/RuntimeException flags 31 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;) +method name descriptor ()V flags 1 +method name descriptor (Ljava/lang/String;)V flags 1 +method name descriptor (Ljava/lang/String;Ljava/lang/Throwable;)V flags 1 +method name descriptor (Ljava/lang/Throwable;)V flags 1 + +class name javax/crypto/EncryptedPrivateKeyInfo +header extends java/lang/Object implements java/security/BinaryEncodable flags 21 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +-method name encrypt descriptor (Ljava/security/DEREncodable;[CLjava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/Provider;)Ljavax/crypto/EncryptedPrivateKeyInfo; +-method name encrypt descriptor (Ljava/security/DEREncodable;[C)Ljavax/crypto/EncryptedPrivateKeyInfo; +-method name encrypt descriptor (Ljava/security/DEREncodable;Ljava/security/Key;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/Provider;Ljava/security/SecureRandom;)Ljavax/crypto/EncryptedPrivateKeyInfo; +-method name getKey descriptor (Ljava/security/Key;Ljava/security/Provider;)Ljava/security/PrivateKey; +-method name getKeyPair descriptor (Ljava/security/Key;Ljava/security/Provider;)Ljava/security/KeyPair; +method name encrypt descriptor (Ljava/security/BinaryEncodable;[CLjava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/Provider;)Ljavax/crypto/EncryptedPrivateKeyInfo; flags 9 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;) +method name encrypt descriptor (Ljava/security/BinaryEncodable;[C)Ljavax/crypto/EncryptedPrivateKeyInfo; flags 9 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;) +method name encrypt descriptor (Ljava/security/BinaryEncodable;Ljava/security/Key;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/Provider;Ljava/security/SecureRandom;)Ljavax/crypto/EncryptedPrivateKeyInfo; flags 9 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;) +method name getKey descriptor (Ljava/security/Key;)Ljava/security/PrivateKey; thrownTypes java/security/NoSuchAlgorithmException,java/security/InvalidKeyException flags 1 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;) +method name getKeyPair descriptor (Ljava/security/Key;)Ljava/security/KeyPair; thrownTypes java/security/NoSuchAlgorithmException,java/security/InvalidKeyException flags 1 classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;PEM_API;) + +class name jdk/internal/classfile/impl/AbstractInstruction$UnboundIncrementInstruction +-method name descriptor (II)V +method name descriptor (Ljava/lang/classfile/Opcode;II)V flags 1 + +class name jdk/internal/foreign/layout/PaddingLayoutImpl +header extends jdk/internal/foreign/layout/AbstractLayout implements java/lang/foreign/PaddingLayout flags 31 signature Ljdk/internal/foreign/layout/AbstractLayout;Ljava/lang/foreign/PaddingLayout; runtimeAnnotations @Ljdk/internal/ValueBased; + +class name jdk/internal/foreign/layout/SequenceLayoutImpl +header extends jdk/internal/foreign/layout/AbstractLayout implements java/lang/foreign/SequenceLayout flags 31 signature Ljdk/internal/foreign/layout/AbstractLayout;Ljava/lang/foreign/SequenceLayout; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/internal/foreign/layout/StructLayoutImpl +header extends jdk/internal/foreign/layout/AbstractGroupLayout implements java/lang/foreign/StructLayout flags 31 signature Ljdk/internal/foreign/layout/AbstractGroupLayout;Ljava/lang/foreign/StructLayout; runtimeAnnotations @Ljdk/internal/ValueBased; + +class name jdk/internal/foreign/layout/UnionLayoutImpl +header extends jdk/internal/foreign/layout/AbstractGroupLayout implements java/lang/foreign/UnionLayout flags 31 signature Ljdk/internal/foreign/layout/AbstractGroupLayout;Ljava/lang/foreign/UnionLayout; runtimeAnnotations @Ljdk/internal/ValueBased; + +class name jdk/internal/foreign/layout/ValueLayouts +header extends java/lang/Object nestMembers jdk/internal/foreign/layout/ValueLayouts$OfAddressImpl,jdk/internal/foreign/layout/ValueLayouts$OfDoubleImpl,jdk/internal/foreign/layout/ValueLayouts$OfLongImpl,jdk/internal/foreign/layout/ValueLayouts$OfFloatImpl,jdk/internal/foreign/layout/ValueLayouts$OfIntImpl,jdk/internal/foreign/layout/ValueLayouts$OfShortImpl,jdk/internal/foreign/layout/ValueLayouts$OfCharImpl,jdk/internal/foreign/layout/ValueLayouts$OfByteImpl,jdk/internal/foreign/layout/ValueLayouts$OfBooleanImpl,jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfBooleanImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfBooleanImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfBoolean outerClass java/lang/foreign/ValueLayout innerClassName OfBoolean flags 609 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfCharImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfCharImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfChar outerClass java/lang/foreign/ValueLayout innerClassName OfChar flags 609 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfByteImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfByteImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfByte outerClass java/lang/foreign/ValueLayout innerClassName OfByte flags 609 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfShortImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfShortImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfShort outerClass java/lang/foreign/ValueLayout innerClassName OfShort flags 609 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfIntImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfIntImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfFloatImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfFloatImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfFloat outerClass java/lang/foreign/ValueLayout innerClassName OfFloat flags 609 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfLongImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfLongImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfLong outerClass java/lang/foreign/ValueLayout innerClassName OfLong flags 609 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfDoubleImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfDoubleImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfDouble outerClass java/lang/foreign/ValueLayout innerClassName OfDouble flags 609 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfAddressImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfAddressImpl flags 19 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName AbstractValueLayout flags 408 + +class name jdk/internal/foreign/layout/ValueLayouts$OfAddressImpl +header extends jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout implements java/lang/foreign/AddressLayout nestHost jdk/internal/foreign/layout/ValueLayouts flags 31 signature Ljdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout;Ljava/lang/foreign/AddressLayout; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName AbstractValueLayout flags 408 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfAddressImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfAddressImpl flags 19 + +class name jdk/internal/foreign/layout/ValueLayouts$OfBooleanImpl +header extends jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout implements java/lang/foreign/ValueLayout$OfBoolean nestHost jdk/internal/foreign/layout/ValueLayouts flags 31 signature Ljdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout;Ljava/lang/foreign/ValueLayout$OfBoolean; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName AbstractValueLayout flags 408 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfBooleanImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfBooleanImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfBoolean outerClass java/lang/foreign/ValueLayout innerClassName OfBoolean flags 609 + +class name jdk/internal/foreign/layout/ValueLayouts$OfByteImpl +header extends jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout implements java/lang/foreign/ValueLayout$OfByte nestHost jdk/internal/foreign/layout/ValueLayouts flags 31 signature Ljdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout;Ljava/lang/foreign/ValueLayout$OfByte; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName AbstractValueLayout flags 408 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfByteImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfByteImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfByte outerClass java/lang/foreign/ValueLayout innerClassName OfByte flags 609 + +class name jdk/internal/foreign/layout/ValueLayouts$OfCharImpl +header extends jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout implements java/lang/foreign/ValueLayout$OfChar nestHost jdk/internal/foreign/layout/ValueLayouts flags 31 signature Ljdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout;Ljava/lang/foreign/ValueLayout$OfChar; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName AbstractValueLayout flags 408 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfCharImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfCharImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfChar outerClass java/lang/foreign/ValueLayout innerClassName OfChar flags 609 + +class name jdk/internal/foreign/layout/ValueLayouts$OfDoubleImpl +header extends jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout implements java/lang/foreign/ValueLayout$OfDouble nestHost jdk/internal/foreign/layout/ValueLayouts flags 31 signature Ljdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout;Ljava/lang/foreign/ValueLayout$OfDouble; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName AbstractValueLayout flags 408 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfDoubleImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfDoubleImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfDouble outerClass java/lang/foreign/ValueLayout innerClassName OfDouble flags 609 + +class name jdk/internal/foreign/layout/ValueLayouts$OfFloatImpl +header extends jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout implements java/lang/foreign/ValueLayout$OfFloat nestHost jdk/internal/foreign/layout/ValueLayouts flags 31 signature Ljdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout;Ljava/lang/foreign/ValueLayout$OfFloat; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName AbstractValueLayout flags 408 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfFloatImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfFloatImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfFloat outerClass java/lang/foreign/ValueLayout innerClassName OfFloat flags 609 + +class name jdk/internal/foreign/layout/ValueLayouts$OfIntImpl +header extends jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout implements java/lang/foreign/ValueLayout$OfInt nestHost jdk/internal/foreign/layout/ValueLayouts flags 31 signature Ljdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout;Ljava/lang/foreign/ValueLayout$OfInt; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName AbstractValueLayout flags 408 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfIntImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfIntImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 + +class name jdk/internal/foreign/layout/ValueLayouts$OfLongImpl +header extends jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout implements java/lang/foreign/ValueLayout$OfLong nestHost jdk/internal/foreign/layout/ValueLayouts flags 31 signature Ljdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout;Ljava/lang/foreign/ValueLayout$OfLong; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName AbstractValueLayout flags 408 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfLongImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfLongImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfLong outerClass java/lang/foreign/ValueLayout innerClassName OfLong flags 609 + +class name jdk/internal/foreign/layout/ValueLayouts$OfShortImpl +header extends jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout implements java/lang/foreign/ValueLayout$OfShort nestHost jdk/internal/foreign/layout/ValueLayouts flags 31 signature Ljdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout;Ljava/lang/foreign/ValueLayout$OfShort; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$AbstractValueLayout outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName AbstractValueLayout flags 408 +innerclass innerClass jdk/internal/foreign/layout/ValueLayouts$OfShortImpl outerClass jdk/internal/foreign/layout/ValueLayouts innerClassName OfShortImpl flags 19 +innerclass innerClass java/lang/foreign/ValueLayout$OfShort outerClass java/lang/foreign/ValueLayout innerClassName OfShort flags 609 + +class name jdk/internal/lang/LazyConstantImpl +-method name isInitialized descriptor ()Z +method name isolateToString descriptor (Ljava/lang/Object;)Ljava/lang/String; flags 9 + +class name jdk/internal/vm/vector/VectorSupport +-field name T_FLOAT descriptor I +-field name T_DOUBLE descriptor I +-field name T_BYTE descriptor I +-field name T_SHORT descriptor I +-field name T_INT descriptor I +-field name T_LONG descriptor I +-method name convert descriptor (ILjava/lang/Class;Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$VectorConvertOp;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; +-method name reductionCoerced descriptor (ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$ReductionOperation;)J +-method name insert descriptor (Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;IJLjdk/internal/vm/vector/VectorSupport$VecInsertOp;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name unaryOp descriptor (ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$UnaryOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name binaryOp descriptor (ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$BinaryOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; +-method name ternaryOp descriptor (ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$TernaryOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name test descriptor (ILjava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/util/function/BiFunction;)Z +-method name compare descriptor (ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorCompareOp;)Ljdk/internal/vm/vector/VectorSupport$VectorMask; +-method name rearrangeOp descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorShuffle;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorRearrangeOp;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name blend descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorBlendOp;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name broadcastInt descriptor (ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;ILjdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorBroadcastIntOp;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name maskReductionCoerced descriptor (ILjava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorMaskOp;)J +-method name fromBitsCoerced descriptor (Ljava/lang/Class;Ljava/lang/Class;IJILjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; +-method name compressExpandOp descriptor (ILjava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$CompressExpandOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; +-method name indexVector descriptor (Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;ILjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$IndexOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name indexPartiallyInUpperRange descriptor (Ljava/lang/Class;Ljava/lang/Class;IJJLjdk/internal/vm/vector/VectorSupport$IndexPartiallyInUpperRangeOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorMask; +-method name extract descriptor (Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$VectorPayload;ILjdk/internal/vm/vector/VectorSupport$VecExtractOp;)J +-method name load descriptor (Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Object;JZLjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; +-method name loadMasked descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Object;JZLjdk/internal/vm/vector/VectorSupport$VectorMask;ILjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadVectorMaskedOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name store descriptor (Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Object;JZLjdk/internal/vm/vector/VectorSupport$VectorPayload;Ljava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$StoreVectorOperation;)V +-method name storeMasked descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Object;JZLjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$StoreVectorMaskedOperation;)V +-method name selectFromTwoVectorOp descriptor (Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$SelectFromTwoVector;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name selectFromOp descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorSelectFromOp;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name libraryUnaryOp descriptor (JLjava/lang/Class;Ljava/lang/Class;ILjava/lang/String;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$UnaryOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name libraryBinaryOp descriptor (JLjava/lang/Class;Ljava/lang/Class;ILjava/lang/String;Ljdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$BinaryOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; +-method name loadWithMap descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Class;ILjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/lang/Object;I[IILjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadVectorOperationWithMap;)Ljdk/internal/vm/vector/VectorSupport$Vector; +-method name storeWithMap descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/Class;ILjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/lang/Object;I[IILjdk/internal/vm/vector/VectorSupport$StoreVectorOperationWithMap;)V +field name LT_FLOAT descriptor I constantValue 0 flags 19 +field name LT_DOUBLE descriptor I constantValue 1 flags 19 +field name LT_BYTE descriptor I constantValue 2 flags 19 +field name LT_SHORT descriptor I constantValue 3 flags 19 +field name LT_INT descriptor I constantValue 4 flags 19 +field name LT_LONG descriptor I constantValue 5 flags 19 +method name fromBitsCoerced descriptor (Ljava/lang/Class;IIJILjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; flags 9 signature ;E:Ljava/lang/Object;>(Ljava/lang/Class<+TVM;>;IIJITS;Ljdk/internal/vm/vector/VectorSupport$FromBitsCoercedOperation;)TVM; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name indexPartiallyInUpperRange descriptor (Ljava/lang/Class;IIJJLjdk/internal/vm/vector/VectorSupport$IndexPartiallyInUpperRangeOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorMask; flags 9 signature ;>(Ljava/lang/Class<+TM;>;IIJJLjdk/internal/vm/vector/VectorSupport$IndexPartiallyInUpperRangeOperation;)TM; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name indexVector descriptor (Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;ILjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$IndexOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;E:Ljava/lang/Object;S:Ljdk/internal/vm/vector/VectorSupport$VectorSpecies;>(Ljava/lang/Class<+TV;>;IITV;ITS;Ljdk/internal/vm/vector/VectorSupport$IndexOperation;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name reductionCoerced descriptor (ILjava/lang/Class;Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$ReductionOperation;)J flags 9 signature ;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(ILjava/lang/Class<+TV;>;Ljava/lang/Class<+TM;>;IITV;TM;Ljdk/internal/vm/vector/VectorSupport$ReductionOperation;)J runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name extract descriptor (Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$VectorPayload;ILjdk/internal/vm/vector/VectorSupport$VecExtractOp;)J flags 9 signature (Ljava/lang/Class<+TVM;>;IITVM;ILjdk/internal/vm/vector/VectorSupport$VecExtractOp;)J runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name insert descriptor (Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;IJLjdk/internal/vm/vector/VectorSupport$VecInsertOp;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;E:Ljava/lang/Object;>(Ljava/lang/Class<+TV;>;IITV;IJLjdk/internal/vm/vector/VectorSupport$VecInsertOp;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name unaryOp descriptor (ILjava/lang/Class;Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$UnaryOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(ILjava/lang/Class<+TV;>;Ljava/lang/Class<+TM;>;IITV;TM;Ljdk/internal/vm/vector/VectorSupport$UnaryOperation;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name libraryUnaryOp descriptor (JLjava/lang/Class;IILjava/lang/String;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$UnaryOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;E:Ljava/lang/Object;>(JLjava/lang/Class<+TV;>;IILjava/lang/String;TV;Ljdk/internal/vm/vector/VectorSupport$UnaryOperation;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name binaryOp descriptor (ILjava/lang/Class;Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$BinaryOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; flags 9 signature ;E:Ljava/lang/Object;>(ILjava/lang/Class<+TVM;>;Ljava/lang/Class<+TM;>;IITVM;TVM;TM;Ljdk/internal/vm/vector/VectorSupport$BinaryOperation;)TVM; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name libraryBinaryOp descriptor (JLjava/lang/Class;IILjava/lang/String;Ljdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$BinaryOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; flags 9 signature (JLjava/lang/Class<+TV;>;IILjava/lang/String;TV;TV;Ljdk/internal/vm/vector/VectorSupport$BinaryOperation;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name selectFromTwoVectorOp descriptor (Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$SelectFromTwoVector;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;E:Ljava/lang/Object;>(Ljava/lang/Class<+TV;>;IITV;TV;TV;Ljdk/internal/vm/vector/VectorSupport$SelectFromTwoVector;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name ternaryOp descriptor (ILjava/lang/Class;Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$TernaryOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(ILjava/lang/Class<+TV;>;Ljava/lang/Class<+TM;>;IITV;TV;TV;TM;Ljdk/internal/vm/vector/VectorSupport$TernaryOperation;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name load descriptor (Ljava/lang/Class;IILjava/lang/Object;JZLjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; flags 9 signature ;>(Ljava/lang/Class<+TVM;>;IILjava/lang/Object;JZTC;JTS;Ljdk/internal/vm/vector/VectorSupport$LoadOperation;)TVM; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name loadMasked descriptor (Ljava/lang/Class;Ljava/lang/Class;IILjava/lang/Object;JZLjdk/internal/vm/vector/VectorSupport$VectorMask;ILjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadVectorMaskedOperation;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;E:Ljava/lang/Object;S:Ljdk/internal/vm/vector/VectorSupport$VectorSpecies;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;>(Ljava/lang/Class<+TV;>;Ljava/lang/Class;IILjava/lang/Object;JZTM;ITC;JTS;Ljdk/internal/vm/vector/VectorSupport$LoadVectorMaskedOperation;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name loadWithMap descriptor (Ljava/lang/Class;Ljava/lang/Class;IILjava/lang/Class;ILjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/lang/Object;I[IILjdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$LoadVectorOperationWithMap;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;W:Ljdk/internal/vm/vector/VectorSupport$Vector;S:Ljdk/internal/vm/vector/VectorSupport$VectorSpecies;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(Ljava/lang/Class<+TV;>;Ljava/lang/Class;IILjava/lang/Class<+Ljdk/internal/vm/vector/VectorSupport$Vector;>;ILjava/lang/Object;JTW;TW;TW;TW;TM;TC;I[IITS;Ljdk/internal/vm/vector/VectorSupport$LoadVectorOperationWithMap;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name store descriptor (Ljava/lang/Class;IILjava/lang/Object;JZLjdk/internal/vm/vector/VectorSupport$VectorPayload;Ljava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$StoreVectorOperation;)V flags 9 signature (Ljava/lang/Class<*>;IILjava/lang/Object;JZTV;TC;JLjdk/internal/vm/vector/VectorSupport$StoreVectorOperation;)V runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name storeMasked descriptor (Ljava/lang/Class;Ljava/lang/Class;IILjava/lang/Object;JZLjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$StoreVectorMaskedOperation;)V flags 9 signature ;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(Ljava/lang/Class<+TV;>;Ljava/lang/Class;IILjava/lang/Object;JZTV;TM;TC;JLjdk/internal/vm/vector/VectorSupport$StoreVectorMaskedOperation;)V runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name storeWithMap descriptor (Ljava/lang/Class;Ljava/lang/Class;IILjava/lang/Class;ILjava/lang/Object;JLjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/lang/Object;I[IILjdk/internal/vm/vector/VectorSupport$StoreVectorOperationWithMap;)V flags 9 signature ;W:Ljdk/internal/vm/vector/VectorSupport$Vector;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(Ljava/lang/Class<+TV;>;Ljava/lang/Class;IILjava/lang/Class<+Ljdk/internal/vm/vector/VectorSupport$Vector;>;ILjava/lang/Object;JTW;TV;TM;TC;I[IILjdk/internal/vm/vector/VectorSupport$StoreVectorOperationWithMap;)V runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name test descriptor (ILjava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljava/util/function/BiFunction;)Z flags 9 signature ;E:Ljava/lang/Object;>(ILjava/lang/Class<*>;IITM;TM;Ljava/util/function/BiFunction;)Z runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name compare descriptor (ILjava/lang/Class;Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorCompareOp;)Ljdk/internal/vm/vector/VectorSupport$VectorMask; flags 9 signature ;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(ILjava/lang/Class<+TV;>;Ljava/lang/Class;IITV;TV;TM;Ljdk/internal/vm/vector/VectorSupport$VectorCompareOp;)TM; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name rearrangeOp descriptor (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorShuffle;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorRearrangeOp;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;SH:Ljdk/internal/vm/vector/VectorSupport$VectorShuffle;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(Ljava/lang/Class<+TV;>;Ljava/lang/Class;Ljava/lang/Class;IITV;TSH;TM;Ljdk/internal/vm/vector/VectorSupport$VectorRearrangeOp;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name selectFromOp descriptor (Ljava/lang/Class;Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorSelectFromOp;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(Ljava/lang/Class<+TV;>;Ljava/lang/Class;IITV;TV;TM;Ljdk/internal/vm/vector/VectorSupport$VectorSelectFromOp;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name blend descriptor (Ljava/lang/Class;Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorBlendOp;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(Ljava/lang/Class<+TV;>;Ljava/lang/Class;IITV;TV;TM;Ljdk/internal/vm/vector/VectorSupport$VectorBlendOp;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name broadcastInt descriptor (ILjava/lang/Class;Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;ILjdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorBroadcastIntOp;)Ljdk/internal/vm/vector/VectorSupport$Vector; flags 9 signature ;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(ILjava/lang/Class<+TV;>;Ljava/lang/Class<+TM;>;IITV;ITM;Ljdk/internal/vm/vector/VectorSupport$VectorBroadcastIntOp;)TV; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name convert descriptor (ILjava/lang/Class;IILjava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$VectorPayload;Ljdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/internal/vm/vector/VectorSupport$VectorConvertOp;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; flags 9 signature ;>(ILjava/lang/Class<*>;IILjava/lang/Class<*>;IITVIN;TS;Ljdk/internal/vm/vector/VectorSupport$VectorConvertOp;)TVOUT; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name compressExpandOp descriptor (ILjava/lang/Class;Ljava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$Vector;Ljdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$CompressExpandOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; flags 9 signature ;M:Ljdk/internal/vm/vector/VectorSupport$VectorMask;E:Ljava/lang/Object;>(ILjava/lang/Class<+TV;>;Ljava/lang/Class<+TM;>;IITV;TM;Ljdk/internal/vm/vector/VectorSupport$CompressExpandOperation;)Ljdk/internal/vm/vector/VectorSupport$VectorPayload; runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; +method name maskReductionCoerced descriptor (ILjava/lang/Class;IILjdk/internal/vm/vector/VectorSupport$VectorMask;Ljdk/internal/vm/vector/VectorSupport$VectorMaskOp;)J flags 9 signature ;E:Ljava/lang/Object;>(ILjava/lang/Class<+TM;>;IITM;Ljdk/internal/vm/vector/VectorSupport$VectorMaskOp;)J runtimeAnnotations @Ljdk/internal/vm/annotation/IntrinsicCandidate; + diff --git a/src/jdk.compiler/share/data/symbols/java.compiler-R.sym.txt b/src/jdk.compiler/share/data/symbols/java.compiler-R.sym.txt new file mode 100644 index 00000000000..e99a9f36e67 --- /dev/null +++ b/src/jdk.compiler/share/data/symbols/java.compiler-R.sym.txt @@ -0,0 +1,85 @@ +# +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# ########################################################## +# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ### +# ########################################################## +# +class name javax/lang/model/SourceVersion +field name RELEASE_27 descriptor Ljavax/lang/model/SourceVersion; flags 4019 + +class name javax/lang/model/util/AbstractAnnotationValueVisitor14 +header extends javax/lang/model/util/AbstractAnnotationValueVisitor9 flags 421 signature Ljavax/lang/model/util/AbstractAnnotationValueVisitor9; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/AbstractAnnotationValueVisitorPreview +header extends javax/lang/model/util/AbstractAnnotationValueVisitor14 flags 421 signature Ljavax/lang/model/util/AbstractAnnotationValueVisitor14; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/AbstractElementVisitor14 +header extends javax/lang/model/util/AbstractElementVisitor9 flags 421 signature Ljavax/lang/model/util/AbstractElementVisitor9; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/AbstractElementVisitorPreview +header extends javax/lang/model/util/AbstractElementVisitor14 flags 421 signature Ljavax/lang/model/util/AbstractElementVisitor14; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/AbstractTypeVisitor14 +header extends javax/lang/model/util/AbstractTypeVisitor9 flags 421 signature Ljavax/lang/model/util/AbstractTypeVisitor9; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/AbstractTypeVisitorPreview +header extends javax/lang/model/util/AbstractTypeVisitor14 flags 421 signature Ljavax/lang/model/util/AbstractTypeVisitor14; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/ElementKindVisitor14 +header extends javax/lang/model/util/ElementKindVisitor9 flags 21 signature Ljavax/lang/model/util/ElementKindVisitor9; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/ElementKindVisitorPreview +header extends javax/lang/model/util/ElementKindVisitor14 flags 21 signature Ljavax/lang/model/util/ElementKindVisitor14; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/ElementScanner14 +header extends javax/lang/model/util/ElementScanner9 flags 21 signature Ljavax/lang/model/util/ElementScanner9; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/ElementScannerPreview +header extends javax/lang/model/util/ElementScanner14 flags 21 signature Ljavax/lang/model/util/ElementScanner14; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/SimpleAnnotationValueVisitor14 +header extends javax/lang/model/util/SimpleAnnotationValueVisitor9 flags 21 signature Ljavax/lang/model/util/SimpleAnnotationValueVisitor9; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/SimpleAnnotationValueVisitorPreview +header extends javax/lang/model/util/SimpleAnnotationValueVisitor14 flags 21 signature Ljavax/lang/model/util/SimpleAnnotationValueVisitor14; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/SimpleElementVisitor14 +header extends javax/lang/model/util/SimpleElementVisitor9 flags 21 signature Ljavax/lang/model/util/SimpleElementVisitor9; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/SimpleElementVisitorPreview +header extends javax/lang/model/util/SimpleElementVisitor14 flags 21 signature Ljavax/lang/model/util/SimpleElementVisitor14; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/SimpleTypeVisitor14 +header extends javax/lang/model/util/SimpleTypeVisitor9 flags 21 signature Ljavax/lang/model/util/SimpleTypeVisitor9; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/SimpleTypeVisitorPreview +header extends javax/lang/model/util/SimpleTypeVisitor14 flags 21 signature Ljavax/lang/model/util/SimpleTypeVisitor14; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/TypeKindVisitor14 +header extends javax/lang/model/util/TypeKindVisitor9 flags 21 signature Ljavax/lang/model/util/TypeKindVisitor9; runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + +class name javax/lang/model/util/TypeKindVisitorPreview +header extends javax/lang/model/util/TypeKindVisitor14 flags 21 signature Ljavax/lang/model/util/TypeKindVisitor14; classAnnotations @Ljdk/internal/javac/PreviewFeature;(feature=eLjdk/internal/javac/PreviewFeature$Feature;LANGUAGE_MODEL;,reflective=Ztrue) runtimeAnnotations @Ljavax/annotation/processing/SupportedSourceVersion;(value=eLjavax/lang/model/SourceVersion;RELEASE_27;) + diff --git a/src/jdk.compiler/share/data/symbols/java.desktop-R.sym.txt b/src/jdk.compiler/share/data/symbols/java.desktop-R.sym.txt new file mode 100644 index 00000000000..41ce8137405 --- /dev/null +++ b/src/jdk.compiler/share/data/symbols/java.desktop-R.sym.txt @@ -0,0 +1,53 @@ +# +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# ########################################################## +# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ### +# ########################################################## +# +class name java/awt/KeyboardFocusManager +-method name getCurrentKeyboardFocusManager descriptor ()Ljava/awt/KeyboardFocusManager; +method name getCurrentKeyboardFocusManager descriptor ()Ljava/awt/KeyboardFocusManager; flags 29 + +class name java/awt/geom/Arc2D +method name getBounds descriptor ()Ljava/awt/Rectangle; flags 1 + +class name java/awt/image/DataBufferUShort +header extends java/awt/image/DataBuffer flags 31 classAnnotations @Ljdk/Profile+Annotation;(value=I4) + +class name java/awt/image/PixelInterleavedSampleModel +header extends java/awt/image/ComponentSampleModel flags 21 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name javax/swing/JEditorPane$AccessibleJEditorPaneHTML +header extends javax/swing/JEditorPane$AccessibleJEditorPane nestHost javax/swing/JEditorPane flags 21 +innerclass innerClass javax/swing/JEditorPane$AccessibleJEditorPaneHTML outerClass javax/swing/JEditorPane innerClassName AccessibleJEditorPaneHTML flags 4 +innerclass innerClass javax/swing/JEditorPane$JEditorPaneAccessibleHypertextSupport outerClass javax/swing/JEditorPane innerClassName JEditorPaneAccessibleHypertextSupport flags 4 +innerclass innerClass javax/swing/JEditorPane$AccessibleJEditorPane outerClass javax/swing/JEditorPane innerClassName AccessibleJEditorPane flags 4 + +class name javax/swing/JEditorPane$JEditorPaneAccessibleHypertextSupport +method name changedUpdate descriptor (Ljavax/swing/event/DocumentEvent;)V flags 1 +method name insertUpdate descriptor (Ljavax/swing/event/DocumentEvent;)V flags 1 +method name removeUpdate descriptor (Ljavax/swing/event/DocumentEvent;)V flags 1 + diff --git a/src/jdk.compiler/share/data/symbols/jdk.attach-R.sym.txt b/src/jdk.compiler/share/data/symbols/jdk.attach-R.sym.txt new file mode 100644 index 00000000000..3a6b6eb39c9 --- /dev/null +++ b/src/jdk.compiler/share/data/symbols/jdk.attach-R.sym.txt @@ -0,0 +1,31 @@ +# +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# ########################################################## +# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ### +# ########################################################## +# +class name com/sun/tools/attach/AttachOperationFailedException +method name descriptor (Ljava/lang/String;Ljava/lang/Throwable;)V flags 1 + diff --git a/src/jdk.compiler/share/data/symbols/jdk.compiler-R.sym.txt b/src/jdk.compiler/share/data/symbols/jdk.compiler-R.sym.txt new file mode 100644 index 00000000000..d9e7fadd93f --- /dev/null +++ b/src/jdk.compiler/share/data/symbols/jdk.compiler-R.sym.txt @@ -0,0 +1,59 @@ +# +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# ########################################################## +# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ### +# ########################################################## +# +class name com/sun/source/tree/Tree$Kind +field name VAR_TYPE descriptor Lcom/sun/source/tree/Tree$Kind; flags 4019 + +class name com/sun/source/tree/TreeVisitor +method name visitVarType descriptor (Lcom/sun/source/tree/VarTypeTree;Ljava/lang/Object;)Ljava/lang/Object; flags 401 signature (Lcom/sun/source/tree/VarTypeTree;TP;)TR; + +class name com/sun/source/tree/VarTypeTree +header extends java/lang/Object implements com/sun/source/tree/Tree flags 601 + +class name com/sun/source/util/DocSourcePositions +-method name getStartPosition descriptor (Lcom/sun/source/tree/CompilationUnitTree;Lcom/sun/source/doctree/DocCommentTree;Lcom/sun/source/doctree/DocTree;)J +-method name getEndPosition descriptor (Lcom/sun/source/tree/CompilationUnitTree;Lcom/sun/source/doctree/DocCommentTree;Lcom/sun/source/doctree/DocTree;)J +method name getStartPosition descriptor (Lcom/sun/source/tree/CompilationUnitTree;Lcom/sun/source/doctree/DocCommentTree;Lcom/sun/source/doctree/DocTree;)J flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="27") +method name getStartPosition descriptor (Lcom/sun/source/doctree/DocCommentTree;Lcom/sun/source/doctree/DocTree;)J flags 401 +method name getEndPosition descriptor (Lcom/sun/source/tree/CompilationUnitTree;Lcom/sun/source/doctree/DocCommentTree;Lcom/sun/source/doctree/DocTree;)J flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="27") +method name getEndPosition descriptor (Lcom/sun/source/doctree/DocCommentTree;Lcom/sun/source/doctree/DocTree;)J flags 401 + +class name com/sun/source/util/SimpleTreeVisitor +method name visitVarType descriptor (Lcom/sun/source/tree/VarTypeTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/tree/VarTypeTree;TP;)TR; + +class name com/sun/source/util/SourcePositions +-method name getStartPosition descriptor (Lcom/sun/source/tree/CompilationUnitTree;Lcom/sun/source/tree/Tree;)J +-method name getEndPosition descriptor (Lcom/sun/source/tree/CompilationUnitTree;Lcom/sun/source/tree/Tree;)J +method name getStartPosition descriptor (Lcom/sun/source/tree/CompilationUnitTree;Lcom/sun/source/tree/Tree;)J flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="27") +method name getStartPosition descriptor (Lcom/sun/source/tree/Tree;)J flags 401 +method name getEndPosition descriptor (Lcom/sun/source/tree/CompilationUnitTree;Lcom/sun/source/tree/Tree;)J flags 1 deprecated true runtimeAnnotations @Ljava/lang/Deprecated;(forRemoval=Ztrue,since="27") +method name getEndPosition descriptor (Lcom/sun/source/tree/Tree;)J flags 401 + +class name com/sun/source/util/TreeScanner +method name visitVarType descriptor (Lcom/sun/source/tree/VarTypeTree;Ljava/lang/Object;)Ljava/lang/Object; flags 1 signature (Lcom/sun/source/tree/VarTypeTree;TP;)TR; + diff --git a/src/jdk.compiler/share/data/symbols/jdk.incubator.foreign-R.sym.txt b/src/jdk.compiler/share/data/symbols/jdk.incubator.foreign-R.sym.txt new file mode 100644 index 00000000000..2e193e68188 --- /dev/null +++ b/src/jdk.compiler/share/data/symbols/jdk.incubator.foreign-R.sym.txt @@ -0,0 +1,67 @@ +# +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# ########################################################## +# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ### +# ########################################################## +# +class name jdk/internal/foreign/AbstractMemorySegmentImpl +method name getString descriptor (JLjava/nio/charset/Charset;J)Ljava/lang/String; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name copy descriptor (Ljava/lang/String;Ljava/nio/charset/Charset;ILjava/lang/foreign/MemorySegment;JI)J flags 9 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/internal/foreign/FunctionDescriptorImpl +header extends java/lang/Object implements java/lang/foreign/FunctionDescriptor flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/internal/foreign/HeapMemorySegmentImpl$OfByte +header extends jdk/internal/foreign/HeapMemorySegmentImpl nestHost jdk/internal/foreign/HeapMemorySegmentImpl flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/HeapMemorySegmentImpl$OfByte outerClass jdk/internal/foreign/HeapMemorySegmentImpl innerClassName OfByte flags 19 + +class name jdk/internal/foreign/HeapMemorySegmentImpl$OfChar +header extends jdk/internal/foreign/HeapMemorySegmentImpl nestHost jdk/internal/foreign/HeapMemorySegmentImpl flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/HeapMemorySegmentImpl$OfChar outerClass jdk/internal/foreign/HeapMemorySegmentImpl innerClassName OfChar flags 19 + +class name jdk/internal/foreign/HeapMemorySegmentImpl$OfDouble +header extends jdk/internal/foreign/HeapMemorySegmentImpl nestHost jdk/internal/foreign/HeapMemorySegmentImpl flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/HeapMemorySegmentImpl$OfDouble outerClass jdk/internal/foreign/HeapMemorySegmentImpl innerClassName OfDouble flags 19 + +class name jdk/internal/foreign/HeapMemorySegmentImpl$OfFloat +header extends jdk/internal/foreign/HeapMemorySegmentImpl nestHost jdk/internal/foreign/HeapMemorySegmentImpl flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/HeapMemorySegmentImpl$OfFloat outerClass jdk/internal/foreign/HeapMemorySegmentImpl innerClassName OfFloat flags 19 + +class name jdk/internal/foreign/HeapMemorySegmentImpl$OfInt +header extends jdk/internal/foreign/HeapMemorySegmentImpl nestHost jdk/internal/foreign/HeapMemorySegmentImpl flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/HeapMemorySegmentImpl$OfInt outerClass jdk/internal/foreign/HeapMemorySegmentImpl innerClassName OfInt flags 19 + +class name jdk/internal/foreign/HeapMemorySegmentImpl$OfLong +header extends jdk/internal/foreign/HeapMemorySegmentImpl nestHost jdk/internal/foreign/HeapMemorySegmentImpl flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/HeapMemorySegmentImpl$OfLong outerClass jdk/internal/foreign/HeapMemorySegmentImpl innerClassName OfLong flags 19 + +class name jdk/internal/foreign/HeapMemorySegmentImpl$OfShort +header extends jdk/internal/foreign/HeapMemorySegmentImpl nestHost jdk/internal/foreign/HeapMemorySegmentImpl flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/internal/foreign/HeapMemorySegmentImpl$OfShort outerClass jdk/internal/foreign/HeapMemorySegmentImpl innerClassName OfShort flags 19 + +class name jdk/internal/foreign/MappedMemorySegmentImpl +header extends jdk/internal/foreign/NativeMemorySegmentImpl flags 31 runtimeAnnotations @Ljdk/internal/ValueBased; + diff --git a/src/jdk.compiler/share/data/symbols/jdk.incubator.vector-R.sym.txt b/src/jdk.compiler/share/data/symbols/jdk.incubator.vector-R.sym.txt new file mode 100644 index 00000000000..ea54da3d8c9 --- /dev/null +++ b/src/jdk.compiler/share/data/symbols/jdk.incubator.vector-R.sym.txt @@ -0,0 +1,5945 @@ +# +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# ########################################################## +# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ### +# ########################################################## +# +class name jdk/incubator/vector/AbstractMask +header extends jdk/incubator/vector/VectorMask sealed true permittedSubclasses jdk/incubator/vector/ByteVector64$ByteMask64,jdk/incubator/vector/ByteVector128$ByteMask128,jdk/incubator/vector/ByteVector256$ByteMask256,jdk/incubator/vector/ByteVector512$ByteMask512,jdk/incubator/vector/ByteVectorMax$ByteMaskMax,jdk/incubator/vector/DoubleVector64$DoubleMask64,jdk/incubator/vector/DoubleVector128$DoubleMask128,jdk/incubator/vector/DoubleVector256$DoubleMask256,jdk/incubator/vector/DoubleVector512$DoubleMask512,jdk/incubator/vector/DoubleVectorMax$DoubleMaskMax,jdk/incubator/vector/FloatVector64$FloatMask64,jdk/incubator/vector/FloatVector128$FloatMask128,jdk/incubator/vector/FloatVector256$FloatMask256,jdk/incubator/vector/FloatVector512$FloatMask512,jdk/incubator/vector/FloatVectorMax$FloatMaskMax,jdk/incubator/vector/IntVector64$IntMask64,jdk/incubator/vector/IntVector128$IntMask128,jdk/incubator/vector/IntVector256$IntMask256,jdk/incubator/vector/IntVector512$IntMask512,jdk/incubator/vector/IntVectorMax$IntMaskMax,jdk/incubator/vector/LongVector64$LongMask64,jdk/incubator/vector/LongVector128$LongMask128,jdk/incubator/vector/LongVector256$LongMask256,jdk/incubator/vector/LongVector512$LongMask512,jdk/incubator/vector/LongVectorMax$LongMaskMax,jdk/incubator/vector/ShortVector64$ShortMask64,jdk/incubator/vector/ShortVector128$ShortMask128,jdk/incubator/vector/ShortVector256$ShortMask256,jdk/incubator/vector/ShortVector512$ShortMask512,jdk/incubator/vector/ShortVectorMax$ShortMaskMax flags 420 signature Ljdk/incubator/vector/VectorMask; +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ByteVector64$ByteMask64 outerClass jdk/incubator/vector/ByteVector64 innerClassName ByteMask64 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector128$ByteMask128 outerClass jdk/incubator/vector/ByteVector128 innerClassName ByteMask128 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector256$ByteMask256 outerClass jdk/incubator/vector/ByteVector256 innerClassName ByteMask256 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector512$ByteMask512 outerClass jdk/incubator/vector/ByteVector512 innerClassName ByteMask512 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVectorMax$ByteMaskMax outerClass jdk/incubator/vector/ByteVectorMax innerClassName ByteMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector64$DoubleMask64 outerClass jdk/incubator/vector/DoubleVector64 innerClassName DoubleMask64 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector128$DoubleMask128 outerClass jdk/incubator/vector/DoubleVector128 innerClassName DoubleMask128 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector256$DoubleMask256 outerClass jdk/incubator/vector/DoubleVector256 innerClassName DoubleMask256 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector512$DoubleMask512 outerClass jdk/incubator/vector/DoubleVector512 innerClassName DoubleMask512 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVectorMax$DoubleMaskMax outerClass jdk/incubator/vector/DoubleVectorMax innerClassName DoubleMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector64$FloatMask64 outerClass jdk/incubator/vector/FloatVector64 innerClassName FloatMask64 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector128$FloatMask128 outerClass jdk/incubator/vector/FloatVector128 innerClassName FloatMask128 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector256$FloatMask256 outerClass jdk/incubator/vector/FloatVector256 innerClassName FloatMask256 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector512$FloatMask512 outerClass jdk/incubator/vector/FloatVector512 innerClassName FloatMask512 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVectorMax$FloatMaskMax outerClass jdk/incubator/vector/FloatVectorMax innerClassName FloatMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/IntVector64$IntMask64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntMask64 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector128$IntMask128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntMask128 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector256$IntMask256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntMask256 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector512$IntMask512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntMask512 flags 18 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntMaskMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/LongVector64$LongMask64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongMask64 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector128$LongMask128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongMask128 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector256$LongMask256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongMask256 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector512$LongMask512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongMask512 flags 18 +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongMaskMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector64$ShortMask64 outerClass jdk/incubator/vector/ShortVector64 innerClassName ShortMask64 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector128$ShortMask128 outerClass jdk/incubator/vector/ShortVector128 innerClassName ShortMask128 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector256$ShortMask256 outerClass jdk/incubator/vector/ShortVector256 innerClassName ShortMask256 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector512$ShortMask512 outerClass jdk/incubator/vector/ShortVector512 innerClassName ShortMask512 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVectorMax$ShortMaskMax outerClass jdk/incubator/vector/ShortVectorMax innerClassName ShortMaskMax flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vectorSpecies descriptor ()Ljdk/incubator/vector/VectorSpecies; flags 11 signature ()Ljdk/incubator/vector/VectorSpecies; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([ZI)V flags 1 +method name toArray descriptor ()[Z flags 1 +method name check descriptor (Ljava/lang/Class;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljava/lang/Class;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name check descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name andNot descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 11 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name eq descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 11 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name indexInRange descriptor (II)Ljdk/incubator/vector/VectorMask; flags 1 signature (II)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name indexInRange descriptor (JJ)Ljdk/incubator/vector/VectorMask; flags 1 signature (JJ)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/AbstractShuffle +header extends jdk/incubator/vector/VectorShuffle sealed true permittedSubclasses jdk/incubator/vector/ByteVector64$ByteShuffle64,jdk/incubator/vector/ByteVector128$ByteShuffle128,jdk/incubator/vector/ByteVector256$ByteShuffle256,jdk/incubator/vector/ByteVector512$ByteShuffle512,jdk/incubator/vector/ByteVectorMax$ByteShuffleMax,jdk/incubator/vector/DoubleVector64$DoubleShuffle64,jdk/incubator/vector/DoubleVector128$DoubleShuffle128,jdk/incubator/vector/DoubleVector256$DoubleShuffle256,jdk/incubator/vector/DoubleVector512$DoubleShuffle512,jdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax,jdk/incubator/vector/FloatVector64$FloatShuffle64,jdk/incubator/vector/FloatVector128$FloatShuffle128,jdk/incubator/vector/FloatVector256$FloatShuffle256,jdk/incubator/vector/FloatVector512$FloatShuffle512,jdk/incubator/vector/FloatVectorMax$FloatShuffleMax,jdk/incubator/vector/IntVector64$IntShuffle64,jdk/incubator/vector/IntVector128$IntShuffle128,jdk/incubator/vector/IntVector256$IntShuffle256,jdk/incubator/vector/IntVector512$IntShuffle512,jdk/incubator/vector/IntVectorMax$IntShuffleMax,jdk/incubator/vector/LongVector64$LongShuffle64,jdk/incubator/vector/LongVector128$LongShuffle128,jdk/incubator/vector/LongVector256$LongShuffle256,jdk/incubator/vector/LongVector512$LongShuffle512,jdk/incubator/vector/LongVectorMax$LongShuffleMax,jdk/incubator/vector/ShortVector64$ShortShuffle64,jdk/incubator/vector/ShortVector128$ShortShuffle128,jdk/incubator/vector/ShortVector256$ShortShuffle256,jdk/incubator/vector/ShortVector512$ShortShuffle512,jdk/incubator/vector/ShortVectorMax$ShortShuffleMax flags 420 signature Ljdk/incubator/vector/VectorShuffle; +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ByteVector64$ByteShuffle64 outerClass jdk/incubator/vector/ByteVector64 innerClassName ByteShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector128$ByteShuffle128 outerClass jdk/incubator/vector/ByteVector128 innerClassName ByteShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector256$ByteShuffle256 outerClass jdk/incubator/vector/ByteVector256 innerClassName ByteShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector512$ByteShuffle512 outerClass jdk/incubator/vector/ByteVector512 innerClassName ByteShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVectorMax$ByteShuffleMax outerClass jdk/incubator/vector/ByteVectorMax innerClassName ByteShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector64$DoubleShuffle64 outerClass jdk/incubator/vector/DoubleVector64 innerClassName DoubleShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector128$DoubleShuffle128 outerClass jdk/incubator/vector/DoubleVector128 innerClassName DoubleShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector256$DoubleShuffle256 outerClass jdk/incubator/vector/DoubleVector256 innerClassName DoubleShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector512$DoubleShuffle512 outerClass jdk/incubator/vector/DoubleVector512 innerClassName DoubleShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax outerClass jdk/incubator/vector/DoubleVectorMax innerClassName DoubleShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector64$FloatShuffle64 outerClass jdk/incubator/vector/FloatVector64 innerClassName FloatShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector128$FloatShuffle128 outerClass jdk/incubator/vector/FloatVector128 innerClassName FloatShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector256$FloatShuffle256 outerClass jdk/incubator/vector/FloatVector256 innerClassName FloatShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector512$FloatShuffle512 outerClass jdk/incubator/vector/FloatVector512 innerClassName FloatShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVectorMax$FloatShuffleMax outerClass jdk/incubator/vector/FloatVectorMax innerClassName FloatShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/IntVector64$IntShuffle64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector128$IntShuffle128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector256$IntShuffle256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector512$IntShuffle512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntShuffleMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/LongVector64$LongShuffle64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector128$LongShuffle128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector256$LongShuffle256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector512$LongShuffle512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongShuffleMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector64$ShortShuffle64 outerClass jdk/incubator/vector/ShortVector64 innerClassName ShortShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector128$ShortShuffle128 outerClass jdk/incubator/vector/ShortVector128 innerClassName ShortShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector256$ShortShuffle256 outerClass jdk/incubator/vector/ShortVector256 innerClassName ShortShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector512$ShortShuffle512 outerClass jdk/incubator/vector/ShortVector512 innerClassName ShortShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVectorMax$ShortShuffleMax outerClass jdk/incubator/vector/ShortVectorMax innerClassName ShortShuffleMax flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vectorSpecies descriptor ()Ljdk/incubator/vector/VectorSpecies; flags 11 signature ()Ljdk/incubator/vector/VectorSpecies; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toArray descriptor ()[I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorShuffle; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorShuffle; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name checkIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 11 signature ()Ljdk/incubator/vector/VectorShuffle; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name check descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorShuffle; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorShuffle; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name checkIndex descriptor (I)I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndex descriptor (I)I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/AbstractSpecies +header extends jdk/internal/vm/vector/VectorSupport$VectorSpecies implements jdk/incubator/vector/VectorSpecies sealed true permittedSubclasses jdk/incubator/vector/ByteVector$ByteSpecies,jdk/incubator/vector/DoubleVector$DoubleSpecies,jdk/incubator/vector/FloatVector$FloatSpecies,jdk/incubator/vector/IntVector$IntSpecies,jdk/incubator/vector/LongVector$LongSpecies,jdk/incubator/vector/ShortVector$ShortSpecies flags 420 signature Ljdk/internal/vm/vector/VectorSupport$VectorSpecies;Ljdk/incubator/vector/VectorSpecies; runtimeAnnotations @Ljdk/internal/vm/annotation/TrustFinalFields; +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 1 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vectorType descriptor ()Ljava/lang/Class; flags 1 signature ()Ljava/lang/Class<+Ljdk/incubator/vector/AbstractVector;>; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name maskType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class<+Ljdk/incubator/vector/AbstractMask;>; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vectorShape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vectorBitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vectorByteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name loopBound descriptor (I)I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name loopBound descriptor (J)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name indexInRange descriptor (II)Ljdk/incubator/vector/VectorMask; flags 11 signature (II)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name indexInRange descriptor (JJ)Ljdk/incubator/vector/VectorMask; flags 11 signature (JJ)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLanes descriptor (Ljava/lang/Class;)Ljdk/incubator/vector/VectorSpecies; flags 11 signature (Ljava/lang/Class;)Ljdk/incubator/vector/VectorSpecies; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withShape descriptor (Ljdk/incubator/vector/VectorShape;)Ljdk/incubator/vector/VectorSpecies; flags 11 signature (Ljdk/incubator/vector/VectorShape;)Ljdk/incubator/vector/VectorSpecies; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shuffleFromArray descriptor ([II)Ljdk/incubator/vector/VectorShuffle; flags 11 signature ([II)Ljdk/incubator/vector/VectorShuffle; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shuffleFromValues descriptor ([I)Ljdk/incubator/vector/VectorShuffle; flags 91 signature ([I)Ljdk/incubator/vector/VectorShuffle; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shuffleFromOp descriptor (Ljava/util/function/IntUnaryOperator;)Ljdk/incubator/vector/VectorShuffle; flags 11 signature (Ljava/util/function/IntUnaryOperator;)Ljdk/incubator/vector/VectorShuffle; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iotaShuffle descriptor (IIZ)Ljdk/incubator/vector/VectorShuffle; flags 11 signature (IIZ)Ljdk/incubator/vector/VectorShuffle; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name loadMask descriptor ([ZI)Ljdk/incubator/vector/VectorMask; flags 1 signature ([ZI)Ljdk/incubator/vector/VectorMask; +method name zero descriptor ()Ljdk/incubator/vector/AbstractVector; flags 401 signature ()Ljdk/incubator/vector/AbstractVector; +method name check descriptor (Ljava/lang/Class;)Ljdk/incubator/vector/VectorSpecies; flags 11 signature (Ljava/lang/Class;)Ljdk/incubator/vector/VectorSpecies; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name partLimit descriptor (Ljdk/incubator/vector/VectorSpecies;Z)I flags 1 signature (Ljdk/incubator/vector/VectorSpecies<*>;Z)I runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toString descriptor ()Ljava/lang/String; flags 11 +method name equals descriptor (Ljava/lang/Object;)Z flags 11 +method name hashCode descriptor ()I flags 11 +method name zero descriptor ()Ljdk/incubator/vector/Vector; flags 1041 + +class name jdk/incubator/vector/AbstractVector +header extends jdk/incubator/vector/Vector sealed true permittedSubclasses jdk/incubator/vector/ByteVector,jdk/incubator/vector/DoubleVector,jdk/incubator/vector/FloatVector,jdk/incubator/vector/IntVector,jdk/incubator/vector/LongVector,jdk/incubator/vector/ShortVector flags 420 signature Ljdk/incubator/vector/Vector; +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$ConversionImpl outerClass jdk/incubator/vector/VectorOperators innerClassName ConversionImpl flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/incubator/vector/ByteVector +header extends jdk/incubator/vector/AbstractVector nestMembers jdk/incubator/vector/ByteVector$ByteSpecies sealed true permittedSubclasses jdk/incubator/vector/ByteVector64,jdk/incubator/vector/ByteVector128,jdk/incubator/vector/ByteVector256,jdk/incubator/vector/ByteVector512,jdk/incubator/vector/ByteVectorMax flags 421 signature Ljdk/incubator/vector/AbstractVector; +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass java/lang/foreign/ValueLayout$OfByte outerClass java/lang/foreign/ValueLayout innerClassName OfByte flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorShuffle outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorShuffle flags 9 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector64$ByteMask64 outerClass jdk/incubator/vector/ByteVector64 innerClassName ByteMask64 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector64$ByteShuffle64 outerClass jdk/incubator/vector/ByteVector64 innerClassName ByteShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector128$ByteMask128 outerClass jdk/incubator/vector/ByteVector128 innerClassName ByteMask128 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector128$ByteShuffle128 outerClass jdk/incubator/vector/ByteVector128 innerClassName ByteShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector256$ByteMask256 outerClass jdk/incubator/vector/ByteVector256 innerClassName ByteMask256 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector256$ByteShuffle256 outerClass jdk/incubator/vector/ByteVector256 innerClassName ByteShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector512$ByteMask512 outerClass jdk/incubator/vector/ByteVector512 innerClassName ByteMask512 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector512$ByteShuffle512 outerClass jdk/incubator/vector/ByteVector512 innerClassName ByteShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVectorMax$ByteMaskMax outerClass jdk/incubator/vector/ByteVectorMax innerClassName ByteMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/ByteVectorMax$ByteShuffleMax outerClass jdk/incubator/vector/ByteVectorMax innerClassName ByteShuffleMax flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/incubator/vector/ByteVector$ByteSpecies +header extends jdk/incubator/vector/AbstractSpecies nestHost jdk/incubator/vector/ByteVector flags 30 signature Ljdk/incubator/vector/AbstractSpecies; +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/ByteVectorMax$ByteMaskMax outerClass jdk/incubator/vector/ByteVectorMax innerClassName ByteMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector64$ByteMask64 outerClass jdk/incubator/vector/ByteVector64 innerClassName ByteMask64 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector128$ByteMask128 outerClass jdk/incubator/vector/ByteVector128 innerClassName ByteMask128 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector256$ByteMask256 outerClass jdk/incubator/vector/ByteVector256 innerClassName ByteMask256 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector512$ByteMask512 outerClass jdk/incubator/vector/ByteVector512 innerClassName ByteMask512 flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vectorType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class<+Ljdk/incubator/vector/ByteVector;>; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name checkValue descriptor (J)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/ByteVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/ByteVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/ByteVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/ByteVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name maskAll descriptor (Z)Ljdk/incubator/vector/VectorMask; flags 11 signature (Z)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name zero descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ByteVector128 +header extends jdk/incubator/vector/ByteVector nestMembers jdk/incubator/vector/ByteVector128$ByteShuffle128,jdk/incubator/vector/ByteVector128$ByteMask128 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector128$ByteMask128 outerClass jdk/incubator/vector/ByteVector128 innerClassName ByteMask128 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector128$ByteShuffle128 outerClass jdk/incubator/vector/ByteVector128 innerClassName ByteShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (B)Ljdk/incubator/vector/ByteVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ByteVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/ByteVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)B flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)B flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)B runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/ByteVector128$ByteShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128$ByteMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128$ByteMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;B)Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128$ByteMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/ByteVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector128; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/ByteVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)B flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)B flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IB)Ljdk/incubator/vector/ByteVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IB)Ljdk/incubator/vector/ByteVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IB)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;B)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (B)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ByteVector128$ByteMask128 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/ByteVector128 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector128$ByteMask128 outerClass jdk/incubator/vector/ByteVector128 innerClassName ByteMask128 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ByteVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128$ByteMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128$ByteMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector128$ByteMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ByteVector128$ByteShuffle128 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/ByteVector128 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector128$ByteShuffle128 outerClass jdk/incubator/vector/ByteVector128 innerClassName ByteShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ByteVector128$ByteMask128 outerClass jdk/incubator/vector/ByteVector128 innerClassName ByteMask128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ByteVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/ByteVector128$ByteMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector128$ByteShuffle128; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector128$ByteShuffle128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/ByteVector128$ByteShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ByteVector256 +header extends jdk/incubator/vector/ByteVector nestMembers jdk/incubator/vector/ByteVector256$ByteShuffle256,jdk/incubator/vector/ByteVector256$ByteMask256 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector256$ByteMask256 outerClass jdk/incubator/vector/ByteVector256 innerClassName ByteMask256 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector256$ByteShuffle256 outerClass jdk/incubator/vector/ByteVector256 innerClassName ByteShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (B)Ljdk/incubator/vector/ByteVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ByteVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/ByteVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)B flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)B flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)B runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/ByteVector256$ByteShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256$ByteMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256$ByteMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;B)Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256$ByteMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/ByteVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector256; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/ByteVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)B flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)B flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IB)Ljdk/incubator/vector/ByteVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IB)Ljdk/incubator/vector/ByteVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IB)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;B)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (B)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ByteVector256$ByteMask256 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/ByteVector256 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector256$ByteMask256 outerClass jdk/incubator/vector/ByteVector256 innerClassName ByteMask256 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ByteVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256$ByteMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256$ByteMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector256$ByteMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ByteVector256$ByteShuffle256 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/ByteVector256 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector256$ByteShuffle256 outerClass jdk/incubator/vector/ByteVector256 innerClassName ByteShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ByteVector256$ByteMask256 outerClass jdk/incubator/vector/ByteVector256 innerClassName ByteMask256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ByteVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/ByteVector256$ByteMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector256$ByteShuffle256; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector256$ByteShuffle256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/ByteVector256$ByteShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ByteVector512 +header extends jdk/incubator/vector/ByteVector nestMembers jdk/incubator/vector/ByteVector512$ByteShuffle512,jdk/incubator/vector/ByteVector512$ByteMask512 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector512$ByteMask512 outerClass jdk/incubator/vector/ByteVector512 innerClassName ByteMask512 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector512$ByteShuffle512 outerClass jdk/incubator/vector/ByteVector512 innerClassName ByteShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (B)Ljdk/incubator/vector/ByteVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ByteVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/ByteVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)B flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)B flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)B runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/ByteVector512$ByteShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512$ByteMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512$ByteMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;B)Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512$ByteMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/ByteVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector512; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/ByteVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)B flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)B flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IB)Ljdk/incubator/vector/ByteVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IB)Ljdk/incubator/vector/ByteVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IB)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;B)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (B)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ByteVector512$ByteMask512 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/ByteVector512 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector512$ByteMask512 outerClass jdk/incubator/vector/ByteVector512 innerClassName ByteMask512 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ByteVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512$ByteMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512$ByteMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector512$ByteMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ByteVector512$ByteShuffle512 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/ByteVector512 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector512$ByteShuffle512 outerClass jdk/incubator/vector/ByteVector512 innerClassName ByteShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ByteVector512$ByteMask512 outerClass jdk/incubator/vector/ByteVector512 innerClassName ByteMask512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ByteVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/ByteVector512$ByteMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector512$ByteShuffle512; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector512$ByteShuffle512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/ByteVector512$ByteShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ByteVector64 +header extends jdk/incubator/vector/ByteVector nestMembers jdk/incubator/vector/ByteVector64$ByteShuffle64,jdk/incubator/vector/ByteVector64$ByteMask64 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector64$ByteMask64 outerClass jdk/incubator/vector/ByteVector64 innerClassName ByteMask64 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector64$ByteShuffle64 outerClass jdk/incubator/vector/ByteVector64 innerClassName ByteShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (B)Ljdk/incubator/vector/ByteVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ByteVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/ByteVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)B flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)B flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)B runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/ByteVector64$ByteShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64$ByteMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64$ByteMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;B)Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64$ByteMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/ByteVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector64; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/ByteVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)B flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)B flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IB)Ljdk/incubator/vector/ByteVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IB)Ljdk/incubator/vector/ByteVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IB)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;B)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (B)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ByteVector64$ByteMask64 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/ByteVector64 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector64$ByteMask64 outerClass jdk/incubator/vector/ByteVector64 innerClassName ByteMask64 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ByteVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64$ByteMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64$ByteMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector64$ByteMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ByteVector64$ByteShuffle64 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/ByteVector64 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector64$ByteShuffle64 outerClass jdk/incubator/vector/ByteVector64 innerClassName ByteShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ByteVector64$ByteMask64 outerClass jdk/incubator/vector/ByteVector64 innerClassName ByteMask64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ByteVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/ByteVector64$ByteMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector64$ByteShuffle64; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector64$ByteShuffle64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/ByteVector64$ByteShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ByteVectorMax +header extends jdk/incubator/vector/ByteVector nestMembers jdk/incubator/vector/ByteVectorMax$ByteShuffleMax,jdk/incubator/vector/ByteVectorMax$ByteMaskMax flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ByteVectorMax$ByteMaskMax outerClass jdk/incubator/vector/ByteVectorMax innerClassName ByteMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/ByteVectorMax$ByteShuffleMax outerClass jdk/incubator/vector/ByteVectorMax innerClassName ByteShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (B)Ljdk/incubator/vector/ByteVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ByteVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/ByteVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)B flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)B flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)B runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/ByteVectorMax$ByteShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;B)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/ByteVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/ByteVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)B flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)B flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IB)Ljdk/incubator/vector/ByteVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IB)Ljdk/incubator/vector/ByteVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IB)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;B)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (B)Ljdk/incubator/vector/ByteVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ByteVectorMax$ByteMaskMax +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/ByteVectorMax flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVectorMax$ByteMaskMax outerClass jdk/incubator/vector/ByteVectorMax innerClassName ByteMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ByteVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ByteVectorMax$ByteShuffleMax +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/ByteVectorMax flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ByteVectorMax$ByteShuffleMax outerClass jdk/incubator/vector/ByteVectorMax innerClassName ByteShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/ByteVector$ByteSpecies outerClass jdk/incubator/vector/ByteVector innerClassName ByteSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ByteVectorMax$ByteMaskMax outerClass jdk/incubator/vector/ByteVectorMax innerClassName ByteMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ByteVector$ByteSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ByteVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/ByteVectorMax$ByteMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVectorMax$ByteShuffleMax; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ByteVectorMax$ByteShuffleMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/ByteVectorMax$ByteShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/DoubleVector +header extends jdk/incubator/vector/AbstractVector nestMembers jdk/incubator/vector/DoubleVector$DoubleSpecies sealed true permittedSubclasses jdk/incubator/vector/DoubleVector64,jdk/incubator/vector/DoubleVector128,jdk/incubator/vector/DoubleVector256,jdk/incubator/vector/DoubleVector512,jdk/incubator/vector/DoubleVectorMax flags 421 signature Ljdk/incubator/vector/AbstractVector; +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass java/lang/foreign/ValueLayout$OfDouble outerClass java/lang/foreign/ValueLayout innerClassName OfDouble flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorShuffle outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorShuffle flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntMaskMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector64$DoubleMask64 outerClass jdk/incubator/vector/DoubleVector64 innerClassName DoubleMask64 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector64$DoubleShuffle64 outerClass jdk/incubator/vector/DoubleVector64 innerClassName DoubleShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector128$DoubleMask128 outerClass jdk/incubator/vector/DoubleVector128 innerClassName DoubleMask128 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector128$DoubleShuffle128 outerClass jdk/incubator/vector/DoubleVector128 innerClassName DoubleShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector256$DoubleMask256 outerClass jdk/incubator/vector/DoubleVector256 innerClassName DoubleMask256 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector256$DoubleShuffle256 outerClass jdk/incubator/vector/DoubleVector256 innerClassName DoubleShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector512$DoubleMask512 outerClass jdk/incubator/vector/DoubleVector512 innerClassName DoubleMask512 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector512$DoubleShuffle512 outerClass jdk/incubator/vector/DoubleVector512 innerClassName DoubleShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVectorMax$DoubleMaskMax outerClass jdk/incubator/vector/DoubleVectorMax innerClassName DoubleMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax outerClass jdk/incubator/vector/DoubleVectorMax innerClassName DoubleShuffleMax flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/incubator/vector/DoubleVector$DoubleSpecies +header extends jdk/incubator/vector/AbstractSpecies nestHost jdk/incubator/vector/DoubleVector flags 30 signature Ljdk/incubator/vector/AbstractSpecies; +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/DoubleVectorMax$DoubleMaskMax outerClass jdk/incubator/vector/DoubleVectorMax innerClassName DoubleMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector64$DoubleMask64 outerClass jdk/incubator/vector/DoubleVector64 innerClassName DoubleMask64 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector128$DoubleMask128 outerClass jdk/incubator/vector/DoubleVector128 innerClassName DoubleMask128 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector256$DoubleMask256 outerClass jdk/incubator/vector/DoubleVector256 innerClassName DoubleMask256 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector512$DoubleMask512 outerClass jdk/incubator/vector/DoubleVector512 innerClassName DoubleMask512 flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vectorType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class<+Ljdk/incubator/vector/DoubleVector;>; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name checkValue descriptor (J)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/DoubleVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/DoubleVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/DoubleVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/DoubleVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name maskAll descriptor (Z)Ljdk/incubator/vector/VectorMask; flags 11 signature (Z)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name zero descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/DoubleVector128 +header extends jdk/incubator/vector/DoubleVector nestMembers jdk/incubator/vector/DoubleVector128$DoubleShuffle128,jdk/incubator/vector/DoubleVector128$DoubleMask128 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector128$DoubleMask128 outerClass jdk/incubator/vector/DoubleVector128 innerClassName DoubleMask128 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector128$DoubleShuffle128 outerClass jdk/incubator/vector/DoubleVector128 innerClassName DoubleShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (D)Ljdk/incubator/vector/DoubleVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/DoubleVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/DoubleVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)D flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)D flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)D runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/DoubleVector128$DoubleShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;D)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/DoubleVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/DoubleVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)D flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (ID)Ljdk/incubator/vector/DoubleVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (ID)Ljdk/incubator/vector/DoubleVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (ID)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;D)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (D)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/DoubleVector128$DoubleMask128 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/DoubleVector128 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector128$DoubleMask128 outerClass jdk/incubator/vector/DoubleVector128 innerClassName DoubleMask128 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/DoubleVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector128$DoubleMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/DoubleVector128$DoubleShuffle128 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/DoubleVector128 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector128$DoubleShuffle128 outerClass jdk/incubator/vector/DoubleVector128 innerClassName DoubleShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/LongVector128$LongMask128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongMask128 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector128$DoubleMask128 outerClass jdk/incubator/vector/DoubleVector128 innerClassName DoubleMask128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/DoubleVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/DoubleVector128$DoubleMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector128$DoubleShuffle128; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector128$DoubleShuffle128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/DoubleVector128$DoubleShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/DoubleVector256 +header extends jdk/incubator/vector/DoubleVector nestMembers jdk/incubator/vector/DoubleVector256$DoubleShuffle256,jdk/incubator/vector/DoubleVector256$DoubleMask256 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector256$DoubleMask256 outerClass jdk/incubator/vector/DoubleVector256 innerClassName DoubleMask256 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector256$DoubleShuffle256 outerClass jdk/incubator/vector/DoubleVector256 innerClassName DoubleShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (D)Ljdk/incubator/vector/DoubleVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/DoubleVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/DoubleVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)D flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)D flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)D runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/DoubleVector256$DoubleShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;D)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/DoubleVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/DoubleVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)D flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (ID)Ljdk/incubator/vector/DoubleVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (ID)Ljdk/incubator/vector/DoubleVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (ID)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;D)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (D)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/DoubleVector256$DoubleMask256 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/DoubleVector256 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector256$DoubleMask256 outerClass jdk/incubator/vector/DoubleVector256 innerClassName DoubleMask256 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/DoubleVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector256$DoubleMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/DoubleVector256$DoubleShuffle256 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/DoubleVector256 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector256$DoubleShuffle256 outerClass jdk/incubator/vector/DoubleVector256 innerClassName DoubleShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/LongVector256$LongMask256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongMask256 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector256$DoubleMask256 outerClass jdk/incubator/vector/DoubleVector256 innerClassName DoubleMask256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/DoubleVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/DoubleVector256$DoubleMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector256$DoubleShuffle256; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector256$DoubleShuffle256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/DoubleVector256$DoubleShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/DoubleVector512 +header extends jdk/incubator/vector/DoubleVector nestMembers jdk/incubator/vector/DoubleVector512$DoubleShuffle512,jdk/incubator/vector/DoubleVector512$DoubleMask512 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector512$DoubleMask512 outerClass jdk/incubator/vector/DoubleVector512 innerClassName DoubleMask512 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector512$DoubleShuffle512 outerClass jdk/incubator/vector/DoubleVector512 innerClassName DoubleShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (D)Ljdk/incubator/vector/DoubleVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/DoubleVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/DoubleVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)D flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)D flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)D runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/DoubleVector512$DoubleShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;D)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/DoubleVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/DoubleVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)D flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (ID)Ljdk/incubator/vector/DoubleVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (ID)Ljdk/incubator/vector/DoubleVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (ID)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;D)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (D)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/DoubleVector512$DoubleMask512 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/DoubleVector512 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector512$DoubleMask512 outerClass jdk/incubator/vector/DoubleVector512 innerClassName DoubleMask512 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/DoubleVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector512$DoubleMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/DoubleVector512$DoubleShuffle512 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/DoubleVector512 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector512$DoubleShuffle512 outerClass jdk/incubator/vector/DoubleVector512 innerClassName DoubleShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/LongVector512$LongMask512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongMask512 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector512$DoubleMask512 outerClass jdk/incubator/vector/DoubleVector512 innerClassName DoubleMask512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/DoubleVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/DoubleVector512$DoubleMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector512$DoubleShuffle512; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector512$DoubleShuffle512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/DoubleVector512$DoubleShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/DoubleVector64 +header extends jdk/incubator/vector/DoubleVector nestMembers jdk/incubator/vector/DoubleVector64$DoubleShuffle64,jdk/incubator/vector/DoubleVector64$DoubleMask64 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector64$DoubleMask64 outerClass jdk/incubator/vector/DoubleVector64 innerClassName DoubleMask64 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector64$DoubleShuffle64 outerClass jdk/incubator/vector/DoubleVector64 innerClassName DoubleShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (D)Ljdk/incubator/vector/DoubleVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/DoubleVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/DoubleVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)D flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)D flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)D runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/DoubleVector64$DoubleShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;D)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/DoubleVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/DoubleVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)D flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (ID)Ljdk/incubator/vector/DoubleVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (ID)Ljdk/incubator/vector/DoubleVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (ID)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;D)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (D)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/DoubleVector64$DoubleMask64 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/DoubleVector64 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector64$DoubleMask64 outerClass jdk/incubator/vector/DoubleVector64 innerClassName DoubleMask64 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/DoubleVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector64$DoubleMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/DoubleVector64$DoubleShuffle64 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/DoubleVector64 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector64$DoubleShuffle64 outerClass jdk/incubator/vector/DoubleVector64 innerClassName DoubleShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/LongVector64$LongMask64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongMask64 flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector64$DoubleMask64 outerClass jdk/incubator/vector/DoubleVector64 innerClassName DoubleMask64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/DoubleVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/DoubleVector64$DoubleMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector64$DoubleShuffle64; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector64$DoubleShuffle64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/DoubleVector64$DoubleShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/DoubleVectorMax +header extends jdk/incubator/vector/DoubleVector nestMembers jdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax,jdk/incubator/vector/DoubleVectorMax$DoubleMaskMax flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVectorMax$DoubleMaskMax outerClass jdk/incubator/vector/DoubleVectorMax innerClassName DoubleMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax outerClass jdk/incubator/vector/DoubleVectorMax innerClassName DoubleShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (D)Ljdk/incubator/vector/DoubleVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/DoubleVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)D flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)D flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)D runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;D)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/DoubleVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/DoubleVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)D flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (ID)Ljdk/incubator/vector/DoubleVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (ID)Ljdk/incubator/vector/DoubleVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (ID)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;D)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (D)Ljdk/incubator/vector/DoubleVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/DoubleVectorMax$DoubleMaskMax +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/DoubleVectorMax flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVectorMax$DoubleMaskMax outerClass jdk/incubator/vector/DoubleVectorMax innerClassName DoubleMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/DoubleVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/DoubleVectorMax flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax outerClass jdk/incubator/vector/DoubleVectorMax innerClassName DoubleShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVector$DoubleSpecies outerClass jdk/incubator/vector/DoubleVector innerClassName DoubleSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongMaskMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/DoubleVectorMax$DoubleMaskMax outerClass jdk/incubator/vector/DoubleVectorMax innerClassName DoubleMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/DoubleVector$DoubleSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/DoubleVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/DoubleVectorMax$DoubleMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/DoubleVectorMax$DoubleShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/FloatVector +header extends jdk/incubator/vector/AbstractVector nestMembers jdk/incubator/vector/FloatVector$FloatSpecies sealed true permittedSubclasses jdk/incubator/vector/FloatVector64,jdk/incubator/vector/FloatVector128,jdk/incubator/vector/FloatVector256,jdk/incubator/vector/FloatVector512,jdk/incubator/vector/FloatVectorMax flags 421 signature Ljdk/incubator/vector/AbstractVector; +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass java/lang/foreign/ValueLayout$OfFloat outerClass java/lang/foreign/ValueLayout innerClassName OfFloat flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorShuffle outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorShuffle flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/FloatVector64$FloatMask64 outerClass jdk/incubator/vector/FloatVector64 innerClassName FloatMask64 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector64$FloatShuffle64 outerClass jdk/incubator/vector/FloatVector64 innerClassName FloatShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector128$FloatMask128 outerClass jdk/incubator/vector/FloatVector128 innerClassName FloatMask128 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector128$FloatShuffle128 outerClass jdk/incubator/vector/FloatVector128 innerClassName FloatShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector256$FloatMask256 outerClass jdk/incubator/vector/FloatVector256 innerClassName FloatMask256 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector256$FloatShuffle256 outerClass jdk/incubator/vector/FloatVector256 innerClassName FloatShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector512$FloatMask512 outerClass jdk/incubator/vector/FloatVector512 innerClassName FloatMask512 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector512$FloatShuffle512 outerClass jdk/incubator/vector/FloatVector512 innerClassName FloatShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVectorMax$FloatMaskMax outerClass jdk/incubator/vector/FloatVectorMax innerClassName FloatMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/FloatVectorMax$FloatShuffleMax outerClass jdk/incubator/vector/FloatVectorMax innerClassName FloatShuffleMax flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/incubator/vector/FloatVector$FloatSpecies +header extends jdk/incubator/vector/AbstractSpecies nestHost jdk/incubator/vector/FloatVector flags 30 signature Ljdk/incubator/vector/AbstractSpecies; +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/FloatVectorMax$FloatMaskMax outerClass jdk/incubator/vector/FloatVectorMax innerClassName FloatMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector64$FloatMask64 outerClass jdk/incubator/vector/FloatVector64 innerClassName FloatMask64 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector128$FloatMask128 outerClass jdk/incubator/vector/FloatVector128 innerClassName FloatMask128 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector256$FloatMask256 outerClass jdk/incubator/vector/FloatVector256 innerClassName FloatMask256 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector512$FloatMask512 outerClass jdk/incubator/vector/FloatVector512 innerClassName FloatMask512 flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vectorType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class<+Ljdk/incubator/vector/FloatVector;>; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name checkValue descriptor (J)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/FloatVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/FloatVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/FloatVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/FloatVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name maskAll descriptor (Z)Ljdk/incubator/vector/VectorMask; flags 11 signature (Z)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name zero descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/FloatVector128 +header extends jdk/incubator/vector/FloatVector nestMembers jdk/incubator/vector/FloatVector128$FloatShuffle128,jdk/incubator/vector/FloatVector128$FloatMask128 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector128$FloatMask128 outerClass jdk/incubator/vector/FloatVector128 innerClassName FloatMask128 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector128$FloatShuffle128 outerClass jdk/incubator/vector/FloatVector128 innerClassName FloatShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (F)Ljdk/incubator/vector/FloatVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/FloatVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/FloatVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)F flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)F flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)F runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/FloatVector128$FloatShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128$FloatMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128$FloatMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;F)Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128$FloatMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/FloatVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector128; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/FloatVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)F flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IF)Ljdk/incubator/vector/FloatVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IF)Ljdk/incubator/vector/FloatVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IF)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;F)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (F)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/FloatVector128$FloatMask128 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/FloatVector128 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector128$FloatMask128 outerClass jdk/incubator/vector/FloatVector128 innerClassName FloatMask128 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/FloatVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128$FloatMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128$FloatMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector128$FloatMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/FloatVector128$FloatShuffle128 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/FloatVector128 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector128$FloatShuffle128 outerClass jdk/incubator/vector/FloatVector128 innerClassName FloatShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/IntVector128$IntMask128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntMask128 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector128$FloatMask128 outerClass jdk/incubator/vector/FloatVector128 innerClassName FloatMask128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/FloatVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/FloatVector128$FloatMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector128$FloatShuffle128; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector128$FloatShuffle128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/FloatVector128$FloatShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/FloatVector256 +header extends jdk/incubator/vector/FloatVector nestMembers jdk/incubator/vector/FloatVector256$FloatShuffle256,jdk/incubator/vector/FloatVector256$FloatMask256 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector256$FloatMask256 outerClass jdk/incubator/vector/FloatVector256 innerClassName FloatMask256 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector256$FloatShuffle256 outerClass jdk/incubator/vector/FloatVector256 innerClassName FloatShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (F)Ljdk/incubator/vector/FloatVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/FloatVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/FloatVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)F flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)F flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)F runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/FloatVector256$FloatShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256$FloatMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256$FloatMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;F)Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256$FloatMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/FloatVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector256; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/FloatVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)F flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IF)Ljdk/incubator/vector/FloatVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IF)Ljdk/incubator/vector/FloatVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IF)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;F)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (F)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/FloatVector256$FloatMask256 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/FloatVector256 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector256$FloatMask256 outerClass jdk/incubator/vector/FloatVector256 innerClassName FloatMask256 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/FloatVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256$FloatMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256$FloatMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector256$FloatMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/FloatVector256$FloatShuffle256 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/FloatVector256 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector256$FloatShuffle256 outerClass jdk/incubator/vector/FloatVector256 innerClassName FloatShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/IntVector256$IntMask256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntMask256 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector256$FloatMask256 outerClass jdk/incubator/vector/FloatVector256 innerClassName FloatMask256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/FloatVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/FloatVector256$FloatMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector256$FloatShuffle256; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector256$FloatShuffle256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/FloatVector256$FloatShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/FloatVector512 +header extends jdk/incubator/vector/FloatVector nestMembers jdk/incubator/vector/FloatVector512$FloatShuffle512,jdk/incubator/vector/FloatVector512$FloatMask512 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector512$FloatMask512 outerClass jdk/incubator/vector/FloatVector512 innerClassName FloatMask512 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector512$FloatShuffle512 outerClass jdk/incubator/vector/FloatVector512 innerClassName FloatShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (F)Ljdk/incubator/vector/FloatVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/FloatVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/FloatVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)F flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)F flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)F runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/FloatVector512$FloatShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512$FloatMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512$FloatMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;F)Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512$FloatMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/FloatVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector512; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/FloatVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)F flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IF)Ljdk/incubator/vector/FloatVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IF)Ljdk/incubator/vector/FloatVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IF)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;F)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (F)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/FloatVector512$FloatMask512 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/FloatVector512 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector512$FloatMask512 outerClass jdk/incubator/vector/FloatVector512 innerClassName FloatMask512 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/FloatVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512$FloatMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512$FloatMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector512$FloatMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/FloatVector512$FloatShuffle512 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/FloatVector512 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector512$FloatShuffle512 outerClass jdk/incubator/vector/FloatVector512 innerClassName FloatShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/IntVector512$IntMask512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntMask512 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector512$FloatMask512 outerClass jdk/incubator/vector/FloatVector512 innerClassName FloatMask512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/FloatVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/FloatVector512$FloatMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector512$FloatShuffle512; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector512$FloatShuffle512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/FloatVector512$FloatShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/FloatVector64 +header extends jdk/incubator/vector/FloatVector nestMembers jdk/incubator/vector/FloatVector64$FloatShuffle64,jdk/incubator/vector/FloatVector64$FloatMask64 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector64$FloatMask64 outerClass jdk/incubator/vector/FloatVector64 innerClassName FloatMask64 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector64$FloatShuffle64 outerClass jdk/incubator/vector/FloatVector64 innerClassName FloatShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (F)Ljdk/incubator/vector/FloatVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/FloatVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/FloatVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)F flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)F flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)F runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/FloatVector64$FloatShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64$FloatMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64$FloatMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;F)Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64$FloatMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/FloatVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector64; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/FloatVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)F flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IF)Ljdk/incubator/vector/FloatVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IF)Ljdk/incubator/vector/FloatVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IF)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;F)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (F)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/FloatVector64$FloatMask64 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/FloatVector64 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector64$FloatMask64 outerClass jdk/incubator/vector/FloatVector64 innerClassName FloatMask64 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/FloatVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64$FloatMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64$FloatMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector64$FloatMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/FloatVector64$FloatShuffle64 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/FloatVector64 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector64$FloatShuffle64 outerClass jdk/incubator/vector/FloatVector64 innerClassName FloatShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/IntVector64$IntMask64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntMask64 flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector64$FloatMask64 outerClass jdk/incubator/vector/FloatVector64 innerClassName FloatMask64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/FloatVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/FloatVector64$FloatMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector64$FloatShuffle64; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector64$FloatShuffle64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/FloatVector64$FloatShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/FloatVectorMax +header extends jdk/incubator/vector/FloatVector nestMembers jdk/incubator/vector/FloatVectorMax$FloatShuffleMax,jdk/incubator/vector/FloatVectorMax$FloatMaskMax flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/FloatVectorMax$FloatMaskMax outerClass jdk/incubator/vector/FloatVectorMax innerClassName FloatMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/FloatVectorMax$FloatShuffleMax outerClass jdk/incubator/vector/FloatVectorMax innerClassName FloatShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (F)Ljdk/incubator/vector/FloatVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/FloatVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/FloatVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)F flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)F flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)F runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/FloatVectorMax$FloatShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;F)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/FloatVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/FloatVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)F flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IF)Ljdk/incubator/vector/FloatVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IF)Ljdk/incubator/vector/FloatVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IF)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;F)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (F)Ljdk/incubator/vector/FloatVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/FloatVectorMax$FloatMaskMax +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/FloatVectorMax flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVectorMax$FloatMaskMax outerClass jdk/incubator/vector/FloatVectorMax innerClassName FloatMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/FloatVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/FloatVectorMax$FloatShuffleMax +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/FloatVectorMax flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/FloatVectorMax$FloatShuffleMax outerClass jdk/incubator/vector/FloatVectorMax innerClassName FloatShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/FloatVector$FloatSpecies outerClass jdk/incubator/vector/FloatVector innerClassName FloatSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntMaskMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/FloatVectorMax$FloatMaskMax outerClass jdk/incubator/vector/FloatVectorMax innerClassName FloatMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/FloatVector$FloatSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/FloatVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/FloatVectorMax$FloatMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVectorMax$FloatShuffleMax; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/FloatVectorMax$FloatShuffleMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/FloatVectorMax$FloatShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/IntVector +header extends jdk/incubator/vector/AbstractVector nestMembers jdk/incubator/vector/IntVector$IntSpecies sealed true permittedSubclasses jdk/incubator/vector/IntVector64,jdk/incubator/vector/IntVector128,jdk/incubator/vector/IntVector256,jdk/incubator/vector/IntVector512,jdk/incubator/vector/IntVectorMax flags 421 signature Ljdk/incubator/vector/AbstractVector; +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorShuffle outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorShuffle flags 9 +innerclass innerClass jdk/incubator/vector/IntVector64$IntMask64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntMask64 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector64$IntShuffle64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector128$IntMask128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntMask128 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector128$IntShuffle128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector256$IntMask256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntMask256 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector256$IntShuffle256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector512$IntMask512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntMask512 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector512$IntShuffle512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntMaskMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntShuffleMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntShuffleMax flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/incubator/vector/IntVector$IntSpecies +header extends jdk/incubator/vector/AbstractSpecies nestHost jdk/incubator/vector/IntVector flags 30 signature Ljdk/incubator/vector/AbstractSpecies; +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntMaskMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/IntVector64$IntMask64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntMask64 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector128$IntMask128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntMask128 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector256$IntMask256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntMask256 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector512$IntMask512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntMask512 flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vectorType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class<+Ljdk/incubator/vector/IntVector;>; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name checkValue descriptor (J)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/IntVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/IntVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/IntVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/IntVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name maskAll descriptor (Z)Ljdk/incubator/vector/VectorMask; flags 11 signature (Z)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name zero descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/IntVector128 +header extends jdk/incubator/vector/IntVector nestMembers jdk/incubator/vector/IntVector128$IntShuffle128,jdk/incubator/vector/IntVector128$IntMask128 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/IntVector128$IntMask128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntMask128 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector128$IntShuffle128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (I)Ljdk/incubator/vector/IntVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/IntVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/IntVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)I flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)I runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/IntVector128$IntShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/IntVector128$IntMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128$IntMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128$IntMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128$IntMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128$IntMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;I)Ljdk/incubator/vector/IntVector128$IntMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/IntVector128$IntMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128$IntMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128$IntMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/IntVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector128; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/IntVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (II)Ljdk/incubator/vector/IntVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (II)Ljdk/incubator/vector/IntVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (II)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;I)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/IntVector128$IntMask128 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/IntVector128 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector128$IntMask128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntMask128 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/IntVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/IntVector128$IntMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/IntVector128$IntMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128$IntMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128$IntMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128$IntMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128$IntMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128$IntMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector128$IntMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/IntVector128$IntShuffle128 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/IntVector128 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector128$IntShuffle128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/IntVector128$IntMask128 outerClass jdk/incubator/vector/IntVector128 innerClassName IntMask128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/IntVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/IntVector128$IntMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector128$IntShuffle128; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector128$IntShuffle128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/IntVector128$IntShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/IntVector256 +header extends jdk/incubator/vector/IntVector nestMembers jdk/incubator/vector/IntVector256$IntShuffle256,jdk/incubator/vector/IntVector256$IntMask256 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/IntVector256$IntMask256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntMask256 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector256$IntShuffle256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (I)Ljdk/incubator/vector/IntVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/IntVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/IntVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)I flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)I runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/IntVector256$IntShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/IntVector256$IntMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256$IntMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256$IntMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256$IntMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256$IntMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;I)Ljdk/incubator/vector/IntVector256$IntMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/IntVector256$IntMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256$IntMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256$IntMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/IntVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector256; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/IntVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (II)Ljdk/incubator/vector/IntVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (II)Ljdk/incubator/vector/IntVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (II)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;I)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/IntVector256$IntMask256 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/IntVector256 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector256$IntMask256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntMask256 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/IntVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/IntVector256$IntMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/IntVector256$IntMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256$IntMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256$IntMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256$IntMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256$IntMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256$IntMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector256$IntMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/IntVector256$IntShuffle256 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/IntVector256 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector256$IntShuffle256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/IntVector256$IntMask256 outerClass jdk/incubator/vector/IntVector256 innerClassName IntMask256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/IntVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/IntVector256$IntMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector256$IntShuffle256; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector256$IntShuffle256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/IntVector256$IntShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/IntVector512 +header extends jdk/incubator/vector/IntVector nestMembers jdk/incubator/vector/IntVector512$IntShuffle512,jdk/incubator/vector/IntVector512$IntMask512 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/IntVector512$IntMask512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntMask512 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector512$IntShuffle512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (I)Ljdk/incubator/vector/IntVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/IntVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/IntVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)I flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)I runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/IntVector512$IntShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/IntVector512$IntMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512$IntMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512$IntMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512$IntMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512$IntMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;I)Ljdk/incubator/vector/IntVector512$IntMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/IntVector512$IntMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512$IntMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512$IntMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/IntVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector512; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/IntVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (II)Ljdk/incubator/vector/IntVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (II)Ljdk/incubator/vector/IntVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (II)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;I)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/IntVector512$IntMask512 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/IntVector512 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector512$IntMask512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntMask512 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/IntVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/IntVector512$IntMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/IntVector512$IntMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512$IntMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512$IntMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512$IntMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512$IntMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512$IntMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector512$IntMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/IntVector512$IntShuffle512 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/IntVector512 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector512$IntShuffle512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/IntVector512$IntMask512 outerClass jdk/incubator/vector/IntVector512 innerClassName IntMask512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/IntVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/IntVector512$IntMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector512$IntShuffle512; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector512$IntShuffle512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/IntVector512$IntShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/IntVector64 +header extends jdk/incubator/vector/IntVector nestMembers jdk/incubator/vector/IntVector64$IntShuffle64,jdk/incubator/vector/IntVector64$IntMask64 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/IntVector64$IntMask64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntMask64 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector64$IntShuffle64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (I)Ljdk/incubator/vector/IntVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/IntVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/IntVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)I flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)I runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/IntVector64$IntShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/IntVector64$IntMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64$IntMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64$IntMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64$IntMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64$IntMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;I)Ljdk/incubator/vector/IntVector64$IntMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/IntVector64$IntMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64$IntMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64$IntMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/IntVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector64; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/IntVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (II)Ljdk/incubator/vector/IntVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (II)Ljdk/incubator/vector/IntVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (II)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;I)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/IntVector64$IntMask64 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/IntVector64 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector64$IntMask64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntMask64 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/IntVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/IntVector64$IntMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/IntVector64$IntMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64$IntMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64$IntMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64$IntMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64$IntMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64$IntMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector64$IntMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/IntVector64$IntShuffle64 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/IntVector64 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector64$IntShuffle64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/IntVector64$IntMask64 outerClass jdk/incubator/vector/IntVector64 innerClassName IntMask64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/IntVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/IntVector64$IntMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector64$IntShuffle64; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector64$IntShuffle64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/IntVector64$IntShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/IntVectorMax +header extends jdk/incubator/vector/IntVector nestMembers jdk/incubator/vector/IntVectorMax$IntShuffleMax,jdk/incubator/vector/IntVectorMax$IntMaskMax flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntMaskMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntShuffleMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (I)Ljdk/incubator/vector/IntVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/IntVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/IntVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)I flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)I runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/IntVectorMax$IntShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;I)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/IntVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/IntVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (II)Ljdk/incubator/vector/IntVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (II)Ljdk/incubator/vector/IntVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (II)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;I)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (I)Ljdk/incubator/vector/IntVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/IntVectorMax$IntMaskMax +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/IntVectorMax flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntMaskMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/IntVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/IntVectorMax$IntMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/IntVectorMax$IntShuffleMax +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/IntVectorMax flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntShuffleMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntMaskMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/IntVector$IntSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/IntVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/IntVectorMax$IntMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVectorMax$IntShuffleMax; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/IntVectorMax$IntShuffleMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/IntVectorMax$IntShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/LongVector +header extends jdk/incubator/vector/AbstractVector nestMembers jdk/incubator/vector/LongVector$LongSpecies sealed true permittedSubclasses jdk/incubator/vector/LongVector64,jdk/incubator/vector/LongVector128,jdk/incubator/vector/LongVector256,jdk/incubator/vector/LongVector512,jdk/incubator/vector/LongVectorMax flags 421 signature Ljdk/incubator/vector/AbstractVector; +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass java/lang/foreign/ValueLayout$OfLong outerClass java/lang/foreign/ValueLayout innerClassName OfLong flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorShuffle outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorShuffle flags 9 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/IntVectorMax$IntMaskMax outerClass jdk/incubator/vector/IntVectorMax innerClassName IntMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/LongVector64$LongMask64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongMask64 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector64$LongShuffle64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector128$LongMask128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongMask128 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector128$LongShuffle128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector256$LongMask256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongMask256 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector256$LongShuffle256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector512$LongMask512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongMask512 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector512$LongShuffle512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongMaskMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongShuffleMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongShuffleMax flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/incubator/vector/LongVector$LongSpecies +header extends jdk/incubator/vector/AbstractSpecies nestHost jdk/incubator/vector/LongVector flags 30 signature Ljdk/incubator/vector/AbstractSpecies; +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongMaskMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/LongVector64$LongMask64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongMask64 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector128$LongMask128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongMask128 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector256$LongMask256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongMask256 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector512$LongMask512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongMask512 flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vectorType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class<+Ljdk/incubator/vector/LongVector;>; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name checkValue descriptor (J)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/LongVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/LongVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/LongVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/LongVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name maskAll descriptor (Z)Ljdk/incubator/vector/VectorMask; flags 11 signature (Z)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name zero descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/LongVector128 +header extends jdk/incubator/vector/LongVector nestMembers jdk/incubator/vector/LongVector128$LongShuffle128,jdk/incubator/vector/LongVector128$LongMask128 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/LongVector128$LongMask128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongMask128 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector128$LongShuffle128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/LongVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/LongVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/LongVector128$LongShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/LongVector128$LongMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128$LongMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128$LongMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128$LongMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128$LongMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/LongVector128$LongMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128$LongMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128$LongMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/LongVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector128; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/LongVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IJ)Ljdk/incubator/vector/LongVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IJ)Ljdk/incubator/vector/LongVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IJ)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/LongVector128$LongMask128 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/LongVector128 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector128$LongMask128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongMask128 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/LongVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/LongVector128$LongMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/LongVector128$LongMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128$LongMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128$LongMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128$LongMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128$LongMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128$LongMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector128$LongMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/LongVector128$LongShuffle128 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/LongVector128 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector128$LongShuffle128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/LongVector128$LongMask128 outerClass jdk/incubator/vector/LongVector128 innerClassName LongMask128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/LongVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/LongVector128$LongMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector128$LongShuffle128; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector128$LongShuffle128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/LongVector128$LongShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/LongVector256 +header extends jdk/incubator/vector/LongVector nestMembers jdk/incubator/vector/LongVector256$LongShuffle256,jdk/incubator/vector/LongVector256$LongMask256 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/LongVector256$LongMask256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongMask256 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector256$LongShuffle256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/LongVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/LongVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/LongVector256$LongShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/LongVector256$LongMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256$LongMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256$LongMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256$LongMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256$LongMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/LongVector256$LongMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256$LongMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256$LongMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/LongVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector256; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/LongVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IJ)Ljdk/incubator/vector/LongVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IJ)Ljdk/incubator/vector/LongVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IJ)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/LongVector256$LongMask256 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/LongVector256 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector256$LongMask256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongMask256 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/LongVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/LongVector256$LongMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/LongVector256$LongMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256$LongMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256$LongMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256$LongMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256$LongMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256$LongMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector256$LongMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/LongVector256$LongShuffle256 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/LongVector256 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector256$LongShuffle256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/LongVector256$LongMask256 outerClass jdk/incubator/vector/LongVector256 innerClassName LongMask256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/LongVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/LongVector256$LongMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector256$LongShuffle256; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector256$LongShuffle256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/LongVector256$LongShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/LongVector512 +header extends jdk/incubator/vector/LongVector nestMembers jdk/incubator/vector/LongVector512$LongShuffle512,jdk/incubator/vector/LongVector512$LongMask512 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/LongVector512$LongMask512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongMask512 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector512$LongShuffle512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/LongVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/LongVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/LongVector512$LongShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/LongVector512$LongMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512$LongMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512$LongMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512$LongMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512$LongMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/LongVector512$LongMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512$LongMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512$LongMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/LongVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector512; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/LongVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IJ)Ljdk/incubator/vector/LongVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IJ)Ljdk/incubator/vector/LongVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IJ)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/LongVector512$LongMask512 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/LongVector512 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector512$LongMask512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongMask512 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/LongVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/LongVector512$LongMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/LongVector512$LongMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512$LongMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512$LongMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512$LongMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512$LongMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512$LongMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector512$LongMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/LongVector512$LongShuffle512 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/LongVector512 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector512$LongShuffle512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/LongVector512$LongMask512 outerClass jdk/incubator/vector/LongVector512 innerClassName LongMask512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/LongVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/LongVector512$LongMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector512$LongShuffle512; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector512$LongShuffle512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/LongVector512$LongShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/LongVector64 +header extends jdk/incubator/vector/LongVector nestMembers jdk/incubator/vector/LongVector64$LongShuffle64,jdk/incubator/vector/LongVector64$LongMask64 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/LongVector64$LongMask64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongMask64 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector64$LongShuffle64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/LongVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/LongVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/LongVector64$LongShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/LongVector64$LongMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64$LongMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64$LongMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64$LongMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64$LongMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/LongVector64$LongMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64$LongMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64$LongMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/LongVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector64; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/LongVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IJ)Ljdk/incubator/vector/LongVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IJ)Ljdk/incubator/vector/LongVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IJ)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/LongVector64$LongMask64 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/LongVector64 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector64$LongMask64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongMask64 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/LongVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/LongVector64$LongMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/LongVector64$LongMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64$LongMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64$LongMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64$LongMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64$LongMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64$LongMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector64$LongMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/LongVector64$LongShuffle64 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/LongVector64 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector64$LongShuffle64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/LongVector64$LongMask64 outerClass jdk/incubator/vector/LongVector64 innerClassName LongMask64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/LongVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/LongVector64$LongMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector64$LongShuffle64; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector64$LongShuffle64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/LongVector64$LongShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/LongVectorMax +header extends jdk/incubator/vector/LongVector nestMembers jdk/incubator/vector/LongVectorMax$LongShuffleMax,jdk/incubator/vector/LongVectorMax$LongMaskMax flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongMaskMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongShuffleMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/LongVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/LongVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/LongVectorMax$LongShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/LongVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/LongVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IJ)Ljdk/incubator/vector/LongVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IJ)Ljdk/incubator/vector/LongVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IJ)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/LongVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/LongVectorMax$LongMaskMax +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/LongVectorMax flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongMaskMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/LongVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/LongVectorMax$LongMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/LongVectorMax$LongShuffleMax +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/LongVectorMax flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongShuffleMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/LongVector$LongSpecies outerClass jdk/incubator/vector/LongVector innerClassName LongSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/LongVectorMax$LongMaskMax outerClass jdk/incubator/vector/LongVectorMax innerClassName LongMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/LongVector$LongSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/LongVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/LongVectorMax$LongMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVectorMax$LongShuffleMax; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/LongVectorMax$LongShuffleMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/LongVectorMax$LongShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ShortVector +header extends jdk/incubator/vector/AbstractVector nestMembers jdk/incubator/vector/ShortVector$ShortSpecies sealed true permittedSubclasses jdk/incubator/vector/ShortVector64,jdk/incubator/vector/ShortVector128,jdk/incubator/vector/ShortVector256,jdk/incubator/vector/ShortVector512,jdk/incubator/vector/ShortVectorMax flags 421 signature Ljdk/incubator/vector/AbstractVector; +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass java/lang/foreign/ValueLayout$OfShort outerClass java/lang/foreign/ValueLayout innerClassName OfShort flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorShuffle outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorShuffle flags 9 +innerclass innerClass jdk/incubator/vector/IntVector$IntSpecies outerClass jdk/incubator/vector/IntVector innerClassName IntSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector64$ShortMask64 outerClass jdk/incubator/vector/ShortVector64 innerClassName ShortMask64 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector64$ShortShuffle64 outerClass jdk/incubator/vector/ShortVector64 innerClassName ShortShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector128$ShortMask128 outerClass jdk/incubator/vector/ShortVector128 innerClassName ShortMask128 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector128$ShortShuffle128 outerClass jdk/incubator/vector/ShortVector128 innerClassName ShortShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector256$ShortMask256 outerClass jdk/incubator/vector/ShortVector256 innerClassName ShortMask256 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector256$ShortShuffle256 outerClass jdk/incubator/vector/ShortVector256 innerClassName ShortShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector512$ShortMask512 outerClass jdk/incubator/vector/ShortVector512 innerClassName ShortMask512 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector512$ShortShuffle512 outerClass jdk/incubator/vector/ShortVector512 innerClassName ShortShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVectorMax$ShortMaskMax outerClass jdk/incubator/vector/ShortVectorMax innerClassName ShortMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/ShortVectorMax$ShortShuffleMax outerClass jdk/incubator/vector/ShortVectorMax innerClassName ShortShuffleMax flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/incubator/vector/ShortVector$ShortSpecies +header extends jdk/incubator/vector/AbstractSpecies nestHost jdk/incubator/vector/ShortVector flags 30 signature Ljdk/incubator/vector/AbstractSpecies; +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/incubator/vector/ShortVectorMax$ShortMaskMax outerClass jdk/incubator/vector/ShortVectorMax innerClassName ShortMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector64$ShortMask64 outerClass jdk/incubator/vector/ShortVector64 innerClassName ShortMask64 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector128$ShortMask128 outerClass jdk/incubator/vector/ShortVector128 innerClassName ShortMask128 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector256$ShortMask256 outerClass jdk/incubator/vector/ShortVector256 innerClassName ShortMask256 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector512$ShortMask512 outerClass jdk/incubator/vector/ShortVector512 innerClassName ShortMask512 flags 18 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vectorType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class<+Ljdk/incubator/vector/ShortVector;>; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name checkValue descriptor (J)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/ShortVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/ShortVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/ShortVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/ShortVector; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name maskAll descriptor (Z)Ljdk/incubator/vector/VectorMask; flags 11 signature (Z)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name iota descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name zero descriptor ()Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name fromMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name fromArray descriptor (Ljava/lang/Object;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name zero descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ShortVector128 +header extends jdk/incubator/vector/ShortVector nestMembers jdk/incubator/vector/ShortVector128$ShortShuffle128,jdk/incubator/vector/ShortVector128$ShortMask128 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector128$ShortMask128 outerClass jdk/incubator/vector/ShortVector128 innerClassName ShortMask128 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector128$ShortShuffle128 outerClass jdk/incubator/vector/ShortVector128 innerClassName ShortShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (S)Ljdk/incubator/vector/ShortVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ShortVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/ShortVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)S flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)S flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)S runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/ShortVector128$ShortShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128$ShortMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128$ShortMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;S)Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128$ShortMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/ShortVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector128; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/ShortVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)S flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)S flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IS)Ljdk/incubator/vector/ShortVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IS)Ljdk/incubator/vector/ShortVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IS)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;S)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (S)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ShortVector128$ShortMask128 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/ShortVector128 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector128$ShortMask128 outerClass jdk/incubator/vector/ShortVector128 innerClassName ShortMask128 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ShortVector128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128$ShortMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128$ShortMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector128$ShortMask128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ShortVector128$ShortShuffle128 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/ShortVector128 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector128$ShortShuffle128 outerClass jdk/incubator/vector/ShortVector128 innerClassName ShortShuffle128 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ShortVector128$ShortMask128 outerClass jdk/incubator/vector/ShortVector128 innerClassName ShortMask128 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ShortVector128; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/ShortVector128$ShortMask128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector128$ShortShuffle128; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector128$ShortShuffle128; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/ShortVector128$ShortShuffle128; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ShortVector256 +header extends jdk/incubator/vector/ShortVector nestMembers jdk/incubator/vector/ShortVector256$ShortShuffle256,jdk/incubator/vector/ShortVector256$ShortMask256 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector256$ShortMask256 outerClass jdk/incubator/vector/ShortVector256 innerClassName ShortMask256 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector256$ShortShuffle256 outerClass jdk/incubator/vector/ShortVector256 innerClassName ShortShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (S)Ljdk/incubator/vector/ShortVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ShortVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/ShortVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)S flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)S flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)S runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/ShortVector256$ShortShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256$ShortMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256$ShortMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;S)Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256$ShortMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/ShortVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector256; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/ShortVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)S flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)S flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IS)Ljdk/incubator/vector/ShortVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IS)Ljdk/incubator/vector/ShortVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IS)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;S)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (S)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ShortVector256$ShortMask256 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/ShortVector256 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector256$ShortMask256 outerClass jdk/incubator/vector/ShortVector256 innerClassName ShortMask256 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ShortVector256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256$ShortMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256$ShortMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector256$ShortMask256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ShortVector256$ShortShuffle256 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/ShortVector256 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector256$ShortShuffle256 outerClass jdk/incubator/vector/ShortVector256 innerClassName ShortShuffle256 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ShortVector256$ShortMask256 outerClass jdk/incubator/vector/ShortVector256 innerClassName ShortMask256 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ShortVector256; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/ShortVector256$ShortMask256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector256$ShortShuffle256; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector256$ShortShuffle256; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/ShortVector256$ShortShuffle256; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ShortVector512 +header extends jdk/incubator/vector/ShortVector nestMembers jdk/incubator/vector/ShortVector512$ShortShuffle512,jdk/incubator/vector/ShortVector512$ShortMask512 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector512$ShortMask512 outerClass jdk/incubator/vector/ShortVector512 innerClassName ShortMask512 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector512$ShortShuffle512 outerClass jdk/incubator/vector/ShortVector512 innerClassName ShortShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (S)Ljdk/incubator/vector/ShortVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ShortVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/ShortVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)S flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)S flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)S runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/ShortVector512$ShortShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512$ShortMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512$ShortMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;S)Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512$ShortMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/ShortVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector512; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/ShortVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)S flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)S flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IS)Ljdk/incubator/vector/ShortVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IS)Ljdk/incubator/vector/ShortVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IS)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;S)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (S)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ShortVector512$ShortMask512 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/ShortVector512 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector512$ShortMask512 outerClass jdk/incubator/vector/ShortVector512 innerClassName ShortMask512 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ShortVector512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512$ShortMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512$ShortMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector512$ShortMask512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ShortVector512$ShortShuffle512 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/ShortVector512 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector512$ShortShuffle512 outerClass jdk/incubator/vector/ShortVector512 innerClassName ShortShuffle512 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ShortVector512$ShortMask512 outerClass jdk/incubator/vector/ShortVector512 innerClassName ShortMask512 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ShortVector512; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/ShortVector512$ShortMask512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector512$ShortShuffle512; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector512$ShortShuffle512; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/ShortVector512$ShortShuffle512; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ShortVector64 +header extends jdk/incubator/vector/ShortVector nestMembers jdk/incubator/vector/ShortVector64$ShortShuffle64,jdk/incubator/vector/ShortVector64$ShortMask64 flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector64$ShortMask64 outerClass jdk/incubator/vector/ShortVector64 innerClassName ShortMask64 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector64$ShortShuffle64 outerClass jdk/incubator/vector/ShortVector64 innerClassName ShortShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (S)Ljdk/incubator/vector/ShortVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ShortVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/ShortVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)S flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)S flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)S runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/ShortVector64$ShortShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64$ShortMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64$ShortMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;S)Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64$ShortMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/ShortVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector64; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/ShortVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)S flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)S flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IS)Ljdk/incubator/vector/ShortVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IS)Ljdk/incubator/vector/ShortVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IS)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;S)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (S)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ShortVector64$ShortMask64 +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/ShortVector64 flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector64$ShortMask64 outerClass jdk/incubator/vector/ShortVector64 innerClassName ShortMask64 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ShortVector64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64$ShortMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64$ShortMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector64$ShortMask64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ShortVector64$ShortShuffle64 +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/ShortVector64 flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector64$ShortShuffle64 outerClass jdk/incubator/vector/ShortVector64 innerClassName ShortShuffle64 flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ShortVector64$ShortMask64 outerClass jdk/incubator/vector/ShortVector64 innerClassName ShortMask64 flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ShortVector64; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/ShortVector64$ShortMask64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector64$ShortShuffle64; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector64$ShortShuffle64; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/ShortVector64$ShortShuffle64; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/ShortVectorMax +header extends jdk/incubator/vector/ShortVector nestMembers jdk/incubator/vector/ShortVectorMax$ShortShuffleMax,jdk/incubator/vector/ShortVectorMax$ShortMaskMax flags 30 runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/ShortVectorMax$ShortMaskMax outerClass jdk/incubator/vector/ShortVectorMax innerClassName ShortMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/ShortVectorMax$ShortShuffleMax outerClass jdk/incubator/vector/ShortVectorMax innerClassName ShortShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementType descriptor ()Ljava/lang/Class; flags 11 signature ()Ljava/lang/Class; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name elementSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name shape descriptor ()Ljdk/incubator/vector/VectorShape; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name length descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name bitSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name byteSize descriptor ()I flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (S)Ljdk/incubator/vector/ShortVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name convertShape descriptor (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Conversion;Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reinterpretShape descriptor (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; flags 11 signature (Ljdk/incubator/vector/VectorSpecies;I)Ljdk/incubator/vector/Vector; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ShortVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name addIndex descriptor (I)Ljdk/incubator/vector/ShortVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)S flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanes descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)S flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)S runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;)J flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name reduceLanesToLong descriptor (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J flags 11 signature (Ljdk/incubator/vector/VectorOperators$Associative;Ljdk/incubator/vector/VectorMask;)J runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/ShortVectorMax$ShortShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;S)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 11 signature (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name slice descriptor (I)Ljdk/incubator/vector/ShortVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name unslice descriptor (I)Ljdk/incubator/vector/ShortVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; flags 1 signature (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVectorMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lane descriptor (I)S flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneHelper descriptor (I)S flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IS)Ljdk/incubator/vector/ShortVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLaneHelper descriptor (IS)Ljdk/incubator/vector/ShortVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name withLane descriptor (IS)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;J)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;S)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name test descriptor (Ljdk/incubator/vector/VectorOperators$Test;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (J)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name broadcast descriptor (S)Ljdk/incubator/vector/ShortVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (I)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/AbstractVector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toShuffle descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name broadcast descriptor (J)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name selectFrom descriptor (Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name expand descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name compress descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;ILjdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name unslice descriptor (ILjdk/incubator/vector/Vector;I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name slice descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name slice descriptor (ILjdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name addIndex descriptor (I)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name blend descriptor (Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name compare descriptor (Ljdk/incubator/vector/VectorOperators$Comparison;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Ternary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Binary;Ljdk/incubator/vector/Vector;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null,1000:null +method name lanewise descriptor (Ljdk/incubator/vector/VectorOperators$Unary;)Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ShortVectorMax$ShortMaskMax +header extends jdk/incubator/vector/AbstractMask nestHost jdk/incubator/vector/ShortVectorMax flags 30 signature Ljdk/incubator/vector/AbstractMask; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVectorMax$ShortMaskMax outerClass jdk/incubator/vector/ShortVectorMax innerClassName ShortMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ShortVectorMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name cast descriptor (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; flags 1 signature (Ljdk/incubator/vector/VectorSpecies;)Ljdk/incubator/vector/VectorMask; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 1 signature (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name trueCount descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name firstTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name lastTrue descriptor ()I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toLong descriptor ()J flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsSet descriptor (I)Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name anyTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name allTrue descriptor ()Z flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name compress descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name not descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name xor descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name or descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name and descriptor (Ljdk/incubator/vector/VectorMask;)Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null + +class name jdk/incubator/vector/ShortVectorMax$ShortShuffleMax +header extends jdk/incubator/vector/AbstractShuffle nestHost jdk/incubator/vector/ShortVectorMax flags 30 signature Ljdk/incubator/vector/AbstractShuffle; runtimeAnnotations @Ljdk/internal/ValueBased; +innerclass innerClass jdk/incubator/vector/ShortVectorMax$ShortShuffleMax outerClass jdk/incubator/vector/ShortVectorMax innerClassName ShortShuffleMax flags 18 +innerclass innerClass jdk/incubator/vector/ShortVector$ShortSpecies outerClass jdk/incubator/vector/ShortVector innerClassName ShortSpecies flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/ShortVectorMax$ShortMaskMax outerClass jdk/incubator/vector/ShortVectorMax innerClassName ShortMaskMax flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name vspecies descriptor ()Ljdk/incubator/vector/ShortVector$ShortSpecies; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name toVector descriptor ()Ljdk/incubator/vector/ShortVectorMax; flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneSource descriptor (I)I flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoArray descriptor ([II)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name intoMemorySegment descriptor (Ljava/lang/foreign/MemorySegment;JLjava/nio/ByteOrder;)V flags 1 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/ShortVectorMax$ShortMaskMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVectorMax$ShortShuffleMax; flags 11 signature (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/ShortVectorMax$ShortShuffleMax; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/ShortVectorMax$ShortShuffleMax; flags 11 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name vspecies descriptor ()Ljdk/incubator/vector/AbstractSpecies; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name rearrange descriptor (Ljdk/incubator/vector/VectorShuffle;)Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; methodParameters 1000:null +method name toVector descriptor ()Ljdk/incubator/vector/Vector; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name laneIsValid descriptor ()Ljdk/incubator/vector/VectorMask; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; +method name wrapIndexes descriptor ()Ljdk/incubator/vector/VectorShuffle; flags 1041 runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/Vector +header extends jdk/internal/vm/vector/VectorSupport$Vector sealed true permittedSubclasses jdk/incubator/vector/AbstractVector flags 421 signature Ljdk/internal/vm/vector/VectorSupport$Vector; +innerclass innerClass jdk/internal/vm/vector/VectorSupport$Vector outerClass jdk/internal/vm/vector/VectorSupport innerClassName Vector flags 9 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 + +class name jdk/incubator/vector/VectorMask +header extends jdk/internal/vm/vector/VectorSupport$VectorMask sealed true permittedSubclasses jdk/incubator/vector/AbstractMask flags 421 signature Ljdk/internal/vm/vector/VectorSupport$VectorMask; +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorMask outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorMask flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorSpecies outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorSpecies flags 9 +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorPayload outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorPayload flags 9 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/incubator/vector/VectorOperators +header extends java/lang/Object nestMembers jdk/incubator/vector/VectorOperators$ComparisonImpl,jdk/incubator/vector/VectorOperators$TestImpl,jdk/incubator/vector/VectorOperators$ConversionImpl,jdk/incubator/vector/VectorOperators$AssociativeImpl,jdk/incubator/vector/VectorOperators$TernaryImpl,jdk/incubator/vector/VectorOperators$BinaryImpl,jdk/incubator/vector/VectorOperators$UnaryImpl,jdk/incubator/vector/VectorOperators$OperatorImpl,jdk/incubator/vector/VectorOperators$Conversion,jdk/incubator/vector/VectorOperators$Comparison,jdk/incubator/vector/VectorOperators$Test,jdk/incubator/vector/VectorOperators$Associative,jdk/incubator/vector/VectorOperators$Ternary,jdk/incubator/vector/VectorOperators$Binary,jdk/incubator/vector/VectorOperators$Unary,jdk/incubator/vector/VectorOperators$Operator flags 31 +innerclass innerClass jdk/incubator/vector/VectorOperators$OperatorImpl outerClass jdk/incubator/vector/VectorOperators innerClassName OperatorImpl flags 40a +innerclass innerClass jdk/incubator/vector/VectorOperators$UnaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName UnaryImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$BinaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName BinaryImpl flags a +innerclass innerClass jdk/incubator/vector/VectorOperators$TernaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName TernaryImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$AssociativeImpl outerClass jdk/incubator/vector/VectorOperators innerClassName AssociativeImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$TestImpl outerClass jdk/incubator/vector/VectorOperators innerClassName TestImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$ComparisonImpl outerClass jdk/incubator/vector/VectorOperators innerClassName ComparisonImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$ConversionImpl outerClass jdk/incubator/vector/VectorOperators innerClassName ConversionImpl flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/incubator/vector/VectorOperators$Associative +header extends java/lang/Object implements jdk/incubator/vector/VectorOperators$Binary nestHost jdk/incubator/vector/VectorOperators sealed true permittedSubclasses jdk/incubator/vector/VectorOperators$AssociativeImpl flags 601 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$AssociativeImpl outerClass jdk/incubator/vector/VectorOperators innerClassName AssociativeImpl flags 1a + +class name jdk/incubator/vector/VectorOperators$AssociativeImpl +header extends jdk/incubator/vector/VectorOperators$BinaryImpl implements jdk/incubator/vector/VectorOperators$Associative nestHost jdk/incubator/vector/VectorOperators flags 30 +innerclass innerClass jdk/incubator/vector/VectorOperators$BinaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName BinaryImpl flags a +innerclass innerClass jdk/incubator/vector/VectorOperators$AssociativeImpl outerClass jdk/incubator/vector/VectorOperators innerClassName AssociativeImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 + +class name jdk/incubator/vector/VectorOperators$Binary +header extends java/lang/Object implements jdk/incubator/vector/VectorOperators$Operator nestHost jdk/incubator/vector/VectorOperators sealed true permittedSubclasses jdk/incubator/vector/VectorOperators$Associative,jdk/incubator/vector/VectorOperators$BinaryImpl flags 601 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Associative outerClass jdk/incubator/vector/VectorOperators innerClassName Associative flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$BinaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName BinaryImpl flags a + +class name jdk/incubator/vector/VectorOperators$BinaryImpl +header extends jdk/incubator/vector/VectorOperators$OperatorImpl implements jdk/incubator/vector/VectorOperators$Binary nestHost jdk/incubator/vector/VectorOperators sealed true permittedSubclasses jdk/incubator/vector/VectorOperators$AssociativeImpl flags 20 +innerclass innerClass jdk/incubator/vector/VectorOperators$OperatorImpl outerClass jdk/incubator/vector/VectorOperators innerClassName OperatorImpl flags 40a +innerclass innerClass jdk/incubator/vector/VectorOperators$BinaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName BinaryImpl flags a +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$AssociativeImpl outerClass jdk/incubator/vector/VectorOperators innerClassName AssociativeImpl flags 1a + +class name jdk/incubator/vector/VectorOperators$Comparison +header extends java/lang/Object implements jdk/incubator/vector/VectorOperators$Operator nestHost jdk/incubator/vector/VectorOperators sealed true permittedSubclasses jdk/incubator/vector/VectorOperators$ComparisonImpl flags 601 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$ComparisonImpl outerClass jdk/incubator/vector/VectorOperators innerClassName ComparisonImpl flags 1a + +class name jdk/incubator/vector/VectorOperators$ComparisonImpl +header extends jdk/incubator/vector/VectorOperators$OperatorImpl implements jdk/incubator/vector/VectorOperators$Comparison nestHost jdk/incubator/vector/VectorOperators flags 30 +innerclass innerClass jdk/incubator/vector/VectorOperators$OperatorImpl outerClass jdk/incubator/vector/VectorOperators innerClassName OperatorImpl flags 40a +innerclass innerClass jdk/incubator/vector/VectorOperators$ComparisonImpl outerClass jdk/incubator/vector/VectorOperators innerClassName ComparisonImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +method name rangeType descriptor ()Ljava/lang/Class; flags 1 signature ()Ljava/lang/Class<*>; + +class name jdk/incubator/vector/VectorOperators$Conversion +header extends java/lang/Object implements jdk/incubator/vector/VectorOperators$Operator nestHost jdk/incubator/vector/VectorOperators sealed true permittedSubclasses jdk/incubator/vector/VectorOperators$ConversionImpl flags 601 signature Ljava/lang/Object;Ljdk/incubator/vector/VectorOperators$Operator; +innerclass innerClass jdk/incubator/vector/VectorOperators$ConversionImpl outerClass jdk/incubator/vector/VectorOperators innerClassName ConversionImpl flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 + +class name jdk/incubator/vector/VectorOperators$ConversionImpl +header extends jdk/incubator/vector/VectorOperators$OperatorImpl implements jdk/incubator/vector/VectorOperators$Conversion nestHost jdk/incubator/vector/VectorOperators flags 30 signature Ljdk/incubator/vector/VectorOperators$OperatorImpl;Ljdk/incubator/vector/VectorOperators$Conversion; +innerclass innerClass jdk/incubator/vector/VectorOperators$OperatorImpl outerClass jdk/incubator/vector/VectorOperators innerClassName OperatorImpl flags 40a +innerclass innerClass jdk/incubator/vector/VectorOperators$ConversionImpl outerClass jdk/incubator/vector/VectorOperators innerClassName ConversionImpl flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 +method name domainType descriptor ()Ljava/lang/Class; flags 1 signature ()Ljava/lang/Class; +method name rangeType descriptor ()Ljava/lang/Class; flags 1 signature ()Ljava/lang/Class; +method name check descriptor (Ljava/lang/Class;Ljava/lang/Class;)Ljdk/incubator/vector/VectorOperators$Conversion; flags 1 signature (Ljava/lang/Class;Ljava/lang/Class;)Ljdk/incubator/vector/VectorOperators$Conversion; runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/VectorOperators$Operator +header extends java/lang/Object nestHost jdk/incubator/vector/VectorOperators sealed true permittedSubclasses jdk/incubator/vector/VectorOperators$Unary,jdk/incubator/vector/VectorOperators$Binary,jdk/incubator/vector/VectorOperators$Ternary,jdk/incubator/vector/VectorOperators$Test,jdk/incubator/vector/VectorOperators$Comparison,jdk/incubator/vector/VectorOperators$Conversion,jdk/incubator/vector/VectorOperators$OperatorImpl flags 601 +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Binary outerClass jdk/incubator/vector/VectorOperators innerClassName Binary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Comparison outerClass jdk/incubator/vector/VectorOperators innerClassName Comparison flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Conversion outerClass jdk/incubator/vector/VectorOperators innerClassName Conversion flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$OperatorImpl outerClass jdk/incubator/vector/VectorOperators innerClassName OperatorImpl flags 40a + +class name jdk/incubator/vector/VectorOperators$OperatorImpl +header extends java/lang/Object implements jdk/incubator/vector/VectorOperators$Operator nestHost jdk/incubator/vector/VectorOperators sealed true permittedSubclasses jdk/incubator/vector/VectorOperators$UnaryImpl,jdk/incubator/vector/VectorOperators$BinaryImpl,jdk/incubator/vector/VectorOperators$TernaryImpl,jdk/incubator/vector/VectorOperators$ConversionImpl,jdk/incubator/vector/VectorOperators$TestImpl,jdk/incubator/vector/VectorOperators$ComparisonImpl flags 420 +innerclass innerClass jdk/incubator/vector/VectorOperators$OperatorImpl outerClass jdk/incubator/vector/VectorOperators innerClassName OperatorImpl flags 40a +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$UnaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName UnaryImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$BinaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName BinaryImpl flags a +innerclass innerClass jdk/incubator/vector/VectorOperators$TernaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName TernaryImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$ConversionImpl outerClass jdk/incubator/vector/VectorOperators innerClassName ConversionImpl flags 18 +innerclass innerClass jdk/incubator/vector/VectorOperators$TestImpl outerClass jdk/incubator/vector/VectorOperators innerClassName TestImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$ComparisonImpl outerClass jdk/incubator/vector/VectorOperators innerClassName ComparisonImpl flags 1a +method name name descriptor ()Ljava/lang/String; flags 11 +method name operatorName descriptor ()Ljava/lang/String; flags 11 +method name toString descriptor ()Ljava/lang/String; flags 11 +method name arity descriptor ()I flags 11 +method name isBoolean descriptor ()Z flags 11 +method name rangeType descriptor ()Ljava/lang/Class; flags 1 signature ()Ljava/lang/Class<*>; +method name isAssociative descriptor ()Z flags 11 +method name compatibleWith descriptor (Ljava/lang/Class;)Z flags 1 signature (Ljava/lang/Class<*>;)Z runtimeAnnotations @Ljdk/internal/vm/annotation/ForceInline; + +class name jdk/incubator/vector/VectorOperators$Ternary +header extends java/lang/Object implements jdk/incubator/vector/VectorOperators$Operator nestHost jdk/incubator/vector/VectorOperators sealed true permittedSubclasses jdk/incubator/vector/VectorOperators$TernaryImpl flags 601 +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$TernaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName TernaryImpl flags 1a + +class name jdk/incubator/vector/VectorOperators$TernaryImpl +header extends jdk/incubator/vector/VectorOperators$OperatorImpl implements jdk/incubator/vector/VectorOperators$Ternary nestHost jdk/incubator/vector/VectorOperators flags 30 +innerclass innerClass jdk/incubator/vector/VectorOperators$OperatorImpl outerClass jdk/incubator/vector/VectorOperators innerClassName OperatorImpl flags 40a +innerclass innerClass jdk/incubator/vector/VectorOperators$TernaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName TernaryImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$Ternary outerClass jdk/incubator/vector/VectorOperators innerClassName Ternary flags 609 + +class name jdk/incubator/vector/VectorOperators$Test +header extends java/lang/Object implements jdk/incubator/vector/VectorOperators$Operator nestHost jdk/incubator/vector/VectorOperators sealed true permittedSubclasses jdk/incubator/vector/VectorOperators$TestImpl flags 601 +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$TestImpl outerClass jdk/incubator/vector/VectorOperators innerClassName TestImpl flags 1a + +class name jdk/incubator/vector/VectorOperators$TestImpl +header extends jdk/incubator/vector/VectorOperators$OperatorImpl implements jdk/incubator/vector/VectorOperators$Test nestHost jdk/incubator/vector/VectorOperators flags 30 +innerclass innerClass jdk/incubator/vector/VectorOperators$OperatorImpl outerClass jdk/incubator/vector/VectorOperators innerClassName OperatorImpl flags 40a +innerclass innerClass jdk/incubator/vector/VectorOperators$TestImpl outerClass jdk/incubator/vector/VectorOperators innerClassName TestImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$Test outerClass jdk/incubator/vector/VectorOperators innerClassName Test flags 609 +method name rangeType descriptor ()Ljava/lang/Class; flags 1 signature ()Ljava/lang/Class<*>; + +class name jdk/incubator/vector/VectorOperators$Unary +header extends java/lang/Object implements jdk/incubator/vector/VectorOperators$Operator nestHost jdk/incubator/vector/VectorOperators sealed true permittedSubclasses jdk/incubator/vector/VectorOperators$UnaryImpl flags 601 +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$Operator outerClass jdk/incubator/vector/VectorOperators innerClassName Operator flags 609 +innerclass innerClass jdk/incubator/vector/VectorOperators$UnaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName UnaryImpl flags 1a + +class name jdk/incubator/vector/VectorOperators$UnaryImpl +header extends jdk/incubator/vector/VectorOperators$OperatorImpl implements jdk/incubator/vector/VectorOperators$Unary nestHost jdk/incubator/vector/VectorOperators flags 30 +innerclass innerClass jdk/incubator/vector/VectorOperators$OperatorImpl outerClass jdk/incubator/vector/VectorOperators innerClassName OperatorImpl flags 40a +innerclass innerClass jdk/incubator/vector/VectorOperators$UnaryImpl outerClass jdk/incubator/vector/VectorOperators innerClassName UnaryImpl flags 1a +innerclass innerClass jdk/incubator/vector/VectorOperators$Unary outerClass jdk/incubator/vector/VectorOperators innerClassName Unary flags 609 + +class name jdk/incubator/vector/VectorShuffle +header extends jdk/internal/vm/vector/VectorSupport$VectorShuffle sealed true permittedSubclasses jdk/incubator/vector/AbstractShuffle flags 421 signature Ljdk/internal/vm/vector/VectorSupport$VectorShuffle; +innerclass innerClass jdk/internal/vm/vector/VectorSupport$VectorShuffle outerClass jdk/internal/vm/vector/VectorSupport innerClassName VectorShuffle flags 9 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + +class name jdk/incubator/vector/VectorSpecies +header extends java/lang/Object sealed true permittedSubclasses jdk/incubator/vector/AbstractSpecies flags 601 signature Ljava/lang/Object; + diff --git a/src/jdk.compiler/share/data/symbols/jdk.javadoc-R.sym.txt b/src/jdk.compiler/share/data/symbols/jdk.javadoc-R.sym.txt new file mode 100644 index 00000000000..fb390d7f7dc --- /dev/null +++ b/src/jdk.compiler/share/data/symbols/jdk.javadoc-R.sym.txt @@ -0,0 +1,31 @@ +# +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# ########################################################## +# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ### +# ########################################################## +# +class name jdk/javadoc/doclet/Taglet +method name toString descriptor (Ljava/util/List;Ljavax/lang/model/element/Element;Ljava/net/URI;)Ljava/lang/String; flags 1 signature (Ljava/util/List<+Lcom/sun/source/doctree/DocTree;>;Ljavax/lang/model/element/Element;Ljava/net/URI;)Ljava/lang/String; + diff --git a/src/jdk.compiler/share/data/symbols/jdk.security.auth-R.sym.txt b/src/jdk.compiler/share/data/symbols/jdk.security.auth-R.sym.txt new file mode 100644 index 00000000000..4ddcf028fb0 --- /dev/null +++ b/src/jdk.compiler/share/data/symbols/jdk.security.auth-R.sym.txt @@ -0,0 +1,37 @@ +# +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +# ########################################################## +# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ### +# ########################################################## +# +class name com/sun/security/auth/module/UnixSystem +header extends java/lang/Object flags 21 +innerclass innerClass java/lang/foreign/ValueLayout$OfInt outerClass java/lang/foreign/ValueLayout innerClassName OfInt flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfByte outerClass java/lang/foreign/ValueLayout innerClassName OfByte flags 609 +innerclass innerClass java/lang/foreign/ValueLayout$OfLong outerClass java/lang/foreign/ValueLayout innerClassName OfLong flags 609 +innerclass innerClass java/lang/foreign/Linker$Option outerClass java/lang/foreign/Linker innerClassName Option flags 609 +innerclass innerClass java/lang/foreign/MemoryLayout$PathElement outerClass java/lang/foreign/MemoryLayout innerClassName PathElement flags 609 +innerclass innerClass java/lang/invoke/MethodHandles$Lookup outerClass java/lang/invoke/MethodHandles innerClassName Lookup flags 19 + diff --git a/src/jdk.compiler/share/data/symbols/symbols b/src/jdk.compiler/share/data/symbols/symbols index f31e521513c..27a1e78a6ff 100644 --- a/src/jdk.compiler/share/data/symbols/symbols +++ b/src/jdk.compiler/share/data/symbols/symbols @@ -1,5 +1,5 @@ # -# Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -29,7 +29,7 @@ #command used to generate this file: #build.tools.symbolgenerator.CreateSymbols build-description-incremental symbols include.list # -generate platforms 8:9:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q +generate platforms 8:9:A:B:C:D:E:F:G:H:I:J:K:L:M:N:O:P:Q:R platform version 8 files java.activation-8.sym.txt:java.base-8.sym.txt:java.compiler-8.sym.txt:java.corba-8.sym.txt:java.datatransfer-8.sym.txt:java.desktop-8.sym.txt:java.instrument-8.sym.txt:java.logging-8.sym.txt:java.management-8.sym.txt:java.management.rmi-8.sym.txt:java.naming-8.sym.txt:java.prefs-8.sym.txt:java.rmi-8.sym.txt:java.scripting-8.sym.txt:java.security.jgss-8.sym.txt:java.security.sasl-8.sym.txt:java.sql-8.sym.txt:java.sql.rowset-8.sym.txt:java.transaction-8.sym.txt:java.xml-8.sym.txt:java.xml.bind-8.sym.txt:java.xml.crypto-8.sym.txt:java.xml.ws-8.sym.txt:java.xml.ws.annotation-8.sym.txt:jdk.httpserver-8.sym.txt:jdk.management-8.sym.txt:jdk.net-8.sym.txt:jdk.scripting.nashorn-8.sym.txt:jdk.sctp-8.sym.txt:jdk.security.auth-8.sym.txt:jdk.security.jgss-8.sym.txt platform version 9 base 8 files java.activation-9.sym.txt:java.base-9.sym.txt:java.compiler-9.sym.txt:java.corba-9.sym.txt:java.datatransfer-9.sym.txt:java.desktop-9.sym.txt:java.instrument-9.sym.txt:java.logging-9.sym.txt:java.management-9.sym.txt:java.management.rmi-9.sym.txt:java.naming-9.sym.txt:java.prefs-9.sym.txt:java.rmi-9.sym.txt:java.scripting-9.sym.txt:java.se-9.sym.txt:java.se.ee-9.sym.txt:java.security.jgss-9.sym.txt:java.security.sasl-9.sym.txt:java.smartcardio-9.sym.txt:java.sql-9.sym.txt:java.sql.rowset-9.sym.txt:java.transaction-9.sym.txt:java.xml-9.sym.txt:java.xml.bind-9.sym.txt:java.xml.crypto-9.sym.txt:java.xml.ws-9.sym.txt:java.xml.ws.annotation-9.sym.txt:jdk.accessibility-9.sym.txt:jdk.attach-9.sym.txt:jdk.charsets-9.sym.txt:jdk.compiler-9.sym.txt:jdk.crypto.cryptoki-9.sym.txt:jdk.crypto.ec-9.sym.txt:jdk.dynalink-9.sym.txt:jdk.editpad-9.sym.txt:jdk.hotspot.agent-9.sym.txt:jdk.httpserver-9.sym.txt:jdk.incubator.httpclient-9.sym.txt:jdk.jartool-9.sym.txt:jdk.javadoc-9.sym.txt:jdk.jcmd-9.sym.txt:jdk.jconsole-9.sym.txt:jdk.jdeps-9.sym.txt:jdk.jdi-9.sym.txt:jdk.jdwp.agent-9.sym.txt:jdk.jlink-9.sym.txt:jdk.jshell-9.sym.txt:jdk.jsobject-9.sym.txt:jdk.jstatd-9.sym.txt:jdk.localedata-9.sym.txt:jdk.management-9.sym.txt:jdk.management.agent-9.sym.txt:jdk.naming.dns-9.sym.txt:jdk.naming.rmi-9.sym.txt:jdk.net-9.sym.txt:jdk.pack-9.sym.txt:jdk.policytool-9.sym.txt:jdk.rmic-9.sym.txt:jdk.scripting.nashorn-9.sym.txt:jdk.sctp-9.sym.txt:jdk.security.auth-9.sym.txt:jdk.security.jgss-9.sym.txt:jdk.unsupported-9.sym.txt:jdk.xml.dom-9.sym.txt:jdk.zipfs-9.sym.txt platform version A base 9 files java.activation-A.sym.txt:java.base-A.sym.txt:java.compiler-A.sym.txt:java.corba-A.sym.txt:java.datatransfer-A.sym.txt:java.desktop-A.sym.txt:java.instrument-A.sym.txt:java.logging-A.sym.txt:java.management-A.sym.txt:java.management.rmi-A.sym.txt:java.naming-A.sym.txt:java.prefs-A.sym.txt:java.rmi-A.sym.txt:java.scripting-A.sym.txt:java.se-A.sym.txt:java.se.ee-A.sym.txt:java.security.jgss-A.sym.txt:java.security.sasl-A.sym.txt:java.smartcardio-A.sym.txt:java.sql-A.sym.txt:java.sql.rowset-A.sym.txt:java.transaction-A.sym.txt:java.xml-A.sym.txt:java.xml.bind-A.sym.txt:java.xml.crypto-A.sym.txt:java.xml.ws-A.sym.txt:java.xml.ws.annotation-A.sym.txt:jdk.accessibility-A.sym.txt:jdk.attach-A.sym.txt:jdk.charsets-A.sym.txt:jdk.compiler-A.sym.txt:jdk.crypto.cryptoki-A.sym.txt:jdk.crypto.ec-A.sym.txt:jdk.dynalink-A.sym.txt:jdk.editpad-A.sym.txt:jdk.hotspot.agent-A.sym.txt:jdk.httpserver-A.sym.txt:jdk.incubator.httpclient-A.sym.txt:jdk.jartool-A.sym.txt:jdk.javadoc-A.sym.txt:jdk.jcmd-A.sym.txt:jdk.jconsole-A.sym.txt:jdk.jdeps-A.sym.txt:jdk.jdi-A.sym.txt:jdk.jdwp.agent-A.sym.txt:jdk.jlink-A.sym.txt:jdk.jshell-A.sym.txt:jdk.jsobject-A.sym.txt:jdk.jstatd-A.sym.txt:jdk.localedata-A.sym.txt:jdk.management-A.sym.txt:jdk.management.agent-A.sym.txt:jdk.naming.dns-A.sym.txt:jdk.naming.rmi-A.sym.txt:jdk.net-A.sym.txt:jdk.pack-A.sym.txt:jdk.policytool-A.sym.txt:jdk.rmic-A.sym.txt:jdk.scripting.nashorn-A.sym.txt:jdk.sctp-A.sym.txt:jdk.security.auth-A.sym.txt:jdk.security.jgss-A.sym.txt:jdk.unsupported-A.sym.txt:jdk.xml.dom-A.sym.txt:jdk.zipfs-A.sym.txt @@ -49,3 +49,4 @@ platform version N base M files java.base-N.sym.txt:java.compiler-N.sym.txt:java platform version O base N files java.base-O.sym.txt:java.compiler-O.sym.txt:java.datatransfer-O.sym.txt:java.desktop-O.sym.txt:java.instrument-O.sym.txt:java.logging-O.sym.txt:java.management-O.sym.txt:java.management.rmi-O.sym.txt:java.naming-O.sym.txt:java.net.http-O.sym.txt:java.prefs-O.sym.txt:java.rmi-O.sym.txt:java.scripting-O.sym.txt:java.se-O.sym.txt:java.security.jgss-O.sym.txt:java.security.sasl-O.sym.txt:java.smartcardio-O.sym.txt:java.sql-O.sym.txt:java.sql.rowset-O.sym.txt:java.transaction.xa-O.sym.txt:java.xml-O.sym.txt:java.xml.crypto-O.sym.txt:jdk.accessibility-O.sym.txt:jdk.attach-O.sym.txt:jdk.charsets-O.sym.txt:jdk.compiler-O.sym.txt:jdk.crypto.cryptoki-O.sym.txt:jdk.dynalink-O.sym.txt:jdk.editpad-O.sym.txt:jdk.hotspot.agent-O.sym.txt:jdk.httpserver-O.sym.txt:jdk.incubator.foreign-O.sym.txt:jdk.incubator.vector-O.sym.txt:jdk.jartool-O.sym.txt:jdk.javadoc-O.sym.txt:jdk.jcmd-O.sym.txt:jdk.jconsole-O.sym.txt:jdk.jdeps-O.sym.txt:jdk.jdi-O.sym.txt:jdk.jdwp.agent-O.sym.txt:jdk.jfr-O.sym.txt:jdk.jlink-O.sym.txt:jdk.jpackage-O.sym.txt:jdk.jshell-O.sym.txt:jdk.jsobject-O.sym.txt:jdk.jstatd-O.sym.txt:jdk.localedata-O.sym.txt:jdk.management-O.sym.txt:jdk.management.agent-O.sym.txt:jdk.management.jfr-O.sym.txt:jdk.naming.dns-O.sym.txt:jdk.naming.rmi-O.sym.txt:jdk.net-O.sym.txt:jdk.nio.mapmode-O.sym.txt:jdk.sctp-O.sym.txt:jdk.security.auth-O.sym.txt:jdk.security.jgss-O.sym.txt:jdk.unsupported-O.sym.txt:jdk.xml.dom-O.sym.txt:jdk.zipfs-O.sym.txt platform version P base O files java.base-P.sym.txt:java.compiler-P.sym.txt:java.desktop-P.sym.txt:java.logging-P.sym.txt:java.management-P.sym.txt:java.net.http-P.sym.txt:java.security.jgss-P.sym.txt:java.xml.crypto-P.sym.txt:jdk.attach-P.sym.txt:jdk.compiler-P.sym.txt:jdk.incubator.foreign-P.sym.txt:jdk.incubator.vector-P.sym.txt:jdk.jdi-P.sym.txt:jdk.jfr-P.sym.txt:jdk.jpackage-P.sym.txt:jdk.jshell-P.sym.txt:jdk.net-P.sym.txt:jdk.security.jgss-P.sym.txt platform version Q base P files java.base-Q.sym.txt:java.compiler-Q.sym.txt:java.desktop-Q.sym.txt:java.management-Q.sym.txt:java.net.http-Q.sym.txt:java.sql-Q.sym.txt:jdk.httpserver-Q.sym.txt:jdk.incubator.foreign-Q.sym.txt:jdk.incubator.vector-Q.sym.txt:jdk.jartool-Q.sym.txt:jdk.jdeps-Q.sym.txt:jdk.jfr-Q.sym.txt:jdk.jlink-Q.sym.txt:jdk.jpackage-Q.sym.txt:jdk.jshell-Q.sym.txt:jdk.jsobject-Q.sym.txt:jdk.localedata-Q.sym.txt:jdk.management-Q.sym.txt +platform version R base Q files java.base-R.sym.txt:java.compiler-R.sym.txt:java.desktop-R.sym.txt:jdk.attach-R.sym.txt:jdk.compiler-R.sym.txt:jdk.incubator.foreign-R.sym.txt:jdk.incubator.vector-R.sym.txt:jdk.javadoc-R.sym.txt:jdk.security.auth-R.sym.txt diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java index 38baa7b2826..b666a14fd95 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -49,6 +49,7 @@ import com.sun.source.util.DocTreePath; import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; +import jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.formats.html.taglets.snippet.Action; import jdk.javadoc.internal.doclets.formats.html.taglets.snippet.ParseException; @@ -124,7 +125,8 @@ public class SnippetTaglet extends BaseTaglet { if (id != null && !id.isBlank()) { pre.put(HtmlAttr.ID, id); } else { - pre.put(HtmlAttr.ID, config.htmlIds.forSnippet(element, ids).name()); + var set = ids.computeIfAbsent(tagletWriter.htmlWriter, _ -> new HashSet<>()); + pre.put(HtmlAttr.ID, config.htmlIds.forSnippet(element, set).name()); } var code = HtmlTree.CODE() .addUnchecked(Text.EMPTY); // Make sure the element is always rendered @@ -207,7 +209,7 @@ public class SnippetTaglet extends BaseTaglet { return snippetContainer.add(pre.add(code)); } - private final Set ids = new HashSet<>(); + private final HashMap> ids = new HashMap<>(); private static final class BadSnippetException extends Exception { diff --git a/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImageResourcesTree.java b/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImageResourcesTree.java index 2f8143820ca..ab0809348ca 100644 --- a/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImageResourcesTree.java +++ b/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImageResourcesTree.java @@ -235,22 +235,46 @@ public final class ImageResourcesTree { return; } String modName = fullPath.substring(1, modEnd); - String pkgPath = fullPath.substring(modEnd + 1); + String resPath = fullPath.substring(modEnd + 1); + int pathEnd = resPath.lastIndexOf('/'); Node parentNode = getDirectoryNode(modName, modulesRoot); boolean isPreviewPath = false; - if (pkgPath.startsWith(PREVIEW_PREFIX)) { + if (resPath.startsWith("META-INF/")) { + parentNode = getDirectoryNode("META-INF", parentNode); + if (!resPath.startsWith(PREVIEW_PREFIX)) { + // Non-preview META-INF paths are resources, not package + // hierarchies, so directory and file names may contain dots. + for (int i = "META-INF".length(), j; i != pathEnd; i = j) { + j = resPath.indexOf('/', i + 1); + parentNode = getDirectoryNode(resPath.substring(i + 1, j), parentNode); + } + String resourceName = resPath.substring(pathEnd + 1); + Node resourceNode = parentNode.getChildren(resourceName); + if (resourceNode == null) { + new ResourceNode(resourceName, parentNode); + } else if (!(resourceNode instanceof ResourceNode)) { + throw new InvalidTreeException(resourceNode); + } + return; + } // For preview paths, process nodes relative to the preview directory. - pkgPath = pkgPath.substring(PREVIEW_PREFIX.length()); - Node metaInf = getDirectoryNode("META-INF", parentNode); - parentNode = getDirectoryNode("preview", metaInf); + parentNode = getDirectoryNode("preview", parentNode); + resPath = resPath.substring(PREVIEW_PREFIX.length()); + pathEnd -= PREVIEW_PREFIX.length(); isPreviewPath = true; } - int pathEnd = pkgPath.lastIndexOf('/'); // From invariants tested above, this must now be well-formed. - String fullPkgName = (pathEnd == -1) ? "" : pkgPath.substring(0, pathEnd).replace('/', '.'); - String resourceName = pkgPath.substring(pathEnd + 1); + String pkgPath = (pathEnd == -1) ? "" : resPath.substring(0, pathEnd); + if (pkgPath.contains(".")) { + // Non META-INF entries are package paths. Dots in path segment + // names would otherwise be confused with package separators. + System.err.println("Invalid package path, skipping " + pkgPath); + return; + } + String fullPkgName = pkgPath.replace('/', '.'); + String resourceName = resPath.substring(pathEnd + 1); // Intermediate packages are marked "empty" (no resources). This might // later be merged with a non-empty link for the same package. ModuleLink emptyLink = ModuleLink.forEmptyPackage(modName, isPreviewPath); diff --git a/test/benchmarks/micros-javac/src/main/java/org/openjdk/bench/langtools/javac/JavacBenchmark.java b/test/benchmarks/micros-javac/src/main/java/org/openjdk/bench/langtools/javac/JavacBenchmark.java index 565ea4038c7..a223e9d2b2c 100644 --- a/test/benchmarks/micros-javac/src/main/java/org/openjdk/bench/langtools/javac/JavacBenchmark.java +++ b/test/benchmarks/micros-javac/src/main/java/org/openjdk/bench/langtools/javac/JavacBenchmark.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -94,7 +94,7 @@ public class JavacBenchmark { try (ZipInputStream zis = new ZipInputStream(new BufferedInputStream(JavacBenchmark.class.getResourceAsStream("/src.zip")))) { for (ZipEntry entry; (entry = zis.getNextEntry()) != null;) { final String ename = entry.getName(); - if (!ename.startsWith("java.desktop") && !ename.startsWith("jdk.internal.vm.compiler") && !ename.startsWith("jdk.aot") && !ename.startsWith("jdk.accessibility") && !ename.startsWith("jdk.jsobject")) { + if (!ename.startsWith("java.desktop") && !ename.startsWith("jdk.internal.vm.compiler") && !ename.startsWith("jdk.aot") && !ename.startsWith("jdk.accessibility") && !ename.startsWith("jdk.jsobject") && !ename.startsWith("jdk.unsupported.desktop")) { if (!entry.isDirectory() && ename.endsWith(".java")) { Path dst = root.resolve(ename); Files.createDirectories(dst.getParent()); diff --git a/test/hotspot/gtest/gc/g1/test_g1IHOPControl.cpp b/test/hotspot/gtest/gc/g1/test_g1IHOPControl.cpp index 0ee0889b6e5..c908cb021b3 100644 --- a/test/hotspot/gtest/gc/g1/test_g1IHOPControl.cpp +++ b/test/hotspot/gtest/gc/g1/test_g1IHOPControl.cpp @@ -21,227 +21,804 @@ * questions. */ -#include "gc/g1/g1CollectedHeap.inline.hpp" + #include "gc/g1/g1CollectedHeap.inline.hpp" +#include "gc/g1/g1ConcurrentCycleTracker.hpp" #include "gc/g1/g1IHOPControl.hpp" #include "gc/g1/g1OldGenAllocationTracker.hpp" #include "gc/g1/g1Predictions.hpp" #include "unittest.hpp" -static void test_update_allocation_tracker(G1OldGenAllocationTracker* alloc_tracker, - size_t alloc_amount) { - alloc_tracker->add_allocated_bytes_since_last_gc(alloc_amount); - alloc_tracker->reset_after_gc((size_t)0); -} +struct GCPauseData { + double _gc_start_time_s = 0; + double _gc_pause_duration_s = 0; + size_t _desired_young_bytes = 0; + size_t _non_hum_alloc_bytes = 0; + size_t _hum_alloc_bytes = 0; + size_t _total_hum_after_gc_bytes = 0; + size_t _gc_trigger_hum_bytes = 0; -static void test_update(G1IHOPControl* ctrl, - G1OldGenAllocationTracker* alloc_tracker, - double alloc_time, size_t alloc_amount, - size_t young_size, double mark_time) { - test_update_allocation_tracker(alloc_tracker, alloc_amount); - for (int i = 0; i < 100; i++) { - ctrl->update_allocation_info(alloc_time, young_size); - ctrl->add_marking_start_to_mixed_length(mark_time); + GCPauseData(double gc_start_time_s, + double gc_pause_duration_s, + size_t desired_young_bytes, + size_t non_hum_alloc_bytes, + size_t hum_alloc_bytes, + size_t total_hum_after_gc_bytes, + size_t gc_trigger_hum_bytes = 0) + : _gc_start_time_s(gc_start_time_s), + _gc_pause_duration_s(gc_pause_duration_s), + _desired_young_bytes(desired_young_bytes), + _non_hum_alloc_bytes(non_hum_alloc_bytes), + _hum_alloc_bytes(hum_alloc_bytes), + _total_hum_after_gc_bytes(total_hum_after_gc_bytes), + _gc_trigger_hum_bytes(gc_trigger_hum_bytes) {} +}; + +class G1IHOPTestController { + G1ConcurrentCycleTracker _conc_cycle_tracker; + G1OldGenAllocationTracker _alloc_tracker; + G1Predictions _pred; + G1IHOPControl _ihop_control; + + public: + G1IHOPTestController(bool adaptive, size_t ihop, size_t target_occupancy) + : _conc_cycle_tracker(), + _alloc_tracker(), + _pred(0.50), + _ihop_control(ihop, adaptive, &_pred, 0 /* heap_reserve_percent */, 0 /* heap_waste_percent */) + { + _ihop_control.update_target_occupancy(target_occupancy); + } + + void end_mutator_phase(GCPauseData pause_data, G1CollectorState::Pause pause_type) { + + _alloc_tracker.add_allocated_non_humongous_bytes(pause_data._non_hum_alloc_bytes); + _alloc_tracker.add_allocated_humongous_bytes(pause_data._hum_alloc_bytes); + + G1AllocationIntervalStats interval_stats = + _alloc_tracker.end_allocation_interval(pause_data._total_hum_after_gc_bytes); + + if (pause_data._gc_trigger_hum_bytes > 0) { + // Mirror G1Policy::record_pause() and the successful allocation tracking + interval_stats.record_humongous_allocation(pause_data._gc_trigger_hum_bytes); + _alloc_tracker.record_collection_pause_humongous_allocation(pause_data._gc_trigger_hum_bytes); + } + + _conc_cycle_tracker.record_allocation_interval(pause_type, + false /* is_periodic_gc */, + pause_data._gc_start_time_s, + pause_data._gc_start_time_s + pause_data._gc_pause_duration_s, + interval_stats); + + if (pause_type != G1CollectorState::Pause::Mixed && + pause_type != G1CollectorState::Pause::Full) { + _ihop_control.record_expected_young_gen_size(pause_data._desired_young_bytes); + } + } + + void mutator_phase_end_with_conc_start(GCPauseData pause_data) { + end_mutator_phase(pause_data, G1CollectorState::Pause::ConcurrentStartFull); + } + + void mutator_phase_end_with_normal_gc(GCPauseData pause_data) { + end_mutator_phase(pause_data, G1CollectorState::Pause::Normal); + } + + void mutator_phase_end_with_mixed_gc(GCPauseData pause_data) { + + end_mutator_phase(pause_data, G1CollectorState::Pause::Mixed); + + G1ConcurrentCycleStats cycle_stats = _conc_cycle_tracker.get_and_reset_cycle_stats(); + + _ihop_control.record_concurrent_cycle(cycle_stats._cycle_duration_s, + cycle_stats._non_humongous_allocated_bytes, + cycle_stats._peak_extra_humongous_occupancy_bytes); + } + + size_t old_gen_threshold_for_conc_mark_start() { + return _ihop_control.old_gen_threshold_for_conc_mark_start(); + } + + size_t non_humongous_allocated_bytes() { + return _conc_cycle_tracker.non_humongous_allocated_bytes(); + } + + size_t peak_extra_humongous_occupancy_bytes() { + return _conc_cycle_tracker.peak_extra_humongous_occupancy_bytes(); + } +}; + +static void add_multiple_samples(G1IHOPTestController* ctrl, + double mutator_duration_s, + double gc_pause_duration_s, + size_t young_reserve_bytes, + size_t non_hum_bytes, + size_t hum_alloc_bytes, + size_t num_samples) { + double gc_start_time_s = mutator_duration_s; + + for (size_t i = 0; i < num_samples; i++) { + ctrl->mutator_phase_end_with_conc_start({ + gc_start_time_s, + gc_pause_duration_s, + young_reserve_bytes, + non_hum_bytes, + hum_alloc_bytes, + hum_alloc_bytes /* _total_hum_after_gc_bytes */ + }); + + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + + ctrl->mutator_phase_end_with_normal_gc({ + gc_start_time_s, + gc_pause_duration_s, + young_reserve_bytes, + non_hum_bytes, + hum_alloc_bytes, + hum_alloc_bytes /* _total_hum_after_gc_bytes */ + }); + + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + + ctrl->mutator_phase_end_with_mixed_gc({ + gc_start_time_s, + gc_pause_duration_s, + young_reserve_bytes, + non_hum_bytes, + hum_alloc_bytes, + hum_alloc_bytes /* _total_hum_after_gc_bytes */ + }); + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); } } -static void test_update_humongous(G1IHOPControl* ctrl, - G1OldGenAllocationTracker* alloc_tracker, - double alloc_time, - size_t alloc_amount_non_hum, - size_t alloc_amount_hum, - size_t humongous_bytes_after_last_gc, - size_t young_size, - double mark_time) { - alloc_tracker->add_allocated_bytes_since_last_gc(alloc_amount_non_hum); - alloc_tracker->add_allocated_humongous_bytes_since_last_gc(alloc_amount_hum); - alloc_tracker->reset_after_gc(humongous_bytes_after_last_gc); - for (int i = 0; i < 100; i++) { - ctrl->update_allocation_info(alloc_time, young_size); - ctrl->add_marking_start_to_mixed_length(mark_time); - } +static size_t old_gen_threshold(size_t target_occupancy_bytes, + size_t young_reserve_bytes, + size_t non_hum_alloc_rate, + size_t peak_extra_hum, + double cycle_duration_s) { + size_t needed_during_cycle = young_reserve_bytes + non_hum_alloc_rate * cycle_duration_s + peak_extra_hum; + return needed_during_cycle < target_occupancy_bytes ? + target_occupancy_bytes - needed_during_cycle : 0; } -// @requires UseG1GC -TEST_VM(G1IHOPControl, static_simple) { - // Test requires G1 - if (!UseG1GC) { - return; - } - const bool is_adaptive = false; - const size_t initial_ihop = 45; - - G1OldGenAllocationTracker alloc_tracker; - G1IHOPControl ctrl(initial_ihop, &alloc_tracker, is_adaptive, nullptr, 0, 0); - ctrl.update_target_occupancy(100); - - size_t threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - EXPECT_EQ(initial_ihop, threshold); - - test_update_allocation_tracker(&alloc_tracker, 100); - ctrl.update_allocation_info(100.0, 100); - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - EXPECT_EQ(initial_ihop, threshold); - - ctrl.add_marking_start_to_mixed_length(1000.0); - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - EXPECT_EQ(initial_ihop, threshold); - - // Whatever we pass, the IHOP value must stay the same. - test_update(&ctrl, &alloc_tracker, 2, 10, 10, 3); - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - - EXPECT_EQ(initial_ihop, threshold); - - test_update(&ctrl, &alloc_tracker, 12, 10, 10, 3); - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - - EXPECT_EQ(initial_ihop, threshold); -} - -// @requires UseG1GC -TEST_VM(G1IHOPControl, adaptive_simple) { +TEST_VM(G1IHOPControl, allocation_tracker_incr) { // Test requires G1 if (!UseG1GC) { return; } - const bool is_adaptive = true; - const size_t initial_threshold = 45; - const size_t young_size = 10; - const size_t target_size = 100; + size_t initial_ihop = InitiatingHeapOccupancyPercent; + G1IHOPTestController ctrl(false /* adaptive */, initial_ihop, 100 /* target_occupancy */); + double const time_step_s = 1.0; + double gc_start_time_s = time_step_s; + double gc_pause_duration_s = 1.0; + ctrl.mutator_phase_end_with_conc_start({ + gc_start_time_s, + gc_pause_duration_s, + 10 /* _desired_young_bytes */, + 0 /* _non_hum_alloc_bytes */, + 0 /* _hum_alloc_bytes */, + 0 /* _total_hum_after_gc_bytes */ + }); - // The final IHOP value is always - // target_size - (young_size + alloc_amount/alloc_time * marking_time) + gc_start_time_s += (gc_pause_duration_s + time_step_s); - G1OldGenAllocationTracker alloc_tracker; - G1Predictions pred(0.95); - G1IHOPControl ctrl(initial_threshold, &alloc_tracker, is_adaptive, &pred, 0, 0); - ctrl.update_target_occupancy(target_size); + ctrl.mutator_phase_end_with_normal_gc({ + gc_start_time_s, + gc_pause_duration_s, + 10 /* _desired_young_bytes */, + 20 /* _non_hum_alloc_bytes */, + 30 /* _hum_alloc_bytes */, + 25 /* _total_hum_after_gc_bytes */ + }); - // First "load". - const size_t alloc_time1 = 2; - const size_t alloc_amount1 = 10; - const size_t marking_time1 = 2; - const size_t settled_ihop1 = target_size - - (young_size + alloc_amount1 / alloc_time1 * marking_time1); + EXPECT_EQ(20u, ctrl.non_humongous_allocated_bytes()); + EXPECT_EQ(30u, ctrl.peak_extra_humongous_occupancy_bytes()); - size_t threshold; - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); + gc_start_time_s += (gc_pause_duration_s + time_step_s); + ctrl.mutator_phase_end_with_normal_gc({ + gc_start_time_s, + gc_pause_duration_s, + 10 /* _desired_young_bytes */, + 5 /* _non_hum_alloc_bytes */, + 10 /* _hum_alloc_bytes */, + 10 /* _total_hum_after_gc_bytes */ + }); - EXPECT_EQ(initial_threshold, threshold); - - for (size_t i = 0; i < G1AdaptiveIHOPNumInitialSamples - 1; i++) { - test_update_allocation_tracker(&alloc_tracker, alloc_amount1); - ctrl.update_allocation_info(alloc_time1, young_size); - ctrl.add_marking_start_to_mixed_length(marking_time1); - // Not enough data yet. - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - - ASSERT_EQ(initial_threshold, threshold) << "on step " << i; - } - - test_update(&ctrl, &alloc_tracker, alloc_time1, alloc_amount1, young_size, marking_time1); - - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - - EXPECT_EQ(settled_ihop1, threshold); - - // Second "load". A bit higher allocation rate. - const size_t alloc_time2 = 2; - const size_t alloc_amount2 = 30; - const size_t marking_time2 = 2; - const size_t settled_ihop2 = target_size - - (young_size + alloc_amount2 / alloc_time2 * marking_time2); - - test_update(&ctrl, &alloc_tracker, alloc_time2, alloc_amount2, young_size, marking_time2); - - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - - EXPECT_LT(threshold, settled_ihop1); - - // Third "load". Very high (impossible) allocation rate. - const size_t alloc_time3 = 1; - const size_t alloc_amount3 = 50; - const size_t marking_time3 = 2; - const size_t settled_ihop3 = 0; - - test_update(&ctrl, &alloc_tracker, alloc_time3, alloc_amount3, young_size, marking_time3); - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - - EXPECT_EQ(settled_ihop3, threshold); - - // And back to some arbitrary value. - test_update(&ctrl, &alloc_tracker, alloc_time2, alloc_amount2, young_size, marking_time2); - - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - - EXPECT_GT(threshold, settled_ihop3); + // Peak Humongous should be: + // hum_after_gc (from previous gc) + _hum_alloc_bytes + EXPECT_EQ(25u, ctrl.non_humongous_allocated_bytes()); + EXPECT_EQ(35u, ctrl.peak_extra_humongous_occupancy_bytes()); } -TEST_VM(G1IHOPControl, adaptive_humongous) { +TEST_VM(G1IHOPControl, non_adaptive_ihop) { // Test requires G1 if (!UseG1GC) { return; } - const bool is_adaptive = true; - const size_t initial_threshold = 45; - const size_t young_size = 10; - const size_t target_size = 100; - const double duration = 10.0; - const size_t marking_time = 2; + size_t initial_ihop = InitiatingHeapOccupancyPercent; - G1OldGenAllocationTracker alloc_tracker; - G1Predictions pred(0.95); - G1IHOPControl ctrl(initial_threshold, &alloc_tracker, is_adaptive, &pred, 0, 0); - ctrl.update_target_occupancy(target_size); + G1IHOPTestController ctrl(false /* adaptive */, initial_ihop, 100 /* target_occupancy */); - size_t old_bytes = 100; - size_t humongous_bytes = 200; - size_t humongous_bytes_after_gc = 150; - size_t humongous_bytes_after_last_gc = 50; - // Load 1 - test_update_humongous(&ctrl, &alloc_tracker, duration, 0, humongous_bytes, - humongous_bytes_after_last_gc, young_size, marking_time); - // Test threshold - size_t threshold; - threshold = ctrl.old_gen_threshold_for_conc_mark_start(); - // Adjusted allocated bytes: - // Total bytes: humongous_bytes - // Freed hum bytes: humongous_bytes - humongous_bytes_after_last_gc - double alloc_rate = humongous_bytes_after_last_gc / duration; - size_t target_threshold = target_size - (size_t)(young_size + alloc_rate * marking_time); + add_multiple_samples(&ctrl, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 20 /* non_hum_bytes */, + 0 /* hum_alloc_bytes */, + 100 /* num_samples */); - EXPECT_EQ(threshold, target_threshold); - - // Load 2 - G1IHOPControl ctrl2(initial_threshold, &alloc_tracker, is_adaptive, &pred, 0, 0); - ctrl2.update_target_occupancy(target_size); - test_update_humongous(&ctrl2, &alloc_tracker, duration, old_bytes, humongous_bytes, - humongous_bytes_after_gc, young_size, marking_time); - threshold = ctrl2.old_gen_threshold_for_conc_mark_start(); - // Adjusted allocated bytes: - // Total bytes: old_bytes + humongous_bytes - // Freed hum bytes: humongous_bytes - (humongous_bytes_after_gc - humongous_bytes_after_last_gc) - alloc_rate = (old_bytes + (humongous_bytes_after_gc - humongous_bytes_after_last_gc)) / duration; - target_threshold = target_size - (size_t)(young_size + alloc_rate * marking_time); - - EXPECT_EQ(threshold, target_threshold); - - // Load 3 - humongous_bytes_after_last_gc = humongous_bytes_after_gc; - humongous_bytes_after_gc = 50; - G1IHOPControl ctrl3(initial_threshold, &alloc_tracker, is_adaptive, &pred, 0, 0); - ctrl3.update_target_occupancy(target_size); - test_update_humongous(&ctrl3, &alloc_tracker, duration, old_bytes, humongous_bytes, - humongous_bytes_after_gc, young_size, marking_time); - threshold = ctrl3.old_gen_threshold_for_conc_mark_start(); - // Adjusted allocated bytes: - // All humongous are cleaned up since humongous_bytes_after_gc < humongous_bytes_after_last_gc - // Total bytes: old_bytes + humongous_bytes - // Freed hum bytes: humongous_bytes - alloc_rate = old_bytes / duration; - target_threshold = target_size - (size_t)(young_size + alloc_rate * marking_time); - - EXPECT_EQ(threshold, target_threshold); + EXPECT_EQ(initial_ihop, ctrl.old_gen_threshold_for_conc_mark_start()); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_not_enough_samples) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + + G1IHOPTestController ctrl(true /* adaptive */, initial_ihop, 100 /* target_occupancy */); + + add_multiple_samples(&ctrl, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 20 /* non_hum_bytes */, + 0 /* hum_alloc_bytes */, + G1AdaptiveIHOPNumInitialSamples - 1 /* num_samples */); + + EXPECT_EQ(initial_ihop, ctrl.old_gen_threshold_for_conc_mark_start()); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_non_humongous_only) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + // G1Predictions require 5 or more samples to skip special considerations for + // small samples. + size_t num_samples = 5; + + G1IHOPTestController ctrl(true /* adaptive */, initial_ihop, 100 /* target_occupancy */); + + // We run 2 allocation intervals for each concurrent cycle + double total_cycle_duration_s = 2; + add_multiple_samples(&ctrl, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 20 /* non_hum_bytes */, + 0 /* hum_alloc_bytes */, + num_samples); + + size_t expected_threshold = old_gen_threshold(100 /* target_occupancy */, + 10 /* young_reserve */, + 20 /* non_hum_alloc_rate */, + 0 /* peak_extra_hum */, + total_cycle_duration_s); + + EXPECT_EQ(expected_threshold, ctrl.old_gen_threshold_for_conc_mark_start()); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_peak_humongous_only) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + // G1Predictions require 5 or more samples to skip special considerations for + // small samples. + size_t num_samples = 5; + + G1IHOPTestController ctrl(true /* adaptive */, initial_ihop, 100 /* target_occupancy */); + + add_multiple_samples(&ctrl, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 0 /* non_hum_bytes */, + 30 /* hum_alloc_bytes */, + num_samples); + + double total_cycle_duration_s = 2; + size_t expected_threshold = old_gen_threshold(100 /* target_occupancy_bytes */, + 10 /* young_reserve_bytes */, + 0 /* non_hum_alloc_rate */, + 30 /* peak_extra_hum */, + total_cycle_duration_s); + + EXPECT_EQ(expected_threshold, ctrl.old_gen_threshold_for_conc_mark_start()); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_combined) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + // G1Predictions require 5 or more samples to skip special considerations for + // small samples. + size_t num_samples = 5; + + G1IHOPTestController ctrl(true /* adaptive */, initial_ihop, 100 /* target_occupancy */); + + add_multiple_samples(&ctrl, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 20 /* non_hum_bytes */, + 30 /* hum_alloc_bytes */, + num_samples); + + double total_cycle_duration_s = 2; + size_t expected_threshold = old_gen_threshold(100 /* target_occupancy */, + 10 /* young_reserve */, + 20 /* non_hum_alloc_rate */, + 30 /* peak_extra_hum */, + total_cycle_duration_s); + + EXPECT_EQ(expected_threshold, ctrl.old_gen_threshold_for_conc_mark_start()); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_high_alloc_pressure) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + // G1Predictions require 5 or more samples to skip special considerations for + // small samples. + size_t num_samples = 5; + + G1IHOPTestController ctrl(true /* adaptive */, initial_ihop, 100 /* target_occupancy */); + + add_multiple_samples(&ctrl, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 70 /* non_hum_bytes */, + 35 /* hum_alloc_bytes */, + num_samples); + + size_t expected_threshold = 0; + + EXPECT_EQ(expected_threshold, ctrl.old_gen_threshold_for_conc_mark_start()); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_young_reserve) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + // G1Predictions require 5 or more samples to skip special considerations for + // small samples. + size_t num_samples = 5; + + G1IHOPTestController ctrl_small(true /* adaptive */, initial_ihop, 100 /* target_occupancy */); + + add_multiple_samples(&ctrl_small, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 20 /* non_hum_bytes */, + 30 /* hum_alloc_bytes */, + num_samples); + + double total_cycle_duration_s = 2; + size_t expected_small_young = old_gen_threshold(100 /* target_occupancy */, + 10 /* young_reserve */, + 20 /* non_hum_alloc_rate */, + 30 /* peak_extra_hum */, + total_cycle_duration_s); + + G1IHOPTestController ctrl_large(true /* adaptive */, initial_ihop, 100 /* target_occupancy */); + + add_multiple_samples(&ctrl_large, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 25 /* young_reserve */, + 20 /* non_hum_bytes */, + 30 /* hum_alloc_bytes */, + num_samples); + + size_t expected_large_young = old_gen_threshold(100 /* target_occupancy */, + 25 /* young_reserve */, + 20 /* non_hum_alloc_rate */, + 30 /* peak_extra_hum */, + total_cycle_duration_s); + + EXPECT_EQ(expected_small_young, ctrl_small.old_gen_threshold_for_conc_mark_start()); + EXPECT_EQ(expected_large_young, ctrl_large.old_gen_threshold_for_conc_mark_start()); + + EXPECT_LT(expected_large_young, expected_small_young); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_recovers_after_spike) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + // G1Predictions require 5 or more samples to skip special considerations for + // small samples. + + G1IHOPTestController ctrl(true /* adaptive */, initial_ihop, 100 /* target_occupancy */); + + add_multiple_samples(&ctrl, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 20 /* non_hum_bytes */, + 10 /* hum_alloc_bytes */, + 20 /* num_samples */); + + size_t before_spike = ctrl.old_gen_threshold_for_conc_mark_start(); + + add_multiple_samples(&ctrl, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 40 /* non_hum_bytes */, + 30 /* hum_alloc_bytes */, + 5 /* num_samples */); + + size_t during_spike = ctrl.old_gen_threshold_for_conc_mark_start(); + + add_multiple_samples(&ctrl, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 20 /* non_hum_bytes */, + 5 /* hum_alloc_bytes */, + 20 /* num_samples */); + + size_t after_recovery = ctrl.old_gen_threshold_for_conc_mark_start(); + + EXPECT_LT(during_spike, before_spike); + EXPECT_GT(after_recovery, during_spike); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_reuse_eagerly_reclaimed) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + + size_t target_occupancy = 100; + size_t young_reserve = 10; + + G1IHOPTestController ctrl(true /* adaptive */, initial_ihop, target_occupancy); + + double mutator_duration_s = 1.0; + double gc_pause_duration_s = 1.0; + double gc_start_time_s = mutator_duration_s; + size_t h_t0 = 100; + ctrl.mutator_phase_end_with_conc_start({ + gc_start_time_s, + gc_pause_duration_s, + 10 /* young_reserve_bytes */, + 10 /* non_hum_bytes */, + h_t0 /* hum_alloc_bytes */, + h_t0 /* total_hum_after_gc_bytes */ + }); + + // First mutator phase: + // No new humongous allocations in this phase. + // h_t1 < h_t0 (eager reclaim) + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + size_t h_t1 = 60; + ctrl.mutator_phase_end_with_normal_gc({ + gc_start_time_s, + gc_pause_duration_s, + 10 /* young_reserve_bytes */, + 0 /* non_hum_bytes */, + 0 /* hum_alloc_bytes */, + h_t1 /* total_hum_after_gc_bytes */ + }); + + EXPECT_EQ(0ul, ctrl.peak_extra_humongous_occupancy_bytes()); + + // Second mutator phase: + size_t hum_alloc_bytes = 50; + size_t h_t2 = 60; + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + ctrl.mutator_phase_end_with_normal_gc({ + gc_start_time_s, + gc_pause_duration_s, + 10 /* young_reserve_bytes */, + 0 /* non_hum_bytes */, + hum_alloc_bytes, + h_t2 /* total_hum_after_gc_bytes */ + }); + // Expected: + // delta_after_previous_gc = 60 - 100 = -40 + // delta_before_this_gc = -40 + 50 = 10 + // peak extra humongous occupancy = 10 + EXPECT_EQ(10ul, ctrl.peak_extra_humongous_occupancy_bytes()); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_eager_reclaim_reduces_extra_humongous_occupancy) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + // G1Predictions require 5 or more samples to skip special considerations for + // small samples. + size_t num_samples = 5; + + size_t target_occupancy = 100; + size_t young_reserve = 10; + double mutator_duration_s = 1.0; + double gc_pause_duration_s = 1.0; + double gc_start_time_s = mutator_duration_s; + + G1IHOPTestController ctrl(true /* adaptive */, initial_ihop, target_occupancy); + + for (size_t i = 0; i < num_samples; i++) { + size_t h_t0 = 100; + ctrl.mutator_phase_end_with_conc_start({ + gc_start_time_s, + gc_pause_duration_s, + young_reserve, + 10 /* non_hum_bytes */, + h_t0 /* hum_alloc_bytes */, + h_t0 /* total_hum_after_gc_bytes */ + }); + + // First mutator phase: + // No new humongous allocations in this phase. + // h_t1 < h_t0 (eager reclaim) + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + size_t h_t1 = 60; + ctrl.mutator_phase_end_with_normal_gc({ + gc_start_time_s, + gc_pause_duration_s, + young_reserve, + 20 /* non_hum_bytes */, + 0 /* hum_alloc_bytes */, + h_t1 /* total_hum_after_gc_bytes */ + }); + + EXPECT_EQ(0ul, ctrl.peak_extra_humongous_occupancy_bytes()); + + // Second mutator phase: + size_t hum_alloc_bytes = 50; + size_t h_t2 = 60; + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + ctrl.mutator_phase_end_with_mixed_gc({ + gc_start_time_s, + gc_pause_duration_s, + 10 /* young_reserve_bytes */, + 0 /* non_hum_bytes */, + hum_alloc_bytes, + h_t2 /* total_hum_after_gc_bytes */ + }); + + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + } + + // Expected: + // predicted_needed = young_reserve + non_hum_bytes + peak_extra_humongous_occupancy + // = 10 + 20 + 10 + // threshold = target - predicted_needed + // = 100 - 40 + EXPECT_EQ(60ul, ctrl.old_gen_threshold_for_conc_mark_start()); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_cycle_duration) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + // G1Predictions require 5 or more samples to skip special considerations for + // small samples. + size_t num_samples = 5; + + G1IHOPTestController ctrl_a(true /* adaptive */, initial_ihop, 100 /* target_occupancy */); + G1IHOPTestController ctrl_b(true /* adaptive */, initial_ihop, 100 /* target_occupancy */); + + add_multiple_samples(&ctrl_a, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 40 /* non_hum_bytes */, + 30 /* hum_bytes */, + num_samples); + + add_multiple_samples(&ctrl_b, + 1.0 /* mutator_duration_s */, + 2.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 40 /* non_hum_bytes */, + 30 /* hum_bytes */, + num_samples); + + EXPECT_EQ(ctrl_a.old_gen_threshold_for_conc_mark_start(), + ctrl_b.old_gen_threshold_for_conc_mark_start()); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_cycle_duration_scales) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + // G1Predictions require 5 or more samples to skip special considerations for + // small samples. + size_t num_samples = 5; + size_t target_occupancy = 200; + + G1IHOPTestController ctrl_short(true /* adaptive */, initial_ihop, target_occupancy); + G1IHOPTestController ctrl_long(true /* adaptive */, initial_ihop, target_occupancy); + + double mutator_duration_s = 1.0; + double short_cycle_duration_s = mutator_duration_s * 2; + add_multiple_samples(&ctrl_short, + 1.0 /* mutator_duration_s */, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 40 /* non_hum_bytes */, + 30 /* hum_bytes */, + num_samples); + + double long_mutator_duration_s = 4.0; + double long_cycle_duration_s = long_mutator_duration_s * 2; + add_multiple_samples(&ctrl_long, + long_mutator_duration_s, + 1.0 /* gc_pause_duration_s */, + 10 /* young_reserve */, + 80 /* non_hum_bytes */, + 30 /* hum_bytes */, + num_samples); + + size_t expected_short = old_gen_threshold(200 /* target_occupancy */, + 10 /* young_reserve */, + 40 /* non_hum_alloc_rate */, + 30 /* peak_extra_hum */, + short_cycle_duration_s); + + size_t expected_long = old_gen_threshold(200 /* target_occupancy */, + 10 /* young_reserve */, + (80 / long_mutator_duration_s) /* non_hum_alloc_rate */, + 30 /* peak_extra_hum */, + long_cycle_duration_s); + + EXPECT_EQ(ctrl_short.old_gen_threshold_for_conc_mark_start(), expected_short); + + EXPECT_EQ(ctrl_long.old_gen_threshold_for_conc_mark_start(), expected_long); + + EXPECT_LT(ctrl_long.old_gen_threshold_for_conc_mark_start(), + ctrl_short.old_gen_threshold_for_conc_mark_start()); +} + +TEST_VM(G1IHOPControl, adaptive_ihop_gc_humongous_allocation) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + // G1Predictions require 5 or more samples to skip special considerations for + // small samples. + size_t num_samples = 5; + + size_t target_occupancy_bytes = 100; + size_t young_reserve_bytes = 10; + size_t trigger_hum_bytes = 30; + + double mutator_duration_s = 1.0; + double gc_pause_duration_s = 1.0; + double gc_start_time_s = mutator_duration_s; + + G1IHOPTestController ctrl(true /* adaptive */, initial_ihop, target_occupancy_bytes); + + for (size_t i = 0; i < num_samples; i++) { + ctrl.mutator_phase_end_with_conc_start({ + gc_start_time_s, + gc_pause_duration_s, + young_reserve_bytes, + 10 /* non_hum_bytes */, + 0 /* hum_alloc_bytes */, + 0 /* total_hum_after_gc_bytes */ + }); + + // First mutator phase: + // No new humongous allocations in this phase. + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + ctrl.mutator_phase_end_with_normal_gc({ + gc_start_time_s, + gc_pause_duration_s, + young_reserve_bytes, + 20 /* non_hum_bytes */, + 0 /* hum_alloc_bytes */, + 0 /* total_hum_after_gc_bytes */, + trigger_hum_bytes + }); + + EXPECT_EQ(trigger_hum_bytes, ctrl.peak_extra_humongous_occupancy_bytes()); + + // Second mutator phase: + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + ctrl.mutator_phase_end_with_mixed_gc({ + gc_start_time_s, + gc_pause_duration_s, + 10 /* young_reserve_bytes */, + 10 /* non_hum_bytes */, + 0, /* hum_alloc_bytes */ + trigger_hum_bytes /* total_hum_after_gc_bytes */ + }); + + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + } + + // Expected: + // predicted_needed = young_reserve + non_hum_bytes + peak_extra_humongous_occupancy + // = 10 + 30 + 30 + // threshold = target - predicted_needed + // = 100 - 70 + EXPECT_EQ(30ul, ctrl.old_gen_threshold_for_conc_mark_start()); +} + +// Models humongous allocation that triggers a concurrent cycle. Make sure that this +// allocation is not counted against the peak extra humongous occupancy because +// conceptually it is considered as already allocated during concurrent cycle start. +TEST_VM(G1IHOPControl, adaptive_ihop_humongous_allocation_causes_conc_start) { + // Test requires G1 + if (!UseG1GC) { + return; + } + + size_t initial_ihop = InitiatingHeapOccupancyPercent; + + size_t target_occupancy = 100; + + G1IHOPTestController ctrl(true /* adaptive */, initial_ihop, target_occupancy); + + double mutator_duration_s = 1.0; + double gc_pause_duration_s = 1.0; + double gc_start_time_s = mutator_duration_s; + size_t h_t0 = 100; + ctrl.mutator_phase_end_with_conc_start({ + gc_start_time_s, + gc_pause_duration_s, + 10 /* young_reserve_bytes */, + 10 /* non_hum_bytes */, + 0 /* hum_alloc_bytes */, + 0 /* total_hum_after_gc_bytes */, + h_t0 /* gc_trigger_hum_bytes */ + }); + + // No new humongous allocations in this phase. + // h_t1 == h_t0 (no humongous allocation, no eager reclaim, keep the same) + size_t h_t1 = h_t0; + gc_start_time_s += (gc_pause_duration_s + mutator_duration_s); + + ctrl.mutator_phase_end_with_normal_gc({ + gc_start_time_s, + gc_pause_duration_s, + 10 /* young_reserve_bytes */, + 0 /* non_hum_bytes */, + 0 /* hum_alloc_bytes */, + h_t1 /* total_hum_after_gc_bytes */ + }); + + EXPECT_EQ(0ul, ctrl.peak_extra_humongous_occupancy_bytes()); } diff --git a/test/hotspot/gtest/runtime/test_committed_virtualmemory.cpp b/test/hotspot/gtest/runtime/test_committed_virtualmemory.cpp index 8cf62fb9ea5..5d475d2f955 100644 --- a/test/hotspot/gtest/runtime/test_committed_virtualmemory.cpp +++ b/test/hotspot/gtest/runtime/test_committed_virtualmemory.cpp @@ -169,8 +169,8 @@ public: static void test_partial_region() { bool result; - size_t committed_size; - address committed_start; + size_t resident_size; + address resident_start; size_t index; const size_t page_sz = os::vm_page_size(); @@ -187,36 +187,36 @@ public: } // Test whole range - result = os::committed_in_range((address)base, size, committed_start, committed_size); + result = os::first_resident_in_range((address)base, size, resident_start, resident_size); ASSERT_TRUE(result); - ASSERT_EQ(num_pages * page_sz, committed_size); - ASSERT_EQ(committed_start, (address)base); + ASSERT_EQ(num_pages * page_sz, resident_size); + ASSERT_EQ(resident_start, (address)base); // Test beginning of the range - result = os::committed_in_range((address)base, 2 * page_sz, committed_start, committed_size); + result = os::first_resident_in_range((address)base, 2 * page_sz, resident_start, resident_size); ASSERT_TRUE(result); - ASSERT_EQ(2 * page_sz, committed_size); - ASSERT_EQ(committed_start, (address)base); + ASSERT_EQ(2 * page_sz, resident_size); + ASSERT_EQ(resident_start, (address)base); // Test end of the range - result = os::committed_in_range((address)(base + page_sz), 3 * page_sz, committed_start, committed_size); + result = os::first_resident_in_range((address)(base + page_sz), 3 * page_sz, resident_start, resident_size); ASSERT_TRUE(result); - ASSERT_EQ(3 * page_sz, committed_size); - ASSERT_EQ(committed_start, (address)(base + page_sz)); + ASSERT_EQ(3 * page_sz, resident_size); + ASSERT_EQ(resident_start, (address)(base + page_sz)); // Test middle of the range - result = os::committed_in_range((address)(base + page_sz), 2 * page_sz, committed_start, committed_size); + result = os::first_resident_in_range((address)(base + page_sz), 2 * page_sz, resident_start, resident_size); ASSERT_TRUE(result); - ASSERT_EQ(2 * page_sz, committed_size); - ASSERT_EQ(committed_start, (address)(base + page_sz)); + ASSERT_EQ(2 * page_sz, resident_size); + ASSERT_EQ(resident_start, (address)(base + page_sz)); os::release_memory(base, size); } - static void test_committed_in_range(size_t num_pages, size_t pages_to_touch) { + static void test_first_resident_in_range(size_t num_pages, size_t pages_to_touch) { bool result; - size_t committed_size; - address committed_start; + size_t resident_size; + address resident_start; size_t index; const size_t page_sz = os::vm_page_size(); @@ -228,7 +228,7 @@ public: result = os::commit_memory(base, size, !ExecMem); ASSERT_TRUE(result); - result = os::committed_in_range((address)base, size, committed_start, committed_size); + result = os::first_resident_in_range((address)base, size, resident_start, resident_size); ASSERT_FALSE(result); // Touch pages @@ -236,14 +236,14 @@ public: base[index * page_sz] = 'a'; } - result = os::committed_in_range((address)base, size, committed_start, committed_size); + result = os::first_resident_in_range((address)base, size, resident_start, resident_size); ASSERT_TRUE(result); - ASSERT_EQ(pages_to_touch * page_sz, committed_size); - ASSERT_EQ(committed_start, (address)base); + ASSERT_EQ(pages_to_touch * page_sz, resident_size); + ASSERT_EQ(resident_start, (address)base); os::uncommit_memory(base, size, false); - result = os::committed_in_range((address)base, size, committed_start, committed_size); + result = os::first_resident_in_range((address)base, size, resident_start, resident_size); ASSERT_FALSE(result); os::release_memory(base, size); @@ -266,9 +266,9 @@ TEST_VM(NMTCommittedVirtualMemoryTracker, test_committed_virtualmemory_region) { } -#if !defined(_WINDOWS) && !defined(_AIX) -TEST_VM(NMTCommittedVirtualMemory, test_committed_in_range){ - CommittedVirtualMemoryTest::test_committed_in_range(1024, 1024); - CommittedVirtualMemoryTest::test_committed_in_range(2, 1); +#if !defined(_AIX) +TEST_VM(NMTCommittedVirtualMemory, test_first_resident_in_range){ + CommittedVirtualMemoryTest::test_first_resident_in_range(1024, 1024); + CommittedVirtualMemoryTest::test_first_resident_in_range(2, 1); } #endif diff --git a/test/hotspot/gtest/runtime/test_os.cpp b/test/hotspot/gtest/runtime/test_os.cpp index 26c8fb8cd72..cc059a93199 100644 --- a/test/hotspot/gtest/runtime/test_os.cpp +++ b/test/hotspot/gtest/runtime/test_os.cpp @@ -1200,16 +1200,22 @@ TEST_VM(os, map_unmap_memory) { TEST_VM(os, map_memory_to_file_aligned) { const char* letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - const size_t size = strlen(letters) + 1; + const size_t content_size = strlen(letters) + 1; + const size_t granularity = os::vm_allocation_granularity(); + const size_t alignments[] = { granularity, 2 * granularity, 4 * granularity, 16 * granularity, 1 * M }; int fd = os::open("map_memory_to_file.txt", O_RDWR | O_CREAT, 0666); EXPECT_TRUE(fd > 0); - EXPECT_TRUE(os::write(fd, letters, size)); + ASSERT_TRUE(os::write(fd, letters, content_size)); - char* result = os::map_memory_to_file_aligned(os::vm_allocation_granularity(), os::vm_allocation_granularity(), fd, mtTest); - ASSERT_NOT_NULL(result); - EXPECT_EQ(strcmp(letters, result), 0); - os::unmap_memory(result, os::vm_allocation_granularity()); + const size_t size = granularity; + for (size_t alignment : alignments) { + char* result = os::map_memory_to_file_aligned(size, alignment, fd, mtTest); + ASSERT_NOT_NULL(result) << "Mapping failed for alignment=" << alignment; + EXPECT_TRUE(is_aligned(result, alignment)) << "Failed to aligned to " << alignment; + EXPECT_EQ(strcmp(letters, result), 0) << "Text mismatch at alignment=" << alignment; + os::unmap_memory(result, size); + } ::close(fd); } @@ -1220,3 +1226,36 @@ TEST_VM(os, dll_load_null_error_buf) { void* lib = os::dll_load("NoSuchLib", nullptr, 0); ASSERT_NULL(lib); } + +TEST_VM(os, reserve_memory_aligned_basic) { + const size_t granularity = os::vm_allocation_granularity(); + const size_t alignments[] = { granularity, 2 * granularity, 4 * granularity, 16 * granularity }; + + for (size_t alignment : alignments) { + const size_t size = alignment; + char* result = os::reserve_memory_aligned(size, alignment, mtTest); + ASSERT_NE(result, (char*)nullptr) << "reserve_memory_aligned failed for alignment=" << alignment; + EXPECT_TRUE(is_aligned(result, alignment)) << "Result " << result << " not aligned to " << alignment; + + ASSERT_TRUE(os::commit_memory(result, size, false)); + memset(result, 0xCD, size); + EXPECT_EQ((unsigned char)result[0], 0xCD); + + os::release_memory(result, size); + } +} + +TEST_VM(os, reserve_memory_aligned_large) { + const size_t alignment = 1 * M; + const size_t size = alignment; + + char* result = os::reserve_memory_aligned(size, alignment, mtTest); + ASSERT_NE(result, (char*)nullptr); + EXPECT_TRUE(is_aligned(result, alignment)); + + ASSERT_TRUE(os::commit_memory(result, size, false)); + memset(result, 0xEF, size); + EXPECT_EQ((unsigned char)result[size - 1], 0xEF); + + os::release_memory(result, size); +} diff --git a/test/hotspot/jtreg/ProblemList-Xcomp.txt b/test/hotspot/jtreg/ProblemList-Xcomp.txt index f9a4d5ec2a9..c6b00618617 100644 --- a/test/hotspot/jtreg/ProblemList-Xcomp.txt +++ b/test/hotspot/jtreg/ProblemList-Xcomp.txt @@ -33,8 +33,6 @@ vmTestbase/vm/mlvm/mixed/stress/regression/b6969574/INDIFY_Test.java 8265295 lin serviceability/AsyncGetCallTrace/MyPackage/ASGCTBaseTest.java 8303168 linux-all -serviceability/sa/ClhsdbInspect.java 8283578 windows-x64 - vmTestbase/vm/mlvm/indy/func/jvmti/mergeCP_indy2manyDiff_a/TestDescription.java 8308367 generic-all vmTestbase/vm/mlvm/indy/func/jvmti/mergeCP_indy2manySame_a/TestDescription.java 8308367 generic-all vmTestbase/vm/mlvm/indy/func/jvmti/mergeCP_indy2none_b/TestDescription.java 8308367 generic-all diff --git a/test/hotspot/jtreg/compiler/arguments/TestCompileTaskTimeout.java b/test/hotspot/jtreg/compiler/arguments/TestCompileTaskTimeout.java index 9ec3beb0d89..81dc8ed1f9e 100644 --- a/test/hotspot/jtreg/compiler/arguments/TestCompileTaskTimeout.java +++ b/test/hotspot/jtreg/compiler/arguments/TestCompileTaskTimeout.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,7 +25,7 @@ package compiler.arguments; /* * @test TestCompileTaskTimeout - * @bug 8308094 8365909 8366875 + * @bug 8308094 8365909 8366875 8381235 * @requires vm.debug & vm.flagless & os.name == "Linux" * @summary Check functionality of CompileTaskTimeout * @library /test/lib @@ -44,15 +44,15 @@ public class TestCompileTaskTimeout { // Short timeouts crash the VM. ProcessTools.executeTestJava("-Xcomp", "-XX:CompileTaskTimeout=1", "--version") - .shouldHaveExitValue(134) + .shouldNotHaveExitValue(0) .shouldContain("timed out after"); ProcessTools.executeTestJava("-Xcomp", "-XX:CompileTaskTimeout=1", "-XX:TieredStopAtLevel=3", "--version") - .shouldHaveExitValue(134) + .shouldNotHaveExitValue(0) .shouldContain("timed out after"); ProcessTools.executeTestJava("-Xcomp", "-XX:CompileTaskTimeout=1", "-XX:-TieredCompilation", "--version") - .shouldHaveExitValue(134) + .shouldNotHaveExitValue(0) .shouldContain("timed out after"); // A long enough timeout succeeds. diff --git a/test/hotspot/jtreg/compiler/c2/irTests/TestFloat16ScalarOperations.java b/test/hotspot/jtreg/compiler/c2/irTests/TestFloat16ScalarOperations.java index 8f2bbe8a8a7..a827d032eba 100644 --- a/test/hotspot/jtreg/compiler/c2/irTests/TestFloat16ScalarOperations.java +++ b/test/hotspot/jtreg/compiler/c2/irTests/TestFloat16ScalarOperations.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2025, Arm Limited. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -35,7 +35,6 @@ import compiler.lib.ir_framework.*; import compiler.lib.verify.*; import jdk.incubator.vector.Float16; import static jdk.incubator.vector.Float16.*; -import java.util.Random; import compiler.lib.generators.Generator; import static compiler.lib.generators.Generators.G; @@ -69,9 +68,9 @@ public class TestFloat16ScalarOperations { private static final Float16 RANDOM5 = Float16.valueOf(genF.next()); // We have to ensure that the constants are not special values that lead the operations to - // constant fold. For example "x + 0" could constant fold to "x", so we need to avoid that - // the add constant is zero. - private static Generator genSmallRangeF = G.uniformFloats(0.1f, 0.9f); + // constant fold. For example "x + 0" could constant fold to "x" or "x / 0.5" could fold + // to "x * 2", so we need to avoid that the constants are zero or a reciprocal power of two. + private static Generator genSmallRangeF = G.uniformFloats(0.6f, 0.9f); private static final Float16 RANDOM_CON_ADD = Float16.valueOf(genSmallRangeF.next()); private static final Float16 RANDOM_CON_SUB = Float16.valueOf(genSmallRangeF.next()); private static final Float16 RANDOM_CON_MUL = Float16.valueOf(genSmallRangeF.next()); @@ -99,9 +98,7 @@ public class TestFloat16ScalarOperations { private short GOLDEN_QNAN; public static void main(String args[]) { - Scenario s0 = new Scenario(0, "--add-modules=jdk.incubator.vector", "-Xint"); - Scenario s1 = new Scenario(1, "--add-modules=jdk.incubator.vector"); - new TestFramework().addScenarios(s1).start(); + new TestFramework().addFlags("--add-modules=jdk.incubator.vector").start(); } public TestFloat16ScalarOperations() { diff --git a/test/hotspot/jtreg/compiler/hotcode/HotCodeCollectorMoveFunction.java b/test/hotspot/jtreg/compiler/hotcode/HotCodeCollectorMoveFunction.java index dd02de66881..5677ca88eb2 100644 --- a/test/hotspot/jtreg/compiler/hotcode/HotCodeCollectorMoveFunction.java +++ b/test/hotspot/jtreg/compiler/hotcode/HotCodeCollectorMoveFunction.java @@ -24,14 +24,15 @@ /* * @test + * @summary Ensure the HotCodeCollector detects a very hot method and relocates + * it to the HotCodeHeap. Sampling is best effort, so for reliability + * we spawn a seperate test process to manage the VM flags. + * @requires vm.flagless + * @requires vm.compiler2.enabled * @library /test/lib / * @build jdk.test.whitebox.WhiteBox * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox - * @run main/othervm -Xbootclasspath/a:. -Xbatch -XX:-TieredCompilation -XX:+SegmentedCodeCache -XX:+UnlockExperimentalVMOptions -XX:+HotCodeHeap - * -XX:+NMethodRelocation -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:HotCodeIntervalSeconds=0 -XX:HotCodeCallLevel=0 - * -XX:HotCodeSampleSeconds=5 -XX:HotCodeStablePercent=-1 -XX:HotCodeSamplePercent=100 -XX:HotCodeStartupDelaySeconds=0 - * -XX:CompileCommand=compileonly,compiler.hotcode.HotCodeCollectorMoveFunction::func - * compiler.hotcode.HotCodeCollectorMoveFunction + * @run driver compiler.hotcode.HotCodeCollectorMoveFunction */ package compiler.hotcode; @@ -39,50 +40,78 @@ package compiler.hotcode; import java.lang.reflect.Method; import jdk.test.lib.Asserts; +import jdk.test.lib.process.OutputAnalyzer; +import jdk.test.lib.process.ProcessTools; import jdk.test.whitebox.WhiteBox; import jdk.test.whitebox.code.BlobType; import jdk.test.whitebox.code.NMethod; public class HotCodeCollectorMoveFunction { - private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox(); - private static final Method method; - private static final int C2_LEVEL = 4; - private static final int FUNC_RUN_MILLIS = 60_000; - - static { - try { - method = HotCodeCollectorMoveFunction.class.getMethod("func"); - } catch (NoSuchMethodException e) { - throw new RuntimeException(e); - } - } - public static void main(String[] args) throws Exception { - WHITE_BOX.testSetDontInlineMethod(method, true); + ProcessBuilder pb = ProcessTools.createLimitedTestJavaProcessBuilder( + "-Xbootclasspath/a:.", + "-Xbatch", + "-XX:-TieredCompilation", + "-XX:+SegmentedCodeCache", + "-XX:+UnlockExperimentalVMOptions", + "-XX:+HotCodeHeap", + "-XX:+NMethodRelocation", + "-XX:+UnlockDiagnosticVMOptions", + "-XX:+WhiteBoxAPI", + "-XX:HotCodeIntervalSeconds=0", + "-XX:HotCodeCallLevel=0", + "-XX:HotCodeSampleSeconds=5", + "-XX:HotCodeStablePercent=-1", + "-XX:HotCodeSamplePercent=100", + "-XX:HotCodeStartupDelaySeconds=0", + "-XX:CompileCommand=compileonly," + Runner.class.getName() + "::func", + Runner.class.getName() + ); - compileFunc(); - - // Call function so collector samples and relocates - func(); - - // Function should now be in the Hot code heap after collector has had time to relocate - NMethod reloc_nm = NMethod.get(method, false); - Asserts.assertNotEquals(reloc_nm, null); - Asserts.assertEQ(reloc_nm.code_blob_type, BlobType.MethodHot); + OutputAnalyzer out = new OutputAnalyzer(pb.start()); + out.shouldHaveExitValue(0); } - public static void compileFunc() { - WHITE_BOX.enqueueMethodForCompilation(method, C2_LEVEL); + static class Runner { + private static final WhiteBox WHITE_BOX = WhiteBox.getWhiteBox(); + private static final Method method; + private static final int C2_LEVEL = 4; + private static final int FUNC_RUN_MILLIS = 60_000; - if (WHITE_BOX.getMethodCompilationLevel(method) != C2_LEVEL) { - throw new IllegalStateException("Method " + method + " is not compiled by C2."); + static { + try { + method = Runner.class.getMethod("func"); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + + public static void main(String[] args) { + WHITE_BOX.testSetDontInlineMethod(method, true); + + compileFunc(); + + // Call function so collector samples and relocates + func(); + + // Function should now be in the Hot code heap after collector has had time to relocate + NMethod relocatedNMethod = NMethod.get(method, false); + Asserts.assertNotNull(relocatedNMethod); + Asserts.assertEQ(BlobType.MethodHot, relocatedNMethod.code_blob_type); + } + + private static void compileFunc() { + WHITE_BOX.enqueueMethodForCompilation(method, C2_LEVEL); + + if (WHITE_BOX.getMethodCompilationLevel(method) != C2_LEVEL) { + throw new IllegalStateException("Method " + method + " is not compiled by C2."); + } + } + + public static void func() { + long start = System.currentTimeMillis(); + while (System.currentTimeMillis() - start < FUNC_RUN_MILLIS) {} } } - - public static void func() { - long start = System.currentTimeMillis(); - while (System.currentTimeMillis() - start < FUNC_RUN_MILLIS) {} - } - } diff --git a/test/hotspot/jtreg/compiler/hotcode/StressHotCodeCollector.java b/test/hotspot/jtreg/compiler/hotcode/StressHotCodeCollector.java index b107df8fa46..551b9ea2fca 100644 --- a/test/hotspot/jtreg/compiler/hotcode/StressHotCodeCollector.java +++ b/test/hotspot/jtreg/compiler/hotcode/StressHotCodeCollector.java @@ -26,11 +26,12 @@ /* * @test * @key randomness + * @requires vm.compiler2.enabled & vm.opt.SegmentedCodeCache != false * @library /test/lib / * @build jdk.test.whitebox.WhiteBox * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox - * @run main/othervm -Xbootclasspath/a:. -Xcomp -XX:-TieredCompilation -XX:+UnlockExperimentalVMOptions -XX:+HotCodeHeap -XX:+NMethodRelocation - * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:HotCodeIntervalSeconds=0 -XX:HotCodeSampleSeconds=10 + * @run main/othervm -Xbootclasspath/a:. -Xcomp -XX:-TieredCompilation -XX:+SegmentedCodeCache -XX:+UnlockExperimentalVMOptions -XX:+HotCodeHeap + * -XX:+NMethodRelocation -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:HotCodeIntervalSeconds=0 -XX:HotCodeSampleSeconds=10 * -XX:HotCodeStablePercent=-1 -XX:HotCodeSamplePercent=100 -XX:HotCodeStartupDelaySeconds=0 * compiler.hotcode.StressHotCodeCollector */ diff --git a/test/hotspot/jtreg/compiler/vectorapi/VectorExpressionFuzzer.java b/test/hotspot/jtreg/compiler/vectorapi/VectorExpressionFuzzer.java index 12615d839ab..cb5b95109f5 100644 --- a/test/hotspot/jtreg/compiler/vectorapi/VectorExpressionFuzzer.java +++ b/test/hotspot/jtreg/compiler/vectorapi/VectorExpressionFuzzer.java @@ -22,26 +22,17 @@ */ /* - * @test id=AVX2 - * @bug 8369699 + * @test + * @bug 8369699 8381618 * @key randomness * @summary Test the Template Library's expression generation for the Vector API. - * @requires os.family == "linux" & os.simpleArch == "x64" * @modules jdk.incubator.vector * @modules java.base/jdk.internal.misc * @library /test/lib / * @compile ../../compiler/lib/verify/Verify.java - * @run driver ${test.main.class} -XX:UseAVX=2 + * @run driver ${test.main.class} */ -// TODO: remove the x64 and linux restriction above. I added that for now so we are not flooded -// with failures in the CI. We should remove these restriction once more bugs are fixed. -// x64 linux is the easiest to debug on for me, that's why I picked it. -// In addition, I put a UseAVX=2 restriction below, to avoid AVX512 bugs for now. -// -// A trick to extend this to other platforms: create a new run block, so you have full -// freedom to restrict it as necessary for platform and vector features. -// // TODO: Some compilation bailouts are to be expected, for example, we've encountered this before: // COMPILE SKIPPED: out of virtual registers in LIR generator (retry at different tier) // Which manifested in: diff --git a/test/hotspot/jtreg/gc/g1/ihop/lib/IhopUtils.java b/test/hotspot/jtreg/gc/g1/ihop/lib/IhopUtils.java index 0cd25ea4c67..98fe4e79301 100644 --- a/test/hotspot/jtreg/gc/g1/ihop/lib/IhopUtils.java +++ b/test/hotspot/jtreg/gc/g1/ihop/lib/IhopUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -51,7 +51,7 @@ public class IhopUtils { */ private final static String CYCLE_INITIATION_MESSAGE = "Request concurrent cycle initiation (occupancy higher than threshold)"; private final static String CYCLE_INITIATION_MESSAGE_FALSE = "Do not request concurrent cycle initiation (still doing mixed collections)"; - private final static String ADAPTIVE_IHOP_PREDICTION_ACTIVE_MESSAGE = "prediction active: true"; + private final static String ADAPTIVE_IHOP_MESSAGE = "Adaptive IHOP information"; /** * Finds strings which contains patterns for finding. @@ -139,6 +139,6 @@ public class IhopUtils { * @throws RuntimeException If IHOP message was not found. */ public static void checkAdaptiveIHOPWasActivated(OutputAnalyzer outputAnalyzer) { - outputAnalyzer.shouldContain(ADAPTIVE_IHOP_PREDICTION_ACTIVE_MESSAGE); + outputAnalyzer.shouldContain(ADAPTIVE_IHOP_MESSAGE); } } diff --git a/test/hotspot/jtreg/gc/shenandoah/options/TestSelectiveBarrierFlags.java b/test/hotspot/jtreg/gc/shenandoah/options/TestSelectiveBarrierFlags.java index da66bb8bbe0..dac0dc639d4 100644 --- a/test/hotspot/jtreg/gc/shenandoah/options/TestSelectiveBarrierFlags.java +++ b/test/hotspot/jtreg/gc/shenandoah/options/TestSelectiveBarrierFlags.java @@ -51,7 +51,6 @@ public class TestSelectiveBarrierFlags { String[][] opts = { new String[] { "ShenandoahLoadRefBarrier" }, new String[] { "ShenandoahSATBBarrier" }, - new String[] { "ShenandoahCASBarrier" }, new String[] { "ShenandoahCloneBarrier" } }; diff --git a/test/hotspot/jtreg/gc/shenandoah/options/TestWrongBarrierDisable.java b/test/hotspot/jtreg/gc/shenandoah/options/TestWrongBarrierDisable.java index b5c30f37202..02a0548e3b9 100644 --- a/test/hotspot/jtreg/gc/shenandoah/options/TestWrongBarrierDisable.java +++ b/test/hotspot/jtreg/gc/shenandoah/options/TestWrongBarrierDisable.java @@ -40,7 +40,6 @@ public class TestWrongBarrierDisable { String[] concurrent = { "ShenandoahLoadRefBarrier", "ShenandoahSATBBarrier", - "ShenandoahCASBarrier", "ShenandoahCloneBarrier" }; diff --git a/test/hotspot/jtreg/gc/shenandoah/options/TestWrongBarrierEnable.java b/test/hotspot/jtreg/gc/shenandoah/options/TestWrongBarrierEnable.java index 1bc382dfbb0..eb6babf51f8 100644 --- a/test/hotspot/jtreg/gc/shenandoah/options/TestWrongBarrierEnable.java +++ b/test/hotspot/jtreg/gc/shenandoah/options/TestWrongBarrierEnable.java @@ -40,14 +40,12 @@ public class TestWrongBarrierEnable { String[] concurrent = { "ShenandoahLoadRefBarrier", "ShenandoahSATBBarrier", - "ShenandoahCASBarrier", "ShenandoahCloneBarrier" }; String[] generational = { "ShenandoahCardBarrier" }; String[] all = { "ShenandoahLoadRefBarrier", "ShenandoahSATBBarrier", - "ShenandoahCASBarrier", "ShenandoahCloneBarrier", "ShenandoahCardBarrier" }; diff --git a/test/hotspot/jtreg/resourcehogs/gc/TestUncommitDuringConcurrentBitmapClear.java b/test/hotspot/jtreg/resourcehogs/gc/TestUncommitDuringConcurrentBitmapClear.java new file mode 100644 index 00000000000..f79f4992817 --- /dev/null +++ b/test/hotspot/jtreg/resourcehogs/gc/TestUncommitDuringConcurrentBitmapClear.java @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package gc.g1; + +/* + * @test TestUncommitDuringConcurrentBitmapClear + * @bug 8385369 + * @requires vm.gc.G1 + * @requires vm.debug + * @requires vm.flagless + * @requires vm.bits == 64 + * @requires os.maxMemory > 8g + * @summary Verify that G1 does not crash while uncommitting a region whose + * bitmap is currently being cleared. + * Options are geared towards uncommitting aggressively. Also use a large + * region size so that corresponding bitmaps get uncommitted always too. + * @library /test/lib + * @build jdk.test.whitebox.WhiteBox + * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox + * @run main/othervm + * -Xbootclasspath/a:. + * -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI + * -Xmx8g + * -Xms32m + * -XX:G1HeapRegionSize=16m + * -XX:+UseG1GC + * -XX:ConcGCThreads=1 + * -XX:GCTimeRatio=1 + * -XX:G1CPUUsageShrinkThreshold=1 + * -XX:G1ShrinkByPercentOfAvailable=100 + * -XX:G1UncommitInitialDelay=0 + * -Xlog:gc+marking,gc,gc+ergo+heap=debug + * gc.g1.TestUncommitDuringConcurrentBitmapClear + */ + +import java.util.concurrent.FutureTask; +import java.util.concurrent.TimeUnit; + +import jdk.test.whitebox.WhiteBox; + +/* + * Repeatedly make the concurrent cycle stop after the cleanup pause, issuing + * young GCs during the Concurrent Cleanup for Next Mark phase. Humongous + * regions allocated and dropped before that should get eager-reclaimed and + * their memory uncommitted while bitmap clearing runs. + */ +public class TestUncommitDuringConcurrentBitmapClear { + + private static final WhiteBox WB = WhiteBox.getWhiteBox(); + + private static final int NumObjs = 400; // Number of humongous objects to allocate + // per attempt. Sized to fill a fair amount of + // the available memory. + private static final int LargeObjSize = 9 * 1024 * 1024; // Large enough to be a humongous object. + + private static Object[] objects; + + private static void test() throws Exception { + + // This task drops the humongous objects, making them eligible for + // uncommit, and starts the concurrent bitmap clearing. While it is + // running, the caller triggers GCs that may or may not trigger the issue. + FutureTask concurrentClearTask = new FutureTask<>(() -> { + objects = null; + WB.concurrentGCRunTo(WB.G1_BEFORE_CLEANUP_COMPLETED); + return null; + }); + + try { + System.out.println("taking control"); + WB.concurrentGCAcquireControl(); + + // Allocate a new set of humongous objects. Acquire control first to avoid + // unnecessary concurrent cycles due to that allocation. We do not need them. + objects = new Object[NumObjs]; + for (int i = 0; i < objects.length; i++) { + objects[i] = new byte[LargeObjSize]; + } + + WB.concurrentGCRunTo(WB.G1_AFTER_CLEANUP_STARTED); + + new Thread(concurrentClearTask).start(); + + int numYoungGCs = 0; + // Execute at least one young GC, even if the concurrent + // clear bitmap finishes very quickly. + do { + WB.youngGC(); + numYoungGCs++; + // Wait a bit. This should give the concurrent clear task a chance + // to finish execution. + Thread.sleep(1); + } while (!concurrentClearTask.isDone() && numYoungGCs < 200); + + concurrentClearTask.get(30, TimeUnit.SECONDS); // Propagates exceptions, if any. + } finally { + WB.concurrentGCRunToIdle(); + + System.out.println("Releasing control"); + WB.concurrentGCReleaseControl(); + } + } + + public static void main(String[] args) throws Exception { + if (!WB.supportsConcurrentGCBreakpoints()) { + throw new RuntimeException("G1 should support GC breakpoints"); + } + for (int i = 0; i < 20; i++) { + test(); + } + } +} diff --git a/test/jdk/java/awt/Graphics2D/DrawString/GposTest.java b/test/jdk/java/awt/Graphics2D/DrawString/GposTest.java new file mode 100644 index 00000000000..7e98c366061 --- /dev/null +++ b/test/jdk/java/awt/Graphics2D/DrawString/GposTest.java @@ -0,0 +1,437 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8269888 + * @summary Test for correct GPOS font table handling when drawing text. + */ + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.geom.AffineTransform; +import java.awt.geom.NoninvertibleTransformException; +import java.awt.geom.Point2D; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.util.Base64; +import java.util.Map; + +import javax.imageio.ImageIO; + +/** + * Tests that fonts with GPOS tables are handled correctly when drawing text. The + * GPOS table is an OpenType font table which can be used to adjust glyph positions + * in certain contexts. This table is sometimes used in fonts which support Thai + * script, in order to place vowel glyphs above or below consonant glyphs. + * + * @see GPOS table spec + */ +public class GposTest { + + /** + *

Font created for this test which contains a number of GPOS entries which + * adjust glyph positions in ways which can be checked programmatically. The + * glyphs render as different basic geometric shapes, so that the layout can + * also be checked visually if necessary. These geometric shapes are different + * for each character, but they have the same overall width and height. + * + *

Glyphs: + * + *

+ * + *

GPOS entries: + * + *

+ * + * p>The following FontForge Python script was used to generate this font: + * + *
+     * import fontforge
+     * import base64
+     *
+     * SIZE = 800
+     * THICKNESS = 80
+     * PAD = int(THICKNESS / 2)
+     * WIDTH = SIZE + (2 * PAD)
+     *
+     * def square(font, char):
+     *   glyph = font.createChar(ord(char))
+     *   pen = glyph.glyphPen()
+     *   pen.moveTo((PAD, PAD))
+     *   pen.lineTo((PAD, PAD + SIZE))
+     *   pen.lineTo((PAD + SIZE, PAD + SIZE))
+     *   pen.lineTo((PAD + SIZE, PAD))
+     *   pen.closePath()
+     *   glyph.stroke('circular', THICKNESS)
+     *   glyph.width = WIDTH
+     *   pen = None
+     *   return glyph
+     *
+     * def cross(font, char):
+     *   glyph = font.createChar(ord(char))
+     *   pen = glyph.glyphPen()
+     *   pen.moveTo((PAD, PAD + SIZE/2))
+     *   pen.lineTo((PAD + SIZE, PAD + SIZE/2))
+     *   pen.closePath()
+     *   pen.moveTo((PAD + SIZE/2, PAD))
+     *   pen.lineTo((PAD + SIZE/2, PAD + SIZE))
+     *   pen.closePath()
+     *   glyph.stroke('circular', THICKNESS)
+     *   glyph.width = WIDTH
+     *   pen = None
+     *   return glyph
+     *
+     * def x_mark(font, char):
+     *   glyph = font.createChar(ord(char))
+     *   pen = glyph.glyphPen()
+     *   pen.moveTo((PAD, PAD))
+     *   pen.lineTo((PAD + SIZE, PAD + SIZE))
+     *   pen.closePath()
+     *   pen.moveTo((PAD, PAD + SIZE))
+     *   pen.lineTo((PAD + SIZE, PAD))
+     *   pen.closePath()
+     *   glyph.stroke('circular', THICKNESS)
+     *   glyph.width = WIDTH
+     *   pen = None
+     *   return glyph
+     *
+     * def triangle_up(font, char):
+     *   glyph = font.createChar(ord(char))
+     *   pen = glyph.glyphPen()
+     *   pen.moveTo((PAD, PAD))
+     *   pen.lineTo((PAD + SIZE, PAD))
+     *   pen.lineTo((PAD + SIZE/2, PAD + SIZE))
+     *   pen.closePath()
+     *   glyph.stroke('circular', THICKNESS)
+     *   glyph.width = WIDTH
+     *   pen = None
+     *   return glyph
+     *
+     * def triangle_down(font, char):
+     *   glyph = font.createChar(ord(char))
+     *   pen = glyph.glyphPen()
+     *   pen.moveTo((PAD, PAD + SIZE))
+     *   pen.lineTo((PAD + SIZE, PAD + SIZE))
+     *   pen.lineTo((PAD + SIZE/2, PAD))
+     *   pen.closePath()
+     *   glyph.stroke('circular', THICKNESS)
+     *   glyph.width = WIDTH
+     *   pen = None
+     *   return glyph
+     *
+     * def triangle_left(font, char):
+     *   glyph = font.createChar(ord(char))
+     *   pen = glyph.glyphPen()
+     *   pen.moveTo((PAD + SIZE, PAD + SIZE))
+     *   pen.lineTo((PAD + SIZE, PAD))
+     *   pen.lineTo((PAD, PAD + SIZE/2))
+     *   pen.closePath()
+     *   glyph.stroke('circular', THICKNESS)
+     *   glyph.width = WIDTH
+     *   pen = None
+     *   return glyph
+     *
+     * def triangle_right(font, char):
+     *   glyph = font.createChar(ord(char))
+     *   pen = glyph.glyphPen()
+     *   pen.moveTo((PAD, PAD))
+     *   pen.lineTo((PAD, PAD + SIZE))
+     *   pen.lineTo((PAD + SIZE, PAD + SIZE/2))
+     *   pen.closePath()
+     *   glyph.stroke('circular', THICKNESS)
+     *   glyph.width = WIDTH
+     *   pen = None
+     *   return glyph
+     *
+     * # create font
+     *
+     * font = fontforge.font()
+     * font.encoding = 'UnicodeFull'
+     * font.design_size = 16
+     * font.em = 2048
+     * font.ascent = 1638
+     * font.descent = 410
+     * font.familyname = 'GPOSTest'
+     * font.fontname = 'GPOSTest'
+     * font.fullname = 'GPOSTest'
+     * font.copyright = ''
+     * font.autoWidth(0, 0, 2048)
+     *
+     * # create glyphs in font
+     *
+     * space = font.createChar(0x20)
+     * space.width = WIDTH
+     *
+     * a = square(font, 'a')         # a -> renders as square
+     * b = cross(font, 'b')          # b -> renders as cross
+     * c = x_mark(font, 'c')         # c -> renders as X mark
+     * d = triangle_up(font, 'd')    # d -> renders as triangle pointing up
+     * e = triangle_down(font, 'e')  # e -> renders as triangle pointing down
+     * f = triangle_left(font, 'f')  # f -> renders as triangle pointing left
+     * g = triangle_right(font, 'g') # g -> renders as triangle pointing right
+     *
+     * # GPOS pair adjustment
+     * # a b -> square cross, but the cross is moved back over the square
+     * # therefore the drawn area for "a" should match the drawn area for "ab"
+     *
+     * font.addLookup('lu1', 'gpos_pair', (), (('kern',(('latn',('dflt')),)),))
+     * font.addLookupSubtable('lu1', 'subtable1')
+     * a.addPosSub('subtable1', 'b', 0, 0, -WIDTH, 0, 0, 0, 0, 0)
+     *
+     * # GPOS pair adjustment
+     * # a f -> square leftware-triangle, but the triangle is moved back and above the square
+     * # therefore the drawn area for "af" should be twice the height as for "a", but same width
+     *
+     * a.addPosSub('subtable1', 'f', 0, 0, 0, 0, -WIDTH, WIDTH, 0, 0)
+     *
+     * # GPOS cursive attachment
+     * # a c -> square x-mark, but the x-mark is moved back over the square
+     * # therefore the drawn area for "a" should match the drawn area for "ac"
+     *
+     * font.addLookup('lu2', 'gpos_cursive', (), (('curs',(('latn',('dflt')),)),))
+     * font.addLookupSubtable('lu2', 'subtable2')
+     * font.addAnchorClass('subtable2', 'class2')
+     * a.addAnchorPoint('class2', 'exit', 0, 0)
+     * c.addAnchorPoint('class2', 'entry', 0, 0)
+     *
+     * # GPOS mark-to-base attachment
+     * # a d -> square upward-triangle, but the triangle is moved back over the square
+     * # therefore the drawn area for "a" should match the drawn area for "ad"
+     *
+     * font.addLookup('lu3', 'gpos_mark2base', (), (('mark',(('latn',('dflt')),)),))
+     * font.addLookupSubtable('lu3', 'subtable3')
+     * font.addAnchorClass('subtable3', 'class3')
+     * a.addAnchorPoint('class3', 'base', 0, 0)
+     * d.addAnchorPoint('class3', 'mark', 0, 0)
+     *
+     * # GPOS mark-to-mark attachment
+     * # a d e -> square upward-triangle downward-triangle, but all superimposed
+     * # therefore the drawn area for "a" should match the drawn area for "ade"
+     * # builds on the "ad" mark-to-base attachment defined above
+     *
+     * font.addLookup('lu4', 'gpos_mark2mark', (), (('mkmk',(('latn',('dflt')),)),))
+     * font.addLookupSubtable('lu4', 'subtable4')
+     * font.addAnchorClass('subtable4', 'class4')
+     * d.addAnchorPoint('class4', 'basemark', 0, 0)
+     * e.addAnchorPoint('class4', 'mark', 0, 0)
+     *
+     * # save font to file
+     *
+     * ttf = 'test.ttf'     # TrueType
+     * t64 = 'test.ttf.txt' # TrueType Base64
+     *
+     * font.generate(ttf)
+     *
+     * with open(ttf, 'rb') as f1:
+     *   encoded = base64.b64encode(f1.read())
+     *   with open(t64, 'wb') as f2:
+     *     f2.write(encoded)
+     * 
+ */ + private static final String TTF_BYTES = "AAEAAAAQAQAABAAARkZUTa4cxtYAAAmMAAAAHEdERUYARwAjAAAICAAAACpHUE9Tk9irXAAACFQAAAE4R1NVQmyRdI8AAAg0AAAAIE9TLzJikmvEAAABiAAAAGBjbWFwDs0NqgAAAggAAAFKY3Z0IABEBREAAANUAAAABGdhc3D//wADAAAIAAAAAAhnbHlmjhRMRwAAA3AAAAKcaGVhZC6pJUAAAAEMAAAANmhoZWEJfgN1AAABRAAAACRobXR4ClAARAAAAegAAAAebG9jYQLYA64AAANYAAAAGG1heHAATwBRAAABaAAAACBuYW1lmet7fQAABgwAAAG5cG9zdABNAYUAAAfIAAAAOAABAAAAAQAAodR7+F8PPPUACwgAAAAAAOYNbXcAAAAA5g1tdwAAAAADcAVVAAAACAACAAAAAAAAAAEAAAVVAAAAuANwAAAAAANwAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAALACAAAgAAAAAAAgAAAAEAAQAAAEAALgAAAAAABANwAZAABQAABTMFmQAAAR4FMwWZAAAD1wBmAhIAAAIABQkAAAAAAAAAAAABAAAAAAAAAAAAAAAAUGZFZACAACAAZwZm/mYAuAVVAAAAAAABAAAAAANwAAAAAAAgAAIDcABEAAAAAANwAAADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAAAHAABAAAAAABEAAMAAQAAABwABAAoAAAABgAEAAEAAgAgAGf//wAAACAAYf///+P/owABAAAAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQFBgcICQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQFEQAAACwALAAsACwAUAB8ALYA3AECASgBTgACAEQAAAJkBVUAAwAHAC6xAQAvPLIHBADtMrEGBdw8sgMCAO0yALEDAC88sgUEAO0ysgcGAfw8sgECAO0yMxEhESUhESFEAiD+JAGY/mgFVfqrRATNAAAAAgAAAAADcANwAA8AEwAANRE0NjMhMhYVERQGIyEiJhMRIREXEQMgERcXEfzgERdQAtAoAyARFxcR/OARFxcDCf0wAtAAAAAAAQAAAAADcANwABsAABMiJjQ2MyERNDYyFhURITIWFAYjIREUBiImNREoERcXEQFoFyIXAWgRFxcR/pgXIhcBkBciFwFoERcXEf6YFyIX/pgRFxcRAWgAAAEAAAAAA3ADcAAfAAAyIiY0NwkBJjU0NjMyFwkBNjMyFhUUBwkBFhQGIicJATkiFwwBc/6NDBcREQsBdAF0CxERFwz+jQFzDBciC/6M/owXIgsBdAF0CxERFwz+jQFzDBcREQv+jP6MCyIXDAFz/o0AAAAAAgAAAAADcANwAA8AEgAAADIXARYVFAYjISImNTQ3ARcBIQGfMgsBkAQXEfzgERcEAZAk/rECngNwFvzgCQkRFxcRCQkDIGv9YQAAAAIAAAAAA3ADcAAPABIAABMhMhYVFAcBBiInASY1NDYFIQEoAyARFwT+cAsyC/5wBBcC8P1iAU8DcBcRCQn84BYWAyAJCREXUP1hAAACAAAAAANwA3AADwASAAABERQGIyInASY0NwE2MzIWAxEBA3AXEQkJ/OAWFgMgCQkRF1D9YQNI/OARFwQBkAsyCwGQBBf9EAKe/rEAAgAAAAADcANwAA8AEgAANRE0NjMyFwEWFAcBBiMiJhMRARcRCQkDIBYW/OAJCREXUAKfKAMgERcE/nALMgv+cAQXAvD9YgFPAAAAAAAADgCuAAEAAAAAAAAAAAACAAEAAAAAAAEACAAVAAEAAAAAAAIABwAuAAEAAAAAAAMAJACAAAEAAAAAAAQACAC3AAEAAAAAAAUADwDgAAEAAAAAAAYACAECAAMAAQQJAAAAAAAAAAMAAQQJAAEAEAADAAMAAQQJAAIADgAeAAMAAQQJAAMASAA2AAMAAQQJAAQAEAClAAMAAQQJAAUAHgDAAAMAAQQJAAYAEADwAAAAAEcAUABPAFMAVABlAHMAdAAAR1BPU1Rlc3QAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAEYAbwBuAHQARgBvAHIAZwBlACAAMgAuADAAIAA6ACAARwBQAE8AUwBUAGUAcwB0ACAAOgAgADIAMQAtADQALQAyADAAMgA2AABGb250Rm9yZ2UgMi4wIDogR1BPU1Rlc3QgOiAyMS00LTIwMjYAAEcAUABPAFMAVABlAHMAdAAAR1BPU1Rlc3QAAFYAZQByAHMAaQBvAG4AIAAwADAAMQAuADAAMAAwAABWZXJzaW9uIDAwMS4wMDAAAEcAUABPAFMAVABlAHMAdAAAR1BPU1Rlc3QAAAAAAAIAAAAAAAD/ZwBmAAAAAQAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAgADAEQARQBGAEcASABJAEoAAAAB//8AAgABAAAADAAAACIAAAACAAMAAwAGAAEABwAIAAMACQAKAAEABAAAAAIAAAAAAAEAAAAKABwAHgABbGF0bgAIAAQAAAAA//8AAAAAAAAAAQAAAAoAJgBsAAFsYXRuAAgABAAAAAD//wAFAAAAAQACAAMABAAFY3VycwAga2VybgAmbWFyawAsbWttawAyc2l6ZQA4AAAAAQACAAAAAQADAAAAAQABAAAAAQAAAAQAAACgAAAAAAAAAAAABAAKABIAGgAiAAYAAAABACAABAAAAAEARgADAAAAAQBsAAIAAAABAIYAAQAcABYAAQAiAAwAAQAEAAEAAAAAAAEAAQAHAAEAAQAIAAEAAAAGAAEAAAAAAAEAHAAWAAEAIgAMAAEABAABAAAAAAABAAEABAABAAEABwABAAAABgABAAAAAAABABoAAgAAAA4AFAAAAAEAAAAAAAEAAAAAAAEAAgAEAAYAAQAeAAQAAwABAAwAAgAF/JAAAAAAAAkAAPyQA3AAAQABAAQAAAABAAAAAOIB6+cAAAAA5g1tdwAAAADmDW13"; + + public static void main(String[] args) throws Exception { + + float size = 22; + byte[] ttfBytes = Base64.getDecoder().decode(TTF_BYTES); + ByteArrayInputStream ttfStream = new ByteArrayInputStream(ttfBytes); + Font unscaled = Font.createFont(Font.TRUETYPE_FONT, ttfStream) + .deriveFont(size) + .deriveFont(Map.of(TextAttribute.KERNING, TextAttribute.KERNING_ON)); + + BufferedImage image = new BufferedImage(2000, 2000, BufferedImage.TYPE_BYTE_GRAY); + Graphics2D g2d = image.createGraphics(); + g2d.setRenderingHints(Map.of( + RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_ON)); + + try { + for (int scale = 1; scale <= 10; scale++) { + + // we're checking 4 fonts, verifying correct behavior: + // 1. a font scaled uniformly via font size + // 2. a font scaled uniformly via AffineTransform + // 3. a font scaled 2x taller via AffineTransform + // 4. a font without extra scaling + + AffineTransform at1 = AffineTransform.getScaleInstance(scale, scale); + AffineTransform at2 = AffineTransform.getScaleInstance(scale, scale * 2); + + Font scaled1 = unscaled.deriveFont(size * scale); + Font scaled2 = unscaled.deriveFont(at1); + Font scaled3 = unscaled.deriveFont(at2); + + Dimension dim = measure(image, g2d, scaled1, "a"); + Dimension tall2 = new Dimension(dim.width, dim.height * 2); + Dimension tall4 = new Dimension(dim.width, dim.height * 4); + Dimension tall8 = new Dimension(dim.width, dim.height * 8); + + Dimension orig = measure(image, g2d, unscaled, "a"); + Dimension orig2 = new Dimension(orig.width, orig.height * 2); + + checkSizes(image, g2d, unscaled, orig, orig2, "unscaled"); + checkSizes(image, g2d, scaled1, dim, tall2, "scaled 1"); + checkSizes(image, g2d, scaled2, dim, tall2, "scaled 2"); + checkSizes(image, g2d, scaled3, tall2, tall4, "scaled 3"); + + g2d.setTransform(at1); + checkSizes(image, g2d, unscaled, dim, tall2, "unscaled with G2D 1"); + + g2d.setTransform(at2); + checkSizes(image, g2d, unscaled, tall2, tall4, "unscaled with G2D 2"); + + g2d.setTransform(AffineTransform.getScaleInstance(1, 2)); + checkSizes(image, g2d, scaled1, tall2, tall4, "scaled 1 with G2D 3"); + checkSizes(image, g2d, scaled2, tall2, tall4, "scaled 2 with G2D 3"); + checkSizes(image, g2d, scaled3, tall4, tall8, "scaled 3 with G2D 3"); + + g2d.setTransform(new AffineTransform()); // reset + } + } finally { + g2d.dispose(); + } + } + + private static void checkSizes(BufferedImage image, Graphics2D g2d, + Font font, Dimension normal, Dimension tall, + String scenario) { + + // individual glyphs + checkSize(image, g2d, font, "a", normal, scenario); + checkSize(image, g2d, font, "b", normal, scenario); + checkSize(image, g2d, font, "c", normal, scenario); + checkSize(image, g2d, font, "d", normal, scenario); + checkSize(image, g2d, font, "e", normal, scenario); + checkSize(image, g2d, font, "f", normal, scenario); + checkSize(image, g2d, font, "g", normal, scenario); + + // GPOS combinations + checkSize(image, g2d, font, "ab", normal, scenario); + checkSize(image, g2d, font, "ac", normal, scenario); + checkSize(image, g2d, font, "ad", normal, scenario); + checkSize(image, g2d, font, "ade", normal, scenario); + checkSize(image, g2d, font, "af", tall, scenario); + } + + private static void checkSize(BufferedImage image, Graphics2D g2d, + Font font, String text, Dimension expected, + String scenario) { + int maxWidthVariance = Math.max((int) Math.ceil(expected.width * 0.05), 1); + int maxHeightVariance = Math.max((int) Math.ceil(expected.height * 0.05), 1); + Dimension actual = measure(image, g2d, font, text); + if (actual == null || + Math.abs(actual.width - expected.width) > maxWidthVariance || + Math.abs(actual.height - expected.height) > maxHeightVariance) { + String id = scenario + " " + text; + saveImage(id, image); + throw new RuntimeException(id + ": " + actual + " != " + expected); + } + } + + private static Dimension measure(BufferedImage image, Graphics2D g2d, + Font font, String text) { + + int width = image.getWidth(); + int height = image.getHeight(); + Point2D.Float center = new Point2D.Float(width / 2, height / 2); + + try { + // ensure we draw in the center, even if G2D is scaled + g2d.getTransform().createInverse().transform(center, center); + } catch (NoninvertibleTransformException e) { + throw new RuntimeException(e); + } + + g2d.setColor(Color.WHITE); + g2d.fillRect(0, 0, width, height); + g2d.setColor(Color.BLACK); + g2d.setFont(font); + g2d.drawString(text, center.x, center.y); + + int minX = Integer.MAX_VALUE; + int minY = Integer.MAX_VALUE; + int maxX = Integer.MIN_VALUE; + int maxY = Integer.MIN_VALUE; + int[] rowPixels = new int[width]; + for (int y = 0; y < height; y++) { + image.getRGB(0, y, width, 1, rowPixels, 0, width); + for (int x = 0; x < width; x++) { + boolean white = (rowPixels[x] == -1); + if (!white) { + if (x < minX) { + minX = x; + } + if (y < minY) { + minY = y; + } + if (x > maxX) { + maxX = x; + } + if (y > maxY) { + maxY = y; + } + } + } + } + + if (minX != Integer.MAX_VALUE && + minY != Integer.MAX_VALUE && + maxX != Integer.MIN_VALUE && + maxY != Integer.MIN_VALUE) { + return new Dimension(maxX - minX + 1, maxY - minY + 1); + } else { + return null; + } + } + + private static void saveImage(String name, BufferedImage image) { + try { + String dir = System.getProperty("test.classes", "."); + String path = dir + File.separator + name + ".png"; + File file = new File(path); + ImageIO.write(image, "png", file); + } catch (Exception e) { + // we tried, and that's enough + } + } +} diff --git a/test/jdk/java/awt/SplashScreen/MultiResolutionSplash/unix/UnixMultiResolutionSplashTest.java b/test/jdk/java/awt/SplashScreen/MultiResolutionSplash/unix/UnixMultiResolutionSplashTest.java deleted file mode 100644 index 99cc58e13a3..00000000000 --- a/test/jdk/java/awt/SplashScreen/MultiResolutionSplash/unix/UnixMultiResolutionSplashTest.java +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -import java.awt.Color; -import java.awt.Dialog; -import java.awt.Frame; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Panel; -import java.awt.Rectangle; -import java.awt.Robot; -import java.awt.SplashScreen; -import java.awt.TextField; -import java.awt.Window; -import java.awt.event.KeyEvent; -import java.awt.image.BufferedImage; -import java.io.BufferedReader; -import java.io.File; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.imageio.ImageIO; - -/** - * @test - * @key headful - * @bug 8145174 8151787 8168657 - * @summary HiDPI splash screen support on Linux - * @modules java.desktop/sun.java2d - * @requires (os.family == "linux") - * @run main UnixMultiResolutionSplashTest - */ - -public class UnixMultiResolutionSplashTest { - - private static final int IMAGE_WIDTH = 300; - private static final int IMAGE_HEIGHT = 200; - private static int inx = 0; - private static final ImageInfo[] tests = { - new ImageInfo("splash1.png", "splash1@200pct.png", Color.BLUE, Color.GREEN), - new ImageInfo("splash2", "splash2@2x", Color.WHITE, Color.BLACK), - new ImageInfo("splash3.", "splash3@200pct.", Color.YELLOW, Color.RED) - }; - - public static void main(String[] args) throws Exception { - - if (args.length == 0) { - generateImages(); - for (ImageInfo test : tests) { - createChildProcess(test); - } - } else { - int index = Integer.parseInt(args[0]); - testSplash(tests[index]); - } - } - - static void createChildProcess(ImageInfo test) { - String javaPath = System.getProperty("java.home"); - File file = new File(test.name1x); - String classPathDir = System.getProperty("java.class.path"); - Map env = new HashMap(); - env.put("GDK_SCALE", "2"); - int exitValue = doExec(env, javaPath + File.separator + "bin" + File.separator - + "java", "-splash:" + file.getAbsolutePath(), "-cp", - classPathDir, "UnixMultiResolutionSplashTest", String.valueOf(inx++)); - if (exitValue != 0) { - throw new RuntimeException("Test Failed"); - } - } - - static void testSplash(ImageInfo test) throws Exception { - SplashScreen splashScreen = SplashScreen.getSplashScreen(); - if (splashScreen == null) { - throw new RuntimeException("Splash screen is not shown!"); - } - Graphics2D g = splashScreen.createGraphics(); - Rectangle splashBounds = splashScreen.getBounds(); - int screenX = (int) splashBounds.getCenterX(); - int screenY = (int) splashBounds.getCenterY(); - Robot robot = new Robot(); - Color splashScreenColor = robot.getPixelColor(screenX, screenY); - - float scaleFactor = getScaleFactor(); - Color testColor = (1 < scaleFactor) ? test.color2x : test.color1x; - if (!compare(testColor, splashScreenColor)) { - throw new RuntimeException( - "Image with wrong resolution is used for splash screen!"); - } - } - - static int doExec(Map envToSet, String... cmds) { - Process p = null; - ProcessBuilder pb = new ProcessBuilder(cmds); - Map env = pb.environment(); - for (String cmd : cmds) { - System.out.print(cmd + " "); - } - System.out.println(); - if (envToSet != null) { - env.putAll(envToSet); - } - BufferedReader rdr = null; - try { - List outputList = new ArrayList<>(); - pb.redirectErrorStream(true); - p = pb.start(); - rdr = new BufferedReader(new InputStreamReader(p.getInputStream())); - String in = rdr.readLine(); - while (in != null) { - outputList.add(in); - in = rdr.readLine(); - System.out.println(in); - } - p.waitFor(); - p.destroy(); - } catch (Exception ex) { - ex.printStackTrace(); - } - return p.exitValue(); - } - - static void testFocus() throws Exception { - - System.out.println("Focus Test!"); - Robot robot = new Robot(); - robot.setAutoDelay(50); - Frame frame = new Frame(); - frame.setSize(100, 100); - String test = "123"; - TextField textField = new TextField(test); - textField.selectAll(); - frame.add(textField); - frame.setVisible(true); - robot.waitForIdle(); - - robot.keyPress(KeyEvent.VK_A); - robot.keyRelease(KeyEvent.VK_A); - robot.keyPress(KeyEvent.VK_B); - robot.keyRelease(KeyEvent.VK_B); - robot.waitForIdle(); - - frame.dispose(); - if (!textField.getText().equals("ab")) { - throw new RuntimeException("Focus is lost! " + - "Expected 'ab' got " + "'" + textField.getText() + "'."); - } - } - - static boolean compare(Color c1, Color c2) { - return compare(c1.getRed(), c2.getRed()) - && compare(c1.getGreen(), c2.getGreen()) - && compare(c1.getBlue(), c2.getBlue()); - } - - static boolean compare(int n, int m) { - return Math.abs(n - m) <= 50; - } - - static float getScaleFactor() { - - final Dialog dialog = new Dialog((Window) null); - dialog.setSize(100, 100); - dialog.setModal(true); - float[] scaleFactors = new float[1]; - Panel panel = new Panel() { - - @Override - public void paint(Graphics g) { - String scaleStr = System.getenv("GDK_SCALE"); - if (scaleStr != null && !scaleStr.equals("")) { - try { - scaleFactors[0] = Float.valueOf(scaleStr); - } catch (NumberFormatException ex) { - scaleFactors[0] = 1.0f; - } - } - dialog.setVisible(false); - } - }; - dialog.add(panel); - dialog.setVisible(true); - dialog.dispose(); - return scaleFactors[0]; - } - - static void generateImages() throws Exception { - for (ImageInfo test : tests) { - generateImage(test.name1x, test.color1x, 1); - generateImage(test.name2x, test.color2x, 2); - } - } - - static void generateImage(String name, Color color, int scale) throws Exception { - File file = new File(name); - if (file.exists()) { - return; - } - BufferedImage image = new BufferedImage(scale * IMAGE_WIDTH, scale * IMAGE_HEIGHT, - BufferedImage.TYPE_INT_RGB); - Graphics g = image.getGraphics(); - g.setColor(color); - g.fillRect(0, 0, scale * IMAGE_WIDTH, scale * IMAGE_HEIGHT); - ImageIO.write(image, "png", file); - } - - static class ImageInfo { - - final String name1x; - final String name2x; - final Color color1x; - final Color color2x; - - public ImageInfo(String name1x, String name2x, Color color1x, Color color2x) { - this.name1x = name1x; - this.name2x = name2x; - this.color1x = color1x; - this.color2x = color2x; - } - } -} - diff --git a/test/jdk/java/awt/image/CreateSubsetSampleModelTest.java b/test/jdk/java/awt/image/CreateSubsetSampleModelTest.java new file mode 100644 index 00000000000..de4aba2afd7 --- /dev/null +++ b/test/jdk/java/awt/image/CreateSubsetSampleModelTest.java @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8378464 + * @summary test SampleModel.createSubsetSampleModel() + */ + +import static java.awt.image.DataBuffer.*; +import java.awt.image.BandedSampleModel; +import java.awt.image.SampleModel; +import java.awt.image.ComponentSampleModel; +import java.awt.image.PixelInterleavedSampleModel; +import java.awt.image.RasterFormatException; +import java.awt.image.SinglePixelPackedSampleModel; + +public class CreateSubsetSampleModelTest { + + static final int[] nullbands = null; + static final int[] zerobands = { }; + static final int[] oneband = { 0 }; + static final int[] twobands = { 0, 1 }; + static final int[] threebands = { 0, 1, 2 }; + static final int[] badbands = { 99 }; + + public static void main(String[] args) { + + cons(nullbands, NullPointerException.class); + cons(zerobands, IllegalArgumentException.class); + cons(oneband, null); + + PixelInterleavedSampleModel psm2bands = + new PixelInterleavedSampleModel(TYPE_BYTE, 1, 1, 1, 1, twobands); + testSubset(psm2bands); + + ComponentSampleModel csm2bands = + new ComponentSampleModel(TYPE_BYTE, 1, 1, 1, 1, twobands); + testSubset(csm2bands); + + BandedSampleModel bsm2bands = + new BandedSampleModel(TYPE_BYTE, 1, 1, 1, twobands, twobands); + testSubset(bsm2bands); + + SinglePixelPackedSampleModel sppsm2bands = + new SinglePixelPackedSampleModel(TYPE_BYTE, 1, 1, twobands); + testSubset(sppsm2bands); + } + + static void cons(int[] bands, Class eType) { + try { + new PixelInterleavedSampleModel(TYPE_BYTE, 1, 1, 1, 1, bands); + } catch (Exception e) { + if (eType == null || !(eType.isInstance(e))) { + throw new RuntimeException("failed for " + eType + " got " + e); + } else { + return; + } + } + if (eType != null) { + throw new RuntimeException("No exception for " + bands); + } + } + + static void subset(SampleModel sm, int[] bands, Class eType) { + try { + sm.createSubsetSampleModel(bands); + } catch (Exception e) { + if (eType == null || !(eType.isInstance(e))) { + e.printStackTrace(); + throw new RuntimeException("failed for " + eType + " got " + e); + } else { + return; + } + } + if (eType != null) { + throw new RuntimeException("No exception for " + bands); + } + } + + static void testSubset(SampleModel sm) { + subset(sm, nullbands, NullPointerException.class); + subset(sm, zerobands, IllegalArgumentException.class); + subset(sm, oneband, null); + subset(sm, twobands, null); + subset(sm, threebands, RasterFormatException.class); + subset(sm, badbands, ArrayIndexOutOfBoundsException.class); + } +} diff --git a/test/jdk/java/awt/image/PixelInterleavedSMConstructor.java b/test/jdk/java/awt/image/PixelInterleavedSMConstructor.java new file mode 100644 index 00000000000..6ee7fa6e01b --- /dev/null +++ b/test/jdk/java/awt/image/PixelInterleavedSMConstructor.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8378464 + * @summary test PixelInterleavedSampleModel constructor + */ + +import static java.awt.image.DataBuffer.*; +import java.awt.image.PixelInterleavedSampleModel; + +public class PixelInterleavedSMConstructor { + + static final int[] nullbands = null; + static final int[] zerobands = { }; + static final int[] oneband = { 0 }; + static final int[] negband = { -1 }; + + public static void main(String[] args) { + + cons(nullbands, NullPointerException.class); + cons(zerobands, IllegalArgumentException.class); + cons(oneband, null); + cons(negband, IllegalArgumentException.class); + } + + static void cons(int[] bands, Class eType) { + try { + new PixelInterleavedSampleModel(TYPE_BYTE, 1, 1, 1, 1, bands); + } catch (Exception e) { + if (eType == null || !(eType.isInstance(e))) { + throw new RuntimeException("failed for " + eType + " got " + e); + } else { + return; + } + } + if (eType != null) { + throw new RuntimeException("No exception for " + bands); + } + } +} diff --git a/test/jdk/java/lang/LazyConstant/LazyConstantTest.java b/test/jdk/java/lang/LazyConstant/LazyConstantTest.java index 4faaf74a811..7abad10d6cd 100644 --- a/test/jdk/java/lang/LazyConstant/LazyConstantTest.java +++ b/test/jdk/java/lang/LazyConstant/LazyConstantTest.java @@ -316,6 +316,7 @@ final class LazyConstantTest { int interrupted = 1; AtomicInteger observedInterrupted = new AtomicInteger(unset); CountDownLatch supplierRunning = new CountDownLatch(1); + CountDownLatch interruptOccured = new CountDownLatch(1); CountDownLatch release = new CountDownLatch(1); LazyConstant constant = LazyConstant.of(() -> { @@ -325,22 +326,33 @@ final class LazyConstantTest { } catch (InterruptedException e) { observedInterrupted.set(Thread.currentThread().isInterrupted() ? interrupted : notInterrupted); Thread.currentThread().interrupt(); // restore if await cleared it + interruptOccured.countDown(); } return VALUE; }); AtomicInteger interruptedAfterGet = new AtomicInteger(unset); - Thread t = Thread.ofPlatform().start(() -> { - assertEquals(VALUE, constant.get()); - interruptedAfterGet.set(Thread.currentThread().isInterrupted() ? interrupted : notInterrupted); - }); + Thread t = null; + try { + t = Thread.ofPlatform().start(() -> { + assertEquals(VALUE, constant.get()); + interruptedAfterGet.set(Thread.currentThread().isInterrupted() ? interrupted : notInterrupted); + }); - assertTrue(supplierRunning.await(TIME_OUT_S, TimeUnit.SECONDS)); - Thread.sleep(OVERLAP_TIME_MS); - t.interrupt(); - release.countDown(); - t.join(); + assertTrue(supplierRunning.await(TIME_OUT_S, TimeUnit.SECONDS)); + t.interrupt(); + assertTrue(interruptOccured.await(TIME_OUT_S, TimeUnit.SECONDS)); + } finally { + // Safety net: if the test fails or is interrupted before the worker observes + // the interrupt, the latch is opened so the worker is not left parked + // until timeout and join has a chance to complete promptly. + release.countDown(); + if (t != null) { + t.join(TimeUnit.SECONDS.toMillis(TIME_OUT_S)); + } + } + assertFalse(t.isAlive()); assertEquals(notInterrupted, observedInterrupted.get()); // Observed before restoration of the status assertEquals(interrupted, interruptedAfterGet.get(), "get() cleared interrupt status"); diff --git a/test/jdk/java/net/httpclient/access/java.net.http/jdk/internal/net/http/HttpClientImplAccess.java b/test/jdk/java/net/httpclient/access/java.net.http/jdk/internal/net/http/HttpClientImplAccess.java index 875ac5426dd..ce57f654e93 100644 --- a/test/jdk/java/net/httpclient/access/java.net.http/jdk/internal/net/http/HttpClientImplAccess.java +++ b/test/jdk/java/net/httpclient/access/java.net.http/jdk/internal/net/http/HttpClientImplAccess.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,9 @@ import java.lang.reflect.Field; import java.net.http.HttpClient; import java.util.Objects; import java.util.Set; +import java.nio.ByteBuffer; +import java.util.Collection; +import java.util.Map; public final class HttpClientImplAccess { @@ -64,4 +67,29 @@ public final class HttpClientImplAccess { openedConnections.setAccessible(true); return (Set) openedConnections.get(clientImpl); } + + /** + * Returns all connections in the client's HTTP/2 pool. + */ + public static Collection getHttp2Connections(final HttpClient client) { + Objects.requireNonNull(client, "client"); + final HttpClientImpl clientImpl = impl(client); + if (clientImpl == null) { + throw new IllegalStateException("Unsupported HttpClient implementation"); + } + Http2ClientImpl client2 = clientImpl.client2(); + Map connections = client2.getConnections(); + return connections.values(); + } + + /** + * Returns the cached header encoding buffer for the given Http2Connection. + */ + public static ByteBuffer getCachedHeaderBuffer(final Object conn) { + // The argument to this method is of type Object and not + // Http2Connection because callers outside the module cannot reference + // the package-private Http2Connection class. + Objects.requireNonNull(conn, "conn"); + return ((Http2Connection) conn).getCachedHeaderBuffer(); + } } diff --git a/test/jdk/java/net/httpclient/http2/HeaderEncodingBufferReuseTest.java b/test/jdk/java/net/httpclient/http2/HeaderEncodingBufferReuseTest.java new file mode 100644 index 00000000000..26fb06ec47d --- /dev/null +++ b/test/jdk/java/net/httpclient/http2/HeaderEncodingBufferReuseTest.java @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpRequest.BodyPublishers; +import java.net.http.HttpResponse; +import java.net.http.HttpResponse.BodyHandlers; +import java.nio.ByteBuffer; +import java.util.Collection; +import javax.net.ssl.SSLContext; +import static java.net.http.HttpClient.Version.HTTP_2; + +import jdk.httpclient.test.lib.common.HttpServerAdapters; +import jdk.httpclient.test.lib.common.HttpServerAdapters.HttpTestServer; +import jdk.httpclient.test.lib.common.HttpServerAdapters.HttpTestExchange; +import jdk.httpclient.test.lib.common.HttpServerAdapters.HttpTestHandler; +import jdk.internal.net.http.HttpClientImplAccess; +import jdk.test.lib.net.URIBuilder; +import jdk.test.lib.net.SimpleSSLContext; + +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +/* + * @test + * @bug 8383248 + * @summary Verifies that Http2Connection.cachedHeaderBuffer is reused + * across multiple requests on the same connection. + * @library /test/lib /test/jdk/java/net/httpclient/lib + * /test/jdk/java/net/httpclient/access + * @build java.net.http/jdk.internal.net.http.HttpClientImplAccess + * jdk.httpclient.test.lib.common.HttpServerAdapters + * jdk.test.lib.net.SimpleSSLContext + * @run junit/othervm + * ${test.main.class} + */ + +public class HeaderEncodingBufferReuseTest implements HttpServerAdapters { + + static String httpUri; + static SSLContext sslContext; + static HttpTestServer testServer; + + @BeforeAll + static void init() throws Exception { + sslContext = SimpleSSLContext.findSSLContext(); + testServer = HttpTestServer.create(HTTP_2, sslContext); + testServer.addHandler(new OkHandler(), "/test"); + testServer.start(); + httpUri = URIBuilder.newBuilder() + .scheme("https") + .loopback() + .port(testServer.getAddress().getPort()) + .path("/test") + .build() + .toString(); + } + + @AfterAll + static void teardown() { + testServer.stop(); + } + + @Test + void test() throws Exception { + try (HttpClient client = HttpClient.newBuilder() + .proxy(HttpClient.Builder.NO_PROXY) + .version(HttpClient.Version.HTTP_2) + .sslContext(sslContext) + .build()) { + + // Send an initial request to allocate the header encoding buffer. + assertEquals(200, send(client, httpUri, 2).statusCode()); + + Collection connections = HttpClientImplAccess.getHttp2Connections(client); + assertEquals(1, connections.size()); + Object conn = connections.iterator().next(); + + ByteBuffer cached = HttpClientImplAccess.getCachedHeaderBuffer(conn); + assertNotNull(cached); + + // Send another request and verify the same buffer is reused. + assertEquals(200, send(client, httpUri, 2).statusCode()); + connections = HttpClientImplAccess.getHttp2Connections(client); + assertEquals(1, connections.size()); + assertSame(conn, connections.iterator().next()); + assertSame(cached, HttpClientImplAccess.getCachedHeaderBuffer(conn)); + + // Verify that the buffer is reused when headers span multiple frames. + assertEquals(200, send(client, httpUri, 300).statusCode()); + connections = HttpClientImplAccess.getHttp2Connections(client); + assertEquals(1, connections.size()); + assertSame(conn, connections.iterator().next()); + assertSame(cached, HttpClientImplAccess.getCachedHeaderBuffer(conn)); + } + } + + static HttpResponse send(HttpClient client, String uri, int headerCount) throws Exception { + HttpRequest.Builder builder = HttpRequest.newBuilder(URI.create(uri)) + .POST(BodyPublishers.ofString("test")); + for (int i = 0; i < headerCount; i++) { + builder.header("X-Header-" + i, "value-" + "x".repeat(50) + "-" + i); + } + return client.send(builder.build(), BodyHandlers.discarding()); + } + + static class OkHandler implements HttpTestHandler { + @Override + public void handle(HttpTestExchange exchange) throws IOException { + exchange.sendResponseHeaders(200, 0); + exchange.getResponseBody().close(); + } + } +} diff --git a/test/jdk/java/security/PEM/PEMData.java b/test/jdk/java/security/PEM/PEMData.java index 0005ec4e582..09c4663aeee 100644 --- a/test/jdk/java/security/PEM/PEMData.java +++ b/test/jdk/java/security/PEM/PEMData.java @@ -24,7 +24,8 @@ */ import javax.crypto.EncryptedPrivateKeyInfo; -import java.security.DEREncodable; +import java.nio.charset.StandardCharsets; +import java.security.BinaryEncodable; import java.security.KeyPair; import java.security.PEM; import java.security.cert.X509CRL; @@ -32,7 +33,9 @@ import java.security.cert.X509Certificate; import java.security.interfaces.*; import java.util.ArrayList; import java.util.Base64; +import java.util.HexFormat; import java.util.List; +import java.util.regex.Matcher; import java.util.regex.Pattern; /** @@ -399,26 +402,26 @@ class PEMData { 6onPAs4hkm+63dfzCojvEkALevO8J3OVX7YS5q9J1r75wDn60Ob0Zh+iiorpx8Ob WqcWcoJqfdLEyBT+ -----END PRIVATE KEY----- - """, DEREncodable.class, null); + """, BinaryEncodable.class, null); private static final Entry invalidPEM = new Entry("invalidPEM", """ -----BEGIN INVALID PEM----- MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDBVS52ZSKZ0oES7twD2 GGwRIVu3uHlGIwlu0xzFe7sgIPntca2bHfYMhgGxrlCm0q+hZANiAAQNWgwWfLX8 8pYVjvwbfvDF9f+Oa9w6JjrfpWwFAUI6b1OPgrNUh+yXtUXnQNXnfUcIu0Os53bM - """, DEREncodable.class, null); + """, BinaryEncodable.class, null); private static final Entry invalidHeader = new Entry("invalidHeader", """ ---BEGIN PRIVATE KEY--- MC4CAQAwBQYDK2VwBCIEIFFZsmD+OKk67Cigc84/2fWtlKsvXWLSoMJ0MHh4jI4I -----END PRIVATE KEY----- - """, DEREncodable.class, null); + """, BinaryEncodable.class, null); private static final Entry invalidFooter = new Entry("invalidFooter", """ -----BEGIN PRIVATE KEY----- MC4CAQAwBQYDK2VwBCIEIFFZsmD+OKk67Cigc84/2fWtlKsvXWLSoMJ0MHh4jI4I ---END PRIVATE KEY--- - """, DEREncodable.class, null); + """, BinaryEncodable.class, null); private static final Entry incorrectFooter = new Entry("incorrectFooter", """ -----BEGIN PRIVATE KEY----- @@ -427,7 +430,7 @@ class PEMData { 8pYVjvwbfvDF9f+Oa9w6JjrfpWwFAUI6b1OPgrNUh+yXtUXnQNXnfUcIu0Os53bM 8fTqPkQl6RyWEDHeXqJK8zTBHMeBq9nLfDPSbzQgLDyC64Orn0D8exM= -----END PUBLIC KEY----- - """, DEREncodable.class, null); + """, BinaryEncodable.class, null); // EC cert with explicit parameters -- Not currently supported by SunEC static final String ecCertEX = """ @@ -498,6 +501,41 @@ class PEMData { -----END CERTIFICATE REQUEST----- """ + postData, PEM.class, "SunEC"); + // This PEM is not valid, it is only used to verify PEMDecoder will + // parse the non-base64 text properly. + public static final String encpkcs1 = """ + -----BEGIN RSA PRIVATE KEY----- + Proc-Type: 4,ENCRYPTED + DEK-Info: DES-EDE3-CBC,ECBE98FA344F0C87 + + MIIEowIBAAKCAQEAqozTLan1qFcOCWnS63jXQn5lLyGOKDv3GM11n2zkGGrChayj + cSzB2KTlDmN9NgOyFdqGNWbSgdmXR5ToHGHYwaKubJoQIoPQcsipWDI156d3+X/8 + BxCGY8l5nYwvS4olOXc+2kEjeFF1eamnm9IQ5DHZfaFPl0ri4Yfm1YHBAbt/7HvF + 3MBjgBj1xSsSFLW4O6ws6guRVGDfKBVyyRNUhRTbSua/nEz0wAjxF2PWT+ZTHS6M + 0siYwVTuPI4/n4ItoYoahvGb9JskkXP+bc/QZJCTFYdyxF5tKqVMSdYaJTxop02p + Jo3oeafVKSlBrr0K731xgNBKqBud44aKT5R96QIDAQABAoIBAQCD9Q/T7gOvayPm + LqXOISJURV1emRTXloX5/8Y5QtQ8/CVjrg6Lm3ikefjsKBgR+cwJUpmyqcrIQyXk + cZchlqdSMt/IEW/YdKqMlStJnRfOE+ok9lx2ztdcT9+0AWn6hXmFu/i6f9nE1yoQ + py6SxnbhSJyhsnTVd1CR9Uep/InsHvYW/15WlVMD1VuCSIt9sefqXwavbAfBaqbn + mjwBB/ulsqKhHSuRq/QWqlj+jyGqhhYmTguC1Qwt0woDbThiHtK+suCTAlGBj/A+ + IZ1U9d+VsHBcWDKBkxmlKWcJAGR3xXiKKy9vfzC+DU7L99kgay80VZarDyXgiy78 + 9xMMzRMBAoGBANoxnZhu1bUFtLqTJ1HfDm6UB+1zVd2Mu4DXYdy/AHjoaCLp05OQ + 0ZeyhO/eXPT+eGpzCxkWD7465KO/QDfnp54p/NS73jaJVdWQHBhzJx1MymqURy3N + JQeW4+ojzwSmVXcrs7Og6EBa4L+PWLpMLW2kODniCY+vp9f5LS6m8UPJAoGBAMgZ + 4rBw7B9YFZZW/EE4eos4Q7KtA5tEP6wvCq04oxfiSytWXifYX0ToPp0CHhZlWOxk + v9a/BDGqM7AxAQJs7mmIvT5AT2V1w7oTbFPnnAo6pQtLcfaxdFFqr0h6t0sXSOKC + rQeZAqqFqwuOyP7vT0goGlBruHkwS21NKkzCyzkhAoGAc2JjhbWu+8Cdt0CUPX5o + ol9T5eTlFnkSuuqrTNIQzN+SGkxu341o2QDFvhdoLwLW6OwXhVeeUanROSqtKiMu + B70Kf/EtbMephXtk8CUNHTh7nmr1TSo8F8xakHoJQts3PQL2T9qal1W3nnWOpU4d + g+qg9TMsfTiV2OdjVlVgJskCgYBSnjV1qjojuue22hVvDFW0c7en5z2M9wHfItEi + sjbMnrdwnklj5Dd5qPZpNz2a+59ag0Kd9OJTazXKMoF7MeTCGB4ivMTLXHNCudBJ + WGCZ7JrGbhEQzTX8g7L5lwlk7KlANLoiX++03lm//OVKNR6j6ULsH33cM6+A4pJr + fSYRYQKBgCr9iMTmL0x+n6AmMNecR+MhDxi99Oy0s2EBAYqN9g/8yNgwM4KR0cjz + EcgIOtkvoTrJ9Cquvuj+O7/d2yNoH0SZQ4IYJKq47/Z4kKhwXzJnBCCCBKgkjfub + RTQSNnSEgTaBD29l7FrhNRHX9lIKFZ23caCTBS6o3q3+KgPbq7ao + -----END RSA PRIVATE KEY----- + """; + final static Pattern CR = Pattern.compile("\r"); final static Pattern LF = Pattern.compile("\n"); final static Pattern LSDEFAULT = Pattern.compile(System.lineSeparator()); @@ -543,8 +581,8 @@ class PEMData { clazz, provider, password()); } - Entry makeCR(String name) { - return new Entry(name, + Entry makeCR(String newName) { + return new Entry(newName, Pattern.compile(System.lineSeparator()).matcher(pem).replaceAll("\r"), clazz, provider, password()); } @@ -555,6 +593,32 @@ class PEMData { replaceAll(""), clazz, provider, password()); } + + Entry makeValidNoCRLF(String newName) { + int cr = pem.indexOf('\r'); + int lf = pem.indexOf('\n'); + if (cr == -1 && lf == -1) { + throw new AssertionError("Cannot find EOL with " + newName); + } + + Matcher eol; + int cut; // index right after the first EOL + + if (lf - cr == 1) { + eol = LSDEFAULT.matcher(pem); + cut = lf + 1; + } else if (cr != -1 && cr < lf) { + eol = CR.matcher(pem); + cut = cr + 1; + } else { + eol = LF.matcher(pem); + cut = lf + 1; + } + + String p = pem.substring(0, cut) + + eol.pattern().matcher(pem.substring(cut)).replaceAll(""); + return new Entry(newName, p, clazz, provider, password()); + } } static public Entry getEntry(String varname) { @@ -613,8 +677,8 @@ class PEMData { passList.addAll(entryList); passList.addAll(encryptedList); - failureEntryList.add(new Entry("emptyPEM", "", DEREncodable.class, null)); - failureEntryList.add(new Entry("nullPEM", null, DEREncodable.class, null)); + failureEntryList.add(new Entry("emptyPEM", "", BinaryEncodable.class, null)); + failureEntryList.add(new Entry("nullPEM", null, BinaryEncodable.class, null)); failureEntryList.add(incorrectFooter); failureEntryList.add(invalidPEM); failureEntryList.add(invalidDer); @@ -649,6 +713,18 @@ class PEMData { } } + static void checkResultsExact(String expected, String result) { + try { + if (expected.compareTo(result) != 0) { + System.out.println("expected:\n" + expected); + System.out.println("generated:\n" + result); + indexDiff(expected, result); + } + } catch (AssertionError e) { + throw new AssertionError("Encoder PEM mismatch "); + } + } + static void indexDiff(String a, String b) { String lenerr = ""; int len = a.length(); diff --git a/test/jdk/java/security/PEM/PEMDecoderTest.java b/test/jdk/java/security/PEM/PEMDecoderTest.java index b04c31f1ebd..dc0fe18956d 100644 --- a/test/jdk/java/security/PEM/PEMDecoderTest.java +++ b/test/jdk/java/security/PEM/PEMDecoderTest.java @@ -65,7 +65,7 @@ public class PEMDecoderTest { System.out.println("Decoder test withFactory:"); PEMData.entryList.forEach(entry -> test(entry, true)); System.out.println("Decoder test returning DEREncodable class:"); - PEMData.entryList.forEach(entry -> test(entry, DEREncodable.class)); + PEMData.entryList.forEach(entry -> test(entry, BinaryEncodable.class)); System.out.println("Decoder test with encrypted PEM:"); PEMData.encryptedList.forEach(PEMDecoderTest::testEncrypted); System.out.println("Decoder test with OAS:"); @@ -101,7 +101,7 @@ public class PEMDecoderTest { System.out.println("Decoder test ecsecp256 to P8EKS:"); decr.decode(PEMData.ecsecp256.pem(), PKCS8EncodedKeySpec.class); - System.out.println("Checking if decode() returns the same encoding:"); + System.out.println("Checking if content() returns the same encoding:"); PEMData.privList.forEach(PEMDecoderTest::testDERCheck); PEMData.oasList.forEach(PEMDecoderTest::testDERCheck); @@ -110,21 +110,22 @@ public class PEMDecoderTest { PEMData.oasList.stream().filter(e -> !e.name().endsWith("xdh")) .forEach(PEMDecoderTest::testSignature); - System.out.println("Checking if decode() returns a PKCS8Key and can generate a pub"); + System.out.println("Checking if content() returns a PKCS8Key and can generate a pub"); PEMData.oasList.forEach(PEMDecoderTest::testPKCS8Key); System.out.println("Checking if ecCSR:"); test(PEMData.ecCSR); System.out.println("Checking if ecCSR with preData:"); - DEREncodable result = d.decode(PEMData.ecCSRWithData.pem(), PEM.class); + BinaryEncodable result = d.decode(PEMData.ecCSRWithData.pem(), PEM.class); if (result instanceof PEM rec) { if (PEMData.preData.compareTo(new String(rec.leadingData())) != 0) { System.err.println("expected: \"" + PEMData.preData + "\""); System.err.println("received: \"" + new String(rec.leadingData()) + "\""); throw new AssertionError("ecCSRWithData preData wrong"); } - if (rec.content().lastIndexOf("F") > rec.content().length() - 5) { - System.err.println("received: " + rec.content()); + String s = rec.toString(); + if (s.lastIndexOf("F") > s.length() - 5) { + System.err.println("received: " + s); throw new AssertionError("ecCSRWithData: " + "End of PEM data has an unexpected character"); } @@ -165,16 +166,6 @@ public class PEMDecoderTest { } System.out.println("PASS"); - System.out.println("Check if PEM decode decodes content correctly"); - final String tmpContent = "1234567"; - final PEM tmpPem = new PEM("ONE", tmpContent); - if (!Arrays.equals( - Base64.getDecoder().decode(tmpContent), - tmpPem.decode())) { - throw new AssertionError("PEM decode error"); - } - System.out.println("PASS"); - System.out.println("Decode to EncryptedPrivateKeyInfo: "); EncryptedPrivateKeyInfo ekpi = d.decode(PEMData.ed25519ep8.pem(), EncryptedPrivateKeyInfo.class); @@ -217,7 +208,13 @@ public class PEMDecoderTest { bos.write("--------\n".getBytes(StandardCharsets.ISO_8859_1)); bos.write(PEMData.ecsecp256ekpi.pem().getBytes(StandardCharsets.ISO_8859_1)); bis = new ByteArrayInputStream(bos.toByteArray()); - result = d.decode(bis, PEM.class); + d.decode(bis, PEM.class); + + d.decode(PEMData.encpkcs1, PEM.class); + try { + d.decode(PEMData.ecCSR.pem(), BinaryEncodable.class); + throw new AssertionError("decode(s, BinaryEncodable.class passed"); + } catch (ClassCastException _) {} } static void testInputStream() throws IOException { @@ -287,12 +284,14 @@ public class PEMDecoderTest { static void testPEMRecord(PEMData.Entry entry) { PEM r = d.decode(entry.pem(), PEM.class); - String expected = entry.pem().split("-----")[2].replace(System.lineSeparator(), ""); + int start = entry.pem().indexOf("-----"); + int end = entry.pem().lastIndexOf("-----"); + String expected = entry.pem().substring(start, end); try { - PEMData.checkResults(expected, r.content()); + PEMData.checkResults(expected, r.toString()); } catch (AssertionError e) { System.err.println("expected:\n" + expected); - System.err.println("received:\n" + r.content()); + System.err.println("received:\n" + r); throw e; } @@ -322,7 +321,7 @@ public class PEMDecoderTest { static void testPEMRecordDecode(PEMData.Entry entry) { PEM r = d.decode(entry.pem(), PEM.class); - DEREncodable de = d.decode(r.toString()); + BinaryEncodable de = d.decode(r.toString()); boolean result = switch(r.type()) { case Pem.PRIVATE_KEY -> @@ -371,7 +370,7 @@ public class PEMDecoderTest { } } - static DEREncodable testEncrypted(PEMData.Entry entry) { + static BinaryEncodable testEncrypted(PEMData.Entry entry) { PEMDecoder decoder; if (!Objects.equals(entry.clazz(), EncryptedPrivateKeyInfo.class)) { decoder = d.withDecryption(entry.password()); @@ -388,27 +387,27 @@ public class PEMDecoderTest { } // Change the Entry to use the given class as the expected class returned - static DEREncodable test(PEMData.Entry entry, Class c) { + static BinaryEncodable test(PEMData.Entry entry, Class c) { return test(entry.newClass(c), false); } // Run test with a given Entry - static DEREncodable test(PEMData.Entry entry) { + static BinaryEncodable test(PEMData.Entry entry) { return test(entry, false); } // Run test with a given Entry - static DEREncodable test(PEMData.Entry entry, boolean withFactory) { + static BinaryEncodable test(PEMData.Entry entry, boolean withFactory) { System.out.printf("Testing %s %s%n", entry.name(), entry.provider()); try { PEMDecoder pemDecoder; if (withFactory) { Provider provider = Security.getProvider(entry.provider()); - pemDecoder = d.withFactory(provider); + pemDecoder = d.withFactoriesOf(provider); } else { pemDecoder = d; } - DEREncodable r = test(entry.pem(), entry.clazz(), pemDecoder); + BinaryEncodable r = test(entry.pem(), entry.clazz(), pemDecoder); System.out.println("PASS (" + entry.name() + ")"); return r; } catch (Exception | AssertionError e) { @@ -444,9 +443,9 @@ public class PEMDecoderTest { * Perform the decoding test with the given decoder, on the given pem, and * expect the clazz to be returned. */ - static DEREncodable test(String pem, Class clazz, PEMDecoder decoder) + static BinaryEncodable test(String pem, Class clazz, PEMDecoder decoder) throws IOException { - DEREncodable pk = decoder.decode(pem); + BinaryEncodable pk = decoder.decode(pem); // Check that clazz matches what pk returned. if (pk.getClass().equals(clazz)) { @@ -553,7 +552,7 @@ public class PEMDecoderTest { byte[] data = "12345678".getBytes(); PrivateKey privateKey; - DEREncodable der = d.decode(entry.pem()); + BinaryEncodable der = d.decode(entry.pem()); switch (der) { case PrivateKey p -> privateKey = p; case KeyPair kp -> privateKey = kp.getPrivate(); diff --git a/test/jdk/java/security/PEM/PEMEncoderTest.java b/test/jdk/java/security/PEM/PEMEncoderTest.java index 4b60758c89f..4d205f2f9bf 100644 --- a/test/jdk/java/security/PEM/PEMEncoderTest.java +++ b/test/jdk/java/security/PEM/PEMEncoderTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -56,7 +56,7 @@ import static jdk.test.lib.Asserts.assertThrows; public class PEMEncoderTest { - static Map keymap; + static Map keymap; static String pkcs8DefaultAlgExpect; public static void main(String[] args) throws Exception { @@ -79,8 +79,12 @@ public class PEMEncoderTest { keymap.keySet().forEach(key -> test(key, PEMEncoder.of())); System.out.println("Same instance re-encode testToString:"); keymap.keySet().forEach(key -> testToString(key, encoder)); + System.out.println("Same instance encode/encodeToString consistency test:"); + keymap.keySet().forEach(key -> testEncodeConsistency(key, encoder)); System.out.println("New instance re-encode testToString:"); keymap.keySet().forEach(key -> testToString(key, PEMEncoder.of())); + System.out.println("New instance encode/encodeToString consistency test:"); + keymap.keySet().forEach(key -> testEncodeConsistency(key, PEMEncoder.of())); System.out.println("Same instance Encoder testEncodedKeySpec:"); testEncodedKeySpec(encoder); System.out.println("New instance Encoder testEncodedKeySpec:"); @@ -90,6 +94,8 @@ public class PEMEncoderTest { keymap = generateObjKeyMap(PEMData.encryptedList); System.out.println("Same instance Encoder match test:"); keymap.keySet().forEach(key -> testEncryptedMatch(key, encoder)); + System.out.println("Same instance encrypted encode/encodeToString consistency test:"); + keymap.keySet().forEach(key -> testEncodeConsistency(key, encoder)); System.out.println("Same instance Encoder new withEnc test:"); keymap.keySet().forEach(key -> testEncrypted(key, encoder)); System.out.println("New instance Encoder and withEnc test:"); @@ -150,10 +156,36 @@ public class PEMEncoderTest { throw new AssertionError("encoder tried to encrypt " + "an EncryptedPrivateKeyInfo."); } catch (IllegalArgumentException _) {} + + // Check PEM string exact + String expected = encoder.encodeToString(decoder.decode( + PEMData.ecsecp256.pem())); + PEMData.Entry e = PEMData.ecsecp256.makeCRLF("ecsecp256CRLF"); + System.out.println("Exact PEM String check with CRLF only PEM:"); + PEMData.checkResultsExact(expected, encoder.encodeToString( + decoder.decode(e.pem()))); + System.out.println("Exact PEM String check with CR only PEM:"); + e = PEMData.ecsecp256.makeCR("ecsecp256CR"); + PEMData.checkResultsExact(expected, encoder.encodeToString( + decoder.decode(e.pem()))); + System.out.println("Exact PEM String check with NoCRLF only PEM:"); + e = PEMData.ecsecp256.makeValidNoCRLF("ecsecp256ValidNoCRLF"); + System.out.println(HexFormat.of().formatHex(e.pem().getBytes(StandardCharsets.UTF_8))); + System.out.println("EOL: " + HexFormat.of().formatHex(System.lineSeparator().getBytes(StandardCharsets.UTF_8))); + PEMData.checkResultsExact(expected, encoder.encodeToString( + decoder.decode(e.pem()))); + + // Independent structural check for the new byte-oriented utility path. + System.out.println("Testing consistency between pemEncodedFromArray()" + + "and pemEncoded():"); + testPemEncodedFromArray(); + + // Encode an empty PEM content + encoder.encode(new PEM("X", "")); } static Map generateObjKeyMap(List list) { - Map keymap = new HashMap<>(); + Map keymap = new HashMap<>(); PEMDecoder pemd = PEMDecoder.of(); for (PEMData.Entry entry : list) { try { @@ -202,6 +234,49 @@ public class PEMEncoderTest { System.out.println("PASS: " + entry.name()); } + static void testEncodeConsistency(String key, PEMEncoder encoder) { + byte[] encoding; + String pem; + PEMData.Entry entry = PEMData.getEntry(key); + try { + encoding = encoder.encode(keymap.get(key)); + pem = encoder.encodeToString(keymap.get(key)); + } catch (RuntimeException e) { + throw new AssertionError("Encoder consistency failure with " + + entry.name(), e); + } + + assertEquals(new String(encoding, StandardCharsets.ISO_8859_1), pem); + System.out.println("PASS: " + entry.name()); + } + + static void testPemEncodedFromArray() { + byte[] data = {1, 2, 3, 4, 5}; + String type = Pem.CERTIFICATE; + String base64 = Base64.getMimeEncoder(64, "\r\n".getBytes( + StandardCharsets.ISO_8859_1)).encodeToString(data); + var expected = ("-----BEGIN " + type + "-----\r\n" + + base64 + (!base64.endsWith("\n") ? "\r\n" : "") + + "-----END " + type + "-----\r\n"); + var result = Pem.pemEncoded(type, base64.getBytes(StandardCharsets.ISO_8859_1)); + if (!Arrays.equals(result, expected.getBytes(StandardCharsets.ISO_8859_1))) { + throw new AssertionError( + "result =\n" + new String(result, StandardCharsets.ISO_8859_1) + + "expected =\n " + expected); + } + + // Empty data should still include a CRLF before footer. + byte[] empty = new byte[0]; + String emptyBase64 = Base64.getMimeEncoder(64, "\r\n".getBytes( + StandardCharsets.ISO_8859_1)).encodeToString(empty); + String emptyExpected = "-----BEGIN " + type + "-----\r\n" + + emptyBase64 + (!emptyBase64.endsWith("\n") ? "\r\n" : "") + + "-----END " + type + "-----\r\n"; + assertEquals(new String(Pem.pemEncoded(type, empty), + StandardCharsets.ISO_8859_1), emptyExpected); + System.out.println("PASS"); + } + /* Test cannot verify PEM was the same as known PEM because we have no public access to the AlgoritmID.params and PBES2Parameters. @@ -237,7 +312,7 @@ public class PEMEncoderTest { try { encoder.encodeToString(keymap.get(key)); } catch (RuntimeException e) { - throw new AssertionError("Encrypted encoder failured with " + + throw new AssertionError("Encrypted encoder failed with " + entry.name(), e); } diff --git a/test/jdk/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java b/test/jdk/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java index 23a0b11d93c..1f48b077aca 100644 --- a/test/jdk/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java +++ b/test/jdk/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,13 +41,11 @@ */ import java.io.*; -import java.net.SocketException; -import java.security.DEREncodable; +import java.security.BinaryEncodable; import java.security.PEMDecoder; import java.util.*; import java.security.Security; import java.security.cert.*; -import java.security.cert.CertPathValidatorException.BasicReason; import sun.security.util.DerInputStream; /** @@ -161,7 +159,7 @@ public final class DisableRevocation { } private static CertStore generateCertificateStore() throws Exception { - Collection entries = new HashSet<>(); + Collection entries = new HashSet<>(); // generate certificate from certificate string entries.add(PEM_DECODER.decode(targetCertStr, X509Certificate.class)); diff --git a/test/jdk/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java b/test/jdk/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java index 1343aefa7f3..fc49aa69f84 100644 --- a/test/jdk/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java +++ b/test/jdk/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -40,14 +40,12 @@ * @author Xuelei Fan */ -import java.io.*; -import java.net.SocketException; -import java.security.DEREncodable; +import java.security.BinaryEncodable; import java.security.PEMDecoder; import java.util.*; import java.security.Security; import java.security.cert.*; -import java.security.cert.CertPathValidatorException.BasicReason; + import sun.security.util.DerInputStream; /** @@ -196,7 +194,7 @@ public final class KeyUsageMatters { } private static CertStore generateCertificateStore() throws Exception { - Collection entries = new HashSet<>(); + Collection entries = new HashSet<>(); // Decode and add certificates entries.add(PEM_DECODER.decode(targetCertStr, X509Certificate.class)); diff --git a/test/jdk/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java b/test/jdk/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java index 2a1514fae8a..95b02811a20 100644 --- a/test/jdk/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java +++ b/test/jdk/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -39,7 +39,7 @@ * @run main/othervm StatusLoopDependency alice */ -import java.security.DEREncodable; +import java.security.BinaryEncodable; import java.security.PEMDecoder; import java.security.Security; import java.security.cert.CertPathBuilder; @@ -210,9 +210,9 @@ public final class StatusLoopDependency { private static CertStore generateCertificateStore() throws Exception { - Collection entries = new HashSet<>(); + Collection entries = new HashSet<>(); - DEREncodable cert = pemDecoder.decode(targetCertStr, X509Certificate.class); + BinaryEncodable cert = pemDecoder.decode(targetCertStr, X509Certificate.class); entries.add(cert); cert = pemDecoder.decode(subCaCertStr, X509Certificate.class); @@ -228,7 +228,7 @@ public final class StatusLoopDependency { entries.add(cert); // generate CRL from CRL string - DEREncodable mixes = pemDecoder.decode(topCrlStr, X509CRL.class); + BinaryEncodable mixes = pemDecoder.decode(topCrlStr, X509CRL.class); entries.add(mixes); mixes = pemDecoder.decode(subCrlStr, X509CRL.class); diff --git a/test/jdk/java/security/cert/CertPathValidator/OCSP/FailoverToCRL.java b/test/jdk/java/security/cert/CertPathValidator/OCSP/FailoverToCRL.java index 2232ae06711..3bf801b8255 100644 --- a/test/jdk/java/security/cert/CertPathValidator/OCSP/FailoverToCRL.java +++ b/test/jdk/java/security/cert/CertPathValidator/OCSP/FailoverToCRL.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -136,13 +136,11 @@ */ import java.io.*; -import java.net.SocketException; -import java.security.DEREncodable; +import java.security.BinaryEncodable; import java.security.PEMDecoder; import java.util.*; import java.security.Security; import java.security.cert.*; -import java.security.InvalidAlgorithmParameterException; import java.security.cert.CertPathValidatorException.BasicReason; import java.util.Collections; @@ -232,7 +230,7 @@ public class FailoverToCRL { new ByteArrayInputStream(crlStr.getBytes()); // generate a cert store - Collection crls = new HashSet<>(); + Collection crls = new HashSet<>(); crls.add(PEM_DECODER.decode(crlStr, X509CRL.class)); diff --git a/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevel.java b/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevel.java index 947f0e0b485..81b6a4d1351 100644 --- a/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevel.java +++ b/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,9 +37,7 @@ * @author Xuelei Fan */ -import java.io.*; -import java.net.SocketException; -import java.security.DEREncodable; +import java.security.BinaryEncodable; import java.security.PEMDecoder; import java.util.*; import java.security.Security; @@ -142,7 +140,7 @@ public class CircularCRLOneLevel { private static CertStore generateCertificateStore() throws Exception { // generate a cert store - Collection entries = new HashSet<>(); + Collection entries = new HashSet<>(); entries.add(PEM_DECODER.decode(crlStr, X509CRL.class)); entries.add(PEM_DECODER.decode(crlIssuerCertStr, X509Certificate.class)); diff --git a/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevelRevoked.java b/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevelRevoked.java index 251883d4e51..caedb27f823 100644 --- a/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevelRevoked.java +++ b/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLOneLevelRevoked.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,9 +37,7 @@ * @author Xuelei Fan */ -import java.io.*; -import java.net.SocketException; -import java.security.DEREncodable; +import java.security.BinaryEncodable; import java.security.PEMDecoder; import java.util.*; import java.security.Security; @@ -142,7 +140,7 @@ public class CircularCRLOneLevelRevoked { private static CertStore generateCertificateStore() throws Exception { // generate CRL from CRL string - Collection entries = new HashSet<>(); + Collection entries = new HashSet<>(); entries.add(PEM_DECODER.decode(crlStr, X509CRL.class)); entries.add(PEM_DECODER.decode(crlIssuerCertStr, X509Certificate.class)); diff --git a/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevel.java b/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevel.java index c83f1bc1f5d..4a5d9fe409a 100644 --- a/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevel.java +++ b/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevel.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,7 @@ * @author Xuelei Fan */ -import java.security.DEREncodable; +import java.security.BinaryEncodable; import java.security.PEMDecoder; import java.security.Security; import java.security.cert.CertPath; @@ -198,11 +198,11 @@ public class CircularCRLTwoLevel { } private static CertStore generateCertificateStore() throws Exception { - Collection entries = new HashSet<>(); + Collection entries = new HashSet<>(); // generate CRL from CRL string - DEREncodable mixes = pemDecoder.decode(topCrlStr, X509CRL.class); + BinaryEncodable mixes = pemDecoder.decode(topCrlStr, X509CRL.class); entries.add(mixes); mixes = pemDecoder.decode(subCrlStr, X509CRL.class); diff --git a/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevelRevoked.java b/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevelRevoked.java index 7ac63072737..909b3e53a14 100644 --- a/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevelRevoked.java +++ b/test/jdk/java/security/cert/CertPathValidator/indirectCRL/CircularCRLTwoLevelRevoked.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,7 @@ * @author Xuelei Fan */ -import java.security.DEREncodable; +import java.security.BinaryEncodable; import java.security.PEMDecoder; import java.security.Security; import java.security.cert.CertPath; @@ -198,12 +198,12 @@ public class CircularCRLTwoLevelRevoked { } private static CertStore generateCertificateStore() throws Exception { - Collection entries = new HashSet<>(); + Collection entries = new HashSet<>(); // generate CRL from CRL string CertificateFactory cf = CertificateFactory.getInstance("X.509"); - DEREncodable mixes = pemDecoder.decode(topCrlStr, X509CRL.class); + BinaryEncodable mixes = pemDecoder.decode(topCrlStr, X509CRL.class); entries.add(mixes); mixes = pemDecoder.decode(subCrlStr, X509CRL.class); diff --git a/test/jdk/javax/accessibility/awt/CheckboxTest.java b/test/jdk/javax/accessibility/awt/CheckboxTest.java new file mode 100644 index 00000000000..7c690c16848 --- /dev/null +++ b/test/jdk/javax/accessibility/awt/CheckboxTest.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary Checkbox Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleComponentTester AccessibleStateSetTester + * @run main CheckboxTest + */ + +import java.awt.AWTException; +import java.awt.Checkbox; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Robot; +import java.lang.reflect.InvocationTargetException; + +import javax.accessibility.AccessibleState; +import javax.accessibility.AccessibleStateSet; + +public class CheckboxTest { + + private static Checkbox checkbox; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "Checkbox Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, Checkbox"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + CheckboxTest checkboxTest = new CheckboxTest(); + EventQueue.invokeAndWait(checkboxTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(checkboxTest::test); + } finally { + checkboxTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("Checkbox Test"); + checkbox = new Checkbox("This is a checkbox", true); + + checkbox.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + checkbox.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.add(checkbox); + frame.setSize(200, 200); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyCheckboxAccessibility( + checkbox, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new CheckboxStateTester( + checkbox, + checkbox.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + + checkbox.setState(!checkbox.getState()); + + AccessibleTestUtils.verifyCheckboxAccessibility( + checkbox, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new CheckboxStateTester( + checkbox, + checkbox.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + } + + private static final class CheckboxStateTester + extends AccessibleStateSetTester { + private final Checkbox checkbox; + private final AccessibleStateSet set; + + private CheckboxStateTester(Checkbox checkbox, AccessibleStateSet set) { + super(checkbox, set); + this.checkbox = checkbox; + this.set = set; + } + + @Override + public void testChecked() { + if (set.contains(AccessibleState.CHECKED)) { + if (!checkbox.getState()) { + throw new RuntimeException( + "AccessibleStateSet contains CHECKED but " + + "this component is not checked"); + } + } else { + if (checkbox.getState()) { + throw new RuntimeException( + "AccessibleStateSet does not contain CHECKED " + + "but this component is checked"); + } + } + } + } +} diff --git a/test/jdk/javax/accessibility/awt/FrameTest.java b/test/jdk/javax/accessibility/awt/FrameTest.java new file mode 100644 index 00000000000..4abe3246574 --- /dev/null +++ b/test/jdk/javax/accessibility/awt/FrameTest.java @@ -0,0 +1,158 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary Frame Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleComponentTester AccessibleStateSetTester + * @run main FrameTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Robot; +import java.lang.reflect.InvocationTargetException; + +import javax.accessibility.AccessibleState; +import javax.accessibility.AccessibleStateSet; + +public class FrameTest { + + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "Frame Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, Frame"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + FrameTest frameTest = new FrameTest(); + EventQueue.invokeAndWait(frameTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(frameTest::test); + } finally { + frameTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("Frame Test"); + + frame.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + frame.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.setSize(300, 300); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyFrameAccessibility( + frame, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new FrameStateTester( + frame, + frame.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + + frame.setResizable(false); + + AccessibleTestUtils.verifyFrameAccessibility( + frame, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new FrameStateTester( + frame, + frame.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + } + + private static final class FrameStateTester + extends AccessibleStateSetTester { + private final Frame component; + private final AccessibleStateSet set; + + private FrameStateTester(Frame frame, AccessibleStateSet set) { + super(frame, set); + this.component = frame; + this.set = set; + } + + @Override + public void testResizable() { + if (set.contains(AccessibleState.RESIZABLE)) { + if (!component.isResizable()) { + throw new RuntimeException( + "AccessibleStateSet contains RESIZABLE but " + + "this component is not resizable"); + } + } else { + if (component.isResizable()) { + throw new RuntimeException( + "AccessibleStateSet does not contain RESIZABLE " + + "but this component is resizable"); + } + } + } + + @Override + public void testActive() { + if (set.contains(AccessibleState.ACTIVE)) { + if (component.getFocusOwner() == null) { + throw new RuntimeException( + "AccessibleStateSet contains ACTIVE but " + + "this component is not active"); + } + } else { + if (component.getFocusOwner() != null) { + throw new RuntimeException( + "AccessibleStateSet does not contain ACTIVE but " + + "this component is active"); + } + } + } + } +} diff --git a/test/jdk/javax/accessibility/awt/LabelTest.java b/test/jdk/javax/accessibility/awt/LabelTest.java new file mode 100644 index 00000000000..dd837793eb5 --- /dev/null +++ b/test/jdk/javax/accessibility/awt/LabelTest.java @@ -0,0 +1,100 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary Label Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleComponentTester AccessibleStateSetTester + * @run main LabelTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Label; +import java.awt.Robot; +import java.lang.reflect.InvocationTargetException; + +public class LabelTest { + + private static Label label; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "Label Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, Label"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + LabelTest labelTest = new LabelTest(); + EventQueue.invokeAndWait(labelTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(labelTest::test); + } finally { + labelTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("Label Test"); + label = new Label("This is a label"); + + label.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + label.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.add(label); + frame.setSize(200, 200); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyLabelAccessibility( + label, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new AccessibleStateSetTester( + label, + label.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + } +} diff --git a/test/jdk/javax/accessibility/awt/ListTest.java b/test/jdk/javax/accessibility/awt/ListTest.java new file mode 100644 index 00000000000..011d850a4cb --- /dev/null +++ b/test/jdk/javax/accessibility/awt/ListTest.java @@ -0,0 +1,157 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary List Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleComponentTester AccessibleStateSetTester + * @run main ListTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.List; +import java.awt.Robot; +import java.lang.reflect.InvocationTargetException; + +import javax.accessibility.AccessibleState; +import javax.accessibility.AccessibleStateSet; + +public class ListTest { + + private static List list; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "List Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, List"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + ListTest listTest = new ListTest(); + EventQueue.invokeAndWait(listTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(listTest::test); + } finally { + listTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("List Test"); + list = new List(); + + list.add("Mercury"); + list.add("Venus"); + list.add("Earth"); + list.add("JavaSoft"); + list.add("Mars"); + list.add("Jupiter"); + list.add("Saturn"); + list.add("Uranus"); + list.add("Neptune"); + list.add("Pluto"); + + list.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + list.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.add(list); + frame.setSize(200, 200); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyListAccessibility( + list, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new ListStateTester( + list, + list.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + + list.setMultipleMode(!list.isMultipleMode()); + + AccessibleTestUtils.verifyListAccessibility( + list, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new ListStateTester( + list, + list.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + } + + private static final class ListStateTester + extends AccessibleStateSetTester { + private final List list; + private final AccessibleStateSet set; + + private ListStateTester(List list, AccessibleStateSet set) { + super(list, set); + this.list = list; + this.set = set; + } + + @Override + public void testMultiSelectable() { + if (set.contains(AccessibleState.MULTISELECTABLE)) { + if (!list.isMultipleMode()) { + throw new RuntimeException( + "AccessibleStateSet contains MULTISELECTABLE " + + "but this component is not multiselectable"); + } + } else { + if (list.isMultipleMode()) { + throw new RuntimeException( + "AccessibleStateSet does not contain " + + "MULTISELECTABLE but this component is " + + "multiselectable"); + } + } + } + } +} diff --git a/test/jdk/javax/accessibility/awt/MenuBarTest.java b/test/jdk/javax/accessibility/awt/MenuBarTest.java new file mode 100644 index 00000000000..83445fde61b --- /dev/null +++ b/test/jdk/javax/accessibility/awt/MenuBarTest.java @@ -0,0 +1,102 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary MenuBar Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleMenuComponentTester + * @run main MenuBarTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.Robot; +import java.lang.reflect.InvocationTargetException; + +public class MenuBarTest { + + private static MenuBar menuBar; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "Menu Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, MenuBar"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + MenuBarTest menuBarTest = new MenuBarTest(); + EventQueue.invokeAndWait(menuBarTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(menuBarTest::test); + } finally { + menuBarTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("MenuBar Test"); + menuBar = new MenuBar(); + + Menu menu = new Menu("Menu 1"); + menu.add(new MenuItem("One")); + menu.add(new MenuItem("Two")); + menuBar.add(menu); + + menuBar.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + menuBar.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.setMenuBar(menuBar); + frame.setSize(200, 200); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyMenuBarAccessibility( + menuBar, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + } +} diff --git a/test/jdk/javax/accessibility/awt/MenuItemTest.java b/test/jdk/javax/accessibility/awt/MenuItemTest.java new file mode 100644 index 00000000000..0cfe342e843 --- /dev/null +++ b/test/jdk/javax/accessibility/awt/MenuItemTest.java @@ -0,0 +1,103 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary MenuItem Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleMenuComponentTester + * @run main MenuItemTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuItem; +import java.awt.Robot; +import java.lang.reflect.InvocationTargetException; + +public class MenuItemTest { + + private static MenuItem menuItem; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "MenuItem Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, MenuItem"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + MenuItemTest menuItemTest = new MenuItemTest(); + EventQueue.invokeAndWait(menuItemTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(menuItemTest::test); + } finally { + menuItemTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("MenuItem Test"); + + MenuBar menuBar = new MenuBar(); + Menu menu = new Menu("Menu"); + menuItem = new MenuItem("This here's a MenuItem"); + + menu.add(menuItem); + menuBar.add(menu); + + menuItem.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + menuItem.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.setMenuBar(menuBar); + frame.setSize(300, 300); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyMenuItemAccessibility( + menuItem, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + } +} diff --git a/test/jdk/javax/accessibility/awt/MenuTest.java b/test/jdk/javax/accessibility/awt/MenuTest.java new file mode 100644 index 00000000000..15c51ca4214 --- /dev/null +++ b/test/jdk/javax/accessibility/awt/MenuTest.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary Menu Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleMenuComponentTester + * @run main MenuTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.Robot; +import java.lang.reflect.InvocationTargetException; + +public class MenuTest { + + private static Menu menu; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "Menu Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, Menu"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + MenuTest menuTest = new MenuTest(); + EventQueue.invokeAndWait(menuTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(menuTest::test); + } finally { + menuTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("Menu Test"); + + MenuBar menuBar = new MenuBar(); + menu = new Menu("File"); + menuBar.add(menu); + + menu.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + menu.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.setMenuBar(menuBar); + frame.setSize(200, 200); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyMenuAccessibility( + menu, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + } +} diff --git a/test/jdk/javax/accessibility/awt/PanelTest.java b/test/jdk/javax/accessibility/awt/PanelTest.java new file mode 100644 index 00000000000..abfacc7485b --- /dev/null +++ b/test/jdk/javax/accessibility/awt/PanelTest.java @@ -0,0 +1,105 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary Panel Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleComponentTester AccessibleStateSetTester + * @run main PanelTest + */ + +import java.awt.AWTException; +import java.awt.Button; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Panel; +import java.awt.Robot; +import java.lang.reflect.InvocationTargetException; + +public class PanelTest { + + private static Panel panel; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "Panel Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, Panel"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + PanelTest panelTest = new PanelTest(); + EventQueue.invokeAndWait(panelTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(panelTest::test); + } finally { + panelTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("Panel Test"); + panel = new Panel(); + + for (int i = 0; i < 5; i++) { + panel.add(new Button("Button #" + i)); + } + + panel.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + panel.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.add(panel); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyPanelAccessibility( + panel, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new AccessibleStateSetTester( + panel, + panel.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + } +} diff --git a/test/jdk/javax/accessibility/awt/PopupMenuTest.java b/test/jdk/javax/accessibility/awt/PopupMenuTest.java new file mode 100644 index 00000000000..8d329a92322 --- /dev/null +++ b/test/jdk/javax/accessibility/awt/PopupMenuTest.java @@ -0,0 +1,100 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary PopupMenu Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleMenuComponentTester + * @run main PopupMenuTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.PopupMenu; +import java.awt.Robot; +import java.lang.reflect.InvocationTargetException; + +public class PopupMenuTest { + + private static PopupMenu popupMenu; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "PopupMenu Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, PopupMenu"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + PopupMenuTest popupMenuTest = new PopupMenuTest(); + EventQueue.invokeAndWait(popupMenuTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(popupMenuTest::test); + } finally { + popupMenuTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("PopupMenu Test"); + popupMenu = new PopupMenu("PopupMenu"); + + popupMenu.add("Sleepy"); + popupMenu.add("Happy"); + popupMenu.add("Grumpy"); + popupMenu.add("Dopey"); + + popupMenu.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + popupMenu.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.add(popupMenu); + frame.setSize(200, 200); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyPopupMenuAccessibility( + popupMenu, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + } +} diff --git a/test/jdk/javax/accessibility/awt/ScrollPaneTest.java b/test/jdk/javax/accessibility/awt/ScrollPaneTest.java new file mode 100644 index 00000000000..7f706647482 --- /dev/null +++ b/test/jdk/javax/accessibility/awt/ScrollPaneTest.java @@ -0,0 +1,104 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary ScrollPane Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleComponentTester AccessibleStateSetTester + * @run main ScrollPaneTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Label; +import java.awt.Robot; +import java.awt.ScrollPane; +import java.lang.reflect.InvocationTargetException; + +public class ScrollPaneTest { + + private static ScrollPane scrollPane; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "ScrollPane Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, ScrollPane"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + ScrollPaneTest scrollPaneTest = new ScrollPaneTest(); + EventQueue.invokeAndWait(scrollPaneTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(scrollPaneTest::test); + } finally { + scrollPaneTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("ScrollPane Test"); + frame.setSize(300, 300); + frame.setLocationRelativeTo(null); + + scrollPane = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS); + scrollPane.setSize(frame.getSize().width, frame.getSize().height); + scrollPane.add(new Label("This is a label with quite a bit of text.")); + + scrollPane.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + scrollPane.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.add(scrollPane); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyScrollPaneAccessibility( + scrollPane, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new AccessibleStateSetTester( + scrollPane, + scrollPane.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + } +} diff --git a/test/jdk/javax/accessibility/awt/TextAreaTest.java b/test/jdk/javax/accessibility/awt/TextAreaTest.java new file mode 100644 index 00000000000..388a22324f9 --- /dev/null +++ b/test/jdk/javax/accessibility/awt/TextAreaTest.java @@ -0,0 +1,155 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary TextArea Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleComponentTester AccessibleStateSetTester + * @run main TextAreaTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Robot; +import java.awt.TextArea; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.lang.reflect.InvocationTargetException; + +import javax.accessibility.AccessibleState; +import javax.accessibility.AccessibleStateSet; + +public class TextAreaTest { + + private static TextArea textArea; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "TextArea Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, TextArea"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + TextAreaTest textAreaTest = new TextAreaTest(); + EventQueue.invokeAndWait(textAreaTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(textAreaTest::test); + } finally { + textAreaTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("TextAreaTest"); + String TEXT_CONTENT = """ + 1. Test TextArea javax.accessibility methods + 2. Test TextArea javax.accessibility setAccessibleName + 3. Test TextArea javax.accessibility setAccessibleDescription + 4. Test TextArea javax.accessibility setAccessibleStateSet + """; + textArea = new TextArea(TEXT_CONTENT, 24, 80); + + textArea.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + textArea.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.add(textArea); + frame.setSize(200, 200); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyTextAreaAccessibility( + textArea, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new TextStateTester( + textArea, + textArea.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + + textArea.setEditable(false); + + AccessibleTestUtils.verifyTextAreaAccessibility( + textArea, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new TextStateTester( + textArea, + textArea.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + } + + private static final class TextStateTester + extends AccessibleStateSetTester { + private final TextArea textArea; + private final AccessibleStateSet stateSet; + + private TextStateTester(TextArea textArea, + AccessibleStateSet stateSet) { + super(textArea, stateSet); + this.textArea = textArea; + this.stateSet = stateSet; + } + + @Override + public void testEditable() { + if (stateSet.contains(AccessibleState.EDITABLE)) { + if (!textArea.isEditable()) { + throw new RuntimeException( + "AccessibleStateSet contains EDITABLE but " + + "this component is not editable"); + } + } else { + if (textArea.isEditable()) { + throw new RuntimeException( + "AccessibleStateSet does not contain EDITABLE " + + "but this component is editable"); + } + } + } + } +} diff --git a/test/jdk/javax/accessibility/awt/TextFieldTest.java b/test/jdk/javax/accessibility/awt/TextFieldTest.java new file mode 100644 index 00000000000..96deaf3b7bc --- /dev/null +++ b/test/jdk/javax/accessibility/awt/TextFieldTest.java @@ -0,0 +1,148 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary TextField Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleComponentTester AccessibleStateSetTester + * @run main TextFieldTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Robot; +import java.awt.TextField; +import java.lang.reflect.InvocationTargetException; + +import javax.accessibility.AccessibleState; +import javax.accessibility.AccessibleStateSet; + +public class TextFieldTest { + + private static TextField textField; + private static Frame frame; + + private static final String ACCESSIBLE_NAME = "TextField Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, TextField"; + private static final String TEXT = + "I love Cheesy Poofs you love Cheesy Poofs if we didn't " + + "eat Cheesy Poofs we'd be lame!"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + TextFieldTest textFieldTest = new TextFieldTest(); + EventQueue.invokeAndWait(textFieldTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(textFieldTest::test); + } finally { + textFieldTest.dispose(); + } + } + + private void createGUI() { + frame = new Frame("TextField Test"); + textField = new TextField(TEXT, 80); + + textField.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + textField.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + frame.add(textField); + frame.setSize(200, 200); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyTextFieldAccessibility( + textField, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new TextStateTester( + textField, + textField.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + + textField.setEditable(false); + + AccessibleTestUtils.verifyTextFieldAccessibility( + textField, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new TextStateTester( + textField, + textField.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + } + + private static final class TextStateTester + extends AccessibleStateSetTester { + private final TextField textField; + private final AccessibleStateSet set; + + private TextStateTester(TextField textField, AccessibleStateSet set) { + super(textField, set); + this.textField = textField; + this.set = set; + } + + @Override + public void testEditable() { + if (set.contains(AccessibleState.EDITABLE)) { + if (!textField.isEditable()) { + throw new RuntimeException( + "AccessibleStateSet contains EDITABLE but " + + "this component is not editable"); + } + } else { + if (textField.isEditable()) { + throw new RuntimeException( + "AccessibleStateSet does not contain EDITABLE " + + "but this component is editable"); + } + } + } + } +} diff --git a/test/jdk/javax/accessibility/awt/WindowTest.java b/test/jdk/javax/accessibility/awt/WindowTest.java new file mode 100644 index 00000000000..dc70ce75d90 --- /dev/null +++ b/test/jdk/javax/accessibility/awt/WindowTest.java @@ -0,0 +1,129 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @key headful + * @summary Window Accessibility test. + * @library ../../swing/regtesthelpers/accessibility/ + * @build AccessibleTestUtils AccessibleComponentTester AccessibleStateSetTester + * @run main WindowTest + */ + +import java.awt.AWTException; +import java.awt.EventQueue; +import java.awt.Frame; +import java.awt.Robot; +import java.awt.Window; +import java.lang.reflect.InvocationTargetException; + +import javax.accessibility.AccessibleState; +import javax.accessibility.AccessibleStateSet; + +public class WindowTest { + + private static Window window; + + private static final String ACCESSIBLE_NAME = "Window Test"; + private static final String ACCESSIBLE_DESCRIPTION = + "Regression Test: javax.accessibility, Window"; + + public static void main(String[] args) throws InterruptedException, + InvocationTargetException, AWTException { + WindowTest windowTest = new WindowTest(); + EventQueue.invokeAndWait(windowTest::createGUI); + + Robot robot = new Robot(); + robot.waitForIdle(); + robot.delay(5000); + + try { + EventQueue.invokeAndWait(windowTest::test); + } finally { + windowTest.dispose(); + } + } + + private void createGUI() { + window = new Window(new Frame("Frame")); + window.setSize(300, 300); + window.setLocationRelativeTo(null); + + window.getAccessibleContext().setAccessibleName(ACCESSIBLE_NAME); + window.getAccessibleContext().setAccessibleDescription( + ACCESSIBLE_DESCRIPTION); + + window.setVisible(true); + } + + private void dispose() throws InterruptedException, + InvocationTargetException { + EventQueue.invokeAndWait(() -> { + if (window != null) { + window.dispose(); + } + }); + } + + private void test() { + AccessibleTestUtils.verifyWindowAccessibility( + window, + ACCESSIBLE_NAME, + ACCESSIBLE_DESCRIPTION + ); + + new WindowStateTester( + window, + window.getAccessibleContext().getAccessibleStateSet() + ).testAll(); + } + + private static final class WindowStateTester + extends AccessibleStateSetTester { + private final Window window; + private final AccessibleStateSet set; + + private WindowStateTester(Window window, AccessibleStateSet set) { + super(window, set); + this.window = window; + this.set = set; + } + + @Override + public void testActive() { + if (set.contains(AccessibleState.ACTIVE)) { + if (window.getFocusOwner() == null) { + throw new RuntimeException( + "AccessibleStateSet contains ACTIVE but " + + "this component is not active"); + } + } else { + if (window.getFocusOwner() != null) { + throw new RuntimeException( + "AccessibleStateSet does not contain ACTIVE " + + "but this component is active"); + } + } + } + } +} diff --git a/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/Encrypt.java b/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/Encrypt.java index abeed7c3395..631410efb21 100644 --- a/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/Encrypt.java +++ b/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/Encrypt.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -129,7 +129,7 @@ public class Encrypt { // Test encryptKey(PrivateKey, Key, String, ...) with provider and SecureRandom e = EncryptedPrivateKeyInfo.encrypt(priKey, key2, "AES_128/GCM/NoPadding", null, p, new SecureRandom()); - PrivateKey key3 = e.getKey(key2, null); + PrivateKey key3 = e.getKey(key2); assertEquals(key3, priKey, "AES encryption failed"); } } diff --git a/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/GetKey.java b/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/GetKey.java index 36e6b02faba..a4bfd4e47d6 100644 --- a/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/GetKey.java +++ b/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/GetKey.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,8 +35,6 @@ import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.security.PEMDecoder; import java.security.PrivateKey; -import java.security.Provider; -import java.security.Security; import java.util.Arrays; public class GetKey { @@ -50,30 +48,13 @@ public class GetKey { IycFtI70ciPjgwDSjtCcPxR8fSxJPrm2yOJsRVo= -----END ENCRYPTED PRIVATE KEY----- """; - private static final String encDHECKey = - """ - -----BEGIN ENCRYPTED PRIVATE KEY----- - MIIBvDBmBgkqhkiG9w0BBQ0wWTA4BgkqhkiG9w0BBQwwKwQUN8pkErJx7aqH0fJF - BcOadPKiuRoCAhAAAgEQMAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBAT1Vwd - gU4rTd6zy7lKr4wmBIIBUMe+2+O0AG6t4CMSHcDVceRg2jvbs5PmPjW4Ka5mDich - hVEsjSpJLbUyJdbji6UaiUpuWgvYSMLZ10pfhOFw/ssXwCw+JrlXUqDpQGLaW8ZR - zSL3CoozTI2Y6EBdWt53KbySwtZMoTpW/W3vPi98bJXtR635msf6gYXmSUP7DyoJ - 79dxz3pRYsnOuBe0yZ2wTq9iMgTMudzLJAFX2qyi+3KOb1g5Va9DYAqJmzCYOd74 - +I+0gGNFtSc1vGQYr3cAfcKT8AZ1RHE4IkpnpgFD5HsZ8f4hy0yK8juk9NE9Gzuy - B929LBXk6V3L0MKzIABS3QvAlhWETM6XtGBDugzAgsooo9lEHLwYRldvOlL+QYyE - CtqDmXOrgEMWvxWGEFCTKYhKkqMKjU3y3GiozEEdb9j2okW1s30yHQjIoj0OR4nB - D8GeP0QnY73NfbOw7z81TA== - -----END ENCRYPTED PRIVATE KEY----- - """; + private static final String passwdText = "fish"; private static final char[] password = passwdText.toCharArray(); private static final SecretKey key = new SecretKeySpec( passwdText.getBytes(), "PBE"); public static void main(String[] args) throws Exception { - Provider p = Security.getProvider( - System.getProperty("test.provider.name", "SunJCE")); - EncryptedPrivateKeyInfo ekpi = PEMDecoder.of().decode(encEdECKey, EncryptedPrivateKeyInfo.class); PrivateKey priKey = PEMDecoder.of().withDecryption(password). @@ -86,23 +67,11 @@ public class GetKey { + "match with expected."); } - // Test getKey(key, provider) provider null + // Test getKey(EdEC) if (!Arrays.equals(priKey.getEncoded(), - ekpi.getKey(key, null).getEncoded())) { - throw new AssertionError("getKey(key, provider) " + + ekpi.getKey(key).getEncoded())) { + throw new AssertionError("getKey(key) " + "didn't match with expected."); } - - // Test getKey(key, provider) with provider - EncryptedPrivateKeyInfo ekpiDH = PEMDecoder.of().decode(encDHECKey, - EncryptedPrivateKeyInfo.class); - PrivateKey priKeyDH = PEMDecoder.of().withDecryption(password). - decode(encDHECKey, PrivateKey.class); - - if (!Arrays.equals(priKeyDH.getEncoded(), - ekpiDH.getKey(key, p).getEncoded())) { - throw new AssertionError("getKey(key, provider) " + - "didn't match with expected."); - } } } diff --git a/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/GetKeyPair.java b/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/GetKeyPair.java index d35197e1971..fd4df8366ab 100644 --- a/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/GetKeyPair.java +++ b/test/jdk/javax/crypto/EncryptedPrivateKeyInfo/GetKeyPair.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2025, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -61,9 +61,6 @@ public class GetKeyPair { static byte[] keyOrigPub, keyOrigPriv; public static void main(String[] args) throws Exception { - Provider p = Security.getProvider( - System.getProperty("test.provider.name", "SunJCE")); - KeyPairGenerator kpg = KeyPairGenerator.getInstance("ML-KEM"); KeyPair kpOrig = kpg.generateKeyPair(); keyOrigPub = kpOrig.getPublic().getEncoded(); @@ -92,12 +89,8 @@ public class GetKeyPair { arrayCheck(ekpi.getKeyPair(password)); // Test getKeyPair(key, provider) provider null - System.out.print("Testing getKeyPair(key, null): "); - arrayCheck(ekpi.getKeyPair(key, null)); - - // Test getKeyPair(key, provider) provider SunJCE - System.out.print("Testing getKeyPair(key, SunJCE): "); - arrayCheck(ekpi.getKeyPair(key, p)); + System.out.print("Testing getKeyPair(key): "); + arrayCheck(ekpi.getKeyPair(key)); } static void arrayCheck(KeyPair kp) throws Exception { diff --git a/test/jdk/javax/print/NullUserNamePrintingTest.java b/test/jdk/javax/print/NullUserNamePrintingTest.java new file mode 100644 index 00000000000..5051959447b --- /dev/null +++ b/test/jdk/javax/print/NullUserNamePrintingTest.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8385100 + * @key printer + * @summary Should not get NPE if atttribute set is null. + */ + +import java.io.ByteArrayInputStream; +import javax.print.Doc; +import javax.print.DocFlavor; +import javax.print.DocPrintJob; +import javax.print.PrintException; +import javax.print.PrintService; +import javax.print.PrintServiceLookup; +import javax.print.SimpleDoc; + +public class NullUserNamePrintingTest { + + public static void main(String[] args) throws PrintException { + PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null); + if (services.length == 0) { + System.err.println("This test requires a printer."); + return; + } + PrintService service = services[0]; + + DocPrintJob job = service.createPrintJob(); + + Doc doc = new SimpleDoc( + new ByteArrayInputStream("Test print".getBytes()), + DocFlavor.INPUT_STREAM.AUTOSENSE, null); + System.setProperty("user.name", ""); + job.print(doc, null); + } +} diff --git a/test/jdk/javax/print/NullUserNameStreamPrintingTest.java b/test/jdk/javax/print/NullUserNameStreamPrintingTest.java new file mode 100644 index 00000000000..475b8acbfd7 --- /dev/null +++ b/test/jdk/javax/print/NullUserNameStreamPrintingTest.java @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8385100 + * @summary Should not get NPE if atttribute set is null. + */ + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.awt.Graphics; +import java.awt.print.PageFormat; +import java.awt.print.Printable; +import java.awt.print.PrinterException; +import javax.print.Doc; +import javax.print.DocFlavor; +import javax.print.DocPrintJob; +import javax.print.PrintException; +import javax.print.PrintService; +import javax.print.PrintServiceLookup; +import javax.print.SimpleDoc; +import javax.print.StreamPrintService; +import javax.print.StreamPrintServiceFactory; + +public class NullUserNameStreamPrintingTest implements Printable { + + public static void main(String[] args) throws PrintException { + + DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE; + String mime = "application/postscript"; + StreamPrintServiceFactory[] factories = + StreamPrintServiceFactory.lookupStreamPrintServiceFactories(flavor, mime); + if (factories.length == 0) { + throw new RuntimeException("Unable to find PostScript print service factory"); + } + StreamPrintServiceFactory factory = factories[0]; + ByteArrayOutputStream output = new ByteArrayOutputStream(); + StreamPrintService service = factory.getPrintService(output); + + DocPrintJob job = service.createPrintJob(); + + Doc doc = new SimpleDoc(new NullUserNameStreamPrintingTest(), flavor, null); + System.setProperty("user.name", ""); + job.print(doc, null); + } + + public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) + throws PrinterException { + if (pageIndex > 0) { + return NO_SUCH_PAGE; + } + return PAGE_EXISTS; + } +} diff --git a/test/jdk/javax/swing/regtesthelpers/accessibility/AccessibleMenuComponentTester.java b/test/jdk/javax/swing/regtesthelpers/accessibility/AccessibleMenuComponentTester.java new file mode 100644 index 00000000000..21b91aafbcd --- /dev/null +++ b/test/jdk/javax/swing/regtesthelpers/accessibility/AccessibleMenuComponentTester.java @@ -0,0 +1,114 @@ +/* + * Copyright (c) 1997, 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Font; +import java.awt.MenuComponent; + +import javax.accessibility.AccessibleComponent; + +public class AccessibleMenuComponentTester { + + private final AccessibleComponent acomp; + private final MenuComponent comp; + + public AccessibleMenuComponentTester(MenuComponent menuComponent, + AccessibleComponent ac) { + if (menuComponent == null) { + throw new RuntimeException("MenuComponent should not be null"); + } + + if (ac == null) { + throw new RuntimeException("AccessibleComponent should not be null"); + } + + this.comp = menuComponent; + this.acomp = ac; + } + + // The only method supported by MenuComponents is getFont(). Everything + // else should return null. + public void test() { + testGetBackground(); + testGetBounds(); + testGetCursor(); + testGetFont(); + testGetForeground(); + testGetLocation(); + testGetLocationOnScreen(); + testGetSize(); + testIsEnabled(); + testIsFocusTraversable(); + testIsShowing(); + testIsVisible(); + } + + public void testGetBackground() { + } + + public void testGetBounds() { + } + + public void testGetCursor() { + } + + public void testGetFont() { + Font accessibleFont = acomp.getFont(); + Font componentFont = comp.getFont(); + + if (componentFont == null) { + if (accessibleFont != null) { + throw new RuntimeException( + "MenuComponent.getFont returned null but " + + "AccessibleComponent.getFont did not"); + } + } else if (!componentFont.equals(accessibleFont)) { + throw new RuntimeException( + "AccessibleComponent.getFont does not match " + + "MenuComponent.getFont"); + } + } + + public void testGetForeground() { + } + + public void testGetLocation() { + } + + public void testGetLocationOnScreen() { + } + + public void testGetSize() { + } + + public void testIsEnabled() { + } + + public void testIsFocusTraversable() { + } + + public void testIsShowing() { + } + + public void testIsVisible() { + } +} diff --git a/test/jdk/javax/swing/regtesthelpers/accessibility/AccessibleTestUtils.java b/test/jdk/javax/swing/regtesthelpers/accessibility/AccessibleTestUtils.java index 2410cff997a..9de4a8d8089 100644 --- a/test/jdk/javax/swing/regtesthelpers/accessibility/AccessibleTestUtils.java +++ b/test/jdk/javax/swing/regtesthelpers/accessibility/AccessibleTestUtils.java @@ -22,17 +22,33 @@ */ import java.awt.Button; +import java.awt.Checkbox; import java.awt.Choice; import java.awt.Component; +import java.awt.Frame; +import java.awt.Label; +import java.awt.List; +import java.awt.Menu; +import java.awt.MenuBar; +import java.awt.MenuComponent; +import java.awt.MenuItem; +import java.awt.Panel; +import java.awt.PopupMenu; import java.awt.Scrollbar; +import java.awt.ScrollPane; +import java.awt.TextArea; +import java.awt.TextField; +import java.awt.Window; import java.util.Locale; import java.util.Objects; +import javax.accessibility.Accessible; import javax.accessibility.AccessibleAction; import javax.accessibility.AccessibleComponent; import javax.accessibility.AccessibleContext; import javax.accessibility.AccessibleRole; import javax.accessibility.AccessibleSelection; +import javax.accessibility.AccessibleState; import javax.accessibility.AccessibleStateSet; import javax.accessibility.AccessibleText; import javax.accessibility.AccessibleValue; @@ -51,32 +67,22 @@ public final class AccessibleTestUtils { boolean expectSelection, boolean expectText, boolean expectValue) { - Objects.requireNonNull(context, "AccessibleContext must not be null"); - assertExpectedString( - "getAccessibleName", - expectedName, - context.getAccessibleName() - ); + assertExpectedString("getAccessibleName", + expectedName, context.getAccessibleName()); + assertExpectedString("getAccessibleDescription", + expectedDescription, context.getAccessibleDescription()); - assertExpectedString( - "getAccessibleDescription", - expectedDescription, - context.getAccessibleDescription() - ); + AccessibleRole actualRole = context.getAccessibleRole(); + if (actualRole == null) { + throw new RuntimeException("getAccessibleRole returned null"); + } - if (expectedRole != null) { - AccessibleRole actualRole = context.getAccessibleRole(); - if (actualRole == null) { - throw new RuntimeException("getAccessibleRole returned null"); - } - if (!expectedRole.equals(actualRole)) { - throw new RuntimeException(String.format( - "getAccessibleRole returned [%s]; expected [%s]", - actualRole, expectedRole - )); - } + if (!expectedRole.equals(actualRole)) { + throw new RuntimeException( + "getAccessibleRole returned [" + actualRole + + "]; expected [" + expectedRole + "]"); } AccessibleStateSet stateSet = context.getAccessibleStateSet(); @@ -84,10 +90,14 @@ public final class AccessibleTestUtils { throw new RuntimeException("getAccessibleStateSet returned null"); } - assertPresence("getAccessibleAction", expectAction, context.getAccessibleAction()); - assertPresence("getAccessibleSelection", expectSelection, context.getAccessibleSelection()); - assertPresence("getAccessibleText", expectText, context.getAccessibleText()); - assertPresence("getAccessibleValue", expectValue, context.getAccessibleValue()); + assertPresence("getAccessibleAction", + expectAction, context.getAccessibleAction()); + assertPresence("getAccessibleSelection", + expectSelection, context.getAccessibleSelection()); + assertPresence("getAccessibleText", + expectText, context.getAccessibleText()); + assertPresence("getAccessibleValue", + expectValue, context.getAccessibleValue()); } public static void verifyAWTComponentAccessibility( @@ -99,10 +109,13 @@ public final class AccessibleTestUtils { boolean expectSelection, boolean expectText, boolean expectValue) { - - Objects.requireNonNull(component, "Component under test must not be null"); + Objects.requireNonNull(component, "Component must not be null"); AccessibleContext context = component.getAccessibleContext(); + if (context == null) { + throw new RuntimeException("getAccessibleContext returned null"); + } + verifyAccessibleContextCommon( context, expectedName, @@ -111,12 +124,12 @@ public final class AccessibleTestUtils { expectAction, expectSelection, expectText, - expectValue - ); + expectValue); assertLocaleMatches(component, context); - AccessibleComponent accessibleComponent = context.getAccessibleComponent(); + AccessibleComponent accessibleComponent = + context.getAccessibleComponent(); if (accessibleComponent == null) { throw new RuntimeException("getAccessibleComponent returned null"); } @@ -124,101 +137,10 @@ public final class AccessibleTestUtils { new AccessibleComponentTester(component, accessibleComponent).test(); } - public static void verifyChoiceAccessibility( - Choice choice, - String expectedName, - String expectedDescription) { - - Objects.requireNonNull(choice, "Choice must not be null"); - - verifyAWTComponentAccessibility( - choice, - expectedName, - expectedDescription, - AccessibleRole.COMBO_BOX, - true, - false, - false, - false - ); - - AccessibleContext context = choice.getAccessibleContext(); - - AccessibleAction action = context.getAccessibleAction(); - if (action == null) { - throw new RuntimeException("getAccessibleAction should not return null for Choice"); - } - - AccessibleValue value = context.getAccessibleValue(); - if (value != null) { - throw new RuntimeException("getAccessibleValue should return null for Choice"); - } - } - - public static void verifyScrollbarAccessibility( - Scrollbar scrollbar, - String expectedName, - String expectedDescription) { - - Objects.requireNonNull(scrollbar, "Scrollbar must not be null"); - - verifyAWTComponentAccessibility( - scrollbar, - expectedName, - expectedDescription, - AccessibleRole.SCROLL_BAR, - false, - false, - false, - true - ); - - AccessibleValue value = scrollbar.getAccessibleContext().getAccessibleValue(); - if (value == null) { - throw new RuntimeException("getAccessibleValue should not return null for Scrollbar"); - } - - assertIntValueEquals( - "getCurrentAccessibleValue", - scrollbar.getValue(), - value.getCurrentAccessibleValue() - ); - - assertIntValueEquals( - "getMinimumAccessibleValue", - scrollbar.getMinimum(), - value.getMinimumAccessibleValue() - ); - - assertIntValueEquals( - "getMaximumAccessibleValue", - scrollbar.getMaximum(), - value.getMaximumAccessibleValue() - ); - - if (!value.setCurrentAccessibleValue(Integer.valueOf(5))) { - throw new RuntimeException("setCurrentAccessibleValue(5) returned false for Scrollbar"); - } - - assertIntValueEquals( - "getCurrentAccessibleValue after setCurrentAccessibleValue(5)", - 5, - value.getCurrentAccessibleValue() - ); - - if (scrollbar.getValue() != 5) { - throw new RuntimeException( - "setCurrentAccessibleValue(5) did not update Scrollbar.getValue(); actual value: " - + scrollbar.getValue() - ); - } - } - public static void verifyButtonAccessibility( Button button, String expectedName, String expectedDescription) { - Objects.requireNonNull(button, "Button must not be null"); verifyAWTComponentAccessibility( @@ -229,106 +151,576 @@ public final class AccessibleTestUtils { true, false, false, - true - ); + true); AccessibleContext context = button.getAccessibleContext(); + verifyClickAction(context, "Button"); + verifyZeroAccessibleValue(context, "Button"); + } + public static void verifyCheckboxAccessibility( + Checkbox checkbox, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(checkbox, "Checkbox must not be null"); + + verifyAWTComponentAccessibility( + checkbox, + expectedName, + expectedDescription, + AccessibleRole.CHECK_BOX, + true, + false, + false, + true); + } + + public static void verifyChoiceAccessibility( + Choice choice, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(choice, "Choice must not be null"); + + verifyAWTComponentAccessibility( + choice, + expectedName, + expectedDescription, + AccessibleRole.COMBO_BOX, + true, + false, + false, + false); + } + + public static void verifyFrameAccessibility( + Frame frame, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(frame, "Frame must not be null"); + + verifyAWTComponentAccessibility( + frame, + expectedName, + expectedDescription, + AccessibleRole.FRAME, + false, + false, + false, + false); + } + + public static void verifyLabelAccessibility( + Label label, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(label, "Label must not be null"); + + verifyAWTComponentAccessibility( + label, + expectedName, + expectedDescription, + AccessibleRole.LABEL, + false, + false, + false, + false); + } + + public static void verifyListAccessibility( + List list, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(list, "List must not be null"); + + verifyAWTComponentAccessibility( + list, + expectedName, + expectedDescription, + AccessibleRole.LIST, + false, + true, + false, + false); + + verifyListChildren(list); + } + + public static void verifyPanelAccessibility( + Panel panel, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(panel, "Panel must not be null"); + + verifyAWTComponentAccessibility( + panel, + expectedName, + expectedDescription, + AccessibleRole.PANEL, + false, + false, + false, + false); + + verifyContainerChildren(panel, "Panel"); + } + + public static void verifyScrollbarAccessibility( + Scrollbar scrollbar, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(scrollbar, "Scrollbar must not be null"); + + verifyAWTComponentAccessibility( + scrollbar, + expectedName, + expectedDescription, + AccessibleRole.SCROLL_BAR, + false, + false, + false, + true); + + AccessibleValue value = + scrollbar.getAccessibleContext().getAccessibleValue(); + + assertIntValueEquals( + "getCurrentAccessibleValue", + scrollbar.getValue(), + value.getCurrentAccessibleValue()); + + assertIntValueEquals( + "getMinimumAccessibleValue", + scrollbar.getMinimum(), + value.getMinimumAccessibleValue()); + + assertIntValueEquals( + "getMaximumAccessibleValue", + scrollbar.getMaximum(), + value.getMaximumAccessibleValue()); + + if (!value.setCurrentAccessibleValue(Integer.valueOf(5))) { + throw new RuntimeException( + "setCurrentAccessibleValue should not return false " + + "for Scrollbar"); + } + + assertIntValueEquals( + "getCurrentAccessibleValue after setCurrentAccessibleValue(5)", + 5, + value.getCurrentAccessibleValue()); + + if (scrollbar.getValue() != 5) { + throw new RuntimeException( + "setCurrentAccessibleValue should change the Scrollbar " + + "value"); + } + } + + public static void verifyScrollPaneAccessibility( + ScrollPane scrollPane, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(scrollPane, "ScrollPane must not be null"); + + verifyAWTComponentAccessibility( + scrollPane, + expectedName, + expectedDescription, + AccessibleRole.SCROLL_PANE, + false, + false, + false, + false); + } + + public static void verifyTextAreaAccessibility( + TextArea textArea, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(textArea, "TextArea must not be null"); + + verifyAWTComponentAccessibility( + textArea, + expectedName, + expectedDescription, + AccessibleRole.TEXT, + false, + false, + true, + false); + } + + public static void verifyTextFieldAccessibility( + TextField textField, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(textField, "TextField must not be null"); + + verifyAWTComponentAccessibility( + textField, + expectedName, + expectedDescription, + AccessibleRole.TEXT, + false, + false, + true, + false); + } + + public static void verifyWindowAccessibility( + Window window, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(window, "Window must not be null"); + + verifyAWTComponentAccessibility( + window, + expectedName, + expectedDescription, + AccessibleRole.WINDOW, + false, + false, + false, + false); + } + + public static void verifyMenuAccessibility( + Menu menu, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(menu, "Menu must not be null"); + + verifyMenuComponentAccessibility( + menu, + expectedName, + expectedDescription, + AccessibleRole.MENU, + true, + true, + false, + true, + "Menu"); + + AccessibleContext context = menu.getAccessibleContext(); + verifyClickAction(context, "Menu"); + verifyZeroAccessibleValue(context, "Menu"); + } + + public static void verifyMenuBarAccessibility( + MenuBar menuBar, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(menuBar, "MenuBar must not be null"); + + verifyMenuComponentAccessibility( + menuBar, + expectedName, + expectedDescription, + AccessibleRole.MENU_BAR, + false, + true, + false, + false, + "MenuBar"); + } + + public static void verifyMenuItemAccessibility( + MenuItem menuItem, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(menuItem, "MenuItem must not be null"); + + verifyMenuComponentAccessibility( + menuItem, + expectedName, + expectedDescription, + AccessibleRole.MENU_ITEM, + true, + true, + false, + true, + "MenuItem"); + + AccessibleContext context = menuItem.getAccessibleContext(); + verifyClickAction(context, "MenuItem"); + verifyZeroAccessibleValue(context, "MenuItem"); + } + + public static void verifyPopupMenuAccessibility( + PopupMenu popupMenu, + String expectedName, + String expectedDescription) { + Objects.requireNonNull(popupMenu, "PopupMenu must not be null"); + + verifyMenuComponentAccessibility( + popupMenu, + expectedName, + expectedDescription, + AccessibleRole.POPUP_MENU, + true, + true, + false, + true, + "PopupMenu"); + + AccessibleContext context = popupMenu.getAccessibleContext(); + verifyClickAction(context, "PopupMenu"); + verifyZeroAccessibleValue(context, "PopupMenu"); + } + + private static void verifyMenuComponentAccessibility( + MenuComponent menuComponent, + String expectedName, + String expectedDescription, + AccessibleRole expectedRole, + boolean expectAction, + boolean expectSelection, + boolean expectText, + boolean expectValue, + String componentName) { + Objects.requireNonNull(menuComponent, + componentName + " must not be null"); + + AccessibleContext context = menuComponent.getAccessibleContext(); + if (context == null) { + throw new RuntimeException("getAccessibleContext returned null"); + } + + verifyAccessibleContextCommon( + context, + expectedName, + expectedDescription, + expectedRole, + expectAction, + expectSelection, + expectText, + expectValue); + + AccessibleComponent accessibleComponent = + context.getAccessibleComponent(); + if (accessibleComponent == null) { + throw new RuntimeException("getAccessibleComponent returned null"); + } + + new AccessibleMenuComponentTester( + menuComponent, accessibleComponent).test(); + } + + private static void verifyClickAction(AccessibleContext context, + String componentName) { AccessibleAction action = context.getAccessibleAction(); if (action == null) { - throw new RuntimeException("getAccessibleAction should not return null for Button"); + throw new RuntimeException( + "getAccessibleAction should not return null for " + + componentName); } int actionCount = action.getAccessibleActionCount(); if (actionCount != 1) { throw new RuntimeException( - "getAccessibleActionCount should return 1 for Button; got " + actionCount - ); + "getAccessibleActionCount returned the wrong number for " + + componentName); } String actionDescription = action.getAccessibleActionDescription(0); if (!"click".equals(actionDescription)) { throw new RuntimeException( - "getAccessibleActionDescription(0) should return \"click\" for Button; got [" - + actionDescription + "]" - ); + "getAccessibleActionDescription returned the wrong " + + "description for " + componentName); } + } + private static void verifyZeroAccessibleValue(AccessibleContext context, + String componentName) { AccessibleValue value = context.getAccessibleValue(); if (value == null) { - throw new RuntimeException("getAccessibleValue should not return null for Button"); + throw new RuntimeException( + "getAccessibleValue should not return null for " + + componentName); } - assertIntValueEquals("getCurrentAccessibleValue", 0, value.getCurrentAccessibleValue()); - assertIntValueEquals("getMinimumAccessibleValue", 0, value.getMinimumAccessibleValue()); - assertIntValueEquals("getMaximumAccessibleValue", 0, value.getMaximumAccessibleValue()); + assertIntValueEquals( + "getCurrentAccessibleValue", + 0, + value.getCurrentAccessibleValue()); + + assertIntValueEquals( + "getMinimumAccessibleValue", + 0, + value.getMinimumAccessibleValue()); + + assertIntValueEquals( + "getMaximumAccessibleValue", + 0, + value.getMaximumAccessibleValue()); if (value.setCurrentAccessibleValue(Integer.valueOf(5))) { throw new RuntimeException( - "setCurrentAccessibleValue(5) should return false for Button" - ); + "setCurrentAccessibleValue should return false for " + + componentName); } assertIntValueEquals( "getCurrentAccessibleValue after setCurrentAccessibleValue(5)", 0, - value.getCurrentAccessibleValue() - ); + value.getCurrentAccessibleValue()); } - private static void assertExpectedString(String methodName, String expected, String actual) { + private static void verifyListChildren(List list) { + AccessibleContext context = list.getAccessibleContext(); + + int childCount = context.getAccessibleChildrenCount(); + if (childCount != list.getItemCount()) { + throw new RuntimeException( + "getAccessibleChildrenCount returned an incorrect value " + + "for List"); + } + + for (int i = 0; i < childCount; i++) { + Accessible child = context.getAccessibleChild(i); + if (child == null) { + throw new RuntimeException( + "getAccessibleChild returned null for child " + i); + } + + AccessibleContext childContext = child.getAccessibleContext(); + if (childContext == null) { + throw new RuntimeException( + "getAccessibleContext returned null for List child " + + i); + } + + if (childContext.getAccessibleRole() != AccessibleRole.LIST_ITEM) { + throw new RuntimeException( + "The AccessibleRole of AccessibleAWTListChild is " + + "incorrect for child " + i); + } + + if (childContext.getAccessibleIndexInParent() != i) { + throw new RuntimeException( + "getAccessibleIndexInParent returned an incorrect " + + "value for AccessibleAWTListChild " + i); + } + + AccessibleStateSet childStateSet = + childContext.getAccessibleStateSet(); + if (childStateSet == null) { + throw new RuntimeException( + "getAccessibleStateSet returned null for List child " + + i); + } + + boolean accessibleSelected = + childStateSet.contains(AccessibleState.SELECTED); + boolean listSelected = list.isIndexSelected(i); + + if (accessibleSelected != listSelected) { + throw new RuntimeException( + "getAccessibleStateSet reports that list item " + i + + (accessibleSelected ? " is " : " is not ") + + "selected but List reports that it " + + (listSelected ? "is" : "is not") + " selected"); + } + } + } + + private static void verifyContainerChildren(Component component, + String componentName) { + AccessibleContext context = component.getAccessibleContext(); + + int childCount = context.getAccessibleChildrenCount(); + if (childCount != component.getAccessibleContext() + .getAccessibleChildrenCount()) { + throw new RuntimeException( + "getAccessibleChildrenCount returned an incorrect value " + + "for " + componentName); + } + + for (int i = 0; i < childCount; i++) { + Accessible child = context.getAccessibleChild(i); + if (child == null) { + throw new RuntimeException( + "getAccessibleChild returned null for " + + componentName + " child " + i); + } + + AccessibleContext childContext = child.getAccessibleContext(); + if (childContext == null) { + throw new RuntimeException( + "getAccessibleContext returned null for " + + componentName + " child " + i); + } + } + } + + private static void assertExpectedString(String methodName, + String expected, + String actual) { if (expected == null) { - throw new RuntimeException("Excepted value is null. Provide " + - "excepted value"); + throw new RuntimeException( + "Expected value for " + methodName + " should not be null"); } if (actual == null) { - throw new RuntimeException(methodName + " returned null; expected" + - " [" + expected + "]"); + throw new RuntimeException( + methodName + " returned null; expected [" + expected + "]"); } + if (!expected.equals(actual)) { - throw new RuntimeException(methodName + " returned [" + actual + - "]; expected [" + expected + "]"); + throw new RuntimeException( + methodName + " returned [" + actual + + "]; expected [" + expected + "]"); } } - private static void assertPresence(String methodName, boolean expectedPresent, Object value) { + private static void assertPresence(String methodName, + boolean expectedPresent, + Object value) { if (expectedPresent && value == null) { - throw new RuntimeException(methodName + " returned null but was expected"); + throw new RuntimeException( + methodName + " returned null but should not"); } + if (!expectedPresent && value != null) { - throw new RuntimeException(methodName + " returned non-null but " + - "was expected to be null"); + throw new RuntimeException( + methodName + " returned non-null but should return null"); } } - private static void assertLocaleMatches(Component component, AccessibleContext context) { + private static void assertLocaleMatches(Component component, + AccessibleContext context) { Locale componentLocale = component.getLocale(); Locale accessibleLocale = context.getLocale(); if (componentLocale == null) { throw new RuntimeException("Component.getLocale returned null"); } + if (accessibleLocale == null) { - throw new RuntimeException("AccessibleContext.getLocale returned null"); + throw new RuntimeException( + "AccessibleContext.getLocale returned null"); } + if (!componentLocale.equals(accessibleLocale)) { - throw new RuntimeException(String.format( - "AccessibleContext.getLocale returned [%s], but Component" + - ".getLocale returned [%s]", - accessibleLocale, componentLocale - )); + throw new RuntimeException( + "AccessibleContext.getLocale returned [" + + accessibleLocale + "], but Component.getLocale returned [" + + componentLocale + "]"); } } - private static void assertIntValueEquals(String methodName, int expected, Number actual) { + private static void assertIntValueEquals(String methodName, + int expected, + Number actual) { if (actual == null) { - throw new RuntimeException(methodName + " returned null; expected [" + expected + "]"); + throw new RuntimeException( + methodName + " returned null; expected [" + expected + "]"); } + if (actual.intValue() != expected) { throw new RuntimeException( - methodName + " returned [" + actual + "]; expected [" + expected + "]" - ); + methodName + " returned [" + actual + + "]; expected [" + expected + "]"); } } } diff --git a/test/jdk/jdk/internal/jimage/ImageReaderTest.java b/test/jdk/jdk/internal/jimage/ImageReaderTest.java index b8f7763e97e..5104bb97f95 100644 --- a/test/jdk/jdk/internal/jimage/ImageReaderTest.java +++ b/test/jdk/jdk/internal/jimage/ImageReaderTest.java @@ -37,6 +37,7 @@ import tests.Helper; import tests.JImageGenerator; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.util.Arrays; import java.util.List; @@ -58,6 +59,7 @@ import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; /* * @test + * @bug 8385355 * @summary Tests for ImageReader. * @modules java.base/jdk.internal.jimage * jdk.jlink/jdk.tools.jlink.internal @@ -72,13 +74,18 @@ import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS; /// There is no mutable test instance state to worry about. @TestInstance(PER_CLASS) public class ImageReaderTest { - // The '@' prefix marks the entry as a preview entry which will be placed in - // the '/modules//META-INF/preview/...' namespace. + // The '@' prefix marks the entry as a preview class entry which will be placed in + // the '/modules//META-INF/preview/...' namespace. The '!' prefix marks + // the entry as a non-class resource path. private static final Map> IMAGE_ENTRIES = Map.of( "modfoo", Arrays.asList( "com.foo.HasPreviewVersion", "com.foo.NormalFoo", "com.foo.bar.NormalBar", + "!META-INF/maven/com.google.code.findbugs/jsr305/pom.properties", + "!META-INF/z", + "!META-INF/collision/child.properties", + "!META-INF/collision", // Replaces original class in preview mode. "@com.foo.HasPreviewVersion", // New class in existing package in preview mode. @@ -138,6 +145,23 @@ public class ImageReaderTest { } } + @Test + public void testMetaInfResourcesAreNotPackagePaths() throws IOException { + for (PreviewMode mode : List.of(PreviewMode.ENABLED, PreviewMode.DISABLED)) { + try (ImageReader reader = ImageReader.open(image, mode)) { + assertResource(reader, "modfoo", "META-INF/maven/com.google.code.findbugs/jsr305/pom.properties"); + assertResource(reader, "modfoo", "META-INF/z"); + assertResource(reader, "modfoo", "META-INF/collision/child.properties"); + assertDirContents(reader, "/modules/modfoo/META-INF", "MANIFEST.MF", "collision", "maven", "z"); + assertDirContents(reader, "/modules/modfoo/META-INF/collision", "child.properties"); + assertDirContents(reader, "/modules/modfoo/META-INF/maven", "com.google.code.findbugs"); + assertDirContents(reader, "/modules/modfoo/META-INF/maven/com.google.code.findbugs", "jsr305"); + assertDirContents(reader, "/modules/modfoo/META-INF/maven/com.google.code.findbugs/jsr305", "pom.properties"); + assertAbsent(reader, "/modules/modfoo/META-INF/maven/com/google/code/findbugs/jsr305/pom.properties"); + } + } + } + @ParameterizedTest @CsvSource(delimiter = ':', value = { "modfoo:com/foo/HasPreviewVersion.class", @@ -416,6 +440,10 @@ public class ImageReaderTest { jar.addEntry("module-info.class", InMemoryJavaCompiler.compile("module-info", moduleInfo)); classes.forEach(fqn -> { + if (fqn.startsWith("!")) { + jar.addEntry(fqn.substring(1), "resource".getBytes(StandardCharsets.UTF_8)); + return; + } boolean isPreviewEntry = fqn.startsWith("@"); if (isPreviewEntry) { fqn = fqn.substring(1); diff --git a/test/jdk/jdk/jfr/event/metadata/TestEventMetadata.java b/test/jdk/jdk/jfr/event/metadata/TestEventMetadata.java index 78a92d9a2d9..9e9a4cb9fc3 100644 --- a/test/jdk/jdk/jfr/event/metadata/TestEventMetadata.java +++ b/test/jdk/jdk/jfr/event/metadata/TestEventMetadata.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -147,7 +147,7 @@ public class TestEventMetadata { System.out.println("Verifying name: " + name); Asserts.assertNotEquals(name, null, "Name not allowed to be null"); Asserts.assertTrue(name.length() > 1, "Name must be at least two characters"); - Asserts.assertTrue(name.length() < 32, "Name should not exceed 32 characters"); + Asserts.assertTrue(name.length() <= 48, "Name should not exceed 48 characters"); Asserts.assertFalse(isReservedKeyword(name),"Name must not be reserved keyword in the Java language (" + name + ")"); char firstChar = name.charAt(0); Asserts.assertTrue(Character.isAlphabetic(firstChar), "Name must start with a character"); diff --git a/test/jdk/jdk/jfr/startupargs/Application.java b/test/jdk/jdk/jfr/startupargs/Application.java new file mode 100644 index 00000000000..74235b04f7e --- /dev/null +++ b/test/jdk/jdk/jfr/startupargs/Application.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.jfr.startupargs; + +// Purpose of this class is to allow tests capture environment variables, +// system properties and command line arguments. Using 'java -version' will +// not work as Java command line arguments are not captured. +public class Application { + public static void main(String... args) { + } +} diff --git a/test/jdk/jdk/jfr/startupargs/TestOptionsHelp.java b/test/jdk/jdk/jfr/startupargs/TestOptionsHelp.java new file mode 100644 index 00000000000..16f7ce8500c --- /dev/null +++ b/test/jdk/jdk/jfr/startupargs/TestOptionsHelp.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.jfr.startupargs; + +import jdk.test.lib.Asserts; +import jdk.test.lib.process.OutputAnalyzer; +import jdk.test.lib.process.ProcessTools; + +/** + * @test + * @requires vm.flagless + * @requires vm.hasJFR + * @library /test/lib /test/jdk + * @run main jdk.jfr.startupargs.TestOptionsHelp + */ +public class TestOptionsHelp { + + public static void main(String... args) throws Exception { + ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder("-XX:FlightRecorderOptions:help"); + OutputAnalyzer out = ProcessTools.executeProcess(pb); + out.shouldContain("Syntax : -XX:FlightRecorderOptions:[options]"); + out.shouldContain("numglobalbuffers"); + out.shouldContain("Multiple options are separated"); + out.shouldHaveExitValue(0); + } +} diff --git a/test/jdk/jdk/jfr/startupargs/TestRedact.java b/test/jdk/jdk/jfr/startupargs/TestRedact.java new file mode 100644 index 00000000000..2d96408a3f5 --- /dev/null +++ b/test/jdk/jdk/jfr/startupargs/TestRedact.java @@ -0,0 +1,456 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.jfr.startupargs; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.time.Duration; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; + +import jdk.jfr.FlightRecorder; +import jdk.jfr.Recording; +import jdk.jfr.RecordingState; +import jdk.jfr.consumer.EventStream; +import jdk.jfr.consumer.RecordingFile; +import jdk.test.lib.Asserts; +import jdk.test.lib.jfr.CommonHelper; +import jdk.test.lib.process.OutputAnalyzer; +import jdk.test.lib.process.ProcessTools; + +/** + * @test + * @summary Test that redaction of sensitive data works + * @requires vm.flagless + * @requires vm.hasJFR + * @library /test/lib /test/jdk + * @build jdk.jfr.startupargs.Application + * @run main/timeout=900 jdk.jfr.startupargs.TestRedact + */ +public class TestRedact { + private static Path TEST_DIRECTORY = Path.of(System.getProperty("test.src", ".")).toAbsolutePath(); + private static Path FILE_REDACTED_ARGUMENTS = TEST_DIRECTORY.resolve("redacted-arguments.txt"); + private static Path FILE_REDACTED_KEYS = TEST_DIRECTORY.resolve("redacted-keys.txt"); + + private record Execution( + Path file, + String jvmArgs, + String jvmFlags, + String javaArgs, + Map environment, + Map systemProperties, + Map stringFlags, + OutputAnalyzer output + ) { + + void assertUnredacted(String text) throws Exception { + if (jvmArgs != null && jvmArgs.contains(text)) { + return; + } + if (javaArgs != null && javaArgs.contains(text)) { + return; + } + if (systemProperties.containsValue(text) || environment.containsValue(text)) { + return; + } + printSystemProperties(); + printEnvironment(); + printCommandLine(); + throw new Exception("Could not find text '" + text + "'. Likely it's been incorrectly redacted."); + } + + private void printCommandLine() { + System.out.println("JVM Args: " + jvmArgs); + System.out.println("JVM Flags: " + jvmFlags); + System.out.println("Java Args: " + javaArgs); + System.out.println(); + } + + void assertRedactedKey(String key) throws Exception { + String v = systemProperties.get(key); + if (v != null) { + printSystemProperties(); + if (!v.equals("[REDACTED]")) { + throw new Exception("Expected system property value of key '" + key + "' to be [REDACTED]"); + } + return; + } + v = environment.get(key); + if (v == null) { + printEnvironment(); + printSystemProperties(); + throw new Exception("Expected key '" + key + "' in environment variable or system property"); + } + if (!v.equals("[REDACTED]")) { + printEnvironment(); + throw new Exception("Expected environment value of key '" + key + "' to be [REDACTED]"); + } + } + + void printEnvironment() { + printProperties("Environment Variables", environment); + } + + void printStringFlags() { + printProperties("String Flags", stringFlags); + } + + void printSystemProperties() { + printProperties("System Properties", systemProperties); + } + + private void printProperties(String title, Map map) { + System.out.println(title); + System.out.println("=".repeat(title.length())); + for (var entry : map.entrySet()) { + System.out.println(entry.getKey() + " = " + entry.getValue()); + } + System.out.println(); + } + + boolean hasCapitalizedLetter(String text) { + return text.chars().anyMatch(Character::isUpperCase); + } + + void assertRedactedArgument(String argument) throws Exception { + if (!hasCapitalizedLetter(argument)) { + throw new IllegalArgumentException("Redacted arguments in test must have at least one capitalized letter to avoid clash with random UUID in temporary filenames."); + } + checkArgument("JVM arguments", jvmArgs, argument); + checkArgument("Java arguments", javaArgs, argument); + checkArgument("Flags", jvmFlags, argument); + checkArgument("sun.java.command", systemProperties.get("sun.java.command"), argument); + } + + private void checkArgument(String kind, String arguments, String argument) throws Exception { + if (arguments != null && arguments.contains(argument)) { + System.out.println("ARGS: " + arguments); + throw new Exception("Found '" + argument + "' in " + kind + ". Should have been [REDACTED]"); + } + } + + public void print() { + printCommandLine(); + printEnvironment(); + printSystemProperties(); + printStringFlags(); + } + } + + public static void main(String... args) throws Exception { + testRedactionOfRedacted(); + testRedactKey(); + testRedactArgument(); + testRedactMultiple(); + testWildcards(); + testDefaults(); + testRedactFile(); + testAppendable(); + testEmpty(); + testBinary(); + } + + private static void testRedactionOfRedacted() throws Exception { + Execution e = run( + "-XX:FlightRecorderOptions:" + + "maxchunksize=1MB,redact-argument=Zebra," + + "old-object-queue-size=256," + + "redact-key=tiger", + "Zebra", + "Tiger" + ); + e.assertRedactedArgument("Zebra"); + e.assertRedactedArgument("redact-argument=Zebra"); + e.assertUnredacted("Tiger"); + } + + private static void testAppendable() throws Exception { + Execution e = run( + Map.of( + "Secret", "Thing", // For default filter + "Cat", "Bird" // For user-defined filter + ), + Map.of( + "Secret", "Stuff", // For default filter + "Cat", "Dog" // For user-defined filter + ), + "-XX:FlightRecorderOptions:redact-argument=+Foo;Bar,redact-key=+Cat", + "Foo", // For user-defined + "Bar", // For user-defined + "Secret"); // For default filter + e.assertRedactedArgument("Foo"); // Matched by user-defined filter + e.assertRedactedArgument("Bar"); // Matched by user-defined filter + e.assertRedactedKey("Cat"); // Matched by user-defined filter + e.assertRedactedArgument("Secret"); // Matched by default filter *secret* + e.assertRedactedKey("Secret"); // Matched by default filter *secret* + } + + private static void testWildcards() throws Exception { + Execution e = run( + "-XX:FlightRecorderOptions:redact-argument=*PPLE;ORAN*;C*HE*RY;N?2?4?;A?C*?F", + "APPLE", "ORANGE", "CHERRY", "N12345", "ABCDEF", "N4711" + ); + e.assertRedactedArgument("APPLE"); + e.assertRedactedArgument("ORANGE"); + e.assertRedactedArgument("CHERRY"); + e.assertRedactedArgument("N12345"); + e.assertRedactedArgument("ABCDEF"); + e.assertUnredacted("N4711"); + // Tests that only fully matched filters are redacted + Execution f = run( + "-XX:FlightRecorderOptions:redact-argument=-*TIGER* *", + "--TIGER" + ); + f.assertUnredacted("--TIGER"); + } + + private static void testBinary() throws Exception { + Execution unredacted = run( + Map.of("stuff1", "hammock"), + Map.of("stuff2", "haberdashery"), + "-XX:FlightRecorderOptions:stackdepth=64", + "hammock" + ); + if (!contains(unredacted.file, "hammock")) { + throw new Exception("Expected 'hammock' to be in recording file"); + } + if (!contains(unredacted.file, "haberdashery")) { + throw new Exception("Expected 'haberdashery' to be in recording file"); + } + + Execution redacted = run( + Map.of("what", "zippers"), + Map.of("where", "haberdashery"), + "-XX:FlightRecorderOptions:redact-argument=zippers,redact-key=what;where", + "zippers" + ); + if (contains(redacted.file, "zippers")) { + redacted.print(); + throw new Exception("Expected all occurrences of 'zippers' to be redacted"); + } + if (contains(redacted.file, "haberdashery")) { + redacted.print(); + throw new Exception("Expected all occurrences of 'haberdashery' to be redacted"); + } + } + + private static boolean contains(Path file, String text) throws IOException { + byte[] bytes = Files.readAllBytes(file); + byte[] chars = text.getBytes(StandardCharsets.UTF_8); + for (int i = 0; i <= bytes.length - chars.length; i++) { + if (matchesAt(bytes, chars, i)) { + System.out.print("Found '" + text + "' at position " + i); + System.out.println(" in file " + file.toAbsolutePath()); + return true; + } + } + return false; + } + + private static boolean matchesAt(byte[] bytes, byte[] chars, int position) { + for (int j = 0; j < chars.length; j++) { + if (bytes[position + j] != chars[j]) { + return false; + } + } + return true; + } + + private static void testRedactFile() throws Exception { + Execution e1 = run( + Map.of("stuff1", "Snake"), + Map.of("stuff2", "Snake"), + "-XX:FlightRecorderOptions:redact-argument=@" + FILE_REDACTED_ARGUMENTS, + "https://John:Smith@www.example.com/myresource", + "-conf-Key=chicken", + "/Foo/Dog", + "-Header", "Authorization:Bearer", "Banana", + "Apple"); + e1.assertRedactedArgument("https://John:Smith@www.example.com/myresource"); + e1.assertRedactedArgument("conf-Key=chicken"); + e1.assertRedactedArgument("/Foo/Dog"); + e1.assertRedactedArgument("-Header"); + e1.assertRedactedArgument("Authorization:Bearer"); + e1.assertRedactedArgument("Banana"); + e1.assertRedactedArgument("Apple"); + e1.assertUnredacted("Snake"); + + Execution e2 = run( + Map.of("confidential", "apple"), + Map.of("very-sensitive", "banana"), + "-XX:FlightRecorderOptions:redact-key=@" + FILE_REDACTED_KEYS, + "Snake"); + e2.assertRedactedKey("confidential"); + e2.assertRedactedKey("very-sensitive"); + e2.assertUnredacted("Snake"); + } + + private static void testEmpty() throws Exception { + var environment = Map.of("API_TOKEN", "Zebra1"); + var properties = Map.of("API_KEY", "Zebra2"); + Execution e1 = run(environment, properties, + "-XX:FlightRecorderOptions:redact-key=,redact-argument=", "Zebra3" + ); + e1.output().shouldContain("Default redaction filters are replaced."); + e1.output().shouldContain("redact-key=none to disable filters without a warning"); + e1.output().shouldContain("redact-argument=none to disable filters without a warning"); + e1.assertUnredacted("Zebra1"); + e1.assertUnredacted("Zebra2"); + e1.assertUnredacted("Zebra3"); + + Execution e2 = run(environment, properties, + "-XX:FlightRecorderOptions:redact-argument=none,redact-key=none", "Zebra3" + ); + e2.output().shouldNotContain("Default redaction filters are replaced."); + e2.output().shouldNotContain("redact-key=none to disable filters without a warning"); + e2.output().shouldNotContain("redact-argument=none to disable filters without a warning"); + e2.assertUnredacted("Zebra1"); + e2.assertUnredacted("Zebra2"); + e2.assertUnredacted("Zebra3"); + } + + private static void testDefaults() throws Exception { + Execution e = run( + Map.of("apiKey","thing"), + Map.of("apiKey", "stuff"), + "-DapiKey=stuff", + "Secret", + "-password=Foo" + ); + e.assertRedactedArgument("Secret"); + e.assertRedactedArgument("-password=Foo"); + e.assertRedactedKey("apiKey"); + } + + private static void testRedactArgument() throws Exception { + Execution e = run( + "-XX:FlightRecorderOptions:redact-argument=" + + // FILTERS + "Plain;" + + "--option *;" + + "--pass-phrase *;" + + "--login * *;" + + "--colon-based:*;" + + "https://*:*@*", + // SENSITIVE INFORMATION + "Plain", + "--option", "Option-value", + "--pass-phrase", "Cant-be-whitespace-outage", + "--login", "John", "N4711", + "--colon-based:Hello", + "https://Smith:abc123@example.com/path", + // UNSENSITIVE INFORMATION + "Banana" + ); + e.assertRedactedArgument("Plain"); + e.assertRedactedArgument("Option-value"); + e.assertRedactedArgument("Cant-be-whitespace-outage"); + e.assertRedactedArgument("Hello"); + e.assertRedactedArgument("John"); + e.assertRedactedArgument("N4711"); + e.assertRedactedArgument("Smith:abc123"); + e.assertUnredacted("Banana"); + } + + private static void testRedactMultiple() throws Exception { + Execution e = run( + Map.of("foo", "bird", "bar, ", "orange"), + Map.of("foo", "tiger", "bar", "banana"), + "-XX:FlightRecorderOptions:redact-key=foo;bar,redact-argument=Baz;Quz", "Baz", "Quz"); + e.assertRedactedKey("foo"); + e.assertRedactedKey("bar"); + e.assertRedactedArgument("Baz"); + e.assertRedactedArgument("Quz"); + } + + private static void testRedactKey() throws Exception { + Execution e = run( + Map.of("cart", "wheel", "banana", "split", "rose", "bud"), + Map.of("banana", "split", "cat", "milk", "carpet","magic", "rose", "bud"), + "-XX:FlightRecorderOptions:redact-key=banana;ca*t", + "rose" + ); + e.assertRedactedKey("banana"); + e.assertRedactedKey("cat"); + e.assertRedactedKey("carpet"); + e.assertUnredacted("rose"); + } + + private static Execution run(String options, String... args) throws Exception { + return run(Map.of(), Map.of(), options, args); + } + + private static Execution run(Map environment, Map properties, String options, String... args) throws Exception { + List arguments = new ArrayList<>(); + Path file = Path.of("file.jfr"); + for (var entry : properties.entrySet()) { + arguments.add("-D" + entry.getKey() + "=" + entry.getValue()); + } + arguments.add("-XX:StartFlightRecording:filename=" + file.toAbsolutePath().toString()); + arguments.add(options); + arguments.add("jdk.jfr.startupargs.Application"); + arguments.addAll(Arrays.asList(args)); + + ProcessBuilder pb = ProcessTools.createLimitedTestJavaProcessBuilder(arguments); + pb.environment().put("env.secret", "confidential"); + // An environment variable redacted by default filters + pb.environment().putAll(environment); + + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + System.out.println(output.getOutput()); + output.shouldHaveExitValue(0); + var environmentVariables = new HashMap(); + var systemProperties = new HashMap(); + var stringFlags = new HashMap(); + var jvmArgs = new AtomicReference(); + var jvmFlags= new AtomicReference(); + var javaArgs = new AtomicReference(); + try (var es = EventStream.openFile(file)) { + es.onEvent("jdk.InitialSystemProperty", e -> { + systemProperties.put(e.getString("key"), e.getString("value")); + }); + es.onEvent("jdk.InitialEnvironmentVariable", e -> { + environmentVariables.put(e.getString("key"), e.getString("value")); + }); + es.onEvent("jdk.JVMInformation", e -> { + jvmArgs.set(e.getString("jvmArguments")); + javaArgs.set(e.getString("javaArguments")); + jvmFlags.set(e.getString("jvmFlags")); + }); + es.onEvent("jdk.StringFlag", e -> { + stringFlags.put(e.getString("name"), e.getString("value")); + }); + es.start(); + } + return new Execution(file, + jvmArgs.get(), jvmFlags.get(), javaArgs.get(), + environmentVariables, systemProperties, stringFlags, output); + } +} diff --git a/test/jdk/jdk/jfr/startupargs/redacted-arguments.txt b/test/jdk/jdk/jfr/startupargs/redacted-arguments.txt new file mode 100644 index 00000000000..8f7ffb22569 --- /dev/null +++ b/test/jdk/jdk/jfr/startupargs/redacted-arguments.txt @@ -0,0 +1,6 @@ +https://*:*@* +apple +-conf-key=* +/foo/* +--passphrase * +-header Authorization:Bearer * diff --git a/test/jdk/jdk/jfr/startupargs/redacted-keys.txt b/test/jdk/jdk/jfr/startupargs/redacted-keys.txt new file mode 100644 index 00000000000..b63aa66cc70 --- /dev/null +++ b/test/jdk/jdk/jfr/startupargs/redacted-keys.txt @@ -0,0 +1,2 @@ +*sensitive +confidential diff --git a/test/jdk/sun/security/provider/X509Factory/BadPem.java b/test/jdk/sun/security/provider/X509Factory/BadPem.java index c63f9295123..31e7a7e3a63 100644 --- a/test/jdk/sun/security/provider/X509Factory/BadPem.java +++ b/test/jdk/sun/security/provider/X509Factory/BadPem.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -53,7 +53,7 @@ public class BadPem { pass.toCharArray()); byte[] cert = keyStore.getCertificate(alias).getEncoded(); - // 8074935 + // Revert 8074935. RFC 7468 allows non-base64 chars ByteArrayOutputStream bout = new ByteArrayOutputStream(); PrintStream pout = new PrintStream(bout); byte[] CRLF = new byte[] {'\r', '\n'}; @@ -67,9 +67,8 @@ public class BadPem { try { cf.generateCertificate(new ByteArrayInputStream(bout.toByteArray())); - throw new Exception("Should fail"); } catch (CertificateException e) { - // Good + throw new Exception("Should not fail"); } // 8208602 diff --git a/test/jdk/sun/security/provider/certpath/DisabledAlgorithms/CPBuilder.java b/test/jdk/sun/security/provider/certpath/DisabledAlgorithms/CPBuilder.java index 91ea3533cb8..9c68ae138ef 100644 --- a/test/jdk/sun/security/provider/certpath/DisabledAlgorithms/CPBuilder.java +++ b/test/jdk/sun/security/provider/certpath/DisabledAlgorithms/CPBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -49,7 +49,7 @@ * @author Xuelei Fan */ -import java.security.DEREncodable; +import java.security.BinaryEncodable; import java.security.PEMDecoder; import java.util.*; import java.security.Security; @@ -340,11 +340,11 @@ public class CPBuilder { } private static CertStore generateCertificateStore() throws Exception { - Collection entries = new HashSet<>(); + Collection entries = new HashSet<>(); for (String key : certmap.keySet()) { String certStr = certmap.get(key); - DEREncodable cert = PEM_DECODER.decode(certStr, X509Certificate.class); + BinaryEncodable cert = PEM_DECODER.decode(certStr, X509Certificate.class); entries.add(cert); } diff --git a/test/jdk/sun/security/provider/certpath/DisabledAlgorithms/CPBuilderWithMD5.java b/test/jdk/sun/security/provider/certpath/DisabledAlgorithms/CPBuilderWithMD5.java index 036a9634469..cbdeb6609e4 100644 --- a/test/jdk/sun/security/provider/certpath/DisabledAlgorithms/CPBuilderWithMD5.java +++ b/test/jdk/sun/security/provider/certpath/DisabledAlgorithms/CPBuilderWithMD5.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -54,7 +54,7 @@ * certificates used in this test are generated by an updated generate.sh that * replacing MD2 with MD5 algorithm. */ -import java.security.DEREncodable; +import java.security.BinaryEncodable; import java.security.PEMDecoder; import java.util.*; import java.security.cert.*; @@ -344,14 +344,14 @@ public class CPBuilderWithMD5 { } private static CertStore generateCertificateStore() throws Exception { - Collection entries = new HashSet<>(); + Collection entries = new HashSet<>(); // generate certificate from certificate string CertificateFactory cf = CertificateFactory.getInstance("X.509"); for (String key : certmap.keySet()) { String certStr = certmap.get(key); - DEREncodable cert = PEM_DECODER.decode(certStr, X509Certificate.class); + BinaryEncodable cert = PEM_DECODER.decode(certStr, X509Certificate.class); entries.add(cert); } diff --git a/test/jdk/sun/security/rsa/pss/PSSKeyCompatibility.java b/test/jdk/sun/security/rsa/pss/PSSKeyCompatibility.java index 940d4bd2059..49ee7387f17 100644 --- a/test/jdk/sun/security/rsa/pss/PSSKeyCompatibility.java +++ b/test/jdk/sun/security/rsa/pss/PSSKeyCompatibility.java @@ -76,7 +76,7 @@ public class PSSKeyCompatibility { try { final PEMDecoder decoder = PEMDecoder.of() - .withFactory(Security.getProvider(provider)); + .withFactoriesOf(Security.getProvider(provider)); final PrivateKey priv = decoder.decode( type, PrivateKey.class @@ -119,7 +119,7 @@ public class PSSKeyCompatibility { System.out.println(cert); final PEMDecoder decoder = PEMDecoder.of() - .withFactory(Security.getProvider(provider)); + .withFactoriesOf(Security.getProvider(provider)); final RSAPublicKey pub = decoder.decode( PEMEncoder.of().encodeToString( new X509EncodedKeySpec( diff --git a/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetTag.java b/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetTag.java index 26030629738..24a7b5aa5da 100644 --- a/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetTag.java +++ b/test/langtools/jdk/javadoc/doclet/testSnippetTag/TestSnippetTag.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 8266666 8275788 8276964 8299080 8276966 + * @bug 8266666 8275788 8276964 8299080 8276966 8385738 * @summary Implementation for snippets * @library /tools/lib ../../lib * @modules jdk.compiler/com.sun.tools.javac.api @@ -39,6 +39,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; @@ -2685,4 +2686,94 @@ public class TestSnippetTag extends SnippetTester { """); checkNoCrashes(); } + + @Test + public void testSnippetIdCounterResetsPerPage(Path base) throws IOException { + Path src = base.resolve("src"); + + tb.writeJavaFiles(src, + """ + package p; + import java.lang.annotation.Target; + import java.lang.annotation.ElementType; + @Target({ElementType.TYPE, ElementType.METHOD}) + public @interface ACustomAnnotation { + } + """, + """ + package p; + import java.lang.annotation.Target; + import java.lang.annotation.ElementType; + @Target({ElementType.TYPE, ElementType.METHOD}) + public @interface ZCustomAnnotation { + } + """, + """ + package p; + /** Class A. */ + public class A { + /** + * First snippet on A.foo: + * {@snippet : + * int x = 1; // first + * } + * Second snippet on A.foo: + * {@snippet : + * int y = 2; // second + * } + */ + @ACustomAnnotation + @ZCustomAnnotation + public void foo() {} + } + """, + """ + package p; + /** Class B. */ + public class B { + /** + * First snippet on B.foo: + * {@snippet : + * int x = 1; // first + * } + * Second snippet on B.foo: + * {@snippet : + * int y = 2; // second + * } + */ + @ACustomAnnotation + @ZCustomAnnotation + public void foo() {} + } + """); + + javadoc("-d", base.resolve("out").toString(), + "-use", + "-sourcepath", src.toString(), + "p"); + checkExit(Exit.OK); + for (String cls : new String[] { + "A.html", + "B.html", + "class-use/ACustomAnnotation.html", + "class-use/ZCustomAnnotation.html"}) { + var file = base + .resolve("out") + .resolve("p") + .resolve(cls); + String content = Files.readString(file); + for (var snippetId : new String[] {"snippet-foo()1", "snippet-foo()2"}) { + checking("id \"" + snippetId + "\" present in " + cls); + if (content.contains("id=\"" + snippetId + "\"")) { + passed("found"); + } else { + failed("" + snippetId + " not found in " + + String.join("\n", Arrays.asList(content.split("\n")) + .stream() + .filter(l -> l.contains("pre class=\"snippet\"")) + .toList())); + } + } + } + } } diff --git a/test/langtools/tools/javac/api/TestGetSourceVersions.java b/test/langtools/tools/javac/api/TestGetSourceVersions.java index 61147bc458d..e8cb20ca213 100644 --- a/test/langtools/tools/javac/api/TestGetSourceVersions.java +++ b/test/langtools/tools/javac/api/TestGetSourceVersions.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,7 @@ /* * @test * @bug 6395981 6458819 7025784 8028543 8028544 8193291 8193292 8193292 8205393 8245585 8245585 8245585 8286034 - * 8296150 8306585 8319414 8330183 8342982 8355748 8370893 + * 8296150 8306585 8319414 8330183 8342982 8355748 8370893 8384838 * @summary JavaCompilerTool and Tool must specify version of JLS and JVMS * @author Peter von der Ahé * @modules java.compiler @@ -38,6 +38,7 @@ * RELEASE_13 RELEASE_14 RELEASE_15 RELEASE_16 RELEASE_17 * RELEASE_18 RELEASE_19 RELEASE_20 RELEASE_21 RELEASE_22 * RELEASE_23 RELEASE_24 RELEASE_25 RELEASE_26 RELEASE_27 + * RELEASE_28 */ import java.util.EnumSet; diff --git a/test/langtools/tools/javac/classfiles/ClassVersionChecker.java b/test/langtools/tools/javac/classfiles/ClassVersionChecker.java index 8cf30373e29..2d8fd9f03b7 100644 --- a/test/langtools/tools/javac/classfiles/ClassVersionChecker.java +++ b/test/langtools/tools/javac/classfiles/ClassVersionChecker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,7 @@ /* * @test * @bug 7157626 8001112 8188870 8173382 8193290 8205619 8245586 8257453 8306586 8330184 - * 8342983 8355751 8370894 + * 8342983 8355751 8370894 8384842 * @summary Test major version for all legal combinations for -source and -target * @author sgoel * @@ -63,6 +63,7 @@ public class ClassVersionChecker { TWENTY_FIVE("25", 69), TWENTY_SIX("26", 70), TWENTY_SEVEN("27", 71), + TWENTY_EIGHT("28", 72), ; // Reduce code churn when appending new constants private Version(String release, int classFileVer) { diff --git a/test/langtools/tools/javac/lambda/ManyLambdasSerialization.java b/test/langtools/tools/javac/lambda/ManyLambdasSerialization.java new file mode 100644 index 00000000000..202cc5e4cd6 --- /dev/null +++ b/test/langtools/tools/javac/lambda/ManyLambdasSerialization.java @@ -0,0 +1,388 @@ +/* + * Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8381812 + * @summary Check that serializable lambda desugaring can handle many serializable lambdas + * @library /tools/lib + * @modules jdk.compiler/com.sun.tools.javac.api + * jdk.compiler/com.sun.tools.javac.main + * jdk.compiler/com.sun.tools.javac.util + * @compile ManyLambdasSerialization.java + * @build toolbox.ToolBox + * @run junit ManyLambdasSerialization + */ + +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.junit.jupiter.api.Test; +import toolbox.JavacTask; +import toolbox.JavaTask; +import toolbox.Task; +import toolbox.ToolBox; + +public class ManyLambdasSerialization { + private static final int LAMBDA_COUNT = 1000; + private final ToolBox tb = new ToolBox(); + + @Test + public void testManySerializableLambdasDifferentImplMethodName() throws IOException { + List lambdaMethods = new ArrayList<>(); + List tests = new ArrayList<>(); + + for (int i = 0; i < LAMBDA_COUNT; i++) { + String index = Integer.toString(i); + + lambdaMethods.add(""" + private static Supplier create${INDEX}() { + return (Supplier & Serializable) () -> ${INDEX}; + } + """.replace("${INDEX}", index)); + tests.add(" runTest(${INDEX}, create${INDEX}());\n".replace("${INDEX}", index)); + } + + StringBuilder code = new StringBuilder(); + code.append(""" + import java.io.*; + import java.util.function.Supplier; + class Test { + """); + + lambdaMethods.forEach(code::append); + + code.append(""" + private static void runTest(int expectedResult, Supplier instance) throws Exception { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { + oos.writeObject(instance); + oos.close(); + } + try (ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray()); + ObjectInputStream ois = new ObjectInputStream(in)) { + int actual = ((Supplier) ois.readObject()).get(); + if (expectedResult != actual) { + throw new AssertionError("Expected: " + expectedResult + ", actual: " + actual); + } + } + } + + public static void main() throws Exception { + """); + + tests.forEach(code::append); + + code.append(""" + System.err.println("OK"); + } + } + """); + + new JavacTask(tb) + .sources(code.toString()) + .outdir(".") + .run() + .writeAll(); + + List output = new JavaTask(tb) + .classpath(".") + .className("Test") + .run() + .writeAll() + .getOutputLines(Task.OutputKind.STDERR); + + tb.checkEqual(List.of("OK"), output); + } + +// @Test The current deserialization does not support too many serialized lambdas with the same implementation method name + public void testManySerializableLambdasSameImplMethodName() { + List lambdaMethods = new ArrayList<>(); + List tests = new ArrayList<>(); + + for (int i = 0; i < LAMBDA_COUNT; i++) { + String index = Integer.toString(i); + + lambdaMethods.add(""" + private static Function create${INDEX}() { + return (Function & Serializable) Test::id; + } + record Box${INDEX}(int i) {} + """.replace("${INDEX}", index)); + tests.add(""" + runTest(create${INDEX}(), t -> { + int expectedResult = ${INDEX}; + //in case of a bad deserialization, the implicit cast here would fail: + int actual = t.apply(new Box${INDEX}(expectedResult)).i(); + if (expectedResult != actual) { + throw new AssertionError("Expected: " + expectedResult + ", actual: " + actual); + } + }); + """.replace("${INDEX}", index)); + } + + StringBuilder code = new StringBuilder(); + code.append(""" + import java.io.*; + import java.util.function.*; + class Test { + """); + + lambdaMethods.forEach(code::append); + + code.append(""" + private static T id(T t) { return t; } + private static void runTest(Function testInstance, Consumer> checker) throws Exception { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { + oos.writeObject(testInstance); + oos.close(); + } + try (ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray()); + ObjectInputStream ois = new ObjectInputStream(in)) { + checker.accept((Function) ois.readObject()); + } + } + + public static void main() throws Exception { + """); + + tests.forEach(code::append); + + code.append(""" + System.err.println("OK"); + } + } + """); + + new JavacTask(tb) + .sources(code.toString()) + .outdir(".") + .run() + .writeAll(); + + List output = new JavaTask(tb) + .classpath(".") + .className("Test") + .run() + .writeAll() + .getOutputLines(Task.OutputKind.STDERR); + + tb.checkEqual(List.of("OK"), output); + } + + @Test + public void testManySerializableLambdasCapturing() { + List lambdaMethods = new ArrayList<>(); + List tests = new ArrayList<>(); + + for (int i = 0; i < LAMBDA_COUNT; i++) { + String index = Integer.toString(i); + int capturedValues = 10; + + lambdaMethods.add(""" + private static Supplier create${INDEX}() { + ${DECLARATIONS} + return (Supplier & Serializable) () -> ${CAPTURED}; + } + """.replace("${INDEX}", index) + .replace("${DECLARATIONS}", Stream.iterate(0, v -> v + 1).limit(capturedValues).map(v -> "int v" + v + " = " + index + ";\n").collect(Collectors.joining())) + .replace("${CAPTURED}", Stream.iterate(0, v -> v + 1).limit(capturedValues).map(v -> "v" + v).collect(Collectors.joining(" + ")))); + tests.add(" runTest(${EXPECTED}, create${INDEX}());\n".replace("${INDEX}", index).replace("${EXPECTED}", String.valueOf(capturedValues * i))); + } + + StringBuilder code = new StringBuilder(); + code.append(""" + import java.io.*; + import java.util.function.Supplier; + class Test { + """); + + lambdaMethods.forEach(code::append); + + code.append(""" + private static void runTest(int expectedResult, Supplier instance) throws Exception { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { + oos.writeObject(instance); + oos.close(); + } + try (ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray()); + ObjectInputStream ois = new ObjectInputStream(in)) { + int actual = ((Supplier) ois.readObject()).get(); + if (expectedResult != actual) { + throw new AssertionError("Expected: " + expectedResult + ", actual: " + actual); + } + } + } + + public static void main() throws Exception { + """); + + tests.forEach(code::append); + + code.append(""" + System.err.println("OK"); + } + } + """); + + new JavacTask(tb) + .sources(code.toString()) + .outdir(".") + .run() + .writeAll(); + + List output = new JavaTask(tb) + .classpath(".") + .className("Test") + .run() + .writeAll() + .getOutputLines(Task.OutputKind.STDERR); + + tb.checkEqual(List.of("OK"), output); + } + + @Test + public void testVeryManySerializableLambdasCapturing() { + List lambdaMethods = new ArrayList<>(); + List tests = new ArrayList<>(); + + for (int i = 0; i < LAMBDA_COUNT; i++) { + String index = Integer.toString(i); + int capturedValues = 200; + + lambdaMethods.add(""" + private static Supplier create${INDEX}() { + ${DECLARATIONS} + return (Supplier & Serializable) () -> ${CAPTURED}; + } + """.replace("${INDEX}", index) + .replace("${DECLARATIONS}", Stream.iterate(0, v -> v + 1).limit(capturedValues).map(v -> "int v" + v + " = " + index + ";\n").collect(Collectors.joining())) + .replace("${CAPTURED}", Stream.iterate(0, v -> v + 1).limit(capturedValues).map(v -> "v" + v).collect(Collectors.joining(" + ")))); + tests.add(" runTest(${EXPECTED}, create${INDEX}());\n".replace("${INDEX}", index).replace("${EXPECTED}", String.valueOf(capturedValues * i))); + } + + StringBuilder code = new StringBuilder(); + code.append(""" + import java.io.*; + import java.util.function.Supplier; + class Test { + """); + + lambdaMethods.forEach(code::append); + + code.append(""" + private static void runTest(int expectedResult, Supplier instance) throws Exception { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { + oos.writeObject(instance); + oos.close(); + } + try (ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray()); + ObjectInputStream ois = new ObjectInputStream(in)) { + int actual = ((Supplier) ois.readObject()).get(); + if (expectedResult != actual) { + throw new AssertionError("Expected: " + expectedResult + ", actual: " + actual); + } + } + } + + public static void main() throws Exception { + """); + + tests.forEach(code::append); + + code.append(""" + System.err.println("OK"); + } + } + """); + + new JavacTask(tb) + .sources(code.toString()) + .options("-XDdeserializableLambdaCaseCountLimit=15") + .outdir(".") + .run() + .writeAll(); + + List output = new JavaTask(tb) + .classpath(".") + .className("Test") + .run() + .writeAll() + .getOutputLines(Task.OutputKind.STDERR); + + tb.checkEqual(List.of("OK"), output); + } + + @Test + public void testVerifyWeirdImplNameWorks() { + //make sure method references with name "init" and "" + //don't clash in deserialization method name: + String code = """ + import java.io.*; + import java.util.function.Supplier; + public class Test { + public static Test init() { return new Test("factory"); } + public Test() { this("constructor"); } + + private final String origin; + private Test(String origin) { this.origin = origin;} + public static void main() throws Exception { + Supplier fromConstructor = (Supplier & Serializable) Test::new; + Supplier fromFactory = (Supplier & Serializable) Test::init; + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { + oos.writeObject(fromConstructor); + oos.writeObject(fromFactory); + oos.close(); + } + try (ByteArrayInputStream in = new ByteArrayInputStream(baos.toByteArray()); + ObjectInputStream ois = new ObjectInputStream(in)) { + System.err.println(((Supplier) ois.readObject()).get().origin); + System.err.println(((Supplier) ois.readObject()).get().origin); + } + } + } + """; + new JavacTask(tb) + .sources(code.toString()) + .outdir(".") + .run() + .writeAll(); + + List output = new JavaTask(tb) + .classpath(".") + .className("Test") + .run() + .writeAll() + .getOutputLines(Task.OutputKind.STDERR); + + tb.checkEqual(List.of("constructor", "factory"), output); + } +} diff --git a/test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java b/test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java index 70a1e028839..d639338d39d 100644 --- a/test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java +++ b/test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -113,7 +113,7 @@ public abstract class JavacTestingAbstractProcessor extends AbstractProcessor { * corresponding platform visitor type. */ - @SupportedSourceVersion(RELEASE_27) + @SupportedSourceVersion(RELEASE_28) @SuppressWarnings("preview") public static abstract class AbstractAnnotationValueVisitor extends AbstractAnnotationValueVisitorPreview { @@ -125,7 +125,7 @@ public abstract class JavacTestingAbstractProcessor extends AbstractProcessor { } } - @SupportedSourceVersion(RELEASE_27) + @SupportedSourceVersion(RELEASE_28) @SuppressWarnings("preview") public static abstract class AbstractElementVisitor extends AbstractElementVisitorPreview { /** @@ -136,7 +136,7 @@ public abstract class JavacTestingAbstractProcessor extends AbstractProcessor { } } - @SupportedSourceVersion(RELEASE_27) + @SupportedSourceVersion(RELEASE_28) @SuppressWarnings("preview") public static abstract class AbstractTypeVisitor extends AbstractTypeVisitorPreview { /** @@ -147,7 +147,7 @@ public abstract class JavacTestingAbstractProcessor extends AbstractProcessor { } } - @SupportedSourceVersion(RELEASE_27) + @SupportedSourceVersion(RELEASE_28) @SuppressWarnings("preview") public static class ElementKindVisitor extends ElementKindVisitorPreview { /** @@ -169,7 +169,7 @@ public abstract class JavacTestingAbstractProcessor extends AbstractProcessor { } } - @SupportedSourceVersion(RELEASE_27) + @SupportedSourceVersion(RELEASE_28) @SuppressWarnings("preview") public static class ElementScanner extends ElementScannerPreview { /** @@ -189,7 +189,7 @@ public abstract class JavacTestingAbstractProcessor extends AbstractProcessor { } } - @SupportedSourceVersion(RELEASE_27) + @SupportedSourceVersion(RELEASE_28) @SuppressWarnings("preview") public static class SimpleAnnotationValueVisitor extends SimpleAnnotationValueVisitorPreview { /** @@ -211,7 +211,7 @@ public abstract class JavacTestingAbstractProcessor extends AbstractProcessor { } } - @SupportedSourceVersion(RELEASE_27) + @SupportedSourceVersion(RELEASE_28) @SuppressWarnings("preview") public static class SimpleElementVisitor extends SimpleElementVisitorPreview { /** @@ -233,7 +233,7 @@ public abstract class JavacTestingAbstractProcessor extends AbstractProcessor { } } - @SupportedSourceVersion(RELEASE_27) + @SupportedSourceVersion(RELEASE_28) @SuppressWarnings("preview") public static class SimpleTypeVisitor extends SimpleTypeVisitorPreview { /** @@ -255,7 +255,7 @@ public abstract class JavacTestingAbstractProcessor extends AbstractProcessor { } } - @SupportedSourceVersion(RELEASE_27) + @SupportedSourceVersion(RELEASE_28) @SuppressWarnings("preview") public static class TypeKindVisitor extends TypeKindVisitorPreview { /** diff --git a/test/langtools/tools/javac/preview/classReaderTest/Client.nopreview.out b/test/langtools/tools/javac/preview/classReaderTest/Client.nopreview.out index f46b53f80db..53d7f0472d5 100644 --- a/test/langtools/tools/javac/preview/classReaderTest/Client.nopreview.out +++ b/test/langtools/tools/javac/preview/classReaderTest/Client.nopreview.out @@ -1,2 +1,2 @@ -- compiler.err.preview.feature.disabled.classfile: Bar.class, 27 +- compiler.err.preview.feature.disabled.classfile: Bar.class, 28 1 error diff --git a/test/langtools/tools/javac/preview/classReaderTest/Client.preview.out b/test/langtools/tools/javac/preview/classReaderTest/Client.preview.out index 7ae297ee2fb..477dbdd0398 100644 --- a/test/langtools/tools/javac/preview/classReaderTest/Client.preview.out +++ b/test/langtools/tools/javac/preview/classReaderTest/Client.preview.out @@ -1,4 +1,4 @@ -- compiler.warn.preview.feature.use.classfile: Bar.class, 27 +- compiler.warn.preview.feature.use.classfile: Bar.class, 28 - compiler.err.warnings.and.werror 1 error 1 warning diff --git a/test/langtools/tools/javac/versions/Versions.java b/test/langtools/tools/javac/versions/Versions.java index e83f7b8c308..9a0ffd4e5d1 100644 --- a/test/langtools/tools/javac/versions/Versions.java +++ b/test/langtools/tools/javac/versions/Versions.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2025, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,7 @@ * @bug 4981566 5028634 5094412 6304984 7025786 7025789 8001112 8028545 * 8000961 8030610 8028546 8188870 8173382 8173382 8193290 8205619 8028563 * 8245147 8245586 8257453 8286035 8306586 8320806 8306586 8319414 8330183 - * 8342982 8355748 8356108 8370893 + * 8342982 8355748 8356108 8370893 8384838 * @summary Check interpretation of -target and -source options * @modules java.compiler * jdk.compiler @@ -73,9 +73,9 @@ public class Versions { public static final Set VALID_SOURCES = Set.of("1.8", "1.9", "1.10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", - "23", "24", "25", "26", "27"); + "23", "24", "25", "26", "27", "28"); - public static final String LATEST_MAJOR_VERSION = "71.0"; + public static final String LATEST_MAJOR_VERSION = "72.0"; static enum SourceTarget { EIGHT(true, "52.0", "8"), @@ -98,6 +98,7 @@ public class Versions { TWENTY_FIVE(false,"69.0", "25"), TWENTY_SIX(false, "70.0", "26"), TWENTY_SEVEN(false, "71.0", "27"), + TWENTY_EIGHT(false, "72.0", "28"), ; // Reduce code churn when appending new constants private final boolean dotOne; diff --git a/test/lib/jdk/test/lib/apps/LingeredApp.java b/test/lib/jdk/test/lib/apps/LingeredApp.java index 9a8395d7879..f8ebc844bcb 100644 --- a/test/lib/jdk/test/lib/apps/LingeredApp.java +++ b/test/lib/jdk/test/lib/apps/LingeredApp.java @@ -643,6 +643,8 @@ public class LingeredApp { crasher.run(); } } + // Force a GC now to reduce the risk of one happening during the loop below. + System.gc(); while (Files.exists(path)) { // Touch the lock to indicate our readiness setLastModified(theLockFileName, epoch());