summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2012-05-02 08:06:02 -0700
committerAaron Plattner <aplattner@nvidia.com>2012-05-02 08:06:02 -0700
commitc3e638087673f0f4b7a751685a97b7830a8d9a18 (patch)
treedfc366ef00d9df26f09931e959fbeb100931ccc4
parent6c04ca8c874a7407154520f8e78698b6e27206e7 (diff)
302.07302.07
-rw-r--r--Makefile203
-rw-r--r--dist-files.mk60
-rw-r--r--doc/Makefile115
-rw-r--r--doc/nvidia-settings.pngbin3485 -> 17255 bytes
-rw-r--r--doc/src.mk2
-rw-r--r--doc/version.mk1
-rw-r--r--samples/Makefile10
-rw-r--r--samples/nv-control-dpy.c154
-rw-r--r--samples/nv-control-dvc.c2
-rw-r--r--samples/nv-control-events.c574
-rw-r--r--samples/nv-control-gvi.c29
-rw-r--r--samples/nv-control-info.c19
-rw-r--r--samples/nv-control-targets.c2
-rw-r--r--samples/src.mk2
-rw-r--r--samples/version.mk1
-rw-r--r--src/Makefile174
-rw-r--r--src/command-line.c62
-rw-r--r--src/command-line.h2
-rw-r--r--src/common-utils/common-utils.c338
-rw-r--r--src/common-utils/common-utils.h78
-rw-r--r--src/common-utils/gen-manpage-opts-helper.c181
-rw-r--r--src/common-utils/gen-manpage-opts-helper.h24
-rw-r--r--src/common-utils/nvgetopt.c125
-rw-r--r--src/common-utils/nvgetopt.h24
-rw-r--r--src/common-utils/src.mk6
-rw-r--r--src/config-file.c4
-rw-r--r--src/gen-manpage-opts.c115
-rw-r--r--src/glxinfo.c1
-rw-r--r--src/gtk+-2.x/ctk3dvisionpro.c1
-rw-r--r--src/gtk+-2.x/ctkbanner.c3
-rw-r--r--src/gtk+-2.x/ctkbanner.h1
-rw-r--r--src/gtk+-2.x/ctkclocks.c1
-rw-r--r--src/gtk+-2.x/ctkcolorcontrols.c150
-rw-r--r--src/gtk+-2.x/ctkcolorcontrols.h6
-rw-r--r--src/gtk+-2.x/ctkcolorcorrection.c25
-rw-r--r--src/gtk+-2.x/ctkconfig.c1
-rw-r--r--src/gtk+-2.x/ctkcursorshadow.c1
-rw-r--r--src/gtk+-2.x/ctkcurve.c1
-rw-r--r--src/gtk+-2.x/ctkdisplayconfig-utils.c597
-rw-r--r--src/gtk+-2.x/ctkdisplayconfig-utils.h6
-rw-r--r--src/gtk+-2.x/ctkdisplayconfig.c1200
-rw-r--r--src/gtk+-2.x/ctkdisplayconfig.h33
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-crt.c100
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-crt.h6
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-dfp.c1433
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-dfp.h106
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-tv.c186
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice-tv.h6
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice.c708
-rw-r--r--src/gtk+-2.x/ctkdisplaydevice.h93
-rw-r--r--src/gtk+-2.x/ctkdisplaylayout.c268
-rw-r--r--src/gtk+-2.x/ctkdisplaylayout.h27
-rw-r--r--src/gtk+-2.x/ctkditheringcontrols.c247
-rw-r--r--src/gtk+-2.x/ctkditheringcontrols.h14
-rw-r--r--src/gtk+-2.x/ctkdropdownmenu.c1
-rw-r--r--src/gtk+-2.x/ctkecc.c1
-rw-r--r--src/gtk+-2.x/ctkedid.c42
-rw-r--r--src/gtk+-2.x/ctkedid.h10
-rw-r--r--src/gtk+-2.x/ctkevent.c45
-rw-r--r--src/gtk+-2.x/ctkframelock.c129
-rw-r--r--src/gtk+-2.x/ctkgauge.c1
-rw-r--r--src/gtk+-2.x/ctkglx.c1
-rw-r--r--src/gtk+-2.x/ctkgpu.c69
-rw-r--r--src/gtk+-2.x/ctkgvi.c5
-rw-r--r--src/gtk+-2.x/ctkgvo-banner.c1
-rw-r--r--src/gtk+-2.x/ctkgvo-csc.c1
-rw-r--r--src/gtk+-2.x/ctkgvo-sync.c1
-rw-r--r--src/gtk+-2.x/ctkgvo.c1457
-rw-r--r--src/gtk+-2.x/ctkgvo.h36
-rw-r--r--src/gtk+-2.x/ctkhelp.c3
-rw-r--r--src/gtk+-2.x/ctkimagesliders.c273
-rw-r--r--src/gtk+-2.x/ctkimagesliders.h9
-rw-r--r--src/gtk+-2.x/ctklicense.c1
-rw-r--r--src/gtk+-2.x/ctkmultisample.c52
-rw-r--r--src/gtk+-2.x/ctkopengl.c90
-rw-r--r--src/gtk+-2.x/ctkopengl.h1
-rw-r--r--src/gtk+-2.x/ctkpowermizer.c1
-rw-r--r--src/gtk+-2.x/ctkpowersavings.c1
-rw-r--r--src/gtk+-2.x/ctkrandr.c644
-rw-r--r--src/gtk+-2.x/ctkrandr.h92
-rw-r--r--src/gtk+-2.x/ctkscale.c1
-rw-r--r--src/gtk+-2.x/ctkscreen.c90
-rw-r--r--src/gtk+-2.x/ctkserver.c1
-rw-r--r--src/gtk+-2.x/ctkslimm.c4
-rw-r--r--src/gtk+-2.x/ctkthermal.c1
-rw-r--r--src/gtk+-2.x/ctkutils.c112
-rw-r--r--src/gtk+-2.x/ctkutils.h5
-rw-r--r--src/gtk+-2.x/ctkvcs.c3
-rw-r--r--src/gtk+-2.x/ctkwindow.c162
-rw-r--r--src/gtk+-2.x/ctkxvideo.c1
-rw-r--r--src/gtk+-2.x/src.mk99
-rw-r--r--src/image_data/rotate_left_off.pngbin373 -> 0 bytes
-rw-r--r--src/image_data/rotate_left_off_pixdata.h138
-rw-r--r--src/image_data/rotate_left_on.pngbin386 -> 0 bytes
-rw-r--r--src/image_data/rotate_left_on_pixdata.h135
-rw-r--r--src/image_data/rotate_right_off.pngbin522 -> 0 bytes
-rw-r--r--src/image_data/rotate_right_off_pixdata.h138
-rw-r--r--src/image_data/rotate_right_on.pngbin526 -> 0 bytes
-rw-r--r--src/image_data/rotate_right_on_pixdata.h135
-rw-r--r--src/image_data/rotation.pngbin12658 -> 0 bytes
-rw-r--r--src/image_data/rotation_orientation_horz.pngbin7318 -> 0 bytes
-rw-r--r--src/image_data/rotation_orientation_horz_pixdata.h2304
-rw-r--r--src/image_data/rotation_orientation_vert.pngbin6596 -> 0 bytes
-rw-r--r--src/image_data/rotation_orientation_vert_pixdata.h2425
-rw-r--r--src/image_data/rotation_pixdata.h1347
-rw-r--r--src/image_data/src.mk99
-rw-r--r--src/libXNVCtrl/Makefile1
-rw-r--r--src/libXNVCtrl/NVCtrl.h323
-rw-r--r--src/libXNVCtrl/nv_control.h5
-rw-r--r--src/libXNVCtrlAttributes/NvCtrlAttributes.c35
-rw-r--r--src/libXNVCtrlAttributes/NvCtrlAttributes.h23
-rw-r--r--src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h14
-rw-r--r--src/libXNVCtrlAttributes/NvCtrlAttributesXrandr.c391
-rw-r--r--src/libXNVCtrlAttributes/src.mk14
-rw-r--r--src/lscf.c3
-rw-r--r--src/msg.c3
-rw-r--r--src/msg.h43
-rw-r--r--src/option-table.h74
-rw-r--r--src/parse.c95
-rw-r--r--src/parse.h10
-rw-r--r--src/query-assign.c101
-rw-r--r--src/src.mk250
-rw-r--r--src/version.mk1
-rw-r--r--src/xpm_data/src.mk24
-rw-r--r--utils.mk30
-rw-r--r--version.mk2
126 files changed, 5130 insertions, 14007 deletions
diff --git a/Makefile b/Makefile
index a1f5235..826fba9 100644
--- a/Makefile
+++ b/Makefile
@@ -4,3 +4,3 @@
#
-# Copyright (C) 2008 NVIDIA Corporation.
+# Copyright (C) 2008-2012 NVIDIA Corporation.
#
@@ -19,199 +19,8 @@
+.PHONY: all clean clobber install
-##############################################################################
-# include common variables and functions
-##############################################################################
+all clean clobber install:
+ @$(MAKE) -C src $@
+ @$(MAKE) -C samples $@
+ @$(MAKE) -C doc $@
-include utils.mk
-
-
-##############################################################################
-# The calling Makefile may export any of the following variables; we
-# assign default values if they are not exported by the caller
-##############################################################################
-
-ifndef X_LDFLAGS
- ifeq ($(TARGET_OS)-$(TARGET_ARCH),Linux-x86_64)
- X_LDFLAGS = -L/usr/X11R6/lib64
- else
- X_LDFLAGS = -L/usr/X11R6/lib
- endif
-endif
-
-X_CFLAGS ?=
-
-GL_INCLUDE_PATH ?= /usr/include
-
-PKG_CONFIG ?= pkg-config
-
-ifndef GTK_CFLAGS
- GTK_CFLAGS := $(shell $(PKG_CONFIG) --cflags gtk+-2.0)
-endif
-
-ifndef GTK_LDFLAGS
- GTK_LDFLAGS := $(shell $(PKG_CONFIG) --libs gtk+-2.0)
-endif
-
-
-##############################################################################
-# The XF86Config-parser, libXNVCtrl, and common-utils directories may
-# be in one of two places: either elsewhere in the driver source tree
-# when building nvidia-settings as part of the NVIDIA driver build (in
-# which case, XNVCTRL_DIR, XNVCTRL_ARCHIVE, XCONFIG_PARSER_DIR and
-# COMMON_UTILS_DIR should be defined by the calling makefile), or
-# directly in the source directory when building from the
-# nvidia-settings source tarball (in which case, the below conditional
-# assignments should be used)
-##############################################################################
-
-XNVCTRL_DIR ?= src/libXNVCtrl
-XNVCTRL_ARCHIVE ?= $(XNVCTRL_DIR)/libXNVCtrl.a
-XCONFIG_PARSER_DIR ?= src/XF86Config-parser
-COMMON_UTILS_DIR ?= src/common-utils
-
-##############################################################################
-# assign variables
-##############################################################################
-
-NVIDIA_SETTINGS = $(OUTPUTDIR)/nvidia-settings
-
-NVIDIA_SETTINGS_PROGRAM_NAME = "nvidia-settings"
-
-NVIDIA_SETTINGS_VERSION := $(NVIDIA_VERSION)
-
-CFLAGS += $(X_CFLAGS)
-
-ifeq ($(TARGET_OS),SunOS)
- LDFLAGS += -Wl,-rpath=/usr/X11R6/lib
-endif
-
-LDFLAGS += $(X_LDFLAGS)
-
-# Some older Linux distributions do not have the dynamic library
-# libXxf86vm.so, though some newer Linux distributions do not have the
-# static library libXxf86vm.a. Statically link against libXxf86vm
-# when building nvidia-settings within the NVIDIA driver build, but
-# dynamically link against libXxf86vm in the public builds.
-ifdef NV_LINK_LIBXXF86VM_STATICALLY
- LDFLAGS += -Wl,-Bstatic -lXxf86vm -Wl,-Bdynamic
-else
- LDFLAGS += -lXxf86vm
-endif
-
-LDFLAGS += -lX11 -lXext -lm
-LDFLAGS += $(GTK_LDFLAGS)
-LDFLAGS += $(LIBDL_LDFLAGS)
-
-MANPAGE_GZIP ?= 1
-
-MANPAGE_gzipped = $(OUTPUTDIR)/nvidia-settings.1.gz
-MANPAGE_not_gzipped = $(OUTPUTDIR)/nvidia-settings.1
-ifeq ($(MANPAGE_GZIP),1)
- MANPAGE = $(MANPAGE_gzipped)
-else
- MANPAGE = $(MANPAGE_not_gzipped)
-endif
-GEN_MANPAGE_OPTS = $(OUTPUTDIR)/gen-manpage-opts
-OPTIONS_1_INC = $(OUTPUTDIR)/options.1.inc
-
-# Include all the source lists; dist-files.mk will define SRC
-include dist-files.mk
-
-include $(XCONFIG_PARSER_DIR)/src.mk
-SRC += $(addprefix $(XCONFIG_PARSER_DIR)/,$(XCONFIG_PARSER_SRC))
-
-include $(COMMON_UTILS_DIR)/src.mk
-SRC += $(addprefix $(COMMON_UTILS_DIR)/,$(COMMON_UTILS_SRC))
-
-SRC += $(STAMP_C)
-
-OBJS = $(call BUILD_OBJECT_LIST,$(SRC))
-
-CFLAGS += -I src
-CFLAGS += -I src/image_data
-CFLAGS += -I $(XNVCTRL_DIR)
-CFLAGS += -I $(XCONFIG_PARSER_DIR)/..
-CFLAGS += -I src/libXNVCtrlAttributes
-CFLAGS += -I src/xpm_data
-CFLAGS += -I src/gtk+-2.x
-CFLAGS += -I $(COMMON_UTILS_DIR)
-CFLAGS += -I $(OUTPUTDIR)
-CFLAGS += -DPROGRAM_NAME=\"nvidia-setttings\"
-
-$(call BUILD_OBJECT_LIST,$(GTK_SRC)): CFLAGS += $(GTK_CFLAGS)
-
-
-##############################################################################
-# build rules
-##############################################################################
-
-.PNONY: all install NVIDIA_SETTINGS_install MANPAGE_install clean clobber
-
-all: $(NVIDIA_SETTINGS) $(MANPAGE)
-
-install: NVIDIA_SETTINGS_install MANPAGE_install
-
-NVIDIA_SETTINGS_install: $(NVIDIA_SETTINGS)
- $(MKDIR) $(bindir)
- $(INSTALL) $(INSTALL_BIN_ARGS) $< $(bindir)/$(notdir $<)
-
-MANPAGE_install: $(MANPAGE)
- $(MKDIR) $(mandir)
- $(INSTALL) $(INSTALL_BIN_ARGS) $< $(mandir)/$(notdir $<)
-
-$(NVIDIA_SETTINGS): $(OBJS) $(XNVCTRL_ARCHIVE)
- $(call quiet_cmd,LINK) -o $@ $(OBJS) $(XNVCTRL_ARCHIVE) \
- $(CFLAGS) $(LDFLAGS) $(BIN_LDFLAGS)
- $(call quiet_cmd,STRIP_CMD) $@
-
-# define the rule to build each object file
-$(foreach src,$(SRC),$(eval $(call DEFINE_OBJECT_RULE,CC,$(src))))
-
-# define the rule to generate $(STAMP_C)
-$(eval $(call DEFINE_STAMP_C_RULE, $(OBJS),$(NVIDIA_SETTINGS_PROGRAM_NAME)))
-
-clean clobber:
- rm -rf $(NVIDIA_SETTINGS) $(MANPAGE) *~ $(STAMP_C) \
- $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d \
- $(GEN_MANPAGE_OPTS) $(OPTIONS_1_INC)
-
-
-##############################################################################
-# Documentation
-##############################################################################
-
-AUTO_TEXT = ".\\\" WARNING: THIS FILE IS AUTO-GENERATED! Edit $< instead."
-
-doc: $(MANPAGE)
-
-GEN_MANPAGE_OPTS_SRC = src/gen-manpage-opts.c
-
-BUILD_MANPAGE_OBJECT_LIST = \
- $(patsubst %.o,%.manpage.o,$(call BUILD_OBJECT_LIST,$(1)))
-
-GEN_MANPAGE_OPTS_OBJS = \
- $(call BUILD_MANPAGE_OBJECT_LIST,$(GEN_MANPAGE_OPTS_SRC))
-
-$(GEN_MANPAGE_OPTS): $(GEN_MANPAGE_OPTS_OBJS)
- $(call quiet_cmd,HOST_LINK) $(GEN_MANPAGE_OPTS_OBJS) -o $@ \
- $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_BIN_LDFLAGS)
-
-# define a rule to build each GEN_MANPAGE_OPTS object file
-$(foreach src,$(GEN_MANPAGE_OPTS_SRC),\
- $(eval $(call DEFINE_OBJECT_RULE_WITH_OBJECT_NAME,HOST_CC,$(src),\
- $(call BUILD_MANPAGE_OBJECT_LIST,$(src)))))
-
-$(OPTIONS_1_INC): $(GEN_MANPAGE_OPTS)
- @./$< > $@
-
-$(MANPAGE_not_gzipped): doc/nvidia-settings.1.m4 $(OPTIONS_1_INC)
- $(call quiet_cmd,M4) \
- -D__HEADER__=$(AUTO_TEXT) \
- -D__BUILD_OS__=$(TARGET_OS) \
- -D__VERSION__=$(NVIDIA_VERSION) \
- -D__DATE__="`$(DATE) +%F`" \
- -I $(OUTPUTDIR) \
- $< > $@
-
-$(MANPAGE_gzipped): $(MANPAGE_not_gzipped)
- $(GZIP_CMD) -9f < $< > $@
diff --git a/dist-files.mk b/dist-files.mk
deleted file mode 100644
index 80dcdb0..0000000
--- a/dist-files.mk
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-# nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
-# and Linux systems.
-#
-# Copyright (C) 2008 NVIDIA Corporation.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms and conditions of the GNU General Public License,
-# version 2, as published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses>.
-#
-
-##############################################################################
-# define the list of files that should be distributed in the
-# nvidia-settings tarball; this is used by the NVIDIA driver build
-# when packaging the tarball, and by the nvidia-settings makefile when
-# building nvidia-settings.
-#
-# Defines SRC, EXTRA_DIST, and DIST_FILES
-##############################################################################
-
-SRC :=
-EXTRA_DIST := COPYING dist-files.mk
-
-include src/src.mk
-SRC += $(addprefix src/,$(SRC_SRC))
-EXTRA_DIST += $(addprefix src/,$(SRC_EXTRA_DIST))
-
-include src/image_data/src.mk
-SRC += $(addprefix src/image_data/,$(IMAGE_DATA_SRC))
-EXTRA_DIST += $(addprefix src/image_data/,$(IMAGE_DATA_EXTRA_DIST))
-
-include src/libXNVCtrlAttributes/src.mk
-SRC += $(addprefix src/libXNVCtrlAttributes/,$(LIB_XNVCTRL_ATTRIBUTES_SRC))
-EXTRA_DIST += $(addprefix src/libXNVCtrlAttributes/,$(LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST))
-
-include src/xpm_data/src.mk
-SRC += $(addprefix src/xpm_data/,$(LIB_XPM_DATA_SRC))
-EXTRA_DIST += $(addprefix src/xpm_data/,$(LIB_XPM_DATA_EXTRA_DIST))
-
-include src/gtk+-2.x/src.mk
-SRC += $(addprefix src/gtk+-2.x/,$(GTK_SRC))
-EXTRA_DIST += $(addprefix src/gtk+-2.x/,$(GTK_EXTRA_DIST))
-
-include doc/src.mk
-SRC += $(addprefix doc/,$(DOC_SRC))
-EXTRA_DIST += $(addprefix doc/,$(DOC_EXTRA_DIST))
-
-include samples/src.mk
-SRC += $(addprefix samples/,$(SAMPLES_SRC))
-EXTRA_DIST += $(addprefix samples/,$(SAMPLES_EXTRA_DIST))
-
-DIST_FILES := $(SRC) $(EXTRA_DIST)
diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 0000000..40f1472
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,115 @@
+#
+# nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
+# and Linux systems.
+#
+# Copyright (C) 2008-2012 NVIDIA Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses>.
+#
+
+
+##############################################################################
+# include common variables and functions
+##############################################################################
+
+UTILS_MK_DIR ?= ..
+
+include $(UTILS_MK_DIR)/utils.mk
+
+
+##############################################################################
+# The common-utils directory may be in one of two places: either
+# elsewhere in the driver source tree when building nvidia-settings as
+# part of the NVIDIA driver build (in which case, COMMON_UTILS_DIR
+# should be defined by the calling makefile), or directly in the
+# source directory when building from the nvidia-settings source
+# tarball (in which case, the below conditional assignments should be
+# used)
+##############################################################################
+
+COMMON_UTILS_DIR ?= ../src/common-utils
+
+
+##############################################################################
+# assign variables
+##############################################################################
+
+MANPAGE_GZIP ?= 1
+
+MANPAGE_gzipped = $(OUTPUTDIR)/nvidia-settings.1.gz
+MANPAGE_not_gzipped = $(OUTPUTDIR)/nvidia-settings.1
+ifeq ($(MANPAGE_GZIP),1)
+ MANPAGE = $(MANPAGE_gzipped)
+else
+ MANPAGE = $(MANPAGE_not_gzipped)
+endif
+GEN_MANPAGE_OPTS = $(OUTPUTDIR)/gen-manpage-opts
+OPTIONS_1_INC = $(OUTPUTDIR)/options.1.inc
+
+CFLAGS += -I $(COMMON_UTILS_DIR)
+CFLAGS += -I ../src/libXNVCtrlAttributes
+
+
+##############################################################################
+# build rules
+##############################################################################
+
+.PNONY: all install MANPAGE_install clean clobber
+
+all: $(MANPAGE)
+
+install: MANPAGE_install
+
+MANPAGE_install: $(MANPAGE)
+ $(MKDIR) $(MANDIR)
+ $(INSTALL) $(INSTALL_BIN_ARGS) $< $(MANDIR)/$(notdir $<)
+
+clean clobber:
+ rm -rf $(MANPAGE) *~ $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d \
+ $(GEN_MANPAGE_OPTS) $(OPTIONS_1_INC)
+
+
+##############################################################################
+# Documentation
+##############################################################################
+
+AUTO_TEXT = ".\\\" WARNING: THIS FILE IS AUTO-GENERATED! Edit $< instead."
+
+doc: $(MANPAGE)
+
+GEN_MANPAGE_OPTS_SRC = ../src/gen-manpage-opts.c
+GEN_MANPAGE_OPTS_SRC += $(COMMON_UTILS_DIR)/gen-manpage-opts-helper.c
+
+GEN_MANPAGE_OPTS_OBJS = $(call BUILD_OBJECT_LIST,$(GEN_MANPAGE_OPTS_SRC))
+
+$(foreach src, $(GEN_MANPAGE_OPTS_SRC), \
+ $(eval $(call DEFINE_OBJECT_RULE,HOST_CC,$(src))))
+
+$(GEN_MANPAGE_OPTS): $(GEN_MANPAGE_OPTS_OBJS)
+ $(call quiet_cmd,HOST_LINK) \
+ $(HOST_CFLAGS) $(HOST_LDFLAGS) $(HOST_BIN_LDFLAGS) $^ -o $@
+
+$(OPTIONS_1_INC): $(GEN_MANPAGE_OPTS)
+ @./$< > $@
+
+$(MANPAGE_not_gzipped): nvidia-settings.1.m4 $(OPTIONS_1_INC) $(VERSION_MK)
+ $(call quiet_cmd,M4) \
+ -D__HEADER__=$(AUTO_TEXT) \
+ -D__BUILD_OS__=$(TARGET_OS) \
+ -D__VERSION__=$(NVIDIA_VERSION) \
+ -D__DATE__="`$(DATE) +%F`" \
+ -I $(OUTPUTDIR) \
+ $< > $@
+
+$(MANPAGE_gzipped): $(MANPAGE_not_gzipped)
+ $(GZIP_CMD) -9f < $< > $@
diff --git a/doc/nvidia-settings.png b/doc/nvidia-settings.png
index b506d99..82acce4 100644
--- a/doc/nvidia-settings.png
+++ b/doc/nvidia-settings.png
Binary files differ
diff --git a/doc/src.mk b/doc/src.mk
index 84db2ee..e1bf12b 100644
--- a/doc/src.mk
+++ b/doc/src.mk
@@ -12 +12,3 @@ DOC_EXTRA_DIST += nvidia-settings.png
DOC_EXTRA_DIST += src.mk
+
+DOC_DIST_FILES := $(DOC_SRC) $(DOC_EXTRA_DIST) \ No newline at end of file
diff --git a/doc/version.mk b/doc/version.mk
new file mode 100644
index 0000000..c29a7ba
--- /dev/null
+++ b/doc/version.mk
@@ -0,0 +1 @@
+NVIDIA_VERSION = 302.07
diff --git a/samples/Makefile b/samples/Makefile
index 35be348..8fc8e4b 100644
--- a/samples/Makefile
+++ b/samples/Makefile
@@ -57,3 +57,3 @@ LDFLAGS += $(X_LDFLAGS)
LDFLAGS += -L $(LIBXNVCTRL_DIR)
-LDFLAGS += -lXNVCtrl -lXext -lX11
+LIBS += -lXNVCtrl -lXext -lX11
@@ -78,3 +78,3 @@ SAMPLE_SOURCES += nv-control-3dvisionpro.c
-.PHONY: all clean clobber
+.PHONY: all clean clobber install
@@ -86,3 +86,3 @@ define link_sample_from_object
$$(OUTPUTDIR)/$(1:.c=): $$(call BUILD_OBJECT_LIST,$(1))
- $$(call quiet_cmd,LINK) $$(CFLAGS) -o $$@ $$< $$(LDFLAGS) $$(BIN_LDFLAGS)
+ $$(call quiet_cmd,LINK) $$(CFLAGS) $$(LDFLAGS) $$(BIN_LDFLAGS) -o $$@ $$< $$(LIBS)
all:: $$(OUTPUTDIR)/$(1:.c=)
@@ -95 +95,5 @@ clean clobber:
rm -rf *~ $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d $(SAMPLES)
+
+install:
+ @# don't install samples, this is just to satisfy the top-level
+ @# recursion rule
diff --git a/samples/nv-control-dpy.c b/samples/nv-control-dpy.c
index 28fc7e3..b15c0ed 100644
--- a/samples/nv-control-dpy.c
+++ b/samples/nv-control-dpy.c
@@ -55,2 +55,24 @@ static char *find_modeline(char *modeString, char *pModeLines,
+static void print_display_name(Display *dpy, int target_id, int attr,
+ char *name)
+{
+ Bool ret;
+ char *str;
+
+ ret = XNVCTRLQueryTargetStringAttribute(dpy,
+ NV_CTRL_TARGET_TYPE_DISPLAY,
+ target_id, 0,
+ attr,
+ &str);
+ if (!ret) {
+ printf(" %18s : N/A\n", name);
+ return;
+ }
+
+ printf(" %18s : %s\n", name, str);
+ XFree(str);
+}
+
+
+
@@ -365,4 +387,44 @@ int main(int argc, char *argv[])
}
-
-
+
+
+ /*
+ * query the MetaModes for the X screen, using
+ * NV_CTRL_BINARY_DATA_METAMODES_VERSION_2.
+ */
+
+ else if (strcmp(argv[1], "--print-metamodes-version2") == 0) {
+
+ /* get list of metamodes */
+
+ ret = XNVCTRLQueryBinaryData(dpy, screen, 0, // n/a
+ NV_CTRL_BINARY_DATA_METAMODES_VERSION_2,
+ (void *) &str, &len);
+
+ if (!ret) {
+ fprintf(stderr, "Failed to query MetaModes.\n\n");
+ return 1;
+ }
+
+ /*
+ * the returned data is in the form:
+ *
+ * "MetaMode 1\0MetaMode 2\0MetaMode 3\0Last MetaMode\0\0"
+ *
+ * so walk from one "\0" to the next to print each MetaMode.
+ */
+
+ printf("MetaModes:\n");
+
+ start = str;
+ for (j = 0; j < len; j++) {
+ if (str[j] == '\0') {
+ printf(" %s\n", start);
+ start = &str[j+1];
+ }
+ }
+
+ XFree(str);
+ }
+
+
/*
@@ -389,4 +451,28 @@ int main(int argc, char *argv[])
}
-
-
+
+
+ /*
+ * query the currently in use MetaMode. Note that an alternative
+ * way to accomplish this is to use XRandR to query the current
+ * mode's refresh rate, and then match the refresh rate to the id
+ * reported in the returned NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 data.
+ */
+
+ else if (strcmp(argv[1], "--print-current-metamode-version2") == 0) {
+
+ ret = XNVCTRLQueryStringAttribute(dpy, screen, mask,
+ NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2,
+ &str);
+
+ if (!ret) {
+ fprintf(stderr, "Failed to query the current MetaMode.\n\n");
+ return 1;
+ }
+
+ printf("current metamode: \"%s\"\n\n", str);
+
+ XFree(str);
+ }
+
+
/*
@@ -1165,3 +1251,50 @@ int main(int argc, char *argv[])
}
-
+
+
+ /* Display all names each display device goes by
+ */
+ else if (strcmp(argv[1], "--print-display-names") == 0) {
+ unsigned int *pData;
+ int len, i;
+
+ printf("Display Device Information:\n");
+
+ ret = XNVCTRLQueryTargetBinaryData(dpy,
+ NV_CTRL_TARGET_TYPE_GPU,
+ 0,
+ 0,
+ NV_CTRL_BINARY_DATA_DISPLAY_TARGETS,
+ (unsigned char **) &pData,
+ &len);
+ if (!ret) {
+ fprintf(stderr, "Failed to query number of display devices.\n\n");
+ return 1;
+ }
+
+ printf(" number of display devices: %d\n", pData[0]);
+
+ for (i = 1; i <= pData[0]; i++) {
+
+ printf("\n Display Device: %d\n", pData[i]);
+
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME,
+ "Type Basename");
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID,
+ "Type ID");
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_DP_GUID,
+ "DP GUID");
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH,
+ "EDID HASH");
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX,
+ "Target Index");
+ print_display_name(dpy, pData[i],
+ NV_CTRL_STRING_DISPLAY_NAME_RANDR,
+ "RANDR");
+ }
+ }
@@ -1206,2 +1339,5 @@ int main(int argc, char *argv[])
+ printf(" --print-metamodes-version2: print the current MetaModes for "
+ "the X screen with extended information\n\n");
+
printf(" --add-metamode [metamode]: add the specified "
@@ -1214,3 +1350,6 @@ int main(int argc, char *argv[])
-
+ printf(" --print-current-metamode-version2: print the current "
+ "MetaMode with extended information.\n\n");
+
+
printf(" Misc options:\n\n");
@@ -1248,2 +1387,5 @@ int main(int argc, char *argv[])
"dynamically transitioning into TwinView.\n\n");
+
+ printf(" --print-display-names: print all the names associated with "
+ "each display device on the server\n\n");
}
diff --git a/samples/nv-control-dvc.c b/samples/nv-control-dvc.c
index dde9c0e..e8243bc 100644
--- a/samples/nv-control-dvc.c
+++ b/samples/nv-control-dvc.c
@@ -54,3 +54,3 @@
-char *display_device_name(int mask)
+static char *display_device_name(int mask)
{
diff --git a/samples/nv-control-events.c b/samples/nv-control-events.c
index 4b9e402..3364203 100644
--- a/samples/nv-control-events.c
+++ b/samples/nv-control-events.c
@@ -32,2 +32,3 @@
#include <ctype.h>
+#include <unistd.h>
@@ -39,6 +40,31 @@
+#define EVENT_TYPE_START TARGET_ATTRIBUTE_CHANGED_EVENT
+#define EVENT_TYPE_END TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT
+
+
static const char *attr2str(int n);
static const char *target2str(int n);
+static const char *targetTypeAndId2Str(int targetType, int targetId);
+
+struct target_info {
+ int type;
+ int count;
+};
+
+static void print_usage(char **argv)
+{
+ printf("Usage:\n");
+ printf("%s [-d <dpy>] [-a] [-c] [-b] [-s]\n", argv[0]);
+ printf("\n");
+ printf("-d <dpy>: X server display to connect to\n");
+ printf("-a: Listen for attribute availability events\n");
+ printf("-c: Listen for attribute changed events\n");
+ printf("-b: Listen for binary attribute changed events\n");
+ printf("-s: Listen for string attribute changed events\n");
+ printf("\n");
+ printf("By default (i.e., if none of -a, -c, -b, or -s are requested),\n"
+ "all event types are enabled.\n");
+}
-int main(void)
+int main(int argc, char **argv)
{
@@ -47,9 +73,71 @@ int main(void)
int event_base, error_base;
- int num_screens, num_gpus, num_framelocks, num_vcs, i;
- int num_gvis, num_coolers, num_thermal_sensors;
- int num_3d_vision_pro_transceivers;
- int sources;
- XEvent event;
- XNVCtrlAttributeChangedEvent *nvevent;
- XNVCtrlAttributeChangedEventTarget *nveventtarget;
+ int i, j, k;
+ int sources = 0;
+ struct target_info info[] = {
+ { .type = NV_CTRL_TARGET_TYPE_X_SCREEN },
+ { .type = NV_CTRL_TARGET_TYPE_GPU },
+ { .type = NV_CTRL_TARGET_TYPE_FRAMELOCK },
+ { .type = NV_CTRL_TARGET_TYPE_VCSC },
+ { .type = NV_CTRL_TARGET_TYPE_GVI },
+ { .type = NV_CTRL_TARGET_TYPE_COOLER },
+ { .type = NV_CTRL_TARGET_TYPE_THERMAL_SENSOR },
+ { .type = NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER },
+ };
+ static const int num_target_types = sizeof(info) / sizeof(*info);
+
+ int c;
+ char *dpy_name = NULL;
+ Bool anythingEnabled;
+
+#define EVENT_TYPE_ENTRY(_x) [_x] = { False, #_x }
+
+ struct {
+ Bool enabled;
+ char *description;
+ } eventTypes[] = {
+ EVENT_TYPE_ENTRY(TARGET_ATTRIBUTE_CHANGED_EVENT),
+ EVENT_TYPE_ENTRY(TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT),
+ EVENT_TYPE_ENTRY(TARGET_STRING_ATTRIBUTE_CHANGED_EVENT),
+ EVENT_TYPE_ENTRY(TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT),
+ };
+
+ while ((c = getopt(argc, argv, "d:acbsh")) >= 0) {
+ switch (c) {
+ case 'd':
+ dpy_name = optarg;
+ break;
+ case 'a':
+ eventTypes[TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT].enabled = True;
+ break;
+ case 'c':
+ eventTypes[TARGET_ATTRIBUTE_CHANGED_EVENT].enabled = True;
+ break;
+ case 'b':
+ eventTypes[TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT].enabled = True;
+ break;
+ case 's':
+ eventTypes[TARGET_STRING_ATTRIBUTE_CHANGED_EVENT].enabled = True;
+ break;
+ case '?':
+ fprintf(stderr, "%s: Unknown argument '%c'\n", argv[0], optopt);
+ /* fallthrough */
+ case 'h':
+ print_usage(argv);
+ return 1;
+ }
+ }
+
+ anythingEnabled = False;
+ for (i = EVENT_TYPE_START; i <= EVENT_TYPE_END; i++) {
+ if (eventTypes[i].enabled) {
+ anythingEnabled = True;
+ break;
+ }
+ }
+
+ if (!anythingEnabled) {
+ for (i = EVENT_TYPE_START; i <= EVENT_TYPE_END; i++) {
+ eventTypes[i].enabled = True;
+ }
+ }
@@ -59,6 +147,6 @@ int main(void)
*/
-
- dpy = XOpenDisplay(NULL);
+
+ dpy = XOpenDisplay(dpy_name);
if (!dpy) {
- fprintf(stderr, "Cannot open display '%s'.\n", XDisplayName(NULL));
+ fprintf(stderr, "Cannot open display '%s'.\n", XDisplayName(dpy_name));
return 1;
@@ -73,34 +161,3 @@ int main(void)
fprintf(stderr, "The NV-CONTROL X extension does not exist on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of X Screens */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_X_SCREEN,
- &num_screens);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of X Screens on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of GPUs */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_GPU,
- &num_gpus);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of GPUs on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of Frame Lock (G-Sync) devices */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_FRAMELOCK,
- &num_framelocks);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of G-Sync devices on "
- "'%s'.\n",
- XDisplayName(NULL));
+ XDisplayName(dpy_name));
return 1;
@@ -108,266 +165,89 @@ int main(void)
- /* Query number of VCS (Visual Computing System) devices */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_VCSC,
- &num_vcs);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of Visual Computing "
- "System devices on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
+ /* Query target counts */
+ for (i = 0; i < num_target_types; i++) {
- /* Query number of GVI (Graphics Video Input) devices */
+ struct target_info *tinfo = &info[i];
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_GVI,
- &num_gvis);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of Graphics Video "
- "Input devices on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of Cooler devices */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_COOLER,
- &num_coolers);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of Cooler devices "
- "on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of Thermal Sensor devices */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_THERMAL_SENSOR,
- &num_thermal_sensors);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of Thermal Sensor "
- "devices on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /* Query number of 3d Vision Pro Transceivers */
-
- ret = XNVCTRLQueryTargetCount(dpy, NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER,
- &num_3d_vision_pro_transceivers);
- if (ret != True) {
- fprintf(stderr, "Failed to query the number of 3D Vision Pro "
- "Transceiver devices on '%s'.\n",
- XDisplayName(NULL));
- return 1;
- }
-
- /*
- * register to receive NV-CONTROL events: whenever any NV-CONTROL
- * attribute is changed by an NV-CONTROL client, any other client
- * can receive notification of the change.
- */
-
- sources = 0;
-
- /*
- * - Register to receive ATTRIBUTE_CHANGE_EVENT events. These events
- * are specific to attributes set on X Screens.
- */
-
- printf("Registering to receive ATTRIBUTE_CHANGED_EVENT events...\n");
- fflush(stdout);
-
- for (i = 0; i < num_screens; i++ ) {
-
- /* Only register to receive events if this screen is controlled by
- * the NVIDIA driver.
- */
- if (!XNVCTRLIsNvScreen(dpy, i)) {
- printf("- The NV-CONTROL X not available on X screen "
- "%d of '%s'.\n", i, XDisplayName(NULL));
- continue;
- }
-
- ret = XNVCtrlSelectNotify(dpy, i, ATTRIBUTE_CHANGED_EVENT, True);
+ ret = XNVCTRLQueryTargetCount(dpy, tinfo->type, &tinfo->count);
if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL events on '%s'."
- "\n", XDisplayName(NULL));
- continue;
+ fprintf(stderr, "Failed to query %s target count on '%s'.\n",
+ target2str(tinfo->type), XDisplayName(dpy_name));
+ return 1;
}
-
- printf("+ Listening to ATTRIBUTE_CHANGE_EVENTs on X screen %d.\n", i);
- sources++;
}
- printf("\n");
- /*
- * - Register to receive TARGET_ATTRIBUTE_CHANGED_EVENT events. These
- * events are specific to attributes set on various devices and
- * structures controlled by the NVIDIA driver. Some possible targets
- * include X Screens, GPUs, and Frame Lock boards.
- */
-
- printf("Registering to receive TARGET_ATTRIBUTE_CHANGED_EVENT "
- "events...\n");
+ printf("Registering to receive events...\n");
fflush(stdout);
- /* Register to receive on all X Screen targets */
-
- for (i = 0; i < num_screens; i++ ) {
-
- /* Only register to receive events if this screen is controlled by
- * the NVIDIA driver.
- */
- if (!XNVCTRLIsNvScreen(dpy, i)) {
- printf("- The NV-CONTROL X not available on X screen "
- "%d of '%s'.\n", i, XDisplayName(NULL));
- continue;
- }
-
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_X_SCREEN,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for X screen %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on X screen "
- "%d.\n", i);
- sources++;
- }
+ /* Register to receive events on all targets */
- /* Register to receive on all GPU targets */
+ for (i = 0; i < num_target_types; i++) {
+ struct target_info *tinfo = &info[i];
- for (i = 0; i < num_gpus; i++ ) {
+ for (j = 0; j < tinfo->count; j++) {
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_GPU,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for GPU %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on GPU "
- "%d.\n", i);
- sources++;
- }
-
- /* Register to receive on all Frame Lock (G-Sync) targets */
-
- for (i = 0; i < num_framelocks; i++ ) {
-
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_FRAMELOCK,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for Frame Lock %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on Frame Lock "
- "%d.\n", i);
- sources++;
- }
-
- /* Register to receive on all VCS targets */
-
- for (i = 0; i < num_vcs; i++ ) {
-
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_VCSC,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for VCS %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on VCS "
- "%d.\n", i);
- sources++;
- }
-
- /* Register to receive on all GVI targets */
-
- for (i = 0; i < num_gvis; i++ ) {
-
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_GVI,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for GVI %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on GVI "
- "%d.\n", i);
- sources++;
- }
-
- /* Register to receive on all Cooler targets */
-
- for (i = 0; i < num_coolers; i++ ) {
-
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_COOLER,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for Cooler %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on Cooler "
- "%d.\n", i);
- sources++;
- }
-
- /* Register to receive on all Thermal Sensor targets */
-
- for (i = 0; i < num_thermal_sensors; i++ ) {
+ for (k = EVENT_TYPE_START; k <= EVENT_TYPE_END; k++) {
+ if (!eventTypes[k].enabled) {
+ continue;
+ }
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_THERMAL_SENSOR,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for Thermal Sensor %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
- }
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on Thermal "
- "Sensor %d.\n", i);
- sources++;
- }
+ if ((k == TARGET_ATTRIBUTE_CHANGED_EVENT) &&
+ (tinfo->type == NV_CTRL_TARGET_TYPE_X_SCREEN)) {
+
+ /*
+ * Only register to receive events if this screen is
+ * controlled by the NVIDIA driver.
+ */
+ if (!XNVCTRLIsNvScreen(dpy, j)) {
+ printf("- The NV-CONTROL X not available on X screen "
+ "%d of '%s'.\n", i, XDisplayName(dpy_name));
+ continue;
+ }
+
+ /*
+ * - Register to receive ATTRIBUTE_CHANGE_EVENT events.
+ * These events are specific to attributes set on X
+ * Screens.
+ */
+
+
+ ret = XNVCtrlSelectNotify(dpy, j, ATTRIBUTE_CHANGED_EVENT,
+ True);
+ if (ret != True) {
+ printf("- Unable to register to receive NV-CONTROL"
+ "events on '%s'.\n", XDisplayName(dpy_name));
+ continue;
+ }
+
+ printf("+ Listening on X screen %d for "
+ "ATTRIBUTE_CHANGED_EVENTs.\n", j);
+ sources++;
+ }
- /* Register to receive on all 3D Vision Pro Transceiver targets */
+ /*
+ * - Register to receive TARGET_ATTRIBUTE_CHANGED_EVENT events.
+ * These events are specific to attributes set on various
+ * devices and structures controlled by the NVIDIA driver.
+ * Some possible targets include X Screens, GPUs, and Frame
+ * Lock boards.
+ */
+
+ ret = XNVCtrlSelectTargetNotify(dpy,
+ tinfo->type, /* target type */
+ j, /* target ID */
+ k, /* eventType */
+ True);
+ if (ret != True) {
+ printf("- Unable to register on %s %d for %ss.\n",
+ target2str(tinfo->type), j,
+ eventTypes[k].description);
+ continue;
+ }
- for (i = 0; i < num_3d_vision_pro_transceivers; i++ ) {
+ printf("+ Listening on %s %d for %ss.\n",
+ target2str(tinfo->type), j, eventTypes[k].description);
- ret = XNVCtrlSelectTargetNotify(dpy, NV_CTRL_TARGET_TYPE_3D_VISION_PRO_TRANSCEIVER,
- i, TARGET_ATTRIBUTE_CHANGED_EVENT,
- True);
- if (ret != True) {
- printf("- Unable to register to receive NV-CONTROL "
- "target events for 3D Vision Pro Transceiver %d on '%s'.\n",
- i, XDisplayName(NULL));
- continue;
+ sources++;
+ }
}
-
- printf("+ Listening to TARGET_ATTRIBUTE_CHANGE_EVENTs on 3d Vision "
- "Pro Transceiver %d.\n", i);
- sources++;
}
@@ -388,3 +268,4 @@ int main(void)
while (True) {
- char target_str[256];
+ XEvent event;
+ const char *target_str;
@@ -394,8 +275,2 @@ int main(void)
- /* if this is not one of our events, then bail out of this iteration */
-
- if ((event.type != (event_base + ATTRIBUTE_CHANGED_EVENT)) &&
- (event.type != (event_base + TARGET_ATTRIBUTE_CHANGED_EVENT)))
- continue;
-
/* Handle ATTRIBUTE_CHANGED_EVENTS */
@@ -404,11 +279,10 @@ int main(void)
/* cast the X event as an XNVCtrlAttributeChangedEvent */
-
- nvevent = (XNVCtrlAttributeChangedEvent *) &event;
-
- /* print out the event information */
- snprintf(target_str, 256, "%s-%-3d",
- target2str(NV_CTRL_TARGET_TYPE_X_SCREEN),
- nvevent->screen);
+ XNVCtrlAttributeChangedEvent *nvevent =
+ (XNVCtrlAttributeChangedEvent *) &event;
+
+ target_str = targetTypeAndId2Str(NV_CTRL_TARGET_TYPE_X_SCREEN,
+ nvevent->screen);
- printf("ATTRIBUTE_CHANGED_EVENTS: Target: %15s "
+ /* print out the event information */
+ printf("ATTRIBUTE_CHANGED_EVENTS: Target: %15s "
"Display Mask: 0x%08x "
@@ -426,12 +300,12 @@ int main(void)
(event_base + TARGET_ATTRIBUTE_CHANGED_EVENT)) {
+
/* cast the X event as an XNVCtrlAttributeChangedEventTarget */
-
- nveventtarget = (XNVCtrlAttributeChangedEventTarget *) &event;
-
- /* print out the event information */
- snprintf(target_str, 256, "%s-%-3d",
- target2str(nveventtarget->target_type),
- nveventtarget->target_id);
+ XNVCtrlAttributeChangedEventTarget *nveventtarget =
+ (XNVCtrlAttributeChangedEventTarget *) &event;
- printf("TARGET_ATTRIBUTE_CHANGED_EVENTS: Target: %15s "
+ target_str = targetTypeAndId2Str(nveventtarget->target_type,
+ nveventtarget->target_id);
+
+ /* print out the event information */
+ printf("TARGET_ATTRIBUTE_CHANGED_EVENT: Target: %15s "
"Display Mask: 0x%08x "
@@ -445,2 +319,62 @@ int main(void)
);
+
+ /* Handle TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENTS */
+ } else if (event.type ==
+ (event_base + TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT)) {
+
+ /* cast the X event as an XNVCtrlAttributeChangedEventTargetAvailability */
+ XNVCtrlAttributeChangedEventTargetAvailability *nveventavail =
+ (XNVCtrlAttributeChangedEventTargetAvailability *) &event;
+
+ target_str = targetTypeAndId2Str(nveventavail->target_type,
+ nveventavail->target_id);
+
+ /* print out the event information */
+ printf("TARGET_ATTRIBUTE_AVAILABILITY_CHANGED_EVENT: Target: %15s "
+ "Display Mask: 0x%08x "
+ "Attribute: (%3d) %-32s Available: %s\n",
+ target_str,
+ nveventavail->display_mask,
+ nveventavail->attribute,
+ attr2str(nveventavail->attribute),
+ nveventavail->availability ? "Yes" : "No"
+ );
+ } else if (event.type ==
+ (event_base + TARGET_STRING_ATTRIBUTE_CHANGED_EVENT)) {
+
+ XNVCtrlStringAttributeChangedEventTarget *nveventstring =
+ (XNVCtrlStringAttributeChangedEventTarget*) &event;
+
+ target_str = targetTypeAndId2Str(nveventstring->target_type,
+ nveventstring->target_id);
+
+ /* print out the event information */
+ printf("TARGET_STRING_ATTRIBUTE_CHANGED_EVENT: Target: %15s "
+ "Display Mask: 0x%08x "
+ "Attribute: %3d\n",
+ target_str,
+ nveventstring->display_mask,
+ nveventstring->attribute
+ );
+
+ } else if (event.type ==
+ (event_base + TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT)) {
+
+ XNVCtrlBinaryAttributeChangedEventTarget *nveventbinary =
+ (XNVCtrlBinaryAttributeChangedEventTarget *) &event;
+
+ target_str = targetTypeAndId2Str(nveventbinary->target_type,
+ nveventbinary->target_id);
+
+ /* print out the event information */
+ printf("TARGET_BINARY_ATTRIBUTE_CHANGED_EVENT: Target: %15s "
+ "Display Mask: 0x%08x "
+ "Attribute: %3d\n",
+ target_str,
+ nveventbinary->display_mask,
+ nveventbinary->attribute
+ );
+
+ } else {
+ printf("ERROR: unrecognized event type %d\n", event.type);
}
@@ -483,2 +417,11 @@ static const char *target2str(int n)
+static const char *targetTypeAndId2Str(int targetType, int targetId)
+{
+ static char tmp[256];
+
+ snprintf(tmp, sizeof(tmp), "%s-%-3d", target2str(targetType), targetId);
+
+ return tmp;
+}
+
@@ -592,3 +535,2 @@ static AttrEntry attr_table[] = {
MAKE_ENTRY(NV_CTRL_GVO_DATA_FORMAT),
- MAKE_ENTRY(NV_CTRL_GVO_DISPLAY_X_SCREEN),
MAKE_ENTRY(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED),
@@ -605,4 +547,2 @@ static AttrEntry attr_table[] = {
MAKE_ENTRY(NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE),
- MAKE_ENTRY(NV_CTRL_GVO_X_SCREEN_PAN_X),
- MAKE_ENTRY(NV_CTRL_GVO_X_SCREEN_PAN_Y),
MAKE_ENTRY(NV_CTRL_GPU_OVERCLOCKING_STATE),
diff --git a/samples/nv-control-gvi.c b/samples/nv-control-gvi.c
index 6e0a4de..c5a0d91 100644
--- a/samples/nv-control-gvi.c
+++ b/samples/nv-control-gvi.c
@@ -48,16 +48,2 @@ case (FMT): \
/*
- * Decode SDI input value returned.
- */
-char *SyncTypeName(int value)
-{
- switch (value) {
- ADD_NVCTRL_CASE(NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_HD);
- ADD_NVCTRL_CASE(NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_SD);
- ADD_NVCTRL_CASE(NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED_NONE);
- default:
- return "Invalid Value";
- }
-}
-
-/*
* Decode provided signal format.
@@ -65,3 +51,3 @@ char *SyncTypeName(int value)
-char *VideoFormatName(int value)
+static char *VideoFormatName(int value)
{
@@ -138,3 +124,3 @@ char *VideoFormatName(int value)
-const char *SamplingName(int value)
+static const char *SamplingName(int value)
{
@@ -152,3 +138,3 @@ const char *SamplingName(int value)
-const char *BPCName(int value)
+static const char *BPCName(int value)
{
@@ -351,5 +337,6 @@ static void do_query(Display *dpy, int use_gvi)
for (channel = 0; channel < max_channels_per_jack; channel++) {
+ unsigned int link_definition = ((channel & 0xFFFF)<<16);
+
printf(" - Channel %d\n", channel);
- unsigned int link_definition = ((channel & 0xFFFF)<<16);
link_definition |= (jack & 0xFFFF);
@@ -573,3 +560,3 @@ static void do_query(Display *dpy, int use_gvi)
-unsigned int firstbit (unsigned int mask)
+static unsigned int firstbit (unsigned int mask)
{
@@ -579,3 +566,3 @@ unsigned int firstbit (unsigned int mask)
// List the configuration space of the GVI device.
-void do_listconfig(Display *dpy, int gvi)
+static void do_listconfig(Display *dpy, int gvi)
{
@@ -772,3 +759,3 @@ void do_listconfig(Display *dpy, int gvi)
-void do_configure(Display *dpy, int use_gvi, char *pIn)
+static void do_configure(Display *dpy, int use_gvi, char *pIn)
{
diff --git a/samples/nv-control-info.c b/samples/nv-control-info.c
index c86e736..777a3a7 100644
--- a/samples/nv-control-info.c
+++ b/samples/nv-control-info.c
@@ -144,3 +144,2 @@ static AttrEntry attr_int_table[] = {
MAKE_ENTRY(NV_CTRL_GVO_DATA_FORMAT),
- MAKE_ENTRY(NV_CTRL_GVO_DISPLAY_X_SCREEN),
MAKE_ENTRY(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED),
@@ -157,4 +156,2 @@ static AttrEntry attr_int_table[] = {
MAKE_ENTRY(NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE),
- MAKE_ENTRY(NV_CTRL_GVO_X_SCREEN_PAN_X),
- MAKE_ENTRY(NV_CTRL_GVO_X_SCREEN_PAN_Y),
MAKE_ENTRY(NV_CTRL_GPU_OVERCLOCKING_STATE),
@@ -374,2 +371,9 @@ static AttrEntry attr_str_table[] = {
MAKE_ENTRY(NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME),
+ MAKE_ENTRY(NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_DP_GUID),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX),
+ MAKE_ENTRY(NV_CTRL_STRING_DISPLAY_NAME_RANDR),
{ -1, NULL, NULL }
@@ -380,3 +384,3 @@ static AttrEntry attr_bin_table[] = {
MAKE_ENTRY(NV_CTRL_BINARY_DATA_MODELINES),
- MAKE_ENTRY(NV_CTRL_BINARY_DATA_METAMODES),
+ MAKE_ENTRY(NV_CTRL_BINARY_DATA_METAMODES_VERSION_1),
MAKE_ENTRY(NV_CTRL_BINARY_DATA_XSCREENS_USING_GPU),
@@ -392,2 +396,5 @@ static AttrEntry attr_bin_table[] = {
MAKE_ENTRY(NV_CTRL_BINARY_DATA_GLASSES_PAIRED_TO_3D_VISION_PRO_TRANSCEIVER),
+ MAKE_ENTRY(NV_CTRL_BINARY_DATA_DISPLAY_TARGETS),
+ MAKE_ENTRY(NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU),
+ MAKE_ENTRY(NV_CTRL_BINARY_DATA_METAMODES_VERSION_2),
{ -1, NULL, NULL }
@@ -406,3 +413,3 @@ static AttrEntry attr_strop_table[] = {
-void print_perms(NVCTRLAttributePermissionsRec *perms)
+static void print_perms(NVCTRLAttributePermissionsRec *perms)
{
@@ -428,3 +435,3 @@ case (FMT): \
-const char *GetAttrTypeName(value)
+static const char *GetAttrTypeName(int value)
{
diff --git a/samples/nv-control-targets.c b/samples/nv-control-targets.c
index 0f402db..f9236cc 100644
--- a/samples/nv-control-targets.c
+++ b/samples/nv-control-targets.c
@@ -48,3 +48,3 @@
-char *display_device_name(int mask)
+static char *display_device_name(int mask)
{
diff --git a/samples/src.mk b/samples/src.mk
index 8ae3d84..8bc8558 100644
--- a/samples/src.mk
+++ b/samples/src.mk
@@ -17 +17,3 @@ SAMPLES_EXTRA_DIST += nv-control-screen.h
SAMPLES_EXTRA_DIST += src.mk
+
+SAMPLES_DIST_FILES := $(SAMPLES_SRC) $(SAMPLES_EXTRA_DIST) \ No newline at end of file
diff --git a/samples/version.mk b/samples/version.mk
new file mode 100644
index 0000000..c29a7ba
--- /dev/null
+++ b/samples/version.mk
@@ -0,0 +1 @@
+NVIDIA_VERSION = 302.07
diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 0000000..c7e79b3
--- /dev/null
+++ b/src/Makefile
@@ -0,0 +1,174 @@
+#
+# nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
+# and Linux systems.
+#
+# Copyright (C) 2008-2012 NVIDIA Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses>.
+#
+
+
+##############################################################################
+# include common variables and functions
+##############################################################################
+
+UTILS_MK_DIR ?= ..
+
+include $(UTILS_MK_DIR)/utils.mk
+
+
+##############################################################################
+# The calling Makefile may export any of the following variables; we
+# assign default values if they are not exported by the caller
+##############################################################################
+
+ifndef X_LDFLAGS
+ ifeq ($(TARGET_OS)-$(TARGET_ARCH),Linux-x86_64)
+ X_LDFLAGS = -L/usr/X11R6/lib64
+ else
+ X_LDFLAGS = -L/usr/X11R6/lib
+ endif
+endif
+
+X_CFLAGS ?=
+
+GL_INCLUDE_PATH ?= /usr/include
+
+PKG_CONFIG ?= pkg-config
+
+ifndef GTK_CFLAGS
+ GTK_CFLAGS := $(shell $(PKG_CONFIG) --cflags gtk+-2.0)
+endif
+
+ifndef GTK_LDFLAGS
+ GTK_LDFLAGS := $(shell $(PKG_CONFIG) --libs gtk+-2.0)
+endif
+
+
+##############################################################################
+# The XF86Config-parser, libXNVCtrl, and common-utils directories may
+# be in one of two places: either elsewhere in the driver source tree
+# when building nvidia-settings as part of the NVIDIA driver build (in
+# which case, XNVCTRL_DIR, XNVCTRL_ARCHIVE, XCONFIG_PARSER_DIR and
+# COMMON_UTILS_DIR should be defined by the calling makefile), or
+# directly in the source directory when building from the
+# nvidia-settings source tarball (in which case, the below conditional
+# assignments should be used)
+##############################################################################
+
+XNVCTRL_DIR ?= libXNVCtrl
+XNVCTRL_ARCHIVE ?= $(XNVCTRL_DIR)/libXNVCtrl.a
+XCONFIG_PARSER_DIR ?= XF86Config-parser
+COMMON_UTILS_DIR ?= common-utils
+
+##############################################################################
+# assign variables
+##############################################################################
+
+NVIDIA_SETTINGS = $(OUTPUTDIR)/nvidia-settings
+
+NVIDIA_SETTINGS_PROGRAM_NAME = "nvidia-settings"
+
+NVIDIA_SETTINGS_VERSION := $(NVIDIA_VERSION)
+
+CFLAGS += $(X_CFLAGS)
+
+ifeq ($(TARGET_OS),SunOS)
+ LDFLAGS += -Wl,-rpath=/usr/X11R6/lib
+endif
+
+LDFLAGS += $(X_LDFLAGS)
+
+# Some older Linux distributions do not have the dynamic library
+# libXxf86vm.so, though some newer Linux distributions do not have the
+# static library libXxf86vm.a. Statically link against libXxf86vm
+# when building nvidia-settings within the NVIDIA driver build, but
+# dynamically link against libXxf86vm in the public builds.
+ifdef NV_LINK_LIBXXF86VM_STATICALLY
+ LIBS += -Wl,-Bstatic -lXxf86vm -Wl,-Bdynamic
+else
+ LIBS += -lXxf86vm
+endif
+
+# Preferably, we would use pkg-config's "--libs-only-l" and
+# "--libs-only-L" options to get separate GTK_LDFLAGS and GTK_LIBS,
+# appending them to LDFLAGS and LIBS, respectively. However, the
+# pkg-config(1) man page cautions:
+#
+# [...] Note that the union of "--libs-only-l" and
+# "--libs-only-L" may be smaller than "--libs", due to flags such
+# as -rdynamic.
+#
+# So append all of GTK_LDFLAGS to LIBS, so that LIBS can go after
+# $(OBJECTS) on the link commandline, causing libraries for linking to
+# be named after the objects that depend on those libraries (needed
+# for "--as-needed" linker behavior).
+LIBS += -lX11 -lXext -lm $(LIBDL_LIBS) $(GTK_LDFLAGS)
+
+# Include all the source lists; dist-files.mk will define NVIDIA_SETTINGS_SRC
+include src.mk
+SRC += $(NVIDIA_SETTINGS_SRC)
+
+include $(XCONFIG_PARSER_DIR)/src.mk
+SRC += $(addprefix $(XCONFIG_PARSER_DIR)/,$(XCONFIG_PARSER_SRC))
+
+include $(COMMON_UTILS_DIR)/src.mk
+SRC += $(addprefix $(COMMON_UTILS_DIR)/,$(COMMON_UTILS_SRC))
+
+SRC += $(STAMP_C)
+
+OBJS = $(call BUILD_OBJECT_LIST,$(SRC))
+
+CFLAGS += -I .
+CFLAGS += -I image_data
+CFLAGS += -I $(XNVCTRL_DIR)
+CFLAGS += -I $(XCONFIG_PARSER_DIR)/..
+CFLAGS += -I libXNVCtrlAttributes
+CFLAGS += -I xpm_data
+CFLAGS += -I gtk+-2.x
+CFLAGS += -I $(COMMON_UTILS_DIR)
+CFLAGS += -I $(OUTPUTDIR)
+CFLAGS += -DPROGRAM_NAME=\"nvidia-setttings\"
+
+$(call BUILD_OBJECT_LIST,$(GTK_SRC)): CFLAGS += $(GTK_CFLAGS)
+
+
+##############################################################################
+# build rules
+##############################################################################
+
+.PNONY: all install NVIDIA_SETTINGS_install clean clobber
+
+all: $(NVIDIA_SETTINGS)
+
+install: NVIDIA_SETTINGS_install
+
+NVIDIA_SETTINGS_install: $(NVIDIA_SETTINGS)
+ $(MKDIR) $(BINDIR)
+ $(INSTALL) $(INSTALL_BIN_ARGS) $< $(BINDIR)/$(notdir $<)
+
+$(NVIDIA_SETTINGS): $(OBJS) $(XNVCTRL_ARCHIVE)
+ $(call quiet_cmd,LINK) $(CFLAGS) $(LDFLAGS) $(BIN_LDFLAGS) -o $@ $(OBJS) \
+ $(XNVCTRL_ARCHIVE) $(LIBS)
+ $(call quiet_cmd,STRIP_CMD) $@
+
+# define the rule to build each object file
+$(foreach src,$(SRC),$(eval $(call DEFINE_OBJECT_RULE,CC,$(src))))
+
+# define the rule to generate $(STAMP_C)
+$(eval $(call DEFINE_STAMP_C_RULE, $(OBJS),$(NVIDIA_SETTINGS_PROGRAM_NAME)))
+
+clean clobber:
+ rm -rf $(NVIDIA_SETTINGS) *~ $(STAMP_C) \
+ $(OUTPUTDIR)/*.o $(OUTPUTDIR)/*.d
+
diff --git a/src/command-line.c b/src/command-line.c
index f728157..605b57b 100644
--- a/src/command-line.c
+++ b/src/command-line.c
@@ -148,2 +148,8 @@ static void print_attribute_help(char *attr)
+static void print_help_helper(const char *name, const char *description)
+{
+ nv_msg(TAB, name);
+ nv_msg_preserve_whitespace(BIGTAB, description);
+ nv_msg(NULL, "");
+}
@@ -156,6 +162,2 @@ void print_help(void)
{
- int i, j, len;
- char *msg, *tmp, scratch[64];
- const NVGetoptOption *o;
-
print_version();
@@ -165,53 +167,5 @@ void print_help(void)
nv_msg(NULL, "");
-
- for (i = 0; __options[i].name; i++) {
- o = &__options[i];
- if (isalpha(o->val)) {
- sprintf(scratch, "%c", o->val);
- msg = nvstrcat("-", scratch, ", --", o->name, NULL);
- } else {
- msg = nvstrcat("--", o->name, NULL);
- }
- if (o->flags & NVGETOPT_HAS_ARGUMENT) {
- len = strlen(o->name);
- for (j = 0; j < len; j++) scratch[j] = toupper(o->name[j]);
- scratch[len] = '\0';
- tmp = nvstrcat(msg, "=[", scratch, "]", NULL);
- free(msg);
- msg = tmp;
- }
- nv_msg(TAB, msg);
- free(msg);
- if (o->description) {
- char *buf = NULL, *pbuf = NULL, *s = NULL;
-
- buf = calloc(1, 1 + strlen(o->description));
- if (!buf) {
- /* XXX There should be better message than this */
- nv_error_msg("Not enough memory\n");
- return;
- }
- pbuf = buf;
-
- for (s = o->description; s && *s; s++) {
- switch (*s) {
- case '<':
- case '>':
- case '^':
- break;
- default:
- *pbuf = *s;
- pbuf++;
- break;
- }
- }
- *pbuf = '\0';
- nv_msg_preserve_whitespace(BIGTAB, buf);
- free(buf);
- }
-
- nv_msg(NULL, "");
- }
-} /* print_help() */
+ nvgetopt_print_help(__options, 0, print_help_helper);
+}
diff --git a/src/command-line.h b/src/command-line.h
index 52335a5..700ed2a 100644
--- a/src/command-line.h
+++ b/src/command-line.h
@@ -22,4 +22,2 @@
-#include <NvCtrlAttributes.h>
-
#define DEFAULT_RC_FILE "~/.nvidia-settings-rc"
diff --git a/src/common-utils/common-utils.c b/src/common-utils/common-utils.c
index 701bb07..98b92fe 100644
--- a/src/common-utils/common-utils.c
+++ b/src/common-utils/common-utils.c
@@ -1,3 +1,3 @@
/*
- * Copyright (C) 2010 NVIDIA Corporation
+ * Copyright (C) 2010-2012 NVIDIA Corporation
*
@@ -152,2 +152,31 @@ char *nvstrdup(const char *s)
/*
+ * nvstrndup() - implementation of strndup() that checks return values; if
+ * an error occurs, an error is printed to stderr and exit is called
+ * -- this function will only return on success.
+ */
+
+char *nvstrndup(const char *s, size_t n)
+{
+ char *m;
+
+ if (!s) return NULL;
+
+ m = malloc(n + 1);
+
+ if (!m) {
+ fprintf(stderr, "%s: memory allocation failure during malloc (%s)! \n",
+ PROGRAM_NAME, strerror(errno));
+ exit(1);
+ }
+
+ strncpy (m, s, n);
+ m[n] = '\0';
+
+ return m;
+
+} /* nvstrndup() */
+
+
+
+/*
* nvstrtolower() - convert the given string to lowercase.
@@ -252 +281,308 @@ char *tilde_expansion(const char *str)
} /* tilde_expansion() */
+
+
+/****************************************************************************/
+/* TextRows helper functions */
+/****************************************************************************/
+
+/*
+ * nv_format_text_rows() - this function breaks the given string str
+ * into some number of rows, where each row is not longer than the
+ * specified width.
+ *
+ * If prefix is non-NULL, the first line is prepended with the prefix,
+ * and subsequent lines are indented to line up with the prefix.
+ *
+ * If word_boundary is TRUE, then attempt to only break lines on
+ * boundaries between words.
+ */
+
+TextRows *nv_format_text_rows(const char *prefix,
+ const char *str,
+ int width, int word_boundary)
+{
+ int len, prefix_len, z, w, i;
+ char *line, *buf, *local_prefix, *a, *b, *c;
+ TextRows *t;
+
+ /* initialize the TextRows structure */
+
+ t = (TextRows *) malloc(sizeof(TextRows));
+
+ if (!t) return NULL;
+
+ t->t = NULL;
+ t->n = 0;
+ t->m = 0;
+
+ if (!str) return t;
+
+ buf = strdup(str);
+
+ if (!buf) return t;
+
+ z = strlen(buf); /* length of entire string */
+ a = buf; /* pointer to the start of the string */
+
+ /* initialize the prefix fields */
+
+ if (prefix) {
+ prefix_len = strlen(prefix);
+ local_prefix = strdup(prefix);
+ } else {
+ prefix_len = 0;
+ local_prefix = NULL;
+ }
+
+ /* adjust the max width for any prefix */
+
+ w = width - prefix_len;
+
+ do {
+ /*
+ * if the string will fit on one line, point b to the end of the
+ * string
+ */
+
+ if (z < w) b = a + z;
+
+ /*
+ * if the string won't fit on one line, move b to where the
+ * end of the line should be, and then move b back until we
+ * find a space; if we don't find a space before we back b all
+ * the way up to a, just assign b to where the line should end.
+ */
+
+ else {
+ b = a + w;
+
+ if (word_boundary) {
+ while ((b >= a) && (!isspace(*b))) b--;
+ if (b <= a) b = a + w;
+ }
+ }
+
+ /* look for any newline inbetween a and b, and move b to it */
+
+ for (c = a; c < b; c++) if (*c == '\n') { b = c; break; }
+
+ /*
+ * copy the string that starts at a and ends at b, prepending
+ * with a prefix, if present
+ */
+
+ len = b-a;
+ len += prefix_len;
+ line = (char *) malloc(len+1);
+ if (local_prefix) strncpy(line, local_prefix, prefix_len);
+ strncpy(line + prefix_len, a, len - prefix_len);
+ line[len] = '\0';
+
+ /* append the new line to the array of text rows */
+
+ t->t = (char **) realloc(t->t, sizeof(char *) * (t->n + 1));
+ t->t[t->n] = line;
+ t->n++;
+
+ if (t->m < len) t->m = len;
+
+ /*
+ * adjust the length of the string and move the pointer to the
+ * beginning of the new line
+ */
+
+ z -= (b - a + 1);
+ a = b + 1;
+
+ /* move to the first non whitespace character (excluding newlines) */
+
+ if (word_boundary && isspace(*b)) {
+ while ((z) && (isspace(*a)) && (*a != '\n')) a++, z--;
+ } else {
+ if (!isspace(*b)) z++, a--;
+ }
+
+ if (local_prefix) {
+ for (i = 0; i < prefix_len; i++) local_prefix[i] = ' ';
+ }
+
+ } while (z > 0);
+
+ if (local_prefix) free(local_prefix);
+ free(buf);
+
+ return t;
+}
+
+
+/*
+ * nv_text_rows_append() - append the given msg to the existing TextRows
+ */
+
+void nv_text_rows_append(TextRows *t, const char *msg)
+{
+ int len;
+
+ t->t = realloc(t->t, sizeof(char *) * (t->n + 1));
+
+ if (msg) {
+ t->t[t->n] = strdup(msg);
+ len = strlen(msg);
+ if (t->m < len) t->m = len;
+ } else {
+ t->t[t->n] = NULL;
+ }
+
+ t->n++;
+}
+
+/*
+ * nv_concat_text_rows() - concatenate two text rows, storing the
+ * result in t0
+ */
+
+#define NV_MAX(x,y) ((x) > (y) ? (x) : (y))
+
+void nv_concat_text_rows(TextRows *t0, TextRows *t1)
+{
+ int n, i;
+
+ n = t0->n + t1->n;
+
+ t0->t = realloc(t0->t, sizeof(char *) * n);
+
+ for (i = 0; i < t1->n; i++) {
+ t0->t[i + t0->n] = strdup(t1->t[i]);
+ }
+
+ t0->m = NV_MAX(t0->m, t1->m);
+ t0->n = n;
+
+} /* nv_concat_text_rows() */
+
+
+/*
+ * nv_free_text_rows() - free the TextRows data structure allocated by
+ * nv_format_text_rows()
+ */
+
+void nv_free_text_rows(TextRows *t)
+{
+ int i;
+
+ if (!t) return;
+ for (i = 0; i < t->n; i++) free(t->t[i]);
+ if (t->t) free(t->t);
+ free(t);
+
+} /* nv_free_text_rows() */
+
+
+/****************************************************************************/
+/* printing helper functions */
+/****************************************************************************/
+
+#define DEFAULT_WIDTH 75
+
+static unsigned short __terminal_width = 0;
+
+/*
+ * reset_current_terminal_width() - if new_val is zero, then use the
+ * TIOCGWINSZ ioctl to get the current width of the terminal, and
+ * assign it the value to __terminal_width. If the ioctl fails, use a
+ * hardcoded constant. If new_val is non-zero, then use new_val.
+ */
+
+void reset_current_terminal_width(unsigned short new_val)
+{
+ struct winsize ws;
+
+ if (new_val) {
+ __terminal_width = new_val;
+ return;
+ }
+
+ if (ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) == -1 || ws.ws_col == 0) {
+ __terminal_width = DEFAULT_WIDTH;
+ } else {
+ __terminal_width = ws.ws_col - 1;
+ }
+}
+
+/*
+ * Call silence_fmt(1) to turn fmtout(), fmtoutp() and format() into noops.
+ */
+static int __silent = 0;
+
+void silence_fmt(int val)
+{
+ __silent = val;
+}
+
+
+static void vformat(FILE *stream, const int wb,
+ const char *prefix, const char *buf)
+{
+ int i;
+ TextRows *t;
+
+ if (!__terminal_width) reset_current_terminal_width(0);
+
+ t = nv_format_text_rows(prefix, buf, __terminal_width, wb);
+
+ for (i = 0; i < t->n; i++) fprintf(stream, "%s\n", t->t[i]);
+
+ nv_free_text_rows(t);
+}
+
+
+#define NV_VFORMAT(stream, wb, prefix, fmt) \
+do { \
+ char *buf; \
+ NV_VSNPRINTF(buf, fmt); \
+ vformat(stream, wb, prefix, buf); \
+ free (buf); \
+} while(0)
+
+
+void fmtout(const char *fmt, ...)
+{
+ if (__silent > 0) {
+ return;
+ }
+ NV_VFORMAT(stdout, TRUE, NULL, fmt);
+}
+
+
+void fmtoutp(const char *prefix, const char *fmt, ...)
+{
+ if (__silent > 0) {
+ return;
+ }
+ NV_VFORMAT(stdout, TRUE, prefix, fmt);
+}
+
+
+void fmterr(const char *fmt, ...)
+{
+ vformat(stderr, 0, NULL, "");
+ NV_VFORMAT(stderr, TRUE, "ERROR: ", fmt);
+ vformat(stderr, 0, NULL, "");
+}
+
+
+void fmtwarn(const char *fmt, ...)
+{
+ vformat(stderr, 0, NULL, "");
+ NV_VFORMAT(stderr, TRUE, "WARNING: ", fmt);
+ vformat(stderr, 0, NULL, "");
+}
+
+
+void fmt(FILE *stream, const char *prefix, const char *fmt, ...)
+{
+ if (__silent > 0) {
+ return;
+ }
+ NV_VFORMAT(stream, TRUE, prefix, fmt);
+}
diff --git a/src/common-utils/common-utils.h b/src/common-utils/common-utils.h
index 04d5f3b..e0d9314 100644
--- a/src/common-utils/common-utils.h
+++ b/src/common-utils/common-utils.h
@@ -1,3 +1,3 @@
/*
- * Copyright (C) 2010 NVIDIA Corporation
+ * Copyright (C) 2010-2012 NVIDIA Corporation
*
@@ -19,2 +19,5 @@
+#include <stdio.h>
+#include <stdarg.h>
+
#if !defined(TRUE)
@@ -27,2 +30,13 @@
+#define ARRAY_LEN(_arr) (sizeof(_arr) / sizeof(_arr[0]))
+
+#define TAB " "
+#define BIGTAB " "
+
+typedef struct {
+ char **t; /* the text rows */
+ int n; /* number of rows */
+ int m; /* maximum row length */
+} TextRows;
+
void *nvalloc(size_t size);
@@ -31,2 +45,3 @@ void *nvrealloc(void *ptr, size_t size);
char *nvstrdup(const char *s);
+char *nvstrndup(const char *s, size_t n);
char *nvstrtolower(char *s);
@@ -36,2 +51,63 @@ char *tilde_expansion(const char *str);
+TextRows *nv_format_text_rows(const char *prefix,
+ const char *str,
+ int width, int word_boundary);
+void nv_text_rows_append(TextRows *t, const char *msg);
+void nv_concat_text_rows(TextRows *t0, TextRows *t1);
+void nv_free_text_rows(TextRows *t);
+
+void reset_current_terminal_width(unsigned short new_val);
+
+void silence_fmt(int val);
+void fmtout(const char *fmt, ...);
+void fmtoutp(const char *prefix, const char *fmt, ...);
+void fmterr(const char *fmt, ...);
+void fmtwarn(const char *fmt, ...);
+void fmt(FILE *stream, const char *prefix, const char *fmt, ...);
+
+/*
+ * NV_VSNPRINTF(): macro that assigns buf using vsnprintf(). This is
+ * correct for differing semantics of the vsnprintf() return value:
+ *
+ * -1 when the buffer is not long enough (glibc < 2.1)
+ *
+ * or
+ *
+ * the length the string would have been if the buffer had been large
+ * enough (glibc >= 2.1)
+ *
+ * This macro allocates memory for buf; the caller should free it when
+ * done.
+ */
+
+#define NV_FMT_BUF_LEN 256
+
+#define NV_VSNPRINTF(buf, fmt) \
+do { \
+ if (!fmt) { \
+ (buf) = NULL; \
+ } else { \
+ va_list ap; \
+ int len, current_len = NV_FMT_BUF_LEN; \
+ \
+ (buf) = malloc(current_len); \
+ \
+ while (1) { \
+ va_start(ap, fmt); \
+ len = vsnprintf((buf), current_len, (fmt), ap); \
+ va_end(ap); \
+ \
+ if ((len > -1) && (len < current_len)) { \
+ break; \
+ } else if (len > -1) { \
+ current_len = len + 1; \
+ } else { \
+ current_len += NV_FMT_BUF_LEN; \
+ } \
+ free(buf); \
+ (buf) = malloc(current_len); \
+ } \
+ } \
+} while (0)
+
#endif /* __COMMON_UTILS_H__ */
diff --git a/src/common-utils/gen-manpage-opts-helper.c b/src/common-utils/gen-manpage-opts-helper.c
new file mode 100644
index 0000000..d2abb1c
--- /dev/null
+++ b/src/common-utils/gen-manpage-opts-helper.c
@@ -0,0 +1,181 @@
+/*
+ * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+
+#include "nvgetopt.h"
+#include "gen-manpage-opts-helper.h"
+
+static void print_option(const NVGetoptOption *o)
+{
+ char scratch[64], *s;
+ int j, len;
+
+ int italics, bold, omitWhiteSpace;
+
+ /* if we are going to need the argument, process it now */
+ if (o->flags & NVGETOPT_HAS_ARGUMENT) {
+ if (o->arg_name) {
+ strcpy(scratch, o->arg_name);
+ } else {
+ len = strlen(o->name);
+ for (j = 0; j < len; j++) scratch[j] = toupper(o->name[j]);
+ scratch[len] = '\0';
+ }
+ }
+
+ printf(".TP\n.BI \"");
+ /* Print the name of the option */
+ /* XXX We should backslashify the '-' characters in o->name. */
+
+ if (isalpha(o->val)) {
+ /* '\-c' */
+ printf("\\-%c", o->val);
+
+ if (o->flags & NVGETOPT_HAS_ARGUMENT) {
+ /* ' " "ARG" "' */
+ printf(" \" \"%s\" \"", scratch);
+ }
+ /* ', ' */
+ printf(", ");
+ }
+
+ /* '\-\-name' */
+ printf("\\-\\-%s", o->name);
+
+ /* '=" "ARG' */
+ if (o->flags & NVGETOPT_HAS_ARGUMENT) {
+ printf("=\" \"%s", scratch);
+
+ /* '" "' */
+ if ((o->flags & NVGETOPT_IS_BOOLEAN) ||
+ (o->flags & NVGETOPT_ALLOW_DISABLE)) {
+ printf("\" \"");
+ }
+ }
+
+ /* ', \-\-no\-name' */
+ if (((o->flags & NVGETOPT_IS_BOOLEAN) &&
+ !(o->flags & NVGETOPT_HAS_ARGUMENT)) ||
+ (o->flags & NVGETOPT_ALLOW_DISABLE)) {
+ printf(", \\-\\-no\\-%s", o->name);
+ }
+
+ printf("\"\n");
+
+ /* Print the option description */
+ /* XXX Each sentence should be on its own line! */
+
+ /*
+ * Print the option description: write each character one at a
+ * time (ugh) so that we can special-case a few characters:
+ *
+ * '&' : toggles italics on and off
+ * '^' : toggles bold on and off
+ * '-' : is backslashified: "\-"
+ *
+ * Whitespace is omited when italics or bold is on
+ */
+
+ italics = 0;
+ bold = 0;
+ omitWhiteSpace = 0;
+
+ for (s = o->description; s && *s; s++) {
+
+ switch (*s) {
+ case '&':
+ if (italics) {
+ printf("\n");
+ } else {
+ printf("\n.I ");
+ }
+ omitWhiteSpace = italics;
+ italics = !italics;
+ break;
+ case '^':
+ if (bold) {
+ printf("\n");
+ } else {
+ printf("\n.B ");
+ }
+ omitWhiteSpace = bold;
+ bold = !bold;
+ break;
+ case '-':
+ printf("\\-");
+ omitWhiteSpace = 0;
+ break;
+ case ' ':
+ if (!omitWhiteSpace) {
+ printf(" ");
+ }
+ break;
+ default:
+ printf("%c", *s);
+ omitWhiteSpace = 0;
+ break;
+ }
+ }
+
+ printf("\n");
+}
+
+void gen_manpage_opts_helper(const NVGetoptOption *options)
+{
+ int i;
+ int has_advanced_options = 0;
+
+ /* Print the "simple" options; i.e. the ones you get with --help. */
+ printf(".SH OPTIONS\n");
+ for (i = 0; options[i].name; i++) {
+ const NVGetoptOption *o = &options[i];
+
+ if (!o->description) {
+ continue;
+ }
+
+ if (!(o->flags & NVGETOPT_HELP_ALWAYS)) {
+ has_advanced_options = 1;
+ continue;
+ }
+
+ print_option(o);
+ }
+
+ if (has_advanced_options) {
+ /*
+ * If any exist, print the advanced options; i.e., the ones
+ * you get with --advanced-help
+ */
+ printf(".SH \"ADVANCED OPTIONS\"\n");
+ for (i = 0; options[i].name; i++) {
+ const NVGetoptOption *o = &options[i];
+
+ if (!o->description) {
+ continue;
+ }
+
+ if (o->flags & NVGETOPT_HELP_ALWAYS) {
+ continue;
+ }
+
+ print_option(o);
+ }
+ }
+}
diff --git a/src/common-utils/gen-manpage-opts-helper.h b/src/common-utils/gen-manpage-opts-helper.h
new file mode 100644
index 0000000..b09852e
--- /dev/null
+++ b/src/common-utils/gen-manpage-opts-helper.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#if !defined(__GEN_MANPAGE_OPTS_HELPER_H__)
+#define __GEN_MANPAGE_OPTS_HELPER_H__
+
+#include "nvgetopt.h"
+
+void gen_manpage_opts_helper(const NVGetoptOption *options);
+
+#endif /* __GEN_MANPAGE_OPTS_HELPER_H__ */
diff --git a/src/common-utils/nvgetopt.c b/src/common-utils/nvgetopt.c
index a89dcac..f04cef3 100644
--- a/src/common-utils/nvgetopt.c
+++ b/src/common-utils/nvgetopt.c
@@ -23,4 +23,6 @@
#include <stdlib.h>
+#include <ctype.h>
#include "nvgetopt.h"
+#include "common-utils.h"
@@ -311 +313,124 @@ int nvgetopt(int argc,
} /* nvgetopt() */
+
+
+/*
+ * cook_description() - the description string may contain text within
+ * special characters which are interpreted by the manpage generator.
+ * We want to omit those characters here.
+ */
+
+static char *cook_description(const char *description)
+{
+ const char *src;
+ char *s, *dst;
+
+ if (!description) {
+ return NULL;
+ }
+
+ s = strdup(description);
+
+ if (!s) {
+ return NULL;
+ }
+
+ for (src = description, dst = s; *src; src++) {
+ if ((*src == '&') || (*src == '^')) {
+ continue;
+ }
+ *dst = *src;
+ dst++;
+ }
+
+ *dst = '\0';
+
+ return s;
+}
+
+
+void nvgetopt_print_help(const NVGetoptOption *options,
+ unsigned int include_mask,
+ nvgetopt_print_help_callback_ptr callback)
+{
+ const NVGetoptOption *o;
+ int i;
+
+ for (i = 0; options[i].name; i++) {
+
+ char *msg = NULL, *arg = NULL, *description = NULL;
+
+ o = &options[i];
+
+ /* Skip options with no help text */
+ if (!o->description) {
+ continue;
+ }
+
+ /* skip options who don't have all the bits of include_mask */
+ if ((o->flags & include_mask) != include_mask) {
+ continue;
+ }
+
+ /* if we are going to need the argument, process it now */
+ arg = NULL;
+ if (o->flags & NVGETOPT_HAS_ARGUMENT) {
+ if (o->arg_name) {
+ arg = strdup(o->arg_name);
+ } else {
+ char *tmp;
+ arg = strdup(o->name);
+ for (tmp = arg; tmp && *tmp; tmp++) {
+ *tmp = toupper(*tmp);
+ }
+ }
+ }
+
+ msg = NULL;
+
+ /*
+ * create the long version of the option, possibly with an
+ * argument; e.g., "--foo" or "--foo=BAR"
+ */
+ if (arg) {
+ msg = nvstrcat("--", o->name, "=", arg, NULL);
+ } else {
+ msg = nvstrcat("--", o->name, NULL);
+ }
+
+ /*
+ * prepend the single character version of the option,
+ * possibly with an argument; e.g., "-f" or "-f BAR"
+ */
+ if (isalpha(o->val)) {
+ char scratch[16];
+ char *tmp;
+ snprintf(scratch, sizeof(scratch), "%c", o->val);
+ if (arg) {
+ tmp = nvstrcat("-", scratch, " ", arg, ", ", msg, NULL);
+ } else {
+ tmp = nvstrcat("-", scratch, ", ", msg, NULL);
+ }
+ free(msg);
+ msg = tmp;
+ }
+
+ /* append the boolean version of the option; e.g., "--no-foo" */
+ if (((o->flags & NVGETOPT_IS_BOOLEAN) &&
+ !(o->flags & NVGETOPT_HAS_ARGUMENT)) ||
+ (o->flags & NVGETOPT_ALLOW_DISABLE)) {
+ char *tmp = nvstrcat(msg, ", --no-", o->name, NULL);
+ free(msg);
+ msg = tmp;
+ }
+
+ /* process the description text */
+ description = cook_description(o->description);
+
+ /* give the strings to the caller to format and print */
+ callback(msg, description);
+
+ free(msg);
+ free(arg);
+ free(description);
+ }
+}
diff --git a/src/common-utils/nvgetopt.h b/src/common-utils/nvgetopt.h
index 127f40b..5847546 100644
--- a/src/common-utils/nvgetopt.h
+++ b/src/common-utils/nvgetopt.h
@@ -157,2 +157,26 @@ int nvgetopt(int argc,
+/*
+ * nvgetopt_print_help() - print a help message for each option in the
+ * provided NVGetoptOption array. This is useful for a utility's
+ * "--help" output.
+ *
+ * Options will only be printed if they have every bit set that
+ * include_mask includes.
+ *
+ * For each option, the provided callback function wil be called with
+ * two strings: a name string that lists the option's name, and a
+ * description string for the option. The callback function is
+ * responsible for actually printing these strings. Examples:
+ *
+ * name = "-v, --version";
+ * description = "Print usage information for the common commandline "
+ * "options and exit.";
+ */
+
+typedef void nvgetopt_print_help_callback_ptr(const char *name,
+ const char *description);
+
+void nvgetopt_print_help(const NVGetoptOption *options,
+ unsigned int include_mask,
+ nvgetopt_print_help_callback_ptr callback);
diff --git a/src/common-utils/src.mk b/src/common-utils/src.mk
index 14e4131..12ba143 100644
--- a/src/common-utils/src.mk
+++ b/src/common-utils/src.mk
@@ -9 +9,7 @@ COMMON_UTILS_EXTRA_DIST += src.mk
+# gen-manpage-opts-helper.c is listed in EXTRA_DIST, rather than SRC,
+# because it is not compiled into the utilities themselves, but used
+# when building the utility's gen-manpage-opts
+COMMON_UTILS_EXTRA_DIST += gen-manpage-opts-helper.c
+COMMON_UTILS_EXTRA_DIST += gen-manpage-opts-helper.h
+
diff --git a/src/config-file.c b/src/config-file.c
index 99c7059..5ea5c29 100644
--- a/src/config-file.c
+++ b/src/config-file.c
@@ -436,3 +436,3 @@ int nv_write_config_file(const char *filename, CtrlHandles *h,
fprintf(stream, "%s%s%c%s[%s]=%d\n", p->display, target_str,
- DISPLAY_NAME_SEPARATOR, tmp, tmp_d_str, p->val);
+ DISPLAY_NAME_SEPARATOR, tmp, tmp_d_str, p->val.i);
@@ -443,3 +443,3 @@ int nv_write_config_file(const char *filename, CtrlHandles *h,
fprintf(stream, "%s%s%c%s=%d\n", p->display, target_str,
- DISPLAY_NAME_SEPARATOR, tmp, p->val);
+ DISPLAY_NAME_SEPARATOR, tmp, p->val.i);
}
diff --git a/src/gen-manpage-opts.c b/src/gen-manpage-opts.c
index 7f960ab..2d1f948 100644
--- a/src/gen-manpage-opts.c
+++ b/src/gen-manpage-opts.c
@@ -26,116 +26,7 @@
#include "option-table.h"
+#include "gen-manpage-opts-helper.h"
-#define NV_FMT_BUF_LEN 512
-
-/*
- * Prints the option help in a form that is suitable to include in the manpage.
- */
-
-static void print_option(const NVGetoptOption *o)
-{
- int omitWhiteSpace;
-
- /* if we are going to need the argument, process it now */
-
- printf(".TP\n.BI \"");
- /* Print the name of the option */
- /* XXX We should backslashify the '-' characters in o->name. */
-
- if (isalpha(o->val)) {
- /* '\-c \-\-name' */
- printf("\\-%c, \\-\\-%s", o->val, o->name);
- } else {
- printf("\\-\\-%s", o->name);
- }
-
- /* '=" "ARG' */
- if (o->flags & NVGETOPT_HAS_ARGUMENT) {
- int len, j;
- char tbuf[32];
- len = strlen(o->name);
- for (j = 0; j < len; j++)
- tbuf[j] = toupper(o->name[j]);
- tbuf[len] = '\0';
- printf("=\" \"%s", tbuf);
- }
-
- printf("\"\n");
-
- /* Print the option description */
- /* XXX Each sentence should be on its own line! */
-
- /*
- * Print the option description: write each character one at a
- * time (ugh) so that we can special-case a few characters:
- *
- * "^" --> "\n.I "
- * "<" --> "\n.B "
- * ">" --> "\n"
- *
- * '^' is used to mark the text as underlined till it is turned off with '>'.
- * '<' is used to mark the text as bold till it is turned off with '>'.
- *
- * XXX Each sentence should be on its own line!
- */
-
- if (o->description) {
- char *buf = NULL, *s = NULL, *pbuf = NULL;
-
- buf = calloc(1, NV_FMT_BUF_LEN + strlen(o->description));
- if (!buf) {
- /* XXX There should be better message than this */
- printf("Not enough memory\n");
- return;
- }
- pbuf = buf;
-
- omitWhiteSpace = 0;
- for (s = o->description; s && *s; s++) {
- switch (*s) {
- case '<':
- sprintf(pbuf, "\n.B ");
- pbuf = pbuf + 4;
- omitWhiteSpace = 0;
- break;
- case '^':
- sprintf(pbuf, "\n.I ");
- pbuf = pbuf + 4;
- omitWhiteSpace = 0;
- break;
- case '>':
- *pbuf = '\n';
- pbuf++;
- omitWhiteSpace = 1;
- break;
- case ' ':
- if (!omitWhiteSpace) {
- *pbuf = *s;
- pbuf++;
- }
- break;
- default:
- *pbuf = *s;
- pbuf++;
- omitWhiteSpace = 0;
- break;
- }
- }
- printf("%s", buf);
- free(buf);
- }
-
- printf("\n");
-}
-
-int main(int argc, char* argv[])
+int main(void)
{
- int i;
- const NVGetoptOption *o;
-
- printf(".SH OPTIONS\n");
- for (i = 0; __options[i].name; i++) {
- o = &__options[i];
- print_option(o);
- }
-
+ gen_manpage_opts_helper(__options);
return 0;
diff --git a/src/glxinfo.c b/src/glxinfo.c
index a5b98c5..dfeffaf 100644
--- a/src/glxinfo.c
+++ b/src/glxinfo.c
@@ -27,2 +27,3 @@
#include "msg.h"
+#include "glxinfo.h"
diff --git a/src/gtk+-2.x/ctk3dvisionpro.c b/src/gtk+-2.x/ctk3dvisionpro.c
index 2882099..383a9e5 100644
--- a/src/gtk+-2.x/ctk3dvisionpro.c
+++ b/src/gtk+-2.x/ctk3dvisionpro.c
@@ -199,2 +199,3 @@ GType ctk_3d_vision_pro_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkbanner.c b/src/gtk+-2.x/ctkbanner.c
index d37f43a..1ee026a 100644
--- a/src/gtk+-2.x/ctkbanner.c
+++ b/src/gtk+-2.x/ctkbanner.c
@@ -51,3 +51,2 @@
#include "gvi_pixdata.h"
-#include "rotation_pixdata.h"
#include "sdi_pixdata.h"
@@ -107,2 +106,3 @@ GType ctk_banner_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -367,3 +367,2 @@ static gboolean select_artwork(BannerArtworkType artwork,
{ BANNER_ARTWORK_PENGUIN, TRUE, 16, &penguin_pixdata },
- { BANNER_ARTWORK_ROTATION, FALSE, 16, &rotation_pixdata },
{ BANNER_ARTWORK_SDI, FALSE, 16, &sdi_pixdata },
diff --git a/src/gtk+-2.x/ctkbanner.h b/src/gtk+-2.x/ctkbanner.h
index 863ef43..256d4b0 100644
--- a/src/gtk+-2.x/ctkbanner.h
+++ b/src/gtk+-2.x/ctkbanner.h
@@ -62,3 +62,2 @@ typedef enum {
BANNER_ARTWORK_PENGUIN,
- BANNER_ARTWORK_ROTATION,
BANNER_ARTWORK_SDI,
diff --git a/src/gtk+-2.x/ctkclocks.c b/src/gtk+-2.x/ctkclocks.c
index 876aece..76f5ad6 100644
--- a/src/gtk+-2.x/ctkclocks.c
+++ b/src/gtk+-2.x/ctkclocks.c
@@ -167,2 +167,3 @@ GType ctk_clocks_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkcolorcontrols.c b/src/gtk+-2.x/ctkcolorcontrols.c
index b5d7fad..cb1f22d 100644
--- a/src/gtk+-2.x/ctkcolorcontrols.c
+++ b/src/gtk+-2.x/ctkcolorcontrols.c
@@ -45,2 +45,4 @@ gboolean update_color_space_menu_info(CtkColorControls *ctk_color_controls);
+static void setup_reset_button(CtkColorControls *ctk_color_controls);
+
static void color_space_menu_changed(GtkOptionMenu *color_space_menu,
@@ -92,2 +94,3 @@ GType ctk_color_controls_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -107,3 +110,2 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
GtkWidget *reset_button,
- unsigned int display_device_mask,
char *name)
@@ -119,8 +121,8 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
/* check if color configuration is supported */
- ret1 = NvCtrlGetValidDisplayAttributeValues(handle, display_device_mask,
- NV_CTRL_COLOR_SPACE,
- &valid1);
- ret2 = NvCtrlGetValidDisplayAttributeValues(handle, display_device_mask,
- NV_CTRL_COLOR_RANGE,
- &valid2);
+ ret1 = NvCtrlGetValidAttributeValues(handle,
+ NV_CTRL_COLOR_SPACE,
+ &valid1);
+ ret2 = NvCtrlGetValidAttributeValues(handle,
+ NV_CTRL_COLOR_RANGE,
+ &valid2);
@@ -140,3 +142,2 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
ctk_color_controls->reset_button = reset_button;
- ctk_color_controls->display_device_mask = display_device_mask;
ctk_color_controls->name = strdup(name);
@@ -152,3 +153,3 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, FRAME_PADDING);
- ctk_color_controls->color_controls_main = hbox;
+ ctk_color_controls->color_controls_box = hbox;
@@ -212,3 +213,2 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
hbox = gtk_hbox_new(FALSE, 0);
- ctk_color_controls->color_space_box = hbox;
gtk_table_attach(GTK_TABLE(table), hbox, 1, 2, 0, 1,
@@ -272,2 +272,46 @@ GtkWidget* ctk_color_controls_new(NvCtrlAttributeHandle *handle,
+
+/*
+ * setup_reset_button() - enables the reset button if any of the current
+ * settings are not the default.
+ */
+static void setup_reset_button(CtkColorControls *ctk_color_controls)
+{
+ gint history;
+ gint val;
+
+ if (!GTK_WIDGET_SENSITIVE(ctk_color_controls->color_controls_box)) {
+ /* Nothing is available, don't bother enabling the reset button yet. */
+ return;
+ }
+
+ /* The color space menu is always available */
+ history = gtk_option_menu_get_history
+ (GTK_OPTION_MENU(ctk_color_controls->color_space_menu));
+ val = ctk_color_controls->color_space_table[history];
+ if (val != NV_CTRL_COLOR_SPACE_RGB) {
+ goto enable;
+ }
+
+ /* Color range is dependent on the color space */
+ if (GTK_WIDGET_SENSITIVE(ctk_color_controls->color_range_menu)) {
+ history = gtk_option_menu_get_history
+ (GTK_OPTION_MENU(ctk_color_controls->color_range_menu));
+ val = ctk_color_controls->color_range_table[history];
+ if (val != NV_CTRL_COLOR_RANGE_FULL) {
+ goto enable;
+ }
+ }
+
+ /* Don't disable reset button here, since other settings that are not
+ * managed by the ctk_image_slider here may need it enabled
+ */
+ return;
+
+ enable:
+ gtk_widget_set_sensitive(ctk_color_controls->reset_button, TRUE);
+}
+
+
+
/*
@@ -285,6 +329,8 @@ void ctk_color_controls_setup(CtkColorControls *ctk_color_controls)
if (!update_color_space_menu_info(ctk_color_controls)) {
- gtk_widget_set_sensitive(ctk_color_controls->color_controls_main,
- FALSE);
- gtk_widget_hide_all(ctk_color_controls->color_controls_main);
+ gtk_widget_set_sensitive(ctk_color_controls->color_controls_box, FALSE);
+ gtk_widget_hide_all(ctk_color_controls->color_controls_box);
}
+
+ setup_reset_button(ctk_color_controls);
+
} /* ctk_color_controls_setup() */
@@ -298,7 +344,5 @@ static gboolean update_color_space_menu_info(CtkColorControls *ctk_color_control
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_SPACE,
- &color_space)) {
- free(ctk_color_controls->color_space_table);
+ NvCtrlGetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_SPACE,
+ &color_space)) {
return FALSE;
@@ -324,5 +368,10 @@ static gboolean update_color_space_menu_info(CtkColorControls *ctk_color_control
/* dynamically regenerate color range dropdown */
- setup_color_range_dropdown(ctk_color_controls);
+ if (!setup_color_range_dropdown(ctk_color_controls)) {
+ gtk_widget_set_sensitive(ctk_color_controls->color_range_menu, FALSE);
+ } else {
+ gtk_widget_set_sensitive(ctk_color_controls->color_range_menu, TRUE);
+ }
+
+ return TRUE;
- return True;
} /* update_color_space_menu_info() */
@@ -372,6 +421,5 @@ static void color_range_menu_changed(GtkOptionMenu *color_range_menu,
- NvCtrlSetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_RANGE,
- color_range);
+ NvCtrlSetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_RANGE,
+ color_range);
@@ -408,6 +456,5 @@ static void color_space_menu_changed(GtkOptionMenu *color_space_menu,
- NvCtrlSetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_SPACE,
- color_space);
+ NvCtrlSetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_SPACE,
+ color_space);
@@ -446,11 +493,9 @@ void ctk_color_controls_reset(CtkColorControls *ctk_color_controls)
- NvCtrlSetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_SPACE,
- NV_CTRL_COLOR_SPACE_RGB);
+ NvCtrlSetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_SPACE,
+ NV_CTRL_COLOR_SPACE_RGB);
- NvCtrlSetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_RANGE,
- NV_CTRL_COLOR_RANGE_FULL);
+ NvCtrlSetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_RANGE,
+ NV_CTRL_COLOR_RANGE_FULL);
@@ -489,10 +534,4 @@ static void color_control_update_received(GtkObject *object, gpointer arg1,
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask & ctk_object->display_device_mask)) {
- return;
- }
-
ctk_color_controls_setup(ctk_object);
-
+
/* update status bar message */
@@ -559,6 +598,5 @@ static gboolean setup_color_range_dropdown(CtkColorControls *ctk_color_controls)
- ret = NvCtrlGetValidDisplayAttributeValues(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_RANGE,
- &valid);
+ ret = NvCtrlGetValidAttributeValues(ctk_color_controls->handle,
+ NV_CTRL_COLOR_RANGE,
+ &valid);
@@ -611,5 +649,5 @@ static gboolean setup_color_range_dropdown(CtkColorControls *ctk_color_controls)
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_color_controls->handle,
- ctk_color_controls->display_device_mask,
- NV_CTRL_COLOR_RANGE, &val)) {
+ NvCtrlGetAttribute(ctk_color_controls->handle,
+ NV_CTRL_COLOR_RANGE,
+ &val)) {
val = NV_CTRL_COLOR_RANGE_FULL;
@@ -630,9 +668,2 @@ static gboolean setup_color_range_dropdown(CtkColorControls *ctk_color_controls)
- /* If dropdown only has one item, disable it */
- if (ctk_color_controls->color_range_table_size > 1) {
- gtk_widget_set_sensitive(ctk_color_controls->color_range_menu, True);
- } else {
- gtk_widget_set_sensitive(ctk_color_controls->color_range_menu, False);
- }
-
g_signal_handlers_unblock_by_func
@@ -642,2 +673,7 @@ static gboolean setup_color_range_dropdown(CtkColorControls *ctk_color_controls)
+ /* If dropdown only has one item, disable it */
+ if (ctk_color_controls->color_range_table_size <= 1) {
+ return FALSE;
+ }
+
return TRUE;
diff --git a/src/gtk+-2.x/ctkcolorcontrols.h b/src/gtk+-2.x/ctkcolorcontrols.h
index 13b7dad..cdfd233 100644
--- a/src/gtk+-2.x/ctkcolorcontrols.h
+++ b/src/gtk+-2.x/ctkcolorcontrols.h
@@ -57,4 +57,3 @@ struct _CtkColorControls
GtkWidget *reset_button;
- GtkWidget *color_controls_main;
- GtkWidget *color_space_box;
+ GtkWidget *color_controls_box;
@@ -62,5 +61,3 @@ struct _CtkColorControls
GtkWidget *color_space_menu;
- GtkWidget *color_current_config;
- gint display_device_mask;
gint *color_space_table;
@@ -83,3 +80,2 @@ GtkWidget* ctk_color_controls_new (NvCtrlAttributeHandle *,
GtkWidget *,
- unsigned int display_device_mask,
char *);
diff --git a/src/gtk+-2.x/ctkcolorcorrection.c b/src/gtk+-2.x/ctkcolorcorrection.c
index 9b0adeb..a283ddf 100644
--- a/src/gtk+-2.x/ctkcolorcorrection.c
+++ b/src/gtk+-2.x/ctkcolorcorrection.c
@@ -145,2 +145,3 @@ GType ctk_color_correction_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -905,12 +906,12 @@ static void apply_parsed_attribute_list(
set_color_state(ctk_color_correction, CONTRAST,
- RED_CHANNEL, p->fval, TRUE); break;
+ RED_CHANNEL, p->val.f, TRUE); break;
case (CONTRAST_VALUE | GREEN_CHANNEL):
set_color_state(ctk_color_correction, CONTRAST,
- GREEN_CHANNEL, p->fval, TRUE); break;
+ GREEN_CHANNEL, p->val.f, TRUE); break;
case (CONTRAST_VALUE | BLUE_CHANNEL):
set_color_state(ctk_color_correction, CONTRAST,
- BLUE_CHANNEL, p->fval, TRUE); break;
+ BLUE_CHANNEL, p->val.f, TRUE); break;
case (CONTRAST_VALUE | ALL_CHANNELS):
set_color_state(ctk_color_correction, CONTRAST,
- ALL_CHANNELS, p->fval, TRUE); break;
+ ALL_CHANNELS, p->val.f, TRUE); break;
@@ -918,12 +919,12 @@ static void apply_parsed_attribute_list(
set_color_state(ctk_color_correction, BRIGHTNESS,
- RED_CHANNEL, p->fval, TRUE); break;
+ RED_CHANNEL, p->val.f, TRUE); break;
case (BRIGHTNESS_VALUE | GREEN_CHANNEL):
set_color_state(ctk_color_correction, BRIGHTNESS,
- GREEN_CHANNEL, p->fval, TRUE); break;
+ GREEN_CHANNEL, p->val.f, TRUE); break;
case (BRIGHTNESS_VALUE | BLUE_CHANNEL):
set_color_state(ctk_color_correction, BRIGHTNESS,
- BLUE_CHANNEL, p->fval, TRUE); break;
+ BLUE_CHANNEL, p->val.f, TRUE); break;
case (BRIGHTNESS_VALUE | ALL_CHANNELS):
set_color_state(ctk_color_correction, BRIGHTNESS,
- ALL_CHANNELS, p->fval, TRUE); break;
+ ALL_CHANNELS, p->val.f, TRUE); break;
@@ -931,12 +932,12 @@ static void apply_parsed_attribute_list(
set_color_state(ctk_color_correction, GAMMA,
- RED_CHANNEL, p->fval, TRUE); break;
+ RED_CHANNEL, p->val.f, TRUE); break;
case (GAMMA_VALUE | GREEN_CHANNEL):
set_color_state(ctk_color_correction, GAMMA,
- GREEN_CHANNEL, p->fval, TRUE); break;
+ GREEN_CHANNEL, p->val.f, TRUE); break;
case (GAMMA_VALUE | BLUE_CHANNEL):
set_color_state(ctk_color_correction, GAMMA,
- BLUE_CHANNEL, p->fval, TRUE); break;
+ BLUE_CHANNEL, p->val.f, TRUE); break;
case (GAMMA_VALUE | ALL_CHANNELS):
set_color_state(ctk_color_correction, GAMMA,
- ALL_CHANNELS, p->fval, TRUE); break;
+ ALL_CHANNELS, p->val.f, TRUE); break;
diff --git a/src/gtk+-2.x/ctkconfig.c b/src/gtk+-2.x/ctkconfig.c
index 5375af4..caadc1f 100644
--- a/src/gtk+-2.x/ctkconfig.c
+++ b/src/gtk+-2.x/ctkconfig.c
@@ -104,2 +104,3 @@ GType ctk_config_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkcursorshadow.c b/src/gtk+-2.x/ctkcursorshadow.c
index 7b23dcf..92ea1fa 100644
--- a/src/gtk+-2.x/ctkcursorshadow.c
+++ b/src/gtk+-2.x/ctkcursorshadow.c
@@ -178,2 +178,3 @@ GType ctk_cursor_shadow_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkcurve.c b/src/gtk+-2.x/ctkcurve.c
index 001aae1..709373f 100644
--- a/src/gtk+-2.x/ctkcurve.c
+++ b/src/gtk+-2.x/ctkcurve.c
@@ -70,2 +70,3 @@ GType ctk_curve_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkdisplayconfig-utils.c b/src/gtk+-2.x/ctkdisplayconfig-utils.c
index 526c120..eed0604 100644
--- a/src/gtk+-2.x/ctkdisplayconfig-utils.c
+++ b/src/gtk+-2.x/ctkdisplayconfig-utils.c
@@ -43,3 +43,3 @@
static void xconfig_update_buffer(GtkWidget *widget, gpointer user_data);
-
+static gchar *display_pick_config_name(nvDisplayPtr display, int be_generic);
@@ -434,2 +434,32 @@ static nvModeLinePtr modeline_parse(nvDisplayPtr display,
+/** apply_mode_attribute_token() *************************************
+ *
+ * Modifies the nvMode structure (pointed to by data) with
+ * information from the token-value pair given. Currently accepts
+ * stereo (mode) data.
+ *
+ * Unknown token and/or values are silently ignored.
+ *
+ **/
+static void apply_mode_attribute_token(char *token, char *value, void *data)
+{
+ nvModePtr mode = (nvModePtr)data;
+
+ if (!mode || !token || !strlen(token)) {
+ return;
+ }
+
+ /* stereo */
+ if (!strcasecmp("stereo", token)) {
+ if (!strcasecmp("PassiveLeft", value)) {
+ mode->passive_stereo_eye = PASSIVE_STEREO_EYE_LEFT;
+ } else if (!strcasecmp("PassiveRight", value)) {
+ mode->passive_stereo_eye = PASSIVE_STEREO_EYE_RIGHT;
+ }
+ }
+
+} /* apply_mode_attribute_token() */
+
+
+
/** mode_parse() *****************************************************
@@ -441,5 +471,6 @@ static nvModeLinePtr modeline_parse(nvDisplayPtr display,
*
- * "mode_name +X+Y @WxH"
+ * "mode_name +X+Y @WxH {token=value, ...}"
*
**/
+
nvModePtr mode_parse(nvDisplayPtr display, const char *mode_str)
@@ -486,3 +517,3 @@ nvModePtr mode_parse(nvDisplayPtr display, const char *mode_str)
"display device '%s' in modeline '%s'.",
- mode_name, display->name, mode_str);
+ mode_name, display->logName, mode_str);
}
@@ -520,4 +551,25 @@ nvModePtr mode_parse(nvDisplayPtr display, const char *mode_str)
+ /* Read extra params */
+ else if (*str == '{') {
+ const char *end;
+ char *tmp;
+ str++;
+
+ end = strchr(str, '}');
+ if (!end) goto fail;
+
+ /* Dupe the string so we can parse it properly */
+ tmp = nvstrndup(str, (size_t)(end-str));
+ if (!tmp) goto fail;
+
+ parse_token_value_pairs(tmp, apply_mode_attribute_token, mode);
+ free(tmp);
+ if (end && (*end == '}')) {
+ str = ++end;
+ }
+ }
+
/* Mode parse error - Ack! */
else {
+ nv_error_msg("Unknown mode token: %s", str);
str = NULL;
@@ -569,6 +621,9 @@ static gchar *mode_get_str(nvModePtr mode, int be_generic)
gchar *tmp;
-
+ gchar *flags_str;
+ nvDisplayPtr display = mode->display;
+ nvScreenPtr screen;
+ nvGpuPtr gpu;
/* Make sure the mode has everything it needs to be displayed */
- if (!mode || !mode->display || !mode->display->gpu || !mode->metamode) {
+ if (!mode || !mode->metamode || !display) {
return NULL;
@@ -576,3 +631,2 @@ static gchar *mode_get_str(nvModePtr mode, int be_generic)
-
/* Don't display dummy modes */
@@ -582,29 +636,12 @@ static gchar *mode_get_str(nvModePtr mode, int be_generic)
+ screen = display->screen;
+ gpu = display->gpu;
+ if (!screen || !gpu) {
+ return NULL;
+ }
- /* Only one display, be very generic (no 'CRT:' in metamode) */
- if (be_generic && mode->display->gpu->num_displays == 1) {
- mode_str = g_strdup("");
-
- /* If there's more than one CRT/DFP/TV, we can't be generic. */
- } else {
- int generic = be_generic;
-
- if ((mode->display->device_mask & 0x000000FF) &&
- (mode->display->device_mask !=
- (mode->display->gpu->connected_displays & 0x000000FF))) {
- generic = 0;
- }
- if ((mode->display->device_mask & 0x0000FF00) &&
- (mode->display->device_mask !=
- (mode->display->gpu->connected_displays & 0x0000FF00))) {
- generic = 0;
- }
- if ((mode->display->device_mask & 0x00FF0000) &&
- (mode->display->device_mask !=
- (mode->display->gpu->connected_displays & 0x00FF0000))) {
- generic = 0;
- }
-
- /* Get the display type */
- tmp = display_get_type_str(mode->display->device_mask, generic);
+ /* Pick a suitable display name qualifier */
+ mode_str = display_pick_config_name(display, be_generic);
+ if (mode_str[0] != '\0') {
+ tmp = mode_str;
mode_str = g_strconcat(tmp, ": ", NULL);
@@ -665,2 +702,38 @@ static gchar *mode_get_str(nvModePtr mode, int be_generic)
+ /* Mode Flags */
+ flags_str = NULL;
+
+ /* Passive Stereo Eye */
+ if (screen->stereo_supported && screen->stereo == 4) {
+ const char *eye;
+
+ switch (mode->passive_stereo_eye) {
+ case PASSIVE_STEREO_EYE_LEFT:
+ eye = "PassiveLeft";
+ break;
+ case PASSIVE_STEREO_EYE_RIGHT:
+ eye = "PassiveRight";
+ break;
+ case 0:
+ default:
+ eye = NULL;
+ break;
+ }
+
+ if (eye) {
+ tmp = g_strdup_printf("%s, stereo=%s", (flags_str ? flags_str : ""), eye);
+ g_free(flags_str);
+ flags_str = tmp;
+ }
+ }
+
+ if (flags_str) {
+ tmp = g_strdup_printf("%s {%s}",
+ mode_str,
+ flags_str+2 // Skip the first comma and whitespace
+ );
+ g_free(mode_str);
+ mode_str = tmp;
+ }
+
return mode_str;
@@ -677,52 +750,63 @@ static gchar *mode_get_str(nvModePtr mode, int be_generic)
-/** display_get_type_str() *******************************************
+/** display_names_match() ********************************************
*
- * Returns the type name of a display (CRT, CRT-1, DFP ..)
- *
- * If 'generic' is set to 1, then a generic version of the name is
- * returned.
+ * Determines if two (display) names are the same. Returns FALSE if
+ * either name is NULL.
*
**/
-gchar *display_get_type_str(unsigned int device_mask, int be_generic)
+
+static Bool display_names_match(const char *name1, const char *name2)
{
- unsigned int bit = 0;
- int num;
- gchar *name = NULL;
- gchar *type_name;
+ if (!name1 || !name2) {
+ return FALSE;
+ }
+ return (strcasecmp(name1, name2) == 0) ? TRUE : FALSE;
+}
- /* Get the generic type name of the display */
- if (device_mask & 0x000000FF) {
- name = g_strdup("CRT");
- bit = (device_mask & 0x000000FF);
- } else if (device_mask & 0x0000FF00) {
- name = g_strdup("TV");
- bit = (device_mask & 0x0000FF00) >> 8;
- } else if (device_mask & 0x00FF0000) {
- name = g_strdup("DFP");
- bit = (device_mask & 0x00FF0000) >> 16;
- }
+/** display_pick_config_name() ***************************************
+ *
+ * Returns one of the display's names to be used for writing
+ * configuration.
+ *
+ * If 'generic' is TRUE, then the most generic name possible is
+ * returned. This depends on the current existence of other display
+ * devices, and the name returned here will not collide with the name
+ * of other display devices.
+ *
+ **/
+static gchar *display_pick_config_name(nvDisplayPtr display, int be_generic)
+{
+ nvDisplayPtr other;
- if (be_generic || !name) {
- return name;
+ /* Be specific */
+ if (!be_generic) {
+ goto return_specific;
}
- /* Add the specific display number to the name */
- num = 0;
- while (bit) {
- num++;
- bit >>= 1;
- }
- if (num) {
- num--;
+ /* Only one display, so no need for a qualifier */
+ if (display->gpu->num_displays == 1) {
+ return g_strdup("");
}
- type_name = g_strdup_printf("%s-%d", name, num);
- g_free(name);
+ /* Find the best generic name possible. If any display connected to the
+ * GPU has the same typeBaseName, then return the typeIdName instead
+ */
+ for (other = display->gpu->displays; other; other = other->next_on_gpu) {
+ if (other == display) continue;
+ if (strcmp(other->typeBaseName, display->typeBaseName) == 0) {
+ goto return_specific;
+ }
+ }
- return type_name;
+ /* No other display device on the GPU shares the same type basename,
+ * so we can use it
+ */
+ return g_strdup(display->typeBaseName);
-} /* display_get_type_str() */
+ return_specific:
+ return g_strdup(display->typeIdName);
+}
@@ -898,5 +982,5 @@ Bool display_add_modelines_from_server(nvDisplayPtr display, gchar **err_str)
- ret = NvCtrlGetAttribute(display->gpu->handle,
+ ret = NvCtrlGetAttribute(display->handle,
NV_CTRL_ATTR_NV_MAJOR_VERSION, &major);
- ret1 = NvCtrlGetAttribute(display->gpu->handle,
+ ret1 = NvCtrlGetAttribute(display->handle,
NV_CTRL_ATTR_NV_MINOR_VERSION, &minor);
@@ -914,4 +998,3 @@ Bool display_add_modelines_from_server(nvDisplayPtr display, gchar **err_str)
/* Get the validated modelines for the display */
- ret = NvCtrlGetBinaryAttribute(display->gpu->handle,
- display->device_mask,
+ ret = NvCtrlGetBinaryAttribute(display->handle, 0,
NV_CTRL_BINARY_DATA_MODELINES,
@@ -920,7 +1003,5 @@ Bool display_add_modelines_from_server(nvDisplayPtr display, gchar **err_str)
*err_str = g_strdup_printf("Failed to query modelines of display "
- "device 0x%08x '%s'\nconnected to "
- "GPU-%d '%s'.",
- display->device_mask, display->name,
- NvCtrlGetTargetId(display->gpu->handle),
- display->gpu->name);
+ "device %d '%s'.",
+ NvCtrlGetTargetId(display->handle),
+ display->logName);
nv_error_msg(*err_str);
@@ -938,8 +1019,5 @@ Bool display_add_modelines_from_server(nvDisplayPtr display, gchar **err_str)
"modeline of display device\n"
- "0x%08x '%s' connected to GPU-%d "
- "'%s':\n\n%s",
- display->device_mask,
- display->name,
- NvCtrlGetTargetId(display->gpu->handle),
- display->gpu->name,
+ "%d '%s' :\n\n%s",
+ NvCtrlGetTargetId(display->handle),
+ display->logName,
str);
@@ -1032,3 +1110,9 @@ static void display_free(nvDisplayPtr display)
display_remove_modelines(display);
- XFree(display->name);
+ XFree(display->logName);
+ XFree(display->typeBaseName);
+ XFree(display->typeIdName);
+ XFree(display->dpGuidName);
+ XFree(display->edidHashName);
+ XFree(display->targetIdName);
+ XFree(display->randrName);
free(display);
@@ -1042,3 +1126,3 @@ static void display_free(nvDisplayPtr display)
/*****************************************************************************/
-/** METAMODE FUNCTIONS *******************************************************/
+/** SCREEN FUNCTIONS *********************************************************/
/*****************************************************************************/
@@ -1046,7 +1130,54 @@ static void display_free(nvDisplayPtr display)
+/** screen_find_named_display() **************************************
+ *
+ * Finds a display named 'display_name' in the list of displays on the
+ * given screen, or NULL if no display matched 'display_name'.
+ *
+ **/
+static nvDisplayPtr screen_find_named_display(nvScreenPtr screen,
+ char *display_name)
+{
+ nvDisplayPtr display;
+ nvDisplayPtr possible_display = NULL;
+
+ if (!display_name) {
+ return NULL;
+ }
+
+ /* Look for exact matches */
+ for (display = screen->displays;
+ display;
+ display = display->next_in_screen) {
+
+ /* Look for an exact match */
+ if (display_names_match(display->typeIdName, display_name)) {
+ return display;
+ }
+ if (display_names_match(display->dpGuidName, display_name)) {
+ return display;
+ }
+ if (display_names_match(display->targetIdName, display_name)) {
+ return display;
+ }
+ if (display_names_match(display->randrName, display_name)) {
+ return display;
+ }
+
+ /* Allow matching to generic names, but only return these
+ * if no other name matched
+ */
+ if (!possible_display) {
+ if (display_names_match(display->typeBaseName, display_name)) {
+ possible_display = display;
+ }
+ if (display_names_match(display->edidHashName, display_name)) {
+ possible_display = display;
+ }
+ }
+ }
+
+ return possible_display;
+}
-/*****************************************************************************/
-/** SCREEN FUNCTIONS *********************************************************/
-/*****************************************************************************/
@@ -1116,3 +1247,2 @@ void screen_link_display(nvScreenPtr screen, nvDisplayPtr display)
}
- screen->displays_mask |= display->device_mask;
screen->num_displays++;
@@ -1149,3 +1279,2 @@ void screen_unlink_display(nvDisplayPtr display)
}
- screen->displays_mask &= ~(display->device_mask);
screen->num_displays--;
@@ -1349,4 +1478,4 @@ static Bool screen_add_metamode(nvScreenPtr screen, const char *metamode_str,
nvModePtr mode;
- unsigned int device_mask;
nvDisplayPtr display;
+ unsigned int display_id;
const char *orig_mode_str = parse_skip_whitespace(mode_str_itr);
@@ -1354,9 +1483,9 @@ static Bool screen_add_metamode(nvScreenPtr screen, const char *metamode_str,
- /* Parse the display device bitmask from the name */
- mode_str = parse_read_display_name(mode_str_itr, &device_mask);
+ /* Parse the display device (NV-CONTROL target) id from the name */
+ mode_str = parse_read_display_id(mode_str_itr, &display_id);
if (!mode_str) {
nv_warning_msg("Failed to read a display device name on screen %d "
- "(on GPU-%d)\nwhile parsing metamode:\n\n'%s'",
+ "while parsing metamode:\n\n'%s'",
screen->scrnum,
- NvCtrlGetTargetId(screen->gpu->handle),
+
orig_mode_str);
@@ -1365,10 +1494,10 @@ static Bool screen_add_metamode(nvScreenPtr screen, const char *metamode_str,
- /* Match device bitmask to an existing display */
- display = gpu_get_display(screen->gpu, device_mask);
+ /* Match device id to an existing display */
+ display = layout_get_display(screen->layout, display_id);
if (!display) {
- nv_warning_msg("Failed to find display device 0x%08x on screen %d "
- "(on GPU-%d)\nwhile parsing metamode:\n\n'%s'",
- device_mask,
+ nv_warning_msg("Failed to find display device %d on screen %d "
+ "while parsing metamode:\n\n'%s'",
+ display_id,
screen->scrnum,
- NvCtrlGetTargetId(screen->gpu->handle),
+
orig_mode_str);
@@ -1380,6 +1509,6 @@ static Bool screen_add_metamode(nvScreenPtr screen, const char *metamode_str,
if (!mode) {
- nv_warning_msg("Failed to parse mode '%s'\non screen %d (on GPU-%d)"
- "\nfrom metamode:\n\n'%s'",
- mode_str, screen->scrnum,
- NvCtrlGetTargetId(screen->gpu->handle),
+ nv_warning_msg("Failed to parse mode '%s'\non screen %d\n"
+ "from metamode:\n\n'%s'",
+ mode_str,
+ screen->scrnum,
orig_mode_str);
@@ -1514,3 +1643,3 @@ static Bool screen_check_metamodes(nvScreenPtr screen)
**/
-void screen_assign_dummy_metamode_positions(nvScreenPtr screen)
+static void screen_assign_dummy_metamode_positions(nvScreenPtr screen)
{
@@ -1567,3 +1696,3 @@ static Bool screen_add_metamodes(nvScreenPtr screen, gchar **err_str)
ret = NvCtrlGetBinaryAttribute(screen->handle, 0,
- NV_CTRL_BINARY_DATA_METAMODES,
+ NV_CTRL_BINARY_DATA_METAMODES_VERSION_2,
(unsigned char **)&metamode_strs,
@@ -1582,3 +1711,3 @@ static Bool screen_add_metamodes(nvScreenPtr screen, gchar **err_str)
ret = NvCtrlGetStringAttribute(screen->handle,
- NV_CTRL_STRING_CURRENT_METAMODE,
+ NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2,
&cur_metamode_str);
@@ -1702,22 +1831,2 @@ static void screen_free(nvScreenPtr screen)
-/** gpu_get_display() ************************************************
- *
- * Returns the display with the matching device_mask or NULL if not
- * found.
- *
- **/
-nvDisplayPtr gpu_get_display(nvGpuPtr gpu, unsigned int device_mask)
-{
- nvDisplayPtr display;
-
- for (display = gpu->displays; display; display = display->next_on_gpu) {
- if (display->device_mask == device_mask) return display;
- }
-
- return NULL;
-
-} /* gpu_get_display() */
-
-
-
/** gpu_remove_and_free_display() ************************************
@@ -1758,3 +1867,2 @@ void gpu_remove_and_free_display(nvDisplayPtr display)
}
- gpu->connected_displays &= ~(display->device_mask);
gpu->num_displays--;
@@ -1779,3 +1887,2 @@ static void gpu_remove_displays(nvGpuPtr gpu)
}
- gpu->connected_displays = 0;
@@ -1810,3 +1917,2 @@ static void gpu_add_display(nvGpuPtr gpu, nvDisplayPtr display)
}
- gpu->connected_displays |= display->device_mask;
gpu->num_displays++;
@@ -1859,5 +1965,61 @@ static Bool gpu_query_gvo_mode_info(nvGpuPtr gpu, int mode_id, int table_idx)
+
+/** display_add_name_from_server() ***********************************
+ *
+ * Queries and adds the NV-CONTROL name to the display device.
+ *
+ **/
+
+static const struct DisplayNameInfoRec {
+ int attr;
+ Bool canBeNull;
+ const char *nameDescription;
+ size_t offset;
+} DisplayNamesTable[] = {
+ { NV_CTRL_STRING_DISPLAY_DEVICE_NAME, FALSE, "Log Name",
+ offsetof(nvDisplay, logName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME, FALSE, "Type Base Name",
+ offsetof(nvDisplay, typeBaseName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID, FALSE, "Type ID",
+ offsetof(nvDisplay, typeIdName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_DP_GUID, TRUE, "DP GUID Name",
+ offsetof(nvDisplay, dpGuidName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH, TRUE, "EDID Hash Name",
+ offsetof(nvDisplay, edidHashName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX, FALSE, "Target Index Name",
+ offsetof(nvDisplay, targetIdName) },
+ { NV_CTRL_STRING_DISPLAY_NAME_RANDR, FALSE, "RandR Name",
+ offsetof(nvDisplay, randrName) },
+};
+
+static Bool display_add_name_from_server(nvDisplayPtr display,
+ const struct DisplayNameInfoRec *displayNameInfo,
+ gchar **err_str)
+{
+ ReturnStatus ret;
+ char *str;
+
+ ret = NvCtrlGetStringAttribute(display->handle,
+ displayNameInfo->attr,
+ &str);
+ if (ret == NvCtrlSuccess) {
+ *((char **)(((char *)display) + displayNameInfo->offset)) = str;
+
+ } else if (!displayNameInfo->canBeNull) {
+ *err_str = g_strdup_printf("Failed to query name '%s' of display "
+ "device DPY-%d.",
+ displayNameInfo->nameDescription,
+ NvCtrlGetTargetId(display->handle));
+ nv_error_msg(*err_str);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+
/** gpu_add_display_from_server() ************************************
*
- * Adds the display with the device mask given to the GPU structure.
+ * Adds the display with the device id given to the GPU structure.
*
@@ -1865,3 +2027,3 @@ static Bool gpu_query_gvo_mode_info(nvGpuPtr gpu, int mode_id, int table_idx)
nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
- unsigned int device_mask,
+ unsigned int display_id,
gchar **err_str)
@@ -1870,2 +2032,3 @@ nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
nvDisplayPtr display;
+ int i;
@@ -1877,4 +2040,16 @@ nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
- /* Init the display structure */
- display->device_mask = device_mask;
+ /* Make an NV-CONTROL handle to talk to the display */
+ display->handle =
+ NvCtrlAttributeInit(NvCtrlGetDisplayPtr(gpu->handle),
+ NV_CTRL_TARGET_TYPE_DISPLAY,
+ display_id,
+ NV_CTRL_ATTRIBUTES_NV_CONTROL_SUBSYSTEM);
+ if (!display->handle) {
+ *err_str = g_strdup_printf("Failed to create NV-CONTROL handle for\n"
+ "display %d (on GPU-%d).",
+ display_id,
+ NvCtrlGetTargetId(gpu->handle));
+ nv_error_msg(*err_str);
+ goto fail;
+ }
@@ -1882,13 +2057,7 @@ nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
/* Query the display information */
- ret = NvCtrlGetStringDisplayAttribute(gpu->handle,
- device_mask,
- NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
- &(display->name));
- if (ret != NvCtrlSuccess) {
- *err_str = g_strdup_printf("Failed to query name of display device\n"
- "0x%08x connected to GPU-%d '%s'.",
- device_mask, NvCtrlGetTargetId(gpu->handle),
- gpu->name);
- nv_error_msg(*err_str);
- goto fail;
+ for (i = 0; i < ARRAY_LEN(DisplayNamesTable); i++) {
+ if (!display_add_name_from_server(display,
+ DisplayNamesTable + i, err_str)) {
+ goto fail;
+ }
}
@@ -1897,10 +2066,10 @@ nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
/* Query if this display is an SDI display */
- ret = NvCtrlGetDisplayAttribute(gpu->handle, device_mask,
- NV_CTRL_IS_GVO_DISPLAY,
- &(display->is_sdi));
+ ret = NvCtrlGetAttribute(display->handle,
+ NV_CTRL_IS_GVO_DISPLAY,
+ &(display->is_sdi));
if (ret != NvCtrlSuccess) {
nv_warning_msg("Failed to query if display device\n"
- "0x%08x connected to GPU-%d '%s' is an\n"
+ "%d connected to GPU-%d '%s' is an\n"
"SDI device.",
- device_mask, NvCtrlGetTargetId(gpu->handle),
+ display_id, NvCtrlGetTargetId(gpu->handle),
gpu->name);
@@ -1997,5 +2166,5 @@ nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
if (!display_add_modelines_from_server(display, err_str)) {
- nv_warning_msg("Failed to add modelines to display device 0x%08x "
+ nv_warning_msg("Failed to add modelines to display device %d "
"'%s'\nconnected to GPU-%d '%s'.",
- device_mask, display->name,
+ display_id, display->logName,
NvCtrlGetTargetId(gpu->handle), gpu->name);
@@ -2025,3 +2194,5 @@ static Bool gpu_add_displays_from_server(nvGpuPtr gpu, gchar **err_str)
ReturnStatus ret;
- unsigned int mask;
+ int *pData;
+ int len;
+ int i;
@@ -2031,10 +2202,10 @@ static Bool gpu_add_displays_from_server(nvGpuPtr gpu, gchar **err_str)
-
- /* Get the list of connected displays */
- ret = NvCtrlGetAttribute(gpu->handle, NV_CTRL_CONNECTED_DISPLAYS,
- (int *)&(gpu->connected_displays));
+ /* Get list of displays connected to this GPU */
+ ret = NvCtrlGetBinaryAttribute(gpu->handle, 0,
+ NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU,
+ (unsigned char **)(&pData), &len);
if (ret != NvCtrlSuccess) {
- *err_str = g_strdup_printf("Failed to query connected display "
- "devices on GPU-%d '%s'.",
- NvCtrlGetTargetId(gpu), gpu->name);
+ *err_str = g_strdup_printf("Failed to query list of displays \n"
+ "connected to GPU-%d '%s'.",
+ NvCtrlGetTargetId(gpu->handle), gpu->name);
nv_error_msg(*err_str);
@@ -2043,12 +2214,15 @@ static Bool gpu_add_displays_from_server(nvGpuPtr gpu, gchar **err_str)
-
/* Add each connected display */
- for (mask = 1; mask; mask <<= 1) {
+ for (i = 0; i < pData[0]; i++) {
+ if (!gpu_add_display_from_server(gpu, pData[i+1], err_str)) {
+ nv_warning_msg("Failed to add display device %d to GPU-%d "
+
+
+
- if (!(mask & (gpu->connected_displays))) continue;
- if (!gpu_add_display_from_server(gpu, mask, err_str)) {
- nv_warning_msg("Failed to add display device 0x%08x to GPU-%d "
"'%s'.",
- mask, NvCtrlGetTargetId(gpu->handle), gpu->name);
+ pData[i+1], NvCtrlGetTargetId(gpu->handle),
+ gpu->name);
+ XFree(pData);
goto fail;
@@ -2057,2 +2231,3 @@ static Bool gpu_add_displays_from_server(nvGpuPtr gpu, gchar **err_str)
+ XFree(pData);
return TRUE;
@@ -2510,4 +2685,4 @@ static Bool layout_add_screen_from_server(nvLayoutPtr layout,
screen_id,
- NV_CTRL_ATTRIBUTES_NV_CONTROL_SUBSYSTEM |
- NV_CTRL_ATTRIBUTES_XRANDR_SUBSYSTEM);
+ NV_CTRL_ATTRIBUTES_NV_CONTROL_SUBSYSTEM);
+
if (!screen->handle) {
@@ -2521,2 +2696,11 @@ static Bool layout_add_screen_from_server(nvLayoutPtr layout,
+ /* Query the current stereo mode */
+ ret = NvCtrlGetAttribute(screen->handle, NV_CTRL_STEREO, &val);
+ if (ret == NvCtrlSuccess) {
+ screen->stereo_supported = TRUE;
+ screen->stereo = val;
+ } else {
+ screen->stereo_supported = FALSE;
+ }
+
/* See if the screen supports dynamic twinview */
@@ -2597,16 +2781,23 @@ static Bool layout_add_screen_from_server(nvLayoutPtr layout,
screen->primaryDisplay = NULL;
- ret = NvCtrlGetStringDisplayAttribute
- (screen->handle,
- 0,
- NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER,
- &primary_str);
-
- if (ret == NvCtrlSuccess) {
- unsigned int device_mask;
-
- /* Parse the device mask */
- parse_read_display_name(primary_str, &device_mask);
+ ret = NvCtrlGetStringAttribute(screen->handle,
+ NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER,
+ &primary_str);
+
+ if (ret == NvCtrlSuccess && primary_str) {
+ char *str;
+
+ /* The TwinView Xinerana Info Order string may be a comma-separated
+ * list of display device names, though we could add full support
+ * for ordering these, just keep track of a single display here.
+ */
+ str = strchr(primary_str, ',');
+ if (!str) {
+ str = nvstrdup(primary_str);
+ } else {
+ str = nvstrndup(primary_str, str-primary_str);
+ }
+ XFree(primary_str);
- /* Find the matching primary display */
- screen->primaryDisplay = gpu_get_display(screen->gpu, device_mask);
+ screen->primaryDisplay = screen_find_named_display(screen, str);
+ nvfree(str);
}
@@ -2726,3 +2917,3 @@ nvLayoutPtr layout_load_from_server(NvCtrlAttributeHandle *handle,
ReturnStatus ret;
-
+ int tmp;
@@ -2746,2 +2937,15 @@ nvLayoutPtr layout_load_from_server(NvCtrlAttributeHandle *handle,
+ /* does the driver know about NV_CTRL_CURRENT_METAMODE_ID? */
+ ret = NvCtrlGetAttribute(handle, NV_CTRL_CURRENT_METAMODE_ID, &tmp);
+ if (ret != NvCtrlSuccess) {
+ char *displayName = NvCtrlGetDisplayName(handle);
+ *err_str = g_strdup_printf("The NVIDIA X driver on %s is not new\n"
+ "enough to support the nvidia-settings "
+ "Display Configuration page.",
+ displayName ? displayName : "this X server");
+ free(displayName);
+ nv_warning_msg(*err_str);
+ goto fail;
+ }
+
if (!layout_add_gpus_from_server(layout, err_str)) {
@@ -2809,2 +3013,31 @@ nvScreenPtr layout_get_a_screen(nvLayoutPtr layout, nvGpuPtr preferred_gpu)
+/** layout_get_display() *********************************************
+ *
+ * Returns the display with the matching display id or NULL if not
+ * found.
+ *
+ **/
+nvDisplayPtr layout_get_display(const nvLayoutPtr layout,
+ const unsigned int display_id)
+{
+ nvGpuPtr gpu;
+ nvDisplayPtr display;
+
+ for (gpu = layout->gpus; gpu; gpu = gpu->next_in_layout) {
+ for (display = gpu->displays;
+ display;
+ display = display->next_on_gpu) {
+
+ if (NvCtrlGetTargetId(display->handle) == display_id) {
+ return display;
+ }
+ }
+ }
+
+ return NULL;
+
+} /* layout_get_display() */
+
+
+
diff --git a/src/gtk+-2.x/ctkdisplayconfig-utils.h b/src/gtk+-2.x/ctkdisplayconfig-utils.h
index a9cc38c..d2b663a 100644
--- a/src/gtk+-2.x/ctkdisplayconfig-utils.h
+++ b/src/gtk+-2.x/ctkdisplayconfig-utils.h
@@ -61,3 +61,2 @@ void modeline_free(nvModeLinePtr m);
-gchar * display_get_type_str(unsigned int device_mask, int be_generic);
int display_find_closest_mode_matching_modeline(nvDisplayPtr display,
@@ -84,6 +83,5 @@ gchar * screen_get_metamode_str(nvScreenPtr screen, int metamode_idx,
-nvDisplayPtr gpu_get_display(nvGpuPtr gpu, unsigned int device_mask);
void gpu_remove_and_free_display(nvDisplayPtr display);
nvDisplayPtr gpu_add_display_from_server(nvGpuPtr gpu,
- unsigned int device_mask,
+ unsigned int display_id,
gchar **err_str);
@@ -100,2 +98,4 @@ nvLayoutPtr layout_load_from_server(NvCtrlAttributeHandle *handle,
nvScreenPtr layout_get_a_screen(nvLayoutPtr layout, nvGpuPtr preferred_gpu);
+nvDisplayPtr layout_get_display(const nvLayoutPtr layout,
+ const unsigned int display_id);
void layout_remove_and_free_screen(nvScreenPtr screen);
diff --git a/src/gtk+-2.x/ctkdisplayconfig.c b/src/gtk+-2.x/ctkdisplayconfig.c
index 96fd5ff..26ca46e 100644
--- a/src/gtk+-2.x/ctkdisplayconfig.c
+++ b/src/gtk+-2.x/ctkdisplayconfig.c
@@ -50,2 +50,8 @@ static void setup_layout_frame(CtkDisplayConfig *ctk_object);
+static void setup_selected_item_dropdown(CtkDisplayConfig *ctk_object);
+
+static void selected_item_changed(GtkWidget *widget, gpointer user_data);
+
+static void update_selected_page(CtkDisplayConfig *ctk_object);
+
static void setup_display_page(CtkDisplayConfig *ctk_object);
@@ -55,3 +61,4 @@ static void display_resolution_changed(GtkWidget *widget, gpointer user_data);
static void display_refresh_changed(GtkWidget *widget, gpointer user_data);
-static void display_modelname_changed(GtkWidget *widget, gpointer user_data);
+
+static void display_stereo_changed(GtkWidget *widget, gpointer user_data);
@@ -73,2 +80,4 @@ static void screen_depth_changed(GtkWidget *widget, gpointer user_data);
+static void screen_stereo_changed(GtkWidget *widget, gpointer user_data);
+
static void screen_position_type_changed(GtkWidget *widget, gpointer user_data);
@@ -159,2 +168,5 @@ static const char * __layout_xinerama_button_help =
+static const char * __selected_item_help =
+"The Selection drop-down allows you to pick which X screen or display device "
+"to configure.";
@@ -162,5 +174,2 @@ static const char * __layout_xinerama_button_help =
-static const char * __dpy_model_help =
-"The Display drop-down allows you to select a desired display device.";
-
static const char * __dpy_configuration_mnu_help =
@@ -178,2 +187,7 @@ static const char * __dpy_refresh_mnu_help =
+static const char * __dpy_stereo_help =
+"The Display Passive Stereo Eye drop-down allows you to select a desired "
+"stereo eye the display should output when Passive Stereo (Mode 4) is "
+"selected enabled.";
+
static const char * __dpy_position_type_help =
@@ -215,2 +229,6 @@ static const char * __screen_depth_help =
+static const char * __screen_stereo_help =
+"The Stereo Mode drop-down allows setting of the stereo mode for the selected "
+"screen; changing this option will require restarting your X server.";
+
static const char * __screen_position_type_help =
@@ -388,7 +406,2 @@ static void register_layout_events(CtkDisplayConfig *ctk_object)
g_signal_connect(G_OBJECT(screen->ctk_event),
- CTK_EVENT_NAME(NV_CTRL_ASSOCIATED_DISPLAY_DEVICES),
- G_CALLBACK(display_config_attribute_changed),
- (gpointer) ctk_object);
-
- g_signal_connect(G_OBJECT(screen->ctk_event),
CTK_EVENT_NAME(NV_CTRL_STRING_MOVE_METAMODE),
@@ -499,3 +512,3 @@ static void consolidate_xinerama(CtkDisplayConfig *ctk_object,
*
- * Updates the apply button's sensitvity (if possible)
+ * Updates the apply button's sensitivity
*
@@ -503,25 +516,4 @@ static void consolidate_xinerama(CtkDisplayConfig *ctk_object,
-void update_btn_apply(CtkDisplayConfig *ctk_object, Bool sensitive)
+static void update_btn_apply(CtkDisplayConfig *ctk_object, Bool sensitive)
{
- Bool xrandr_available = FALSE;
- nvLayoutPtr layout = ctk_object->layout;
- nvScreenPtr screen;
-
-
- if (sensitive) {
- /* If none of the screens support XRandR, we can't apply */
- for (screen = layout->screens;
- screen;
- screen = screen->next_in_layout) {
- if (NvCtrlGetXrandrEventBase(screen->handle) >= 0) {
- xrandr_available = TRUE;
- break;
- }
- }
-
- if (!xrandr_available && !ctk_object->primary_display_changed) {
- sensitive = FALSE;
- }
- }
-
gtk_widget_set_sensitive(ctk_object->btn_apply, sensitive);
@@ -699,3 +691,3 @@ static int generate_xconf_metamode_str(CtkDisplayConfig *ctk_object,
GTK_BUTTONS_NONE,
- msg);
+ "%s", msg);
@@ -876,2 +868,3 @@ GType ctk_display_config_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -894,3 +887,3 @@ GType ctk_display_config_get_type(void)
-GtkWidget * create_validation_dialog(CtkDisplayConfig *ctk_object)
+static GtkWidget * create_validation_dialog(CtkDisplayConfig *ctk_object)
{
@@ -991,3 +984,3 @@ GtkWidget * create_validation_dialog(CtkDisplayConfig *ctk_object)
-GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
+static GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
{
@@ -1015,3 +1008,3 @@ GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
ctk_object->dlg_validation_apply = dialog;
-
+
/* Main horizontal box */
@@ -1026,3 +1019,3 @@ GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 5);
-
+
/* Main vertical box */
@@ -1030,3 +1023,3 @@ GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
-
+
/* Pack the main message */
@@ -1049,3 +1042,3 @@ GtkWidget * create_validation_apply_dialog(CtkDisplayConfig *ctk_object)
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
-
+
/* Action Buttons */
@@ -1131,2 +1124,20 @@ static void screen_size_changed(GdkScreen *screen,
+/** update_gui() *****************************************************
+ *
+ * Sync state of all widgets to reflect current configuration
+ *
+ **/
+
+static void update_gui(CtkDisplayConfig *ctk_object)
+{
+ setup_display_page(ctk_object);
+ setup_screen_page(ctk_object);
+ setup_selected_item_dropdown(ctk_object);
+ update_selected_page(ctk_object);
+ setup_layout_frame(ctk_object);
+
+} /* update_gui() */
+
+
+
/** ctk_display_config_new() *****************************************
@@ -1145,3 +1156,2 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
GtkWidget *frame;
- GtkWidget *notebook;
GtkWidget *hbox;
@@ -1151,4 +1161,8 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
GtkWidget *eventbox;
+ GtkWidget *hseparator;
GtkRequisition req;
+ GSList *labels = NULL;
+ GSList *slitem;
+ gint max_width;
@@ -1288,8 +1302,8 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
- /* Display model name */
- ctk_object->mnu_display_model = gtk_option_menu_new();
- ctk_config_set_tooltip(ctk_config, ctk_object->mnu_display_model,
- __dpy_model_help);
- g_signal_connect(G_OBJECT(ctk_object->mnu_display_model), "changed",
- G_CALLBACK(display_modelname_changed),
+ /* Selected display/X screen dropdown */
+ ctk_object->mnu_selected_item = gtk_option_menu_new();
+ ctk_config_set_tooltip(ctk_config, ctk_object->mnu_selected_item,
+ __selected_item_help);
+ g_signal_connect(G_OBJECT(ctk_object->mnu_selected_item), "changed",
+ G_CALLBACK(selected_item_changed),
(gpointer) ctk_object);
@@ -1354,2 +1368,19 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
+ /* Display passive stereo eye dropdown */
+ ctk_object->mnu_display_stereo = gtk_option_menu_new();
+ menu = gtk_menu_new();
+ menu_item = gtk_menu_item_new_with_label("None");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Left");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Right");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ gtk_option_menu_set_menu
+ (GTK_OPTION_MENU(ctk_object->mnu_display_stereo), menu);
+ ctk_config_set_tooltip(ctk_config, ctk_object->mnu_display_stereo,
+ __dpy_stereo_help);
+ g_signal_connect(G_OBJECT(ctk_object->mnu_display_stereo),
+ "changed", G_CALLBACK(display_stereo_changed),
+ (gpointer) ctk_object);
+
/* Display Position Type (Absolute/Relative Menu) */
@@ -1406,7 +1437,2 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
- /* X screen number */
- ctk_object->txt_screen_num = gtk_label_new("");
- gtk_label_set_selectable(GTK_LABEL(ctk_object->txt_screen_num), TRUE);
- gtk_misc_set_alignment(GTK_MISC(ctk_object->txt_screen_num), 0.0f, 0.5f);
-
/* X screen virtual size */
@@ -1431,2 +1457,37 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
+ /* Screen Stereo Mode */
+ ctk_object->mnu_screen_stereo = gtk_option_menu_new();
+ menu = gtk_menu_new();
+ menu_item = gtk_menu_item_new_with_label("Disabled");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("DCC Glasses");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("BlueLine Glasses");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Onboard (DIN)");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Passive Eye Per Display");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Vertical Interlaced");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Color Interleaved");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Horizontal Interlaced");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Checkerboard 3D DLP");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("Inverse Checkerboard 3D DLP");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("NVIDIA 3D Vision");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ menu_item = gtk_menu_item_new_with_label("NVIDIA 3D Vision Pro");
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ gtk_option_menu_set_menu
+ (GTK_OPTION_MENU(ctk_object->mnu_screen_stereo), menu);
+ ctk_config_set_tooltip(ctk_config, ctk_object->mnu_screen_stereo,
+ __screen_stereo_help);
+ g_signal_connect(G_OBJECT(ctk_object->mnu_screen_stereo),
+ "changed", G_CALLBACK(screen_stereo_changed),
+ (gpointer) ctk_object);
+
/* Screen Position Type (Absolute/Relative Menu) */
@@ -1601,10 +1662,2 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
-
-
- /****
- *
- * Pack the widgets
- *
- ***/
-
{ /* Layout section */
@@ -1626,8 +1679,14 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
}
-
- /* Panel for the notebook sections */
- notebook = gtk_notebook_new();
- ctk_object->notebook = notebook;
- gtk_box_pack_start(GTK_BOX(ctk_object), notebook, FALSE, FALSE, 0);
+
+ /* Selection */
+ label = gtk_label_new("Selection:");
+ labels = g_slist_append(labels, label);
+
+ hbox = gtk_hbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(ctk_object), hbox, FALSE, FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_selected_item,
+ TRUE, TRUE, 0);
+
@@ -1635,39 +1694,23 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
{ /* Display page */
- /* Generate the major vbox for the display section */
vbox = gtk_vbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(ctk_object), vbox, FALSE, FALSE, 0);
ctk_object->display_page = vbox;
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
/* Display Configuration */
- hbox = gtk_hbox_new(FALSE, 5);
- /* Pack widget into major vbox later.
- * Create it here so we can get its size */
label = gtk_label_new("Configuration:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_size_request(label, &req);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
- gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_display_config,
- TRUE, TRUE, 0);
- ctk_object->box_display_config = hbox;
+ labels = g_slist_append(labels, label);
- /* Display model name */
hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
- label = gtk_label_new("Model:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
- gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_display_model,
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_display_config,
TRUE, TRUE, 0);
-
- /* Pack the display configuration line */
- gtk_box_pack_start(GTK_BOX(vbox), ctk_object->box_display_config,
- FALSE, TRUE, 0);
+ ctk_object->box_display_config = hbox;
/* Display resolution and refresh dropdowns */
+ label = gtk_label_new("Resolution:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
- label = gtk_label_new("Resolution:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
@@ -1680,7 +1723,7 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
/* Modeline modename info */
+ label = gtk_label_new("Mode Name:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- label = gtk_label_new("Mode Name:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
@@ -1690,9 +1733,26 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
- /* Display positioning */
- label = gtk_label_new("Position:");
+ /*
+ * XXX Disabled until we have support for identifying and handling
+ * Stereo vs Composite incompatibility.
+ */
+ #if 0
+ /* Display passive stereo eye dropdown */
+ label = gtk_label_new("Stereo Eye:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_display_stereo,
+ TRUE, TRUE, 0);
+ ctk_object->box_display_stereo = hbox;
+ #else
+ ctk_object->box_display_stereo = NULL;
+ #endif
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
+ /* Display positioning */
+ label = gtk_label_new("Position:");
+ labels = g_slist_append(labels, label);
+ hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
@@ -1712,7 +1772,5 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
label = gtk_label_new("Panning:");
- hbox = gtk_hbox_new(FALSE, 5);
-
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
+ labels = g_slist_append(labels, label);
+ hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
@@ -1734,5 +1792,2 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
(gpointer) ctk_object);
-
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), ctk_object->chk_primary_display,
@@ -1747,27 +1802,15 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
} /* Display sub-section */
-
- { /* X screen page */
- /* Generate the major vbox for the display section */
+ { /* X screen page */
vbox = gtk_vbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(ctk_object), vbox, FALSE, FALSE, 0);
ctk_object->screen_page = vbox;
- gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
-
- /* X screen number */
- hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
- label = gtk_label_new("Screen Number:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_size_request(label, &req);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
- gtk_box_pack_start(GTK_BOX(hbox), ctk_object->txt_screen_num,
- TRUE, TRUE, 0);
/* X screen virtual size */
+ label = gtk_label_new("Virtual Size:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- label = gtk_label_new("Virtual Size:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
@@ -1778,7 +1821,7 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
/* X screen depth dropdown */
+ label = gtk_label_new("Color Depth:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- label = gtk_label_new("Color Depth:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
@@ -1788,8 +1831,27 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
- /* X screen positioning */
+ /*
+ * XXX Disabled until we have support for identifying and handling
+ * Stereo vs Composite incompatibility.
+ */
+ #if 0
+ /* X screen stereo dropdown */
+ label = gtk_label_new("Stereo Mode:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_object->mnu_screen_stereo,
+ TRUE, TRUE, 0);
+ ctk_object->box_screen_stereo = hbox;
+ #else
+ ctk_object->box_screen_stereo = NULL;
+ #endif
+
+ /* X screen positioning */
label = gtk_label_new("Position:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
+ labels = g_slist_append(labels, label);
+
+ hbox = gtk_hbox_new(FALSE, 5);
+ gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
@@ -1807,7 +1869,7 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
/* X screen metamode drop down & buttons */
+ label = gtk_label_new("MetaMode:");
+ labels = g_slist_append(labels, label);
+
hbox = gtk_hbox_new(FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- label = gtk_label_new("MetaMode:");
- gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
- gtk_widget_set_size_request(label, req.width, -1);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 5);
@@ -1828,7 +1890,30 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
} /* X screen sub-section */
-
-
+
+
+ /* Align all the configuration labels */
+ max_width = 0;
+ for (slitem = labels; slitem; slitem = slitem->next) {
+ label = slitem->data;
+ gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
+ gtk_widget_size_request(label, &req);
+ if (req.width > max_width) {
+ max_width = req.width;
+ }
+ }
+ for (slitem = labels; slitem; slitem = slitem->next) {
+ label = slitem->data;
+ gtk_widget_set_size_request(label, max_width, -1);
+ }
+ g_slist_free(labels);
+
+
{ /* Buttons */
hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(ctk_object), hbox, FALSE, FALSE, 0);
+ gtk_box_pack_end(GTK_BOX(ctk_object), hbox, FALSE, FALSE, 0);
+
+ gtk_box_pack_end(GTK_BOX(hbox), ctk_object->btn_save,
+ FALSE, FALSE, 0);
+
+ hbox = gtk_hbox_new(FALSE, 5);
+ gtk_box_pack_end(GTK_BOX(ctk_object), hbox, FALSE, FALSE, 0);
@@ -1843,7 +1928,4 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
- hbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(ctk_object), hbox, FALSE, FALSE, 0);
-
- gtk_box_pack_end(GTK_BOX(hbox), ctk_object->btn_save,
- FALSE, FALSE, 0);
+ hseparator = gtk_hseparator_new();
+ gtk_box_pack_end(GTK_BOX(ctk_object), hseparator, FALSE, TRUE, 5);
}
@@ -1886,7 +1968,3 @@ GtkWidget* ctk_display_config_new(NvCtrlAttributeHandle *handle,
-
- /* Setup the GUI */
- setup_layout_frame(ctk_object);
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ update_gui(ctk_object);
@@ -1941,3 +2019,4 @@ GtkTextBuffer *ctk_display_config_create_help(GtkTextTagTable *table,
"X screens are present.", __layout_xinerama_button_help);
-
+ ctk_help_heading(b, &i, "Selection");
+ ctk_help_para(b, &i, __selected_item_help);
@@ -1949,4 +2028,2 @@ GtkTextBuffer *ctk_display_config_create_help(GtkTextTagTable *table,
ctk_help_para(b, &i, "The Model name is the name of the display device.");
- ctk_help_heading(b, &i, "Select Display");
- ctk_help_para(b, &i, __dpy_model_help);
ctk_help_heading(b, &i, "Resolution");
@@ -2003,5 +2080,4 @@ GtkTextBuffer *ctk_display_config_create_help(GtkTextTagTable *table,
ctk_help_heading(b, &i, "Apply");
- ctk_help_para(b, &i, "%s Note that XRandR must be available to apply "
- "settings. Also note that even when XRandR is available, "
- "not all settings can be applied to an active X server; "
+ ctk_help_para(b, &i, "%s Note that not all settings can be applied to an "
+ "active X server; "
"these require restarting the X server after saving the "
@@ -2077,2 +2153,190 @@ static void setup_layout_frame(CtkDisplayConfig *ctk_object)
+/** update_selected_page() ***********************************************
+ *
+ * Makes sure the correct page (Display or X Screen) is selected based on
+ * the currently selected items.
+ *
+ **/
+
+static void update_selected_page(CtkDisplayConfig *ctk_object)
+{
+ nvDisplayPtr display = ctk_display_layout_get_selected_display
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+ nvScreenPtr screen = ctk_display_layout_get_selected_screen
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+
+ gtk_widget_hide(ctk_object->display_page);
+ gtk_widget_hide(ctk_object->screen_page);
+ if (display) {
+ gtk_widget_show(ctk_object->display_page);
+ } else if (screen) {
+ gtk_widget_show(ctk_object->screen_page);
+ }
+
+} /* update_selected_page() */
+
+
+
+/** generate_selected_item_dropdown() ************************************
+ *
+ * Drop down menu for selecting current display/X screen.
+ *
+ **/
+
+static GtkWidget* generate_selected_item_dropdown(CtkDisplayConfig *ctk_object,
+ nvDisplayPtr cur_display,
+ nvScreenPtr cur_screen,
+ int *cur_idx)
+{
+ GtkWidget *menu;
+ GtkWidget *menu_item;
+ nvLayoutPtr layout = ctk_object->layout;
+ nvGpuPtr gpu;
+ nvDisplayPtr display;
+ nvScreenPtr screen;
+ int idx;
+ char *str;
+ char *tmp;
+ gboolean show_gpu_info;
+
+ /* (Re)allocate the lookup table */
+
+ if (ctk_object->selected_item_table) {
+ free(ctk_object->selected_item_table);
+ }
+
+ ctk_object->selected_item_table_len = layout->num_screens;
+ for (gpu = layout->gpus; gpu; gpu = gpu->next_in_layout) {
+ ctk_object->selected_item_table_len += gpu->num_displays;
+ }
+
+ ctk_object->selected_item_table =
+ calloc(ctk_object->selected_item_table_len,
+ sizeof(SelectableItem));
+
+ if (!ctk_object->selected_item_table) {
+ ctk_object->selected_item_table_len = 0;
+ gtk_option_menu_remove_menu
+ (GTK_OPTION_MENU(ctk_object->mnu_selected_item));
+ gtk_widget_set_sensitive(ctk_object->mnu_selected_item, False);
+ return NULL;
+ }
+
+ /* Create the dropdown menu and fill the lookup table */
+
+ menu = gtk_menu_new();
+ idx = 0;
+ show_gpu_info = ((layout->num_gpus > 1) || ctk_object->advanced_mode) ? True : False;
+
+ /* Add X screens */
+ for (screen = layout->screens; screen; screen = screen->next_in_layout) {
+ if (!cur_display && (cur_screen == screen)) {
+ *cur_idx = idx;
+ }
+
+ str = g_strdup_printf("X screen %d", screen->scrnum);
+ if (show_gpu_info) {
+ tmp = str;
+ str = g_strdup_printf("%s (on GPU-%d)", tmp,
+ NvCtrlGetTargetId(screen->gpu->handle));
+ g_free(tmp);
+ }
+
+ menu_item = gtk_menu_item_new_with_label(str);
+ g_free(str);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ gtk_widget_show(menu_item);
+
+ ctk_object->selected_item_table[idx].type = SELECTABLE_ITEM_SCREEN;
+ ctk_object->selected_item_table[idx].u.screen = screen;
+ idx++;
+ }
+
+ /* Add displays */
+ for (gpu = layout->gpus; gpu; gpu = gpu->next_in_layout) {
+ for (display = gpu->displays;
+ display;
+ display = display->next_on_gpu) {
+ if (cur_display == display) {
+ *cur_idx = idx;
+ }
+ str = g_strdup_printf("%s (%s", display->logName,
+ display->typeIdName);
+ if (show_gpu_info) {
+ tmp = str;
+ str = g_strdup_printf("%s on GPU-%d", tmp,
+ NvCtrlGetTargetId(gpu->handle));
+ g_free(tmp);
+ }
+ tmp = str;
+ str = g_strdup_printf("%s)", tmp);
+ g_free(tmp);
+
+ menu_item = gtk_menu_item_new_with_label(str);
+ g_free(str);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
+ gtk_widget_show(menu_item);
+
+ ctk_object->selected_item_table[idx].type = SELECTABLE_ITEM_DISPLAY;
+ ctk_object->selected_item_table[idx].u.display = display;
+ idx++;
+ }
+ }
+
+ return menu;
+
+} /* generate_selected_item_dropdown() */
+
+
+
+/** setup_selected_item_dropdown() ******************************
+ *
+ * Setup display modelname dropdown menu.
+ *
+ **/
+
+static void setup_selected_item_dropdown(CtkDisplayConfig *ctk_object)
+{
+ GtkWidget *menu;
+ nvDisplayPtr display = ctk_display_layout_get_selected_display
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+ nvScreenPtr screen = ctk_display_layout_get_selected_screen
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+ int cur_idx = 0;
+
+
+ if (!display && !screen) {
+ gtk_widget_set_sensitive(ctk_object->mnu_selected_item, False);
+ gtk_widget_hide(ctk_object->mnu_selected_item);
+ return;
+ }
+
+ gtk_widget_set_sensitive(ctk_object->mnu_selected_item, True);
+
+ menu = generate_selected_item_dropdown(ctk_object, display, screen,
+ &cur_idx);
+ if (!menu) {
+ gtk_widget_set_sensitive(ctk_object->mnu_selected_item, False);
+ return;
+ }
+
+ /* Setup the menu and select the current model */
+ g_signal_handlers_block_by_func
+ (G_OBJECT(ctk_object->mnu_selected_item),
+ G_CALLBACK(selected_item_changed), (gpointer) ctk_object);
+
+ gtk_option_menu_set_menu
+ (GTK_OPTION_MENU(ctk_object->mnu_selected_item), menu);
+
+ gtk_option_menu_set_history
+ (GTK_OPTION_MENU(ctk_object->mnu_selected_item), cur_idx);
+
+ g_signal_handlers_unblock_by_func
+ (G_OBJECT(ctk_object->mnu_selected_item),
+ G_CALLBACK(selected_item_changed), (gpointer) ctk_object);
+
+} /* setup_selected_item_dropdown() */
+
+
+
/** setup_display_modename() *****************************************
@@ -2590,5 +2854,6 @@ static void setup_display_resolution_dropdown(CtkDisplayConfig *ctk_object)
-/** generate_display_modelname_dropdown() ********************************
+/** setup_display_stereo_dropdown() **********************************
*
- * Generate display modelname dropdown menu.
+ * Configures the screen stereo mode dropdown to reflect the
+ * stereo mode for the currently selected screen.
*
@@ -2596,82 +2861,16 @@ static void setup_display_resolution_dropdown(CtkDisplayConfig *ctk_object)
-static GtkWidget* generate_display_modelname_dropdown(CtkDisplayConfig *ctk_object,
- int *cur_idx)
+static void setup_display_stereo_dropdown(CtkDisplayConfig *ctk_object)
{
- GtkWidget *menu;
- GtkWidget *menu_item;
- nvLayoutPtr layout = ctk_object->layout;
- nvGpuPtr gpu;
- nvDisplayPtr display;
- int display_count = 0;
- nvDisplayPtr d = ctk_display_layout_get_selected_display
+ nvScreenPtr screen = ctk_display_layout_get_selected_screen
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
-
- /* Create the display modelname lookup table for the dropdown */
- if (ctk_object->display_model_table) {
- free(ctk_object->display_model_table);
- }
- ctk_object->display_model_table_len = 0;
- for (gpu = layout->gpus; gpu; gpu = gpu->next_in_layout) {
- display_count += gpu->num_displays;
- }
-
- ctk_object->display_model_table =
- calloc(display_count, sizeof(nvDisplayPtr));
-
- if (!ctk_object->display_model_table) {
- gtk_option_menu_remove_menu
- (GTK_OPTION_MENU(ctk_object->mnu_display_model));
- gtk_widget_set_sensitive(ctk_object->mnu_display_model, False);
- return NULL;
- }
-
- /* Generate the popup menu */
- menu = gtk_menu_new();
- for (gpu = layout->gpus; gpu; gpu = gpu->next_in_layout) {
- for (display = gpu->displays;
- display;
- display = display->next_on_gpu) {
-
- gchar *str, *type;
- if (d == display) {
- *cur_idx = ctk_object->display_model_table_len;
- }
- /* Setup the menu item text */
- type = display_get_type_str(display->device_mask, 0);
- str = g_strdup_printf("%s (%s on GPU-%d)",
- display->name, type,
- NvCtrlGetTargetId(gpu->handle));
- menu_item = gtk_menu_item_new_with_label(str);
- g_free(str);
- g_free(type);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
- gtk_widget_show(menu_item);
- ctk_object->display_model_table
- [ctk_object->display_model_table_len++] = display;
- }
- }
-
- return menu;
-
-} /* generate_display_modelname_dropdown() */
-
-
-
-/** setup_display_modelname_dropdown() **************************
- *
- * Setup display modelname dropdown menu.
- *
- **/
-
-static void setup_display_modelname_dropdown(CtkDisplayConfig *ctk_object)
-{
- GtkWidget *menu;
- int cur_idx = 0; /* Currently selected display */
nvDisplayPtr display = ctk_display_layout_get_selected_display
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+ nvModePtr mode;
+ int idx;
- /* If no display is selected or there is no screen, hide the frame */
- if (!display) {
- gtk_widget_set_sensitive(ctk_object->mnu_display_model, False);
- gtk_widget_hide(ctk_object->mnu_display_model);
+ if (!ctk_object->box_display_stereo) return;
+
+ if (!display || !display->cur_mode || !screen ||
+ !screen->stereo_supported || (screen->stereo != 4)) {
+ gtk_widget_hide(ctk_object->box_display_stereo);
return;
@@ -2679,27 +2878,34 @@ static void setup_display_modelname_dropdown(CtkDisplayConfig *ctk_object)
- /* Enable display widgets and setup widget information */
- gtk_widget_set_sensitive(ctk_object->mnu_display_model, True);
+ mode = display->cur_mode;
- menu = generate_display_modelname_dropdown(ctk_object, &cur_idx);
- /* If menu not generated return */
- if (!menu) {
- return;
- }
- /* Setup the menu and select the current model */
+ /* Set the selected passive stereo eye */
g_signal_handlers_block_by_func
- (G_OBJECT(ctk_object->mnu_display_model),
- G_CALLBACK(display_modelname_changed), (gpointer) ctk_object);
+ (G_OBJECT(ctk_object->mnu_display_stereo),
+ G_CALLBACK(display_stereo_changed), (gpointer) ctk_object);
- gtk_option_menu_set_menu
- (GTK_OPTION_MENU(ctk_object->mnu_display_model), menu);
+ switch (mode->passive_stereo_eye) {
+ default:
+ /* Oops */
+ case PASSIVE_STEREO_EYE_NONE:
+ idx = 0;
+ break;
+ case PASSIVE_STEREO_EYE_LEFT:
+ idx = 1;
+ break;
+ case PASSIVE_STEREO_EYE_RIGHT:
+ idx = 2;
+ break;
+ }
gtk_option_menu_set_history
- (GTK_OPTION_MENU(ctk_object->mnu_display_model), cur_idx);
+ (GTK_OPTION_MENU(ctk_object->mnu_display_stereo), idx);
g_signal_handlers_unblock_by_func
- (G_OBJECT(ctk_object->mnu_display_model),
- G_CALLBACK(display_modelname_changed), (gpointer) ctk_object);
+ (G_OBJECT(ctk_object->mnu_display_stereo),
+ G_CALLBACK(display_stereo_changed), (gpointer) ctk_object);
+
+ gtk_widget_show(ctk_object->box_display_stereo);
-} /* setup_display_modelname_dropdown() */
+} /* setup_display_stereo_dropdown() */
@@ -2803,3 +3009,3 @@ static void setup_display_position_relative(CtkDisplayConfig *ctk_object)
- menu_item = gtk_menu_item_new_with_label(relative_to->name);
+ menu_item = gtk_menu_item_new_with_label(relative_to->logName);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item);
@@ -3033,3 +3239,3 @@ static void setup_display_panning(CtkDisplayConfig *ctk_object)
* Sets up the display frame to reflect the currently selected
- * display.
+ * display.
*
@@ -3041,16 +3247,5 @@ static void setup_display_page(CtkDisplayConfig *ctk_object)
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
- gint page_num;
- GtkWidget *tab_label;
-
- page_num = gtk_notebook_page_num(GTK_NOTEBOOK(ctk_object->notebook),
- ctk_object->display_page);
- /* If no display is selected, remove the display page */
if (!display) {
- gtk_widget_set_sensitive(ctk_object->display_page, False);
- if (page_num >= 0) {
- gtk_notebook_remove_page(GTK_NOTEBOOK(ctk_object->notebook),
- page_num);
- }
return;
@@ -3061,39 +3256,11 @@ static void setup_display_page(CtkDisplayConfig *ctk_object)
gtk_widget_set_sensitive(ctk_object->display_page, True);
-
-
- /* Setup the display modelname dropdown */
- setup_display_modelname_dropdown(ctk_object);
-
- /* Setup the seleted mode modename */
setup_display_config(ctk_object);
-
-
- /* Setup the seleted mode modename */
setup_display_modename(ctk_object);
-
-
- /* Setup display resolution menu */
setup_display_resolution_dropdown(ctk_object);
-
-
- /* Setup position */
+ setup_display_stereo_dropdown(ctk_object);
setup_display_position(ctk_object);
-
-
- /* Setup panning */
setup_display_panning(ctk_object);
-
-
- /* Setup first display */
setup_primary_display(ctk_object);
-
- /* Make sure the page has been added to the notebook */
- if (page_num < 0) {
- tab_label = gtk_label_new("Display");
- gtk_notebook_prepend_page(GTK_NOTEBOOK(ctk_object->notebook),
- ctk_object->display_page, tab_label);
- }
-
} /* setup_display_page() */
@@ -3265,2 +3432,41 @@ static void setup_screen_depth_dropdown(CtkDisplayConfig *ctk_object)
+/** setup_screen_stereo_dropdown() ***********************************
+ *
+ * Configures the screen stereo mode dropdown to reflect the
+ * stereo mode for the currently selected screen.
+ *
+ **/
+
+static void setup_screen_stereo_dropdown(CtkDisplayConfig *ctk_object)
+{
+ nvScreenPtr screen = ctk_display_layout_get_selected_screen
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+
+ if (!ctk_object->box_screen_stereo) return;
+
+ /* Handle cases where the position type should be hidden */
+ if (!screen || !screen->stereo_supported) {
+ gtk_widget_hide(ctk_object->box_screen_stereo);
+ return;
+ }
+
+ /* Set the selected positioning type */
+ g_signal_handlers_block_by_func
+ (G_OBJECT(ctk_object->mnu_screen_stereo),
+ G_CALLBACK(screen_stereo_changed), (gpointer) ctk_object);
+
+ gtk_option_menu_set_history
+ (GTK_OPTION_MENU(ctk_object->mnu_screen_stereo),
+ screen->stereo);
+
+ g_signal_handlers_unblock_by_func
+ (G_OBJECT(ctk_object->mnu_screen_stereo),
+ G_CALLBACK(screen_stereo_changed), (gpointer) ctk_object);
+
+ gtk_widget_show(ctk_object->box_screen_stereo);
+
+} /* setup_screen_stereo_dropdown() */
+
+
+
/** setup_screen_position_type() *************************************
@@ -3538,19 +3744,5 @@ static void setup_screen_page(CtkDisplayConfig *ctk_object)
(CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
- gchar *tmp;
- gint page_num;
- GtkWidget *tab_label;
- GParamSpec* param_spec = NULL;
-
- page_num = gtk_notebook_page_num(GTK_NOTEBOOK(ctk_object->notebook),
- ctk_object->screen_page);
-
- /* If there is no display or no screen selected, remove the screen page */
if (!screen) {
- gtk_widget_set_sensitive(ctk_object->screen_page, False);
- if (page_num >= 0) {
- gtk_notebook_remove_page(GTK_NOTEBOOK(ctk_object->notebook),
- page_num);
- }
return;
@@ -3562,47 +3754,8 @@ static void setup_screen_page(CtkDisplayConfig *ctk_object)
-
- /* Setup the screen number */
- tmp = g_strdup_printf("%d", screen->scrnum);
-
- param_spec = g_object_class_find_property
- (G_OBJECT_GET_CLASS(gtk_widget_get_settings(ctk_object->txt_screen_num)),
- "gtk-label-select-on-focus");
-
- if (param_spec) {
- /*
- * When running against versions of gtk that have the
- * "gtk-label-select-on-focus" property, set the property to FALSE for
- * the screen label so that it isn't auto-selected when switching tabs
- */
- g_object_set(gtk_widget_get_settings(ctk_object->txt_screen_num),
- "gtk-label-select-on-focus", FALSE, NULL);
- }
-
- gtk_label_set_text(GTK_LABEL(ctk_object->txt_screen_num), tmp);
- g_free(tmp);
-
-
- /* Setup screen (virtual) size */
setup_screen_virtual_size(ctk_object);
-
-
- /* Setup depth menu */
setup_screen_depth_dropdown(ctk_object);
-
-
- /* Setup position */
+ setup_screen_stereo_dropdown(ctk_object);
setup_screen_position(ctk_object);
-
-
- /* Setup metamode menu */
setup_screen_metamode(ctk_object);
-
- /* Make sure the page has been added to the notebook */
- if (page_num < 0) {
- tab_label = gtk_label_new("X Screen");
- gtk_notebook_append_page(GTK_NOTEBOOK(ctk_object->notebook),
- ctk_object->screen_page, tab_label);
- }
-
} /* setup_screen_page() */
@@ -3671,3 +3824,3 @@ static gint validation_fix_crowded_metamodes(CtkDisplayConfig *ctk_object,
"already %d active display devices for this "
- "MetaMode.", display->name, i, screen->scrnum,
+ "MetaMode.", display->logName, i, screen->scrnum,
screen->gpu->max_displays);
@@ -3710,3 +3863,3 @@ static gint validation_fix_crowded_metamodes(CtkDisplayConfig *ctk_object,
"device.)",
- first_mode->display->name, i, screen->scrnum);
+ first_mode->display->logName, i, screen->scrnum);
}
@@ -4041,8 +4194,7 @@ static int validate_layout(CtkDisplayConfig *ctk_object, int validation_type)
result = validation_auto_fix(ctk_object);
-
+
/* Update the GUI to reflect any updates made by auto fix */
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ update_gui(ctk_object);
return result;
-
+
case GTK_RESPONSE_REJECT:
@@ -4112,4 +4264,4 @@ static gboolean validate_apply(CtkDisplayConfig *ctk_object)
*
- * Called every time the user selects a new display from the layout
- * image.
+ * Called every time the user selects a new display or screen from
+ * the layout image.
*
@@ -4125,2 +4277,4 @@ void layout_selected_callback(nvLayoutPtr layout, void *data)
setup_screen_page(ctk_object);
+ setup_selected_item_dropdown(ctk_object);
+ update_selected_page(ctk_object);
@@ -4172,2 +4326,35 @@ void layout_modified_callback(nvLayoutPtr layout, void *data)
+/** selected_item_changed() *********************************
+ *
+ * Called when user selects a new display or X screen.
+ *
+ **/
+static void selected_item_changed(GtkWidget *widget, gpointer user_data)
+{
+ CtkDisplayConfig *ctk_object = CTK_DISPLAY_CONFIG(user_data);
+ gint idx;
+ SelectableItem *item;
+
+ idx = gtk_option_menu_get_history(GTK_OPTION_MENU(widget));
+ item = &(ctk_object->selected_item_table[idx]);
+
+ switch (item->type) {
+ case SELECTABLE_ITEM_SCREEN:
+ ctk_display_layout_select_screen
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), item->u.screen);
+ break;
+ case SELECTABLE_ITEM_DISPLAY:
+ ctk_display_layout_select_display
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), item->u.display);
+ break;
+ }
+
+ setup_display_page(ctk_object);
+ setup_screen_page(ctk_object);
+ update_selected_page(ctk_object);
+
+} /* selected_item_changed() */
+
+
+
/** do_enable_display_for_xscreen() **********************************
@@ -4178,4 +4365,4 @@ void layout_modified_callback(nvLayoutPtr layout, void *data)
-void do_enable_display_for_xscreen(CtkDisplayConfig *ctk_object,
- nvDisplayPtr display)
+static void do_enable_display_for_xscreen(CtkDisplayConfig *ctk_object,
+ nvDisplayPtr display)
{
@@ -4380,5 +4567,2 @@ static void do_enable_display_for_twinview(CtkDisplayConfig *ctk_object,
nvModePtr mode;
- guint new_mask;
- char *msg;
- GtkWidget *dlg, *parent;
@@ -4391,58 +4575,2 @@ static void do_enable_display_for_twinview(CtkDisplayConfig *ctk_object,
- /* attempt to associate the display device with the screen */
- new_mask = screen->displays_mask | display->device_mask;
- if (screen->handle) {
- ReturnStatus ret;
-
- ret = NvCtrlSetDisplayAttributeWithReply
- (screen->handle, 0,
- NV_CTRL_ASSOCIATED_DISPLAY_DEVICES,
- new_mask);
-
- if (ret != NvCtrlSuccess) {
-
- msg = g_strdup_printf("Failed to associate display device "
- "'%s' with X screen %d. TwinView cannot "
- "be enabled with this combination of "
- "display devices.",
- display->name, screen->scrnum);
-
- parent = ctk_get_parent_window(GTK_WIDGET(ctk_object));
-
- if (parent) {
- dlg = gtk_message_dialog_new
- (GTK_WINDOW(parent),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_WARNING,
- GTK_BUTTONS_OK,
- msg);
-
- gtk_dialog_run(GTK_DIALOG(dlg));
- gtk_widget_destroy(dlg);
-
- } else {
- nv_error_msg(msg);
- }
-
- g_free(msg);
-
- return;
-
- } else {
- g_signal_handlers_block_by_func
- (G_OBJECT(screen->ctk_event),
- G_CALLBACK(display_config_attribute_changed),
- (gpointer) ctk_object);
-
- /* Make sure other parts of nvidia-settings get updated */
- ctk_event_emit(screen->ctk_event, 0,
- NV_CTRL_ASSOCIATED_DISPLAY_DEVICES, new_mask);
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(screen->ctk_event),
- G_CALLBACK(display_config_attribute_changed),
- (gpointer) ctk_object);
- }
- }
-
/* Delete implicit metamodes on all X Screens driven by the GPU */
@@ -4452,3 +4580,3 @@ static void do_enable_display_for_twinview(CtkDisplayConfig *ctk_object,
display_remove_modes(display);
-
+
for (metamode = screen->metamodes; metamode; metamode = metamode->next) {
@@ -4841,3 +4969,4 @@ static gboolean do_query_remove_display(CtkDisplayConfig *ctk_object,
-void do_disable_display(CtkDisplayConfig *ctk_object, nvDisplayPtr display)
+static void do_disable_display(CtkDisplayConfig *ctk_object,
+ nvDisplayPtr display)
{
@@ -4845,3 +4974,2 @@ void do_disable_display(CtkDisplayConfig *ctk_object, nvDisplayPtr display)
gchar *str;
- gchar *type = display_get_type_str(display->device_mask, 0);
@@ -4852,3 +4980,3 @@ void do_disable_display(CtkDisplayConfig *ctk_object, nvDisplayPtr display)
"on GPU-%d (%s)?",
- display->name, type,
+ display->logName, display->typeIdName,
NvCtrlGetTargetId(gpu->handle), gpu->name);
@@ -4856,5 +4984,4 @@ void do_disable_display(CtkDisplayConfig *ctk_object, nvDisplayPtr display)
str = g_strdup_printf("Disable the display device %s (%s)?",
- display->name, type);
+ display->logName, display->typeIdName);
}
- g_free(type);
@@ -4922,3 +5049,3 @@ static void display_config_changed(GtkWidget *widget, gpointer user_data)
gchar *err_str = NULL;
- NvCtrlStringOperation(display->gpu->handle, display->device_mask,
+ NvCtrlStringOperation(display->handle, 0,
NV_CTRL_STRING_OPERATION_BUILD_MODEPOOL,
@@ -4992,6 +5119,3 @@ static void display_config_changed(GtkWidget *widget, gpointer user_data)
- /* Update GUI */
- setup_layout_frame(ctk_object);
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ update_gui(ctk_object);
@@ -5128,8 +5252,9 @@ static void display_resolution_changed(GtkWidget *widget, gpointer user_data)
-/** display_modelname_changed() *****************************
+/** display_stereo_changed() *****************************
*
- * Called when user selectes a new display from display modelname dropdown.
+ * Called when user selectes a new passive stereo eye
+ * configuration.
*
**/
-static void display_modelname_changed(GtkWidget *widget, gpointer user_data)
+static void display_stereo_changed(GtkWidget *widget, gpointer user_data)
{
@@ -5137,15 +5262,28 @@ static void display_modelname_changed(GtkWidget *widget, gpointer user_data)
nvDisplayPtr display;
+ nvModePtr mode;
gint idx;
- /* Get the modeline and display to set */
- idx = gtk_option_menu_get_history(GTK_OPTION_MENU(widget));
- display = ctk_object->display_model_table[idx];
- ctk_display_layout_select_display
- (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout), display);
+ /* Update the current mode on the selected display */
+ display = ctk_display_layout_get_selected_display
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
- /* Reconfigure GUI to display information about the selected display. */
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ if (display && display->cur_mode) {
+ mode = display->cur_mode;
-} /* display_modelname_changed() */
+ idx = gtk_option_menu_get_history(GTK_OPTION_MENU(widget));
+ switch (idx) {
+ case 1:
+ mode->passive_stereo_eye = PASSIVE_STEREO_EYE_LEFT;
+ break;
+ case 2:
+ mode->passive_stereo_eye = PASSIVE_STEREO_EYE_RIGHT;
+ break;
+ default:
+ case 0:
+ mode->passive_stereo_eye = PASSIVE_STEREO_EYE_NONE;
+ break;
+ }
+ }
+
+} /* display_stereo_changed() */
@@ -5468,2 +5606,32 @@ static void screen_depth_changed(GtkWidget *widget, gpointer user_data)
+/** screen_stereo_changed() ******************************************
+ *
+ * Called when user selects a new stereo mode for a screen.
+ *
+ **/
+
+static void screen_stereo_changed(GtkWidget *widget, gpointer user_data)
+{
+ CtkDisplayConfig *ctk_object = CTK_DISPLAY_CONFIG(user_data);
+ gint idx = gtk_option_menu_get_history(GTK_OPTION_MENU(widget));
+ nvScreenPtr screen = ctk_display_layout_get_selected_screen
+ (CTK_DISPLAY_LAYOUT(ctk_object->obj_layout));
+
+ if (!screen) return;
+
+ screen->stereo = idx;
+
+ /* Can't apply screen stereo changes */
+ ctk_object->apply_possible = FALSE;
+
+ user_changed_attributes(ctk_object);
+
+
+ /* Changing this can modify how the display page looks */
+ setup_display_page(ctk_object);
+
+} /* screen_stereo_changed() */
+
+
+
/** screen_position_type_changed() ***********************************
@@ -5850,3 +6018,3 @@ static gboolean do_display_confirm_countdown(gpointer data)
*
- * Switches to the current screen metamode using XRandR
+ * Switches to the current screen metamode using NV_CTRL_CURRENT_METAMODE_ID
*
@@ -5863,4 +6031,2 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
int new_rate;
- int old_width;
- int old_height;
int old_rate;
@@ -5887,23 +6053,2 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
- /* XRandR must be available to do mode switching */
-
- if (NvCtrlGetXrandrEventBase(screen->handle) < 0) {
- dlg = gtk_message_dialog_new
- (GTK_WINDOW(parent),
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_INFO,
- GTK_BUTTONS_CLOSE,
- "The XRandR X extension was not found. This extension must "
- "be supported by the X server and enabled for display "
- "configuration settings to be dynamically applicable.");
-
- gtk_dialog_run(GTK_DIALOG(dlg));
- gtk_widget_destroy(dlg);
-
- nv_warning_msg("XRandR X extension not enabled, "
- "cannot apply settings!");
- goto fail;
- }
-
-
/* Get the current mode so we can fall back on that if the
@@ -5912,4 +6057,4 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
- ret = NvCtrlXrandrGetScreenMode(screen->handle, &old_width, &old_height,
- &old_rate);
+ ret = NvCtrlGetAttribute(screen->handle, NV_CTRL_CURRENT_METAMODE_ID,
+ (int *)&old_rate);
if (ret != NvCtrlSuccess) {
@@ -5920,4 +6065,3 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
- nv_info_msg(TAB, "Current mode: %dx%d (id: %d)",
- old_width, old_height, old_rate);
+ nv_info_msg(TAB, "Current mode (id: %d)", old_rate);
@@ -5929,4 +6073,5 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
- ret = NvCtrlXrandrSetScreenMode(screen->handle, new_width, new_height,
- new_rate);
+ ret = NvCtrlSetDisplayAttributeWithReply(screen->handle, 0,
+ NV_CTRL_CURRENT_METAMODE_ID,
+ new_rate);
if (ret != NvCtrlSuccess) {
@@ -5951,3 +6096,3 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
GTK_BUTTONS_YES_NO,
- msg);
+ "%s", msg);
} else {
@@ -5963,3 +6108,3 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
GTK_BUTTONS_OK,
- msg);
+ "%s", msg);
}
@@ -6027,7 +6172,7 @@ static Bool switch_to_current_metamode(CtkDisplayConfig *ctk_object,
/* Fall back to previous settings */
- nv_info_msg(TAB, "Switching back to mode: %dx%d (id: %d)...",
- old_width, old_height, old_rate);
+ nv_info_msg(TAB, "Switching back to mode (id: %d)...", old_rate);
- NvCtrlXrandrSetScreenMode(screen->handle, old_width, old_height,
- old_rate);
+ ret = NvCtrlSetDisplayAttributeWithReply(screen->handle, 0,
+ NV_CTRL_CURRENT_METAMODE_ID,
+ old_rate);
/* Good luck! */
@@ -6391,20 +6536,2 @@ static void apply_clicked(GtkWidget *widget, gpointer user_data)
clear_apply = FALSE;
- } else {
- ReturnStatus ret;
-
- ret = NvCtrlSetDisplayAttributeWithReply
- (screen->handle, 0,
- NV_CTRL_ASSOCIATED_DISPLAY_DEVICES,
- screen->displays_mask);
-
- if (ret != NvCtrlSuccess) {
- nv_error_msg("Failed to set screen %d's association mask "
- "to: 0x%08x",
- screen->scrnum, screen->displays_mask);
- } else {
- /* Make sure other parts of nvidia-settings get updated */
- ctk_event_emit(screen->ctk_event, 0,
- NV_CTRL_ASSOCIATED_DISPLAY_DEVICES,
- screen->displays_mask);
- }
}
@@ -6412,11 +6539,6 @@ static void apply_clicked(GtkWidget *widget, gpointer user_data)
if (screen->primaryDisplay && ctk_object->primary_display_changed) {
- gchar *primary_str =
- display_get_type_str(screen->primaryDisplay->device_mask,
- 0);
-
ret = NvCtrlSetStringAttribute(screen->handle,
NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER,
- primary_str, NULL);
- g_free(primary_str);
-
+ screen->primaryDisplay->typeIdName,
+ NULL);
if (ret != NvCtrlSuccess) {
@@ -6569,6 +6691,6 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
- len = strlen(display->name);
+ len = strlen(display->logName);
monitor->modelname = malloc(len + 1);
for (i = 0, j = 0; i < len; i++, j++) {
- if (display->name[i] == '\"') {
+ if (display->logName[i] == '\"') {
if (++i >= len)
@@ -6576,3 +6698,3 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
}
- monitor->modelname[j] = display->name[i];
+ monitor->modelname[j] = display->logName[i];
}
@@ -6582,7 +6704,5 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
- ret = NvCtrlGetStringDisplayAttribute
- (display->gpu->handle,
- display->device_mask,
- NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES,
- &range_str);
+ ret = NvCtrlGetStringAttribute(display->handle,
+ NV_CTRL_STRING_VALID_HORIZ_SYNC_RANGES,
+ &range_str);
if (ret != NvCtrlSuccess) {
@@ -6590,3 +6710,3 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
"for display device '%s' (GPU: %s)!",
- display->name, display->gpu->name);
+ display->logName, display->gpu->name);
goto fail;
@@ -6604,3 +6724,3 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
"for display device '%s' (GPU: %s)!",
- display->name, display->gpu->name);
+ display->logName, display->gpu->name);
goto fail;
@@ -6619,7 +6739,5 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
- ret = NvCtrlGetStringDisplayAttribute
- (display->gpu->handle,
- display->device_mask,
- NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES,
- &range_str);
+ ret = NvCtrlGetStringAttribute(display->handle,
+ NV_CTRL_STRING_VALID_VERT_REFRESH_RANGES,
+ &range_str);
if (ret != NvCtrlSuccess) {
@@ -6627,3 +6745,3 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
"for display device '%s' (GPU: %s)!",
- display->name, display->gpu->name);
+ display->logName, display->gpu->name);
goto fail;
@@ -6641,3 +6759,3 @@ static Bool add_monitor_to_xconfig(nvDisplayPtr display, XConfigPtr config,
"for display device '%s' (GPU: %s)!",
- display->name, display->gpu->name);
+ display->logName, display->gpu->name);
goto fail;
@@ -6840,3 +6958,3 @@ static int add_screen_to_xconfig(CtkDisplayConfig *ctk_object,
nv_error_msg("Failed to add display device '%s' to screen %d!",
- display->name, screen->scrnum);
+ display->logName, screen->scrnum);
goto fail;
@@ -6858,5 +6976,8 @@ static int add_screen_to_xconfig(CtkDisplayConfig *ctk_object,
- /* Set the TwinView option */
- xconfigAddNewOption(&conf_screen->options, "TwinView",
- ((screen->num_displays > 1) ? "1" : "0" ));
+ /* Set the Stereo option */
+ {
+ char buf[32];
+ snprintf(buf, 32, "%d", screen->stereo);
+ xconfigAddNewOption(&conf_screen->options, "Stereo", buf);
+ }
@@ -6865,8 +6986,5 @@ static int add_screen_to_xconfig(CtkDisplayConfig *ctk_object,
if (screen->primaryDisplay) {
- gchar *primary_str =
- display_get_type_str(screen->primaryDisplay->device_mask, 0);
-
- xconfigAddNewOption(&conf_screen->options, "TwinViewXineramaInfoOrder",
- primary_str);
- g_free(primary_str);
+ xconfigAddNewOption(&conf_screen->options,
+ "TwinViewXineramaInfoOrder",
+ screen->primaryDisplay->typeIdName);
}
@@ -6876,3 +6994,3 @@ static int add_screen_to_xconfig(CtkDisplayConfig *ctk_object,
if (ret != XCONFIG_GEN_OK) goto bail;
-
+
/* If no user specified metamodes were found, add
@@ -6882,7 +7000,9 @@ static int add_screen_to_xconfig(CtkDisplayConfig *ctk_object,
metamode_strs = screen_get_metamode_str(screen,
- screen->cur_metamode_idx, 1);
+ screen->cur_metamode_idx,
+ 1);
}
-
+
if (metamode_strs) {
- xconfigAddNewOption(&conf_screen->options, "metamodes", metamode_strs);
+ xconfigAddNewOption(&conf_screen->options, "metamodes",
+ metamode_strs);
free(metamode_strs);
@@ -6890,4 +7010,4 @@ static int add_screen_to_xconfig(CtkDisplayConfig *ctk_object,
}
-
-
+
+
/* Setup the display section */
@@ -7320,3 +7440,3 @@ static void advanced_clicked(GtkWidget *widget, gpointer user_data)
CtkDisplayConfig *ctk_object = CTK_DISPLAY_CONFIG(user_data);
-
+
@@ -7339,6 +7459,4 @@ static void advanced_clicked(GtkWidget *widget, gpointer user_data)
-
/* Update the GUI to show the right widgets */
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ update_gui(ctk_object);
@@ -7390,4 +7508,4 @@ static void probe_clicked(GtkWidget *widget, gpointer user_data)
**/
-static gboolean layout_change_is_applyable(const nvLayout *old,
- const nvLayout *new)
+static gboolean layout_change_is_applyable(const nvLayoutPtr old,
+ const nvLayoutPtr new)
{
@@ -7401,3 +7519,2 @@ static gboolean layout_change_is_applyable(const nvLayout *old,
for (dpy = gpu->displays; dpy; dpy = dpy->next_on_gpu) {
- const nvGpu *new_gpu;
@@ -7410,20 +7527,3 @@ static gboolean layout_change_is_applyable(const nvLayout *old,
* it's still connected in the new layout. */
-
- /* First, find the matching GPU */
- for (new_gpu = new->gpus; new_gpu; new_gpu =
- new_gpu->next_in_layout) {
-
- if (strcmp(gpu->pci_bus_id, new_gpu->pci_bus_id) == 0) {
- break;
- }
- }
-
- if (!new_gpu) {
- /* We really should have found the new GPU! */
- return True;
- }
-
- /* Then, see if the given dpy is connected. If it's not, then the
- * Apply button should be enabled. */
- if (!(dpy->device_mask & new_gpu->connected_displays)) {
+ if (!layout_get_display(new, NvCtrlGetTargetId(dpy->handle))) {
return True;
@@ -7484,7 +7584,3 @@ static void reset_layout(CtkDisplayConfig *ctk_object)
-
- /* Setup the GUI */
- setup_layout_frame(ctk_object);
- setup_display_page(ctk_object);
- setup_screen_page(ctk_object);
+ update_gui(ctk_object);
diff --git a/src/gtk+-2.x/ctkdisplayconfig.h b/src/gtk+-2.x/ctkdisplayconfig.h
index a5a2a4e..7e415e8 100644
--- a/src/gtk+-2.x/ctkdisplayconfig.h
+++ b/src/gtk+-2.x/ctkdisplayconfig.h
@@ -51,2 +51,16 @@ G_BEGIN_DECLS
+typedef enum {
+ SELECTABLE_ITEM_SCREEN,
+ SELECTABLE_ITEM_DISPLAY
+} SelectableItemType;
+
+
+typedef struct SelectableItemRec {
+ SelectableItemType type;
+ union {
+ nvDisplayPtr display;
+ nvScreenPtr screen;
+ } u;
+} SelectableItem;
+
@@ -70,2 +84,6 @@ typedef struct _CtkDisplayConfig
+ GtkWidget *mnu_selected_item;
+ SelectableItem *selected_item_table;
+ int selected_item_table_len;
+
GtkWidget *notebook; /* Tabbed notebook for display and X screen pages */
@@ -75,5 +93,2 @@ typedef struct _CtkDisplayConfig
- GtkWidget *mnu_display_model;
- nvDisplayPtr *display_model_table; /* Lookup table for display modelname */
- int display_model_table_len;
GtkWidget *txt_display_gpu;
@@ -85,3 +100,3 @@ typedef struct _CtkDisplayConfig
GtkWidget *mnu_display_config_twinview;
-
+
/* Display - Settings */
@@ -99,2 +114,5 @@ typedef struct _CtkDisplayConfig
+ GtkWidget *box_display_stereo;
+ GtkWidget *mnu_display_stereo;
+
GtkWidget *box_display_position;
@@ -113,4 +131,2 @@ typedef struct _CtkDisplayConfig
- GtkWidget *txt_screen_num;
-
/* X Screen - Settings */
@@ -122,2 +138,5 @@ typedef struct _CtkDisplayConfig
+ GtkWidget *box_screen_stereo;
+ GtkWidget *mnu_screen_stereo;
+
GtkWidget *box_screen_position;
@@ -180,3 +199,3 @@ typedef struct _CtkDisplayConfig
GtkWidget *btn_reset;
-
+
int last_resolution_idx;
diff --git a/src/gtk+-2.x/ctkdisplaydevice-crt.c b/src/gtk+-2.x/ctkdisplaydevice-crt.c
index ad55b39..aa15ee9 100644
--- a/src/gtk+-2.x/ctkdisplaydevice-crt.c
+++ b/src/gtk+-2.x/ctkdisplaydevice-crt.c
@@ -67,2 +67,3 @@ GType ctk_display_device_crt_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -107,3 +108,2 @@ GtkWidget* ctk_display_device_crt_new(NvCtrlAttributeHandle *handle,
CtkEvent *ctk_event,
- unsigned int display_device_mask,
char *name)
@@ -126,3 +126,2 @@ GtkWidget* ctk_display_device_crt_new(NvCtrlAttributeHandle *handle,
ctk_display_device_crt->ctk_event = ctk_event;
- ctk_display_device_crt->display_device_mask = display_device_mask;
ctk_display_device_crt->name = g_strdup(name);
@@ -162,3 +161,3 @@ GtkWidget* ctk_display_device_crt_new(NvCtrlAttributeHandle *handle,
ctk_display_device_crt->reset_button,
- display_device_mask, name);
+ name);
if (ctk_display_device_crt->image_sliders) {
@@ -211,6 +210,13 @@ GtkWidget* ctk_display_device_crt_new(NvCtrlAttributeHandle *handle,
+ ctk_display_device_crt->edid =
+ ctk_edid_new(ctk_display_device_crt->handle,
+ ctk_display_device_crt->ctk_config,
+ ctk_display_device_crt->ctk_event,
+ ctk_display_device_crt->name);
+
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, 0);
- ctk_display_device_crt->edid_box = hbox;
-
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_display_device_crt->edid,
+ TRUE, TRUE, 0);
+
/* show the page */
@@ -222,4 +228,3 @@ GtkWidget* ctk_display_device_crt_new(NvCtrlAttributeHandle *handle,
update_display_enabled_flag(ctk_display_device_crt->handle,
- &ctk_display_device_crt->display_enabled,
- ctk_display_device_crt->display_device_mask);
+ &ctk_display_device_crt->display_enabled);
@@ -264,6 +269,4 @@ GtkTextBuffer *ctk_display_device_crt_create_help(GtkTextTagTable *table,
- if (ctk_display_device_crt->edid) {
- add_acquire_edid_help(b, &i);
- }
-
+ add_acquire_edid_help(b, &i);
+
td = gtk_tooltips_data_get(GTK_WIDGET(ctk_display_device_crt->reset_button));
@@ -286,3 +289,8 @@ static void reset_button_clicked(GtkButton *button, gpointer user_data)
CTK_DISPLAY_DEVICE_CRT(user_data);
-
+
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_display_device_crt->reset_button, FALSE);
+
ctk_image_sliders_reset
@@ -290,4 +298,2 @@ static void reset_button_clicked(GtkButton *button, gpointer user_data)
- gtk_widget_set_sensitive(ctk_display_device_crt->reset_button, FALSE);
-
ctk_config_statusbar_message(ctk_display_device_crt->ctk_config,
@@ -307,45 +313,22 @@ static void ctk_display_device_crt_setup(CtkDisplayDeviceCrt
{
- /* Update CRT-specific settings */
- crt_info_setup(ctk_display_device_crt);
-
- /* Update the image sliders */
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_display_device_crt->reset_button, FALSE);
- ctk_image_sliders_setup
- (CTK_IMAGE_SLIDERS(ctk_display_device_crt->image_sliders));
+ /* Update info */
- /* update acquire EDID button */
-
- if (ctk_display_device_crt->edid) {
- GList *list;
-
- list = gtk_container_get_children
- (GTK_CONTAINER(ctk_display_device_crt->edid_box));
- if (list) {
- gtk_container_remove
- (GTK_CONTAINER(ctk_display_device_crt->edid_box),
- (GtkWidget *)(list->data));
- g_list_free(list);
- }
- }
+ crt_info_setup(ctk_display_device_crt);
- ctk_display_device_crt->edid =
- ctk_edid_new(ctk_display_device_crt->handle,
- ctk_display_device_crt->ctk_config,
- ctk_display_device_crt->ctk_event,
- ctk_display_device_crt->reset_button,
- ctk_display_device_crt->display_device_mask,
- ctk_display_device_crt->name);
+ ctk_edid_setup(CTK_EDID(ctk_display_device_crt->edid));
- if (ctk_display_device_crt->edid) {
- gtk_box_pack_start(GTK_BOX(ctk_display_device_crt->edid_box),
- ctk_display_device_crt->edid, TRUE, TRUE, 0);
- }
+ /* Update controls */
+ ctk_image_sliders_setup
+ (CTK_IMAGE_SLIDERS(ctk_display_device_crt->image_sliders));
- /* update the reset button */
+} /* ctk_display_device_crt_setup() */
- gtk_widget_set_sensitive(ctk_display_device_crt->reset_button, FALSE);
-} /* ctk_display_device_crt_setup() */
@@ -355,7 +338,6 @@ static void crt_info_setup(CtkDisplayDeviceCrt *ctk_display_device_crt)
gint val;
-
+
/* Refresh Rate */
- ret = NvCtrlGetDisplayAttribute(ctk_display_device_crt->handle,
- ctk_display_device_crt->display_device_mask,
- NV_CTRL_REFRESH_RATE, &val);
+ ret = NvCtrlGetAttribute(ctk_display_device_crt->handle,
+ NV_CTRL_REFRESH_RATE, &val);
if (ret == NvCtrlSuccess) {
@@ -386,8 +368,3 @@ static void enabled_displays_received(GtkObject *object, gpointer arg1,
update_display_enabled_flag(ctk_object->handle,
- &ctk_object->display_enabled,
- ctk_object->display_device_mask);
-
- if (ctk_object->display_enabled) {
- return;
- }
+ &ctk_object->display_enabled);
@@ -407,8 +384,3 @@ static void info_update_received(GtkObject *object, gpointer arg1,
CtkDisplayDeviceCrt *ctk_object = CTK_DISPLAY_DEVICE_CRT(user_data);
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
-
- /* if the event is not for this display device, return */
- if (!(event_struct->display_mask & ctk_object->display_device_mask)) {
- return;
- }
+
crt_info_setup(ctk_object);
diff --git a/src/gtk+-2.x/ctkdisplaydevice-crt.h b/src/gtk+-2.x/ctkdisplaydevice-crt.h
index 7c78d3c..e360343 100644
--- a/src/gtk+-2.x/ctkdisplaydevice-crt.h
+++ b/src/gtk+-2.x/ctkdisplaydevice-crt.h
@@ -61,7 +61,5 @@ struct _CtkDisplayDeviceCrt
GtkWidget *txt_refresh_rate;
-
- GtkWidget *edid_box;
+
GtkWidget *edid;
- unsigned int display_device_mask;
gboolean display_enabled;
@@ -79,3 +77,3 @@ GtkWidget* ctk_display_device_crt_new (NvCtrlAttributeHandle *,
CtkConfig *, CtkEvent *,
- unsigned int, char *);
+ char *);
diff --git a/src/gtk+-2.x/ctkdisplaydevice-dfp.c b/src/gtk+-2.x/ctkdisplaydevice-dfp.c
deleted file mode 100644
index cd20c87..0000000
--- a/src/gtk+-2.x/ctkdisplaydevice-dfp.c
+++ /dev/null
@@ -1,1433 +0,0 @@
-/*
- * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
- * and Linux systems.
- *
- * Copyright (C) 2004 NVIDIA Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses>.
- */
-
-#include <gtk/gtk.h>
-#include <NvCtrlAttributes.h>
-
-#include "ctkbanner.h"
-
-#include "ctkdisplaydevice-dfp.h"
-
-#include "ctkditheringcontrols.h"
-#include "ctkcolorcontrols.h"
-#include "ctkimagesliders.h"
-#include "ctkedid.h"
-#include "ctkconfig.h"
-#include "ctkhelp.h"
-#include "ctkutils.h"
-#include <stdio.h>
-
-static void ctk_display_device_dfp_class_init(CtkDisplayDeviceDfpClass *);
-static void ctk_display_device_dfp_finalize(GObject *);
-
-static GtkWidget *make_scaling_radio_button(CtkDisplayDeviceDfp
- *ctk_display_device_dfp,
- GtkWidget *vbox,
- GtkWidget *prev_radio,
- char *label,
- gint value);
-
-static void dfp_scaling_changed(GtkWidget *widget, gpointer user_data);
-
-static void reset_button_clicked(GtkButton *button, gpointer user_data);
-
-static void
-dfp_scaling_update_buttons(CtkDisplayDeviceDfp *ctk_display_device_dfp,
- gint value);
-
-
-static void dfp_update_received(GtkObject *object, gpointer arg1,
- gpointer user_data);
-
-static void dfp_info_setup(CtkDisplayDeviceDfp *ctk_display_device_dfp);
-
-static void dfp_scaling_setup(CtkDisplayDeviceDfp *ctk_display_device_dfp);
-
-static void ctk_display_device_dfp_setup(CtkDisplayDeviceDfp
- *ctk_display_device_dfp);
-
-static void enabled_displays_received(GtkObject *object, gpointer arg1,
- gpointer user_data);
-
-static void info_update_received(GtkObject *object, gpointer arg1,
- gpointer user_data);
-
-
-#define FRAME_PADDING 5
-
-#define __SCALING (1<<0)
-
-
-#define GET_SCALING_TARGET(V) ((V) >> 16)
-#define GET_SCALING_METHOD(V) ((V) & 0xFFFF)
-#define MAKE_SCALING_VALUE(T, M) (((T) << 16) | ((M) & 0xFFFF))
-
-
-static const char *__scaling_help =
-"A flat panel usually has a single 'native' resolution. If you are "
-"using a resolution that is smaller than the flat panel's native "
-"resolution, then Flat Panel Scaling can adjust how the image is "
-"displayed on the flat panel. This setting will only take effect when "
-"GPU scaling is active, which occurs when the frontend and backend "
-"resolutions of the current mode are different.";
-
-static const char *__info_help =
-"This section describes basic informations about the "
-"DVI connection to the digital flat panel.";
-
-static const char *__info_chip_location_help =
-"Report whether the flat panel is driven by the on-chip controller "
-"(internal), or a separate controller chip elsewhere on the graphics "
-"board (external).";
-
-static const char *__info_link_help =
-"Report whether the specified display device is driven by a single "
-"link or dual link DVI connection.";
-
-static const char *__info_signal_help =
-"Report whether the flat panel is driven by an LVDS, TMDS, or "
-"DisplayPort signal.";
-
-static const char * __native_res_help =
-"The Native Resolution is the width and height in pixels that the flat "
-"panel uses to display the image. All other resolutions must be scaled "
-"to this resolution by the GPU and/or the DFP's built-in scaler.";
-
-static const char * __best_fit_res_help =
-"The Best Fit Resolution is a resolution supported by the DFP that "
-"closely matches the frontend resolution. The Best Fit Resolution "
-"is used as the Backend Resolution when you want to let the DFP do "
-"the scaling from the Frontend Resolution to the Native Resolution.";
-
-static const char * __frontend_res_help =
-"The Frontend Resolution is the current resolution of the image in pixels.";
-
-static const char * __refresh_rate_help =
-"The refresh rate displays the rate at which the screen is currently "
-"refreshing the image.";
-
-static const char * __backend_res_help =
-"The Backend Resolution is the resolution that the GPU is driving to "
-"the DFP. If the Backend Resolution is different than the Frontend "
-"Resolution, then the GPU will scale the image from the Frontend "
-"Resolution to the Backend Resolution. If the Backend Resolution "
-"is different than the Native Resolution, then the DFP will scale "
-"the image from the Backend Resolution to the Native Resolution. "
-"Backend Resolution is either the Native Resolution or the Best "
-"Fit Resolution.";
-
-static const char * __force_gpu_scaling_help =
-"When set, the driver will make the GPU scale the "
-"frontend (current) mode to the flat panel's native "
-"resolution. If disabled, the GPU will only scale (if "
-"needed) to the best fitting resolution reported in the flat "
-"panel's EDID; the flat panel will then scale the image to "
-"its native resolution.";
-
-static const char *__gpu_scaling_help =
-"Reports whether the GPU and/or DFP are actively scaling the current "
-"resolution.";
-
-static const char *__gpu_scaling_stretched_help =
-"The image will be expanded to fit the entire flat panel.";
-
-static const char *__gpu_scaling_centered_help =
-"The image will only occupy the number of pixels "
-"needed and be centered on the flat panel. Setting this "
-"will disable image sharpening for the display device.";
-
-static const char *__gpu_scaling_ar_scaled_help =
-"The image will be scaled (retaining the original "
-"aspect ratio) to expand and fit as much of the entire "
-"flat panel as possible.";
-
-GType ctk_display_device_dfp_get_type(void)
-{
- static GType ctk_display_device_dfp_type = 0;
-
- if (!ctk_display_device_dfp_type) {
- static const GTypeInfo ctk_display_device_dfp_info = {
- sizeof (CtkDisplayDeviceDfpClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) ctk_display_device_dfp_class_init,
- NULL, /* class_finalize, */
- NULL, /* class_data */
- sizeof (CtkDisplayDeviceDfp),
- 0, /* n_preallocs */
- NULL, /* instance_init */
- };
-
- ctk_display_device_dfp_type = g_type_register_static (GTK_TYPE_VBOX,
- "CtkDisplayDeviceDfp", &ctk_display_device_dfp_info, 0);
- }
-
- return ctk_display_device_dfp_type;
-}
-
-static void ctk_display_device_dfp_class_init(
- CtkDisplayDeviceDfpClass *ctk_display_device_dfp_class
-)
-{
- GObjectClass *gobject_class = (GObjectClass *)ctk_display_device_dfp_class;
- gobject_class->finalize = ctk_display_device_dfp_finalize;
-}
-
-static void ctk_display_device_dfp_finalize(
- GObject *object
-)
-{
- CtkDisplayDeviceDfp *ctk_display_device_dfp = CTK_DISPLAY_DEVICE_DFP(object);
- g_free(ctk_display_device_dfp->name);
- g_signal_handlers_disconnect_matched(ctk_display_device_dfp->ctk_event,
- G_SIGNAL_MATCH_DATA,
- 0,
- 0,
- NULL,
- NULL,
- (gpointer) ctk_display_device_dfp);
-}
-
-
-/*
- * ctk_display_device_dfp_new() - constructor for the DFP display
- * device page.
- */
-
-GtkWidget* ctk_display_device_dfp_new(NvCtrlAttributeHandle *handle,
- CtkConfig *ctk_config,
- CtkEvent *ctk_event,
- unsigned int display_device_mask,
- char *name)
-{
- GObject *object;
- CtkDisplayDeviceDfp *ctk_display_device_dfp;
- GtkWidget *banner;
- GtkWidget *frame;
- GtkWidget *hbox, *vbox, *tmpbox;
-
- GtkWidget *button;
- GtkWidget *radio0;
- GtkWidget *radio1;
- GtkWidget *radio2;
- GtkWidget *alignment;
- GtkWidget *notebook;
- GtkWidget *nbox;
- GtkWidget *align;
-
- GtkWidget *table;
- ReturnStatus ret1, ret2;
- gint val_target, val_method;
-
- object = g_object_new(CTK_TYPE_DISPLAY_DEVICE_DFP, NULL);
- if (!object) return NULL;
-
- ctk_display_device_dfp = CTK_DISPLAY_DEVICE_DFP(object);
- ctk_display_device_dfp->handle = handle;
- ctk_display_device_dfp->ctk_event = ctk_event;
- ctk_display_device_dfp->ctk_config = ctk_config;
- ctk_display_device_dfp->display_device_mask = display_device_mask;
- ctk_display_device_dfp->name = g_strdup(name);
-
- /* cache the default scaling target & method values */
- ret1 =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING_DEFAULT_TARGET,
- &val_target);
- ret2 =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING_DEFAULT_METHOD,
- &val_method);
-
- if (ret1 != NvCtrlSuccess || ret2 != NvCtrlSuccess ||
- val_target == NV_CTRL_GPU_SCALING_TARGET_INVALID ||
- val_method == NV_CTRL_GPU_SCALING_METHOD_INVALID) {
- val_target = NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT;
- val_method = NV_CTRL_GPU_SCALING_METHOD_STRETCHED;
- }
-
- ctk_display_device_dfp->default_scaling_target = val_target;
- ctk_display_device_dfp->default_scaling_method = val_method;
-
- gtk_box_set_spacing(GTK_BOX(object), 10);
-
- /* banner */
-
- banner = ctk_banner_image_new(BANNER_ARTWORK_DFP);
- gtk_box_pack_start(GTK_BOX(object), banner, FALSE, FALSE, 0);
-
- /*
- * create the reset button (which we need while creating the
- * controls in this page so that we can set the button's
- * sensitivity), though we pack it at the bottom of the page
- */
-
- ctk_display_device_dfp->reset_button =
- gtk_button_new_with_label("Reset DFP Hardware Defaults");
-
- alignment = gtk_alignment_new(1, 1, 0, 0);
- gtk_container_add(GTK_CONTAINER(alignment),
- ctk_display_device_dfp->reset_button);
- gtk_box_pack_end(GTK_BOX(object), alignment, TRUE, TRUE, 0);
-
- g_signal_connect(G_OBJECT(ctk_display_device_dfp->reset_button),
- "clicked", G_CALLBACK(reset_button_clicked),
- (gpointer) ctk_display_device_dfp);
-
- ctk_config_set_tooltip(ctk_config, ctk_display_device_dfp->reset_button,
- ctk_help_create_reset_hardware_defaults_text("DFP", name));
-
- /* Create tabbed notebook for widget */
-
- notebook = gtk_notebook_new();
- gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
- align = gtk_alignment_new(0, 0, 1, 1);
- gtk_container_add(GTK_CONTAINER(align), notebook);
- gtk_box_pack_start(GTK_BOX(object), align, FALSE, FALSE, 0);
-
- /* Create first tab for dfp info */
-
- nbox = gtk_vbox_new(FALSE, FRAME_PADDING);
- gtk_container_set_border_width(GTK_CONTAINER(nbox), FRAME_PADDING);
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), nbox, gtk_label_new("Information"));
-
- /* create the hbox to store dfp info, scaling */
-
- hbox = gtk_hbox_new(FALSE, FRAME_PADDING);
- gtk_box_pack_start(GTK_BOX(nbox), hbox, FALSE, FALSE, FRAME_PADDING);
-
- /* DFP info */
-
- frame = gtk_frame_new("Flat Panel Information");
- gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 0);
-
- /*
- * insert a vbox between the frame and the widgets, so that the
- * widgets don't expand to fill all of the space within the
- * frame
- */
-
- tmpbox = gtk_vbox_new(FALSE, 5);
- gtk_container_set_border_width(GTK_CONTAINER(tmpbox), FRAME_PADDING);
- gtk_container_add(GTK_CONTAINER(frame), tmpbox);
-
- /* Make the txt widgets that will get updated */
- ctk_display_device_dfp->txt_chip_location = gtk_label_new("");
- ctk_display_device_dfp->txt_link = gtk_label_new("");
- ctk_display_device_dfp->txt_signal = gtk_label_new("");
- ctk_display_device_dfp->txt_native_resolution = gtk_label_new("");
- ctk_display_device_dfp->txt_best_fit_resolution = gtk_label_new("");
- ctk_display_device_dfp->txt_frontend_resolution = gtk_label_new("");
- ctk_display_device_dfp->txt_backend_resolution = gtk_label_new("");
- ctk_display_device_dfp->txt_refresh_rate = gtk_label_new("");
-
- /* Add information widget lines */
- {
- typedef struct {
- GtkWidget *label;
- GtkWidget *txt;
- const gchar *tooltip;
- } TextLineInfo;
-
- TextLineInfo lines[] = {
- {
- gtk_label_new("Chip location:"),
- ctk_display_device_dfp->txt_chip_location,
- __info_chip_location_help
- },
- {
- gtk_label_new("Connection link:"),
- ctk_display_device_dfp->txt_link,
- __info_link_help
- },
- {
- gtk_label_new("Signal:"),
- ctk_display_device_dfp->txt_signal,
- __info_signal_help
- },
- {
- gtk_label_new("Native Resolution:"),
- ctk_display_device_dfp->txt_native_resolution,
- __native_res_help,
- },
- {
- gtk_label_new("Best Fit Resolution:"),
- ctk_display_device_dfp->txt_best_fit_resolution,
- __best_fit_res_help,
- },
- {
- gtk_label_new("Frontend Resolution:"),
- ctk_display_device_dfp->txt_frontend_resolution,
- __frontend_res_help,
- },
- {
- gtk_label_new("Backend Resolution:"),
- ctk_display_device_dfp->txt_backend_resolution,
- __backend_res_help,
- },
- {
- gtk_label_new("Refresh Rate:"),
- ctk_display_device_dfp->txt_refresh_rate,
- __refresh_rate_help,
- },
- { NULL, NULL, NULL }
- };
- int i;
-
- GtkRequisition req;
- int max_width;
-
- /* Compute max width of lables and setup text alignments */
- max_width = 0;
- for (i = 0; lines[i].label; i++) {
- gtk_misc_set_alignment(GTK_MISC(lines[i].label), 0.0f, 0.5f);
- gtk_misc_set_alignment(GTK_MISC(lines[i].txt), 0.0f, 0.5f);
-
- gtk_widget_size_request(lines[i].label, &req);
- if (max_width < req.width) {
- max_width = req.width;
- }
- }
-
- /* Pack labels */
- for (i = 0; lines[i].label; i++) {
- GtkWidget *tmphbox;
-
- /* Add separators */
- if (i == 3 || i == 5 || i == 7) {
- GtkWidget *separator = gtk_hseparator_new();
- gtk_box_pack_start(GTK_BOX(tmpbox), separator,
- FALSE, FALSE, 0);
- }
-
- /* Set the label's width */
- gtk_widget_set_size_request(lines[i].label, max_width, -1);
-
- /* add the widgets for this line */
- tmphbox = gtk_hbox_new(FALSE, 5);
- gtk_box_pack_start(GTK_BOX(tmphbox), lines[i].label,
- FALSE, TRUE, 5);
- gtk_box_pack_start(GTK_BOX(tmphbox), lines[i].txt,
- FALSE, TRUE, 5);
-
- /* Include tooltips */
- if (lines[i].tooltip) {
- ctk_config_set_tooltip(ctk_config,
- lines[i].label,
- lines[i].tooltip);
- ctk_config_set_tooltip(ctk_config,
- lines[i].txt,
- lines[i].tooltip);
- }
- gtk_box_pack_start(GTK_BOX(tmpbox), tmphbox, FALSE, FALSE, 0);
- }
- }
-
-
- /* Flat Panel Scaling */
-
- frame = gtk_frame_new("Flat Panel Scaling");
- gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 0);
- ctk_display_device_dfp->scaling_frame = frame;
-
- vbox = gtk_vbox_new(FALSE, FRAME_PADDING);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), FRAME_PADDING);
- gtk_container_add(GTK_CONTAINER(frame), vbox);
-
- button = gtk_check_button_new_with_label("Force Full GPU Scaling");
- ctk_display_device_dfp->scaling_gpu_button = button;
- ctk_config_set_tooltip(ctk_config, button, __force_gpu_scaling_help);
-
- gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0);
-
- table = gtk_table_new(1, 2, FALSE);
- gtk_table_set_row_spacings(GTK_TABLE(table), 6);
- gtk_table_set_col_spacings(GTK_TABLE(table), 15);
-
- gtk_container_set_border_width(GTK_CONTAINER(table), 5);
-
- ctk_display_device_dfp->txt_scaling =
- add_table_row_with_help_text(table, ctk_config, __gpu_scaling_help,
- 0, 0,
- 0, 0.5, "Scaling:",
- 0, 0.5, "");
-
- gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
-
- frame = gtk_frame_new("GPU Scaling Method");
- gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
- vbox = gtk_vbox_new(FALSE, FRAME_PADDING);
- gtk_container_set_border_width(GTK_CONTAINER(vbox), FRAME_PADDING);
- gtk_container_add(GTK_CONTAINER(frame), vbox);
-
- g_signal_connect(G_OBJECT(button), "toggled",
- G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
-
- radio0 = make_scaling_radio_button
- (ctk_display_device_dfp, vbox, NULL, "Stretched",
- NV_CTRL_GPU_SCALING_METHOD_STRETCHED);
- ctk_config_set_tooltip(ctk_config, radio0, __gpu_scaling_stretched_help);
-
- radio1 = make_scaling_radio_button
- (ctk_display_device_dfp, vbox, radio0, "Centered",
- NV_CTRL_GPU_SCALING_METHOD_CENTERED);
- ctk_config_set_tooltip(ctk_config, radio1, __gpu_scaling_centered_help);
-
- radio2 = make_scaling_radio_button
- (ctk_display_device_dfp, vbox, radio1, "Aspect Ratio Scaled",
- NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED);
- ctk_config_set_tooltip(ctk_config, radio2, __gpu_scaling_ar_scaled_help);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_GPU_SCALING),
- G_CALLBACK(dfp_update_received),
- (gpointer) ctk_display_device_dfp);
-
- /* pack the EDID button */
-
- hbox = gtk_hbox_new(FALSE, 0);
- align = gtk_alignment_new(0, 1, 1, 1);
- gtk_container_add(GTK_CONTAINER(align), hbox);
- gtk_box_pack_end(GTK_BOX(nbox), align, FALSE, FALSE, 0);
- ctk_display_device_dfp->edid_box = hbox;
-
- /*
- * Create layout for second tab for dfp controls but don't
- * add the tab until we make sure its required
- */
-
- nbox = gtk_vbox_new(FALSE, FRAME_PADDING);
- gtk_container_set_border_width(GTK_CONTAINER(nbox), FRAME_PADDING);
-
- /* pack the color controls */
-
- ctk_display_device_dfp->color_controls =
- ctk_color_controls_new(handle, ctk_config, ctk_event,
- ctk_display_device_dfp->reset_button,
- display_device_mask, name);
-
- if (ctk_display_device_dfp->color_controls) {
- gtk_box_pack_start(GTK_BOX(nbox),
- ctk_display_device_dfp->color_controls,
- FALSE, FALSE, 0);
- }
-
- /* pack the dithering controls */
-
- ctk_display_device_dfp->dithering_controls =
- ctk_dithering_controls_new(handle, ctk_config, ctk_event,
- ctk_display_device_dfp->reset_button,
- display_device_mask, name);
-
- if (ctk_display_device_dfp->dithering_controls) {
- gtk_box_pack_start(GTK_BOX(nbox),
- ctk_display_device_dfp->dithering_controls,
- FALSE, FALSE, 0);
- }
-
- /* pack the image sliders */
-
- ctk_display_device_dfp->image_sliders =
- ctk_image_sliders_new(handle, ctk_config, ctk_event,
- ctk_display_device_dfp->reset_button,
- display_device_mask, name);
- if (ctk_display_device_dfp->image_sliders) {
- gtk_box_pack_start(GTK_BOX(nbox),
- ctk_display_device_dfp->image_sliders,
- FALSE, FALSE, 0);
- }
-
- /* If no controls are created, don't add a controls tab */
-
- if (ctk_display_device_dfp->color_controls ||
- ctk_display_device_dfp->dithering_controls ||
- ctk_display_device_dfp->image_sliders) {
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook),nbox,gtk_label_new("Controls"));
- }
-
- /* show the page */
-
- gtk_widget_show_all(GTK_WIDGET(object));
-
- /* Update the GUI */
-
- update_display_enabled_flag(ctk_display_device_dfp->handle,
- &ctk_display_device_dfp->display_enabled,
- ctk_display_device_dfp->display_device_mask);
-
- ctk_display_device_dfp_setup(ctk_display_device_dfp);
-
- /* handle enable/disable events on the display device */
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_ENABLED_DISPLAYS),
- G_CALLBACK(enabled_displays_received),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_GPU_SCALING_ACTIVE),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_DFP_SCALING_ACTIVE),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_FRONTEND_RESOLUTION),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_BACKEND_RESOLUTION),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_REFRESH_RATE),
- G_CALLBACK(info_update_received),
- (gpointer) ctk_display_device_dfp);
-
- return GTK_WIDGET(object);
-
-} /* ctk_display_device_dfp_new() */
-
-
-
-/*
- * make_scaling_radio_button() - create a radio button and plug it
- * into the scaling radio group.
- */
-
-static GtkWidget *make_scaling_radio_button(CtkDisplayDeviceDfp
- *ctk_display_device_dfp,
- GtkWidget *vbox,
- GtkWidget *prev_radio,
- char *label,
- gint value)
-{
- GtkWidget *radio;
-
- if (prev_radio) {
- radio = gtk_radio_button_new_with_label_from_widget
- (GTK_RADIO_BUTTON(prev_radio), label);
- } else {
- radio = gtk_radio_button_new_with_label(NULL, label);
- }
-
- gtk_box_pack_start(GTK_BOX(vbox), radio, FALSE, FALSE, 0);
-
- g_object_set_data(G_OBJECT(radio), "scaling_value",
- GINT_TO_POINTER(value));
-
- g_signal_connect(G_OBJECT(radio), "toggled",
- G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
-
- ctk_display_device_dfp->scaling_method_buttons[value -1] = radio;
-
- return radio;
-
-} /* make_scaling_radio_button() */
-
-
-
-/*
- * post_dfp_scaling_update() - helper function for
- * dfp_scaling_changed() and dfp_update_received(); this does whatever
- * work is necessary after scaling has been updated -- currently, this
- * just means posting a statusbar message.
- */
-
-static void
-post_dfp_scaling_update(CtkDisplayDeviceDfp *ctk_display_device_dfp,
- gint value)
-{
- int scaling_target = GET_SCALING_TARGET(value);
- int scaling_method = GET_SCALING_METHOD(value);
-
- static const char *scaling_target_string_table[] = {
- "Best Fit", /* NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT */
- "Native", /* NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE */
- };
-
- static const char *scaling_method_string_table[] = {
- "Stretched", /* NV_CTRL_GPU_SCALING_METHOD_STRETCHED */
- "Centered", /* NV_CTRL_GPU_SCALING_METHOD_CENTERED */
- "Aspect Ratio Scaled" /* NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED */
- };
-
- if ((scaling_target < NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT) ||
- (scaling_target > NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE)) return;
-
- if ((scaling_method < NV_CTRL_GPU_SCALING_METHOD_STRETCHED) ||
- (scaling_method > NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED)) return;
-
- ctk_config_statusbar_message(ctk_display_device_dfp->ctk_config,
- "Set Flat Panel Scaling for %s to %s %s.",
- ctk_display_device_dfp->name,
- scaling_method_string_table[scaling_method -1],
- scaling_target_string_table[scaling_target -1]);
-
-} /* post_dfp_scaling_update() */
-
-
-
-/*
- * dfp_scaling_changed() - callback function for changes to the
- * scaling target and method buttons.
- */
-
-static void dfp_scaling_changed(GtkWidget *widget, gpointer user_data)
-{
- CtkDisplayDeviceDfp *ctk_display_device_dfp =
- CTK_DISPLAY_DEVICE_DFP(user_data);
- gboolean enabled;
- int scaling_target;
- int scaling_method;
- gint value;
- int i;
- GtkWidget *radio;
-
- /* Get the scaling target */
-
- enabled = gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON(ctk_display_device_dfp->scaling_gpu_button));
-
- if (enabled) {
- scaling_target = NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE;
- } else {
- scaling_target = NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT;
- }
-
- /* Get the scaling method */
-
- scaling_method = NV_CTRL_GPU_SCALING_METHOD_INVALID;
-
- for (i = 0; i < NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED; i++) {
- radio = ctk_display_device_dfp->scaling_method_buttons[i];
-
- if (!radio) continue;
-
- enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio));
-
- if (enabled) {
- user_data = g_object_get_data(G_OBJECT(radio), "scaling_value");
- scaling_method = GPOINTER_TO_INT(user_data);
- break;
- }
- }
-
- if (scaling_method == NV_CTRL_GPU_SCALING_METHOD_INVALID) {
- return;
- }
-
- value = MAKE_SCALING_VALUE(scaling_target, scaling_method);
-
- NvCtrlSetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING, value);
-
- gtk_widget_set_sensitive(ctk_display_device_dfp->reset_button, TRUE);
-
- post_dfp_scaling_update(ctk_display_device_dfp, value);
-
-} /* dfp_scaling_changed() */
-
-
-
-/*
- * reset_button_clicked() - callback when the reset button is clicked
- */
-
-static void reset_button_clicked(GtkButton *button, gpointer user_data)
-{
- CtkDisplayDeviceDfp *ctk_display_device_dfp =
- CTK_DISPLAY_DEVICE_DFP(user_data);
-
- gint value;
-
- ctk_image_sliders_reset
- (CTK_IMAGE_SLIDERS(ctk_display_device_dfp->image_sliders));
-
- /*
- * if scaling is active, send the default scaling value to the
- * server and update the radio button group
- */
-
- if (ctk_display_device_dfp->active_attributes & __SCALING) {
-
- value =
- MAKE_SCALING_VALUE(ctk_display_device_dfp->default_scaling_target,
- ctk_display_device_dfp->default_scaling_method);
-
-
- NvCtrlSetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING, value);
-
- dfp_scaling_setup(ctk_display_device_dfp);
- }
-
- /* Reset the color configuration */
- if (ctk_display_device_dfp->color_controls) {
- ctk_color_controls_reset
- (CTK_COLOR_CONTROLS(ctk_display_device_dfp->color_controls));
- }
-
- /* Reset the dithering configuration */
- if (ctk_display_device_dfp->dithering_controls) {
- ctk_dithering_controls_reset
- (CTK_DITHERING_CONTROLS(ctk_display_device_dfp->dithering_controls));
- }
-
- /* Update the reset button */
-
- gtk_widget_set_sensitive(ctk_display_device_dfp->reset_button, FALSE);
-
- /* status bar message */
-
- ctk_config_statusbar_message(ctk_display_device_dfp->ctk_config,
- "Reset hardware defaults for %s.",
- ctk_display_device_dfp->name);
-
-} /* reset_button_clicked() */
-
-
-
-/*
- * dfp_scaling_update_buttons() - update the GUI state of the scaling button
- * group, making the specified scaling value active.
- */
-
-static void
-dfp_scaling_update_buttons(CtkDisplayDeviceDfp *ctk_display_device_dfp,
- gint value)
-{
- GtkWidget *b, *button = NULL;
- int scaling_target = GET_SCALING_TARGET(value);
- int scaling_method = GET_SCALING_METHOD(value);
- gboolean enabled;
- int i;
-
- if ((scaling_target < NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT) ||
- (scaling_target > NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE))
- return;
-
- if ((scaling_method < NV_CTRL_GPU_SCALING_METHOD_STRETCHED) ||
- (scaling_method > NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED))
- return;
-
- if (scaling_target == NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_NATIVE) {
- enabled = TRUE;
- } else {
- enabled = FALSE;
- }
-
- button = ctk_display_device_dfp->scaling_method_buttons[scaling_method -1];
-
- if (!button) return;
-
- /* turn off signal handling for all the scaling buttons */
-
- for (i = 0; i < NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED; i++) {
- b = ctk_display_device_dfp->scaling_method_buttons[i];
- if (!b) continue;
-
- g_signal_handlers_block_by_func
- (G_OBJECT(b), G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
- }
-
- g_signal_handlers_block_by_func
- (G_OBJECT(ctk_display_device_dfp->scaling_gpu_button),
- G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
-
- /* set the appropriate button active */
-
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
- gtk_toggle_button_set_active
- (GTK_TOGGLE_BUTTON(ctk_display_device_dfp->scaling_gpu_button),
- enabled);
-
- /* turn on signal handling for all the scaling buttons */
-
- for (i = 0; i < NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED; i++) {
- b = ctk_display_device_dfp->scaling_method_buttons[i];
- if (!b) continue;
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(b), G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
- }
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(ctk_display_device_dfp->scaling_gpu_button),
- G_CALLBACK(dfp_scaling_changed),
- (gpointer) ctk_display_device_dfp);
-
-} /* dfp_scaling_update_buttons() */
-
-
-
-/*
- * dfp_update_received() - callback function for changed DFP
- * settings; this is called when we receive an event indicating that
- * another NV-CONTROL client changed any of the settings that we care
- * about.
- */
-
-static void dfp_update_received(GtkObject *object, gpointer arg1,
- gpointer user_data)
-{
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
- CtkDisplayDeviceDfp *ctk_display_device_dfp =
- CTK_DISPLAY_DEVICE_DFP(user_data);
-
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask &
- ctk_display_device_dfp->display_device_mask)) {
- return;
- }
-
- switch (event_struct->attribute) {
- case NV_CTRL_GPU_SCALING:
- dfp_scaling_update_buttons(ctk_display_device_dfp,
- event_struct->value);
- post_dfp_scaling_update(ctk_display_device_dfp, event_struct->value);
- break;
-
- default:
- break;
- }
-
-} /* dfp_update_received() */
-
-
-
-/*
- * ctk_display_device_dfp_create_help() - construct the DFP display
- * device help page
- */
-
-GtkTextBuffer *ctk_display_device_dfp_create_help(GtkTextTagTable *table,
- CtkDisplayDeviceDfp
- *ctk_display_device_dfp)
-{
- GtkTextIter i;
- GtkTextBuffer *b;
- GtkTooltipsData *td;
-
- b = gtk_text_buffer_new(table);
-
- gtk_text_buffer_get_iter_at_offset(b, &i, 0);
-
- ctk_help_title(b, &i, "%s Help", ctk_display_device_dfp->name);
-
- ctk_help_heading(b, &i, "Flat Panel Information");
- ctk_help_para(b, &i, __info_help);
-
- ctk_help_term(b, &i, "Chip Location");
- ctk_help_para(b, &i, __info_chip_location_help);
-
- ctk_help_term(b, &i, "Link");
- ctk_help_para(b, &i, __info_link_help);
-
- ctk_help_term(b, &i, "Signal");
- ctk_help_para(b, &i, __info_signal_help);
-
- ctk_help_term(b, &i, "Native Resolution");
- ctk_help_para(b, &i, __native_res_help);
-
- ctk_help_term(b, &i, "Best Fit Resolution");
- ctk_help_para(b, &i, __best_fit_res_help);
-
- ctk_help_term(b, &i, "Frontend Resolution");
- ctk_help_para(b, &i, __frontend_res_help);
-
- ctk_help_term(b, &i, "Backend Resolution");
- ctk_help_para(b, &i, __backend_res_help);
-
- ctk_help_term(b, &i, "Refresh Rate");
- ctk_help_para(b, &i, __refresh_rate_help);
-
- ctk_help_heading(b, &i, "Flat Panel Scaling");
- ctk_help_para(b, &i, __scaling_help);
-
- ctk_help_term(b, &i, "Force Full GPU Scaling");
- ctk_help_para(b, &i, __force_gpu_scaling_help);
-
- ctk_help_term(b, &i, "Scaling");
- ctk_help_para(b, &i, __gpu_scaling_help);
-
- ctk_help_term(b, &i, "Stretched");
- ctk_help_para(b, &i, __gpu_scaling_stretched_help);
-
- ctk_help_term(b, &i, "Centered");
- ctk_help_para(b, &i, __gpu_scaling_centered_help);
-
- ctk_help_term(b, &i, "Aspect Ratio Scaled");
- ctk_help_para(b, &i, __gpu_scaling_ar_scaled_help);
-
- if (ctk_display_device_dfp->edid) {
- add_acquire_edid_help(b, &i);
- }
-
- if (ctk_display_device_dfp->color_controls) {
- add_color_controls_help
- (CTK_COLOR_CONTROLS(ctk_display_device_dfp->color_controls), b, &i);
- }
-
- if (ctk_display_device_dfp->dithering_controls) {
- add_dithering_controls_help
- (CTK_DITHERING_CONTROLS(ctk_display_device_dfp->dithering_controls), b, &i);
- }
-
- add_image_sliders_help
- (CTK_IMAGE_SLIDERS(ctk_display_device_dfp->image_sliders), b, &i);
-
- td = gtk_tooltips_data_get(GTK_WIDGET(ctk_display_device_dfp->reset_button));
- ctk_help_reset_hardware_defaults (b, &i, td->tip_text);
-
- ctk_help_finish(b);
-
- return b;
-
-} /* ctk_display_device_dfp_create_help() */
-
-
-static void update_link(CtkDisplayDeviceDfp *ctk_display_device_dfp)
-{
- ReturnStatus ret;
- gint val, signal_type = ctk_display_device_dfp->signal_type;
- const char *link = "Unknown";
- char tmp[32];
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FLATPANEL_LINK, &val);
- if (ret == NvCtrlSuccess) {
- if (signal_type == NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT) {
- int lanes;
-
- lanes = val + 1;
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_DISPLAYPORT_LINK_RATE, &val);
- if (ret == NvCtrlSuccess && val == NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED) {
- link = "Disabled";
- } else {
- const char *bw = "unknown bandwidth";
-
- if (ret == NvCtrlSuccess) {
- switch (val) {
- case NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS:
- bw = "1.62 Gbps";
- break;
- case NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS:
- bw = "2.70 Gbps";
- break;
- }
- }
-
- snprintf(tmp, 32, "%d lane%s @ %s", lanes, lanes == 1 ? "" : "s",
- bw);
- link = tmp;
- }
- } else {
- // LVDS or TMDS
- switch(val) {
- case NV_CTRL_FLATPANEL_LINK_SINGLE:
- link = "Single";
- break;
- case NV_CTRL_FLATPANEL_LINK_DUAL:
- link = "Dual";
- break;
- }
- }
- }
-
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_link), link);
-}
-
-
-static void callback_link_changed(GtkObject *object, gpointer arg1,
- gpointer user_data)
-{
- CtkDisplayDeviceDfp *ctk_display_device_dfp =
- CTK_DISPLAY_DEVICE_DFP(user_data);
-
- update_link(ctk_display_device_dfp);
-}
-
-/*
- * dfp_info_setup() -
- *
- *
- */
-static void dfp_info_setup(CtkDisplayDeviceDfp *ctk_display_device_dfp)
-{
- ReturnStatus ret;
- gint val, gpu_scaling, dfp_scaling;
- char *chip_location, *link, *signal;
- char *scaling;
- CtkEvent *ctk_event = ctk_display_device_dfp->ctk_event;
-
- chip_location = link = signal = "Unknown";
- scaling = "Unknown";
-
- /* Chip location */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FLATPANEL_CHIP_LOCATION, &val);
- if (ret == NvCtrlSuccess) {
- switch (val) {
- case NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL:
- chip_location = "Internal";
- break;
- case NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL:
- chip_location = "External";
- break;
- }
- }
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_chip_location), chip_location);
-
- /* Signal */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FLATPANEL_SIGNAL, &val);
- if (ret == NvCtrlSuccess) {
- switch (val) {
- case NV_CTRL_FLATPANEL_SIGNAL_LVDS:
- signal = "LVDS";
- break;
- case NV_CTRL_FLATPANEL_SIGNAL_TMDS:
- signal = "TMDS";
- break;
- case NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT:
- signal = "DisplayPort";
- break;
- }
- }
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_signal), signal);
- ctk_display_device_dfp->signal_type = val;
-
- /* Link */
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_FLATPANEL_LINK),
- G_CALLBACK(callback_link_changed),
- (gpointer) ctk_display_device_dfp);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_DISPLAYPORT_LINK_RATE),
- G_CALLBACK(callback_link_changed),
- (gpointer) ctk_display_device_dfp);
-
- update_link(ctk_display_device_dfp);
-
- /* Native Resolution */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FLATPANEL_NATIVE_RESOLUTION, &val);
- if (ret == NvCtrlSuccess) {
- gchar *resolution =
- g_strdup_printf("%dx%d", (val >> 16), (val & 0xFFFF));
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_native_resolution),
- resolution);
- g_free(resolution);
- } else {
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_native_resolution),
- "Unknown");
- }
-
- /* Frontend Resolution */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FRONTEND_RESOLUTION, &val);
- if (ret == NvCtrlSuccess) {
- gchar *resolution =
- g_strdup_printf("%dx%d", (val >> 16), (val & 0xFFFF));
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_frontend_resolution),
- resolution);
- g_free(resolution);
- } else {
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_frontend_resolution),
- "Unknown");
- }
-
- /* Best Fit Resolution */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION, &val);
- if (ret == NvCtrlSuccess) {
- gchar *resolution =
- g_strdup_printf("%dx%d", (val >> 16), (val & 0xFFFF));
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_best_fit_resolution),
- resolution);
- g_free(resolution);
- } else {
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_best_fit_resolution),
- "Unknown");
- }
-
- /* Backend Resolution */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_BACKEND_RESOLUTION, &val);
- if (ret == NvCtrlSuccess) {
- gchar *resolution =
- g_strdup_printf("%dx%d", (val >> 16), (val & 0xFFFF));
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_backend_resolution),
- resolution);
- g_free(resolution);
- } else {
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_backend_resolution),
- "Unknown");
- }
- /* Refresh Rate */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_REFRESH_RATE, &val);
- if (ret == NvCtrlSuccess) {
- char str[32];
- float fvalue = ((float)(val)) / 100.0f;
- snprintf(str, 32, "%.2f Hz", fvalue);
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_refresh_rate),
- str);
- } else {
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_refresh_rate),
- "Unknown");
-
- }
-
- /* GPU/DFP Scaling */
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING_ACTIVE,
- &gpu_scaling);
- if (ret == NvCtrlSuccess) {
- ret = NvCtrlGetDisplayAttribute
- (ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_DFP_SCALING_ACTIVE, &dfp_scaling);
- }
- if (ret != NvCtrlSuccess) {
- scaling = "Unknown";
- } else {
- if (gpu_scaling && dfp_scaling) {
- scaling = "GPU & DFP";
- } else if (gpu_scaling) {
- scaling = "GPU";
- } else if (dfp_scaling) {
- scaling = "DFP";
- } else {
- scaling = "None";
- }
- }
-
- gtk_label_set_text
- (GTK_LABEL(ctk_display_device_dfp->txt_scaling), scaling);
-
-} /* dfp_info_setup() */
-
-
-
-/*
- * dfp_scaling_setup() - Update GUI to reflect X server settings of
- * DFP Scaling.
- */
-static void dfp_scaling_setup(CtkDisplayDeviceDfp *ctk_display_device_dfp)
-{
- ReturnStatus ret;
- int val;
-
- ret =
- NvCtrlGetDisplayAttribute(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->display_device_mask,
- NV_CTRL_GPU_SCALING, &val);
- if (ret != NvCtrlSuccess) {
- gtk_widget_set_sensitive(ctk_display_device_dfp->scaling_frame, FALSE);
- gtk_widget_hide(ctk_display_device_dfp->scaling_frame);
- ctk_display_device_dfp->active_attributes &= ~__SCALING;
- return;
- }
-
- gtk_widget_show(ctk_display_device_dfp->scaling_frame);
- ctk_display_device_dfp->active_attributes |= __SCALING;
-
- gtk_widget_set_sensitive(ctk_display_device_dfp->scaling_frame, TRUE);
-
- dfp_scaling_update_buttons(ctk_display_device_dfp, val);
-
-} /* dfp_scaling_setup() */
-
-
-
-/*
- * Updates the display device page to reflect the current
- * configuration of the display device.
- */
-static void ctk_display_device_dfp_setup(CtkDisplayDeviceDfp
- *ctk_display_device_dfp)
-{
- /* Update DFP-specific settings */
-
- dfp_info_setup(ctk_display_device_dfp);
-
- dfp_scaling_setup(ctk_display_device_dfp);
-
-
- /* Update the image sliders */
-
- ctk_image_sliders_setup
- (CTK_IMAGE_SLIDERS(ctk_display_device_dfp->image_sliders));
-
-
- /* update acquire EDID button */
-
- if (ctk_display_device_dfp->edid) {
- GList *list;
-
- list = gtk_container_get_children
- (GTK_CONTAINER(ctk_display_device_dfp->edid_box));
- if (list) {
- gtk_container_remove
- (GTK_CONTAINER(ctk_display_device_dfp->edid_box),
- (GtkWidget *)(list->data));
- g_list_free(list);
- }
- }
-
- ctk_display_device_dfp->edid =
- ctk_edid_new(ctk_display_device_dfp->handle,
- ctk_display_device_dfp->ctk_config,
- ctk_display_device_dfp->ctk_event,
- ctk_display_device_dfp->reset_button,
- ctk_display_device_dfp->display_device_mask,
- ctk_display_device_dfp->name);
-
- if (ctk_display_device_dfp->edid) {
- gtk_box_pack_start(GTK_BOX(ctk_display_device_dfp->edid_box),
- ctk_display_device_dfp->edid, TRUE, TRUE, 0);
- }
-
- /* Update the color control setup */
-
- ctk_color_controls_setup
- (CTK_COLOR_CONTROLS(ctk_display_device_dfp->color_controls));
-
- /* Update the dithering setup */
-
- ctk_dithering_controls_setup
- (CTK_DITHERING_CONTROLS(ctk_display_device_dfp->dithering_controls));
-
- /* update the reset button */
-
- gtk_widget_set_sensitive(ctk_display_device_dfp->reset_button, FALSE);
-
-} /* ctk_display_device_dfp_setup() */
-
-
-
-/*
- * When the list of enabled displays on the GPU changes,
- * this page should disable/enable access based on whether
- * or not the display device is enabled.
- */
-static void enabled_displays_received(GtkObject *object, gpointer arg1,
- gpointer user_data)
-{
- CtkDisplayDeviceDfp *ctk_object = CTK_DISPLAY_DEVICE_DFP(user_data);
-
- /* Requery display information only if display disabled */
-
- update_display_enabled_flag(ctk_object->handle,
- &ctk_object->display_enabled,
- ctk_object->display_device_mask);
-
- if (ctk_object->display_enabled) {
- return;
- }
-
- ctk_display_device_dfp_setup(ctk_object);
-
-} /* enabled_displays_received() */
-
-
-/*
- * When DFP/GPU scaling activation and/or resolution changes occur,
- * we should update the GUI to reflect the current state.
- */
-static void info_update_received(GtkObject *object, gpointer arg1,
- gpointer user_data)
-{
- CtkDisplayDeviceDfp *ctk_object = CTK_DISPLAY_DEVICE_DFP(user_data);
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
-
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask & ctk_object->display_device_mask)) {
- return;
- }
-
- dfp_info_setup(ctk_object);
-}
diff --git a/src/gtk+-2.x/ctkdisplaydevice-dfp.h b/src/gtk+-2.x/ctkdisplaydevice-dfp.h
deleted file mode 100644
index 7286a95..0000000
--- a/src/gtk+-2.x/ctkdisplaydevice-dfp.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
- * and Linux systems.
- *
- * Copyright (C) 2004 NVIDIA Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses>.
- */
-
-#ifndef __CTK_DISPLAYDEVICE_DFP_H__
-#define __CTK_DISPLAYDEVICE_DFP_H__
-
-#include "ctkevent.h"
-#include "ctkconfig.h"
-
-G_BEGIN_DECLS
-
-#define CTK_TYPE_DISPLAY_DEVICE_DFP (ctk_display_device_dfp_get_type())
-
-#define CTK_DISPLAY_DEVICE_DFP(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), CTK_TYPE_DISPLAY_DEVICE_DFP, \
- CtkDisplayDeviceDfp))
-
-#define CTK_DISPLAY_DEVICE_DFP_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), CTK_TYPE_DISPLAY_DEVICE_DFP, \
- CtkDisplayDeviceDfpClass))
-
-#define CTK_IS_DISPLAY_DEVICE_DFP(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CTK_TYPE_DISPLAY_DEVICE_DFP))
-
-#define CTK_IS_DISPLAY_DEVICE_DFP_CLASS(class) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), CTK_TYPE_DISPLAY_DEVICE_DFP))
-
-#define CTK_DISPLAY_DEVICE_DFP_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_DISPLAY_DEVICE_DFP, \
- CtkDisplayDeviceDfpClass))
-
-
-typedef struct _CtkDisplayDeviceDfp CtkDisplayDeviceDfp;
-typedef struct _CtkDisplayDeviceDfpClass CtkDisplayDeviceDfpClass;
-
-struct _CtkDisplayDeviceDfp
-{
- GtkVBox parent;
-
- NvCtrlAttributeHandle *handle;
- CtkConfig *ctk_config;
- CtkEvent *ctk_event;
- GtkWidget *image_sliders;
- GtkWidget *reset_button;
- GtkWidget *edid_box;
- GtkWidget *edid;
- GtkWidget *dithering_controls;
- GtkWidget *color_controls;
-
- GtkWidget *txt_chip_location;
- GtkWidget *txt_link;
- GtkWidget *txt_signal;
- GtkWidget *txt_native_resolution;
- GtkWidget *txt_frontend_resolution;
- GtkWidget *txt_best_fit_resolution;
- GtkWidget *txt_backend_resolution;
-
- GtkWidget *txt_refresh_rate;
- GtkWidget *txt_scaling;
-
- GtkWidget *scaling_frame;
- GtkWidget *scaling_gpu_button;
- GtkWidget *scaling_method_buttons[NV_CTRL_GPU_SCALING_METHOD_ASPECT_SCALED];
-
- unsigned int display_device_mask;
- gboolean display_enabled;
- unsigned int active_attributes;
-
- char *name;
- gint default_scaling_target;
- gint default_scaling_method;
- gint signal_type;
-};
-
-struct _CtkDisplayDeviceDfpClass
-{
- GtkVBoxClass parent_class;
-};
-
-GType ctk_display_device_dfp_get_type (void) G_GNUC_CONST;
-GtkWidget* ctk_display_device_dfp_new (NvCtrlAttributeHandle *,
- CtkConfig *, CtkEvent *,
- unsigned int, char *);
-
-GtkTextBuffer *ctk_display_device_dfp_create_help(GtkTextTagTable *,
- CtkDisplayDeviceDfp *);
-
-G_END_DECLS
-
-#endif /* __CTK_DISPLAYDEVICE_DFP_H__ */
diff --git a/src/gtk+-2.x/ctkdisplaydevice-tv.c b/src/gtk+-2.x/ctkdisplaydevice-tv.c
index febfdfe..c7310dd 100644
--- a/src/gtk+-2.x/ctkdisplaydevice-tv.c
+++ b/src/gtk+-2.x/ctkdisplaydevice-tv.c
@@ -75,3 +75,3 @@ static void adjustment_value_changed(GtkAdjustment *adjustment,
-static void reset_defaults(GtkButton *button, gpointer user_data);
+static void reset_button_clicked(GtkButton *button, gpointer user_data);
@@ -106,2 +106,3 @@ GType ctk_display_device_tv_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -147,3 +148,2 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
CtkEvent *ctk_event,
- unsigned int display_device_mask,
char *name)
@@ -167,3 +167,2 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
ctk_display_device_tv->ctk_event = ctk_event;
- ctk_display_device_tv->display_device_mask = display_device_mask;
ctk_display_device_tv->name = g_strdup(name);
@@ -347,3 +346,3 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
ctk_display_device_tv->reset_button,
- display_device_mask, name);
+ name);
if (ctk_display_device_tv->image_sliders) {
@@ -357,3 +356,3 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
g_signal_connect(G_OBJECT(ctk_display_device_tv->reset_button), "clicked",
- G_CALLBACK(reset_defaults),
+ G_CALLBACK(reset_button_clicked),
(gpointer) ctk_display_device_tv);
@@ -375,5 +374,12 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
+ ctk_display_device_tv->edid =
+ ctk_edid_new(ctk_display_device_tv->handle,
+ ctk_display_device_tv->ctk_config,
+ ctk_display_device_tv->ctk_event,
+ ctk_display_device_tv->name);
+
hbox = gtk_hbox_new(FALSE, 0);
gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, 0);
- ctk_display_device_tv->edid_box = hbox;
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_display_device_tv->edid,
+ TRUE, TRUE, 0);
@@ -386,4 +392,3 @@ GtkWidget* ctk_display_device_tv_new(NvCtrlAttributeHandle *handle,
update_display_enabled_flag(ctk_display_device_tv->handle,
- &ctk_display_device_tv->display_enabled,
- ctk_display_device_tv->display_device_mask);
+ &ctk_display_device_tv->display_enabled);
@@ -507,7 +512,6 @@ static void adjustment_value_changed(GtkAdjustment *adjustment,
attribute = GPOINTER_TO_INT(user_data);
-
- NvCtrlSetDisplayAttribute(ctk_display_device_tv->handle,
- ctk_display_device_tv->display_device_mask,
- attribute, (int) value);
-
+
+ NvCtrlSetAttribute(ctk_display_device_tv->handle,
+ attribute, (int) value);
+
post_adjustment_value_changed(adjustment, ctk_display_device_tv, value);
@@ -539,6 +543,4 @@ static void reset_slider(CtkDisplayDeviceTv *ctk_display_device_tv,
attribute = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj), "attribute"));
-
- ret = NvCtrlGetDisplayAttribute(ctk_display_device_tv->handle,
- ctk_display_device_tv->display_device_mask,
- attribute, &val);
+
+ ret = NvCtrlGetAttribute(ctk_display_device_tv->handle, attribute, &val);
if (ret != NvCtrlSuccess) return;
@@ -574,4 +576,2 @@ static void reset_sliders(CtkDisplayDeviceTv *ctk_display_device_tv)
- gtk_widget_set_sensitive(ctk_display_device_tv->reset_button, FALSE);
-
ctk_config_statusbar_message(ctk_display_device_tv->ctk_config,
@@ -584,3 +584,3 @@ static void reset_sliders(CtkDisplayDeviceTv *ctk_display_device_tv)
/*
- * reset_defaults() - called when the "reset defaults" button is
+ * reset_button_clicked() - called when the "reset defaults" button is
* pressed; tells the X server to reset its defaults, and then resets
@@ -589,3 +589,3 @@ static void reset_sliders(CtkDisplayDeviceTv *ctk_display_device_tv)
-static void reset_defaults(GtkButton *button, gpointer user_data)
+static void reset_button_clicked(GtkButton *button, gpointer user_data)
{
@@ -595,2 +595,8 @@ static void reset_defaults(GtkButton *button, gpointer user_data)
+
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_display_device_tv->reset_button, FALSE);
+
/* Make sure something is active */
@@ -606,15 +612,12 @@ static void reset_defaults(GtkButton *button, gpointer user_data)
if (active) {
- NvCtrlSetDisplayAttribute(ctk_display_device_tv->handle,
- ctk_display_device_tv->display_device_mask,
- NV_CTRL_TV_RESET_SETTINGS, 1);
- }
-
- if (ctk_display_device_tv->image_sliders) {
- ctk_image_sliders_reset
- (CTK_IMAGE_SLIDERS(ctk_display_device_tv->image_sliders));
+ NvCtrlSetAttribute(ctk_display_device_tv->handle,
+ NV_CTRL_TV_RESET_SETTINGS, 1);
}
+ ctk_image_sliders_reset
+ (CTK_IMAGE_SLIDERS(ctk_display_device_tv->image_sliders));
+
reset_sliders(ctk_display_device_tv);
-} /* reset_defaults() */
+} /* reset_button_clicked() */
@@ -662,2 +665,3 @@ static void value_received(GtkObject *object, gpointer arg1,
reset_sliders(ctk_display_device_tv);
+ ctk_display_device_tv_setup(ctk_display_device_tv);
return;
@@ -735,6 +739,4 @@ GtkTextBuffer *ctk_display_device_tv_create_help(GtkTextTagTable *table,
- if (ctk_display_device_tv->edid) {
- add_acquire_edid_help(b, &i);
- }
-
+ add_acquire_edid_help(b, &i);
+
td = gtk_tooltips_data_get(GTK_WIDGET(ctk_display_device_tv->reset_button));
@@ -759,3 +761,2 @@ static void setup_scale(CtkDisplayDeviceTv *ctk_display_device_tv,
NvCtrlAttributeHandle *handle = ctk_display_device_tv->handle;
- unsigned int mask = ctk_display_device_tv->display_device_mask;
int val;
@@ -765,7 +766,6 @@ static void setup_scale(CtkDisplayDeviceTv *ctk_display_device_tv,
/* Read settings from X server */
- ret0 = NvCtrlGetValidDisplayAttributeValues(handle, mask,
- attribute, &valid);
-
- ret1 = NvCtrlGetDisplayAttribute(handle, mask, attribute, &val);
-
+ ret0 = NvCtrlGetValidAttributeValues(handle, attribute, &valid);
+
+ ret1 = NvCtrlGetAttribute(handle, attribute, &val);
+
if ((ret0 == NvCtrlSuccess) && (ret1 == NvCtrlSuccess) &&
@@ -811,25 +811,36 @@ static void ctk_display_device_tv_setup(CtkDisplayDeviceTv
{
- /* Update Information Frame */
-
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_display_device_tv->reset_button, FALSE);
+
+
+ /* Update info */
+
tv_info_setup(ctk_display_device_tv);
- /* Update sliders */
-
+ /* update acquire EDID button */
+
+ ctk_edid_setup(CTK_EDID(ctk_display_device_tv->edid));
+
+
+ /* Update controls */
+
/* NV_CTRL_TV_OVERSCAN */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_OVERSCAN,
ctk_display_device_tv->overscan);
-
+
/* NV_CTRL_TV_FLICKER_FILTER */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_FLICKER_FILTER,
ctk_display_device_tv->flicker_filter);
-
+
/* NV_CTRL_TV_BRIGHTNESS */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_BRIGHTNESS,
ctk_display_device_tv->brightness);
-
+
/* NV_CTRL_TV_HUE */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_HUE,
@@ -838,3 +849,3 @@ static void ctk_display_device_tv_setup(CtkDisplayDeviceTv
/* NV_CTRL_TV_CONTRAST */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_CONTRAST,
@@ -843,3 +854,3 @@ static void ctk_display_device_tv_setup(CtkDisplayDeviceTv
/* NV_CTRL_TV_SATURATION */
-
+
setup_scale(ctk_display_device_tv, NV_CTRL_TV_SATURATION,
@@ -847,4 +858,2 @@ static void ctk_display_device_tv_setup(CtkDisplayDeviceTv
- /* Update the image sliders */
-
ctk_image_sliders_setup
@@ -852,35 +861,2 @@ static void ctk_display_device_tv_setup(CtkDisplayDeviceTv
-
- /* update acquire EDID button */
-
- if (ctk_display_device_tv->edid) {
- GList *list;
- list = gtk_container_get_children
- (GTK_CONTAINER(ctk_display_device_tv->edid_box));
- if (list) {
- gtk_container_remove
- (GTK_CONTAINER(ctk_display_device_tv->edid_box),
- (GtkWidget *)(list->data));
- g_list_free(list);
- }
- }
-
- ctk_display_device_tv->edid =
- ctk_edid_new(ctk_display_device_tv->handle,
- ctk_display_device_tv->ctk_config,
- ctk_display_device_tv->ctk_event,
- ctk_display_device_tv->reset_button,
- ctk_display_device_tv->display_device_mask,
- ctk_display_device_tv->name);
-
- if (ctk_display_device_tv->edid) {
- gtk_box_pack_start(GTK_BOX(ctk_display_device_tv->edid_box),
- ctk_display_device_tv->edid, TRUE, TRUE, 0);
- }
-
-
- /* update the reset button */
-
- gtk_widget_set_sensitive(ctk_display_device_tv->reset_button, FALSE);
-
} /* ctk_display_device_tv_setup() */
@@ -895,7 +871,5 @@ static void tv_info_setup(CtkDisplayDeviceTv *ctk_display_device_tv)
- ret = NvCtrlGetStringDisplayAttribute
- (ctk_display_device_tv->handle,
- ctk_display_device_tv->display_device_mask,
- NV_CTRL_STRING_TV_ENCODER_NAME,
- &str);
+ ret = NvCtrlGetStringDisplayAttribute(ctk_display_device_tv->handle, 0,
+ NV_CTRL_STRING_TV_ENCODER_NAME,
+ &str);
if (ret == NvCtrlSuccess) {
@@ -907,10 +881,8 @@ static void tv_info_setup(CtkDisplayDeviceTv *ctk_display_device_tv)
}
-
+
/* NV_CTRL_REFRESH_RATE */
-
- ret = NvCtrlGetDisplayAttribute
- (ctk_display_device_tv->handle,
- ctk_display_device_tv->display_device_mask,
- NV_CTRL_REFRESH_RATE,
- &val);
+
+ ret = NvCtrlGetAttribute(ctk_display_device_tv->handle,
+ NV_CTRL_REFRESH_RATE,
+ &val);
if (ret == NvCtrlSuccess) {
@@ -940,8 +912,3 @@ static void enabled_displays_received(GtkObject *object, gpointer arg1,
update_display_enabled_flag(ctk_object->handle,
- &ctk_object->display_enabled,
- ctk_object->display_device_mask);
-
- if (ctk_object->display_enabled) {
- return;
- }
+ &ctk_object->display_enabled);
@@ -959,9 +926,2 @@ static void info_update_received(GtkObject *object, gpointer arg1,
CtkDisplayDeviceTv *ctk_object = CTK_DISPLAY_DEVICE_TV(user_data);
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
-
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask & ctk_object->display_device_mask)) {
- return;
- }
diff --git a/src/gtk+-2.x/ctkdisplaydevice-tv.h b/src/gtk+-2.x/ctkdisplaydevice-tv.h
index b37deaf..65742ee 100644
--- a/src/gtk+-2.x/ctkdisplaydevice-tv.h
+++ b/src/gtk+-2.x/ctkdisplaydevice-tv.h
@@ -58,3 +58,2 @@ struct _CtkDisplayDeviceTv
NvCtrlAttributeHandle *handle;
- unsigned int display_device_mask;
gboolean display_enabled;
@@ -67,3 +66,3 @@ struct _CtkDisplayDeviceTv
GtkWidget *flicker_filter;
-
+
GtkWidget *brightness;
@@ -76,3 +75,2 @@ struct _CtkDisplayDeviceTv
- GtkWidget *edid_box;
GtkWidget *edid;
@@ -89,3 +87,3 @@ GtkWidget* ctk_display_device_tv_new (NvCtrlAttributeHandle *,
CtkConfig *, CtkEvent *,
- unsigned int, char *);
+ char *);
diff --git a/src/gtk+-2.x/ctkdisplaydevice.c b/src/gtk+-2.x/ctkdisplaydevice.c
new file mode 100644
index 0000000..3421e75
--- /dev/null
+++ b/src/gtk+-2.x/ctkdisplaydevice.c
@@ -0,0 +1,708 @@
+/*
+ * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
+ * and Linux systems.
+ *
+ * Copyright (C) 2004 NVIDIA Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses>.
+ */
+
+#include <gtk/gtk.h>
+#include <NvCtrlAttributes.h>
+
+#include "ctkbanner.h"
+
+#include "ctkdisplaydevice.h"
+
+#include "ctkditheringcontrols.h"
+#include "ctkcolorcontrols.h"
+#include "ctkimagesliders.h"
+#include "ctkedid.h"
+#include "ctkconfig.h"
+#include "ctkhelp.h"
+#include "ctkutils.h"
+#include <stdio.h>
+
+static void ctk_display_device_class_init(CtkDisplayDeviceClass *);
+static void ctk_display_device_finalize(GObject *);
+
+static void reset_button_clicked(GtkButton *button, gpointer user_data);
+
+static void update_device_info(CtkDisplayDevice *ctk_object);
+
+static void display_device_setup(CtkDisplayDevice *ctk_object);
+
+static void enabled_displays_received(GtkObject *object, gpointer arg1,
+ gpointer user_data);
+
+static void info_update_received(GtkObject *object, gpointer arg1,
+ gpointer user_data);
+
+
+#define FRAME_PADDING 5
+
+static const char *__info_help =
+"This section describes basic information about the connection to the display "
+"device.";
+
+static const char *__info_chip_location_help =
+"Report whether the display device is driven by the on-chip controller "
+"(internal), or a separate controller chip elsewhere on the graphics "
+"board (external).";
+
+static const char *__info_link_help =
+"For DVI connections, reports whether the specified display device is "
+"driven by a single link or dual link connection. For DisplayPort "
+"connections, reports the bandwidth of the connection.";
+
+static const char *__info_signal_help =
+"Report whether the flat panel is driven by an LVDS, TMDS, or DisplayPort "
+"signal.";
+
+static const char * __native_res_help =
+"The Native Resolution is the width and height in pixels that the display "
+"device uses to display the image. All other resolutions must be scaled "
+"to this resolution by the GPU and/or the device's built-in scaler.";
+
+static const char * __refresh_rate_help =
+"The refresh rate displays the rate at which the screen is currently "
+"refreshing the image.";
+
+GType ctk_display_device_get_type(void)
+{
+ static GType ctk_object_type = 0;
+
+ if (!ctk_object_type) {
+ static const GTypeInfo ctk_object_info = {
+ sizeof (CtkDisplayDeviceClass),
+ NULL, /* base_init */
+ NULL, /* base_finalize */
+ (GClassInitFunc) ctk_display_device_class_init,
+ NULL, /* class_finalize, */
+ NULL, /* class_data */
+ sizeof (CtkDisplayDevice),
+ 0, /* n_preallocs */
+ NULL, /* instance_init */
+ NULL /* value_table */
+ };
+
+ ctk_object_type = g_type_register_static(GTK_TYPE_VBOX,
+ "CtkDisplayDevice",
+ &ctk_object_info, 0);
+ }
+
+ return ctk_object_type;
+}
+
+static void ctk_display_device_class_init(
+ CtkDisplayDeviceClass *ctk_object_class
+)
+{
+ GObjectClass *gobject_class = (GObjectClass *)ctk_object_class;
+ gobject_class->finalize = ctk_display_device_finalize;
+}
+
+static void ctk_display_device_finalize(
+ GObject *object
+)
+{
+ CtkDisplayDevice *ctk_object = CTK_DISPLAY_DEVICE(object);
+ g_free(ctk_object->name);
+ g_signal_handlers_disconnect_matched(ctk_object->ctk_event,
+ G_SIGNAL_MATCH_DATA,
+ 0,
+ 0,
+ NULL,
+ NULL,
+ (gpointer) ctk_object);
+}
+
+
+/*
+ * ctk_display_device_new() - constructor for the dissplay device page.
+ */
+
+GtkWidget* ctk_display_device_new(NvCtrlAttributeHandle *handle,
+ CtkConfig *ctk_config,
+ CtkEvent *ctk_event,
+ char *name,
+ char *typeBaseName)
+{
+ GObject *object;
+ CtkDisplayDevice *ctk_object;
+ GtkWidget *banner;
+ GtkWidget *frame;
+ GtkWidget *hbox, *tmpbox;
+
+ GtkWidget *alignment;
+ GtkWidget *notebook;
+ GtkWidget *nbox;
+ GtkWidget *align;
+
+ object = g_object_new(CTK_TYPE_DISPLAY_DEVICE, NULL);
+ if (!object) return NULL;
+
+ ctk_object = CTK_DISPLAY_DEVICE(object);
+ ctk_object->handle = handle;
+ ctk_object->ctk_event = ctk_event;
+ ctk_object->ctk_config = ctk_config;
+ ctk_object->name = g_strdup(name);
+
+ gtk_box_set_spacing(GTK_BOX(object), 10);
+
+ /* banner */
+
+ banner = ctk_banner_image_new(BANNER_ARTWORK_DFP);
+ gtk_box_pack_start(GTK_BOX(object), banner, FALSE, FALSE, 0);
+
+ /*
+ * create the reset button (which we need while creating the
+ * controls in this page so that we can set the button's
+ * sensitivity), though we pack it at the bottom of the page
+ */
+
+ ctk_object->reset_button =
+ gtk_button_new_with_label("Reset Hardware Defaults");
+
+ alignment = gtk_alignment_new(1, 1, 0, 0);
+ gtk_container_add(GTK_CONTAINER(alignment), ctk_object->reset_button);
+ gtk_box_pack_end(GTK_BOX(object), alignment, TRUE, TRUE, 0);
+
+ g_signal_connect(G_OBJECT(ctk_object->reset_button),
+ "clicked", G_CALLBACK(reset_button_clicked),
+ (gpointer) ctk_object);
+
+ ctk_config_set_tooltip(ctk_config, ctk_object->reset_button,
+ ctk_help_create_reset_hardware_defaults_text(typeBaseName,
+ name));
+
+ /* Create tabbed notebook for widget */
+
+ notebook = gtk_notebook_new();
+ gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
+ align = gtk_alignment_new(0, 0, 1, 1);
+ gtk_container_add(GTK_CONTAINER(align), notebook);
+ gtk_box_pack_start(GTK_BOX(object), align, FALSE, FALSE, 0);
+
+ /* Create first tab for device info */
+
+ nbox = gtk_vbox_new(FALSE, FRAME_PADDING);
+ gtk_container_set_border_width(GTK_CONTAINER(nbox), FRAME_PADDING);
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), nbox,
+ gtk_label_new("Information"));
+
+ /* create the hbox to store device info */
+
+ hbox = gtk_hbox_new(FALSE, FRAME_PADDING);
+ gtk_box_pack_start(GTK_BOX(nbox), hbox, FALSE, FALSE, FRAME_PADDING);
+
+ /* Device info */
+
+ frame = gtk_frame_new("Device Information");
+ gtk_box_pack_start(GTK_BOX(hbox), frame, FALSE, FALSE, 0);
+
+ /*
+ * insert a vbox between the frame and the widgets, so that the
+ * widgets don't expand to fill all of the space within the
+ * frame
+ */
+
+ tmpbox = gtk_vbox_new(FALSE, FRAME_PADDING);
+ gtk_container_set_border_width(GTK_CONTAINER(tmpbox), FRAME_PADDING);
+ gtk_container_add(GTK_CONTAINER(frame), tmpbox);
+
+ /* Make the txt widgets that will get updated */
+ ctk_object->txt_chip_location = gtk_label_new("");
+ ctk_object->txt_link = gtk_label_new("");
+ ctk_object->txt_signal = gtk_label_new("");
+ ctk_object->txt_native_resolution = gtk_label_new("");
+ ctk_object->txt_refresh_rate = gtk_label_new("");
+
+ /* Add information widget lines */
+ {
+ typedef struct {
+ GtkWidget *label;
+ GtkWidget *txt;
+ const gchar *tooltip;
+ } TextLineInfo;
+
+ TextLineInfo lines[] = {
+ {
+ gtk_label_new("Chip location:"),
+ ctk_object->txt_chip_location,
+ __info_chip_location_help
+ },
+ {
+ gtk_label_new("Connection link:"),
+ ctk_object->txt_link,
+ __info_link_help
+ },
+ {
+ gtk_label_new("Signal:"),
+ ctk_object->txt_signal,
+ __info_signal_help
+ },
+ {
+ gtk_label_new("Native Resolution:"),
+ ctk_object->txt_native_resolution,
+ __native_res_help,
+ },
+ {
+ gtk_label_new("Refresh Rate:"),
+ ctk_object->txt_refresh_rate,
+ __refresh_rate_help,
+ },
+ { NULL, NULL, NULL }
+ };
+ int i;
+
+ GtkRequisition req;
+ int max_width;
+
+ /* Compute max width of lables and setup text alignments */
+ max_width = 0;
+ for (i = 0; lines[i].label; i++) {
+ gtk_misc_set_alignment(GTK_MISC(lines[i].label), 0.0f, 0.5f);
+ gtk_misc_set_alignment(GTK_MISC(lines[i].txt), 0.0f, 0.5f);
+
+ gtk_widget_size_request(lines[i].label, &req);
+ if (max_width < req.width) {
+ max_width = req.width;
+ }
+ }
+
+ /* Pack labels */
+ for (i = 0; lines[i].label; i++) {
+ GtkWidget *tmphbox;
+
+ /* Add separators */
+ if (i == 3 || i == 5 || i == 7) {
+ GtkWidget *separator = gtk_hseparator_new();
+ gtk_box_pack_start(GTK_BOX(tmpbox), separator,
+ FALSE, FALSE, 0);
+ }
+
+ /* Set the label's width */
+ gtk_widget_set_size_request(lines[i].label, max_width, -1);
+
+ /* add the widgets for this line */
+ tmphbox = gtk_hbox_new(FALSE, FRAME_PADDING);
+ gtk_box_pack_start(GTK_BOX(tmphbox), lines[i].label,
+ FALSE, TRUE, FRAME_PADDING);
+ gtk_box_pack_start(GTK_BOX(tmphbox), lines[i].txt,
+ FALSE, TRUE, FRAME_PADDING);
+
+ /* Include tooltips */
+ if (lines[i].tooltip) {
+ ctk_config_set_tooltip(ctk_config,
+ lines[i].label,
+ lines[i].tooltip);
+ ctk_config_set_tooltip(ctk_config,
+ lines[i].txt,
+ lines[i].tooltip);
+ }
+ gtk_box_pack_start(GTK_BOX(tmpbox), tmphbox, FALSE, FALSE, 0);
+ }
+ }
+
+ /* pack the EDID button */
+
+ ctk_object->edid = ctk_edid_new(ctk_object->handle,
+ ctk_object->ctk_config,
+ ctk_object->ctk_event,
+ ctk_object->name);
+
+ hbox = gtk_hbox_new(FALSE, 0);
+ align = gtk_alignment_new(0, 1, 1, 1);
+ gtk_container_add(GTK_CONTAINER(align), hbox);
+ gtk_box_pack_end(GTK_BOX(nbox), align, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(hbox), ctk_object->edid, TRUE, TRUE, 0);
+
+ /*
+ * Create layout for second tab for controls but don't add the tab until we
+ * make sure its required
+ */
+
+ nbox = gtk_vbox_new(FALSE, FRAME_PADDING);
+ gtk_container_set_border_width(GTK_CONTAINER(nbox), FRAME_PADDING);
+
+ /* pack the color controls */
+
+ ctk_object->color_controls =
+ ctk_color_controls_new(handle, ctk_config, ctk_event,
+ ctk_object->reset_button, name);
+
+ if (ctk_object->color_controls) {
+ gtk_box_pack_start(GTK_BOX(nbox), ctk_object->color_controls,
+ FALSE, FALSE, 0);
+ }
+
+ /* pack the dithering controls */
+
+ ctk_object->dithering_controls =
+ ctk_dithering_controls_new(handle, ctk_config, ctk_event,
+ ctk_object->reset_button, name);
+
+ if (ctk_object->dithering_controls) {
+ gtk_box_pack_start(GTK_BOX(nbox), ctk_object->dithering_controls,
+ FALSE, FALSE, 0);
+ }
+
+ /* pack the image sliders */
+
+ ctk_object->image_sliders =
+ ctk_image_sliders_new(handle, ctk_config, ctk_event,
+ ctk_object->reset_button, name);
+ if (ctk_object->image_sliders) {
+ gtk_box_pack_start(GTK_BOX(nbox), ctk_object->image_sliders,
+ FALSE, FALSE, 0);
+ }
+
+ /* If no controls are created, don't add a controls tab */
+
+ if (ctk_object->color_controls ||
+ ctk_object->dithering_controls ||
+ ctk_object->image_sliders) {
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), nbox,
+ gtk_label_new("Controls"));
+ }
+
+ /* show the page */
+
+ gtk_widget_show_all(GTK_WIDGET(object));
+
+ /* Update the GUI */
+
+ update_display_enabled_flag(ctk_object->handle,
+ &ctk_object->display_enabled);
+
+ display_device_setup(ctk_object);
+
+ /* handle enable/disable events on the display device */
+
+ g_signal_connect(G_OBJECT(ctk_event),
+ CTK_EVENT_NAME(NV_CTRL_ENABLED_DISPLAYS),
+ G_CALLBACK(enabled_displays_received),
+ (gpointer) ctk_object);
+
+ g_signal_connect(G_OBJECT(ctk_event),
+ CTK_EVENT_NAME(NV_CTRL_REFRESH_RATE),
+ G_CALLBACK(info_update_received),
+ (gpointer) ctk_object);
+
+ return GTK_WIDGET(object);
+
+} /* ctk_display_device_new() */
+
+
+
+/*
+ * reset_button_clicked() - callback when the reset button is clicked
+ */
+
+static void reset_button_clicked(GtkButton *button, gpointer user_data)
+{
+ CtkDisplayDevice *ctk_object = CTK_DISPLAY_DEVICE(user_data);
+
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_object->reset_button, FALSE);
+
+ ctk_color_controls_reset(CTK_COLOR_CONTROLS(ctk_object->color_controls));
+
+ ctk_dithering_controls_reset
+ (CTK_DITHERING_CONTROLS(ctk_object->dithering_controls));
+
+ ctk_image_sliders_reset(CTK_IMAGE_SLIDERS(ctk_object->image_sliders));
+
+ ctk_config_statusbar_message(ctk_object->ctk_config,
+ "Reset hardware defaults for %s.",
+ ctk_object->name);
+
+} /* reset_button_clicked() */
+
+
+
+/*
+ * ctk_display_device_create_help() - construct the display device help page
+ */
+
+GtkTextBuffer *ctk_display_device_create_help(GtkTextTagTable *table,
+ CtkDisplayDevice *ctk_object)
+{
+ GtkTextIter i;
+ GtkTextBuffer *b;
+ GtkTooltipsData *td;
+
+ b = gtk_text_buffer_new(table);
+
+ gtk_text_buffer_get_iter_at_offset(b, &i, 0);
+
+ ctk_help_title(b, &i, "%s Help", ctk_object->name);
+
+ ctk_help_heading(b, &i, "Device Information");
+ ctk_help_para(b, &i, __info_help);
+
+ ctk_help_term(b, &i, "Chip Location");
+ ctk_help_para(b, &i, __info_chip_location_help);
+
+ ctk_help_term(b, &i, "Link");
+ ctk_help_para(b, &i, __info_link_help);
+
+ ctk_help_term(b, &i, "Signal");
+ ctk_help_para(b, &i, __info_signal_help);
+
+ ctk_help_term(b, &i, "Native Resolution");
+ ctk_help_para(b, &i, __native_res_help);
+
+ ctk_help_term(b, &i, "Refresh Rate");
+ ctk_help_para(b, &i, __refresh_rate_help);
+
+ add_acquire_edid_help(b, &i);
+
+ add_color_controls_help
+ (CTK_COLOR_CONTROLS(ctk_object->color_controls), b, &i);
+
+ add_dithering_controls_help
+ (CTK_DITHERING_CONTROLS(ctk_object->dithering_controls), b, &i);
+
+ add_image_sliders_help
+ (CTK_IMAGE_SLIDERS(ctk_object->image_sliders), b, &i);
+
+ td = gtk_tooltips_data_get(GTK_WIDGET(ctk_object->reset_button));
+ ctk_help_reset_hardware_defaults(b, &i, td->tip_text);
+
+ ctk_help_finish(b);
+
+ return b;
+
+} /* ctk_display_device_create_help() */
+
+
+static void update_link(CtkDisplayDevice *ctk_object)
+{
+ ReturnStatus ret;
+ gint val, signal_type = ctk_object->signal_type;
+ const char *link = "Unknown";
+ char tmp[32];
+
+ ret = NvCtrlGetAttribute(ctk_object->handle, NV_CTRL_FLATPANEL_LINK, &val);
+ if (ret == NvCtrlSuccess) {
+ if (signal_type == NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT) {
+ int lanes;
+
+ lanes = val + 1;
+
+ ret = NvCtrlGetAttribute(ctk_object->handle,
+ NV_CTRL_DISPLAYPORT_LINK_RATE, &val);
+ if ((ret == NvCtrlSuccess) &&
+ (val == NV_CTRL_DISPLAYPORT_LINK_RATE_DISABLED)) {
+ link = "Disabled";
+ } else {
+ const char *bw = "unknown bandwidth";
+
+ if (ret == NvCtrlSuccess) {
+ switch (val) {
+ case NV_CTRL_DISPLAYPORT_LINK_RATE_1_62GBPS:
+ bw = "1.62 Gbps";
+ break;
+ case NV_CTRL_DISPLAYPORT_LINK_RATE_2_70GBPS:
+ bw = "2.70 Gbps";
+ break;
+ }
+ }
+
+ snprintf(tmp, 32, "%d lane%s @ %s", lanes, lanes == 1 ? "" : "s",
+ bw);
+ link = tmp;
+ }
+ } else {
+ // LVDS or TMDS
+ switch(val) {
+ case NV_CTRL_FLATPANEL_LINK_SINGLE:
+ link = "Single";
+ break;
+ case NV_CTRL_FLATPANEL_LINK_DUAL:
+ link = "Dual";
+ break;
+ }
+ }
+ }
+
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_link), link);
+}
+
+
+static void callback_link_changed(GtkObject *object, gpointer arg1,
+ gpointer user_data)
+{
+ CtkDisplayDevice *ctk_object = CTK_DISPLAY_DEVICE(user_data);
+
+ update_link(ctk_object);
+}
+
+/*
+ * update_device_info() - (Re)Queries the static display device information.
+ */
+static void update_device_info(CtkDisplayDevice *ctk_object)
+{
+ ReturnStatus ret;
+ gint val;
+ char *chip_location, *link, *signal;
+ CtkEvent *ctk_event = ctk_object->ctk_event;
+
+ chip_location = link = signal = "Unknown";
+
+ /* Chip location */
+
+ ret = NvCtrlGetAttribute(ctk_object->handle,
+ NV_CTRL_FLATPANEL_CHIP_LOCATION, &val);
+ if (ret == NvCtrlSuccess) {
+ switch (val) {
+ case NV_CTRL_FLATPANEL_CHIP_LOCATION_INTERNAL:
+ chip_location = "Internal";
+ break;
+ case NV_CTRL_FLATPANEL_CHIP_LOCATION_EXTERNAL:
+ chip_location = "External";
+ break;
+ }
+ }
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_chip_location), chip_location);
+
+ /* Signal */
+
+ ret = NvCtrlGetAttribute(ctk_object->handle, NV_CTRL_FLATPANEL_SIGNAL,
+ &val);
+ if (ret == NvCtrlSuccess) {
+ switch (val) {
+ case NV_CTRL_FLATPANEL_SIGNAL_LVDS:
+ signal = "LVDS";
+ break;
+ case NV_CTRL_FLATPANEL_SIGNAL_TMDS:
+ signal = "TMDS";
+ break;
+ case NV_CTRL_FLATPANEL_SIGNAL_DISPLAYPORT:
+ signal = "DisplayPort";
+ break;
+ }
+ }
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_signal), signal);
+ ctk_object->signal_type = val;
+
+ /* Link */
+
+ g_signal_connect(G_OBJECT(ctk_event),
+ CTK_EVENT_NAME(NV_CTRL_FLATPANEL_LINK),
+ G_CALLBACK(callback_link_changed),
+ (gpointer) ctk_object);
+
+ g_signal_connect(G_OBJECT(ctk_event),
+ CTK_EVENT_NAME(NV_CTRL_DISPLAYPORT_LINK_RATE),
+ G_CALLBACK(callback_link_changed),
+ (gpointer) ctk_object);
+
+ update_link(ctk_object);
+
+ /* Native Resolution */
+
+ ret = NvCtrlGetAttribute(ctk_object->handle,
+ NV_CTRL_FLATPANEL_NATIVE_RESOLUTION, &val);
+ if (ret == NvCtrlSuccess) {
+ gchar *resolution =
+ g_strdup_printf("%dx%d", (val >> 16), (val & 0xFFFF));
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_native_resolution),
+ resolution);
+ g_free(resolution);
+ } else {
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_native_resolution),
+ "Unknown");
+ }
+
+ /* Refresh Rate */
+
+ ret = NvCtrlGetAttribute(ctk_object->handle, NV_CTRL_REFRESH_RATE, &val);
+ if (ret == NvCtrlSuccess) {
+ char str[32];
+ float fvalue = ((float)(val)) / 100.0f;
+ snprintf(str, 32, "%.2f Hz", fvalue);
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_refresh_rate), str);
+ } else {
+ gtk_label_set_text(GTK_LABEL(ctk_object->txt_refresh_rate), "Unknown");
+ }
+
+} /* update_device_info() */
+
+
+
+/*
+ * Updates the display device page to reflect the current
+ * configuration of the display device.
+ */
+static void display_device_setup(CtkDisplayDevice *ctk_object)
+{
+ /* Disable the reset button here and allow the controls below to (re)enable
+ * it if need be,.
+ */
+ gtk_widget_set_sensitive(ctk_object->reset_button, FALSE);
+
+
+ /* Update info */
+
+ update_device_info(ctk_object);
+
+ ctk_edid_setup(CTK_EDID(ctk_object->edid));
+
+ /* Update controls */
+
+ ctk_color_controls_setup(CTK_COLOR_CONTROLS(ctk_object->color_controls));
+
+ ctk_dithering_controls_setup
+ (CTK_DITHERING_CONTROLS(ctk_object->dithering_controls));
+
+ ctk_image_sliders_setup(CTK_IMAGE_SLIDERS(ctk_object->image_sliders));
+
+} /* display_device_setup() */
+
+
+
+/*
+ * When the list of enabled displays on the GPU changes,
+ * this page should disable/enable access based on whether
+ * or not the display device is enabled.
+ */
+static void enabled_displays_received(GtkObject *object, gpointer arg1,
+ gpointer user_data)
+{
+ CtkDisplayDevice *ctk_object = CTK_DISPLAY_DEVICE(user_data);
+
+ /* Requery display information only if display disabled */
+
+ update_display_enabled_flag(ctk_object->handle,
+ &ctk_object->display_enabled);
+
+ display_device_setup(ctk_object);
+
+} /* enabled_displays_received() */
+
+
+/*
+ * Update UI when display information changed.
+ */
+static void info_update_received(GtkObject *object, gpointer arg1,
+ gpointer user_data)
+{
+ CtkDisplayDevice *ctk_object = CTK_DISPLAY_DEVICE(user_data);
+
+ update_device_info(ctk_object);
+}
diff --git a/src/gtk+-2.x/ctkdisplaydevice.h b/src/gtk+-2.x/ctkdisplaydevice.h
new file mode 100644
index 0000000..ed69aa0
--- /dev/null
+++ b/src/gtk+-2.x/ctkdisplaydevice.h
@@ -0,0 +1,93 @@
+/*
+ * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
+ * and Linux systems.
+ *
+ * Copyright (C) 2004 NVIDIA Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses>.
+ */
+
+#ifndef __CTK_DISPLAYDEVICE_H__
+#define __CTK_DISPLAYDEVICE_H__
+
+#include "ctkevent.h"
+#include "ctkconfig.h"
+
+G_BEGIN_DECLS
+
+#define CTK_TYPE_DISPLAY_DEVICE (ctk_display_device_get_type())
+
+#define CTK_DISPLAY_DEVICE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), CTK_TYPE_DISPLAY_DEVICE, \
+ CtkDisplayDevice))
+
+#define CTK_DISPLAY_DEVICE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), CTK_TYPE_DISPLAY_DEVICE, \
+ CtkDisplayDeviceClass))
+
+#define CTK_IS_DISPLAY_DEVICE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CTK_TYPE_DISPLAY_DEVICE))
+
+#define CTK_IS_DISPLAY_DEVICE_CLASS(class) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), CTK_TYPE_DISPLAY_DEVICE))
+
+#define CTK_DISPLAY_DEVICE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_DISPLAY_DEVICE, \
+ CtkDisplayDeviceClass))
+
+
+typedef struct _CtkDisplayDevice CtkDisplayDevice;
+typedef struct _CtkDisplayDeviceClass CtkDisplayDeviceClass;
+
+struct _CtkDisplayDevice
+{
+ GtkVBox parent;
+
+ NvCtrlAttributeHandle *handle;
+ CtkConfig *ctk_config;
+ CtkEvent *ctk_event;
+ GtkWidget *image_sliders;
+ GtkWidget *reset_button;
+ GtkWidget *edid;
+ GtkWidget *dithering_controls;
+ GtkWidget *color_controls;
+
+ GtkWidget *txt_chip_location;
+ GtkWidget *txt_link;
+ GtkWidget *txt_signal;
+ GtkWidget *txt_native_resolution;
+ GtkWidget *txt_refresh_rate;
+
+ gboolean display_enabled;
+ unsigned int active_attributes;
+
+ char *name;
+ gint signal_type;
+};
+
+struct _CtkDisplayDeviceClass
+{
+ GtkVBoxClass parent_class;
+};
+
+GType ctk_display_device_get_type (void) G_GNUC_CONST;
+GtkWidget* ctk_display_device_new (NvCtrlAttributeHandle *,
+ CtkConfig *, CtkEvent *,
+ char *, char *);
+
+GtkTextBuffer *ctk_display_device_create_help(GtkTextTagTable *,
+ CtkDisplayDevice *);
+
+G_END_DECLS
+
+#endif /* __CTK_DISPLAYDEVICE_H__ */
diff --git a/src/gtk+-2.x/ctkdisplaylayout.c b/src/gtk+-2.x/ctkdisplaylayout.c
index f5318ec..83f0579 100644
--- a/src/gtk+-2.x/ctkdisplaylayout.c
+++ b/src/gtk+-2.x/ctkdisplaylayout.c
@@ -267,26 +267,2 @@ static void zorder_layout(CtkDisplayLayout *ctk_object)
-/** get_selected() ***************************************************
- *
- * Returns the currently selected display and/or screen. This
- * function is only useful for keeping track of when something new
- * has been selected.
- *
- **/
-
-static void * get_selected(CtkDisplayLayout *ctk_object)
-{
- if (ctk_object->selected_display) {
- return ctk_object->selected_display;
- }
-
- if (ctk_object->selected_screen) {
- return ctk_object->selected_screen;
- }
-
- return NULL;
-
-} /* get_selected() */
-
-
-
/** get_metamode() ***************************************************
@@ -2227,6 +2203,6 @@ static int pan_selected(CtkDisplayLayout *ctk_object, int x, int y, int snap)
-ZNode *get_screen_zorder_move_data(CtkDisplayLayout *ctk_object,
- nvScreenPtr screen,
- int move_to,
- int *screen_at)
+static ZNode *get_screen_zorder_move_data(CtkDisplayLayout *ctk_object,
+ nvScreenPtr screen,
+ int move_to,
+ int *screen_at)
{
@@ -2413,115 +2389,2 @@ static void select_default_item(CtkDisplayLayout *ctk_object)
-/** pushback_display() ***********************************************
- *
- * Moves the specified display to the end of the Z-order.
- *
- **/
-
-static void pushback_display(CtkDisplayLayout *ctk_object,
- nvDisplayPtr display)
-{
- int i;
- int move_to;
-
- for (i = 0; i < ctk_object->Zcount; i++) {
-
- /* Find the display */
- if (ctk_object->Zorder[i].type == ZNODE_TYPE_DISPLAY &&
- ctk_object->Zorder[i].u.display == display) {
-
- if (!display->screen) {
- /* Move display to the end of the list. */
- move_to = ctk_object->Zcount - 1;
- } else {
- /* Move display prior to its X screen */
- for (move_to = i+1;
- move_to < ctk_object->Zcount;
- move_to++) {
- if (ctk_object->Zorder[move_to].type ==
- ZNODE_TYPE_SCREEN &&
- ctk_object->Zorder[move_to].u.screen ==
- display->screen) {
- break;
- }
- }
- move_to--;
- }
-
- // Now move dispay from i to move_to
- if (i != move_to) {
- memmove(ctk_object->Zorder + i,
- ctk_object->Zorder + i + 1,
- (move_to - i)*sizeof(ZNode));
-
- /* Place the display at the top */
- ctk_object->Zorder[move_to].type = ZNODE_TYPE_DISPLAY;
- ctk_object->Zorder[move_to].u.display = display;
- }
-
- break;
- }
- }
-
-} /* pushback_display() */
-
-
-
-/** pushback_screen() ************************************************
- *
- * Moves the specified screen to the end of the Z-order.
- *
- **/
-
-static void pushback_screen(CtkDisplayLayout *ctk_object,
- nvScreenPtr screen)
-{
- int move_to = ctk_object->Zcount -1;
- int screen_at;
- ZNode *tmpzo;
-
- /* Get a copy of the zorder buffer for the screen */
- tmpzo = get_screen_zorder_move_data(ctk_object, screen, move_to,
- &screen_at);
- if (!tmpzo) return;
-
- /* Move other nodes up to make room at the bottom */
- memmove(ctk_object->Zorder + screen_at - screen->num_displays,
- ctk_object->Zorder + screen_at + 1,
- (move_to - screen_at)*sizeof(ZNode));
-
- /* Copy the screen and its displays to the bottom */
- memcpy(ctk_object->Zorder + move_to - screen->num_displays,
- tmpzo,
- (1 + screen->num_displays)*sizeof(ZNode));
-
- free(tmpzo);
-
-} /* pushback_screen() */
-
-
-
-/** pushback_selected() **********************************************
- *
- * Moves the specified display or screen to the end of the Z-order.
- *
- **/
-
-static void pushback_selected(CtkDisplayLayout *ctk_object)
-{
- /* Pushback the selected display if it has no screen or
- * is part of twinview to avoid selecting the screen of
- * single-display screens.
- */
- if (ctk_object->selected_display &&
- (!ctk_object->selected_screen ||
- ctk_object->selected_screen->num_displays > 1)) {
- pushback_display(ctk_object, ctk_object->selected_display);
- } else if (ctk_object->selected_screen) {
- pushback_screen(ctk_object, ctk_object->selected_screen);
- }
-
-} /* pushback_selected() */
-
-
-
/** get_display_tooltip() ********************************************
@@ -2551,3 +2414,3 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
tip = g_strdup_printf("%s : Disabled (GPU: %s)",
- display->name, display->gpu->name);
+ display->logName, display->gpu->name);
@@ -2559,3 +2422,3 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
if (!display->cur_mode) {
- tip = g_strdup_printf("%s", display->name);
+ tip = g_strdup_printf("%s", display->logName);
@@ -2565,3 +2428,3 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
tip = g_strdup_printf("%s : Off",
- display->name);
+ display->logName);
@@ -2571,3 +2434,3 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
tip = g_strdup_printf("%s : %dx%d @ %.*f Hz",
- display->name,
+ display->logName,
display->cur_mode->modeline->data.hdisplay,
@@ -2586,3 +2449,3 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
tip = g_strdup_printf("%s\n(X Screen %d)\n(GPU: %s)",
- display->name,
+ display->logName,
display->screen->scrnum,
@@ -2593,3 +2456,3 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
tip = g_strdup_printf("%s : Off\n(X Screen %d)\n(GPU: %s)",
- display->name,
+ display->logName,
display->screen->scrnum,
@@ -2602,3 +2465,3 @@ static char *get_display_tooltip(nvDisplayPtr display, Bool advanced)
"(GPU: %s)",
- display->name,
+ display->logName,
display->cur_mode->modeline->data.hdisplay,
@@ -2741,4 +2604,3 @@ static char *get_tooltip_under_mouse(CtkDisplayLayout *ctk_object,
-static int click_layout(CtkDisplayLayout *ctk_object, int x, int y,
- nvScreenPtr reselect_screen)
+static int click_layout(CtkDisplayLayout *ctk_object, int x, int y)
{
@@ -2756,3 +2618,3 @@ static int click_layout(CtkDisplayLayout *ctk_object, int x, int y,
ctk_object->selected_screen = NULL;
-
+
@@ -2765,11 +2627,3 @@ static int click_layout(CtkDisplayLayout *ctk_object, int x, int y,
- /* Re-select the screen instead of the display
- * (after a move)
- */
- if (display->screen &&
- (reselect_screen == display->screen)) {
- select_screen(ctk_object, display->screen);
- } else {
- select_display(ctk_object, display);
- }
+ select_display(ctk_object, display);
ctk_object->clicked_outside = 0;
@@ -2777,3 +2631,2 @@ static int click_layout(CtkDisplayLayout *ctk_object, int x, int y,
}
-
} else if (ctk_object->Zorder[i].type == ZNODE_TYPE_SCREEN) {
@@ -2828,2 +2681,3 @@ GType ctk_display_layout_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -3190,3 +3044,3 @@ static void draw_display(CtkDisplayLayout *ctk_object,
&(ctk_object->fg_color),
- display->name,
+ display->logName,
tmp_str);
@@ -4044,2 +3898,21 @@ void ctk_display_layout_select_display(CtkDisplayLayout *ctk_object,
+/** ctk_display_layout_select_screen() ************************
+ *
+ * Makes the given screen the thing that is selected.
+ *
+ **/
+
+void ctk_display_layout_select_screen(CtkDisplayLayout *ctk_object,
+ nvScreenPtr screen)
+{
+ /* Select the new display */
+ ctk_object->selected_display = NULL;
+ select_screen(ctk_object, screen);
+
+ queue_layout_redraw(ctk_object);
+
+} /* ctk_display_layout_select_screen() */
+
+
+
/** ctk_display_layout_update_display_count() ************************
@@ -4479,4 +4352,2 @@ button_press_event_callback(GtkWidget *widget, GdkEventButton *event,
CtkDisplayLayout *ctk_object = CTK_DISPLAY_LAYOUT(data);
- void *last_selected; /* Last thing selected */
- void *new_selected;
@@ -4487,3 +4358,2 @@ button_press_event_callback(GtkWidget *widget, GdkEventButton *event,
GdkEvent *next_event;
- nvScreenPtr reselect_screen = NULL;
@@ -4518,70 +4388,6 @@ button_press_event_callback(GtkWidget *widget, GdkEventButton *event,
- /* Select a display device */
+ /* Handle selection of displays/X screens */
case Button1:
ctk_object->button1 = 1;
- last_selected = get_selected(ctk_object);
-
- /* If the user had a screen selected
- * and is not cycling through overlapping
- * elements (screens/displays), try to
- * re-select the screen instead of the display.
- */
- if (!ctk_object->first_selected_display &&
- !ctk_object->first_selected_screen &&
- !ctk_object->selected_display &&
- ctk_object->selected_screen
- ) {
- reselect_screen = ctk_object->selected_screen;
- }
-
- /* If user clicked on the same spot twice, push last
- * selection back in the Z-order.
- */
- if (ctk_object->first_selected_display ||
- ctk_object->first_selected_screen) {
- pushback_selected(ctk_object);
- }
-
- /* Do the click */
- click_layout(ctk_object, x, y, reselect_screen);
-
- /* Keep track of what is first selected to properly handle
- * cycling through displays and screens when user keeps
- * clicks on same spot.
- */
- new_selected = get_selected(ctk_object);
-
- /* If the user clicks a second time on a display that has a
- * screen (or has cycled/clicked through all the displays
- * on that screen), select the screen instead of the first
- * display that was originally clicked.
- */
- if (ctk_object->first_selected_display &&
- ctk_object->first_selected_screen &&
- (ctk_object->first_selected_display ==
- ctk_object->selected_display)
- ) {
- ctk_object->first_selected_display = NULL;
- ctk_object->selected_display = NULL;
- new_selected = ctk_object->first_selected_screen;
- } else {
- /* Keep track of the first display the user
- * clicked on wrt the screen the display
- * belongs to. (ie, if the user clicked
- * and we cycled to the next display in a
- * TwinView screen, don't reset the first
- * selected display.
- */
- if (!ctk_object->first_selected_display ||
- (ctk_object->first_selected_screen!=
- ctk_object->selected_screen)) {
- ctk_object->first_selected_display =
- ctk_object->selected_display;
- }
- }
-
- /* Keep track of the selected screen */
- ctk_object->first_selected_screen =
- ctk_object->selected_screen;
-
+ click_layout(ctk_object, x, y);
diff --git a/src/gtk+-2.x/ctkdisplaylayout.h b/src/gtk+-2.x/ctkdisplaylayout.h
index dfc6dab..bf74a58 100644
--- a/src/gtk+-2.x/ctkdisplaylayout.h
+++ b/src/gtk+-2.x/ctkdisplaylayout.h
@@ -130,2 +130,8 @@ G_BEGIN_DECLS
+typedef enum {
+ PASSIVE_STEREO_EYE_NONE = 0,
+ PASSIVE_STEREO_EYE_LEFT,
+ PASSIVE_STEREO_EYE_RIGHT,
+} PassiveStereoEye;
+
@@ -169,2 +175,4 @@ typedef struct nvModeRec {
+ PassiveStereoEye passive_stereo_eye; /* Stereo mode 4 per-dpy setting */
+
} nvMode, *nvModePtr;
@@ -179,2 +187,4 @@ typedef struct nvDisplayRec {
+ NvCtrlAttributeHandle *handle; /* NV-CONTROL handle to device */
+
struct nvGpuRec *gpu; /* GPU the display belongs to */
@@ -182,4 +192,10 @@ typedef struct nvDisplayRec {
- unsigned int device_mask; /* Bit mask to identify the display */
- char *name; /* Display name (from NV-CONTROL) */
+ char *logName; /* Display name (from NV-CONTROL) */
+ char *typeBaseName; /* e.g. "CRT", "DFP", "TV" */
+ char *typeIdName; /* e.g. "DFP-1", "TV-0" */
+ char *dpGuidName; /* e.g. "DP-GUID-11111111-1111-1111-1111-111111111111" */
+ char *edidHashName; /* e.g. "DPY-EDID-11111111-1111-1111-1111-111111111111" */
+ char *targetIdName; /* e.g. "DPY-3" */
+ char *randrName; /* e.g. "VGA-1", "DVI-I-2" */
+
Bool is_sdi; /* Is an SDI display */
@@ -240,4 +256,4 @@ typedef struct nvScreenRec {
int depth; /* Depth of the screen */
+ int stereo; /* Stereo mode enabled on this screen */
- unsigned int displays_mask; /* Display devices on this X screen */
nvDisplayPtr displays; /* List of displays using this screen */
@@ -261,2 +277,3 @@ typedef struct nvScreenRec {
Bool no_scanout; /* This screen has no display devices */
+ Bool stereo_supported; /* Can stereo be configured on this screen */
@@ -291,4 +308,2 @@ typedef struct nvGpuRec {
- unsigned int connected_displays; /* Bitmask of connected displays */
-
gchar *pci_bus_id;
@@ -489,2 +504,4 @@ void ctk_display_layout_select_display (CtkDisplayLayout *ctk_object,
nvDisplayPtr display);
+void ctk_display_layout_select_screen (CtkDisplayLayout *ctk_object,
+ nvScreenPtr screen);
void ctk_display_layout_update_display_count (CtkDisplayLayout *,
diff --git a/src/gtk+-2.x/ctkditheringcontrols.c b/src/gtk+-2.x/ctkditheringcontrols.c
index 1e98233..6898489 100644
--- a/src/gtk+-2.x/ctkditheringcontrols.c
+++ b/src/gtk+-2.x/ctkditheringcontrols.c
@@ -43,2 +43,4 @@ static Bool update_dithering_info(gpointer user_data);
+static void setup_reset_button(CtkDitheringControls *ctk_dithering_controls);
+
static void dithering_depth_menu_changed(GtkOptionMenu *dithering_depth_menu,
@@ -65,2 +67,6 @@ void post_dithering_depth_update(CtkDitheringControls *ctk_dithering_controls,
+static gint map_dithering_config_menu_idx_to_nvctrl(gint idx);
+
+static gint map_dithering_depth_menu_idx_to_nvctrl(gint idx);
+
/* macros */
@@ -100,2 +106,3 @@ GType ctk_dithering_controls_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -115,3 +122,2 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
GtkWidget *reset_button,
- unsigned int display_device_mask,
char *name)
@@ -133,3 +139,2 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
ctk_dithering_controls->reset_button = reset_button;
- ctk_dithering_controls->display_device_mask = display_device_mask;
ctk_dithering_controls->name = strdup(name);
@@ -140,3 +145,3 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, FRAME_PADDING);
- ctk_dithering_controls->dithering_controls_main = hbox;
+ ctk_dithering_controls->dithering_controls_box = hbox;
@@ -207,3 +212,3 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
label = gtk_label_new(NULL);
- ctk_dithering_controls->dithering_current_config = label;
+ ctk_dithering_controls->dithering_config_txt = label;
gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
@@ -257,3 +262,3 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
label = gtk_label_new(NULL);
- ctk_dithering_controls->dithering_current_mode = label;
+ ctk_dithering_controls->dithering_mode_txt = label;
gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
@@ -324,3 +329,3 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
label = gtk_label_new(NULL);
- ctk_dithering_controls->dithering_current_depth = label;
+ ctk_dithering_controls->dithering_depth_txt = label;
gtk_misc_set_alignment(GTK_MISC(label), 0.0f, 0.5f);
@@ -363,2 +368,54 @@ GtkWidget* ctk_dithering_controls_new(NvCtrlAttributeHandle *handle,
+
+/*
+ * setup_reset_button() - enables the reset button if any of the current
+ * settings are not the default.
+ */
+static void setup_reset_button(CtkDitheringControls *ctk_dithering_controls)
+{
+ gint history;
+ gint val;
+
+ if (!GTK_WIDGET_SENSITIVE(ctk_dithering_controls->dithering_controls_box)) {
+ /* Nothing is available, don't bother enabling the reset button yet. */
+ return;
+ }
+
+ /* The config menu is always available */
+ history = gtk_option_menu_get_history
+ (GTK_OPTION_MENU(ctk_dithering_controls->dithering_config_menu));
+ val = map_dithering_config_menu_idx_to_nvctrl(history);
+ if (val != NV_CTRL_DITHERING_AUTO) {
+ goto enable;
+ }
+
+ if (GTK_WIDGET_SENSITIVE(ctk_dithering_controls->dithering_mode_box)) {
+ history = gtk_option_menu_get_history
+ (GTK_OPTION_MENU(ctk_dithering_controls->dithering_mode_menu));
+ val = ctk_dithering_controls->dithering_mode_table[history];
+ if (val != NV_CTRL_DITHERING_MODE_AUTO) {
+ goto enable;
+ }
+ }
+
+ if (GTK_WIDGET_SENSITIVE(ctk_dithering_controls->dithering_depth_box)) {
+ history = gtk_option_menu_get_history
+ (GTK_OPTION_MENU(ctk_dithering_controls->dithering_depth_menu));
+ val = map_dithering_depth_menu_idx_to_nvctrl(history);
+ if (val != NV_CTRL_DITHERING_DEPTH_AUTO) {
+ goto enable;
+ }
+ }
+
+ /* Don't disable reset button here, since other settings that are not
+ * managed by the ctk_image_slider here may need it enabled
+ */
+ return;
+
+ enable:
+ gtk_widget_set_sensitive(ctk_dithering_controls->reset_button, TRUE);
+}
+
+
+
/*
@@ -379,5 +436,4 @@ void ctk_dithering_controls_setup(CtkDitheringControls *ctk_dithering_controls)
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING, &val)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING, &val)) {
val = NV_CTRL_DITHERING_AUTO;
@@ -440,3 +496,3 @@ void ctk_dithering_controls_setup(CtkDitheringControls *ctk_dithering_controls)
if (!update_dithering_info((gpointer)ctk_dithering_controls)) {
- gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_main,
+ gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_box,
FALSE);
@@ -444,2 +500,4 @@ void ctk_dithering_controls_setup(CtkDitheringControls *ctk_dithering_controls)
+ setup_reset_button(ctk_dithering_controls);
+
} /* ctk_dithering_controls_setup() */
@@ -455,6 +513,5 @@ static Bool update_dithering_info(gpointer user_data)
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING, &val)) {
- gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_main,
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING, &val)) {
+ gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_box,
FALSE);
@@ -462,3 +519,3 @@ static Bool update_dithering_info(gpointer user_data)
val == NV_CTRL_DITHERING_AUTO) {
- gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_main,
+ gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_box,
TRUE);
@@ -469,3 +526,3 @@ static Bool update_dithering_info(gpointer user_data)
} else if (val == NV_CTRL_DITHERING_DISABLED) {
- gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_main,
+ gtk_widget_set_sensitive(ctk_dithering_controls->dithering_controls_box,
TRUE);
@@ -477,5 +534,4 @@ static Bool update_dithering_info(gpointer user_data)
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_CURRENT_DITHERING, &val)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_CURRENT_DITHERING, &val)) {
val = NV_CTRL_CURRENT_DITHERING_DISABLED;
@@ -484,6 +540,6 @@ static Bool update_dithering_info(gpointer user_data)
if (val == NV_CTRL_CURRENT_DITHERING_ENABLED) {
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_config),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_config_txt),
"Enabled");
} else {
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_config),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_config_txt),
"Disabled");
@@ -493,6 +549,5 @@ static Bool update_dithering_info(gpointer user_data)
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_MODE,
- &dithering_mode)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_MODE,
+ &dithering_mode)) {
dithering_mode = NV_CTRL_DITHERING_MODE_AUTO;
@@ -519,6 +574,5 @@ static Bool update_dithering_info(gpointer user_data)
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_CURRENT_DITHERING_MODE,
- &dithering_mode)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_CURRENT_DITHERING_MODE,
+ &dithering_mode)) {
dithering_mode = NV_CTRL_CURRENT_DITHERING_MODE_NONE;
@@ -528,3 +582,3 @@ static Bool update_dithering_info(gpointer user_data)
case NV_CTRL_CURRENT_DITHERING_MODE_DYNAMIC_2X2:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_mode),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_mode_txt),
"Dynamic 2x2");
@@ -532,3 +586,3 @@ static Bool update_dithering_info(gpointer user_data)
case NV_CTRL_CURRENT_DITHERING_MODE_STATIC_2X2:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_mode),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_mode_txt),
"Static 2x2");
@@ -536,3 +590,3 @@ static Bool update_dithering_info(gpointer user_data)
case NV_CTRL_CURRENT_DITHERING_MODE_TEMPORAL:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_mode),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_mode_txt),
"Temporal");
@@ -541,3 +595,3 @@ static Bool update_dithering_info(gpointer user_data)
case NV_CTRL_CURRENT_DITHERING_MODE_NONE:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_mode),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_mode_txt),
"None");
@@ -548,6 +602,5 @@ static Bool update_dithering_info(gpointer user_data)
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_DEPTH,
- &dithering_depth)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_DEPTH,
+ &dithering_depth)) {
dithering_depth = NV_CTRL_DITHERING_DEPTH_AUTO;
@@ -571,6 +624,5 @@ static Bool update_dithering_info(gpointer user_data)
if (NvCtrlSuccess !=
- NvCtrlGetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_CURRENT_DITHERING_DEPTH,
- &dithering_depth)) {
+ NvCtrlGetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_CURRENT_DITHERING_DEPTH,
+ &dithering_depth)) {
dithering_depth = NV_CTRL_CURRENT_DITHERING_DEPTH_NONE;
@@ -580,3 +632,3 @@ static Bool update_dithering_info(gpointer user_data)
case NV_CTRL_CURRENT_DITHERING_DEPTH_6_BITS:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_depth),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_depth_txt),
"6 bpc");
@@ -584,3 +636,3 @@ static Bool update_dithering_info(gpointer user_data)
case NV_CTRL_CURRENT_DITHERING_DEPTH_8_BITS:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_depth),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_depth_txt),
"8 bpc");
@@ -589,3 +641,3 @@ static Bool update_dithering_info(gpointer user_data)
case NV_CTRL_CURRENT_DITHERING_DEPTH_NONE:
- gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_current_depth),
+ gtk_label_set_text(GTK_LABEL(ctk_dithering_controls->dithering_depth_txt),
"None");
@@ -673,19 +725,7 @@ static void dithering_config_menu_changed(GtkOptionMenu *dithering_config_menu,
- switch (history) {
- case 2:
- dithering_config = NV_CTRL_DITHERING_DISABLED;
- break;
- case 1:
- dithering_config = NV_CTRL_DITHERING_ENABLED;
- break;
- default:
- case 0:
- dithering_config = NV_CTRL_DITHERING_AUTO;
- break;
- }
+ dithering_config = map_dithering_config_menu_idx_to_nvctrl(history);
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING,
- dithering_config);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING,
+ dithering_config);
@@ -723,6 +763,5 @@ static void dithering_mode_menu_changed(GtkOptionMenu *dithering_mode_menu,
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_MODE,
- dithering_mode);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_MODE,
+ dithering_mode);
@@ -759,19 +798,7 @@ static void dithering_depth_menu_changed(GtkOptionMenu *dithering_depth_menu,
- switch (history) {
- case 2:
- dithering_depth = NV_CTRL_DITHERING_DEPTH_8_BITS;
- break;
- case 1:
- dithering_depth = NV_CTRL_DITHERING_DEPTH_6_BITS;
- break;
- default:
- case 0:
- dithering_depth = NV_CTRL_DITHERING_DEPTH_AUTO;
- break;
- }
+ dithering_depth = map_dithering_depth_menu_idx_to_nvctrl(history);
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_DEPTH,
- dithering_depth);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_DEPTH,
+ dithering_depth);
@@ -808,16 +835,13 @@ void ctk_dithering_controls_reset(CtkDitheringControls *ctk_dithering_controls)
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING,
- NV_CTRL_DITHERING_AUTO);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING,
+ NV_CTRL_DITHERING_AUTO);
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_MODE,
- NV_CTRL_DITHERING_MODE_AUTO);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_MODE,
+ NV_CTRL_DITHERING_MODE_AUTO);
- NvCtrlSetDisplayAttribute(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_DEPTH,
- NV_CTRL_DITHERING_DEPTH_AUTO);
+ NvCtrlSetAttribute(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_DEPTH,
+ NV_CTRL_DITHERING_DEPTH_AUTO);
@@ -858,8 +882,2 @@ static void dithering_update_received(GtkObject *object, gpointer arg1,
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask & ctk_object->display_device_mask)) {
- return;
- }
-
ctk_dithering_controls_setup(ctk_object);
@@ -894,8 +912,7 @@ static gboolean build_dithering_mode_table(CtkDitheringControls *ctk_dithering_c
- ret =
- NvCtrlGetValidDisplayAttributeValues(ctk_dithering_controls->handle,
- ctk_dithering_controls->display_device_mask,
- NV_CTRL_DITHERING_MODE,
- &valid);
-
+ ret =
+ NvCtrlGetValidAttributeValues(ctk_dithering_controls->handle,
+ NV_CTRL_DITHERING_MODE,
+ &valid);
+
if (ret != NvCtrlSuccess || valid.type != ATTRIBUTE_TYPE_INT_BITS) {
@@ -956 +973,23 @@ static gint map_nvctrl_value_to_table(CtkDitheringControls *ctk_dithering_contro
} /*map_nvctrl_value_to_table() */
+
+
+static gint map_dithering_config_menu_idx_to_nvctrl(gint idx)
+{
+ switch (idx) {
+ case 2: return NV_CTRL_DITHERING_DISABLED;
+ case 1: return NV_CTRL_DITHERING_ENABLED;
+ default: /* fallthrough; w/ warning? */
+ case 0: return NV_CTRL_DITHERING_AUTO;
+ }
+}
+
+
+static gint map_dithering_depth_menu_idx_to_nvctrl(gint idx)
+{
+ switch (idx) {
+ case 2: return NV_CTRL_DITHERING_DEPTH_8_BITS;
+ case 1: return NV_CTRL_DITHERING_DEPTH_6_BITS;
+ default: /* fallthrough; w/ warning? */
+ case 0: return NV_CTRL_DITHERING_DEPTH_AUTO;
+ }
+}
diff --git a/src/gtk+-2.x/ctkditheringcontrols.h b/src/gtk+-2.x/ctkditheringcontrols.h
index 8ce37fe..f87ac9c 100644
--- a/src/gtk+-2.x/ctkditheringcontrols.h
+++ b/src/gtk+-2.x/ctkditheringcontrols.h
@@ -56,4 +56,6 @@ struct _CtkDitheringControls
CtkConfig *ctk_config;
+ char *name;
GtkWidget *reset_button;
- GtkWidget *dithering_controls_main;
+
+ GtkWidget *dithering_controls_box;
GtkWidget *dithering_mode_box;
@@ -64,10 +66,9 @@ struct _CtkDitheringControls
GtkWidget *dithering_depth_menu;
- GtkWidget *dithering_current_config;
- GtkWidget *dithering_current_mode;
- GtkWidget *dithering_current_depth;
- gint display_device_mask;
+ GtkWidget *dithering_config_txt;
+ GtkWidget *dithering_mode_txt;
+ GtkWidget *dithering_depth_txt;
+
gint *dithering_mode_table;
gint dithering_mode_table_size;
- char *name;
};
@@ -83,3 +84,2 @@ GtkWidget* ctk_dithering_controls_new (NvCtrlAttributeHandle *,
GtkWidget *,
- unsigned int display_device_mask,
char *);
diff --git a/src/gtk+-2.x/ctkdropdownmenu.c b/src/gtk+-2.x/ctkdropdownmenu.c
index f2665cd..0593a44 100644
--- a/src/gtk+-2.x/ctkdropdownmenu.c
+++ b/src/gtk+-2.x/ctkdropdownmenu.c
@@ -54,2 +54,3 @@ GType ctk_drop_down_menu_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkecc.c b/src/gtk+-2.x/ctkecc.c
index 5fb1b31..d6f0c3f 100644
--- a/src/gtk+-2.x/ctkecc.c
+++ b/src/gtk+-2.x/ctkecc.c
@@ -87,2 +87,3 @@ GType ctk_ecc_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkedid.c b/src/gtk+-2.x/ctkedid.c
index d31fdbd..e2e0bc6 100644
--- a/src/gtk+-2.x/ctkedid.c
+++ b/src/gtk+-2.x/ctkedid.c
@@ -74,2 +74,3 @@ GType ctk_edid_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -84,11 +85,4 @@ GType ctk_edid_get_type(void)
-GtkWidget* ctk_edid_new(NvCtrlAttributeHandle *handle,
- CtkConfig *ctk_config, CtkEvent *ctk_event,
- GtkWidget *reset_button,
- unsigned int display_device_mask,
- char *name)
+void ctk_edid_setup(CtkEdid *ctk_object)
{
- CtkEdid *ctk_edid;
- GObject *object;
- GtkWidget *frame, *vbox, *label, *hbox, *alignment;
ReturnStatus ret;
@@ -96,21 +90,30 @@ GtkWidget* ctk_edid_new(NvCtrlAttributeHandle *handle,
- /* check if EDID is available for this display device */
+ ret = NvCtrlGetAttribute(ctk_object->handle, NV_CTRL_EDID_AVAILABLE, &val);
- ret = NvCtrlGetDisplayAttribute(handle, display_device_mask,
- NV_CTRL_EDID_AVAILABLE, &val);
-
if ((ret != NvCtrlSuccess) || (val != NV_CTRL_EDID_AVAILABLE_TRUE)) {
- return NULL;
+ gtk_widget_set_sensitive(ctk_object->button, FALSE);
+ return;
}
+ gtk_widget_set_sensitive(ctk_object->button, TRUE);
+}
+
+
+GtkWidget* ctk_edid_new(NvCtrlAttributeHandle *handle,
+ CtkConfig *ctk_config, CtkEvent *ctk_event,
+ char *name)
+{
+ CtkEdid *ctk_edid;
+ GObject *object;
+ GtkWidget *frame, *vbox, *label, *hbox, *alignment;
+
/* create the object */
-
+
object = g_object_new(CTK_TYPE_EDID, NULL);
+ if (!object) return NULL;
ctk_edid = CTK_EDID(object);
-
+
ctk_edid->handle = handle;
ctk_edid->ctk_config = ctk_config;
- ctk_edid->reset_button = reset_button;
- ctk_edid->display_device_mask = display_device_mask;
ctk_edid->name = name;
@@ -199,2 +202,4 @@ GtkWidget* ctk_edid_new(NvCtrlAttributeHandle *handle,
+ ctk_edid_setup(ctk_edid);
+
return GTK_WIDGET(object);
@@ -292,4 +297,3 @@ static void button_clicked(GtkButton *button, gpointer user_data)
- ret = NvCtrlGetBinaryAttribute(ctk_edid->handle,
- ctk_edid->display_device_mask,
+ ret = NvCtrlGetBinaryAttribute(ctk_edid->handle, 0,
NV_CTRL_BINARY_DATA_EDID,
diff --git a/src/gtk+-2.x/ctkedid.h b/src/gtk+-2.x/ctkedid.h
index a9e9d8f..d29738d 100644
--- a/src/gtk+-2.x/ctkedid.h
+++ b/src/gtk+-2.x/ctkedid.h
@@ -53,6 +53,5 @@ struct _CtkEdid
GtkVBox parent;
-
+
NvCtrlAttributeHandle *handle;
CtkConfig *ctk_config;
- GtkWidget *reset_button;
GtkWidget *button;
@@ -61,3 +60,3 @@ struct _CtkEdid
GtkWidget *file_format_ascii_radio_button;
-
+
const gchar *filename;
@@ -65,3 +64,2 @@ struct _CtkEdid
- unsigned int display_device_mask;
gint file_format;
@@ -77,7 +75,5 @@ GtkWidget* ctk_edid_new (NvCtrlAttributeHandle *,
CtkConfig *, CtkEvent *,
- GtkWidget *reset_button,
- unsigned int display_device_mask,
char *name);
-void ctk_edid_reset(CtkEdid *);
+void ctk_edid_setup(CtkEdid *ctk_object);
diff --git a/src/gtk+-2.x/ctkevent.c b/src/gtk+-2.x/ctkevent.c
index 296d07b..f26ad4d 100644
--- a/src/gtk+-2.x/ctkevent.c
+++ b/src/gtk+-2.x/ctkevent.c
@@ -93,2 +93,3 @@ GType ctk_event_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -189,3 +190,2 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_SIGNAL(NV_CTRL_GVO_DATA_FORMAT);
- MAKE_SIGNAL(NV_CTRL_GVO_DISPLAY_X_SCREEN);
MAKE_SIGNAL(NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED);
@@ -202,4 +202,2 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_SIGNAL(NV_CTRL_GVIO_VIDEO_FORMAT_REFRESH_RATE);
- MAKE_SIGNAL(NV_CTRL_GVO_X_SCREEN_PAN_X);
- MAKE_SIGNAL(NV_CTRL_GVO_X_SCREEN_PAN_Y);
MAKE_SIGNAL(NV_CTRL_GPU_OVERCLOCKING_STATE);
@@ -329,2 +327,4 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_SIGNAL(NV_CTRL_GVO_AUDIO_BLANKING);
+ MAKE_SIGNAL(NV_CTRL_CURRENT_METAMODE_ID);
+ MAKE_SIGNAL(NV_CTRL_DISPLAY_ENABLED);
#undef MAKE_SIGNAL
@@ -338,3 +338,3 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
-#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_GVO_AUDIO_BLANKING
+#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_DISPLAY_ENABLED
#warning "There are attributes that do not emit signals!"
@@ -382,9 +382,16 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_STRING_SIGNAL(NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_DP_GUID);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX);
+ MAKE_STRING_SIGNAL(NV_CTRL_STRING_DISPLAY_NAME_RANDR);
#undef MAKE_STRING_SIGNAL
-#if NV_CTRL_STRING_LAST_ATTRIBUTE != NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME
+#if NV_CTRL_STRING_LAST_ATTRIBUTE != NV_CTRL_STRING_DISPLAY_NAME_RANDR
#warning "There are attributes that do not emit signals!"
#endif
-
-
+
+
/* make signals for binary attribute */
@@ -412,6 +419,7 @@ static void ctk_event_class_init(CtkEventClass *ctk_event_class)
MAKE_BINARY_SIGNAL(NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU);
-
+ MAKE_BINARY_SIGNAL(NV_CTRL_BINARY_DATA_METAMODES_VERSION_2);
+ MAKE_BINARY_SIGNAL(NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN);
#undef MAKE_BINARY_SIGNAL
-#if NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE != NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU
+#if NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE != NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN
#warning "There are attributes that do not emit signals!"
@@ -471,3 +479,5 @@ static void ctk_event_register_source(CtkEvent *ctk_event)
ctk_event_dispatch,
- NULL
+ NULL, /* finalize */
+ NULL, /* closure_callback */
+ NULL, /* closure_marshal */
};
@@ -638,4 +648,3 @@ static gboolean ctk_event_dispatch(GSource *source,
- if ((nvctrlevent->attribute >= 0) &&
- (nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
+ if ((nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
(signals[nvctrlevent->attribute] != 0)) {
@@ -671,4 +680,3 @@ static gboolean ctk_event_dispatch(GSource *source,
- if ((nvctrlevent->attribute >= 0) &&
- (nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
+ if ((nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
(signals[nvctrlevent->attribute] != 0)) {
@@ -705,4 +713,3 @@ static gboolean ctk_event_dispatch(GSource *source,
- if ((nvctrlevent->attribute >= 0) &&
- (nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
+ if ((nvctrlevent->attribute <= NV_CTRL_LAST_ATTRIBUTE) &&
(signals[nvctrlevent->attribute] != 0)) {
@@ -737,4 +744,3 @@ static gboolean ctk_event_dispatch(GSource *source,
- if ((nvctrlevent->attribute >= 0) &&
- (nvctrlevent->attribute <= NV_CTRL_STRING_LAST_ATTRIBUTE) &&
+ if ((nvctrlevent->attribute <= NV_CTRL_STRING_LAST_ATTRIBUTE) &&
(string_signals[nvctrlevent->attribute] != 0)) {
@@ -766,4 +772,3 @@ static gboolean ctk_event_dispatch(GSource *source,
/* make sure the attribute is in our signal array */
- if ((nvctrlevent->attribute >= 0) &&
- (nvctrlevent->attribute <= NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE) &&
+ if ((nvctrlevent->attribute <= NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE) &&
(binary_signals[nvctrlevent->attribute] != 0)) {
diff --git a/src/gtk+-2.x/ctkframelock.c b/src/gtk+-2.x/ctkframelock.c
index 32d4192..6c6bfb6 100644
--- a/src/gtk+-2.x/ctkframelock.c
+++ b/src/gtk+-2.x/ctkframelock.c
@@ -46,2 +46,3 @@
#include "msg.h"
+#include "common-utils.h"
@@ -745,5 +746,5 @@ static GtkWidget *create_enable_confirm_dialog(CtkFramelock *ctk_framelock)
*/
-GtkWidget *my_button_new_with_label(const gchar *txt,
- gint hpad,
- gint vpad)
+static GtkWidget *my_button_new_with_label(const gchar *txt,
+ gint hpad,
+ gint vpad)
{
@@ -773,5 +774,5 @@ GtkWidget *my_button_new_with_label(const gchar *txt,
*/
-GtkWidget *my_toggle_button_new_with_label(const gchar *txt,
- gint hpad,
- gint vpad)
+static GtkWidget *my_toggle_button_new_with_label(const gchar *txt,
+ gint hpad,
+ gint vpad)
{
@@ -801,3 +802,3 @@ GtkWidget *my_toggle_button_new_with_label(const gchar *txt,
*/
-void update_image(GtkWidget *container, GdkPixbuf *new_pixbuf)
+static void update_image(GtkWidget *container, GdkPixbuf *new_pixbuf)
{
@@ -1196,3 +1197,10 @@ static void list_entry_update_gpu_controls(CtkFramelock *ctk_framelock,
+static gboolean framelock_refresh_rates_compatible(int server, int client)
+{
+ int range = ABS(((int64_t)(server - client) * 1000000) / client);
+ /* Framelock can be achieved if the range between refresh rates is less
+ * than 50 ppm */
+ return range <= 50;
+}
@@ -1251,4 +1259,5 @@ static void list_entry_update_display_controls(CtkFramelock *ctk_framelock,
*/
- sensitive = ((!server_data || data->rate == server_data->rate) &&
- data->slaveable);
+ sensitive = (data->slaveable &&
+ (!server_data ||
+ framelock_refresh_rates_compatible(server_data->rate, data->rate)));
gtk_widget_set_sensitive(data->rate_label, sensitive);
@@ -2524,75 +2533,2 @@ static gboolean get_server_id(NvCtrlAttributeHandle *handle,
-/** find_entry_by_name() *********************************************
- *
- * - Looks in the list tree for the first list entry to have a handle
- * to the given server name with the given entry data type and
- * target id.
- *
- */
-static nvListEntryPtr find_entry_by_name(nvListEntryPtr entry,
- gchar *server_name,
- int entry_type,
- int entry_id
- )
-{
- nvListEntryPtr found_entry = NULL;
-
- if (!entry) return NULL;
-
- /* Check this entry */
-
- if ((entry->data_type == ENTRY_DATA_FRAMELOCK &&
- entry_type == NV_CTRL_TARGET_TYPE_FRAMELOCK) ||
- (entry->data_type == ENTRY_DATA_GPU &&
- entry_type == NV_CTRL_TARGET_TYPE_GPU)) {
- gpointer handle;
-
- switch (entry->data_type) {
- case ENTRY_DATA_FRAMELOCK:
- handle = ((nvFrameLockDataPtr)(entry->data))->handle;
- break;
- case ENTRY_DATA_GPU:
- handle = ((nvGPUDataPtr)(entry->data))->handle;
- break;
- default:
- handle = NULL;
- break;
- }
-
- if (handle) {
- gchar *name = NvCtrlGetDisplayName(handle);
- int id = NvCtrlGetTargetId(handle);
-
- if (name && !strcasecmp(server_name, name) &&
- id == entry_id) {
- free(name);
- return entry;
- }
- free(name);
- }
- }
-
- /* Check children */
-
- found_entry = find_entry_by_name(entry->children,
- server_name,
- entry_type,
- entry_id);
- if (found_entry) return found_entry;
-
- /* Check siblings */
-
- found_entry = find_entry_by_name(entry->next_sibling,
- server_name,
- entry_type,
- entry_id);
- if (found_entry) return found_entry;
-
- /* Entry not found in this branch */
-
- return NULL;
-}
-
-
-
/**************************************************************************/
@@ -3574,4 +3510,4 @@ static void toggle_detect_video_mode(GtkToggleButton *button,
*/
-void list_entry_update_framelock_status(CtkFramelock *ctk_framelock,
- nvListEntryPtr entry)
+static void list_entry_update_framelock_status(CtkFramelock *ctk_framelock,
+ nvListEntryPtr entry)
{
@@ -3667,4 +3603,4 @@ void list_entry_update_framelock_status(CtkFramelock *ctk_framelock,
*/
-void list_entry_update_gpu_status(CtkFramelock *ctk_framelock,
- nvListEntryPtr entry)
+static void list_entry_update_gpu_status(CtkFramelock *ctk_framelock,
+ nvListEntryPtr entry)
{
@@ -3726,4 +3662,4 @@ void list_entry_update_gpu_status(CtkFramelock *ctk_framelock,
*/
-void list_entry_update_display_status(CtkFramelock *ctk_framelock,
- nvListEntryPtr entry)
+static void list_entry_update_display_status(CtkFramelock *ctk_framelock,
+ nvListEntryPtr entry)
{
@@ -3795,4 +3731,4 @@ void list_entry_update_display_status(CtkFramelock *ctk_framelock,
*/
-void list_entry_update_status(CtkFramelock *ctk_framelock,
- nvListEntryPtr entry)
+static void list_entry_update_status(CtkFramelock *ctk_framelock,
+ nvListEntryPtr entry)
{
@@ -4458,2 +4394,3 @@ GType ctk_framelock_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -5717,3 +5654,3 @@ static gint add_devices(CtkFramelock *ctk_framelock,
a.attr = (x); \
- a.val = (y); \
+ a.val.i = (y); \
a.display_device_mask = (z); \
@@ -5725,3 +5662,3 @@ static void add_entry_to_parsed_attributes(nvListEntryPtr entry,
{
- ParsedAttribute a = { 0 };
+ ParsedAttribute a;
char *display_name = NULL;
@@ -5730,4 +5667,8 @@ static void add_entry_to_parsed_attributes(nvListEntryPtr entry,
- if (!entry) return;
-
+ if (!entry) {
+ return;
+ }
+
+ memset(&a, 0, sizeof(a));
+
switch (entry->data_type) {
diff --git a/src/gtk+-2.x/ctkgauge.c b/src/gtk+-2.x/ctkgauge.c
index 74bcc02..276dbd3 100644
--- a/src/gtk+-2.x/ctkgauge.c
+++ b/src/gtk+-2.x/ctkgauge.c
@@ -67,2 +67,3 @@ GType ctk_gauge_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkglx.c b/src/gtk+-2.x/ctkglx.c
index bd65f90..cdbb9b9 100644
--- a/src/gtk+-2.x/ctkglx.c
+++ b/src/gtk+-2.x/ctkglx.c
@@ -148,2 +148,3 @@ GType ctk_glx_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkgpu.c b/src/gtk+-2.x/ctkgpu.c
index 001f491..fa22fb1 100644
--- a/src/gtk+-2.x/ctkgpu.c
+++ b/src/gtk+-2.x/ctkgpu.c
@@ -56,2 +56,3 @@ GType ctk_gpu_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -67,50 +68,6 @@ GType ctk_gpu_get_type(
-static gchar *make_display_device_list(NvCtrlAttributeHandle *handle,
- unsigned int display_devices)
+static gchar *make_display_device_list(NvCtrlAttributeHandle *handle)
{
- gchar *displays = NULL;
- gchar *type;
- gchar *name;
- gchar *tmp_str;
- unsigned int mask;
- ReturnStatus ret;
-
-
- /* List of Display Device connected on GPU */
-
- for (mask = 1; mask; mask <<= 1) {
-
- if (!(mask & display_devices)) continue;
-
- type = display_device_mask_to_display_device_name(mask);
- name = NULL;
-
- ret =
- NvCtrlGetStringDisplayAttribute(handle,
- mask,
- NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
- &name);
- if (ret != NvCtrlSuccess) {
- tmp_str = g_strdup_printf("Unknown (%s)", type);
- } else {
- tmp_str = g_strdup_printf("%s (%s)", name, type);
- XFree(name);
- }
- free(type);
-
- if (displays) {
- name = g_strdup_printf("%s,\n%s", tmp_str, displays);
- g_free(displays);
- g_free(tmp_str);
- } else {
- name = tmp_str;
- }
- displays = name;
- }
-
- if (!displays) {
- displays = g_strdup("None");
- }
-
- return displays;
+ return create_display_name_list_string(handle,
+ NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU);
@@ -252,3 +209,2 @@ GtkWidget* ctk_gpu_new(
- unsigned int display_devices;
int xinerama_enabled;
@@ -396,13 +352,4 @@ GtkWidget* ctk_gpu_new(
- /* List of Display Device connected on GPU */
-
- displays = NULL;
- ret = NvCtrlGetAttribute(handle, NV_CTRL_CONNECTED_DISPLAYS,
- (int *)&display_devices);
- if (ret == NvCtrlSuccess) {
- displays = make_display_device_list(handle, display_devices);
- }
-
/* now, create the object */
-
+
object = g_object_new(CTK_TYPE_GPU, NULL);
@@ -527,2 +474,4 @@ GtkWidget* ctk_gpu_new(
/* spacing */
+ displays = make_display_device_list(handle);
+
row += 3;
@@ -664,8 +613,6 @@ static void probe_displays_received(GtkObject *object, gpointer arg1,
{
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
CtkGpu *ctk_object = CTK_GPU(user_data);
- unsigned int probed_displays = event_struct->value;
gchar *str;
- str = make_display_device_list(ctk_object->handle, probed_displays);
+ str = make_display_device_list(ctk_object->handle);
diff --git a/src/gtk+-2.x/ctkgvi.c b/src/gtk+-2.x/ctkgvi.c
index 49934ee..591c237 100644
--- a/src/gtk+-2.x/ctkgvi.c
+++ b/src/gtk+-2.x/ctkgvi.c
@@ -53,2 +53,3 @@ GType ctk_gvi_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -98,4 +99,4 @@ static gboolean update_sdi_input_info(gpointer user_data);
*/
-const char * ctk_gvio_get_format_name(const GvioFormatName *formatTable,
- const gint format)
+static const char *ctk_gvio_get_format_name(const GvioFormatName *formatTable,
+ const gint format)
{
diff --git a/src/gtk+-2.x/ctkgvo-banner.c b/src/gtk+-2.x/ctkgvo-banner.c
index 23146ac..ca2128a 100644
--- a/src/gtk+-2.x/ctkgvo-banner.c
+++ b/src/gtk+-2.x/ctkgvo-banner.c
@@ -111,2 +111,3 @@ GType ctk_gvo_banner_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkgvo-csc.c b/src/gtk+-2.x/ctkgvo-csc.c
index dfd5090..71f813f 100644
--- a/src/gtk+-2.x/ctkgvo-csc.c
+++ b/src/gtk+-2.x/ctkgvo-csc.c
@@ -171,2 +171,3 @@ GType ctk_gvo_csc_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkgvo-sync.c b/src/gtk+-2.x/ctkgvo-sync.c
index 5861a5d..43e5212 100644
--- a/src/gtk+-2.x/ctkgvo-sync.c
+++ b/src/gtk+-2.x/ctkgvo-sync.c
@@ -167,2 +167,3 @@ GType ctk_gvo_sync_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkgvo.c b/src/gtk+-2.x/ctkgvo.c
index 799ba01..425159b 100644
--- a/src/gtk+-2.x/ctkgvo.c
+++ b/src/gtk+-2.x/ctkgvo.c
@@ -23,3 +23,2 @@
#include <X11/Xlib.h>
-#include <X11/extensions/Xrandr.h>
@@ -42,14 +41,5 @@
-/* Some defaults */
-
-#define DEFAULT_OUTPUT_VIDEO_FORMAT \
- NV_CTRL_GVIO_VIDEO_FORMAT_487I_59_94_SMPTE259_NTSC
-
-#define DEFAULT_OUTPUT_DATA_FORMAT \
- NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444
-
-
/* General information help */
-static const char * __general_firmware_version_help =
+static const char *__general_firmware_version_help =
"The Firmware Version reports the version of the firmware running on the "
@@ -57,3 +47,3 @@ static const char * __general_firmware_version_help =
-static const char * __general_current_sdi_resolution_help =
+static const char *__general_current_sdi_resolution_help =
"The Current SDI Resolution reports the current active resolution that the "
@@ -61,28 +51,12 @@ static const char * __general_current_sdi_resolution_help =
-static const char * __general_current_sdi_state_help =
-"The Current SDI state reports on the current usage of the SDI device.";
-
-
-/* Clone mode help */
-
-static const char * __clone_mode_video_format_help =
-"The Video Format drop-down allows you to select the desired resolution and "
-"refresh rate to be used for Clone Mode.";
-
-static const char * __clone_mode_data_format_help =
-"The Data Format drop-down allows you to select the desired data format that "
-"the SDI will output. Note that the new data format "
-"will be applied at modeset time.";
-
-static const char * __clone_mode_x_offset_help =
-"The X Offset determines the start location of the left side of SDI output "
-"window when in Clone Mode.";
-
-static const char * __clone_mode_y_offset_help =
-"The Y Offset determines the start location of the top of the SDI output "
-"window when in Clone Mode.";
+static const char *__general_current_sdi_state_help =
+"The Current SDI state reports the current usage of the SDI device.";
-static const char * __clone_mode_enable_clone_mode_help =
-"The Enable Clone Mode button toggles SDI Clone mode.";
+static const char *__requested_sdi_video_format_help =
+"The Requested SDI Video Format indicates what video format is currently "
+"requested through NV-CONTROL.";
+static const char *__requested_sdi_data_format_help =
+"The Requested SDI Data Format indicates what data format is currently "
+"requested through NV-CONTROL.";
@@ -91,40 +65,7 @@ static const char * __clone_mode_enable_clone_mode_help =
-static gboolean query_init_gvo_state(CtkGvo *ctk_gvo);
-
static void query_video_format_details(CtkGvo *ctk_gvo);
-static void register_for_gvo_events(CtkGvo *ctk_gvo);
-
-
-static GtkWidget *start_menu(const gchar *name, GtkWidget *table,
- const gint row);
-static void finish_menu(GtkWidget *menu, GtkWidget *table, const gint row);
-
-
-static void fill_output_video_format_menu(CtkGvo *ctk_gvo);
-static void output_video_format_ui_changed(CtkDropDownMenu *menu,
- gpointer user_data);
-static void post_output_video_format_changed(CtkGvo *ctk_gvo);
-
-
-static void fill_output_data_format_menu(CtkGvo *ctk_gvo);
-static void output_data_format_ui_changed(CtkDropDownMenu *menu,
- gpointer user_data);
-static void post_output_data_format_changed(CtkGvo *ctk_gvo);
-
-
-static void x_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data);
-static void y_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data);
-
-
-static void create_toggle_clone_mode_button(CtkGvo *ctk_gvo);
-static void clone_mode_button_ui_toggled(GtkWidget *button,
- gpointer user_data);
-static void post_clone_mode_button_toggled(CtkGvo *gvo);
-
+static void register_for_gvo_events(CtkGvo *ctk_gvo, CtkEvent *ctk_event);
static void update_gvo_current_info(CtkGvo *ctk_gvo);
-static void update_offset_spin_button_ranges(CtkGvo *ctk_gvo);
-static void update_gvo_sensitivity(CtkGvo *ctk_gvo);
-
@@ -133,6 +74,2 @@ static void gvo_event_received(GtkObject *object,
gpointer user_data);
-static void screen_changed_handler(GtkWidget *widget,
- XRRScreenChangeNotifyEvent *ev,
- gpointer data);
-
@@ -282,3 +219,2 @@ static const GvioFormatName dataFormatNames[] = {
- /* Valid for Clone Mode */
{ NV_CTRL_GVO_DATA_FORMAT_R8G8B8_TO_YCRCB444, "RGB -> YCrCb (4:4:4)" },
@@ -286,4 +222,2 @@ static const GvioFormatName dataFormatNames[] = {
{ NV_CTRL_GVO_DATA_FORMAT_X8X8X8_444_PASSTHRU, "RGB (4:4:4)" },
-
- /* Invalid for Clone Mode usage */
{ NV_CTRL_GVO_DATA_FORMAT_R8G8B8A8_TO_YCRCBA4444, "RGBA -> YCrCbA (4:4:4:4)" },
@@ -365,105 +299,2 @@ void ctk_gvo_get_video_format_resolution(const gint format, gint *w, gint *h)
/*
- * ctk_gvo_get_video_format_refresh() - return the refresh rate of the
- * given video format
- */
-
-void ctk_gvo_get_video_format_refresh(const gint format, gint *r)
-{
- gint i;
-
- *r = 0;
-
- for (i = 0; videoFormatDetails[i].format != -1; i++) {
- if (videoFormatDetails[i].format == format) {
- *r = videoFormatDetails[i].rate;
- return;
- }
- }
-} /* ctk_gvo_get_video_format_refresh() */
-
-
-
-/*
- * ctk_gvo_video_format_valid() - returns a bitmask indicating whether or not
- * the currently selected video format is valid for clone mode based on the
- * current X screen resolution and current sync method. Returns a bitmask
- * indicating possible valid/invalid state of the mode.
- */
-
-#define GVO_VIDEO_FORMAT_INVALID 0x00000000
-#define GVO_VIDEO_FORMAT_MODE_VALID 0x00000001
-#define GVO_VIDEO_FORMAT_RESOLUTION_VALID 0x00000002
-#define GVO_VIDEO_FORMAT_REFRESH_VALID 0x00000004
-
-#define GVO_VIDEO_FORMAT_VALID \
- (GVO_VIDEO_FORMAT_MODE_VALID | \
- GVO_VIDEO_FORMAT_RESOLUTION_VALID | \
- GVO_VIDEO_FORMAT_REFRESH_VALID)
-
-guint ctk_gvo_video_format_valid(CtkGvo *ctk_gvo, const gint format)
-{
- gint width, height, refresh_rate, input_refresh_rate;
- guint valid = GVO_VIDEO_FORMAT_VALID;
-
-
- /* Keep track of whether we'll need to re-set the video format
- * when enabling clone mode.
- */
-
- /* Check to make sure the format size <= current screen size */
- ctk_gvo_get_video_format_resolution(format, &width, &height);
-
- /* Make sure the resolution fits */
- if ((width > ctk_gvo->screen_width) || (height > ctk_gvo->screen_height)) {
- valid &= ~(GVO_VIDEO_FORMAT_RESOLUTION_VALID);
- }
-
- /* Check that format is supported */
- if (((format / 32) >=
- (sizeof(ctk_gvo->valid_output_video_format_mask)/
- sizeof(ctk_gvo->valid_output_video_format_mask[0]))) ||
- !(ctk_gvo->valid_output_video_format_mask[format / 32] &
- (1 << (format % 32)))) {
- valid &= ~(GVO_VIDEO_FORMAT_MODE_VALID);
- }
-
- /* Check that formats match if Genlock is enabled */
- else if ((ctk_gvo->sync_mode == NV_CTRL_GVO_SYNC_MODE_GENLOCK) &&
- (ctk_gvo->input_video_format != NV_CTRL_GVIO_VIDEO_FORMAT_NONE) &&
- (ctk_gvo->input_video_format != format)) {
- valid &= ~(GVO_VIDEO_FORMAT_REFRESH_VALID);
- }
-
-
- /* Check that format refresh rates match if Frame Lock is enabled */
- else if ((ctk_gvo->sync_mode == NV_CTRL_GVO_SYNC_MODE_FRAMELOCK) &&
- (ctk_gvo->input_video_format != NV_CTRL_GVIO_VIDEO_FORMAT_NONE)) {
-
- /* Get the refresh rate */
- ctk_gvo_get_video_format_refresh(format, &refresh_rate);
-
- /* Get the current input refresh rate */
- ctk_gvo_get_video_format_refresh(ctk_gvo->input_video_format,
- &input_refresh_rate);
-
- /* Check that the refresh rates are the same, or, for those
- * GVO devices that support multi-rate synchronization, check
- * that the fractional part of the rates are either both zero
- * or both non-zero.
- */
-
- if ((refresh_rate != input_refresh_rate) &&
- (!(ctk_gvo->caps & NV_CTRL_GVO_CAPABILITIES_MULTIRATE_SYNC) ||
- ((refresh_rate % 1000 == 0) != (input_refresh_rate % 1000 == 0)))) {
- valid &= ~(GVO_VIDEO_FORMAT_REFRESH_VALID);
- }
- }
-
- return valid;
-
-} /* ctk_gvo_video_format_valid() */
-
-
-
-/*
* ctk_gvo_get_data_format_name() - return the name of the given data format
@@ -488,24 +319,2 @@ const char *ctk_gvo_get_data_format_name(const gint format)
/*
- * ctk_gvo_data_format_valid() - return whether or not the given data
- * format is valid for clone mode.
- */
-
-gboolean ctk_gvo_data_format_valid(const gint format)
-{
- gint i;
-
- for (i = 0; dataFormatNames[i].name; i++) {
- if (dataFormatNames[i].format == format) {
- /* Only the first three formats are valid */
- return (i < 3);
- }
- }
-
- return FALSE;
-
-} /* ctk_gvo_data_format_valid() */
-
-
-
-/*
* ctk_gvo_get_type() - Returns the CtkGvo "class" type
@@ -528,2 +337,3 @@ GType ctk_gvo_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -553,8 +363,8 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
CtkGvo *ctk_gvo;
- GtkWidget *hbox, *vbox, *alignment, *label;
+ GtkWidget *hbox;
ReturnStatus ret;
gchar scratch[64], *firmware, *string;
- gint val, width, height;
+ gint val;
- GtkWidget *frame, *table, *menu;
+ GtkWidget *frame, *table;
@@ -564,2 +374,10 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
+ /* Check if this screen supports GVO */
+
+ ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_SUPPORTED, &val);
+ if ((ret != NvCtrlSuccess) || (val != NV_CTRL_GVO_SUPPORTED_TRUE)) {
+ /* GVO not available */
+ return NULL;
+ }
+
/* create and initialize the object */
@@ -570,16 +388,7 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
ctk_gvo->handle = handle;
- ctk_gvo->ctk_config = ctk_config;
- ctk_gvo->ctk_event = ctk_event;
-
- /* Query the current GVO state */
- if ( !query_init_gvo_state(ctk_gvo) ) {
- // Free the object
- g_object_ref(object);
- gtk_object_sink(GTK_OBJECT(object));
- g_object_unref(object);
- return NULL;
- }
-
- /* Query the width, height and refresh rate for each video format */
+ /*
+ * Query the validness, width, height and refresh rate for each
+ * video format
+ */
@@ -657,158 +466,26 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
-
/*
- * Clone mode options
+ * Requested SDI Configuration
*/
-
- frame = gtk_frame_new("Clone Mode");
- ctk_gvo->clone_mode_frame = frame;
- vbox = gtk_vbox_new(FALSE, 0);
+ frame = gtk_frame_new("Requested SDI Configuration");
- table = gtk_table_new(3, 2, FALSE);
- gtk_table_set_row_spacings(GTK_TABLE(table), 0);
- gtk_table_set_col_spacings(GTK_TABLE(table), 0);
-
- gtk_box_pack_start(GTK_BOX(vbox), table, TRUE, FALSE, 0);
- gtk_container_add(GTK_CONTAINER(frame), vbox);
gtk_box_pack_start(GTK_BOX(object), frame, FALSE, FALSE, 0);
-
- /* Output Video Format */
-
- menu = start_menu("Video Format: ", table, 0);
- ctk_gvo->output_video_format_menu = menu;
- ctk_config_set_tooltip(ctk_config, CTK_DROP_DOWN_MENU(menu)->option_menu,
- __clone_mode_video_format_help);
-
- fill_output_video_format_menu(ctk_gvo);
-
- finish_menu(menu, table, 0);
-
- ctk_drop_down_menu_set_current_value
- (CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu),
- ctk_gvo->output_video_format);
-
- g_signal_connect(G_OBJECT(ctk_gvo->output_video_format_menu),
- "changed", G_CALLBACK(output_video_format_ui_changed),
- (gpointer) ctk_gvo);
-
- /* Output Data Format */
-
- menu = start_menu("Data Format: ", table, 1);
- ctk_gvo->output_data_format_menu = menu;
- ctk_config_set_tooltip(ctk_config, CTK_DROP_DOWN_MENU(menu)->option_menu,
- __clone_mode_data_format_help);
-
- fill_output_data_format_menu(ctk_gvo);
-
- finish_menu(menu, table, 1);
-
- ctk_drop_down_menu_set_current_value
- (CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu),
- ctk_gvo->output_data_format);
-
- g_signal_connect(G_OBJECT(ctk_gvo->output_data_format_menu),
- "changed", G_CALLBACK(output_data_format_ui_changed),
- (gpointer) ctk_gvo);
-
- /* Region of Interest */
-
- ctk_gvo_get_video_format_resolution(ctk_gvo->output_video_format,
- &width, &height);
- /* NV_CTRL_GVO_X_SCREEN_PAN_X */
-
- label = gtk_label_new("X Offset: ");
-
- alignment = gtk_alignment_new(0, 0, 0, 0);
- gtk_container_add(GTK_CONTAINER(alignment), label);
-
- gtk_table_attach(GTK_TABLE(table), alignment,
- 0, 1, 2, 3,
- GTK_FILL, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-
- ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_X_SCREEN_PAN_X, &val);
- if (ret != NvCtrlSuccess) val = 0;
-
- width = ctk_gvo->screen_width - width;
- if (width < 1) width = 1;
-
- ctk_gvo->x_offset_spin_button =
- gtk_spin_button_new_with_range(0.0, width, 1);
-
- ctk_config_set_tooltip(ctk_config, ctk_gvo->x_offset_spin_button,
- __clone_mode_x_offset_help);
-
- gtk_spin_button_set_value
- (GTK_SPIN_BUTTON(ctk_gvo->x_offset_spin_button), val);
-
- g_signal_connect(G_OBJECT(ctk_gvo->x_offset_spin_button),
- "value-changed",
- G_CALLBACK(x_offset_ui_changed), ctk_gvo);
-
- hbox = gtk_hbox_new(FALSE, FALSE);
- gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo->x_offset_spin_button,
- FALSE, FALSE, 0);
-
- gtk_table_attach(GTK_TABLE(table), hbox,
- 1, 2, 2, 3,
- GTK_FILL | GTK_EXPAND, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-
- /* NV_CTRL_GVO_X_SCREEN_PAN_Y */
-
- label = gtk_label_new("Y Offset: ");
- alignment = gtk_alignment_new(0, 0, 0, 0);
- gtk_container_add(GTK_CONTAINER(alignment), label);
-
- gtk_table_attach(GTK_TABLE(table), alignment,
- 0, 1, 3, 4,
- GTK_FILL, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-
- ret = NvCtrlGetAttribute(handle, NV_CTRL_GVO_X_SCREEN_PAN_Y, &val);
- if (ret != NvCtrlSuccess) val = 0;
-
- height = ctk_gvo->screen_height - height;
- if (height < 1) height = 1;
-
- ctk_gvo->y_offset_spin_button =
- gtk_spin_button_new_with_range(0.0, height, 1);
-
- gtk_spin_button_set_value
- (GTK_SPIN_BUTTON(ctk_gvo->y_offset_spin_button), val);
-
- ctk_config_set_tooltip(ctk_config, ctk_gvo->y_offset_spin_button,
- __clone_mode_y_offset_help);
-
- g_signal_connect(G_OBJECT(ctk_gvo->y_offset_spin_button),
- "value-changed",
- G_CALLBACK(y_offset_ui_changed), ctk_gvo);
-
- hbox = gtk_hbox_new(FALSE, FALSE);
- gtk_box_pack_start(GTK_BOX(hbox), ctk_gvo->y_offset_spin_button,
- FALSE, FALSE, 0);
-
- gtk_table_attach(GTK_TABLE(table), hbox,
- 1, 2, 3, 4,
- GTK_FILL | GTK_EXPAND, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-
- /*
- * "Enable Clone Mode" button
- */
-
- create_toggle_clone_mode_button(ctk_gvo);
-
- ctk_config_set_tooltip(ctk_config, ctk_gvo->toggle_clone_mode_button,
- __clone_mode_enable_clone_mode_help);
-
- hbox = gtk_hbox_new(FALSE, 0);
+ table = gtk_table_new(2, 2, FALSE);
- gtk_box_pack_end(GTK_BOX(hbox), ctk_gvo->toggle_clone_mode_button,
- FALSE, FALSE, 5);
+ gtk_table_set_row_spacings(GTK_TABLE(table), 3);
+ gtk_table_set_col_spacings(GTK_TABLE(table), 15);
+ gtk_container_set_border_width(GTK_CONTAINER(table), 5);
- gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
+ gtk_container_add(GTK_CONTAINER(frame), table);
+ ctk_gvo->current_output_video_format_label =
+ add_table_row(table, 3,
+ 0, 0.5, "Requested SDI Video Format:",
+ 0, 0.5, "Inactive");
+ ctk_gvo->current_output_data_format_label =
+ add_table_row(table, 4,
+ 0, 0.5, "Requested SDI Data Format:",
+ 0, 0.5, "Inactive");
@@ -820,5 +497,2 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
- update_gvo_sensitivity(ctk_gvo);
-
-
/*
@@ -827,3 +501,3 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
- register_for_gvo_events(ctk_gvo);
+ register_for_gvo_events(ctk_gvo, ctk_event);
@@ -839,353 +513,2 @@ GtkWidget* ctk_gvo_new(NvCtrlAttributeHandle *handle,
-/*
- * create_toggle_clone_mode_button() -
- */
-
-static void create_toggle_clone_mode_button(CtkGvo *ctk_gvo)
-{
- GtkWidget *label;
- GtkWidget *hbox, *hbox2;
- GdkPixbuf *pixbuf;
- GtkWidget *image = NULL;
- GtkWidget *button;
- gboolean enabled;
-
- button = gtk_toggle_button_new();
-
- /* create the Enable Clone Mode icon */
-
- pixbuf = gtk_widget_render_icon(button,
- GTK_STOCK_EXECUTE,
- GTK_ICON_SIZE_BUTTON,
- "Enable Clone Mode");
- if (pixbuf) image = gtk_image_new_from_pixbuf(pixbuf);
- label = gtk_label_new("Enable Clone Mode");
-
- hbox = gtk_hbox_new(FALSE, 2);
-
- if (image) gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 2);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-
- hbox2 = gtk_hbox_new(FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox2), hbox, FALSE, FALSE, 15);
-
- gtk_widget_show_all(hbox2);
-
- /*
- * XXX increment the reference count, so that when we do
- * gtk_container_remove() later, it doesn't get destroyed
- */
-
- gtk_object_ref(GTK_OBJECT(hbox2));
-
- ctk_gvo->enable_clone_mode_label = hbox2;
-
-
- /* create the Disable Clone Mode icon */
-
- pixbuf = gtk_widget_render_icon(button,
- GTK_STOCK_STOP,
- GTK_ICON_SIZE_BUTTON,
- "Disable Clone Mode");
- if (pixbuf) image = gtk_image_new_from_pixbuf(pixbuf);
- label = gtk_label_new("Disable Clone Mode");
-
- hbox = gtk_hbox_new(FALSE, 2);
-
- if (image) gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 2);
- gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-
- hbox2 = gtk_hbox_new(FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox2), hbox, FALSE, FALSE, 15);
-
- gtk_widget_show_all(hbox2);
-
- /*
- * XXX increment the reference count, so that when we do
- * gtk_container_remove() later, it doesn't get destroyed
- */
-
- gtk_object_ref(GTK_OBJECT(hbox2));
-
- ctk_gvo->disable_clone_mode_label = hbox2;
-
- /* Set the initial Clone Mode enabled state */
-
- enabled = (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE);
-
- gtk_container_add(GTK_CONTAINER(button),
- enabled ? ctk_gvo->disable_clone_mode_label :
- ctk_gvo->enable_clone_mode_label);
-
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), enabled);
-
- ctk_gvo->toggle_clone_mode_button = button;
-
- g_signal_connect(G_OBJECT(button), "toggled",
- G_CALLBACK(clone_mode_button_ui_toggled),
- GTK_OBJECT(ctk_gvo));
-
-} /* create_toggle_clone_mode_button() */
-
-
-
-/*
- * start_menu() - Start the creation of a labled dropdown menu. (Packs
- * the dropdown label into the table row.
- */
-
-static GtkWidget *start_menu(const gchar *name, GtkWidget *table,
- const gint row)
-{
- GtkWidget *menu, *label, *alignment;
-
- label = gtk_label_new(name);
- alignment = gtk_alignment_new(0, 0, 0, 0);
- gtk_container_add(GTK_CONTAINER(alignment), label);
-
- gtk_table_attach(GTK_TABLE(table),
- alignment, 0, 1, row, row+1, GTK_FILL, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-
- menu = ctk_drop_down_menu_new(CTK_DROP_DOWN_MENU_FLAG_MONOSPACE);
-
- return menu;
-
-} /* start_menu() */
-
-
-
-/*
- * finish_menu() - Finish/Finalize a dropdown menu. (Packs the menu in
- * the table row.)
- */
-
-static void finish_menu(GtkWidget *menu, GtkWidget *table, const gint row)
-{
- gtk_widget_show_all(menu);
-
- gtk_table_attach(GTK_TABLE(table), menu, 1, 2, row, row+1,
- GTK_FILL | GTK_EXPAND, GTK_FILL,
- TABLE_PADDING, TABLE_PADDING);
-}
-
-
-
-/*
- * fill_output_video_format_menu() - Populates the output video
- * format menu.
- */
-
-static void fill_output_video_format_menu(CtkGvo *ctk_gvo)
-{
- int i;
- CtkDropDownMenu *dmenu =
- CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu);
- GtkWidget *label;
- guint valid;
- gint num_valid_entries = 0;
- gchar *str;
- gchar *tmp;
- const gchar *constStr;
-
- ctk_drop_down_menu_reset(CTK_DROP_DOWN_MENU(dmenu));
-
- for (i = 0; videoFormatNames[i].name; i++) {
-
- /*
- * runtime check that videoFormatDetails[] and
- * videoFormatNames[] are in sync
- */
-
- if (videoFormatDetails[i].format != videoFormatNames[i].format) {
- nv_error_msg("GVO format tables out of alignment!");
- return;
- }
-
- valid = ctk_gvo_video_format_valid(ctk_gvo,
- videoFormatNames[i].format);
-
- /* Mode must be supported */
- if (!(valid & GVO_VIDEO_FORMAT_MODE_VALID)) {
- continue;
- }
-
- /* Resolution must fit (or this is the selected mode) */
- if (!(valid & GVO_VIDEO_FORMAT_RESOLUTION_VALID) &&
- (ctk_gvo->output_video_format != videoFormatNames[i].format)) {
- continue;
- }
-
- if (valid == GVO_VIDEO_FORMAT_VALID) {
- constStr = videoFormatNames[i].name;
- str = NULL;
- } else {
- str = g_strconcat(videoFormatNames[i].name, " -", NULL);
-
- if (!(valid & GVO_VIDEO_FORMAT_RESOLUTION_VALID)) {
- tmp = g_strconcat(str, " Resolution mismatch", NULL);
- g_free(str);
- str = tmp;
- }
- if (!(valid & GVO_VIDEO_FORMAT_REFRESH_VALID)) {
- if (!(valid & GVO_VIDEO_FORMAT_RESOLUTION_VALID)) {
- tmp = g_strconcat(str, ",", NULL);
- g_free(str);
- str = tmp;
- }
- tmp = g_strconcat(str, " Refresh mismatch", NULL);
- g_free(str);
- str = tmp;
- }
- constStr = str;
- }
-
- label = ctk_drop_down_menu_append_item(dmenu, constStr,
- videoFormatNames[i].format);
- if (str) {
- g_free(str);
- }
-
- /* Gray out entry if it is not valid */
- gtk_widget_set_sensitive(label, (valid == GVO_VIDEO_FORMAT_VALID));
-
- if (valid == GVO_VIDEO_FORMAT_VALID) {
- num_valid_entries++;
- }
- }
-
- /* Show special menu if there are no valid entries */
- if (num_valid_entries <= 0) {
- nv_warning_msg("There are currently no GVO video formats valid for "
- "use with Clone Mode. Please make sure that the X "
- "screen resolution (currently %d x %d) is at least "
- "720 x 487.\n",
- ctk_gvo->screen_width, ctk_gvo->screen_height);
-
- ctk_drop_down_menu_reset(CTK_DROP_DOWN_MENU(dmenu));
- label = ctk_drop_down_menu_append_item(dmenu,
- "*** X screen is smaller than "
- "720x487 ***",
- ctk_gvo->output_video_format);
- gtk_widget_set_sensitive(label, FALSE);
- }
-
-} /* fill_output_video_format_menu() */
-
-
-
-/*
- * rebuild_output_video_format_menu() - Reconsutrcts the output data format
- * menu.
- */
-
-static void rebuild_output_video_format_menu(CtkGvo *ctk_gvo)
-{
- CtkDropDownMenu *dmenu =
- CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu);
-
- g_signal_handlers_block_by_func
- (G_OBJECT(dmenu),
- G_CALLBACK(output_video_format_ui_changed),
- (gpointer) ctk_gvo);
-
- fill_output_video_format_menu(ctk_gvo);
-
- ctk_drop_down_menu_set_current_value
- (CTK_DROP_DOWN_MENU(ctk_gvo->output_video_format_menu),
- ctk_gvo->output_video_format);
-
- gtk_widget_show_all(GTK_WIDGET(dmenu));
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(dmenu),
- G_CALLBACK(output_video_format_ui_changed),
- (gpointer) ctk_gvo);
-
- update_gvo_sensitivity(ctk_gvo);
-
-} /* rebuild_output_video_format_menu() */
-
-
-
-/*
- * fill_output_data_format_menu() - Populates the output data format menu.
- */
-
-static void fill_output_data_format_menu(CtkGvo *ctk_gvo)
-{
- int i;
- CtkDropDownMenu *dmenu =
- CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu);
- GtkWidget *label;
- gboolean valid;
- gchar *str;
- const gchar *constStr;
-
- ctk_drop_down_menu_reset(CTK_DROP_DOWN_MENU(dmenu));
-
- for (i = 0; dataFormatNames[i].name; i++) {
- valid = ctk_gvo_data_format_valid(dataFormatNames[i].format);
- if (!valid &&
- (ctk_gvo->output_data_format != dataFormatNames[i].format)) {
- continue;
- }
-
- if (valid) {
- constStr = dataFormatNames[i].name;
- str = NULL;
- } else {
- str = g_strconcat(dataFormatNames[i].name,
- " - Invalid for Clone Mode", NULL);
- constStr = str;
- }
-
- label = ctk_drop_down_menu_append_item(dmenu, constStr,
- dataFormatNames[i].format);
- if (str) {
- g_free(str);
- }
-
- gtk_widget_set_sensitive(label, valid);
- }
-
-} /* fill_output_data_format_menu() */
-
-
-
-/*
- * rebuild_output_data_format_menu() - Reconsutrcts the output data format
- * menu.
- */
-
-static void rebuild_output_data_format_menu(CtkGvo *ctk_gvo)
-{
- CtkDropDownMenu *dmenu =
- CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu);
-
- g_signal_handlers_block_by_func
- (G_OBJECT(dmenu),
- G_CALLBACK(output_data_format_ui_changed),
- (gpointer) ctk_gvo);
-
- fill_output_data_format_menu(ctk_gvo);
-
- ctk_drop_down_menu_set_current_value
- (CTK_DROP_DOWN_MENU(ctk_gvo->output_data_format_menu),
- ctk_gvo->output_data_format);
-
- gtk_widget_show_all(GTK_WIDGET(dmenu));
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(dmenu),
- G_CALLBACK(output_data_format_ui_changed),
- (gpointer) ctk_gvo);
-
- update_gvo_sensitivity(ctk_gvo);
-
-} /* rebuild_output_data_format_menu() */
-
-
-
-
/**** Initialization Functions ***********************************************/
@@ -1193,57 +516,13 @@ static void rebuild_output_data_format_menu(CtkGvo *ctk_gvo)
/*
- * query_init_gvo_state() - Query the initial GVO state so we can setup
- * the UI correctly.
+ * query_video_format_details() - initialize the videoFormatDetails[]
+ * table by querying each of refresh rate, width, and height from
+ * NV-CONTROL.
*/
-static gboolean query_init_gvo_state(CtkGvo *ctk_gvo)
+static void query_video_format_details(CtkGvo *ctk_gvo)
{
- gint val;
ReturnStatus ret;
NVCTRLAttributeValidValuesRec valid;
+ gint i, val;
-
- /* Check if this screen supports GVO */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SUPPORTED, &val);
- if ((ret != NvCtrlSuccess) || (val != NV_CTRL_GVO_SUPPORTED_TRUE)) {
- /* GVO not available */
- return FALSE;
- }
-
- /* Get this GVO device's capabilities */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_CAPABILITIES, &val);
- if (ret != NvCtrlSuccess) return FALSE;
- ctk_gvo->caps = val;
-
- /* Query the current GVO lock owner (GVO enabled/disabled) */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_LOCK_OWNER, &val);
- if (ret != NvCtrlSuccess) return FALSE;
- ctk_gvo->lock_owner = val;
-
- /* Query the sync mode */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_SYNC_MODE, &val);
- if (ret != NvCtrlSuccess) {
- val = NV_CTRL_GVO_SYNC_MODE_FREE_RUNNING;
- }
- ctk_gvo->sync_mode = val;
-
- /* Query the current input/output video formats */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT,
- &val);
- if (ret != NvCtrlSuccess) {
- val = NV_CTRL_GVIO_VIDEO_FORMAT_NONE;
- }
- ctk_gvo->input_video_format = val;
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT,
- &val);
- if (ret != NvCtrlSuccess) {
- val = DEFAULT_OUTPUT_VIDEO_FORMAT;
- }
- ctk_gvo->output_video_format = val;
-
/* Valid output video formats */
@@ -1258,3 +537,3 @@ static gboolean query_init_gvo_state(CtkGvo *ctk_gvo)
}
-
+
ret = NvCtrlGetValidAttributeValues(ctk_gvo->handle,
@@ -1262,3 +541,3 @@ static gboolean query_init_gvo_state(CtkGvo *ctk_gvo)
&valid);
-
+
if ((ret != NvCtrlSuccess) || (valid.type != ATTRIBUTE_TYPE_INT_BITS)) {
@@ -1279,32 +558,2 @@ static gboolean query_init_gvo_state(CtkGvo *ctk_gvo)
- /* Output data format */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle, NV_CTRL_GVO_DATA_FORMAT, &val);
- if (ret != NvCtrlSuccess) {
- val = DEFAULT_OUTPUT_DATA_FORMAT;
- }
- ctk_gvo->output_data_format = val;
-
- /* Get the current screen dimensions */
-
- ctk_gvo->screen_width = NvCtrlGetScreenWidth(ctk_gvo->handle);
- ctk_gvo->screen_height = NvCtrlGetScreenHeight(ctk_gvo->handle);
-
- return TRUE;
-
-} /* query_init_gvo_state() */
-
-
-
-/*
- * query_video_format_details() - initialize the videoFormatDetails[]
- * table by querying each of refresh rate, width, and height from
- * NV-CONTROL.
- */
-
-static void query_video_format_details(CtkGvo *ctk_gvo)
-{
- ReturnStatus ret;
- gint i, val;
-
for (i = 0; videoFormatDetails[i].format != -1; i++) {
@@ -1348,5 +597,5 @@ static void query_video_format_details(CtkGvo *ctk_gvo)
-static void register_for_gvo_events(CtkGvo *ctk_gvo)
+static void register_for_gvo_events(CtkGvo *ctk_gvo, CtkEvent *ctk_event)
{
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
+ g_signal_connect(G_OBJECT(ctk_event),
CTK_EVENT_NAME(NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT),
@@ -1355,3 +604,3 @@ static void register_for_gvo_events(CtkGvo *ctk_gvo)
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
+ g_signal_connect(G_OBJECT(ctk_event),
CTK_EVENT_NAME(NV_CTRL_GVO_DATA_FORMAT),
@@ -1360,13 +609,3 @@ static void register_for_gvo_events(CtkGvo *ctk_gvo)
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
- CTK_EVENT_NAME(NV_CTRL_GVO_X_SCREEN_PAN_X),
- G_CALLBACK(gvo_event_received),
- (gpointer) ctk_gvo);
-
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
- CTK_EVENT_NAME(NV_CTRL_GVO_X_SCREEN_PAN_Y),
- G_CALLBACK(gvo_event_received),
- (gpointer) ctk_gvo);
-
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
+ g_signal_connect(G_OBJECT(ctk_event),
CTK_EVENT_NAME(NV_CTRL_GVO_LOCK_OWNER),
@@ -1375,11 +614,2 @@ static void register_for_gvo_events(CtkGvo *ctk_gvo)
- /* Ask for screen change notify events so we can
- * know when to reconstruct the output video format drop down
- */
-
- g_signal_connect(G_OBJECT(ctk_gvo->ctk_event),
- "CTK_EVENT_RRScreenChangeNotify",
- G_CALLBACK(screen_changed_handler),
- (gpointer) ctk_gvo);
-
} /* register_for_gvo_events() */
@@ -1388,302 +618,45 @@ static void register_for_gvo_events(CtkGvo *ctk_gvo)
-/**** User Interface Update Functions ****************************************/
-
-/*
- * output_video_format_ui_changed() - callback when the user makes a
- * selection from the output video format menu (from the UI.)
- */
-
-static void output_video_format_ui_changed(CtkDropDownMenu *menu,
- gpointer user_data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- guint was_valid;
-
- was_valid = ctk_gvo_video_format_valid(ctk_gvo,
- ctk_gvo->output_video_format);
-
- ctk_gvo->output_video_format = ctk_drop_down_menu_get_current_value(menu);
-
- if (ctk_gvo_video_format_valid(ctk_gvo, ctk_gvo->output_video_format) !=
- GVO_VIDEO_FORMAT_VALID) {
- /* Video format is invalid, don't set it */
- update_gvo_sensitivity(ctk_gvo);
- return;
- }
-
- NvCtrlSetAttribute(ctk_gvo->handle,
- NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT,
- ctk_gvo->output_video_format);
-
- /* Rebuild menu to remove previously invalid entry */
- if (was_valid != GVO_VIDEO_FORMAT_VALID) {
- rebuild_output_video_format_menu(ctk_gvo);
- }
-
- update_gvo_sensitivity(ctk_gvo);
-
- /* Made GVO banner to update current output video format */
- CTK_GVO_BANNER(ctk_gvo->banner)->output_video_format =
- ctk_gvo->output_video_format;
-
- post_output_video_format_changed(ctk_gvo);
-
-} /* output_video_format_ui_changed() */
-
-
-
-/*
- * output_data_format_ui_changed() - callback when the output data format
- * menu changes
- */
-
-static void output_data_format_ui_changed(CtkDropDownMenu *menu,
- gpointer user_data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- gboolean was_valid;
-
-
- was_valid = ctk_gvo_data_format_valid(ctk_gvo->output_data_format);
-
- ctk_gvo->output_data_format = ctk_drop_down_menu_get_current_value(menu);
-
- if (!ctk_gvo_data_format_valid(ctk_gvo->output_data_format)) {
- /* Data format is invalid, don't set it */
- update_gvo_sensitivity(ctk_gvo);
- return;
- }
-
- NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_DATA_FORMAT,
- ctk_gvo->output_data_format);
-
- /* Rebuild menu to remove previously invalid entry */
- if (!was_valid) {
- rebuild_output_data_format_menu(ctk_gvo);
- }
-
- update_gvo_sensitivity(ctk_gvo);
-
- /* Made GVO banner to update current output data format */
- CTK_GVO_BANNER(ctk_gvo->banner)->output_data_format =
- ctk_gvo->output_data_format;
-
- post_output_data_format_changed(ctk_gvo);
-
-} /* output_data_format_ui_changed() */
-
-
-
-/*
- * x_offset_ui_changed() - Updates the X Server with the current setting of
- * the spin button.
- */
-
-static void x_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- gint val;
-
- val = gtk_spin_button_get_value(spinbutton);
-
- NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_X_SCREEN_PAN_X, val);
-
-} /* x_offset_ui_changed() */
-
-
-
-/*
- * y_offset_ui_changed() - Updates the X Server with the current setting of
- * the spin button.
- */
-
-static void y_offset_ui_changed(GtkSpinButton *spinbutton, gpointer user_data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- gint val;
-
- val = gtk_spin_button_get_value(spinbutton);
-
- NvCtrlSetAttribute(ctk_gvo->handle, NV_CTRL_GVO_X_SCREEN_PAN_Y, val);
-
-} /* y_offset_ui_changed() */
-
-
+/**** Common Update Functions ************************************************/
/*
- * clone_mode_button_ui_toggled() - Updates the X server to enable/disable
- * clone mode when the UI button is toggled.
+ * update_gvo_current_info() - Updates the page's information to reflect
+ * the GVO device's current state.
*/
-static void clone_mode_button_ui_toggled(GtkWidget *button, gpointer user_data)
+static void update_gvo_current_info(CtkGvo *ctk_gvo)
{
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- gboolean enabled;
+ int width;
+ int height;
ReturnStatus ret;
- gint val;
-
- enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
-
- if (enabled) val = NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE;
- else val = NV_CTRL_GVO_DISPLAY_X_SCREEN_DISABLE;
-
- ret = NvCtrlSetDisplayAttributeWithReply(ctk_gvo->handle,
- 0, /* display_mask */
- NV_CTRL_GVO_DISPLAY_X_SCREEN,
- val);
-
- if (ret == NvCtrlSuccess) {
-
- /*
- * XXX NV_CTRL_GVO_DISPLAY_X_SCREEN can silently fail if GLX
- * locked GVO output for use by pbuffer(s). Check that the
- * setting actually stuck.
- */
-
- ret = NvCtrlGetAttribute(ctk_gvo->handle,
- NV_CTRL_GVO_LOCK_OWNER,
- &ctk_gvo->lock_owner);
- }
-
- if ((ret != NvCtrlSuccess) ||
- (enabled &&
- (ctk_gvo->lock_owner != NV_CTRL_GVO_LOCK_OWNER_CLONE))) {
-
- /*
- * setting did not apply; restore the button to its previous
- * state
- */
-
- g_signal_handlers_block_matched
- (G_OBJECT(button), G_SIGNAL_MATCH_FUNC, 0, 0, NULL,
- G_CALLBACK(clone_mode_button_ui_toggled), NULL);
-
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), !enabled);
-
- g_signal_handlers_unblock_matched
- (G_OBJECT(button), G_SIGNAL_MATCH_FUNC, 0, 0, NULL,
- G_CALLBACK(clone_mode_button_ui_toggled), NULL);
+ gchar res_string[64], state_string[64];
+ int output_video_format;
+ int output_data_format;
+ int lock_owner;
- // XXX update the status bar; maybe pop up a dialog box?
- return;
+ ret = NvCtrlGetAttribute(ctk_gvo->handle,
+ NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT,
+ &output_video_format);
+ if (ret != NvCtrlSuccess) {
+ output_video_format = NV_CTRL_GVIO_VIDEO_FORMAT_NONE;
}
-
- post_clone_mode_button_toggled(ctk_gvo);
-
-} /* clone_mode_button_ui_toggled() */
-
-
-
-/**** Common Update Functions ************************************************/
-
-/*
- * post_output_video_format_changed() - Makes sure the CPL does the right
- * things after the output video format has been changed. (by UI interaction
- * or through an NV-CONTROL event.
- *
- */
-
-static void post_output_video_format_changed(CtkGvo *ctk_gvo)
-{
- /* Update UI state */
-
- update_gvo_current_info(ctk_gvo);
-
- update_offset_spin_button_ranges(ctk_gvo);
-
- ctk_config_statusbar_message(ctk_gvo->ctk_config,
- "Output Video Format set to: %s.",
- ctk_gvio_get_video_format_name
- (ctk_gvo->output_video_format));
-
-} /* post_output_video_format_changed() */
-
-
-
-/*
- * post_output_data_format_changed() - Makes sure the CPL does the right
- * things after the output data format has been changed (by UI interaction
- * or through an NV-CONTROL event.
- */
-
-static void post_output_data_format_changed(CtkGvo *ctk_gvo)
-{
- ctk_config_statusbar_message
- (ctk_gvo->ctk_config,
- "Output Data Format set to: %s.",
- ctk_gvo_get_data_format_name(ctk_gvo->output_data_format));
-
-} /* post_output_data_format_changed() */
-
-
-/*
- * post_clone_mode_button_toggled() - Makes sure the CPL does the right
- * things after clone mode is enabled/disabled (by UI interaction or
- * through an NV-CONTROL event.
- */
-
-static void post_clone_mode_button_toggled(CtkGvo *ctk_gvo)
-{
- GList *children;
- GList *child;
- gboolean enabled;
-
- children = gtk_container_get_children
- (GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button));
-
- for (child = children; child; child = child->next) {
- gtk_container_remove
- (GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button),
- (GtkWidget *) child->data);
+ ret = NvCtrlGetAttribute(ctk_gvo->handle,
+ NV_CTRL_GVO_DATA_FORMAT,
+ &output_data_format);
+ if (ret != NvCtrlSuccess) {
+ output_data_format = -1;
}
- g_list_free(children);
-
- enabled =
- (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE);
-
- if (enabled) {
- gtk_container_add(GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button),
- ctk_gvo->disable_clone_mode_label);
- } else {
- gtk_container_add(GTK_CONTAINER(ctk_gvo->toggle_clone_mode_button),
- ctk_gvo->enable_clone_mode_label);
+ ret = NvCtrlGetAttribute(ctk_gvo->handle,
+ NV_CTRL_GVO_LOCK_OWNER,
+ &lock_owner);
+ if (ret != NvCtrlSuccess) {
+ lock_owner = NV_CTRL_GVO_LOCK_OWNER_NONE;
}
-
- /* Update UI state */
-
- update_gvo_current_info(ctk_gvo);
-
- update_gvo_sensitivity(ctk_gvo);
-
- ctk_config_statusbar_message(ctk_gvo->ctk_config, "Clone Mode %s.",
- enabled ? "enabled" : "disabled");
-
-} /* post_clone_mode_button_toggled() */
-
-/*
- * update_gvo_current_info() - Updates the page's information to reflect
- * the GVO device's current state.
- *
- * This function must be called when the following have changed:
- *
- * ctk_gvo->lock_owner
- * ctk_gvo->output_video_format
-
- */
-
-static void update_gvo_current_info(CtkGvo *ctk_gvo)
-{
- int width;
- int height;
- gchar res_string[64], state_string[64];
-
/* Get the current video format sizes */
- ctk_gvo_get_video_format_resolution(ctk_gvo->output_video_format,
- &width, &height);
+ ctk_gvo_get_video_format_resolution(output_video_format, &width, &height);
- switch (ctk_gvo->lock_owner) {
+ switch (lock_owner) {
@@ -1695,6 +668,3 @@ static void update_gvo_current_info(CtkGvo *ctk_gvo)
case NV_CTRL_GVO_LOCK_OWNER_CLONE:
- snprintf(res_string, 64, "%d x %d", width, height);
- snprintf(state_string, 64, "In use by X (Clone mode)");
- break;
-
+ /* fall through for compatibility */
case NV_CTRL_GVO_LOCK_OWNER_X_SCREEN:
@@ -1708,3 +678,3 @@ static void update_gvo_current_info(CtkGvo *ctk_gvo)
break;
-
+
default:
@@ -1723,71 +693,15 @@ static void update_gvo_current_info(CtkGvo *ctk_gvo)
-} /* update_gvo_current_info() */
-
-
-
-/*
- * update_offset_spin_button_ranges() - Updates the range of the
- * offset spin buttons based on the current screen's width/height.
- */
-
-static void update_offset_spin_button_ranges(CtkGvo *ctk_gvo)
-{
- gint w, h, x, y;
-
- ctk_gvo_get_video_format_resolution(ctk_gvo->output_video_format,
- &w, &h);
-
- x = ctk_gvo->screen_width - w;
- y = ctk_gvo->screen_height - h;
-
- gtk_spin_button_set_range
- (GTK_SPIN_BUTTON(ctk_gvo->x_offset_spin_button), 0, x);
- gtk_spin_button_set_range
- (GTK_SPIN_BUTTON(ctk_gvo->y_offset_spin_button), 0, y);
-
-} /* update_offset_spin_button_ranges() */
-
-
-
-/*
- * update_gvo_sensitivity() - Set the sensitivity of the GVO panel's widgets
- */
-
-static void update_gvo_sensitivity(CtkGvo *ctk_gvo)
-{
- gboolean sensitive;
- guint video_format_valid;
- gboolean data_format_valid;
-
- sensitive = ((ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE) ||
- (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE));
-
- gtk_widget_set_sensitive(ctk_gvo->clone_mode_frame, sensitive);
-
- if (sensitive) {
-
- /* Video & data formats */
-
- sensitive = (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE);
- gtk_widget_set_sensitive(ctk_gvo->output_video_format_menu, sensitive);
- gtk_widget_set_sensitive(ctk_gvo->output_data_format_menu, sensitive);
-
- /* Enable/Disable clone mode button */
-
- video_format_valid =
- ctk_gvo_video_format_valid(ctk_gvo, ctk_gvo->output_video_format);
-
- data_format_valid =
- ctk_gvo_data_format_valid(ctk_gvo->output_data_format);
+ if (ctk_gvo->current_output_video_format_label) {
+ gtk_label_set_text
+ (GTK_LABEL(ctk_gvo->current_output_video_format_label),
+ ctk_gvio_get_video_format_name(output_video_format));
+ }
- sensitive =
- (ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_CLONE) ||
- ((ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE) &&
- (video_format_valid == GVO_VIDEO_FORMAT_VALID) &&
- data_format_valid);
-
- gtk_widget_set_sensitive(ctk_gvo->toggle_clone_mode_button, sensitive);
+ if (ctk_gvo->current_output_data_format_label) {
+ gtk_label_set_text
+ (GTK_LABEL(ctk_gvo->current_output_data_format_label),
+ ctk_gvo_get_data_format_name(output_data_format));
}
-} /* update_gvo_sensitivity() */
+} /* update_gvo_current_info() */
@@ -1805,80 +719,3 @@ static void gvo_event_received(GtkObject *object,
{
- CtkEventStruct *event_struct = (CtkEventStruct *) arg1;
- CtkGvo *ctk_gvo = CTK_GVO(user_data);
- GtkWidget *widget;
- gint attribute = event_struct->attribute;
- gint value = event_struct->value;
- gboolean active;
-
-
- switch (attribute) {
-
- case NV_CTRL_GVIO_REQUESTED_VIDEO_FORMAT:
- widget = ctk_gvo->output_video_format_menu;
-
- ctk_gvo->output_video_format = value;
-
- rebuild_output_video_format_menu(ctk_gvo);
-
- post_output_video_format_changed(ctk_gvo);
- break;
-
- case NV_CTRL_GVO_DATA_FORMAT:
- widget = ctk_gvo->output_data_format_menu;
-
- ctk_gvo->output_data_format = value;
-
- rebuild_output_data_format_menu(ctk_gvo);
-
- post_output_data_format_changed(ctk_gvo);
- break;
-
- case NV_CTRL_GVO_X_SCREEN_PAN_X:
- widget = ctk_gvo->x_offset_spin_button;
-
- g_signal_handlers_block_by_func(G_OBJECT(widget),
- G_CALLBACK(x_offset_ui_changed),
- (gpointer) ctk_gvo);
-
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value);
-
- g_signal_handlers_unblock_by_func(G_OBJECT(widget),
- G_CALLBACK(x_offset_ui_changed),
- (gpointer) ctk_gvo);
- break;
-
- case NV_CTRL_GVO_X_SCREEN_PAN_Y:
- widget = ctk_gvo->y_offset_spin_button;
-
- g_signal_handlers_block_by_func(G_OBJECT(widget),
- G_CALLBACK(y_offset_ui_changed),
- (gpointer) ctk_gvo);
-
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), value);
-
- g_signal_handlers_unblock_by_func(G_OBJECT(widget),
- G_CALLBACK(y_offset_ui_changed),
- (gpointer) ctk_gvo);
- break;
-
- case NV_CTRL_GVO_LOCK_OWNER:
- widget = ctk_gvo->toggle_clone_mode_button;
-
- g_signal_handlers_block_by_func
- (G_OBJECT(widget),
- G_CALLBACK(clone_mode_button_ui_toggled),
- ctk_gvo);
-
- ctk_gvo->lock_owner = value;
- active = (value != NV_CTRL_GVO_LOCK_OWNER_NONE);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), active);
-
- post_clone_mode_button_toggled(ctk_gvo);
-
- g_signal_handlers_unblock_by_func
- (G_OBJECT(widget),
- G_CALLBACK(clone_mode_button_ui_toggled),
- ctk_gvo);
- break;
- }
+ update_gvo_current_info(CTK_GVO(user_data));
@@ -1888,33 +725,2 @@ static void gvo_event_received(GtkObject *object,
-/*
- * screen_changed_handler() - Handle XRandR screen size update events.
- */
-
-static void screen_changed_handler(GtkWidget *widget,
- XRRScreenChangeNotifyEvent *ev,
- gpointer data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(data);
-
- /* Cache the new screen dimensions */
-
- ctk_gvo->screen_width = ev->width;
- ctk_gvo->screen_height = ev->height;
-
- /* Update UI */
-
- rebuild_output_video_format_menu(ctk_gvo);
-
- rebuild_output_data_format_menu(ctk_gvo);
-
- update_gvo_current_info(ctk_gvo);
-
- update_offset_spin_button_ranges(ctk_gvo);
-
- update_gvo_sensitivity(ctk_gvo);
-
-} /* screen_changed_handler() */
-
-
-
/**** Callback Handlers ******************************************************/
@@ -1923,43 +729,2 @@ static void screen_changed_handler(GtkWidget *widget,
/*
- * ctk_gvo_probe_callback() - This function gets called when the
- * GVO probe occurs so that we can update the state of attributes that
- * do not emit events.
- *
- * These attributes are:
- *
- * - NV_CTRL_GVO_SDI_SYNC_INPUT_DETECTED
- * - NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED
- * - NV_CTRL_GVIO_DETECTED_VIDEO_FORMAT
- *
- */
-
-gint ctk_gvo_probe_callback(gpointer data)
-{
- CtkGvo *ctk_gvo = CTK_GVO(data);
- gint old_input_format = ctk_gvo->input_video_format;
- gint old_sync_mode = ctk_gvo->sync_mode;
-
- /* Update our copies of some SDI state variables */
-
- ctk_gvo->input_video_format =
- CTK_GVO_BANNER(ctk_gvo->banner)->input_video_format;
-
- ctk_gvo->sync_mode =
- CTK_GVO_BANNER(ctk_gvo->banner)->sync_mode;
-
- if ((ctk_gvo->lock_owner == NV_CTRL_GVO_LOCK_OWNER_NONE) &&
- ((old_input_format != ctk_gvo->input_video_format) ||
- (old_sync_mode != ctk_gvo->sync_mode))) {
-
- /* update the available output video formats */
-
- rebuild_output_video_format_menu(ctk_gvo);
- }
-
- return TRUE;
-
-} /* ctk_gvo_probe_callback() */
-
-
-/*
* ctk_gvo_select() - Called when the ctk_gvo page is selected
@@ -1974,4 +739,3 @@ void ctk_gvo_select(GtkWidget *widget)
ctk_gvo_banner_set_parent(CTK_GVO_BANNER(ctk_gvo->banner),
- ctk_gvo->banner_box,
- ctk_gvo_probe_callback, ctk_gvo);
+ ctk_gvo->banner_box, NULL, NULL);
@@ -2027,29 +791,6 @@ GtkTextBuffer* ctk_gvo_create_help(GtkTextTagTable *table)
- ctk_help_heading(b, &i, "Clone Mode");
- ctk_help_para(b, &i, "This section allows configuration and operation "
- "of the SDI device in Clone Mode.");
- ctk_help_heading(b, &i, "Video Format");
- ctk_help_para(b, &i, "%s The current size of the associated X screen "
- "will limit the available clone mode video formats such "
- "that only video modes that are smaller than or equal to "
- "the current X screen size will be available. Also, the "
- "current Sync Mode may limit available modes when not in "
- "Free-Running (see Synchronization Options page for more "
- "information).", __clone_mode_video_format_help);
- ctk_help_heading(b, &i, "Data Format");
- ctk_help_para(b, &i, "%s Note that other NV-CONTROL clients are still "
- "able to select a data format that is not supported with "
- "clone mode. In this case, the current data format will "
- "be shown as \"Invalid for Clone Mode\" and you will need "
- "to select a valid data format in order to enable Clone "
- "Mode.", __clone_mode_data_format_help);
- ctk_help_heading(b, &i, "X Offset");
- ctk_help_para(b, &i, __clone_mode_x_offset_help);
- ctk_help_heading(b, &i, "Y Offset");
- ctk_help_para(b, &i, __clone_mode_y_offset_help);
- ctk_help_heading(b, &i, "Enable Clone Mode");
- ctk_help_para(b, &i, "%s Clone mode may only be enabled when the SDI "
- "device is currently free (It is not being used by other "
- "modes such as OpenGL, TwinView, or Separate X Screens).",
- __clone_mode_enable_clone_mode_help);
+ ctk_help_heading(b, &i, "Requested SDI Video Format");
+ ctk_help_para(b, &i, __requested_sdi_video_format_help);
+ ctk_help_heading(b, &i, "Requested SDI Data Format");
+ ctk_help_para(b, &i, __requested_sdi_data_format_help);
diff --git a/src/gtk+-2.x/ctkgvo.h b/src/gtk+-2.x/ctkgvo.h
index 2c5cf53..a5a073c 100644
--- a/src/gtk+-2.x/ctkgvo.h
+++ b/src/gtk+-2.x/ctkgvo.h
@@ -56,24 +56,7 @@ struct _CtkGvo
GtkVBox parent;
-
NvCtrlAttributeHandle *handle;
- GtkWidget *parent_window;
- CtkConfig *ctk_config;
- CtkEvent *ctk_event;
-
- /* State */
-
- gint caps; // Capabilities
- gint lock_owner;
-
- gint sync_mode;
- gint input_video_format;
+ /* State */
- gint output_video_format;
guint valid_output_video_format_mask[3];
-
- gint output_data_format;
-
- gint screen_width;
- gint screen_height;
@@ -84,17 +67,6 @@ struct _CtkGvo
-
GtkWidget *current_resolution_label;
GtkWidget *current_state_label;
-
- GtkWidget *clone_mode_frame;
-
- GtkWidget *output_video_format_menu;
- GtkWidget *output_data_format_menu;
-
- GtkWidget *x_offset_spin_button;
- GtkWidget *y_offset_spin_button;
-
- GtkWidget *toggle_clone_mode_button;
- GtkWidget *enable_clone_mode_label;
- GtkWidget *disable_clone_mode_label;
+ GtkWidget *current_output_video_format_label;
+ GtkWidget *current_output_data_format_label;
};
@@ -128,4 +100,2 @@ void ctk_gvo_unselect (GtkWidget *);
GtkTextBuffer* ctk_gvo_create_help (GtkTextTagTable *);
-void ctk_gvo_pack_banner_slot (CtkGvoBanner *, gint slot, gint new);
-gint ctk_gvo_probe (gpointer data);
diff --git a/src/gtk+-2.x/ctkhelp.c b/src/gtk+-2.x/ctkhelp.c
index 1ca7cd0..24b8bed 100644
--- a/src/gtk+-2.x/ctkhelp.c
+++ b/src/gtk+-2.x/ctkhelp.c
@@ -22,3 +22,3 @@
-#include "msg.h"
+#include "common-utils.h"
#include "ctkconstants.h"
@@ -53,2 +53,3 @@ GType ctk_help_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkimagesliders.c b/src/gtk+-2.x/ctkimagesliders.c
index fb6a190..3fff22e 100644
--- a/src/gtk+-2.x/ctkimagesliders.c
+++ b/src/gtk+-2.x/ctkimagesliders.c
@@ -34,6 +34,2 @@ static const char *__digital_vibrance_help = "The Digital Vibrance slider "
-static const char *__overscan_compensation_help = "The Overscan Compensation "
-"slider adjusts the amount of overscan compensation applied to this display "
-"device, in raster pixels.";
-
static const char *__image_sharpening_help = "The Image Sharpening slider "
@@ -47,2 +43,3 @@ static GtkWidget * add_scale(CtkConfig *ctk_config,
gint value_type,
+ gint default_value,
gpointer callback_data);
@@ -52,2 +49,4 @@ static void setup_scale(CtkImageSliders *ctk_image_sliders,
+static void setup_reset_button(CtkImageSliders *ctk_image_sliders);
+
static void scale_value_changed(GtkAdjustment *adjustment,
@@ -61,3 +60,3 @@ GType ctk_image_sliders_get_type(void)
static GType ctk_image_sliders_type = 0;
-
+
if (!ctk_image_sliders_type) {
@@ -73,2 +72,3 @@ GType ctk_image_sliders_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -86,3 +86,2 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
GtkWidget *reset_button,
- unsigned int display_device_mask,
char *name)
@@ -90,5 +89,5 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
CtkImageSliders *ctk_image_sliders;
-
+
GObject *object;
-
+
GtkWidget *frame;
@@ -97,3 +96,3 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
gint val;
-
+
/*
@@ -104,2 +103,3 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
object = g_object_new(CTK_TYPE_IMAGE_SLIDERS, NULL);
+ if (!object) return NULL;
@@ -110,18 +110,6 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
ctk_image_sliders->reset_button = reset_button;
- ctk_image_sliders->display_device_mask = display_device_mask;
ctk_image_sliders->name = name;
-
- /* cache image sharpening default value */
- status = NvCtrlGetDisplayAttribute(ctk_image_sliders->handle,
- ctk_image_sliders->display_device_mask,
- NV_CTRL_IMAGE_SHARPENING_DEFAULT,
- &val);
- if (status != NvCtrlSuccess) {
- val = 0;
- }
- ctk_image_sliders->default_val = val;
-
/* create the frame and vbox */
-
+
frame = gtk_frame_new(NULL);
@@ -132,5 +120,5 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
ctk_image_sliders->frame = frame;
-
+
/* Digital Vibrance */
-
+
ctk_image_sliders->digital_vibrance =
@@ -138,3 +126,5 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
NV_CTRL_DIGITAL_VIBRANCE, "Digital Vibrance",
- __digital_vibrance_help, G_TYPE_DOUBLE, ctk_image_sliders);
+ __digital_vibrance_help, G_TYPE_INT,
+ 0, /* default value */
+ ctk_image_sliders);
@@ -148,20 +138,11 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
- /* Overscan Compensation */
-
- ctk_image_sliders->overscan_compensation =
- add_scale(ctk_config,
- NV_CTRL_OVERSCAN_COMPENSATION, "Overscan Compensation",
- __overscan_compensation_help, G_TYPE_INT,
- ctk_image_sliders);
-
- g_signal_connect(G_OBJECT(ctk_event),
- CTK_EVENT_NAME(NV_CTRL_OVERSCAN_COMPENSATION),
- G_CALLBACK(scale_value_received),
- (gpointer) ctk_image_sliders);
+ /* Image Sharpening */
- gtk_box_pack_start(GTK_BOX(vbox), ctk_image_sliders->overscan_compensation,
- TRUE, TRUE, 0);
+ status = NvCtrlGetAttribute(ctk_image_sliders->handle,
+ NV_CTRL_IMAGE_SHARPENING_DEFAULT,
+ &val);
+ if (status != NvCtrlSuccess) {
+ val = 0;
+ }
- /* Image Sharpening */
-
ctk_image_sliders->image_sharpening =
@@ -169,3 +150,3 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
NV_CTRL_IMAGE_SHARPENING, "Image Sharpening",
- __image_sharpening_help, G_TYPE_DOUBLE, ctk_image_sliders);
+ __image_sharpening_help, G_TYPE_INT, val, ctk_image_sliders);
@@ -186,19 +167,4 @@ GtkWidget* ctk_image_sliders_new(NvCtrlAttributeHandle *handle,
return GTK_WIDGET(object);
-
-} /* ctk_image_sliders_new() */
-
-
-/*
- * Returns whether or not the scale is active
- */
-
-static gint get_scale_active(CtkScale *scale)
-{
- GtkAdjustment *adj = scale->gtk_adjustment;
-
- return
- GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj), "attribute active"));
-
-} /* get_scale_active() */
+} /* ctk_image_sliders_new() */
@@ -216,2 +182,3 @@ static GtkWidget * add_scale(CtkConfig *ctk_config,
gint value_type,
+ gint default_value,
gpointer callback_data)
@@ -221,5 +188,5 @@ static GtkWidget * add_scale(CtkConfig *ctk_config,
-
+
adj = gtk_adjustment_new(0, 0, 10, 1, 1, 0);
-
+
g_object_set_data(G_OBJECT(adj), "attribute",
@@ -228,5 +195,5 @@ static GtkWidget * add_scale(CtkConfig *ctk_config,
g_object_set_data(G_OBJECT(adj), "attribute name", name);
-
- g_object_set_data(G_OBJECT(adj), "attribute active",
- GINT_TO_POINTER(0));
+
+ g_object_set_data(G_OBJECT(adj), "attribute default value",
+ GINT_TO_POINTER(default_value));
@@ -235,10 +202,8 @@ static GtkWidget * add_scale(CtkConfig *ctk_config,
(gpointer) callback_data);
-
+
scale = ctk_scale_new(GTK_ADJUSTMENT(adj), name, ctk_config, value_type);
-
- if (help) {
- ctk_config_set_tooltip(ctk_config, CTK_SCALE_TOOLTIP_WIDGET(scale),
- help);
- }
-
+
+ ctk_config_set_tooltip(ctk_config, CTK_SCALE_TOOLTIP_WIDGET(scale),
+ help);
+
return scale;
@@ -261,3 +226,3 @@ static void post_scale_value_changed(GtkAdjustment *adjustment,
char *name = g_object_get_data(G_OBJECT(adjustment), "attribute name");
-
+
gtk_widget_set_sensitive(ctk_image_sliders->reset_button, TRUE);
@@ -266,3 +231,3 @@ static void post_scale_value_changed(GtkAdjustment *adjustment,
"%s set to %d.", name, value);
-
+
} /* post_scale_value_changed() */
@@ -291,7 +256,6 @@ static void scale_value_changed(GtkAdjustment *adjustment,
attribute = GPOINTER_TO_INT(user_data);
-
- NvCtrlSetDisplayAttribute(ctk_image_sliders->handle,
- ctk_image_sliders->display_device_mask,
- attribute, (int) value);
-
+
+ NvCtrlSetAttribute(ctk_image_sliders->handle,
+ attribute, (int) value);
+
post_scale_value_changed(adjustment, ctk_image_sliders, value);
@@ -303,3 +267,3 @@ static void scale_value_changed(GtkAdjustment *adjustment,
/*
- * ctk_image_sliders_reset() -
+ * ctk_image_sliders_reset() - resets sliders to their default values
*/
@@ -308,29 +272,25 @@ void ctk_image_sliders_reset(CtkImageSliders *ctk_image_sliders)
{
+ GtkAdjustment *adj;
+ gint val;
+
if (!ctk_image_sliders) return;
- if (get_scale_active(CTK_SCALE(ctk_image_sliders->digital_vibrance))) {
- NvCtrlSetDisplayAttribute(ctk_image_sliders->handle,
- ctk_image_sliders->display_device_mask,
- NV_CTRL_DIGITAL_VIBRANCE,
- 0);
- }
+ if (GTK_WIDGET_SENSITIVE(ctk_image_sliders->digital_vibrance)) {
+ adj = CTK_SCALE(ctk_image_sliders->digital_vibrance)->gtk_adjustment;
+ val = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj),
+ "attribute default value"));
- /*
- * Reset IMAGE_SHARPENING before OVERSCAN_COMPENSATION, even though they're
- * in the other order in the page, because setting OVERSCAN_COMPENSATION to
- * 0 may cause IMAGE_SHARPENING to become unavailable and trying to reset it
- * here would cause a BadValue error.
- */
- if (get_scale_active(CTK_SCALE(ctk_image_sliders->image_sharpening))) {
- NvCtrlSetDisplayAttribute(ctk_image_sliders->handle,
- ctk_image_sliders->display_device_mask,
- NV_CTRL_IMAGE_SHARPENING,
- ctk_image_sliders->default_val);
+ NvCtrlSetAttribute(ctk_image_sliders->handle,
+ NV_CTRL_DIGITAL_VIBRANCE,
+ val);
}
- if (get_scale_active(CTK_SCALE(ctk_image_sliders->overscan_compensation))) {
- NvCtrlSetDisplayAttribute(ctk_image_sliders->handle,
- ctk_image_sliders->display_device_mask,
- NV_CTRL_OVERSCAN_COMPENSATION,
- 0);
+ if (GTK_WIDGET_SENSITIVE(ctk_image_sliders->image_sharpening)) {
+ adj = CTK_SCALE(ctk_image_sliders->image_sharpening)->gtk_adjustment;
+ val = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj),
+ "attribute default value"));
+
+ NvCtrlSetAttribute(ctk_image_sliders->handle,
+ NV_CTRL_IMAGE_SHARPENING,
+ val);
}
@@ -338,5 +298,3 @@ void ctk_image_sliders_reset(CtkImageSliders *ctk_image_sliders)
/*
- * The above may have triggered events (e.g., changing
- * NV_CTRL_OVERSCAN_COMPENSATION may trigger an
- * NV_CTRL_IMAGE_SHARPENING value change). Such an event will
+ * The above may have triggered events. Such an event will
* cause scale_value_changed() and post_scale_value_changed() to
@@ -347,3 +305,3 @@ void ctk_image_sliders_reset(CtkImageSliders *ctk_image_sliders)
* However, the caller of ctk_image_sliders_reset() (e.g.,
- * ctkdisplaydevice-dfp.c:reset_button_clicked()) may also want to
+ * ctkdisplaydevice.c:reset_button_clicked()) may also want to
* write a status message to the statusbar. To ensure that the
@@ -359,3 +317,3 @@ void ctk_image_sliders_reset(CtkImageSliders *ctk_image_sliders)
ctk_image_sliders_setup(ctk_image_sliders);
-
+
} /* ctk_image_sliders_reset() */
@@ -374,5 +332,4 @@ static void scale_value_received(GtkObject *object, gpointer arg1,
CtkEventStruct *event_struct;
- CtkImageSliders *ctk_image_sliders =
- CTK_IMAGE_SLIDERS(user_data);
-
+ CtkImageSliders *ctk_image_sliders = CTK_IMAGE_SLIDERS(user_data);
+
GtkAdjustment *adj;
@@ -384,9 +341,2 @@ static void scale_value_received(GtkObject *object, gpointer arg1,
- /* if the event is not for this display device, return */
-
- if (!(event_struct->display_mask &
- ctk_image_sliders->display_device_mask)) {
- return;
- }
-
switch (event_struct->attribute) {
@@ -395,5 +345,2 @@ static void scale_value_received(GtkObject *object, gpointer arg1,
break;
- case NV_CTRL_OVERSCAN_COMPENSATION:
- scale = ctk_image_sliders->overscan_compensation;
- break;
case NV_CTRL_IMAGE_SHARPENING:
@@ -447,7 +394,2 @@ void add_image_sliders_help(CtkImageSliders *ctk_image_sliders,
- ctk_help_heading(b, i, "Overscan Compensation");
- ctk_help_para(b, i, "Use the Overscan Compensation slider to adjust the "
- "size of the display, to adjust for the overscan behavior of "
- "certain display devices.");
-
ctk_help_heading(b, i, "Image Sharpening");
@@ -472,13 +414,11 @@ static void setup_scale(CtkImageSliders *ctk_image_sliders,
NvCtrlAttributeHandle *handle = ctk_image_sliders->handle;
- unsigned int mask = ctk_image_sliders->display_device_mask;
int val;
GtkAdjustment *adj = CTK_SCALE(scale)->gtk_adjustment;
-
+
/* Read settings from X server */
- ret0 = NvCtrlGetValidDisplayAttributeValues(handle, mask,
- attribute, &valid);
-
- ret1 = NvCtrlGetDisplayAttribute(handle, mask, attribute, &val);
-
+ ret0 = NvCtrlGetValidAttributeValues(handle, attribute, &valid);
+
+ ret1 = NvCtrlGetAttribute(handle, attribute, &val);
+
if ((ret0 == NvCtrlSuccess) && (ret1 == NvCtrlSuccess) &&
@@ -498,10 +438,4 @@ static void setup_scale(CtkImageSliders *ctk_image_sliders,
- g_object_set_data(G_OBJECT(adj), "attribute active",
- GINT_TO_POINTER(1));
-
gtk_widget_set_sensitive(scale, TRUE);
} else {
- g_object_set_data(G_OBJECT(adj), "attribute active",
- GINT_TO_POINTER(0));
-
gtk_widget_set_sensitive(scale, FALSE);
@@ -512,2 +446,50 @@ static void setup_scale(CtkImageSliders *ctk_image_sliders,
+
+static void setup_reset_button(CtkImageSliders *ctk_image_sliders)
+{
+ GtkWidget *scale;
+ GtkAdjustment *adj;
+ gint default_val;
+ gint current_val;
+
+
+ /* Reset button should be sensitive if all scales are sensitive and
+ * at least one scale is set to the non-default value
+ */
+
+ scale = ctk_image_sliders->digital_vibrance;
+ if (GTK_WIDGET_SENSITIVE(scale)) {
+ adj = CTK_SCALE(scale)->gtk_adjustment;
+ current_val = (gint) gtk_adjustment_get_value(adj);
+ default_val =
+ GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj),
+ "attribute default value"));
+ if (current_val != default_val) {
+ goto enable;
+ }
+ }
+
+ scale = ctk_image_sliders->image_sharpening;
+ if (GTK_WIDGET_SENSITIVE(scale)) {
+ adj = CTK_SCALE(scale)->gtk_adjustment;
+ current_val = (gint) gtk_adjustment_get_value(adj);
+ default_val =
+ GPOINTER_TO_INT(g_object_get_data(G_OBJECT(adj),
+ "attribute default value"));
+ if (current_val != default_val) {
+ goto enable;
+ }
+ }
+
+ /* Don't disable reset button here, since other settings that are not
+ * managed by the ctk_image_slider here may need it enabled
+ */
+ return;
+
+ enable:
+ gtk_widget_set_sensitive(ctk_image_sliders->reset_button, TRUE);
+}
+
+
+
/*
@@ -521,5 +503,5 @@ void ctk_image_sliders_setup(CtkImageSliders *ctk_image_sliders)
/* Update sliders */
-
+
/* NV_CTRL_DIGITAL_VIBRANCE */
-
+
setup_scale(ctk_image_sliders, NV_CTRL_DIGITAL_VIBRANCE,
@@ -527,9 +509,4 @@ void ctk_image_sliders_setup(CtkImageSliders *ctk_image_sliders)
- /* NV_CTRL_OVERSCAN_COMPENSATION */
-
- setup_scale(ctk_image_sliders, NV_CTRL_OVERSCAN_COMPENSATION,
- ctk_image_sliders->overscan_compensation);
-
/* NV_CTRL_IMAGE_SHARPENING */
-
+
setup_scale(ctk_image_sliders, NV_CTRL_IMAGE_SHARPENING,
@@ -537,8 +514,4 @@ void ctk_image_sliders_setup(CtkImageSliders *ctk_image_sliders)
- gtk_widget_set_sensitive(ctk_image_sliders->digital_vibrance,
- get_scale_active(CTK_SCALE(ctk_image_sliders->digital_vibrance)));
- gtk_widget_set_sensitive(ctk_image_sliders->overscan_compensation,
- get_scale_active(CTK_SCALE(ctk_image_sliders->overscan_compensation)));
- gtk_widget_set_sensitive(ctk_image_sliders->image_sharpening,
- get_scale_active(CTK_SCALE(ctk_image_sliders->image_sharpening)));
+
+ setup_reset_button(ctk_image_sliders);
diff --git a/src/gtk+-2.x/ctkimagesliders.h b/src/gtk+-2.x/ctkimagesliders.h
index b900cf7..1ded2ac 100644
--- a/src/gtk+-2.x/ctkimagesliders.h
+++ b/src/gtk+-2.x/ctkimagesliders.h
@@ -53,5 +53,4 @@ struct _CtkImageSliders
GtkVBox parent;
-
+
NvCtrlAttributeHandle *handle;
- unsigned int display_device_mask;
char *name;
@@ -61,8 +60,7 @@ struct _CtkImageSliders
GtkWidget *reset_button;
-
+
GtkWidget *frame;
+
GtkWidget *digital_vibrance;
- GtkWidget *overscan_compensation;
GtkWidget *image_sharpening;
- gint default_val;
};
@@ -78,3 +76,2 @@ GtkWidget* ctk_image_sliders_new (NvCtrlAttributeHandle *,
GtkWidget *reset_button,
- unsigned int display_device_mask,
char *name);
diff --git a/src/gtk+-2.x/ctklicense.c b/src/gtk+-2.x/ctklicense.c
index fc0308c..02027a7 100644
--- a/src/gtk+-2.x/ctklicense.c
+++ b/src/gtk+-2.x/ctklicense.c
@@ -123,2 +123,3 @@ GType ctk_license_dialog_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkmultisample.c b/src/gtk+-2.x/ctkmultisample.c
index 7596965..c58862c 100644
--- a/src/gtk+-2.x/ctkmultisample.c
+++ b/src/gtk+-2.x/ctkmultisample.c
@@ -136,17 +136,19 @@ static const char *__texture_sharpening_help =
#define __FSAA (1 << 4)
-#define __FSAA_NONE (1 << (__FSAA + NV_CTRL_FSAA_MODE_NONE))
-#define __FSAA_2x (1 << (__FSAA + NV_CTRL_FSAA_MODE_2x))
-#define __FSAA_2x_5t (1 << (__FSAA + NV_CTRL_FSAA_MODE_2x_5t))
-#define __FSAA_15x15 (1 << (__FSAA + NV_CTRL_FSAA_MODE_15x15))
-#define __FSAA_2x2 (1 << (__FSAA + NV_CTRL_FSAA_MODE_2x2))
-#define __FSAA_4x (1 << (__FSAA + NV_CTRL_FSAA_MODE_4x))
-#define __FSAA_4x_9t (1 << (__FSAA + NV_CTRL_FSAA_MODE_4x_9t))
-#define __FSAA_8x (1 << (__FSAA + NV_CTRL_FSAA_MODE_8x))
-#define __FSAA_16x (1 << (__FSAA + NV_CTRL_FSAA_MODE_16x))
-#define __FSAA_8xS (1 << (__FSAA + NV_CTRL_FSAA_MODE_8xS))
-#define __FSAA_8xQ (1 << (__FSAA + NV_CTRL_FSAA_MODE_8xQ))
-#define __FSAA_16xS (1 << (__FSAA + NV_CTRL_FSAA_MODE_16xS))
-#define __FSAA_16xQ (1 << (__FSAA + NV_CTRL_FSAA_MODE_16xQ))
-#define __FSAA_32xS (1 << (__FSAA + NV_CTRL_FSAA_MODE_32xS))
-#define __FSAA_ENHANCE (1 << (__FSAA + NV_CTRL_FSAA_MODE_MAX +1))
+#define __FSAA_NONE (__FSAA << NV_CTRL_FSAA_MODE_NONE)
+#define __FSAA_2x (__FSAA << NV_CTRL_FSAA_MODE_2x)
+#define __FSAA_2x_5t (__FSAA << NV_CTRL_FSAA_MODE_2x_5t)
+#define __FSAA_15x15 (__FSAA << NV_CTRL_FSAA_MODE_15x15)
+#define __FSAA_2x2 (__FSAA << NV_CTRL_FSAA_MODE_2x2)
+#define __FSAA_4x (__FSAA << NV_CTRL_FSAA_MODE_4x)
+#define __FSAA_4x_9t (__FSAA << NV_CTRL_FSAA_MODE_4x_9t)
+#define __FSAA_8x (__FSAA << NV_CTRL_FSAA_MODE_8x)
+#define __FSAA_16x (__FSAA << NV_CTRL_FSAA_MODE_16x)
+#define __FSAA_8xS (__FSAA << NV_CTRL_FSAA_MODE_8xS)
+#define __FSAA_8xQ (__FSAA << NV_CTRL_FSAA_MODE_8xQ)
+#define __FSAA_16xS (__FSAA << NV_CTRL_FSAA_MODE_16xS)
+#define __FSAA_16xQ (__FSAA << NV_CTRL_FSAA_MODE_16xQ)
+#define __FSAA_32xS (__FSAA << NV_CTRL_FSAA_MODE_32xS)
+#define __FSAA_32x (__FSAA << NV_CTRL_FSAA_MODE_32x)
+#define __FSAA_64xS (__FSAA << NV_CTRL_FSAA_MODE_64xS)
+#define __FSAA_ENHANCE (__FSAA << (NV_CTRL_FSAA_MODE_MAX + 1))
@@ -171,2 +173,3 @@ GType ctk_multisample_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -528,2 +531,4 @@ static void build_fsaa_translation_table(CtkMultisample *ctk_multisample,
gint index_16x = -1;
+ gint index_32x = -1;
+ gint index_32xs = -1;
gint mask = valid.u.bits.ints;
@@ -545,2 +550,4 @@ static void build_fsaa_translation_table(CtkMultisample *ctk_multisample,
if (i == NV_CTRL_FSAA_MODE_16x) index_16x = n;
+ if (i == NV_CTRL_FSAA_MODE_32x) index_32x = n;
+ if (i == NV_CTRL_FSAA_MODE_32xS) index_32xs = n;
@@ -551,5 +558,5 @@ static void build_fsaa_translation_table(CtkMultisample *ctk_multisample,
/*
- * XXX 8xS was added to the NV_CTRL_FSAA_MODE list after 16x, but
- * should appear before it in the slider. If both were added to
- * the fsaa_translation_table[], then swap their positions.
+ * XXX 8xS was added to the NV_CTRL_FSAA_MODE list after 16x, but should
+ * appear before it in the slider. Same with 32x and 32xS. If both were
+ * added to the fsaa_translation_table[], then re-order them appropriately.
*/
@@ -562,3 +569,10 @@ static void build_fsaa_translation_table(CtkMultisample *ctk_multisample,
}
-
+
+ if ((index_32x != -1) && (index_32xs != -1)) {
+ ctk_multisample->fsaa_translation_table[index_32x] =
+ NV_CTRL_FSAA_MODE_32xS;
+ ctk_multisample->fsaa_translation_table[index_32xs] =
+ NV_CTRL_FSAA_MODE_32x;
+ }
+
ctk_multisample->fsaa_translation_table_size = n;
diff --git a/src/gtk+-2.x/ctkopengl.c b/src/gtk+-2.x/ctkopengl.c
index d18d3ca..97f957e 100644
--- a/src/gtk+-2.x/ctkopengl.c
+++ b/src/gtk+-2.x/ctkopengl.c
@@ -50,2 +50,4 @@ static void post_aa_line_gamma_toggled(CtkOpenGL *, gboolean);
+static void post_use_conformant_clamping_button_toggled(CtkOpenGL *, gint);
+
static void allow_flipping_button_toggled(GtkWidget *, gpointer);
@@ -60,2 +62,4 @@ static void aa_line_gamma_toggled (GtkWidget *, gpointer);
+static void use_conformant_clamping_button_toggled(GtkWidget *, gpointer);
+
static void show_sli_visual_indicator_button_toggled (GtkWidget *, gpointer);
@@ -144,2 +148,8 @@ static const char *__stereo_eyes_exchange_help =
+static const char *__use_conformant_clamping_help =
+"Disabling this option causes OpenGL to replace GL_CLAMP with "
+"GL_CLAMP_TO_EDGE for borderless 2D textures. This eliminates "
+"seams at the edges of textures in some older games such as "
+"Quake 3.";
+
#define __SYNC_TO_VBLANK (1 << 1)
@@ -155,2 +165,3 @@ static const char *__stereo_eyes_exchange_help =
#define __SHOW_MULTIGPU_VISUAL_INDICATOR (1 << 11)
+#define __CONFORMANT_CLAMPING (1 << 12)
@@ -175,2 +186,3 @@ GType ctk_opengl_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -208,2 +220,3 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle,
gint aa_line_gamma;
+ gint use_conformant_clamping;
gint show_sli_visual_indicator;
@@ -218,2 +231,3 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle,
ReturnStatus ret_aa_line_gamma;
+ ReturnStatus ret_use_conformant_clamping;
ReturnStatus ret_show_sli_visual_indicator;
@@ -254,2 +268,7 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle,
&aa_line_gamma);
+
+ ret_use_conformant_clamping =
+ NvCtrlGetAttribute(handle, NV_CTRL_TEXTURE_CLAMPING,
+ &use_conformant_clamping);
+
ret_show_sli_visual_indicator = NvCtrlGetAttribute(handle,
@@ -269,2 +288,3 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle,
(ret_aa_line_gamma != NvCtrlSuccess) &&
+ (ret_use_conformant_clamping != NvCtrlSuccess) &&
(ret_show_sli_visual_indicator != NvCtrlSuccess) &&
@@ -567,2 +587,33 @@ GtkWidget* ctk_opengl_new(NvCtrlAttributeHandle *handle,
}
+
+ /*
+ * NV_CTRL_TEXTURE_CLAMPING
+ */
+
+ if (ret_use_conformant_clamping == NvCtrlSuccess) {
+ label = gtk_label_new("Use Conformant Texture Clamping");
+
+ check_button = gtk_check_button_new();
+ gtk_container_add(GTK_CONTAINER(check_button), label);
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button),
+ use_conformant_clamping);
+
+ gtk_box_pack_start(GTK_BOX(vbox), check_button, FALSE, FALSE, 0);
+
+ g_signal_connect(G_OBJECT(check_button), "toggled",
+ G_CALLBACK(use_conformant_clamping_button_toggled),
+ (gpointer) ctk_opengl);
+
+ g_signal_connect(G_OBJECT(ctk_event),
+ CTK_EVENT_NAME(NV_CTRL_TEXTURE_CLAMPING),
+ G_CALLBACK(value_changed), (gpointer) ctk_opengl);
+
+ ctk_config_set_tooltip(ctk_config, check_button,
+ __use_conformant_clamping_help);
+
+ ctk_opengl->active_attributes |= __CONFORMANT_CLAMPING;
+
+ ctk_opengl->use_conformant_clamping_button = check_button;
+ }
@@ -698,2 +749,11 @@ static void post_aa_line_gamma_toggled(CtkOpenGL *ctk_opengl,
+static void
+post_use_conformant_clamping_button_toggled(CtkOpenGL *ctk_opengl,
+ int clamping)
+{
+ ctk_config_statusbar_message(ctk_opengl->ctk_config,
+ "Use %sConformant OpenGL Texture Clamping",
+ (clamping == NV_CTRL_TEXTURE_CLAMPING_SPEC) ?
+ "" : "Non-");
+}
@@ -828,2 +888,20 @@ static void aa_line_gamma_toggled(
+static void use_conformant_clamping_button_toggled(GtkWidget *widget,
+ gpointer user_data)
+{
+ CtkOpenGL *ctk_opengl;
+ int clamping;
+
+ ctk_opengl = CTK_OPENGL(user_data);
+
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) {
+ clamping = NV_CTRL_TEXTURE_CLAMPING_SPEC;
+ } else {
+ clamping = NV_CTRL_TEXTURE_CLAMPING_EDGE;
+ }
+
+ NvCtrlSetAttribute(ctk_opengl->handle, NV_CTRL_TEXTURE_CLAMPING, clamping);
+
+ post_use_conformant_clamping_button_toggled(ctk_opengl, clamping);
+}
@@ -879,2 +957,9 @@ static void value_changed(GtkObject *object, gpointer arg1, gpointer user_data)
break;
+ case NV_CTRL_TEXTURE_CLAMPING:
+ button =
+ GTK_TOGGLE_BUTTON(ctk_opengl->use_conformant_clamping_button);
+ func = G_CALLBACK(use_conformant_clamping_button_toggled);
+ post_use_conformant_clamping_button_toggled(ctk_opengl,
+ event_struct->value);
+ break;
case NV_CTRL_SHOW_SLI_VISUAL_INDICATOR:
@@ -1203,2 +1288,7 @@ GtkTextBuffer *ctk_opengl_create_help(GtkTextTagTable *table,
+ if (ctk_opengl->active_attributes & __CONFORMANT_CLAMPING) {
+ ctk_help_heading(b, &i, "Use Conformant Texture Clamping");
+ ctk_help_para(b, &i, __use_conformant_clamping_help);
+ }
+
if (ctk_opengl->active_attributes & __SHOW_SLI_VISUAL_INDICATOR) {
diff --git a/src/gtk+-2.x/ctkopengl.h b/src/gtk+-2.x/ctkopengl.h
index 6a5c6de..be88c94 100644
--- a/src/gtk+-2.x/ctkopengl.h
+++ b/src/gtk+-2.x/ctkopengl.h
@@ -57,2 +57,3 @@ struct _CtkOpenGL
GtkWidget *allow_flipping_button;
+ GtkWidget *use_conformant_clamping_button;
GtkWidget *force_stereo_button;
diff --git a/src/gtk+-2.x/ctkpowermizer.c b/src/gtk+-2.x/ctkpowermizer.c
index 23c3bac..da791ce 100644
--- a/src/gtk+-2.x/ctkpowermizer.c
+++ b/src/gtk+-2.x/ctkpowermizer.c
@@ -102,2 +102,3 @@ GType ctk_powermizer_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkpowersavings.c b/src/gtk+-2.x/ctkpowersavings.c
index 744b4a4..fe293ce 100644
--- a/src/gtk+-2.x/ctkpowersavings.c
+++ b/src/gtk+-2.x/ctkpowersavings.c
@@ -56,2 +56,3 @@ GType ctk_power_savings_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkrandr.c b/src/gtk+-2.x/ctkrandr.c
deleted file mode 100644
index 322b410..0000000
--- a/src/gtk+-2.x/ctkrandr.c
+++ /dev/null
@@ -1,644 +0,0 @@
-/*
- * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
- * and Linux systems.
- *
- * Copyright (C) 2004 NVIDIA Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses>.
- */
-
-#include <stdlib.h> /* malloc */
-#include <gtk/gtk.h>
-#include <gdk/gdkx.h>
-#include <gdk-pixbuf/gdk-pixdata.h>
-
-#include <X11/Xlib.h>
-#include <X11/extensions/Xrandr.h>
-
-#include "ctkevent.h"
-#include "ctkhelp.h"
-#include "ctkrandr.h"
-#include "ctkbanner.h"
-
-#include "rotation_orientation_horz_pixdata.h"
-#include "rotation_orientation_vert_pixdata.h"
-
-#include "rotate_left_on_pixdata.h"
-#include "rotate_left_off_pixdata.h"
-#include "rotate_right_on_pixdata.h"
-#include "rotate_right_off_pixdata.h"
-
-
-GType ctk_randr_get_type(void)
-{
- static GType ctk_randr_type = 0;
-
- if (!ctk_randr_type) {
- static const GTypeInfo ctk_randr_info = {
- sizeof (CtkRandRClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- NULL, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(CtkRandR),
- 0, /* n_preallocs */
- NULL, /* instance_init */
- };
-
- ctk_randr_type = g_type_register_static
- (GTK_TYPE_VBOX, "CtkRandR", &ctk_randr_info, 0);
- }
-
- return ctk_randr_type;
-}
-
-
-
-/*
- * Human readable rotation settings
- */
-static char *get_rotation_string(int rotation)
-{
- switch ( rotation ) {
- case RR_Rotate_0:
- return "Normal (0 degree rotation)";
- break;
- case RR_Rotate_90:
- return "Rotated left (90 degree rotation)";
- break;
- case RR_Rotate_180:
- return "Inverted (180 degree rotation)";
- break;
- case RR_Rotate_270:
- return "Rotated right (270 degree rotation)";
- break;
- default:
- return "Unknown rotation";
- break;
- }
-}
-
-
-
-/*
- * Helper function to flip the contents of a pixbuf
- * horizontally. This is used to perform a 180 degree
- * rotation + vertical flip.
- */
-
-static void horz_flip_pixbuf(GdkPixbuf *pixbuf)
-{
- guchar *pixels;
- int width;
- int height;
- int rowstride; // # bytes per row
- int bits_per_sample; // # bits per color sample
- int n_channels; // # color samples per component
-
- guchar *row;
- guchar *head;
- guchar *tail;
- int x, y, c;
- int component_size;
-
- /* Get pixbuf information */
- pixels = gdk_pixbuf_get_pixels(pixbuf);
- width = gdk_pixbuf_get_width(pixbuf);
- height = gdk_pixbuf_get_height(pixbuf);
- rowstride = gdk_pixbuf_get_rowstride(pixbuf);
- bits_per_sample = gdk_pixbuf_get_bits_per_sample(pixbuf);
- n_channels = gdk_pixbuf_get_n_channels(pixbuf);
-
- /* Compute the number of bytes per component (RGB/RGBA) */
- component_size = n_channels * (bits_per_sample / 8);
-
- /* Swap all components in all rows */
- for (y = 0; y < height; y++) {
-
- row = pixels + (y * rowstride);
- head = row;
- tail = row + (width - 1) * (component_size);
-
- for (x = 0; x < width/2; x++) {
-
- for (c = 0; c < component_size; c++) {
- guchar h = head[c];
- head[c] = tail[c];
- tail[c] = h;
- }
- head += component_size;
- tail -= component_size;
- }
- }
-
-} /* horz_flip_pixbuf() */
-
-
-
-/*
- * Helper function to load the correctly oriented pixbuf
- * orientation image from the nv_image dump repository
- */
-static GdkPixbuf *load_orientation_image_pixbuf(Rotation rotation)
-{
- const GdkPixdata *pixdata;
- GdkPixbuf *pixbuf;
- gboolean tweak_img; /* Rotate and flip image */
-
-
- /* Figure out which image and rotation to use */
- switch ( rotation ) {
- case RR_Rotate_0: /* Normal */
- pixdata = &rotation_orientation_horz_pixdata;
- tweak_img = FALSE;
- break;
- case RR_Rotate_90: /* Left */
- pixdata = &rotation_orientation_vert_pixdata;
- tweak_img = TRUE;
- break;
- case RR_Rotate_180: /* Inverted */
- pixdata = &rotation_orientation_horz_pixdata;
- tweak_img = TRUE;
- break;
- case RR_Rotate_270: /* Right */
- pixdata = &rotation_orientation_vert_pixdata;
- tweak_img = FALSE;
- break;
- default: /* Unknown */
- pixdata = &rotation_orientation_horz_pixdata;
- tweak_img = FALSE;
- break;
- }
-
-
- /* Generate the pixbuf from the pixdata */
- pixbuf = gdk_pixbuf_from_pixdata(pixdata, TRUE, NULL);
- if (!pixbuf) {
- return NULL;
- }
-
-
- /* Image requires 180 degree rotation + vertical flip,
- * this is the same as a horizontal flip.
- */
- if (tweak_img) {
- horz_flip_pixbuf(pixbuf);
- }
-
- return pixbuf;
-
-} /* load_orientation_image_pixbuf() */
-
-
-
-/*
- * Makes widgets associated with rotation reflect the given
- * rotation setting.
- */
-static void update_rotation(CtkRandR *ctk_randr, Rotation rotation)
-{
- /* Update screen image */
- gtk_image_set_from_pixbuf(ctk_randr->orientation_image,
- ctk_randr->orientation_image_pixbufs[rotation]);
-
- /* Update label */
- gtk_label_set_text(ctk_randr->label,
- get_rotation_string(rotation));
-
-
- /* Update the status bar */
- ctk_config_statusbar_message(ctk_randr->ctk_config,
- "Screen rotation set to %s.",
- get_rotation_string(rotation));
-
-} /* update_rotation() */
-
-
-
-/*
- * When XRandR events happens outside of the control panel,
- * they are trapped by this function so the gui can be updated
- * with the new rotation setting.
- */
-void ctk_randr_event_handler(GtkWidget *widget,
- XRRScreenChangeNotifyEvent *ev,
- gpointer data)
-{
- update_rotation((CtkRandR *)data, ev->rotation);
-} /* ctk_randr_event_handler() */
-
-
-
-/*
- * Rotate left button event handlers
- */
-static void do_button_rotate_left_clicked(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
- int orig_rotation;
- int rotation;
- int rotations;
- ReturnStatus status;
-
-
- /* Get current rotation */
- NvCtrlGetAttribute(ctk_randr->handle, NV_CTRL_ATTR_XRANDR_ROTATION,
- &orig_rotation);
-
- /* Get available rotations */
- NvCtrlGetAttribute(ctk_randr->handle, NV_CTRL_ATTR_XRANDR_ROTATIONS,
- &rotations);
-
- /* Find next available rotation to the left */
- rotation = orig_rotation;
- do {
- rotation <<= 1;
- if ( rotation > 8 ) {
- rotation = 1;
- }
- } while ( !(rotation & rotations) && (rotation != orig_rotation) );
-
- /* Set rotation */
- status = NvCtrlSetAttribute(ctk_randr->handle,
- NV_CTRL_ATTR_XRANDR_ROTATION,
- rotation);
-
- /* Update widgets */
- update_rotation(ctk_randr, rotation);
-}
-
-static void do_button_rotate_left_press(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- ctk_randr->rotate_left_button_pressed = True;
- gtk_image_set_from_pixbuf(ctk_randr->rotate_left_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_ON]);
-}
-
-static void do_button_rotate_left_release(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- ctk_randr->rotate_left_button_pressed = False;
- gtk_image_set_from_pixbuf(ctk_randr->rotate_left_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_OFF]);
-}
-
-static void do_button_rotate_left_enter(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- if ( ctk_randr->rotate_left_button_pressed ) {
- gtk_image_set_from_pixbuf(ctk_randr->rotate_left_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_ON]);
- }
-}
-
-static void do_button_rotate_left_leave(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- if ( ctk_randr->rotate_left_button_pressed ) {
- gtk_image_set_from_pixbuf(ctk_randr->rotate_left_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_OFF]);
- }
-}
-
-
-
-/*
- * Rotate right button event handlers
- */
-static void do_button_rotate_right_clicked(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
- int orig_rotation;
- int rotation;
- int rotations;
- ReturnStatus status;
-
-
- /* Get current rotation */
- NvCtrlGetAttribute(ctk_randr->handle, NV_CTRL_ATTR_XRANDR_ROTATION,
- &orig_rotation);
-
- /* Get available rotations */
- NvCtrlGetAttribute(ctk_randr->handle, NV_CTRL_ATTR_XRANDR_ROTATIONS,
- &rotations);
-
- /* Find next available rotation to the left */
- rotation = orig_rotation;
- do {
- rotation >>= 1;
- if ( rotation == 0 ) {
- rotation = 8;
- }
- } while ( !(rotation & rotations) && (rotation != orig_rotation) );
-
-
- /* Set rotation */
- status = NvCtrlSetAttribute(ctk_randr->handle,
- NV_CTRL_ATTR_XRANDR_ROTATION,
- rotation);
-
- /* Update widgets */
- update_rotation(ctk_randr, rotation);
-}
-
-static void do_button_rotate_right_press(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- ctk_randr->rotate_right_button_pressed = True;
- gtk_image_set_from_pixbuf(ctk_randr->rotate_right_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_ON]);
-}
-
-
-static void do_button_rotate_right_release(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- ctk_randr->rotate_right_button_pressed = False;
- gtk_image_set_from_pixbuf(ctk_randr->rotate_right_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_OFF]);
-}
-
-static void do_button_rotate_right_enter(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- if ( ctk_randr->rotate_right_button_pressed ) {
- gtk_image_set_from_pixbuf(ctk_randr->rotate_right_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_ON]);
- }
-}
-
-static void do_button_rotate_right_leave(GtkWidget *widget, gpointer data)
-{
- CtkRandR *ctk_randr = (CtkRandR *)data;
-
- if ( ctk_randr->rotate_right_button_pressed ) {
- gtk_image_set_from_pixbuf(ctk_randr->rotate_right_button_image,
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_OFF]);
- }
-}
-
-
-
-/*
- * CTK RandR widget creation
- *
- */
-GtkWidget* ctk_randr_new(NvCtrlAttributeHandle *handle,
- CtkConfig *ctk_config,
- CtkEvent *ctk_event)
-{
- GObject *object;
- CtkRandR *ctk_randr;
-
- Bool ret; /* NvCtrlxxx function return value */
- int rotation_supported;
- int rotation;
-
-
-
- /* Make sure we have a handle */
- g_return_val_if_fail(handle != NULL, NULL);
-
-
- /* Check if this screen supports rotation */
- ret = NvCtrlGetAttribute(handle, NV_CTRL_ATTR_XRANDR_ROTATION_SUPPORTED,
- &rotation_supported);
- if ((ret != NvCtrlSuccess) || (!rotation_supported)) {
- /* Rotation not available */
- return NULL;
- }
-
-
- /* Get the initial state of rotation */
- NvCtrlGetAttribute(handle, NV_CTRL_ATTR_XRANDR_ROTATION, &rotation);
-
-
- /* Create the ctk object */
- object = g_object_new(CTK_TYPE_RANDR, NULL);
- ctk_randr = CTK_RANDR(object);
-
-
- /* Cache the attribute handle */
- ctk_randr->handle = handle;
-
-
- /* Set container properties of the object */
- ctk_randr->ctk_config = ctk_config;
- gtk_box_set_spacing(GTK_BOX(ctk_randr), 10);
-
-
- /* Preload orientated screens pixbufs & image */
- ctk_randr->orientation_image_pixbufs[CTKRANDR_IMG_ROTATION_NORMAL] =
- load_orientation_image_pixbuf(RR_Rotate_0);
-
- ctk_randr->orientation_image_pixbufs[CTKRANDR_IMG_ROTATION_LEFT] =
- load_orientation_image_pixbuf(RR_Rotate_90);
-
- ctk_randr->orientation_image_pixbufs[CTKRANDR_IMG_ROTATION_INVERTED] =
- load_orientation_image_pixbuf(RR_Rotate_180);
-
- ctk_randr->orientation_image_pixbufs[CTKRANDR_IMG_ROTATION_RIGHT] =
- load_orientation_image_pixbuf(RR_Rotate_270);
-
- ctk_randr->orientation_image =
- GTK_IMAGE(gtk_image_new_from_pixbuf(ctk_randr->orientation_image_pixbufs[rotation]) );
-
-
- /* Preload button pixbufs & images */
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_OFF] =
- gdk_pixbuf_from_pixdata(&rotate_left_off_pixdata,
- TRUE, NULL);
-
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_ON] =
- gdk_pixbuf_from_pixdata(&rotate_left_on_pixdata,
- TRUE, NULL);
-
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_OFF] =
- gdk_pixbuf_from_pixdata(&rotate_right_off_pixdata,
- TRUE, NULL);
-
- ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_ON] =
- gdk_pixbuf_from_pixdata(&rotate_right_on_pixdata,
- TRUE, NULL);
-
- ctk_randr->rotate_left_button_image =
- GTK_IMAGE(gtk_image_new_from_pixbuf(ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_LEFT_OFF]) );
-
- ctk_randr->rotate_right_button_image =
- GTK_IMAGE(gtk_image_new_from_pixbuf(ctk_randr->button_pixbufs[CTKRANDR_BTN_ROTATE_RIGHT_OFF]) );
-
-
-
- { /* Banner image */
- GtkWidget *banner = ctk_banner_image_new(BANNER_ARTWORK_ROTATION);
- gtk_box_pack_start(GTK_BOX(object), banner, FALSE, FALSE, 0);
- }
-
-
- { /* Rotation control pane */
- GtkWidget *vRotationPane = gtk_vbox_new(FALSE, 0);
- GtkWidget *hStrechedControlBox = gtk_hbox_new(TRUE, 0);
- GtkWidget *hControlBox = gtk_hbox_new(FALSE, 10);
-
- gtk_box_pack_start(GTK_BOX(object), vRotationPane, TRUE, FALSE, 0);
-
- gtk_box_pack_start(GTK_BOX(vRotationPane), hStrechedControlBox,
- FALSE, FALSE,
- 0);
-
- gtk_box_pack_start(GTK_BOX(hStrechedControlBox), hControlBox,
- FALSE, FALSE, 0);
-
-
- { /* Rotate left button */
- GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
- GtkWidget *btn_box = gtk_hbox_new(FALSE, 0);
- GtkWidget *button = gtk_button_new();
-
- gtk_box_pack_start(GTK_BOX(hControlBox), vbox, TRUE, FALSE, 0);
-
- gtk_widget_set_size_request(button, 26, 26);
- ctk_config_set_tooltip(ctk_config, button, "Rotate left");
- g_signal_connect(G_OBJECT(button), "pressed",
- G_CALLBACK(do_button_rotate_left_press),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "released",
- G_CALLBACK(do_button_rotate_left_release),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "enter",
- G_CALLBACK(do_button_rotate_left_enter),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "leave",
- G_CALLBACK(do_button_rotate_left_leave),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "clicked",
- G_CALLBACK(do_button_rotate_left_clicked),
- (gpointer) (ctk_randr));
-
- gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, FALSE, 0);
-
- gtk_container_add(GTK_CONTAINER(button), btn_box);
-
- gtk_container_add(GTK_CONTAINER(btn_box),
- GTK_WIDGET(ctk_randr->rotate_left_button_image));
- }
-
- { /* Rotation orientation image */
- GtkWidget *frame = gtk_frame_new(NULL);
- GtkWidget *img_box = gtk_hbox_new(TRUE, 0);
- GtkWidget *hbox = gtk_hbox_new(TRUE, 0);
- GtkWidget *vbox = gtk_vbox_new(TRUE, 0);
-
- gtk_box_pack_start(GTK_BOX(img_box),
- GTK_WIDGET(ctk_randr->orientation_image),
- FALSE, FALSE, 0);
- gtk_container_add(GTK_CONTAINER(frame), img_box);
- gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
- gtk_widget_set_size_request(hbox, 130, 130);
- gtk_box_pack_start(GTK_BOX(hControlBox), hbox, FALSE, FALSE, 0);
- }
-
- { /* Rotate right button */
- GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
- GtkWidget *btn_box = gtk_hbox_new(FALSE, 0);
- GtkWidget *button = gtk_button_new();
-
- gtk_box_pack_start(GTK_BOX(hControlBox), vbox, TRUE, FALSE, 0);
-
- gtk_widget_set_size_request(button, 26, 26);
- ctk_config_set_tooltip(ctk_config, button, "Rotate right");
- g_signal_connect(G_OBJECT(button), "pressed",
- G_CALLBACK(do_button_rotate_right_press),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "released",
- G_CALLBACK(do_button_rotate_right_release),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "enter",
- G_CALLBACK(do_button_rotate_right_enter),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "leave",
- G_CALLBACK(do_button_rotate_right_leave),
- (gpointer) ctk_randr);
- g_signal_connect(G_OBJECT(button), "clicked",
- G_CALLBACK(do_button_rotate_right_clicked),
- (gpointer) (ctk_randr));
-
- gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, FALSE, 0);
-
- gtk_container_add(GTK_CONTAINER(button), btn_box);
-
- gtk_container_add(GTK_CONTAINER(btn_box),
- GTK_WIDGET(ctk_randr->rotate_right_button_image));
- }
-
- { /* Rotation label */
- ctk_randr->label =
- GTK_LABEL( gtk_label_new(get_rotation_string(rotation)));
- gtk_box_pack_start(GTK_BOX(vRotationPane),
- GTK_WIDGET(ctk_randr->label),
- TRUE, TRUE, 10);
- }
-
- } /* Rotation control pane */
-
-
-
- /* Show the widget */
- gtk_widget_show_all(GTK_WIDGET(ctk_randr));
-
-
- /* Link widget to XRandR events */
- g_signal_connect(ctk_event, "CTK_EVENT_RRScreenChangeNotify",
- G_CALLBACK(ctk_randr_event_handler),
- (gpointer) ctk_randr);
-
-
- return GTK_WIDGET(ctk_randr);
-}
-
-
-
-/*
- * RandR help screen
- */
-GtkTextBuffer *ctk_randr_create_help(GtkTextTagTable *table,
- CtkRandR *ctk_randr)
-{
- GtkTextIter i;
- GtkTextBuffer *b;
-
- b = gtk_text_buffer_new(table);
-
- gtk_text_buffer_get_iter_at_offset(b, &i, 0);
-
- ctk_help_title(b, &i, "Rotation Help");
- ctk_help_para(b, &i,
- "This page in the NVIDIA X Server Control Panel allows "
- "you to select the desired screen orientation through "
- "the XRandR extension."
- );
-
- ctk_help_finish(b);
-
- return b;
-}
diff --git a/src/gtk+-2.x/ctkrandr.h b/src/gtk+-2.x/ctkrandr.h
deleted file mode 100644
index aed7887..0000000
--- a/src/gtk+-2.x/ctkrandr.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * nvidia-settings: A tool for configuring the NVIDIA X driver on Unix
- * and Linux systems.
- *
- * Copyright (C) 2004 NVIDIA Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses>.
- */
-
-#ifndef __CTK_RANDR_H__
-#define __CTK_RANDR_H__
-
-#include "ctkevent.h"
-#include "ctkconfig.h"
-
-G_BEGIN_DECLS
-
-#define CTK_TYPE_RANDR (ctk_randr_get_type())
-
-#define CTK_RANDR(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), CTK_TYPE_RANDR, CtkRandR))
-
-#define CTK_RANDR_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), CTK_TYPE_RANDR, CtkRandRClass))
-
-#define CTK_IS_RANDR(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CTK_TYPE_RANDR))
-
-#define CTK_IS_RANDR_CLASS(class) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), CTK_TYPE_RANDR))
-
-#define CTK_RANDR_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), CTK_TYPE_RANDR, CtkRandRClass))
-
-
-/* Image pixbuf indices */
-#define CTKRANDR_IMG_ROTATION_NORMAL RR_Rotate_0
-#define CTKRANDR_IMG_ROTATION_LEFT RR_Rotate_90
-#define CTKRANDR_IMG_ROTATION_INVERTED RR_Rotate_180
-#define CTKRANDR_IMG_ROTATION_RIGHT RR_Rotate_270
-
-/* Button pixbuf indices */
-#define CTKRANDR_BTN_ROTATE_LEFT_OFF 0
-#define CTKRANDR_BTN_ROTATE_LEFT_ON 1
-#define CTKRANDR_BTN_ROTATE_RIGHT_OFF 2
-#define CTKRANDR_BTN_ROTATE_RIGHT_ON 3
-
-
-typedef struct _CtkRandR
-{
- GtkVBox parent;
-
- NvCtrlAttributeHandle *handle;
- CtkConfig *ctk_config;
-
- GtkLabel *label;
-
- GtkImage *orientation_image;
- GdkPixbuf *orientation_image_pixbufs[9];
-
- GtkImage *rotate_left_button_image;
- Bool rotate_left_button_pressed;
- GtkImage *rotate_right_button_image;
- Bool rotate_right_button_pressed;
- GdkPixbuf *button_pixbufs[4];
-
-} CtkRandR;
-
-typedef struct _CtkRandRClass
-{
- GtkVBoxClass parent_class;
-} CtkRandRClass;
-
-GType ctk_randr_get_type (void) G_GNUC_CONST;
-GtkWidget* ctk_randr_new (NvCtrlAttributeHandle *, CtkConfig *,
- CtkEvent *);
-
-GtkTextBuffer *ctk_randr_create_help(GtkTextTagTable *, CtkRandR *);
-
-G_END_DECLS
-
-#endif /* __CTK_RANDR_H__ */
diff --git a/src/gtk+-2.x/ctkscale.c b/src/gtk+-2.x/ctkscale.c
index ce0c924..5eaebff 100644
--- a/src/gtk+-2.x/ctkscale.c
+++ b/src/gtk+-2.x/ctkscale.c
@@ -49,2 +49,3 @@ GType ctk_scale_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkscreen.c b/src/gtk+-2.x/ctkscreen.c
index a3fd5e3..4fa2541 100644
--- a/src/gtk+-2.x/ctkscreen.c
+++ b/src/gtk+-2.x/ctkscreen.c
@@ -90,2 +90,3 @@ GType ctk_screen_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -110,72 +111,4 @@ static gchar *make_gpu_display_device_list(NvCtrlAttributeHandle *handle,
{
- gchar *displays = NULL;
- gchar *type;
- gchar *name;
- gchar *tmp_str;
- unsigned int display_devices;
- unsigned int mask;
- Bool valid;
-
-
- /* Get the list of enabled display devices on the GPU */
-
- valid =
- XNVCTRLQueryTargetAttribute(NvCtrlGetDisplayPtr(handle),
- NV_CTRL_TARGET_TYPE_GPU,
- gpu_id,
- 0,
- NV_CTRL_ENABLED_DISPLAYS,
- (int *)&display_devices);
- if (!valid) return NULL;
-
- /* If Xinerama is disabled, only show displays that are associated
- * to this X screen.
- */
- if (!xinerama_enabled) {
- ReturnStatus ret;
- unsigned int associated_devices;
-
- ret = NvCtrlGetAttribute(handle,
- NV_CTRL_ASSOCIATED_DISPLAY_DEVICES,
- (int *)&associated_devices);
- if (ret == NvCtrlSuccess) {
- display_devices &= associated_devices;
- }
- }
-
- /* Make the list of display device names */
-
- for (mask = 1; mask; mask <<= 1) {
-
- if (!(mask & display_devices)) continue;
-
- type = display_device_mask_to_display_device_name(mask);
- name = NULL;
-
- valid =
- XNVCTRLQueryTargetStringAttribute(NvCtrlGetDisplayPtr(handle),
- NV_CTRL_TARGET_TYPE_GPU,
- gpu_id,
- mask,
- NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
- &name);
- if (!valid) {
- tmp_str = g_strdup_printf("Unknown (%s)", type);
- } else {
- tmp_str = g_strdup_printf("%s (%s)", name, type);
- XFree(name);
- }
- free(type);
-
- if (displays) {
- name = g_strdup_printf("%s,\n%s", tmp_str, displays);
- g_free(displays);
- g_free(tmp_str);
- } else {
- name = tmp_str;
- }
- displays = name;
- }
-
- return displays;
+ return create_display_name_list_string(handle,
+ NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN);
}
@@ -397,6 +330,5 @@ GtkWidget* ctk_screen_new(NvCtrlAttributeHandle *handle,
gpu_errors = 0;
- ret = NvCtrlGetDisplayAttribute(handle,
- 0,
- NV_CTRL_NUM_GPU_ERRORS_RECOVERED,
- (int *)&gpu_errors);
+ ret = NvCtrlGetAttribute(handle,
+ NV_CTRL_NUM_GPU_ERRORS_RECOVERED,
+ (int *)&gpu_errors);
@@ -405,4 +337,3 @@ GtkWidget* ctk_screen_new(NvCtrlAttributeHandle *handle,
/* get the stereo mode set for this X screen */
- ret = NvCtrlGetDisplayAttribute(handle, 0, NV_CTRL_STEREO,
- (int *)&stereo_mode);
+ ret = NvCtrlGetAttribute(handle, NV_CTRL_STEREO, (int *)&stereo_mode);
if (ret != NvCtrlSuccess) {
@@ -627,5 +558,5 @@ static void info_update_gpu_error(GtkObject *object, gpointer arg1,
/* get the number of gpu errors occurred */
- ret = NvCtrlGetDisplayAttribute(ctk_screen->handle, 0,
- NV_CTRL_NUM_GPU_ERRORS_RECOVERED,
- (int *)&gpu_errors);
+ ret = NvCtrlGetAttribute(ctk_screen->handle,
+ NV_CTRL_NUM_GPU_ERRORS_RECOVERED,
+ (int *)&gpu_errors);
if (ret == NvCtrlSuccess) {
@@ -634,2 +565,3 @@ static void info_update_gpu_error(GtkObject *object, gpointer arg1,
}
+
} /* info_update_gpu_error() */
diff --git a/src/gtk+-2.x/ctkserver.c b/src/gtk+-2.x/ctkserver.c
index 5d61038..c60eee9 100644
--- a/src/gtk+-2.x/ctkserver.c
+++ b/src/gtk+-2.x/ctkserver.c
@@ -49,2 +49,3 @@ GType ctk_server_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkslimm.c b/src/gtk+-2.x/ctkslimm.c
index ecbf17a..93bc4b6 100644
--- a/src/gtk+-2.x/ctkslimm.c
+++ b/src/gtk+-2.x/ctkslimm.c
@@ -25,3 +25,2 @@
#include <X11/Xlib.h>
-#include <X11/extensions/Xrandr.h>
@@ -108,2 +107,3 @@ GType ctk_slimm_get_type()
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -350,3 +350,3 @@ static void save_xconfig_button_clicked(GtkWidget *widget, gpointer user_data)
GTK_BUTTONS_OK,
- err_msg);
+ "%s", err_msg);
diff --git a/src/gtk+-2.x/ctkthermal.c b/src/gtk+-2.x/ctkthermal.c
index 187ff55..ca3967a 100644
--- a/src/gtk+-2.x/ctkthermal.c
+++ b/src/gtk+-2.x/ctkthermal.c
@@ -138,2 +138,3 @@ GType ctk_thermal_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/ctkutils.c b/src/gtk+-2.x/ctkutils.c
index aad233a..a65b411 100644
--- a/src/gtk+-2.x/ctkutils.c
+++ b/src/gtk+-2.x/ctkutils.c
@@ -21,2 +21,3 @@
#include <NvCtrlAttributes.h>
+#include "NVCtrlLib.h"
#include "ctkutils.h"
@@ -77,9 +78,8 @@ gchar *get_pcie_link_speed_string(NvCtrlAttributeHandle *handle,
* Used to check if current display enabled or disabled.
- */
+ */
void update_display_enabled_flag(NvCtrlAttributeHandle *handle,
- gboolean *display_enabled,
- unsigned int display_device_mask)
-{
+ gboolean *display_enabled)
+{
ReturnStatus ret;
- unsigned int enabled_displays;
+ int val;
@@ -88,8 +88,8 @@ void update_display_enabled_flag(NvCtrlAttributeHandle *handle,
ret = NvCtrlGetAttribute(handle,
- NV_CTRL_ENABLED_DISPLAYS,
- (int *)&enabled_displays);
+ NV_CTRL_DISPLAY_ENABLED,
+ &val);
*display_enabled =
- (ret == NvCtrlSuccess &&
- (enabled_displays & (display_device_mask)));
+ ((ret == NvCtrlSuccess) &&
+ (val == NV_CTRL_DISPLAY_ENABLED_TRUE));
@@ -104,6 +104,6 @@ gchar* create_gpu_name_string(NvCtrlAttributeHandle *gpu_handle)
ReturnStatus ret;
-
- ret = NvCtrlGetStringDisplayAttribute(gpu_handle, 0,
- NV_CTRL_STRING_PRODUCT_NAME,
- &gpu_product_name);
+
+ ret = NvCtrlGetStringAttribute(gpu_handle,
+ NV_CTRL_STRING_PRODUCT_NAME,
+ &gpu_product_name);
if (ret == NvCtrlSuccess && gpu_product_name) {
@@ -117,3 +117,3 @@ gchar* create_gpu_name_string(NvCtrlAttributeHandle *gpu_handle)
g_free(gpu_product_name);
-
+
return gpu_name;
@@ -122,2 +122,82 @@ gchar* create_gpu_name_string(NvCtrlAttributeHandle *gpu_handle)
+gchar* create_display_name_list_string(NvCtrlAttributeHandle *handle,
+ unsigned int attr)
+{
+ gchar *displays = NULL;
+ gchar *typeIdName;
+ gchar *logName;
+ gchar *tmp_str;
+ ReturnStatus ret;
+ int *pData;
+ int len;
+ int i;
+ Bool valid;
+
+
+ /* List of Display Device connected on GPU */
+
+ ret = NvCtrlGetBinaryAttribute(handle, 0,
+ attr,
+ (unsigned char **)(&pData), &len);
+ if (ret != NvCtrlSuccess) {
+ goto done;
+ }
+
+ for (i = 0; i < pData[0]; i++) {
+ int display_id = pData[i+1];
+
+ valid =
+ XNVCTRLQueryTargetStringAttribute(NvCtrlGetDisplayPtr(handle),
+ NV_CTRL_TARGET_TYPE_DISPLAY,
+ display_id,
+ 0,
+ NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
+ &tmp_str);
+ if (!valid) {
+ logName = g_strdup("Unknown");
+ } else {
+ logName = g_strdup(tmp_str);
+ XFree(tmp_str);
+ }
+
+ valid =
+ XNVCTRLQueryTargetStringAttribute(NvCtrlGetDisplayPtr(handle),
+ NV_CTRL_TARGET_TYPE_DISPLAY,
+ display_id,
+ 0,
+ NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID,
+ &tmp_str);
+ if (!valid) {
+ typeIdName = g_strdup_printf("DPY-%d", display_id);
+ } else {
+ typeIdName = g_strdup(tmp_str);
+ XFree(tmp_str);
+ }
+
+ tmp_str = g_strdup_printf("%s (%s)", logName, typeIdName);
+ g_free(logName);
+ g_free(typeIdName);
+
+ if (displays) {
+ logName = g_strdup_printf("%s,\n%s", tmp_str, displays);
+ g_free(displays);
+ g_free(tmp_str);
+ displays = logName;
+ } else {
+ displays = tmp_str;
+ }
+ }
+
+ done:
+
+ if (!displays) {
+ displays = g_strdup("None");
+ }
+
+ return displays;
+}
+
+
+
+
GtkWidget *add_table_row_with_help_text(GtkWidget *table,
@@ -230,3 +310,3 @@ void ctk_display_error_msg(GtkWidget *parent, gchar * msg)
GTK_BUTTONS_OK,
- msg);
+ "%s", msg);
gtk_dialog_run(GTK_DIALOG(dlg));
@@ -258,3 +338,3 @@ void ctk_display_warning_msg(GtkWidget *parent, gchar * msg)
GTK_BUTTONS_OK,
- msg);
+ "%s", msg);
gtk_dialog_run(GTK_DIALOG(dlg));
diff --git a/src/gtk+-2.x/ctkutils.h b/src/gtk+-2.x/ctkutils.h
index 446bcb8..76d707d 100644
--- a/src/gtk+-2.x/ctkutils.h
+++ b/src/gtk+-2.x/ctkutils.h
@@ -39,2 +39,4 @@ gchar* create_gpu_name_string(NvCtrlAttributeHandle *gpu_handle);
+gchar* create_display_name_list_string(NvCtrlAttributeHandle *handle,
+ unsigned int attr);
@@ -67,4 +69,3 @@ void ctk_empty_container(GtkWidget *);
void update_display_enabled_flag(NvCtrlAttributeHandle *handle,
- gboolean *display_enabled,
- unsigned int display_device_mask);
+ gboolean *display_enabled);
diff --git a/src/gtk+-2.x/ctkvcs.c b/src/gtk+-2.x/ctkvcs.c
index 5f252c5..9932fea 100644
--- a/src/gtk+-2.x/ctkvcs.c
+++ b/src/gtk+-2.x/ctkvcs.c
@@ -119,2 +119,3 @@ GType ctk_vcs_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -233,3 +234,3 @@ static gboolean update_vcs_info(gpointer user_data)
-GtkWidget * create_error_dialog(CtkVcs *ctk_object)
+static GtkWidget * create_error_dialog(CtkVcs *ctk_object)
{
diff --git a/src/gtk+-2.x/ctkwindow.c b/src/gtk+-2.x/ctkwindow.c
index 1a45bdd..d3d24f8 100644
--- a/src/gtk+-2.x/ctkwindow.c
+++ b/src/gtk+-2.x/ctkwindow.c
@@ -47,3 +47,2 @@
#include "ctkxvideo.h"
-#include "ctkrandr.h"
#include "ctkcursorshadow.h"
@@ -61,3 +60,3 @@
#include "ctkdisplaydevice-tv.h"
-#include "ctkdisplaydevice-dfp.h"
+#include "ctkdisplaydevice.h"
@@ -158,2 +157,3 @@ GType ctk_window_get_type(void)
NULL, /* instance_init */
+ NULL /* value_table */
};
@@ -689,11 +689,2 @@ GtkWidget *ctk_window_new(ParsedAttribute *p, ConfigProperties *conf,
- /* randr settings */
-
- child = ctk_randr_new(screen_handle, ctk_config, ctk_event);
- if (child) {
- help = ctk_randr_create_help(tag_table, CTK_RANDR(child));
- add_page(child, help, ctk_window, &iter, NULL,
- "Rotation Settings", NULL, NULL, NULL);
- }
-
/* cursor shadow */
@@ -889,5 +880,5 @@ GtkWidget *ctk_window_new(ParsedAttribute *p, ConfigProperties *conf,
- ret = NvCtrlGetStringDisplayAttribute(vcs_handle, 0,
- NV_CTRL_STRING_VCSC_PRODUCT_NAME,
- &vcs_product_name);
+ ret = NvCtrlGetStringAttribute(vcs_handle,
+ NV_CTRL_STRING_VCSC_PRODUCT_NAME,
+ &vcs_product_name);
if (ret == NvCtrlSuccess && vcs_product_name) {
@@ -1362,3 +1353,3 @@ void add_special_config_file_attributes(CtkWindow *ctk_window)
static void add_display_devices(CtkWindow *ctk_window, GtkTreeIter *iter,
- NvCtrlAttributeHandle *handle,
+ NvCtrlAttributeHandle *gpu_handle,
CtkEvent *ctk_event,
@@ -1367,32 +1358,21 @@ static void add_display_devices(CtkWindow *ctk_window, GtkTreeIter *iter,
{
- GtkWidget *widget;
GtkTextBuffer *help;
ReturnStatus ret;
- int i, connected, n, mask;
- char *name;
- char *type;
- gchar *title;
-
-
- /* retrieve the connected display device mask */
+ int *pData;
+ int len;
+ int i;
+ NvCtrlAttributeHandle *display_handle;
- ret = NvCtrlGetAttribute(handle, NV_CTRL_CONNECTED_DISPLAYS, &connected);
- if (ret != NvCtrlSuccess) {
- return;
- }
- /* count how many display devices are connected */
+ /* retrieve the list of connected display devices */
- for (i = 0, n = 0; i < 24; i++) {
- if (connected & (1 << i)) n++;
- }
- if (n == 0) {
+ ret = NvCtrlGetBinaryAttribute(gpu_handle, 0,
+ NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU,
+ (unsigned char **)(&pData), &len);
+ if ((ret != NvCtrlSuccess) || (pData[0] <= 0)) {
return;
}
-
- if (data->display_iters) {
- free(data->display_iters);
- }
- data->display_iters = calloc(n, sizeof(GtkTreeIter));
+ nvfree(data->display_iters);
+ data->display_iters = calloc(pData[0], sizeof(GtkTreeIter));
data->num_displays = 0;
@@ -1402,58 +1382,84 @@ static void add_display_devices(CtkWindow *ctk_window, GtkTreeIter *iter,
/*
- * create pages for each of the display devices driven by this handle.
+ * create pages for each of the display devices driven by this (gpu)
+ * handle.
*/
- for (i = 0; i < 24; i++) {
- mask = (1 << i);
- if (!(mask & connected)) continue;
+ for (i = 0; i < pData[0]; i++) {
+ int display_id = pData[i+1];
+ char *logName;
+ char *typeBaseName;
+ char *typeIdName;
+ GtkWidget *widget;
+ gchar *title;
+
+ display_handle =
+ NvCtrlAttributeInit(NvCtrlGetDisplayPtr(gpu_handle),
+ NV_CTRL_TARGET_TYPE_DISPLAY,
+ display_id,
+ NV_CTRL_ATTRIBUTES_NV_CONTROL_SUBSYSTEM);
+ if (!display_handle) {
+ continue;
+ }
- type = display_device_mask_to_display_device_name(mask);
-
- ret =
- NvCtrlGetStringDisplayAttribute(handle, mask,
- NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
- &name);
-
- if ((ret != NvCtrlSuccess) || (!name)) {
- title = g_strdup_printf("%s - (Unknown)", type);
+ /* Query display's names */
+ ret = NvCtrlGetStringAttribute(display_handle,
+ NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME,
+ &typeBaseName);
+ if (ret != NvCtrlSuccess) {
+ NvCtrlAttributeClose(display_handle);
+ continue;
+ }
+ ret = NvCtrlGetStringAttribute(display_handle,
+ NV_CTRL_STRING_DISPLAY_DEVICE_NAME,
+ &logName);
+ if (ret != NvCtrlSuccess) {
+ logName = NULL;
+ }
+ ret = NvCtrlGetStringAttribute(display_handle,
+ NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID,
+ &typeIdName);
+ if (ret != NvCtrlSuccess) {
+ typeIdName = NULL;
+ }
+
+ if (!logName && !typeIdName) {
+ title = g_strdup_printf("DPY-%d - (Unknown)", display_id);
} else {
- title = g_strdup_printf("%s - (%s)", type, name);
- XFree(name);
+ title = g_strdup_printf("%s - (%s)", typeIdName, logName);
}
- free(type);
-
- if (mask & CTK_DISPLAY_DEVICE_CRT_MASK) {
-
+ XFree(logName);
+ XFree(typeIdName);
+
+ /* Create the appropriate page for the display */
+ if (strcmp(typeBaseName, "CRT") == 0) {
widget = ctk_display_device_crt_new
- (handle, ctk_window->ctk_config, ctk_event, mask, title);
-
+ (display_handle, ctk_window->ctk_config, ctk_event, title);
help = ctk_display_device_crt_create_help
(tag_table, CTK_DISPLAY_DEVICE_CRT(widget));
-
- } else if (mask & CTK_DISPLAY_DEVICE_TV_MASK) {
-
+ } else if (strcmp(typeBaseName, "TV") == 0) {
widget = ctk_display_device_tv_new
- (handle, ctk_window->ctk_config, ctk_event, mask, title);
-
+ (display_handle, ctk_window->ctk_config, ctk_event, title);
help = ctk_display_device_tv_create_help
(tag_table, CTK_DISPLAY_DEVICE_TV(widget));
-
- } else if (mask & CTK_DISPLAY_DEVICE_DFP_MASK) {
-
- widget = ctk_display_device_dfp_new
- (handle, ctk_window->ctk_config, ctk_event, mask, title);
-
- help = ctk_display_device_dfp_create_help
- (tag_table, CTK_DISPLAY_DEVICE_DFP(widget));
-
+ } else if (strcmp(typeBaseName, "DFP") == 0) {
+ widget = ctk_display_device_new(display_handle,
+ ctk_window->ctk_config, ctk_event,
+ title, typeBaseName);
+ help = ctk_display_device_create_help(tag_table,
+ CTK_DISPLAY_DEVICE(widget));
} else {
- g_free(title);
- continue;
+ widget = NULL;
+ }
+
+ if (!widget) {
+ NvCtrlAttributeClose(display_handle);
+ } else {
+ add_page(widget, help, ctk_window, iter,
+ &(data->display_iters[data->num_displays]), title,
+ NULL, NULL, NULL);
+ data->num_displays++;
}
- add_page(widget, help, ctk_window, iter,
- &(data->display_iters[data->num_displays]), title,
- NULL, NULL, NULL);
+ XFree(typeBaseName);
g_free(title);
- data->num_displays++;
}
diff --git a/src/gtk+-2.x/ctkxvideo.c b/src/gtk+-2.x/ctkxvideo.c
index aae0cfb..f5313c3 100644
--- a/src/gtk+-2.x/ctkxvideo.c
+++ b/src/gtk+-2.x/ctkxvideo.c
@@ -183,2 +183,3 @@ GType ctk_xvideo_get_type(
NULL, /* instance_init */
+ NULL /* value_table */
};
diff --git a/src/gtk+-2.x/src.mk b/src/gtk+-2.x/src.mk
deleted file mode 100644
index 1ba1b5d..0000000
--- a/src/gtk+-2.x/src.mk
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-# files in the src/gtk+-2.x directory of nvidia-settings
-#
-
-GTK_SRC += ctkxvideo.c
-GTK_SRC += ctkcursorshadow.c
-GTK_SRC += ctkui.c
-GTK_SRC += ctkframelock.c
-GTK_SRC += ctkgauge.c
-GTK_SRC += ctkcurve.c
-GTK_SRC += ctkcolorcorrection.c
-GTK_SRC += ctkscale.c
-GTK_SRC += ctkmultisample.c
-GTK_SRC += ctkconfig.c
-GTK_SRC += ctkevent.c
-GTK_SRC += ctkwindow.c
-GTK_SRC += ctkopengl.c
-GTK_SRC += ctkglx.c
-GTK_SRC += ctkhelp.c
-GTK_SRC += ctkimagesliders.c
-GTK_SRC += ctkdisplaydevice-crt.c
-GTK_SRC += ctkdisplaydevice-tv.c
-GTK_SRC += ctkdisplaydevice-dfp.c
-GTK_SRC += ctkditheringcontrols.c
-GTK_SRC += ctkthermal.c
-GTK_SRC += ctkpowermizer.c
-GTK_SRC += ctkgvo.c
-GTK_SRC += ctkgvo-csc.c
-GTK_SRC += ctkdropdownmenu.c
-GTK_SRC += ctkrandr.c
-GTK_SRC += ctkclocks.c
-GTK_SRC += ctkutils.c
-GTK_SRC += ctkedid.c
-GTK_SRC += ctkserver.c
-GTK_SRC += ctkdisplaylayout.c
-GTK_SRC += ctkdisplayconfig.c
-GTK_SRC += ctkscreen.c
-GTK_SRC += ctkslimm.c
-GTK_SRC += ctkgpu.c
-GTK_SRC += ctkbanner.c
-GTK_SRC += ctkvcs.c
-GTK_SRC += ctkdisplayconfig-utils.c
-GTK_SRC += ctkgvo-banner.c
-GTK_SRC += ctkgvo-sync.c
-GTK_SRC += ctkpowersavings.c
-GTK_SRC += ctkgvi.c
-GTK_SRC += ctklicense.c
-GTK_SRC += ctkecc.c
-GTK_SRC += ctkcolorcontrols.c
-GTK_SRC += ctk3dvisionpro.c
-
-GTK_EXTRA_DIST += ctkxvideo.h
-GTK_EXTRA_DIST += ctkcursorshadow.h
-GTK_EXTRA_DIST += ctkui.h
-GTK_EXTRA_DIST += ctkframelock.h
-GTK_EXTRA_DIST += ctkgauge.h
-GTK_EXTRA_DIST += ctkcurve.h
-GTK_EXTRA_DIST += ctkcolorcorrection.h
-GTK_EXTRA_DIST += ctkscale.h
-GTK_EXTRA_DIST += ctkmultisample.h
-GTK_EXTRA_DIST += ctkconfig.h
-GTK_EXTRA_DIST += ctkevent.h
-GTK_EXTRA_DIST += ctkwindow.h
-GTK_EXTRA_DIST += ctkopengl.h
-GTK_EXTRA_DIST += ctkglx.h
-GTK_EXTRA_DIST += ctkhelp.h
-GTK_EXTRA_DIST += ctkimagesliders.h
-GTK_EXTRA_DIST += ctkdisplaydevice-crt.h
-GTK_EXTRA_DIST += ctkdisplaydevice-tv.h
-GTK_EXTRA_DIST += ctkdisplaydevice-dfp.h
-GTK_EXTRA_DIST += ctkditheringcontrols.h
-GTK_EXTRA_DIST += ctkconstants.h
-GTK_EXTRA_DIST += ctkthermal.h
-GTK_EXTRA_DIST += ctkpowermizer.h
-GTK_EXTRA_DIST += ctkgvo.h
-GTK_EXTRA_DIST += ctkgvo-csc.h
-GTK_EXTRA_DIST += ctkdropdownmenu.h
-GTK_EXTRA_DIST += ctkrandr.h
-GTK_EXTRA_DIST += ctkclocks.h
-GTK_EXTRA_DIST += ctkutils.h
-GTK_EXTRA_DIST += ctkedid.h
-GTK_EXTRA_DIST += ctkserver.h
-GTK_EXTRA_DIST += ctkdisplaylayout.h
-GTK_EXTRA_DIST += ctkdisplayconfig.h
-GTK_EXTRA_DIST += ctkscreen.h
-GTK_EXTRA_DIST += ctkslimm.h
-GTK_EXTRA_DIST += ctkgpu.h
-GTK_EXTRA_DIST += ctkbanner.h
-GTK_EXTRA_DIST += ctkvcs.h
-GTK_EXTRA_DIST += ctkdisplayconfig-utils.h
-GTK_EXTRA_DIST += ctkpowersavings.h
-GTK_EXTRA_DIST += ctkgvo-banner.h
-GTK_EXTRA_DIST += ctkgvo-sync.h
-GTK_EXTRA_DIST += ctkgvi.h
-GTK_EXTRA_DIST += ctklicense.h
-GTK_EXTRA_DIST += ctkecc.h
-GTK_EXTRA_DIST += ctkcolorcontrols.h
-GTK_EXTRA_DIST += ctk3dvisionpro.h
-GTK_EXTRA_DIST += src.mk
diff --git a/src/image_data/rotate_left_off.png b/src/image_data/rotate_left_off.png
deleted file mode 100644
index 3b609a3..0000000
--- a/src/image_data/rotate_left_off.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotate_left_off_pixdata.h b/src/image_data/rotate_left_off_pixdata.h
deleted file mode 100644
index bbd0282..0000000
--- a/src/image_data/rotate_left_off_pixdata.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/* GdkPixbuf RGB C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotate_left_off_pixdata_pixel_data[] = {
- 0x99,0x99,0x99,0x99,0x7f,0x72,0x72,0x72,0x99,0x99,0x99,0xff,0xff,0xff,0xfe,
- 0xfe,0xfe,0xfd,0xfd,0xfd,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,
- 0xf9,0xf9,0xf8,0xf8,0xf8,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,
- 0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0x32,0x32,0x32,0x99,0x99,0x99,0xfe,
- 0xfe,0xfe,0xfd,0xfd,0xfd,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0x32,
- 0x32,0x32,0x99,0x99,0x99,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xef,0xef,0xef,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xe3,
- 0xe3,0xe3,0x32,0x32,0x32,0x99,0x99,0x99,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0x07,0xe4,0xe4,0xe4,
- 0xe3,0xe3,0xe3,0xe1,0xe1,0xe1,0x32,0x32,0x32,0x99,0x99,0x99,0xf9,0xf9,0xf9,
- 0xf8,0xf8,0xf8,0x82,0xf6,0xf6,0xf6,0x0b,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,
- 0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xce,0xce,0xce,0x92,0x92,0x92,0x82,0x74,0x74,0x74,
- 0x16,0xe5,0xe5,0xe5,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe3,0xe3,0xe3,0xe2,0xe2,
- 0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0x32,0x32,0x32,0x99,0x99,0x99,0xf7,0xf7,
- 0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,0xf2,
- 0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,
- 0xed,0xce,0xce,0xce,0x58,0x58,0x58,0x84,0x25,0x25,0x25,0x15,0xe1,0xe1,0xe1,
- 0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,
- 0xdf,0xdf,0xdf,0x32,0x32,0x32,0x99,0x99,0x99,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,
- 0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,
- 0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,0xed,0xc0,0xc0,0xc0,0x24,0x24,0x24,
- 0x85,0x25,0x25,0x25,0x14,0xe0,0xe0,0xe0,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,
- 0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,
- 0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xed,0xed,0xed,0xec,0xec,0xec,0xce,
- 0xce,0xce,0x24,0x24,0x24,0x83,0x25,0x25,0x25,0x01,0x4d,0x4d,0x4d,0x82,0x92,
- 0x92,0x92,0x13,0xe0,0xe0,0xe0,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,
- 0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdc,0xdc,0xdc,0x32,0x32,0x32,0x99,0x99,0x99,
- 0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,
- 0xee,0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0x57,0x57,0x57,
- 0x82,0x25,0x25,0x25,0x17,0x32,0x32,0x32,0xbb,0xbb,0xbb,0xff,0xff,0xff,0xfa,
- 0xfa,0xfa,0xf1,0xf1,0xf1,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xdf,0xdf,0xdf,0xde,
- 0xde,0xde,0xdd,0xdd,0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xcd,0xcd,0xcd,0x83,
- 0x25,0x25,0x25,0x17,0xbb,0xbb,0xbb,0xfd,0xfd,0xfd,0xec,0xec,0xec,0xe3,0xe3,
- 0xe3,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,
- 0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0x32,0x32,0x32,0x99,0x99,
- 0x99,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,
- 0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0x91,0x91,0x91,0x82,0x25,
- 0x25,0x25,0x14,0x4d,0x4d,0x4d,0xff,0xff,0xff,0xec,0xec,0xec,0xe2,0xe2,0xe2,
- 0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,
- 0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,0xd9,0x32,0x32,0x32,
- 0x99,0x99,0x99,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,0xed,
- 0xec,0xec,0xec,0x82,0xea,0xea,0xea,0x02,0xe8,0xe8,0xe8,0x73,0x73,0x73,0x82,
- 0x25,0x25,0x25,0x20,0x92,0x92,0x92,0xfa,0xfa,0xfa,0xe2,0xe2,0xe2,0xe1,0xe1,
- 0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,0xdc,0xdc,
- 0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0x32,0x32,
- 0x32,0x99,0x99,0x99,0xef,0xef,0xef,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,
- 0xeb,0xea,0xea,0xea,0x2b,0x2b,0x2b,0x0c,0x0c,0x0c,0x18,0x18,0x18,0x24,0x24,
- 0x24,0x30,0x30,0x30,0x3c,0x3c,0x3c,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,
- 0x61,0x82,0x82,0x82,0xdf,0xdf,0xdf,0xde,0xde,0xde,0x82,0xdc,0xdc,0xdc,0x28,
- 0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,
- 0x32,0x32,0x32,0x99,0x99,0x99,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,
- 0xea,0xea,0xea,0xe9,0xe9,0xe9,0xda,0xda,0xda,0x25,0x25,0x25,0x24,0x24,0x24,
- 0x30,0x30,0x30,0x3c,0x3c,0x3c,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,
- 0x76,0x76,0x76,0xf7,0xf7,0xf7,0xf9,0xf9,0xf9,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,
- 0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,
- 0xd5,0xd5,0xd5,0x32,0x32,0x32,0x99,0x99,0x99,0xec,0xec,0xec,0xeb,0xeb,0xeb,
- 0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xc3,0xc3,0xc3,
- 0x82,0x3c,0x3c,0x3c,0x3c,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x76,
- 0x76,0x76,0xe6,0xe6,0xe6,0xfd,0xfd,0xfd,0xde,0xde,0xde,0xdb,0xdb,0xdb,0xda,
- 0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,
- 0xd5,0xd5,0xd4,0xd4,0xd4,0x32,0x32,0x32,0x99,0x99,0x99,0xeb,0xeb,0xeb,0xea,
- 0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,
- 0xe4,0xe4,0xa7,0xa7,0xa7,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x6d,
- 0x6d,0x6d,0xcd,0xcd,0xcd,0xfd,0xfd,0xfd,0xe3,0xe3,0xe3,0xdb,0xdb,0xdb,0xda,
- 0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,
- 0xd5,0xd5,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0x32,0x32,0x32,0x99,0x99,0x99,0xea,
- 0xea,0xea,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,
- 0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xa0,0xa0,0xa0,0x61,0x61,0x61,0x6d,
- 0x6d,0x6d,0xbc,0xbc,0xbc,0xff,0xff,0xff,0xe9,0xe9,0xe9,0xdb,0xdb,0xdb,0xda,
- 0xda,0xda,0xd8,0xd8,0xd8,0x82,0xd7,0xd7,0xd7,0x29,0xd5,0xd5,0xd5,0xd4,0xd4,
- 0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0x32,0x32,0x32,0x99,0x99,
- 0x99,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,
- 0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0x9d,0x9d,
- 0x9d,0xab,0xab,0xab,0xff,0xff,0xff,0xee,0xee,0xee,0xda,0xda,0xda,0xd9,0xd9,
- 0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,
- 0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0x32,0x32,
- 0x32,0x99,0x99,0x99,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,
- 0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xdf,0xdf,0xdf,0x82,0xde,
- 0xde,0xde,0x82,0xf2,0xf2,0xf2,0x21,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,
- 0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,
- 0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0x32,0x32,
- 0x32,0x99,0x99,0x99,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xe3,0xe3,
- 0xe3,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,
- 0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,
- 0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,
- 0xd3,0x82,0xd1,0xd1,0xd1,0x29,0xd0,0xd0,0xd0,0xce,0xce,0xce,0xcd,0xcd,0xcd,
- 0x32,0x32,0x32,0x99,0x99,0x99,0xe5,0xe5,0xe5,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,
- 0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,
- 0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,
- 0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,
- 0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,0xcd,0xcd,0xcd,
- 0xcc,0xcc,0xcc,0x32,0x32,0x32,0x99,0x99,0x99,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,
- 0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,
- 0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0x82,0xd8,0xd8,0xd8,0x24,0xd7,
- 0xd7,0xd7,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,
- 0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,0xcd,0xcd,0xcd,0xcc,
- 0xcc,0xcc,0xcb,0xcb,0xcb,0x32,0x32,0x32,0x99,0x99,0x99,0xe2,0xe2,0xe2,0xe1,
- 0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,0xdc,
- 0xdc,0xdc,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,
- 0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,
- 0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,0xcd,0xcd,0xcd,0xcc,
- 0xcc,0xcc,0x82,0xca,0xca,0xca,0x02,0x32,0x32,0x32,0x72,0x72,0x72,0x99,0x32,
- 0x32,0x32
-};
-
-static const GdkPixdata rotate_left_off_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 1847, /* header length + pixel_data length */
- 0x2010001, /* pixdata_type */
- 78, /* rowstride */
- 26, /* width */
- 26, /* height */
- rotate_left_off_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotate_left_on.png b/src/image_data/rotate_left_on.png
deleted file mode 100644
index 4adb3e9..0000000
--- a/src/image_data/rotate_left_on.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotate_left_on_pixdata.h b/src/image_data/rotate_left_on_pixdata.h
deleted file mode 100644
index c489283..0000000
--- a/src/image_data/rotate_left_on_pixdata.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/* GdkPixbuf RGB C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotate_left_on_pixdata_pixel_data[] = {
- 0x99,0x32,0x32,0x32,0x7f,0x8c,0x8c,0x8c,0x32,0x32,0x32,0xc7,0xc7,0xc7,0xc5,
- 0xc5,0xc5,0xc3,0xc3,0xc3,0xc1,0xc1,0xc1,0xc0,0xc0,0xc0,0xbe,0xbe,0xbe,0xbc,
- 0xbc,0xbc,0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb5,0xb5,0xb5,0xb3,
- 0xb3,0xb3,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xc5,
- 0xc5,0xc5,0xc3,0xc3,0xc3,0xc1,0xc1,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbc,
- 0xbc,0xbc,0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbb,
- 0xbb,0xbb,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,0x98,0x98,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xc0,0xc0,0xc0,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbb,
- 0xbb,0xbb,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x9f,
- 0x9f,0x9f,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,0x98,0x98,0x96,
- 0x96,0x96,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xbe,0xbe,0xbe,0xbc,0xbc,0xbc,0xba,
- 0xba,0xba,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,0xb1,
- 0xb1,0xb1,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa8,
- 0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x9f,
- 0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x2f,0x98,0x98,0x98,
- 0x96,0x96,0x96,0x94,0x94,0x94,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xbc,0xbc,0xbc,
- 0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,
- 0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xaa,0xaa,0xaa,
- 0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0x8f,0x8f,0x8f,0x65,0x65,0x65,0x50,0x50,0x50,
- 0x4f,0x4f,0x4f,0x62,0x62,0x62,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x97,0x97,0x97,
- 0x95,0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0xc1,0xc1,0xc1,0x32,0x32,0x32,
- 0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,
- 0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,0xa9,0xa9,
- 0xa7,0xa7,0xa7,0x91,0x91,0x91,0x3d,0x3d,0x3d,0x00,0x00,0x00,0x20,0x20,0x20,
- 0x60,0x60,0x60,0x82,0x80,0x80,0x80,0x16,0x98,0x98,0x98,0x97,0x97,0x97,0x95,
- 0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0x90,0x90,0x90,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,
- 0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0xab,0xab,0xab,0xa9,0xa9,0xa9,0xa7,
- 0xa7,0xa7,0x86,0x86,0x86,0x0a,0x0a,0x0a,0x20,0x20,0x20,0xa0,0xa0,0xa0,0x84,
- 0xff,0xff,0xff,0x15,0x98,0x98,0x98,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,
- 0x91,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xb5,0xb5,
- 0xb5,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,
- 0xac,0xab,0xab,0xab,0xa9,0xa9,0xa9,0xa7,0xa7,0xa7,0x90,0x90,0x90,0x0a,0x0a,
- 0x0a,0x30,0x30,0x30,0xf0,0xf0,0xf0,0x85,0xff,0xff,0xff,0x14,0x97,0x97,0x97,
- 0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xb3,0xb3,0xb3,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,
- 0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,
- 0xa4,0xa4,0xa4,0x3d,0x3d,0x3d,0x20,0x20,0x20,0xf0,0xf0,0xf0,0x83,0xff,0xff,
- 0xff,0x16,0xec,0xec,0xec,0xcb,0xcb,0xcb,0xca,0xca,0xca,0x94,0x94,0x94,0x90,
- 0x90,0x90,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x89,0x89,0x89,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xac,
- 0xac,0xac,0xaa,0xaa,0xaa,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0x8e,
- 0x8e,0x8e,0x00,0x00,0x00,0xa0,0xa0,0xa0,0x82,0xff,0xff,0xff,0x17,0xf9,0xf9,
- 0xf9,0xb8,0xb8,0xb8,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,
- 0x90,0x8e,0x8e,0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x89,0x89,0x89,0x87,0x87,
- 0x87,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,
- 0xab,0xa9,0xa9,0xa9,0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,
- 0xa2,0x64,0x64,0x64,0x20,0x20,0x20,0x83,0xff,0xff,0xff,0x17,0xb8,0xb8,0xb8,
- 0x95,0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0x90,0x90,0x90,0x8e,0x8e,0x8e,
- 0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x87,0x87,0x87,0x85,0x85,0x85,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,0xa9,0xa9,
- 0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,
- 0x4f,0x4f,0x4f,0x60,0x60,0x60,0x82,0xff,0xff,0xff,0x14,0xec,0xec,0xec,0x95,
- 0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,
- 0x8b,0x8b,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,0x84,0x82,
- 0x82,0x82,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xab,0xab,0xab,0xa9,0xa9,0xa9,0xa7,
- 0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0x1e,0x1e,0x1e,0x83,0x00,0x00,0x00,
- 0x01,0x80,0x80,0x80,0x82,0xff,0xff,0xff,0x15,0x80,0x80,0x80,0x00,0x00,0x00,
- 0x1b,0x1b,0x1b,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x8a,0x8a,0x8a,
- 0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,
- 0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x95,0x95,0x95,0xd2,0xd2,0xd2,0x88,0xff,0xff,
- 0xff,0x13,0xea,0xea,0xea,0x8b,0x8b,0x8b,0x89,0x89,0x89,0x87,0x87,0x87,0x85,
- 0x85,0x85,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa1,
- 0xa1,0xa1,0x9f,0x9f,0x9f,0x9d,0x9d,0x9d,0x86,0x86,0x86,0xf1,0xf1,0xf1,0x86,
- 0xff,0xff,0xff,0x15,0xf8,0xf8,0xf8,0x92,0x92,0x92,0x89,0x89,0x89,0x87,0x87,
- 0x87,0x85,0x85,0x85,0x83,0x83,0x83,0x81,0x81,0x81,0x80,0x80,0x80,0x7e,0x7e,
- 0x7e,0x7c,0x7c,0x7c,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa4,0xa4,0xa4,0xa2,0xa2,
- 0xa2,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,
- 0x99,0x7c,0x7c,0x7c,0xf0,0xf0,0xf0,0x84,0xff,0xff,0xff,0x16,0xf8,0xf8,0xf8,
- 0xa0,0xa0,0xa0,0x88,0x88,0x88,0x87,0x87,0x87,0x85,0x85,0x85,0x83,0x83,0x83,
- 0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7c,0x7c,0x7c,0x7a,0x7a,0x7a,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,
- 0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x97,0x97,0x97,0x95,0x95,0x95,
- 0x8e,0x8e,0x8e,0x84,0xff,0xff,0xff,0x17,0xb6,0xb6,0xb6,0x88,0x88,0x88,0x86,
- 0x86,0x86,0x84,0x84,0x84,0x82,0x82,0x82,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,
- 0x7d,0x7d,0x7b,0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,
- 0x98,0x98,0x96,0x96,0x96,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x9a,
- 0x9a,0x9a,0x82,0xff,0xff,0xff,0x7f,0xc5,0xc5,0xc5,0x88,0x88,0x88,0x86,0x86,
- 0x86,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7d,0x7d,
- 0x7d,0x7b,0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0xc1,0xc1,
- 0xc1,0x32,0x32,0x32,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x98,0x98,
- 0x98,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,0x90,0x8f,0x8f,
- 0x8f,0x8d,0x8d,0x8d,0xd4,0xd4,0xd4,0xd3,0xd3,0xd3,0x87,0x87,0x87,0x85,0x85,
- 0x85,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x79,0x79,0x79,0x77,0x77,0x77,0x75,0x75,0x75,0x73,0x73,
- 0x73,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x98,0x98,
- 0x98,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,0x90,0x8f,0x8f,
- 0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x89,0x89,0x89,0x87,0x87,0x87,0x85,0x85,
- 0x85,0x83,0x83,0x83,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x78,0x78,0x78,0x77,0x77,0x77,0x75,0x75,0x75,0x73,0x73,
- 0x73,0x71,0x71,0x71,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x99,0x99,0x99,0x97,0x97,
- 0x97,0x95,0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0x90,0x90,0x90,0x8e,0x8e,
- 0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x87,0x87,0x87,0x85,0x85,
- 0x85,0x83,0x83,0x83,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x78,0x78,0x78,0x76,0x76,0x76,0x74,0x74,0x74,0x72,0x72,
- 0x72,0x71,0x71,0x71,0x6f,0x6f,0x6f,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x97,0x97,
- 0x97,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x90,0x90,0x90,0x8e,0x8e,
- 0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,
- 0x84,0x83,0x83,0x83,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7b,0x7b,
- 0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0x74,0x74,0x74,0x72,0x72,
- 0x72,0x70,0x70,0x70,0x6e,0x6e,0x6e,0x6c,0x6c,0x6c,0xc1,0xc1,0xc1,0x32,0x32,
- 0x32,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8d,0x8d,
- 0x8d,0x8b,0x8b,0x8b,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x11,0x84,
- 0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7b,
- 0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0x74,0x74,0x74,0x72,
- 0x72,0x72,0x70,0x70,0x70,0x6e,0x6e,0x6e,0x6c,0x6c,0x6c,0x6b,0x6b,0x6b,0xc1,
- 0xc1,0xc1,0x8c,0x8c,0x8c,0x99,0xc1,0xc1,0xc1
-};
-
-static const GdkPixdata rotate_left_on_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 1809, /* header length + pixel_data length */
- 0x2010001, /* pixdata_type */
- 78, /* rowstride */
- 26, /* width */
- 26, /* height */
- rotate_left_on_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotate_right_off.png b/src/image_data/rotate_right_off.png
deleted file mode 100644
index 3bd9413..0000000
--- a/src/image_data/rotate_right_off.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotate_right_off_pixdata.h b/src/image_data/rotate_right_off_pixdata.h
deleted file mode 100644
index 1eb0be1..0000000
--- a/src/image_data/rotate_right_off_pixdata.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/* GdkPixbuf RGB C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotate_right_off_pixdata_pixel_data[] = {
- 0x99,0x99,0x99,0x99,0x7f,0x72,0x72,0x72,0x99,0x99,0x99,0xff,0xff,0xff,0xfe,
- 0xfe,0xfe,0xfd,0xfd,0xfd,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,
- 0xf9,0xf9,0xf8,0xf8,0xf8,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,
- 0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0x32,0x32,0x32,0x99,0x99,0x99,0xfe,
- 0xfe,0xfe,0xfd,0xfd,0xfd,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0x32,
- 0x32,0x32,0x99,0x99,0x99,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xef,0xef,0xef,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xe3,
- 0xe3,0xe3,0x32,0x32,0x32,0x99,0x99,0x99,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf8,
- 0xf8,0xf8,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,
- 0xf3,0xf3,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0x07,0xe4,0xe4,0xe4,
- 0xe3,0xe3,0xe3,0xe1,0xe1,0xe1,0x32,0x32,0x32,0x99,0x99,0x99,0xf9,0xf9,0xf9,
- 0xf8,0xf8,0xf8,0x82,0xf6,0xf6,0xf6,0x1c,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0x79,
- 0x79,0x79,0x78,0x78,0x78,0x96,0x96,0x96,0xd1,0xd1,0xd1,0xee,0xee,0xee,0xed,
- 0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,
- 0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe3,0xe3,0xe3,0xe2,
- 0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0x32,0x32,0x32,0x99,0x99,0x99,0xf7,
- 0xf7,0xf7,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,
- 0xf2,0xf2,0x84,0x25,0x25,0x25,0x04,0x4d,0x4d,0x4d,0xce,0xce,0xce,0xeb,0xeb,
- 0xeb,0xea,0xea,0xea,0x82,0xe8,0xe8,0xe8,0x10,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,
- 0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,
- 0xdf,0xdf,0xdf,0x32,0x32,0x32,0x99,0x99,0x99,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,
- 0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0x85,0x25,0x25,
- 0x25,0x15,0x2d,0x2d,0x2d,0xa5,0xa5,0xa5,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,
- 0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,
- 0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xf5,0xf5,0xf5,0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf2,0xf2,0xf2,0xf1,
- 0xf1,0xf1,0xf0,0xf0,0xf0,0x82,0x92,0x92,0x92,0x01,0x4d,0x4d,0x4d,0x83,0x25,
- 0x25,0x25,0x19,0x31,0x31,0x31,0xa4,0xa4,0xa4,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,
- 0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,
- 0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdc,0xdc,0xdc,0x32,0x32,0x32,0x99,0x99,0x99,
- 0xf4,0xf4,0xf4,0xf3,0xf3,0xf3,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,
- 0xee,0xee,0xee,0xfc,0xfc,0xfc,0xf6,0xf6,0xf6,0xf5,0xf5,0xf5,0xb0,0xb0,0xb0,
- 0x32,0x32,0x32,0x82,0x25,0x25,0x25,0x18,0x73,0x73,0x73,0xe8,0xe8,0xe8,0xe4,
- 0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xdf,0xdf,0xdf,0xde,
- 0xde,0xde,0xdd,0xdd,0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xf2,0xf2,0xf2,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,
- 0xee,0xee,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,
- 0xe9,0xe9,0x7e,0x7e,0x7e,0x83,0x25,0x25,0x25,0x18,0xd7,0xd7,0xd7,0xe3,0xe3,
- 0xe3,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,
- 0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0x32,0x32,0x32,0x99,0x99,
- 0x99,0xf1,0xf1,0xf1,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,
- 0xed,0xec,0xec,0xec,0xeb,0xeb,0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,
- 0xe8,0xe6,0xe6,0xe6,0x33,0x33,0x33,0x82,0x25,0x25,0x25,0x11,0xad,0xad,0xad,
- 0xe5,0xe5,0xe5,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,
- 0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,0xd9,0x32,0x32,0x32,
- 0x99,0x99,0x99,0xf0,0xf0,0xf0,0xef,0xef,0xef,0xee,0xee,0xee,0xed,0xed,0xed,
- 0xec,0xec,0xec,0x82,0xea,0xea,0xea,0x05,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,
- 0xe6,0xe6,0xe5,0xe5,0xe5,0x72,0x72,0x72,0x82,0x25,0x25,0x25,0x4a,0x92,0x92,
- 0x92,0xec,0xec,0xec,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,0xdc,0xdc,
- 0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0x32,0x32,
- 0x32,0x99,0x99,0x99,0xef,0xef,0xef,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,
- 0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0x2a,0x2a,
- 0x2a,0x0c,0x0c,0x0c,0x18,0x18,0x18,0x24,0x24,0x24,0x30,0x30,0x30,0x3c,0x3c,
- 0x3c,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x81,0x81,0x81,0xdc,0xdc,
- 0xdc,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,
- 0xd6,0x32,0x32,0x32,0x99,0x99,0x99,0xed,0xed,0xed,0xec,0xec,0xec,0xeb,0xeb,
- 0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,
- 0xe6,0xd7,0xd7,0xd7,0x25,0x25,0x25,0x24,0x24,0x24,0x30,0x30,0x30,0x3c,0x3c,
- 0x3c,0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x76,0x76,0x76,0xf7,0xf7,
- 0xf7,0xf8,0xf8,0xf8,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,
- 0xd6,0xd5,0xd5,0xd5,0x32,0x32,0x32,0x99,0x99,0x99,0xec,0xec,0xec,0xeb,0xeb,
- 0xeb,0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,
- 0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,0xe4,0xc1,0xc1,0xc1,0x82,0x3c,0x3c,0x3c,0x39,
- 0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x76,0x76,0x76,0xe6,0xe6,0xe6,
- 0xfd,0xfd,0xfd,0xdb,0xdb,0xdb,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,
- 0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0x32,0x32,0x32,0x99,0x99,0x99,0xeb,0xeb,0xeb,
- 0xea,0xea,0xea,0xe9,0xe9,0xe9,0xe8,0xe8,0xe8,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,
- 0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xa6,0xa6,0xa6,
- 0x48,0x48,0x48,0x54,0x54,0x54,0x61,0x61,0x61,0x6d,0x6d,0x6d,0xcd,0xcd,0xcd,
- 0xfd,0xfd,0xfd,0xe0,0xe0,0xe0,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,
- 0xd5,0xd5,0xd5,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0x32,0x32,0x32,0x99,0x99,0x99,
- 0xea,0xea,0xea,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,
- 0xe4,0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,
- 0xdf,0xdf,0xdf,0x9f,0x9f,0x9f,0x61,0x61,0x61,0x6d,0x6d,0x6d,0xbc,0xbc,0xbc,
- 0xff,0xff,0xff,0xe7,0xe7,0xe7,0x82,0xd7,0xd7,0xd7,0x29,0xd5,0xd5,0xd5,0xd4,
- 0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0x32,0x32,0x32,0x99,
- 0x99,0x99,0xe8,0xe8,0xe8,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,
- 0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,
- 0xdf,0xdf,0xde,0xde,0xde,0xdd,0xdd,0xdd,0x9d,0x9d,0x9d,0xab,0xab,0xab,0xff,
- 0xff,0xff,0xec,0xec,0xec,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,
- 0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0x32,
- 0x32,0x32,0x99,0x99,0x99,0xe7,0xe7,0xe7,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,
- 0xe4,0xe4,0xe3,0xe3,0xe3,0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xdf,0xdf,0xdf,0x82,
- 0xde,0xde,0xde,0x23,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xf1,0xf1,
- 0xf1,0xf0,0xf0,0xf0,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,
- 0xd4,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,
- 0xcf,0x32,0x32,0x32,0x99,0x99,0x99,0xe6,0xe6,0xe6,0xe5,0xe5,0xe5,0xe4,0xe4,
- 0xe4,0xe3,0xe3,0xe3,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,
- 0xde,0xdd,0xdd,0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,
- 0xd9,0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,
- 0xd4,0xd3,0xd3,0xd3,0x82,0xd1,0xd1,0xd1,0x29,0xd0,0xd0,0xd0,0xce,0xce,0xce,
- 0xcd,0xcd,0xcd,0x32,0x32,0x32,0x99,0x99,0x99,0xe5,0xe5,0xe5,0xe3,0xe3,0xe3,
- 0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,
- 0xdd,0xdd,0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0xd9,0xd9,0xd9,
- 0xd8,0xd8,0xd8,0xd7,0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd3,0xd3,0xd3,
- 0xd2,0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,
- 0xcd,0xcd,0xcd,0xcc,0xcc,0xcc,0x32,0x32,0x32,0x99,0x99,0x99,0xe3,0xe3,0xe3,
- 0xe2,0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,
- 0xdd,0xdd,0xdd,0xdc,0xdc,0xdc,0xdb,0xdb,0xdb,0xda,0xda,0xda,0x82,0xd8,0xd8,
- 0xd8,0x24,0xd7,0xd7,0xd7,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,
- 0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,0xcd,
- 0xcd,0xcd,0xcc,0xcc,0xcc,0xcb,0xcb,0xcb,0x32,0x32,0x32,0x99,0x99,0x99,0xe2,
- 0xe2,0xe2,0xe1,0xe1,0xe1,0xe0,0xe0,0xe0,0xdf,0xdf,0xdf,0xde,0xde,0xde,0xdd,
- 0xdd,0xdd,0xdc,0xdc,0xdc,0xda,0xda,0xda,0xd9,0xd9,0xd9,0xd8,0xd8,0xd8,0xd7,
- 0xd7,0xd7,0xd6,0xd6,0xd6,0xd5,0xd5,0xd5,0xd4,0xd4,0xd4,0xd3,0xd3,0xd3,0xd2,
- 0xd2,0xd2,0xd1,0xd1,0xd1,0xd0,0xd0,0xd0,0xcf,0xcf,0xcf,0xce,0xce,0xce,0xcd,
- 0xcd,0xcd,0xcc,0xcc,0xcc,0x82,0xca,0xca,0xca,0x02,0x32,0x32,0x32,0x72,0x72,
- 0x72,0x99,0x32,0x32,0x32
-};
-
-static const GdkPixdata rotate_right_off_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 1850, /* header length + pixel_data length */
- 0x2010001, /* pixdata_type */
- 78, /* rowstride */
- 26, /* width */
- 26, /* height */
- rotate_right_off_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotate_right_on.png b/src/image_data/rotate_right_on.png
deleted file mode 100644
index 5a99d55..0000000
--- a/src/image_data/rotate_right_on.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotate_right_on_pixdata.h b/src/image_data/rotate_right_on_pixdata.h
deleted file mode 100644
index c4acd08..0000000
--- a/src/image_data/rotate_right_on_pixdata.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/* GdkPixbuf RGB C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotate_right_on_pixdata_pixel_data[] = {
- 0x99,0x32,0x32,0x32,0x7f,0x8c,0x8c,0x8c,0x32,0x32,0x32,0xc7,0xc7,0xc7,0xc5,
- 0xc5,0xc5,0xc3,0xc3,0xc3,0xc1,0xc1,0xc1,0xc0,0xc0,0xc0,0xbe,0xbe,0xbe,0xbc,
- 0xbc,0xbc,0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb5,0xb5,0xb5,0xb3,
- 0xb3,0xb3,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xc5,
- 0xc5,0xc5,0xc3,0xc3,0xc3,0xc1,0xc1,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbc,
- 0xbc,0xbc,0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xc2,0xc2,0xc2,0xc1,0xc1,0xc1,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbb,
- 0xbb,0xbb,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0xab,0xab,0xab,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0xa0,
- 0xa0,0xa0,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,0x98,0x98,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xc0,0xc0,0xc0,0xbf,0xbf,0xbf,0xbd,0xbd,0xbd,0xbb,
- 0xbb,0xbb,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb4,0xb4,0xb4,0xb2,
- 0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa9,
- 0xa9,0xa9,0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x9f,
- 0x9f,0x9f,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,0x98,0x98,0x96,
- 0x96,0x96,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xbe,0xbe,0xbe,0xbc,0xbc,0xbc,0xba,
- 0xba,0xba,0xb9,0xb9,0xb9,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,0xb1,
- 0xb1,0xb1,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa8,
- 0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x9f,
- 0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x26,0x98,0x98,0x98,
- 0x96,0x96,0x96,0x94,0x94,0x94,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xbc,0xbc,0xbc,
- 0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb7,0xb7,0xb7,0xb5,0xb5,0xb5,0xb3,0xb3,0xb3,
- 0xb1,0xb1,0xb1,0x57,0x57,0x57,0x6c,0x6c,0x6c,0x96,0x96,0x96,0xaa,0xaa,0xaa,
- 0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,
- 0x9f,0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x97,0x97,0x97,
- 0x95,0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0xc1,0xc1,0xc1,0x32,0x32,0x32,
- 0xba,0xba,0xba,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,
- 0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0x82,0x80,0x80,0x80,0x18,0x60,0x60,0x60,0x36,
- 0x36,0x36,0x91,0x91,0x91,0xa4,0xa4,0xa4,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,0x9e,
- 0x9e,0x9e,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x97,0x97,0x97,0x95,
- 0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0x90,0x90,0x90,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xb8,0xb8,0xb8,0xb6,0xb6,0xb6,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,
- 0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,0xac,0x84,0xff,0xff,0xff,0x16,0xa4,0xa4,
- 0xa4,0x72,0x72,0x72,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,
- 0x9a,0x98,0x98,0x98,0x96,0x96,0x96,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,
- 0x91,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xb5,0xb5,
- 0xb5,0xb4,0xb4,0xb4,0xb2,0xb2,0xb2,0xb0,0xb0,0xb0,0xae,0xae,0xae,0xac,0xac,
- 0xac,0xab,0xab,0xab,0x85,0xff,0xff,0xff,0x18,0xf1,0xf1,0xf1,0xa5,0xa5,0xa5,
- 0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,0x98,0x98,0x96,0x96,0x96,0x95,0x95,0x95,
- 0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xb3,0xb3,0xb3,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,
- 0xae,0xae,0xae,0xac,0xac,0xac,0xaa,0xaa,0xaa,0xa8,0xa8,0xa8,0xd3,0xd3,0xd3,
- 0xd2,0xd2,0xd2,0xed,0xed,0xed,0x83,0xff,0xff,0xff,0x19,0xf6,0xf6,0xf6,0xa6,
- 0xa6,0xa6,0x98,0x98,0x98,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,
- 0x90,0x90,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x89,0x89,0x89,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xb1,0xb1,0xb1,0xaf,0xaf,0xaf,0xae,0xae,0xae,0xac,
- 0xac,0xac,0xaa,0xaa,0xaa,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,
- 0xa2,0xa2,0xa1,0xa1,0xa1,0x97,0x97,0x97,0xf0,0xf0,0xf0,0x82,0xff,0xff,0xff,
- 0x18,0xdd,0xdd,0xdd,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,
- 0x90,0x8e,0x8e,0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x89,0x89,0x89,0x87,0x87,
- 0x87,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xaf,0xaf,0xaf,0xad,0xad,0xad,0xab,0xab,
- 0xab,0xa9,0xa9,0xa9,0xa7,0xa7,0xa7,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa2,0xa2,
- 0xa2,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x5a,0x5a,0x5a,0x83,0xff,
- 0xff,0xff,0x18,0xa1,0xa1,0xa1,0x92,0x92,0x92,0x90,0x90,0x90,0x8e,0x8e,0x8e,
- 0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x87,0x87,0x87,0x85,0x85,0x85,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xad,0xad,0xad,0xab,0xab,0xab,0xa9,0xa9,0xa9,
- 0xa7,0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,
- 0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x4c,0x4c,0x4c,0xd0,0xd0,0xd0,
- 0x82,0xff,0xff,0xff,0x14,0xba,0xba,0xba,0x8f,0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,
- 0x8b,0x8b,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,0x84,0x82,
- 0x82,0x82,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xab,0xab,0xab,0xa9,0xa9,0xa9,0xa7,
- 0xa7,0xa7,0xa5,0xa5,0xa5,0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0xa0,0xa0,0xa0,0x9e,
- 0x9e,0x9e,0x1d,0x1d,0x1d,0x83,0x00,0x00,0x00,0x01,0x80,0x80,0x80,0x82,0xff,
- 0xff,0xff,0x15,0x80,0x80,0x80,0x00,0x00,0x00,0x1a,0x1a,0x1a,0x8a,0x8a,0x8a,
- 0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa8,0xa8,0xa8,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,
- 0xa3,0xa3,0xa3,0xa1,0xa1,0xa1,0x9f,0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,
- 0x8f,0x8f,0x8f,0xd2,0xd2,0xd2,0x88,0xff,0xff,0xff,0x13,0xe9,0xe9,0xe9,0x85,
- 0x85,0x85,0x84,0x84,0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0xc1,
- 0xc1,0xc1,0x32,0x32,0x32,0xa6,0xa6,0xa6,0xa4,0xa4,0xa4,0xa3,0xa3,0xa3,0xa1,
- 0xa1,0xa1,0x9f,0x9f,0x9f,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x98,
- 0x98,0x98,0x82,0x82,0x82,0xf1,0xf1,0xf1,0x86,0xff,0xff,0xff,0x15,0xf8,0xf8,
- 0xf8,0x8d,0x8d,0x8d,0x83,0x83,0x83,0x81,0x81,0x81,0x80,0x80,0x80,0x7e,0x7e,
- 0x7e,0x7c,0x7c,0x7c,0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa4,0xa4,0xa4,0xa2,0xa2,
- 0xa2,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x99,0x99,
- 0x99,0x97,0x97,0x97,0x95,0x95,0x95,0x93,0x93,0x93,0x7a,0x7a,0x7a,0xf0,0xf0,
- 0xf0,0x84,0xff,0xff,0xff,0x16,0xf8,0xf8,0xf8,0x9c,0x9c,0x9c,0x83,0x83,0x83,
- 0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7c,0x7c,0x7c,0x7a,0x7a,0x7a,
- 0xc1,0xc1,0xc1,0x32,0x32,0x32,0xa2,0xa2,0xa2,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,
- 0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x99,0x99,0x99,0x97,0x97,0x97,0x95,0x95,0x95,
- 0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8c,0x8c,0x8c,0x84,0xff,0xff,
- 0xff,0x17,0xb2,0xb2,0xb2,0x82,0x82,0x82,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,
- 0x7d,0x7d,0x7b,0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0xc1,0xc1,0xc1,0x32,
- 0x32,0x32,0xa0,0xa0,0xa0,0x9e,0x9e,0x9e,0x9c,0x9c,0x9c,0x9a,0x9a,0x9a,0x98,
- 0x98,0x98,0x96,0x96,0x96,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x8f,
- 0x8f,0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x99,0x99,0x99,0x82,0xff,0xff,0xff,
- 0x7f,0xc2,0xc2,0xc2,0x82,0x82,0x82,0x80,0x80,0x80,0x7f,0x7f,0x7f,0x7d,0x7d,
- 0x7d,0x7b,0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0xc1,0xc1,
- 0xc1,0x32,0x32,0x32,0x9d,0x9d,0x9d,0x9b,0x9b,0x9b,0x9a,0x9a,0x9a,0x98,0x98,
- 0x98,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,0x90,0x8f,0x8f,
- 0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x89,0x89,0x89,0x87,0x87,0x87,0xd2,0xd2,
- 0xd2,0xd1,0xd1,0xd1,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x79,0x79,0x79,0x77,0x77,0x77,0x75,0x75,0x75,0x73,0x73,
- 0x73,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x9b,0x9b,0x9b,0x99,0x99,0x99,0x98,0x98,
- 0x98,0x96,0x96,0x96,0x94,0x94,0x94,0x92,0x92,0x92,0x90,0x90,0x90,0x8f,0x8f,
- 0x8f,0x8d,0x8d,0x8d,0x8b,0x8b,0x8b,0x89,0x89,0x89,0x87,0x87,0x87,0x85,0x85,
- 0x85,0x83,0x83,0x83,0x82,0x82,0x82,0x80,0x80,0x80,0x7e,0x7e,0x7e,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x78,0x78,0x78,0x77,0x77,0x77,0x75,0x75,0x75,0x73,0x73,
- 0x73,0x71,0x71,0x71,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x99,0x99,0x99,0x97,0x97,
- 0x97,0x95,0x95,0x95,0x93,0x93,0x93,0x92,0x92,0x92,0x90,0x90,0x90,0x8e,0x8e,
- 0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x87,0x87,0x87,0x85,0x85,
- 0x85,0x83,0x83,0x83,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7c,0x7c,
- 0x7c,0x7a,0x7a,0x7a,0x78,0x78,0x78,0x76,0x76,0x76,0x74,0x74,0x74,0x72,0x72,
- 0x72,0x71,0x71,0x71,0x6f,0x6f,0x6f,0xc1,0xc1,0xc1,0x32,0x32,0x32,0x97,0x97,
- 0x97,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x90,0x90,0x90,0x8e,0x8e,
- 0x8e,0x8c,0x8c,0x8c,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,
- 0x84,0x83,0x83,0x83,0x81,0x81,0x81,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7b,0x7b,
- 0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0x74,0x74,0x74,0x72,0x72,
- 0x72,0x70,0x70,0x70,0x6e,0x6e,0x6e,0x6c,0x6c,0x6c,0xc1,0xc1,0xc1,0x32,0x32,
- 0x32,0x95,0x95,0x95,0x93,0x93,0x93,0x91,0x91,0x91,0x8f,0x8f,0x8f,0x8d,0x8d,
- 0x8d,0x8b,0x8b,0x8b,0x8a,0x8a,0x8a,0x88,0x88,0x88,0x86,0x86,0x86,0x84,0x84,
- 0x84,0x82,0x82,0x82,0x80,0x80,0x80,0x0e,0x7f,0x7f,0x7f,0x7d,0x7d,0x7d,0x7b,
- 0x7b,0x7b,0x79,0x79,0x79,0x77,0x77,0x77,0x76,0x76,0x76,0x74,0x74,0x74,0x72,
- 0x72,0x72,0x70,0x70,0x70,0x6e,0x6e,0x6e,0x6c,0x6c,0x6c,0x6b,0x6b,0x6b,0xc1,
- 0xc1,0xc1,0x8c,0x8c,0x8c,0x99,0xc1,0xc1,0xc1
-};
-
-static const GdkPixdata rotate_right_on_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 1809, /* header length + pixel_data length */
- 0x2010001, /* pixdata_type */
- 78, /* rowstride */
- 26, /* width */
- 26, /* height */
- rotate_right_on_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotation.png b/src/image_data/rotation.png
deleted file mode 100644
index 466812a..0000000
--- a/src/image_data/rotation.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotation_orientation_horz.png b/src/image_data/rotation_orientation_horz.png
deleted file mode 100644
index 8280377..0000000
--- a/src/image_data/rotation_orientation_horz.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotation_orientation_horz_pixdata.h b/src/image_data/rotation_orientation_horz_pixdata.h
deleted file mode 100644
index d346355..0000000
--- a/src/image_data/rotation_orientation_horz_pixdata.h
+++ /dev/null
@@ -1,2304 +0,0 @@
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotation_orientation_horz_pixdata_pixel_data[] = {
- 0x03,0x00,0x00,0x00,0xff,0x05,0x05,0x05,0xff,0x05,0x04,0x04,0xff,0x91,0x05,
- 0x05,0x05,0xff,0x05,0x04,0x05,0x05,0xff,0x04,0x04,0x04,0xff,0x04,0x04,0x05,
- 0xff,0x05,0x05,0x05,0xff,0x04,0x05,0x05,0xff,0x84,0x05,0x05,0x05,0xff,0x82,
- 0x04,0x04,0x04,0xff,0xd5,0x05,0x05,0x05,0xff,0x82,0x04,0x04,0x04,0xff,0x0b,
- 0x05,0x05,0x05,0xff,0x00,0x00,0x00,0xff,0x04,0x04,0x04,0xff,0xe5,0xe4,0xe4,
- 0xff,0xdb,0xc6,0xc5,0xff,0xde,0xd4,0xd3,0xff,0xe5,0xe5,0xe5,0xff,0xe0,0xe0,
- 0xe0,0xff,0xe2,0xe2,0xe2,0xff,0xde,0xde,0xde,0xff,0xe4,0xe4,0xe4,0xff,0x82,
- 0xe2,0xe2,0xe2,0xff,0x18,0xe3,0xe3,0xe3,0xff,0xe4,0xe4,0xe4,0xff,0xe5,0xe5,
- 0xe5,0xff,0xe1,0xe1,0xe1,0xff,0xe3,0xe3,0xe3,0xff,0xe2,0xe2,0xe2,0xff,0xe3,
- 0xe3,0xe3,0xff,0xe4,0xe4,0xe4,0xff,0xde,0xdf,0xdf,0xff,0xc3,0xcf,0xcf,0xff,
- 0xaf,0xc7,0xcc,0xff,0xc6,0xcd,0xd6,0xff,0xd1,0xd3,0xd3,0xff,0xc9,0xce,0xcf,
- 0xff,0xd8,0xd9,0xd8,0xff,0xd1,0xd1,0xd1,0xff,0xd4,0xd4,0xd4,0xff,0xd5,0xd5,
- 0xd8,0xff,0xb9,0xbc,0xc3,0xff,0xbd,0xc1,0xc8,0xff,0xd2,0xd4,0xd8,0xff,0xd0,
- 0xd3,0xd5,0xff,0xd9,0xda,0xdb,0xff,0xe4,0xe4,0xe4,0xff,0xbf,0xe6,0xe6,0xe6,
- 0xff,0x0f,0xe3,0xe3,0xe3,0xff,0xe4,0xe4,0xe4,0xff,0xdc,0xdc,0xdc,0xff,0xdf,
- 0xdf,0xdf,0xff,0xe4,0xe4,0xe4,0xff,0xe1,0xe1,0xe1,0xff,0xe3,0xe3,0xe3,0xff,
- 0xe4,0xe4,0xe4,0xff,0xe0,0xe0,0xe0,0xff,0xde,0xde,0xde,0xff,0xe4,0xe4,0xe4,
- 0xff,0xdd,0xdd,0xdd,0xff,0xe1,0xe1,0xe1,0xff,0xdd,0xdd,0xdd,0xff,0xe3,0xe3,
- 0xe3,0xff,0x82,0xde,0xde,0xde,0xff,0x04,0xe5,0xe5,0xe5,0xff,0xc9,0xc9,0xc9,
- 0xff,0xc7,0xc7,0xc7,0xff,0xe5,0xe5,0xe5,0xff,0x82,0x04,0x04,0x04,0xff,0x22,
- 0xde,0xd6,0xd6,0xff,0xb8,0x47,0x42,0xff,0xb7,0x64,0x62,0xff,0xcb,0xcb,0xcb,
- 0xff,0x9b,0x9b,0x9b,0xff,0xa3,0xa3,0xa3,0xff,0x98,0x98,0x98,0xff,0xb8,0xb8,
- 0xb8,0xff,0x9d,0x9d,0x9d,0xff,0xaa,0xaa,0xaa,0xff,0xa3,0xa3,0xa3,0xff,0xc0,
- 0xc0,0xc0,0xff,0xda,0xda,0xda,0xff,0xb2,0xb2,0xb2,0xff,0xaa,0xaa,0xaa,0xff,
- 0xa9,0xa9,0xa9,0xff,0xac,0xac,0xac,0xff,0xb0,0xb0,0xb0,0xff,0xc5,0xc8,0xca,
- 0xff,0xa4,0xb6,0xb8,0xff,0x7f,0x99,0x9c,0xff,0xa4,0xa4,0xa5,0xff,0xc7,0xba,
- 0x9e,0xff,0xbb,0xb3,0x99,0xff,0xc2,0xc0,0xb9,0xff,0xc6,0xc5,0xc5,0xff,0xce,
- 0xce,0xcf,0xff,0xc7,0xc7,0xca,0xff,0xa4,0xae,0xb8,0xff,0xa7,0xb2,0xbd,0xff,
- 0xad,0xbd,0xcf,0xff,0xa4,0xad,0xb7,0xff,0xc5,0xc2,0xc0,0xff,0xe0,0xe0,0xe0,
- 0xff,0xbf,0xe6,0xe6,0xe6,0xff,0x82,0xe4,0xe4,0xe4,0xff,0x36,0xc8,0xc8,0xc8,
- 0xff,0xab,0xab,0xab,0xff,0xba,0xba,0xba,0xff,0xa6,0xa6,0xa6,0xff,0xac,0xac,
- 0xac,0xff,0xaf,0xaf,0xaf,0xff,0xb8,0xb8,0xb8,0xff,0xbb,0xbb,0xbb,0xff,0xda,
- 0xda,0xda,0xff,0xc5,0xc5,0xc5,0xff,0xc0,0xc0,0xc0,0xff,0x9e,0x9e,0x9e,0xff,
- 0xb4,0xb4,0xb4,0xff,0x96,0x96,0x96,0xff,0x8b,0x8b,0x8b,0xff,0xdc,0xdc,0xdc,
- 0xff,0xa4,0xa4,0xa4,0xff,0xb6,0xb6,0xb6,0xff,0xe4,0xe4,0xe4,0xff,0x04,0x04,
- 0x04,0xff,0x03,0x03,0x04,0xff,0xd0,0xd2,0xd7,0xff,0xc9,0xc8,0xcd,0xff,0xc5,
- 0xc0,0xc4,0xff,0xcd,0xcf,0xd4,0xff,0xc0,0xc2,0xc6,0xff,0xba,0xbc,0xc1,0xff,
- 0xc7,0xc9,0xce,0xff,0xc6,0xc8,0xcd,0xff,0xc3,0xc5,0xca,0xff,0xc6,0xc8,0xcd,
- 0xff,0xc7,0xca,0xce,0xff,0xc8,0xca,0xcf,0xff,0xd0,0xd2,0xd7,0xff,0xcc,0xce,
- 0xd3,0xff,0xc6,0xc8,0xcd,0xff,0xc7,0xc9,0xce,0xff,0xc7,0xca,0xce,0xff,0xc8,
- 0xca,0xce,0xff,0xcd,0xcf,0xd3,0xff,0xc6,0xca,0xd0,0xff,0xb4,0xb8,0xc1,0xff,
- 0xbe,0xc0,0xc6,0xff,0xc9,0xc6,0xc4,0xff,0xc3,0xbf,0xb7,0xff,0xc9,0xc8,0xc8,
- 0xff,0xc4,0xc5,0xc9,0xff,0xbb,0xbd,0xc2,0xff,0xc3,0xc5,0xcb,0xff,0xbb,0xc3,
- 0xce,0xff,0xba,0xc2,0xcd,0xff,0xbf,0xc3,0xcc,0xff,0xaa,0xaf,0xbf,0xff,0xbc,
- 0xbf,0xca,0xff,0x86,0xd2,0xd4,0xd9,0xff,0x83,0xd2,0xd5,0xda,0xff,0x8c,0xd3,
- 0xd5,0xda,0xff,0x82,0xd3,0xd5,0xdb,0xff,0x87,0xd3,0xd6,0xdb,0xff,0x87,0xd4,
- 0xd6,0xdb,0xff,0x86,0xd4,0xd6,0xdc,0xff,0x87,0xd4,0xd7,0xdc,0xff,0x84,0xd5,
- 0xd7,0xdc,0xff,0x8a,0xd5,0xd7,0xdd,0xff,0x1c,0xd3,0xd5,0xda,0xff,0xd4,0xd6,
- 0xdb,0xff,0xd2,0xd5,0xda,0xff,0xcd,0xcf,0xd5,0xff,0xcb,0xcd,0xd3,0xff,0xce,
- 0xd0,0xd5,0xff,0xca,0xcd,0xd2,0xff,0xbb,0xbe,0xc3,0xff,0xc3,0xc5,0xcb,0xff,
- 0xc6,0xc8,0xcd,0xff,0xcb,0xce,0xd3,0xff,0xd0,0xd3,0xd8,0xff,0xd1,0xd4,0xd9,
- 0xff,0xcc,0xce,0xd4,0xff,0xd0,0xd3,0xd8,0xff,0xcf,0xd1,0xd7,0xff,0xd0,0xd3,
- 0xd8,0xff,0xd5,0xd7,0xdc,0xff,0xc0,0xc2,0xc7,0xff,0xc3,0xc6,0xcb,0xff,0xd4,
- 0xd7,0xdc,0xff,0x03,0x04,0x04,0xff,0x01,0x01,0x02,0xff,0x23,0x3b,0x72,0xff,
- 0x24,0x3c,0x72,0xff,0x24,0x3d,0x73,0xff,0x25,0x3e,0x74,0xff,0x26,0x3e,0x74,
- 0xff,0x82,0x26,0x3e,0x75,0xff,0x82,0x26,0x3f,0x75,0xff,0x01,0x27,0x3f,0x75,
- 0xff,0x82,0x27,0x40,0x75,0xff,0x0e,0x28,0x40,0x75,0xff,0x28,0x41,0x76,0xff,
- 0x29,0x41,0x77,0xff,0x29,0x42,0x77,0xff,0x2a,0x42,0x78,0xff,0x2a,0x43,0x79,
- 0xff,0x2b,0x43,0x79,0xff,0x2b,0x44,0x7a,0xff,0x2c,0x44,0x7a,0xff,0x2c,0x45,
- 0x7b,0xff,0x2d,0x45,0x7c,0xff,0x2d,0x46,0x7d,0xff,0x2e,0x47,0x7d,0xff,0x2e,
- 0x47,0x7e,0xff,0x82,0x2f,0x48,0x7f,0xff,0x12,0x30,0x49,0x80,0xff,0x30,0x49,
- 0x81,0xff,0x31,0x49,0x81,0xff,0x31,0x4a,0x82,0xff,0x32,0x4a,0x83,0xff,0x33,
- 0x4b,0x84,0xff,0x33,0x4c,0x85,0xff,0x34,0x4d,0x86,0xff,0x35,0x4e,0x87,0xff,
- 0x36,0x4f,0x88,0xff,0x37,0x50,0x89,0xff,0x38,0x51,0x8b,0xff,0x38,0x53,0x8c,
- 0xff,0x39,0x54,0x8d,0xff,0x3a,0x54,0x8e,0xff,0x3a,0x55,0x8e,0xff,0x3b,0x55,
- 0x8f,0xff,0x3b,0x56,0x90,0xff,0x82,0x3c,0x57,0x91,0xff,0x03,0x3d,0x58,0x92,
- 0xff,0x3d,0x58,0x94,0xff,0x3e,0x59,0x94,0xff,0x82,0x3f,0x5a,0x95,0xff,0x04,
- 0x40,0x5b,0x96,0xff,0x40,0x5b,0x97,0xff,0x41,0x5c,0x97,0xff,0x41,0x5d,0x98,
- 0xff,0x82,0x42,0x5e,0x99,0xff,0x21,0x43,0x5f,0x9a,0xff,0x43,0x5f,0x9b,0xff,
- 0x44,0x60,0x9c,0xff,0x45,0x60,0x9c,0xff,0x45,0x61,0x9d,0xff,0x46,0x62,0x9d,
- 0xff,0x46,0x62,0x9e,0xff,0x47,0x63,0x9f,0xff,0x47,0x63,0xa0,0xff,0x48,0x64,
- 0xa0,0xff,0x48,0x65,0xa1,0xff,0x49,0x65,0xa2,0xff,0x4a,0x66,0xa2,0xff,0x4b,
- 0x66,0xa3,0xff,0x4b,0x67,0xa4,0xff,0x4c,0x67,0xa4,0xff,0x4c,0x68,0xa5,0xff,
- 0x4d,0x68,0xa6,0xff,0x4d,0x69,0xa6,0xff,0x4e,0x6a,0xa7,0xff,0x4f,0x6a,0xa8,
- 0xff,0x4f,0x6b,0xa8,0xff,0x50,0x6b,0xa9,0xff,0x50,0x6c,0xaa,0xff,0x51,0x6c,
- 0xaa,0xff,0x52,0x6d,0xab,0xff,0x52,0x6e,0xac,0xff,0x53,0x6e,0xad,0xff,0x53,
- 0x6f,0xad,0xff,0x54,0x6f,0xae,0xff,0x54,0x70,0xaf,0xff,0x55,0x70,0xb0,0xff,
- 0x55,0x71,0xb0,0xff,0x9a,0x56,0x71,0xb0,0xff,0x07,0x01,0x02,0x03,0xff,0x00,
- 0x01,0x02,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x06,0x22,
- 0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x83,0x25,0x3e,0x77,0xff,0x01,0x25,
- 0x3f,0x77,0xff,0x82,0x25,0x3f,0x78,0xff,0x02,0x26,0x40,0x78,0xff,0x26,0x40,
- 0x79,0xff,0x82,0x27,0x41,0x7a,0xff,0x02,0x28,0x41,0x7b,0xff,0x29,0x42,0x7c,
- 0xff,0x82,0x29,0x43,0x7c,0xff,0x29,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,
- 0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x33,0x4e,0x8a,0xff,
- 0x34,0x4e,0x8b,0xff,0x35,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,
- 0xff,0x37,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,
- 0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3c,0x57,0x95,0xff,0x3c,
- 0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,
- 0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,
- 0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x82,0x44,0x61,0xa0,0xff,0x14,0x45,0x62,0xa1,
- 0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,
- 0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,
- 0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,
- 0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,
- 0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x9a,0x52,0x6f,0xb1,0xff,0x15,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,0x6f,0xff,0x1f,
- 0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,
- 0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,
- 0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,
- 0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x84,0x28,0x42,0x7c,0xff,0x01,0x29,0x42,
- 0x7c,0xff,0x83,0x29,0x43,0x7d,0xff,0x28,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,
- 0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,
- 0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,
- 0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,
- 0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x54,0x92,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x40,0x5c,
- 0x9a,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,0x0f,0x44,0x61,0xa0,0xff,0x44,0x61,
- 0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,
- 0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,
- 0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,
- 0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x82,0x4d,0x6a,0xab,0xff,0x05,
- 0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xae,
- 0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x99,0x52,0x6f,0xb1,0xff,
- 0x0a,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,
- 0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,
- 0xff,0x05,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x24,
- 0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x82,0x26,0x3f,0x79,0xff,0x08,0x27,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,
- 0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x82,0x2b,0x45,0x80,0xff,0x83,0x2c,0x46,0x80,0xff,0x01,0x2c,0x46,0x81,0xff,
- 0x82,0x2c,0x47,0x81,0xff,0x82,0x2d,0x47,0x82,0xff,0x82,0x2e,0x48,0x83,0xff,
- 0x38,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,
- 0x35,0x4f,0x8c,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,
- 0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,
- 0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,
- 0x55,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,
- 0x3e,0x59,0x97,0xff,0x3f,0x5a,0x98,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9b,
- 0xff,0x41,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x60,
- 0x9f,0xff,0x45,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x62,0xa2,0xff,0x47,
- 0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,
- 0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,
- 0xab,0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,
- 0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,0xff,
- 0x99,0x52,0x6f,0xb1,0xff,0x09,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1c,
- 0x36,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,0xff,
- 0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,
- 0x73,0xff,0x17,0x22,0x3b,0x74,0xff,0x22,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,
- 0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x24,0x3e,0x78,0xff,0x25,0x3e,0x78,
- 0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,
- 0x7b,0xff,0x28,0x42,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x29,
- 0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,
- 0x2c,0x46,0x81,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x49,0x83,
- 0xff,0x2e,0x49,0x84,0xff,0x85,0x2f,0x4a,0x85,0xff,0x83,0x30,0x4a,0x86,0xff,
- 0x03,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x31,0x4c,0x87,0xff,0x82,0x32,
- 0x4c,0x88,0xff,0x05,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,
- 0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x05,
- 0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x38,0x53,0x90,
- 0xff,0x39,0x53,0x91,0xff,0x82,0x3a,0x54,0x92,0xff,0x1c,0x3b,0x55,0x93,0xff,
- 0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,
- 0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,
- 0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,
- 0x5d,0x9c,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9f,0xff,0x45,0x61,0xa0,0xff,
- 0x46,0x61,0xa1,0xff,0x47,0x62,0xa2,0xff,0x48,0x63,0xa3,0xff,0x49,0x64,0xa4,
- 0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,
- 0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4d,
- 0x6a,0xab,0xff,0x82,0x4e,0x6b,0xac,0xff,0x03,0x4f,0x6c,0xad,0xff,0x50,0x6d,
- 0xae,0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x98,0x52,0x6f,0xb1,
- 0xff,0x1c,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1c,0x35,0x6d,0xff,0x1c,
- 0x36,0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,
- 0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x73,0xff,0x2b,0x43,0x77,
- 0xff,0x37,0x4f,0x80,0xff,0x3c,0x54,0x82,0xff,0x39,0x4f,0x7d,0xff,0x23,0x3c,
- 0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,
- 0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x0f,
- 0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x83,
- 0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4b,
- 0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,
- 0x4e,0x89,0xff,0x33,0x4e,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x89,0xff,
- 0x83,0x33,0x4e,0x8a,0xff,0x03,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x34,
- 0x4f,0x8c,0xff,0x82,0x35,0x4f,0x8c,0xff,0x12,0x36,0x50,0x8d,0xff,0x36,0x51,
- 0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,
- 0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,
- 0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,
- 0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x05,0x41,0x5c,0x9b,
- 0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x11,0x45,0x60,0xa0,0xff,0x46,0x61,0xa1,
- 0xff,0x46,0x62,0xa3,0xff,0x47,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,
- 0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,
- 0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x52,0x6e,0xb1,
- 0xff,0x97,0x52,0x6f,0xb1,0xff,0x1d,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,
- 0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x27,0x3f,
- 0x75,0xff,0x59,0x6a,0x8d,0xff,0x8a,0xa3,0xbb,0xff,0x9a,0xb4,0xc9,0xff,0x85,
- 0x94,0xaa,0xff,0x35,0x4a,0x7b,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,
- 0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,0x7a,
- 0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x06,0x2c,0x47,0x81,0xff,0x2d,0x48,
- 0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2e,0x4a,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x82,0x30,0x4b,0x86,0xff,0x09,0x31,0x4c,0x87,0xff,0x31,0x4d,
- 0x88,0xff,0x32,0x4d,0x89,0xff,0x33,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,0x34,
- 0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,
- 0x84,0x36,0x51,0x8e,0xff,0x02,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x82,
- 0x37,0x52,0x8f,0xff,0x01,0x37,0x52,0x90,0xff,0x82,0x38,0x53,0x90,0xff,0x26,
- 0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,
- 0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,
- 0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,
- 0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,
- 0x41,0x5c,0x9b,0xff,0x42,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,
- 0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,0x60,
- 0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,0xa6,0xff,
- 0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4d,0x69,0xab,
- 0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x83,0x51,0x6e,0xb0,0xff,0x94,0x52,0x6f,0xb1,0xff,0x2f,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,
- 0x36,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,
- 0x1f,0x38,0x71,0xff,0x2c,0x43,0x76,0xff,0x77,0x87,0xa1,0xff,0x98,0xc4,0xe3,
- 0xff,0xac,0xc8,0xde,0xff,0xb6,0xbe,0xc7,0xff,0x6c,0x78,0x93,0xff,0x23,0x3c,
- 0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,
- 0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,
- 0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,
- 0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x82,0xff,0x2d,
- 0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,
- 0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,
- 0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8a,0xff,0x34,0x4f,
- 0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,0xff,0x05,0x36,0x52,0x8e,
- 0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x84,0x39,0x55,0x92,0xff,0x82,0x3a,0x56,0x93,0xff,0x83,0x3b,0x56,
- 0x93,0xff,0x01,0x3c,0x56,0x94,0xff,0x82,0x3c,0x57,0x95,0xff,0x21,0x3c,0x58,
- 0x96,0xff,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,
- 0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,
- 0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,
- 0xa0,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,
- 0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,
- 0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,
- 0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,
- 0xab,0xff,0x4d,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,0x82,0x4f,0x6c,0xae,0xff,
- 0x82,0x50,0x6d,0xaf,0xff,0x85,0x51,0x6e,0xb0,0xff,0x8c,0x52,0x6f,0xb1,0xff,
- 0x35,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,
- 0x6d,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,
- 0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x2c,0x43,0x76,0xff,0x7f,0x8a,0x9d,0xff,
- 0xa4,0xb6,0xc5,0xff,0xa1,0xaa,0xb4,0xff,0xa2,0xa9,0xb2,0xff,0x66,0x73,0x8c,
- 0xff,0x23,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2b,0x45,0x81,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x2f,0x4b,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,
- 0x31,0x4c,0x88,0xff,0x31,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,
- 0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,
- 0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,
- 0x53,0x90,0xff,0x82,0x38,0x54,0x91,0xff,0x07,0x39,0x55,0x92,0xff,0x39,0x56,
- 0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,
- 0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x84,0x3d,0x59,0x97,0xff,0x83,0x3e,0x5a,
- 0x98,0xff,0x01,0x3f,0x5a,0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,
- 0x9a,0xff,0x06,0x40,0x5b,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,
- 0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,
- 0x9f,0xff,0x01,0x45,0x60,0xa0,0xff,0x82,0x45,0x61,0xa1,0xff,0x0d,0x45,0x62,
- 0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,
- 0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,0x49,0x66,0xa7,0xff,
- 0x4a,0x67,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xaa,
- 0xff,0x4c,0x69,0xab,0xff,0x86,0x4d,0x6a,0xac,0xff,0x83,0x4e,0x6b,0xad,0xff,
- 0x01,0x4f,0x6c,0xae,0xff,0x83,0x50,0x6d,0xaf,0xff,0x85,0x51,0x6e,0xb0,0xff,
- 0x84,0x52,0x6f,0xb1,0xff,0x48,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1a,
- 0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,
- 0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x27,0x3e,0x73,
- 0xff,0x5c,0x69,0x86,0xff,0x6e,0x77,0x8b,0xff,0x49,0x58,0x79,0xff,0x4f,0x61,
- 0x87,0xff,0x3e,0x53,0x7b,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,0xff,0x23,
- 0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,
- 0x25,0x3f,0x79,0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,
- 0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,
- 0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,
- 0x46,0x81,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,
- 0x2e,0x49,0x84,0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,
- 0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,
- 0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,
- 0x50,0x8c,0xff,0x35,0x51,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,
- 0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,
- 0xff,0x39,0x55,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,
- 0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,
- 0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,
- 0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,
- 0xff,0x41,0x5d,0x9c,0xff,0x40,0x5d,0x9b,0xff,0x82,0x41,0x5d,0x9c,0xff,0x02,
- 0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x82,0x42,0x5e,0x9d,0xff,0x04,0x43,
- 0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,
- 0x82,0x45,0x60,0xa0,0xff,0x0f,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,
- 0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,
- 0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x49,0x66,0xa8,
- 0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,
- 0xaa,0xff,0x4c,0x69,0xab,0xff,0x8d,0x4d,0x6a,0xac,0xff,0x83,0x4e,0x6b,0xad,
- 0xff,0x01,0x4f,0x6c,0xae,0xff,0x83,0x50,0x6d,0xaf,0xff,0x0e,0x51,0x6e,0xb0,
- 0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,
- 0x6c,0xff,0x1b,0x35,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,
- 0x36,0x6e,0xff,0x1f,0x38,0x70,0xff,0x29,0x3f,0x73,0xff,0x27,0x3e,0x73,0xff,
- 0x2b,0x41,0x75,0xff,0x2a,0x41,0x76,0xff,0x82,0x2b,0x42,0x77,0xff,0x10,0x28,
- 0x40,0x76,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x05,0x2c,0x46,0x81,0xff,0x2c,0x47,
- 0x82,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x82,
- 0x2f,0x4a,0x85,0xff,0x09,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,
- 0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,
- 0xff,0x05,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,
- 0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x05,0x3a,0x56,
- 0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x95,0xff,0x3c,
- 0x58,0x96,0xff,0x82,0x3d,0x59,0x97,0xff,0x0b,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,
- 0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,
- 0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x84,0x44,0x61,0xa0,0xff,0x82,0x45,
- 0x61,0xa1,0xff,0x82,0x46,0x61,0xa1,0xff,0x0e,0x46,0x62,0xa2,0xff,0x46,0x62,
- 0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,
- 0x64,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa6,0xff,
- 0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xa9,
- 0xff,0x4b,0x68,0xaa,0xff,0x82,0x4c,0x69,0xab,0xff,0x93,0x4d,0x6a,0xac,0xff,
- 0x1a,0x4e,0x6b,0xad,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x19,0x33,
- 0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,
- 0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x22,0x3a,0x70,0xff,0x3b,0x4e,0x78,0xff,
- 0x38,0x4b,0x77,0xff,0x40,0x51,0x79,0xff,0x41,0x53,0x7b,0xff,0x42,0x53,0x7c,
- 0xff,0x40,0x52,0x7b,0xff,0x34,0x48,0x77,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,
- 0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,
- 0x82,0x27,0x41,0x7b,0xff,0x1f,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,
- 0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,
- 0x2b,0x45,0x81,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,
- 0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,
- 0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,0x31,
- 0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,
- 0x34,0x50,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,
- 0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x82,0x3a,0x56,0x93,0xff,
- 0x0f,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,
- 0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,
- 0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,
- 0xff,0x82,0x43,0x60,0x9f,0xff,0x07,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x63,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,
- 0xff,0x48,0x64,0xa4,0xff,0x82,0x48,0x64,0xa5,0xff,0x02,0x48,0x65,0xa5,0xff,
- 0x49,0x65,0xa5,0xff,0x83,0x49,0x65,0xa6,0xff,0x01,0x49,0x66,0xa7,0xff,0x82,
- 0x4a,0x66,0xa7,0xff,0x02,0x4a,0x67,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x82,0x4b,
- 0x68,0xa9,0xff,0x02,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x94,0x4d,0x6a,
- 0xac,0xff,0x34,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x19,0x33,0x6a,0xff,
- 0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,
- 0xff,0x1c,0x36,0x6d,0xff,0x1f,0x38,0x6f,0xff,0x2e,0x43,0x74,0xff,0x2f,0x44,
- 0x72,0xff,0x33,0x46,0x70,0xff,0x38,0x4b,0x75,0xff,0x39,0x4c,0x76,0xff,0x34,
- 0x47,0x74,0xff,0x2b,0x40,0x71,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,
- 0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,
- 0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x79,0xff,0x27,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,
- 0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x44,0x7f,0xff,
- 0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x82,
- 0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,
- 0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,
- 0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,
- 0x33,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x82,0x36,0x52,0x8e,0xff,0x03,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x18,0x3a,0x56,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,
- 0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x99,
- 0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,
- 0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa0,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,
- 0xff,0x82,0x48,0x64,0xa4,0xff,0x05,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x82,0x4c,0x68,
- 0xa9,0xff,0x01,0x4c,0x69,0xa9,0xff,0x84,0x4c,0x69,0xaa,0xff,0x82,0x4c,0x69,
- 0xab,0xff,0x03,0x4d,0x6a,0xac,0xff,0x4e,0x6b,0xac,0xff,0x4e,0x6b,0xad,0xff,
- 0x92,0x4d,0x6a,0xac,0xff,0x0f,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x19,
- 0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,
- 0x1b,0x35,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,0x36,0x6e,
- 0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,
- 0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x10,0x22,0x3b,0x74,
- 0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3d,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x82,0x2b,0x45,0x80,0xff,0x17,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,
- 0x2d,0x48,0x82,0xff,0x2d,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x84,
- 0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,
- 0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,
- 0x36,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,
- 0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x25,
- 0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,
- 0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,
- 0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,
- 0x4b,0x68,0xa8,0xff,0x4c,0x69,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,
- 0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x83,0x4f,
- 0x6c,0xae,0xff,0x01,0x50,0x6d,0xae,0xff,0x82,0x50,0x6d,0xaf,0xff,0x83,0x4f,
- 0x6c,0xae,0xff,0x83,0x4e,0x6b,0xad,0xff,0x8b,0x4d,0x6a,0xac,0xff,0x0e,0x01,
- 0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x6a,0xff,
- 0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,
- 0xff,0x1c,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,
- 0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x82,0x20,0x39,0x72,0xff,
- 0x01,0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,0xff,0x26,0x23,0x3c,0x75,0xff,
- 0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,
- 0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,
- 0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,
- 0x2c,0x45,0x81,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,
- 0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,
- 0x86,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,0x32,
- 0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,
- 0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,
- 0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x82,0x38,
- 0x54,0x91,0xff,0x12,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,
- 0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,
- 0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,
- 0xff,0x82,0x43,0x60,0x9f,0xff,0x05,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,
- 0xa4,0xff,0x10,0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,
- 0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xa9,
- 0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,
- 0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,
- 0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x84,0x52,0x6f,0xb1,0xff,0x01,0x51,0x6e,
- 0xb0,0xff,0x83,0x50,0x6d,0xaf,0xff,0x83,0x4f,0x6c,0xae,0xff,0x83,0x4e,0x6b,
- 0xad,0xff,0x84,0x4d,0x6a,0xac,0xff,0x2b,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x18,0x31,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,
- 0x36,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,
- 0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x72,
- 0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,
- 0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,
- 0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,
- 0x82,0x30,0x4b,0x86,0xff,0x09,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,
- 0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,
- 0x34,0x50,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x82,0x36,0x52,
- 0x8e,0xff,0x03,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,
- 0x82,0x39,0x55,0x92,0xff,0x2a,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,
- 0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,
- 0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,
- 0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,
- 0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,
- 0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,
- 0xa7,0xff,0x4b,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,
- 0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,
- 0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,
- 0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x8a,0x52,0x6f,0xb1,0xff,0x01,
- 0x51,0x6e,0xb0,0xff,0x83,0x50,0x6d,0xaf,0xff,0x83,0x4f,0x6c,0xae,0xff,0x11,
- 0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,
- 0xff,0x19,0x32,0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,
- 0x6c,0xff,0x1b,0x35,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,
- 0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,
- 0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x10,0x22,
- 0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x05,0x2c,0x46,0x81,0xff,0x2c,0x47,
- 0x82,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x82,
- 0x2f,0x4a,0x85,0xff,0x0b,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,
- 0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,
- 0x35,0x51,0x8d,0xff,0x82,0x36,0x52,0x8e,0xff,0x03,0x37,0x53,0x8f,0xff,0x38,
- 0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x28,0x3a,0x56,
- 0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,
- 0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,
- 0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,
- 0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,
- 0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,
- 0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,
- 0xa9,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,
- 0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,
- 0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x8f,0x52,
- 0x6f,0xb1,0xff,0x0d,0x51,0x6e,0xb0,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x32,
- 0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,
- 0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x82,0x1e,0x37,0x6f,
- 0xff,0x02,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x82,0x20,0x39,0x72,0xff,
- 0x01,0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,0xff,0x08,0x23,0x3c,0x75,0xff,
- 0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x82,0x27,
- 0x41,0x7b,0xff,0x17,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,
- 0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x45,
- 0x81,0xff,0x2c,0x46,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,
- 0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,
- 0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,0x32,0x4d,0x88,
- 0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8a,0xff,0x34,0x4f,
- 0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,0xff,0x17,0x36,0x52,0x8e,
- 0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,
- 0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,
- 0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,
- 0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x82,
- 0x43,0x60,0x9f,0xff,0x05,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,
- 0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,0xa4,0xff,
- 0x09,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x67,
- 0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,
- 0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x82,0x4e,0x6b,0xac,0xff,0x05,0x4f,0x6c,
- 0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,
- 0x6e,0xb0,0xff,0x90,0x52,0x6f,0xb1,0xff,0x04,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x82,0x18,0x31,0x68,0xff,
- 0x02,0x19,0x32,0x69,0xff,0x1a,0x32,0x69,0xff,0x82,0x1a,0x33,0x6a,0xff,0x33,
- 0x1b,0x34,0x6b,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x35,0x6d,
- 0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,
- 0x3a,0x73,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x75,0xff,
- 0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,
- 0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,
- 0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2e,0x4a,0x84,
- 0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4b,0x87,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,
- 0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,0x34,0x50,0x8c,0xff,
- 0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,
- 0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x82,0x39,0x55,0x92,0xff,0x0f,
- 0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x82,0x42,0x5f,0x9e,0xff,0x19,0x43,0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,
- 0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,
- 0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,
- 0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xaa,0xff,0x4d,
- 0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,
- 0xff,0x8f,0x52,0x6f,0xb1,0xff,0x02,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x82,0x16,0x2e,0x64,0xff,0x0e,0x17,0x2f,0x64,0xff,0x17,0x2f,0x65,0xff,0x18,
- 0x30,0x65,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x21,0x37,0x68,0xff,
- 0x54,0x5b,0x6f,0xff,0x73,0x70,0x70,0xff,0x5f,0x60,0x6b,0xff,0x5e,0x5f,0x6a,
- 0xff,0x26,0x3b,0x69,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,
- 0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x18,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,
- 0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,
- 0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,
- 0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x78,0xff,
- 0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x42,0x7c,
- 0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x46,
- 0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x82,
- 0x2f,0x4a,0x85,0xff,0x0b,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x8a,0xff,0x33,
- 0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,
- 0x35,0x51,0x8d,0xff,0x82,0x36,0x52,0x8e,0xff,0x2d,0x37,0x53,0x8f,0xff,0x37,
- 0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x38,0x54,0x92,0xff,0x39,0x55,0x93,0xff,
- 0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5d,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,
- 0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,
- 0x65,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,
- 0x4b,0x68,0xa9,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,
- 0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,
- 0xae,0xff,0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,
- 0x8c,0x52,0x6f,0xb1,0xff,0x1c,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x01,
- 0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,
- 0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,
- 0xff,0x18,0x30,0x65,0xff,0x28,0x3c,0x69,0xff,0x8d,0x83,0x77,0xff,0xd0,0xb1,
- 0x80,0xff,0xbb,0xa2,0x7d,0xff,0xb8,0xa0,0x7d,0xff,0x56,0x5c,0x6f,0xff,0x1b,
- 0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1c,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,
- 0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,
- 0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x82,0x22,
- 0x3b,0x73,0xff,0x08,0x22,0x3c,0x74,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,
- 0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,
- 0x78,0xff,0x26,0x40,0x79,0xff,0x82,0x27,0x41,0x7a,0xff,0x12,0x28,0x42,0x7b,
- 0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x46,
- 0x80,0xff,0x2c,0x47,0x80,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x49,0x84,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,
- 0x32,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8a,
- 0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,0xff,0x05,
- 0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x38,0x53,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x10,0x3a,0x56,0x93,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,
- 0x82,0x43,0x60,0x9f,0xff,0x04,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x82,0x47,0x63,0xa3,0xff,0x84,0x48,0x64,
- 0xa4,0xff,0x0d,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4e,0x6a,0xab,
- 0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x51,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x86,0x52,0x6f,0xb1,0xff,
- 0x82,0x51,0x6e,0xb0,0xff,0x82,0x50,0x6d,0xaf,0xff,0x82,0x4f,0x6c,0xae,0xff,
- 0x82,0x4e,0x6b,0xad,0xff,0x11,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x14,
- 0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,
- 0x17,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x68,0xff,0x26,0x3b,0x6a,
- 0xff,0x87,0x7f,0x78,0xff,0xdc,0xbb,0x8a,0xff,0xa2,0x91,0x78,0xff,0x93,0x84,
- 0x72,0xff,0x58,0x5a,0x67,0xff,0x1d,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x82,
- 0x1e,0x37,0x6f,0xff,0x0c,0x1f,0x38,0x70,0xff,0x1f,0x39,0x71,0xff,0x20,0x39,
- 0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,
- 0x3c,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x76,0xff,
- 0x24,0x3e,0x77,0xff,0x25,0x3e,0x77,0xff,0x82,0x25,0x3f,0x78,0xff,0x82,0x26,
- 0x40,0x79,0xff,0x82,0x27,0x41,0x7a,0xff,0x01,0x28,0x41,0x7b,0xff,0x82,0x28,
- 0x42,0x7b,0xff,0x28,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,
- 0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,
- 0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x84,0xff,0x2f,0x4a,0x85,0xff,0x31,
- 0x4b,0x86,0xff,0x31,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,
- 0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,
- 0x55,0x93,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,
- 0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,
- 0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x82,
- 0x42,0x5f,0x9e,0xff,0x01,0x43,0x60,0x9f,0xff,0x82,0x44,0x61,0xa0,0xff,0x82,
- 0x44,0x61,0xa1,0xff,0x03,0x44,0x60,0xa0,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,
- 0xa0,0xff,0x83,0x45,0x61,0xa1,0xff,0x0b,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,
- 0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,
- 0xa7,0xff,0x4b,0x67,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4e,0x6a,0xac,0xff,0x4f,
- 0x6c,0xad,0xff,0x50,0x6c,0xae,0xff,0x82,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,
- 0xb0,0xff,0x82,0x50,0x6d,0xaf,0xff,0x83,0x4f,0x6c,0xae,0xff,0x82,0x4e,0x6b,
- 0xad,0xff,0x85,0x4d,0x6a,0xac,0xff,0x15,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,
- 0x65,0xff,0x17,0x31,0x67,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x24,
- 0x3a,0x6c,0xff,0x74,0x71,0x75,0xff,0xb8,0x98,0x6f,0xff,0x89,0x68,0x51,0xff,
- 0x81,0x62,0x4e,0xff,0x51,0x46,0x51,0xff,0x1e,0x36,0x6e,0xff,0x1e,0x37,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,0x39,
- 0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x08,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,
- 0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,
- 0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x82,0x26,0x40,0x7a,0xff,
- 0x04,0x27,0x41,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x28,0x42,
- 0x7d,0xff,0x82,0x29,0x43,0x7d,0xff,0x82,0x2a,0x44,0x7e,0xff,0x02,0x2a,0x44,
- 0x7f,0xff,0x2a,0x45,0x7f,0xff,0x83,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,
- 0xff,0x0f,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,
- 0x49,0x85,0xff,0x31,0x4b,0x86,0xff,0x32,0x4d,0x89,0xff,0x33,0x4f,0x8a,0xff,
- 0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x82,0x38,0x54,0x91,0xff,0x10,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,
- 0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,
- 0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,
- 0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x82,0x42,0x5f,
- 0x9e,0xff,0x83,0x42,0x5e,0x9d,0xff,0x01,0x42,0x5e,0x9e,0xff,0x82,0x43,0x5e,
- 0x9e,0xff,0x03,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,
- 0x82,0x45,0x61,0xa1,0xff,0x0c,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,
- 0x63,0xa4,0xff,0x47,0x63,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,
- 0x49,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x69,0xaa,0xff,0x4c,0x69,0xab,
- 0xff,0x4d,0x6a,0xab,0xff,0x4d,0x6a,0xac,0xff,0x83,0x4e,0x6b,0xad,0xff,0x8b,
- 0x4d,0x6a,0xac,0xff,0x10,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x14,0x2b,
- 0x5f,0xff,0x14,0x2c,0x62,0xff,0x16,0x2f,0x65,0xff,0x16,0x30,0x66,0xff,0x17,
- 0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x69,0xff,0x1d,0x35,0x6a,0xff,
- 0x39,0x48,0x6d,0xff,0x4f,0x51,0x64,0xff,0x55,0x49,0x54,0xff,0x5f,0x4f,0x54,
- 0xff,0x38,0x3c,0x5c,0xff,0x1d,0x36,0x6e,0xff,0x82,0x1e,0x37,0x6f,0xff,0x05,
- 0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x72,
- 0xff,0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,0xff,0x0f,0x23,0x3c,0x75,0xff,
- 0x23,0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,
- 0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,
- 0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,
- 0xff,0x01,0x2c,0x46,0x81,0xff,0x82,0x2c,0x47,0x81,0xff,0x01,0x2d,0x47,0x81,
- 0xff,0x83,0x2d,0x47,0x82,0xff,0x09,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,
- 0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x4a,0x85,0xff,0x32,0x4c,0x88,
- 0xff,0x33,0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,
- 0x51,0x8d,0xff,0x05,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,
- 0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x0a,
- 0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x85,0x40,0x5c,0x9b,0xff,
- 0x82,0x40,0x5b,0x9a,0xff,0x82,0x41,0x5c,0x9b,0xff,0x0f,0x41,0x5c,0x9c,0xff,
- 0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,
- 0xff,0x44,0x60,0xa0,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,
- 0xa2,0xff,0x46,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,
- 0x64,0xa5,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x82,0x49,0x66,0xa7,
- 0xff,0x05,0x4a,0x67,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,
- 0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x8a,0x4d,0x6a,0xac,0xff,0x82,0x4e,0x6b,
- 0xad,0xff,0x16,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x13,0x2b,0x5f,0xff,
- 0x14,0x2c,0x61,0xff,0x16,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,
- 0xff,0x18,0x32,0x68,0xff,0x24,0x3c,0x6e,0xff,0x2a,0x40,0x71,0xff,0x2e,0x43,
- 0x72,0xff,0x2a,0x3f,0x6f,0xff,0x32,0x43,0x6e,0xff,0x3c,0x4a,0x6f,0xff,0x2e,
- 0x44,0x73,0xff,0x2c,0x43,0x75,0xff,0x25,0x3d,0x72,0xff,0x1e,0x37,0x6f,0xff,
- 0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,
- 0xff,0x82,0x21,0x3a,0x73,0xff,0x10,0x22,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,
- 0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x77,
- 0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,
- 0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,
- 0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,
- 0xff,0x05,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x82,0xff,0x2d,
- 0x49,0x83,0xff,0x2e,0x49,0x83,0xff,0x83,0x2e,0x49,0x84,0xff,0x15,0x2e,0x48,
- 0x83,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,
- 0x4a,0x85,0xff,0x32,0x4d,0x88,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,
- 0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,
- 0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,
- 0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x82,0x3c,0x58,0x96,0xff,0x01,0x3d,0x59,
- 0x97,0xff,0x83,0x3e,0x5a,0x98,0xff,0x84,0x3e,0x59,0x98,0xff,0x01,0x3f,0x59,
- 0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,0x01,0x40,0x5b,0x9a,0xff,0x82,0x41,0x5c,
- 0x9b,0xff,0x02,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x82,0x43,0x5e,0x9e,
- 0xff,0x09,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x82,0x48,0x65,0xa6,0xff,0x07,0x49,
- 0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,
- 0x4b,0x68,0xaa,0xff,0x4c,0x69,0xaa,0xff,0x4c,0x69,0xab,0xff,0x85,0x4d,0x6a,
- 0xac,0xff,0x82,0x4e,0x6b,0xad,0xff,0x82,0x4f,0x6c,0xae,0xff,0x2b,0x50,0x6d,
- 0xaf,0xff,0x51,0x6e,0xb0,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x13,
- 0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2e,0x63,0xff,0x16,0x2f,0x66,0xff,
- 0x16,0x30,0x66,0xff,0x1a,0x32,0x68,0xff,0x30,0x44,0x70,0xff,0x3d,0x4e,0x72,
- 0xff,0x3a,0x4b,0x72,0xff,0x34,0x47,0x72,0xff,0x2f,0x43,0x70,0xff,0x39,0x4c,
- 0x73,0xff,0x3b,0x4d,0x72,0xff,0x3a,0x4d,0x75,0xff,0x2d,0x42,0x70,0xff,0x1e,
- 0x36,0x6f,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,
- 0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x74,
- 0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,
- 0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,
- 0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7b,0xff,
- 0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,
- 0xff,0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x05,0x2c,0x46,0x81,0xff,
- 0x2c,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,
- 0xff,0x83,0x2f,0x4a,0x85,0xff,0x01,0x2f,0x49,0x85,0xff,0x82,0x2e,0x48,0x83,
- 0xff,0x0b,0x2f,0x48,0x84,0xff,0x30,0x4a,0x86,0xff,0x32,0x4d,0x89,0xff,0x34,
- 0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,
- 0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,
- 0xff,0x82,0x38,0x54,0x91,0xff,0x01,0x39,0x55,0x92,0xff,0x82,0x3a,0x56,0x93,
- 0xff,0x01,0x3b,0x57,0x94,0xff,0x82,0x3b,0x57,0x95,0xff,0x04,0x3c,0x57,0x95,
- 0xff,0x3c,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x56,0x95,0xff,0x82,0x3c,
- 0x57,0x95,0xff,0x05,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,
- 0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x05,
- 0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,
- 0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x02,0x45,0x60,0xa0,0xff,
- 0x45,0x61,0xa1,0xff,0x82,0x46,0x62,0xa2,0xff,0x0b,0x46,0x62,0xa3,0xff,0x46,
- 0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,
- 0x49,0x65,0xa7,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4a,0x67,0xa9,
- 0xff,0x4b,0x68,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x82,0x4c,0x69,0xab,0xff,0x03,
- 0x4d,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x82,0x50,0x6d,
- 0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x83,0x52,0x6f,0xb1,0xff,0x12,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,
- 0x2c,0x60,0xff,0x15,0x2d,0x63,0xff,0x16,0x2f,0x65,0xff,0x17,0x31,0x67,0xff,
- 0x20,0x37,0x6a,0xff,0x25,0x3b,0x6b,0xff,0x23,0x3a,0x6b,0xff,0x22,0x39,0x6c,
- 0xff,0x1f,0x37,0x6b,0xff,0x24,0x3b,0x6d,0xff,0x26,0x3c,0x6c,0xff,0x26,0x3d,
- 0x6e,0xff,0x22,0x3a,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x82,0x1e,0x37,0x6f,0xff,
- 0x05,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x20,0x3a,
- 0x72,0xff,0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,0xff,0x21,0x23,0x3c,0x75,
- 0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,
- 0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,
- 0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,
- 0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,
- 0x83,0xff,0x2e,0x49,0x83,0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,
- 0x4b,0x86,0xff,0x30,0x4b,0x86,0xff,0x2f,0x4a,0x85,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x31,0x4a,0x86,0xff,0x33,0x4e,0x8a,
- 0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,0xff,0x05,
- 0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x83,0x39,0x55,0x92,0xff,0x01,0x3a,0x55,0x92,0xff,
- 0x82,0x39,0x54,0x92,0xff,0x82,0x3a,0x54,0x92,0xff,0x0a,0x3a,0x54,0x93,0xff,
- 0x3b,0x55,0x94,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x95,
- 0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x08,0x41,0x5c,0x9b,
- 0xff,0x42,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,0xff,0x44,0x60,
- 0x9f,0xff,0x45,0x61,0xa1,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x83,
- 0x48,0x65,0xa5,0xff,0x02,0x48,0x64,0xa5,0xff,0x48,0x65,0xa5,0xff,0x83,0x48,
- 0x65,0xa6,0xff,0x08,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,
- 0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xac,0xff,0x4e,0x6b,
- 0xad,0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x87,0x52,0x6f,0xb1,
- 0xff,0x18,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x12,0x29,0x5d,0xff,0x13,
- 0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x61,0xff,0x15,0x2d,0x62,0xff,
- 0x15,0x2e,0x64,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x68,
- 0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,0x1d,
- 0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x10,0x22,
- 0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x09,0x2c,0x46,0x81,0xff,0x2c,0x47,
- 0x82,0xff,0x2d,0x48,0x82,0xff,0x2d,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,
- 0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4b,0x87,0xff,
- 0x82,0x2e,0x48,0x83,0xff,0x04,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x31,
- 0x4c,0x88,0xff,0x33,0x4f,0x8b,0xff,0x82,0x34,0x50,0x8c,0xff,0x03,0x35,0x51,
- 0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x82,0x37,0x53,0x8f,0xff,
- 0x01,0x37,0x53,0x90,0xff,0x83,0x37,0x52,0x8f,0xff,0x0e,0x38,0x52,0x8f,0xff,
- 0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x53,0x91,
- 0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3c,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,
- 0x59,0x97,0xff,0x3e,0x59,0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,0x0c,0x40,0x5b,
- 0x9a,0xff,0x41,0x5b,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x43,0x5f,0x9e,0xff,0x44,
- 0x60,0xa0,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,
- 0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x66,0xa7,
- 0xff,0x82,0x4a,0x67,0xa7,0xff,0x01,0x4b,0x67,0xa8,0xff,0x82,0x4b,0x68,0xa9,
- 0xff,0x08,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,
- 0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,
- 0x51,0x6e,0xb0,0xff,0x89,0x52,0x6f,0xb1,0xff,0x03,0x01,0x02,0x03,0xff,0x00,
- 0x01,0x02,0xff,0x12,0x29,0x5d,0xff,0x82,0x13,0x2a,0x5e,0xff,0x26,0x14,0x2b,
- 0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2e,0x62,0xff,0x16,
- 0x2e,0x64,0xff,0x17,0x30,0x66,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,
- 0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,
- 0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6e,0xff,0x1d,0x36,0x6f,0xff,0x1e,0x37,
- 0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,
- 0x23,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,
- 0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,
- 0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x82,0x2b,0x45,0x80,0xff,0x05,0x2c,0x46,0x81,0xff,0x2c,0x48,0x82,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x82,0x2f,0x4a,0x85,
- 0xff,0x0a,0x30,0x4b,0x86,0xff,0x2f,0x49,0x84,0xff,0x2e,0x47,0x82,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x32,0x4e,0x89,0xff,
- 0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x50,0x8c,0xff,0x82,0x35,0x50,
- 0x8d,0xff,0x1d,0x35,0x4f,0x8c,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x35,0x50,0x8d,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,
- 0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,
- 0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,
- 0x55,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,
- 0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5f,0x9f,0xff,0x44,0x61,
- 0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,
- 0x48,0x64,0xa4,0xff,0x0f,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,
- 0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,
- 0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,
- 0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xae,
- 0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x88,0x52,0x6f,0xb1,0xff,
- 0x02,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x82,0x12,0x29,0x5d,0xff,0x10,
- 0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,
- 0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,
- 0x64,0xff,0x17,0x30,0x65,0xff,0x18,0x30,0x67,0xff,0x19,0x32,0x68,0xff,0x1a,
- 0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1c,0x35,0x6d,0xff,
- 0x1d,0x36,0x6e,0xff,0x82,0x1e,0x37,0x6f,0xff,0x05,0x1f,0x38,0x70,0xff,0x1f,
- 0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,
- 0x82,0x22,0x3b,0x74,0xff,0x14,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,
- 0x3d,0x77,0xff,0x25,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,
- 0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,
- 0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,
- 0x7f,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,
- 0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x82,0x2e,0x49,0x84,
- 0xff,0x0a,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,0x2f,0x49,0x84,0xff,0x2e,
- 0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,
- 0x31,0x4c,0x87,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x83,0x33,0x4d,
- 0x89,0xff,0x05,0x33,0x4d,0x8a,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,
- 0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x29,0x37,
- 0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,
- 0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x54,0x93,0xff,0x3b,0x55,0x93,
- 0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,
- 0x96,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5d,0x9c,0xff,0x42,
- 0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa3,
- 0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,
- 0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,
- 0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,
- 0x4e,0x6b,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,
- 0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x86,0x52,
- 0x6f,0xb1,0xff,0x82,0x51,0x6e,0xb0,0xff,0x02,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x82,0x12,0x29,0x5d,0xff,0x16,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5e,
- 0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,0x2c,
- 0x61,0xff,0x18,0x2f,0x62,0xff,0x26,0x3a,0x67,0xff,0x34,0x48,0x72,0xff,0x23,
- 0x39,0x68,0xff,0x18,0x30,0x66,0xff,0x18,0x31,0x66,0xff,0x19,0x32,0x67,0xff,
- 0x1a,0x32,0x68,0xff,0x1b,0x33,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,
- 0x71,0xff,0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x10,0x22,0x3b,0x74,
- 0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3d,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x82,0x2b,0x45,0x80,0xff,0x2b,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,
- 0x2d,0x48,0x82,0xff,0x2d,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x84,
- 0xff,0x2f,0x4a,0x85,0xff,0x2e,0x49,0x84,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,
- 0x4a,0x86,0xff,0x30,0x4b,0x87,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,
- 0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,
- 0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3d,0x58,0x96,
- 0xff,0x3e,0x59,0x98,0xff,0x40,0x5c,0x9a,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,
- 0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x82,
- 0x44,0x61,0xa0,0xff,0x0d,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,
- 0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,
- 0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x82,0x4d,0x6a,
- 0xab,0xff,0x02,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x82,0x4f,0x6c,0xad,
- 0xff,0x83,0x4f,0x6c,0xae,0xff,0x01,0x50,0x6d,0xaf,0xff,0x82,0x4f,0x6c,0xae,
- 0xff,0x84,0x4e,0x6b,0xad,0xff,0x2d,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x13,0x2b,0x60,0xff,0x12,0x2a,0x5e,0xff,0x12,0x29,0x5d,0xff,0x13,0x2a,0x5e,
- 0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x19,0x2f,
- 0x62,0xff,0x3d,0x4d,0x6f,0xff,0x87,0x8d,0x99,0xff,0xa7,0xae,0xb8,0xff,0x72,
- 0x7c,0x91,0xff,0x21,0x36,0x65,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x19,0x31,0x66,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x69,0xff,0x1b,0x33,0x69,
- 0xff,0x1c,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,
- 0x3b,0x74,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,
- 0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,
- 0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,
- 0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x04,0x2c,0x46,
- 0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x83,0xff,0x82,
- 0x2e,0x49,0x84,0xff,0x23,0x2d,0x48,0x83,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,
- 0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,
- 0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,
- 0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3d,0x58,0x96,0xff,0x3e,0x5b,0x99,
- 0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,
- 0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,
- 0x05,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,0xa4,0xff,0x06,0x49,0x65,0xa5,
- 0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,
- 0xa8,0xff,0x4b,0x68,0xa9,0xff,0x84,0x4c,0x68,0xa9,0xff,0x82,0x4b,0x68,0xa9,
- 0xff,0x02,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xaa,0xff,0x82,0x4c,0x69,0xab,0xff,
- 0x87,0x4d,0x6a,0xac,0xff,0x19,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x13,
- 0x2c,0x62,0xff,0x13,0x2c,0x61,0xff,0x13,0x2b,0x5f,0xff,0x12,0x2a,0x5e,0xff,
- 0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x17,0x2f,0x61,
- 0xff,0x3d,0x50,0x74,0xff,0xa0,0xab,0xb7,0xff,0x9e,0xa8,0xb1,0xff,0x78,0x85,
- 0x96,0xff,0x1d,0x32,0x60,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,
- 0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,
- 0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x82,0x1d,0x36,0x6d,0xff,0x11,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x70,0xff,
- 0x20,0x39,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x76,
- 0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,
- 0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,
- 0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,
- 0x82,0x2a,0x44,0x7f,0xff,0x02,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x83,
- 0x2c,0x47,0x81,0xff,0x82,0x2c,0x46,0x80,0xff,0x0b,0x2c,0x45,0x80,0xff,0x2c,
- 0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,
- 0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x05,
- 0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8b,
- 0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x18,0x37,0x51,0x8e,0xff,
- 0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x56,0x93,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,
- 0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,
- 0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,
- 0xa4,0xff,0x82,0x49,0x65,0xa5,0xff,0x82,0x49,0x66,0xa6,0xff,0x03,0x49,0x65,
- 0xa6,0xff,0x48,0x65,0xa5,0xff,0x48,0x64,0xa5,0xff,0x82,0x48,0x65,0xa6,0xff,
- 0x08,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x49,0x66,0xa8,0xff,0x4a,0x67,
- 0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xaa,0xff,0x4c,
- 0x69,0xab,0xff,0x86,0x4d,0x6a,0xac,0xff,0x02,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x83,0x13,0x2c,0x62,0xff,0x28,0x13,0x2c,0x61,0xff,0x13,0x2b,0x60,
- 0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x15,0x2c,0x60,0xff,0x35,0x47,
- 0x70,0xff,0xbe,0xc0,0xc3,0xff,0xa1,0xa4,0xa6,0xff,0x7e,0x85,0x92,0xff,0x17,
- 0x2e,0x61,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,
- 0x19,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1e,
- 0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,
- 0x21,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x76,0xff,0x25,0x3e,0x77,
- 0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,
- 0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x83,0x2a,0x44,0x7f,0xff,0x83,0x2a,0x44,0x7e,0xff,0x02,0x2a,
- 0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x28,0x2d,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,
- 0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,
- 0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,
- 0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,
- 0x53,0x90,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,
- 0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9b,0xff,0x40,0x5d,
- 0x9c,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x63,0xa2,0xff,0x82,0x46,0x63,0xa3,0xff,0x85,0x46,
- 0x62,0xa2,0xff,0x04,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x63,0xa4,
- 0xff,0x47,0x64,0xa5,0xff,0x82,0x48,0x65,0xa6,0xff,0x05,0x49,0x66,0xa7,0xff,
- 0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4b,0x68,0xaa,
- 0xff,0x82,0x4c,0x69,0xab,0xff,0x02,0x4d,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,
- 0x83,0x4f,0x6c,0xae,0xff,0x02,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x85,
- 0x13,0x2c,0x62,0xff,0x01,0x14,0x2d,0x62,0xff,0x82,0x14,0x2c,0x61,0xff,0x21,
- 0x24,0x39,0x68,0xff,0x7a,0x81,0x92,0xff,0x7f,0x83,0x8c,0xff,0x4d,0x5a,0x75,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,
- 0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x1b,0x32,0x69,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,
- 0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,
- 0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,0x22,
- 0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x25,0x3e,0x77,0xff,
- 0x25,0x3f,0x78,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x82,0x28,0x42,
- 0x7c,0xff,0x2f,0x28,0x42,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7b,0xff,
- 0x28,0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,
- 0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,
- 0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,
- 0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4f,
- 0x8b,0xff,0x36,0x51,0x8d,0xff,0x38,0x53,0x90,0xff,0x39,0x55,0x92,0xff,0x3a,
- 0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,
- 0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,
- 0xff,0x3e,0x5a,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,
- 0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,0xff,0x82,0x44,0x60,0xa0,
- 0xff,0x01,0x43,0x60,0x9f,0xff,0x82,0x43,0x5f,0x9f,0xff,0x14,0x44,0x5f,0x9f,
- 0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,
- 0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,
- 0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,
- 0x49,0x66,0xa7,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xac,
- 0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6e,0xaf,0xff,0x51,0x6e,
- 0xb0,0xff,0x83,0x52,0x6f,0xb1,0xff,0x02,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x86,0x13,0x2c,0x62,0xff,0x24,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,
- 0x17,0x2f,0x64,0xff,0x20,0x36,0x68,0xff,0x22,0x37,0x67,0xff,0x1c,0x32,0x64,
- 0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,
- 0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,
- 0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,
- 0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,
- 0x70,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,
- 0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,
- 0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,
- 0xff,0x82,0x26,0x40,0x79,0xff,0x03,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,
- 0x28,0x42,0x7b,0xff,0x82,0x29,0x43,0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x0b,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,
- 0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x05,0x33,
- 0x4e,0x8a,0xff,0x35,0x50,0x8d,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x05,0x3a,0x56,0x93,0xff,0x3a,
- 0x57,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,
- 0x82,0x3d,0x59,0x97,0xff,0x06,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,
- 0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,
- 0x82,0x41,0x5e,0x9d,0xff,0x01,0x41,0x5e,0x9c,0xff,0x82,0x41,0x5d,0x9c,0xff,
- 0x17,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,
- 0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,
- 0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x49,0x65,0xa6,0xff,0x4a,0x67,0xa8,
- 0xff,0x4b,0x68,0xa9,0xff,0x4d,0x69,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,
- 0xad,0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,
- 0x6e,0xb0,0xff,0x83,0x52,0x6f,0xb1,0xff,0x03,0x51,0x6e,0xb0,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x86,0x13,0x2c,0x62,0xff,0x07,0x13,0x2c,0x63,
- 0xff,0x18,0x30,0x65,0xff,0x2f,0x44,0x71,0xff,0x3b,0x4c,0x6f,0xff,0x3e,0x50,
- 0x75,0xff,0x41,0x51,0x75,0xff,0x25,0x3a,0x69,0xff,0x83,0x17,0x2f,0x64,0xff,
- 0x17,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,
- 0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,
- 0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,
- 0xff,0x20,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,
- 0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,
- 0x3d,0x75,0xff,0x82,0x24,0x3e,0x76,0xff,0x05,0x25,0x3f,0x77,0xff,0x26,0x3f,
- 0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x82,
- 0x28,0x42,0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,
- 0x0f,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x30,
- 0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x34,0x50,0x8c,0xff,
- 0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,
- 0xff,0x82,0x38,0x54,0x91,0xff,0x11,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,
- 0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9a,0xff,0x3f,
- 0x5b,0x9a,0xff,0x3f,0x5a,0x99,0xff,0x3f,0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,
- 0x82,0x40,0x5b,0x9a,0xff,0x05,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,
- 0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,
- 0xff,0x0f,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x46,0x62,0xa2,0xff,0x47,
- 0x64,0xa4,0xff,0x49,0x66,0xa6,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,
- 0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,
- 0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x82,0x52,0x6f,0xb1,0xff,0x03,0x4e,0x6b,
- 0xad,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x87,0x13,0x2c,0x62,0xff,
- 0x08,0x15,0x2e,0x64,0xff,0x1c,0x34,0x67,0xff,0x25,0x39,0x65,0xff,0x30,0x42,
- 0x6c,0xff,0x29,0x3d,0x68,0xff,0x1d,0x34,0x67,0xff,0x17,0x30,0x67,0xff,0x17,
- 0x31,0x68,0xff,0x83,0x18,0x31,0x67,0xff,0x42,0x19,0x31,0x67,0xff,0x19,0x31,
- 0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,
- 0x3d,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,
- 0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,
- 0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x32,0x4d,0x89,0xff,0x34,0x50,
- 0x8c,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x36,
- 0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,
- 0x39,0x55,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,
- 0x59,0x97,0xff,0x82,0x3d,0x58,0x96,0xff,0x22,0x3e,0x58,0x97,0xff,0x3e,0x59,
- 0x98,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,
- 0x5b,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,
- 0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x46,0x62,0xa2,
- 0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,
- 0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xa9,0xff,0x4d,
- 0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,0xac,0xff,
- 0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,
- 0xff,0x51,0x6e,0xb0,0xff,0x52,0x6f,0xb1,0xff,0x4f,0x6c,0xae,0xff,0x4d,0x6a,
- 0xac,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,0xff,
- 0x0b,0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x17,0x2f,0x65,0xff,0x16,0x30,
- 0x65,0xff,0x16,0x2f,0x66,0xff,0x16,0x30,0x67,0xff,0x17,0x30,0x67,0xff,0x18,
- 0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,
- 0x82,0x1a,0x33,0x6a,0xff,0x82,0x1b,0x33,0x6a,0xff,0x82,0x1b,0x33,0x69,0xff,
- 0x04,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,0x36,
- 0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x16,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,
- 0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,
- 0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,
- 0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x25,0x3f,0x78,0xff,
- 0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,
- 0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x0b,0x2c,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x32,
- 0x4d,0x88,0xff,0x34,0x50,0x8b,0xff,0x34,0x50,0x8c,0xff,0x82,0x35,0x51,0x8d,
- 0xff,0x05,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,
- 0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x04,0x3a,0x56,
- 0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x82,
- 0x3c,0x58,0x96,0xff,0x03,0x3c,0x57,0x95,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,
- 0x94,0xff,0x82,0x3c,0x57,0x95,0xff,0x06,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,
- 0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,
- 0x9a,0xff,0x82,0x41,0x5c,0x9b,0xff,0x16,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9e,
- 0xff,0x45,0x61,0xa1,0xff,0x46,0x63,0xa2,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,
- 0xa5,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,
- 0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,
- 0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4e,0x6b,0xad,
- 0xff,0x4f,0x6c,0xad,0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,
- 0xaf,0xff,0x4f,0x6c,0xae,0xff,0x82,0x4d,0x6a,0xac,0xff,0x02,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,0xff,0x12,0x13,0x2d,0x63,0xff,
- 0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x65,
- 0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,0x31,
- 0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,
- 0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,
- 0x1c,0x36,0x6d,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1c,0x35,0x6c,0xff,0x0d,0x1d,
- 0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,
- 0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,
- 0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,
- 0x74,0xff,0x23,0x3d,0x75,0xff,0x82,0x24,0x3e,0x76,0xff,0x05,0x25,0x3f,0x77,
- 0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x16,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,
- 0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,
- 0x30,0x4a,0x85,0xff,0x31,0x4c,0x88,0xff,0x34,0x4f,0x8b,0xff,0x35,0x50,0x8c,
- 0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,
- 0x8f,0xff,0x37,0x53,0x90,0xff,0x82,0x38,0x54,0x91,0xff,0x11,0x39,0x55,0x92,
- 0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x56,
- 0x94,0xff,0x3a,0x55,0x92,0xff,0x39,0x54,0x92,0xff,0x3a,0x54,0x92,0xff,0x3a,
- 0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,
- 0x3c,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,
- 0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x16,0x41,0x5c,0x9c,0xff,
- 0x43,0x5f,0x9f,0xff,0x45,0x61,0xa0,0xff,0x45,0x63,0xa2,0xff,0x46,0x63,0xa3,
- 0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,
- 0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,
- 0x68,0xa9,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,
- 0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xad,
- 0xff,0x50,0x6d,0xae,0xff,0x4f,0x6c,0xae,0xff,0x82,0x4c,0x69,0xab,0xff,0x03,
- 0x4d,0x6a,0xac,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x89,0x13,0x2c,
- 0x62,0xff,0x11,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,0x64,0xff,
- 0x15,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x16,0x30,0x66,0xff,0x17,0x30,0x67,
- 0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,
- 0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,
- 0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,0x1c,0x35,0x6c,0xff,0x82,0x1c,0x34,0x6b,
- 0xff,0x27,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,
- 0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,
- 0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,
- 0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,
- 0x40,0x79,0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x29,0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,
- 0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,
- 0x31,0x4c,0x88,0xff,0x33,0x4f,0x8b,0xff,0x82,0x35,0x51,0x8d,0xff,0x2b,0x36,
- 0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x54,0x91,
- 0xff,0x38,0x53,0x90,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,
- 0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,
- 0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,
- 0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,0xff,0x40,0x5b,0x99,
- 0xff,0x41,0x5d,0x9c,0xff,0x43,0x5f,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,
- 0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,
- 0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,
- 0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,
- 0xac,0xff,0x4e,0x6b,0xac,0xff,0x82,0x4f,0x6c,0xad,0xff,0x06,0x4c,0x69,0xaa,
- 0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x4d,0x6a,0xac,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x8a,0x13,0x2c,0x62,0xff,0x0d,0x14,0x2d,0x63,
- 0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x15,0x2f,0x65,0xff,0x16,0x2f,
- 0x66,0xff,0x16,0x30,0x67,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6a,0xff,
- 0x1a,0x32,0x69,0xff,0x82,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x04,
- 0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x82,0x1e,0x37,0x6e,0xff,0x12,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,
- 0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,
- 0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,
- 0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,
- 0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,
- 0x28,0x42,0x7b,0xff,0x82,0x29,0x43,0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x01,0x2c,0x45,0x80,0xff,0x82,0x2d,
- 0x46,0x81,0xff,0x08,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x83,
- 0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x33,0x4e,0x8a,0xff,0x82,0x35,0x51,0x8d,0xff,0x32,0x36,0x52,0x8e,
- 0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x37,0x52,
- 0x8f,0xff,0x37,0x51,0x8e,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,
- 0x52,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,
- 0x3a,0x54,0x92,0xff,0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,
- 0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,
- 0x97,0xff,0x3f,0x5b,0x99,0xff,0x41,0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x43,
- 0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,
- 0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,
- 0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,
- 0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,
- 0x4f,0x6b,0xad,0xff,0x4b,0x68,0xaa,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,
- 0xff,0x4c,0x69,0xaa,0xff,0x4c,0x69,0xab,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x8a,0x13,0x2c,0x62,0xff,0x0a,0x13,0x2c,0x63,0xff,0x14,0x2d,0x63,
- 0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x65,0xff,0x16,0x2f,
- 0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x67,0xff,0x18,0x30,0x67,0xff,0x18,
- 0x30,0x66,0xff,0x82,0x18,0x30,0x65,0xff,0x05,0x19,0x31,0x66,0xff,0x19,0x31,
- 0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x82,
- 0x1b,0x34,0x6a,0xff,0x04,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x37,
- 0x6d,0xff,0x1e,0x37,0x6e,0xff,0x82,0x1f,0x38,0x6f,0xff,0x0f,0x20,0x39,0x70,
- 0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,
- 0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,
- 0x3e,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,
- 0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,
- 0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,
- 0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x0e,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x33,0x4e,0x8a,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,
- 0x8e,0xff,0x36,0x52,0x8e,0xff,0x36,0x50,0x8d,0xff,0x83,0x35,0x4f,0x8c,0xff,
- 0x01,0x36,0x50,0x8d,0xff,0x82,0x37,0x51,0x8e,0xff,0x0e,0x38,0x52,0x8f,0xff,
- 0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,
- 0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,
- 0x95,0xff,0x3e,0x58,0x96,0xff,0x3f,0x5b,0x99,0xff,0x41,0x5d,0x9c,0xff,0x42,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,0x0c,0x44,0x61,
- 0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x63,0xa2,0xff,0x46,
- 0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x49,0x66,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,
- 0xff,0x82,0x4c,0x68,0xa9,0xff,0x0b,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,
- 0x4e,0x6a,0xab,0xff,0x4c,0x69,0xaa,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,
- 0xff,0x4b,0x68,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x8b,0x13,0x2c,0x62,0xff,0x02,0x14,0x2d,0x63,
- 0xff,0x14,0x2d,0x64,0xff,0x82,0x15,0x2e,0x64,0xff,0x0b,0x15,0x2e,0x63,0xff,
- 0x16,0x2e,0x63,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,
- 0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,
- 0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,
- 0x30,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,
- 0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,
- 0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,
- 0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x74,
- 0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,
- 0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,0x27,
- 0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,
- 0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,
- 0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,
- 0x50,0x8d,0xff,0x22,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,
- 0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,
- 0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3d,0x58,0x96,0xff,0x3f,
- 0x5b,0x99,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,
- 0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,
- 0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,
- 0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,
- 0xff,0x4c,0x69,0xaa,0xff,0x82,0x49,0x66,0xa7,0xff,0x06,0x4a,0x67,0xa8,0xff,
- 0x4a,0x67,0xa9,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xaa,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x8b,0x13,0x2c,0x62,0xff,0x82,0x13,0x2c,0x61,0xff,
- 0x82,0x14,0x2b,0x60,0xff,0x0c,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,
- 0x2d,0x62,0xff,0x16,0x2e,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,
- 0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,
- 0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x1c,
- 0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,
- 0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,
- 0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,
- 0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x01,0x2c,0x45,
- 0x80,0xff,0x82,0x2d,0x46,0x81,0xff,0x0f,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x32,
- 0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,
- 0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x18,0x37,
- 0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x38,0x53,0x90,0xff,
- 0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x56,0x93,0xff,0x3c,0x58,0x95,
- 0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9a,0xff,0x40,0x5d,
- 0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa3,
- 0xff,0x48,0x64,0xa4,0xff,0x82,0x49,0x65,0xa5,0xff,0x04,0x4a,0x66,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x82,0x4c,0x68,
- 0xa9,0xff,0x82,0x48,0x65,0xa6,0xff,0x07,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,
- 0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x87,0x13,0x2c,0x62,0xff,0x2d,0x13,0x2c,0x61,
- 0xff,0x13,0x2b,0x60,0xff,0x12,0x2a,0x5f,0xff,0x12,0x29,0x5e,0xff,0x12,0x29,
- 0x5d,0xff,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,
- 0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,
- 0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,
- 0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,
- 0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1e,0x36,0x6d,0xff,
- 0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,
- 0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,
- 0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,
- 0x3e,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,
- 0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,
- 0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x0f,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,
- 0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x82,
- 0x35,0x4f,0x8c,0xff,0x01,0x36,0x50,0x8d,0xff,0x82,0x37,0x51,0x8e,0xff,0x0e,
- 0x38,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x55,0x92,
- 0xff,0x3c,0x57,0x95,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,
- 0xff,0x05,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,0xa4,0xff,0x10,0x49,0x65,
- 0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,
- 0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x48,0x65,0xa6,0xff,0x48,0x64,0xa5,0xff,
- 0x48,0x65,0xa6,0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,
- 0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xa9,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x84,0x13,0x2c,0x62,0xff,0x03,0x13,0x2c,0x61,0xff,0x13,0x2b,0x60,
- 0xff,0x12,0x2a,0x5f,0xff,0x86,0x12,0x29,0x5d,0xff,0x21,0x13,0x2a,0x5e,0xff,
- 0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,
- 0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2e,
- 0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,
- 0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,
- 0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,
- 0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,
- 0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,
- 0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x82,0x25,0x3e,0x77,0xff,0x17,0x25,
- 0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x42,0x7c,0xff,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x82,0x32,0x4c,0x88,0xff,0x05,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,
- 0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,
- 0x8d,0xff,0x11,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,
- 0x39,0x54,0x91,0xff,0x3b,0x57,0x94,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,
- 0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,
- 0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x82,0x44,0x61,0xa0,
- 0xff,0x15,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,
- 0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa5,0xff,
- 0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4a,0x67,0xa7,0xff,0x48,0x65,0xa5,
- 0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,
- 0xa6,0xff,0x49,0x65,0xa7,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4a,
- 0x67,0xa9,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x82,0x13,0x2c,0x61,
- 0xff,0x02,0x13,0x2b,0x5f,0xff,0x12,0x2a,0x5f,0xff,0x8a,0x12,0x29,0x5d,0xff,
- 0x05,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,
- 0x60,0xff,0x15,0x2c,0x61,0xff,0x82,0x16,0x2d,0x62,0xff,0x09,0x17,0x2e,0x63,
- 0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x03,0x1c,0x35,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x16,0x1f,0x38,0x6f,
- 0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x24,0x3e,0x77,0xff,0x26,
- 0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x26,0x40,0x7a,0xff,
- 0x26,0x40,0x79,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,
- 0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,
- 0x01,0x2c,0x45,0x80,0xff,0x82,0x2d,0x46,0x81,0xff,0x31,0x2e,0x47,0x82,0xff,
- 0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,
- 0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,
- 0x36,0x50,0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x53,0x90,0xff,0x3a,0x56,0x93,
- 0xff,0x3c,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,
- 0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,
- 0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,
- 0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x49,0x65,0xa5,0xff,0x46,0x62,0xa3,0xff,
- 0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x82,0x48,0x65,
- 0xa6,0xff,0x06,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa8,0xff,
- 0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x12,0x2a,0x5e,0xff,0x8d,0x12,0x29,
- 0x5d,0xff,0x0f,0x12,0x2a,0x5e,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,
- 0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,
- 0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x06,0x1b,0x34,0x6a,0xff,0x1b,0x34,
- 0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x37,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x82,0x1f,0x38,0x6f,0xff,0x0f,0x20,0x39,0x70,0xff,0x20,0x39,
- 0x71,0xff,0x21,0x3a,0x72,0xff,0x23,0x3c,0x75,0xff,0x25,0x3e,0x77,0xff,0x25,
- 0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x27,0x41,0x7b,0xff,0x27,0x40,0x7a,
- 0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x05,
- 0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x0f,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,
- 0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x82,0x35,0x4f,0x8c,
- 0xff,0x11,0x36,0x50,0x8d,0xff,0x38,0x52,0x8f,0xff,0x3a,0x55,0x92,0xff,0x3b,
- 0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,
- 0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,
- 0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,
- 0x05,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,0xa4,0xff,0x0e,0x49,0x65,0xa5,
- 0xff,0x49,0x64,0xa4,0xff,0x46,0x62,0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,
- 0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,
- 0x65,0xa6,0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,
- 0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x8f,0x12,0x29,0x5d,0xff,0x29,0x13,
- 0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,
- 0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,
- 0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,
- 0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x21,0x3a,0x73,0xff,0x23,0x3c,
- 0x75,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,
- 0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7c,0xff,0x28,0x41,0x7b,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x82,0x29,
- 0x43,0x7c,0xff,0x0f,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,
- 0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x1e,0x33,0x4d,0x89,0xff,0x33,
- 0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x37,0x51,0x8e,0xff,0x39,0x54,0x91,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,
- 0x97,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,
- 0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x40,0x5d,0x9c,0xff,
- 0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,
- 0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,
- 0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x82,0x48,0x64,0xa4,0xff,
- 0x09,0x46,0x61,0xa1,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,0x62,
- 0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,
- 0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x82,0x49,0x66,0xa7,0xff,0x02,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x8f,0x12,0x29,0x5d,0xff,0x06,0x12,0x29,0x5e,
- 0xff,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,
- 0x60,0xff,0x15,0x2c,0x61,0xff,0x82,0x16,0x2d,0x62,0xff,0x09,0x17,0x2e,0x63,
- 0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x06,0x1c,0x35,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x20,0x39,0x71,0xff,0x21,
- 0x3a,0x73,0xff,0x82,0x23,0x3c,0x75,0xff,0x13,0x24,0x3d,0x76,0xff,0x24,0x3d,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x28,0x42,0x7b,0xff,0x27,0x41,0x7a,
- 0xff,0x28,0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,
- 0x12,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x34,0x4e,0x8b,0xff,0x36,0x50,0x8d,0xff,0x38,0x53,0x90,0xff,0x82,0x39,
- 0x55,0x92,0xff,0x15,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,
- 0xff,0x3c,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,
- 0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,
- 0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x82,0x46,
- 0x63,0xa3,0xff,0x01,0x46,0x61,0xa1,0xff,0x82,0x45,0x60,0xa0,0xff,0x06,0x45,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x82,0x48,0x65,0xa6,0xff,0x03,0x49,
- 0x66,0xa7,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x90,0x12,0x29,0x5d,
- 0xff,0x04,0x12,0x2a,0x5e,0xff,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,
- 0x2b,0x60,0xff,0x82,0x15,0x2c,0x61,0xff,0x09,0x16,0x2d,0x62,0xff,0x16,0x2e,
- 0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,
- 0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,
- 0x82,0x1b,0x33,0x69,0xff,0x06,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,
- 0x35,0x6c,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x71,0xff,0x21,0x3a,0x73,0xff,
- 0x82,0x22,0x3b,0x74,0xff,0x08,0x23,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,
- 0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,
- 0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x82,0x27,0x41,0x7b,0xff,0x05,0x28,
- 0x41,0x7b,0xff,0x27,0x41,0x7b,0xff,0x27,0x41,0x7a,0xff,0x27,0x41,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,
- 0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,
- 0x82,0x2c,0x45,0x80,0xff,0x0b,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,
- 0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,
- 0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x82,0x33,0x4d,0x89,0xff,0x05,0x35,0x4f,0x8b,0xff,
- 0x37,0x52,0x8f,0xff,0x38,0x54,0x91,0xff,0x39,0x54,0x91,0xff,0x39,0x55,0x92,
- 0xff,0x82,0x3a,0x56,0x93,0xff,0x0e,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,
- 0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,
- 0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,0x05,0x44,0x61,0xa0,0xff,0x44,0x61,
- 0xa1,0xff,0x45,0x62,0xa1,0xff,0x46,0x62,0xa2,0xff,0x45,0x61,0xa1,0xff,0x82,
- 0x44,0x5f,0x9f,0xff,0x0c,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,
- 0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,
- 0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa6,0xff,
- 0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x91,0x12,0x29,0x5d,0xff,0x17,0x13,
- 0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,
- 0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x35,0x6d,0xff,0x1e,0x37,0x6f,0xff,
- 0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,
- 0xff,0x82,0x22,0x3b,0x74,0xff,0x05,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x84,0x26,0x3f,
- 0x79,0xff,0x04,0x25,0x3f,0x78,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,
- 0x26,0x40,0x79,0xff,0x82,0x27,0x41,0x7a,0xff,0x01,0x28,0x42,0x7b,0xff,0x82,
- 0x29,0x43,0x7c,0xff,0x0f,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,
- 0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x05,0x33,0x4e,0x8a,0xff,
- 0x35,0x51,0x8d,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,
- 0xff,0x82,0x39,0x55,0x92,0xff,0x15,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,
- 0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,
- 0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,
- 0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,
- 0x44,0x60,0xa0,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x44,0x61,0xa0,
- 0xff,0x82,0x43,0x5e,0x9e,0xff,0x0d,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,
- 0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,0x62,0xa3,
- 0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x64,
- 0xa5,0xff,0x48,0x65,0xa6,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x91,
- 0x12,0x29,0x5d,0xff,0x06,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2a,
- 0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x82,
- 0x16,0x2d,0x62,0xff,0x11,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,
- 0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x35,0x6d,0xff,0x1e,0x37,0x6f,0xff,
- 0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,
- 0xff,0x20,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x82,0x23,
- 0x3c,0x75,0xff,0x02,0x24,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x83,0x24,0x3e,
- 0x77,0xff,0x47,0x24,0x3d,0x76,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,
- 0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,
- 0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,
- 0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,
- 0x86,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x34,0x4e,0x8a,0xff,0x36,
- 0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x55,0x93,0xff,0x3a,0x56,0x93,
- 0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,
- 0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,
- 0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,
- 0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x60,0x9f,0xff,0x42,0x5e,
- 0x9d,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,
- 0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,0x61,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,
- 0xff,0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x92,0x12,0x29,0x5d,0xff,0x04,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,
- 0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x82,0x15,0x2c,0x61,0xff,0x10,
- 0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,
- 0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x69,0xff,0x1b,0x33,
- 0x6b,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x1e,
- 0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,
- 0x20,0x39,0x72,0xff,0x82,0x21,0x3a,0x73,0xff,0x02,0x22,0x3b,0x74,0xff,0x23,
- 0x3c,0x75,0xff,0x82,0x23,0x3c,0x76,0xff,0x0c,0x23,0x3c,0x75,0xff,0x23,0x3c,
- 0x74,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,
- 0x3e,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,
- 0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,
- 0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x0f,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x33,0x4d,0x89,0xff,0x35,0x50,
- 0x8c,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x82,
- 0x38,0x54,0x91,0xff,0x10,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,
- 0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,
- 0x59,0x97,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,
- 0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,
- 0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x82,0x42,0x5f,0x9e,0xff,0x06,
- 0x43,0x5f,0x9f,0xff,0x42,0x5e,0x9d,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,
- 0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x0a,
- 0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,0x62,0xa2,
- 0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,
- 0xa5,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x93,0x12,0x29,0x5d,0xff,
- 0x16,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,
- 0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2d,0x62,0xff,0x16,
- 0x2e,0x64,0xff,0x17,0x2f,0x65,0xff,0x18,0x30,0x67,0xff,0x19,0x32,0x69,0xff,
- 0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6c,0xff,0x1c,0x35,0x6d,
- 0xff,0x1d,0x36,0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x82,
- 0x21,0x3a,0x73,0xff,0x11,0x21,0x3b,0x74,0xff,0x22,0x3b,0x73,0xff,0x21,0x3b,
- 0x73,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,
- 0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,
- 0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x82,0x29,
- 0x43,0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,
- 0x7f,0xff,0x12,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,
- 0x2e,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x35,0x50,0x8d,0xff,0x37,
- 0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,
- 0x82,0x39,0x55,0x92,0xff,0x11,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,
- 0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,
- 0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,
- 0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,
- 0x9d,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x41,0x5d,0x9c,0xff,0x82,
- 0x41,0x5c,0x9b,0xff,0x0f,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,
- 0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,0x62,0xa2,0xff,
- 0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x93,0x12,0x29,0x5d,0xff,0x15,0x12,0x29,0x5e,0xff,
- 0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,
- 0xff,0x15,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x65,0xff,0x17,0x30,
- 0x67,0xff,0x18,0x31,0x69,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,
- 0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,
- 0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,
- 0xff,0x1f,0x38,0x71,0xff,0x83,0x20,0x39,0x72,0xff,0x01,0x20,0x39,0x71,0xff,
- 0x82,0x20,0x39,0x70,0xff,0x13,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,
- 0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,
- 0x24,0x3d,0x76,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,
- 0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x23,0x2c,0x45,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,
- 0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,
- 0xff,0x33,0x4e,0x8a,0xff,0x36,0x51,0x8d,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,
- 0x55,0x93,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,
- 0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,
- 0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,
- 0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x41,
- 0x5d,0x9c,0xff,0x83,0x40,0x5b,0x9a,0xff,0x0f,0x41,0x5c,0x9b,0xff,0x42,0x5d,
- 0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,
- 0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,0x61,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,
- 0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x94,0x12,0x29,0x5d,0xff,0x13,
- 0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,0x61,
- 0xff,0x15,0x2d,0x63,0xff,0x16,0x2f,0x65,0xff,0x17,0x30,0x67,0xff,0x17,0x31,
- 0x68,0xff,0x18,0x31,0x68,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,
- 0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,
- 0x1c,0x36,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,
- 0xff,0x82,0x1f,0x38,0x70,0xff,0x01,0x1e,0x38,0x6f,0xff,0x82,0x1e,0x37,0x6f,
- 0xff,0x10,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x70,0xff,0x21,
- 0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,
- 0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x05,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x12,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x34,0x4e,0x8a,0xff,0x36,0x51,0x8d,0xff,
- 0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x38,0x55,0x91,
- 0xff,0x39,0x55,0x92,0xff,0x82,0x3a,0x56,0x93,0xff,0x0a,0x3b,0x57,0x94,0xff,
- 0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x97,0xff,0x3d,0x59,0x97,
- 0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5c,0x9b,0xff,0x82,0x40,0x5d,0x9b,0xff,0x83,0x3f,0x5a,0x99,
- 0xff,0x01,0x40,0x5b,0x9a,0xff,0x82,0x41,0x5c,0x9b,0xff,0x03,0x42,0x5d,0x9c,
- 0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x08,
- 0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,0x62,0xa2,
- 0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x94,0x12,0x29,0x5d,0xff,0x10,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,
- 0xff,0x14,0x2c,0x61,0xff,0x14,0x2d,0x63,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,
- 0x66,0xff,0x16,0x30,0x67,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,0xff,
- 0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6c,0xff,0x1c,0x35,0x6d,0xff,0x82,0x1d,0x36,
- 0x6e,0xff,0x02,0x1e,0x36,0x6e,0xff,0x1d,0x36,0x6e,0xff,0x83,0x1d,0x36,0x6d,
- 0xff,0x13,0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,
- 0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x74,0xff,0x24,0x3d,0x75,
- 0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,
- 0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,0x28,
- 0x42,0x7b,0xff,0x82,0x29,0x43,0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,0x44,
- 0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x12,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,
- 0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,
- 0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,
- 0x34,0x4e,0x8b,0xff,0x36,0x51,0x8e,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x0a,0x3a,0x56,0x93,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5b,0x9a,0xff,0x82,0x3f,0x5c,0x9a,0xff,0x04,0x3f,0x5a,0x98,
- 0xff,0x3e,0x59,0x98,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,
- 0x5b,0x9a,0xff,0x0e,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,
- 0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,
- 0xa0,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,
- 0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x93,0x12,0x29,0x5d,0xff,0x13,0x12,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x13,
- 0x2b,0x61,0xff,0x14,0x2d,0x63,0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,
- 0x16,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x67,
- 0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,
- 0x35,0x6d,0xff,0x1c,0x35,0x6c,0xff,0x83,0x1c,0x35,0x6b,0xff,0x04,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x82,
- 0x1f,0x38,0x6f,0xff,0x0e,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,
- 0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,
- 0x25,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,
- 0xff,0x82,0x28,0x42,0x7b,0xff,0x0f,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,
- 0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x4a,0x85,0xff,0x30,0x4a,0x86,0xff,0x82,0x31,0x4b,0x87,0xff,0x11,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4f,0x8b,0xff,0x36,0x51,0x8e,0xff,0x37,
- 0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,
- 0x98,0xff,0x3e,0x5a,0x98,0xff,0x82,0x3f,0x5b,0x99,0xff,0x01,0x3e,0x5a,0x98,
- 0xff,0x82,0x3e,0x58,0x97,0xff,0x12,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,0xff,
- 0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,0x41,0x5c,0x9b,
- 0xff,0x42,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x01,0x02,0x03,0xff,
- 0x00,0x01,0x02,0xff,0x91,0x12,0x29,0x5d,0xff,0x03,0x12,0x2a,0x5e,0xff,0x12,
- 0x2a,0x5f,0xff,0x13,0x2b,0x60,0xff,0x82,0x13,0x2c,0x62,0xff,0x0f,0x13,0x2d,
- 0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,
- 0x2f,0x66,0xff,0x16,0x30,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x68,0xff,
- 0x18,0x32,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,
- 0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6b,0xff,0x1b,0x33,0x6a,0xff,0x82,0x1b,
- 0x33,0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6b,
- 0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x30,
- 0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,
- 0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,
- 0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,
- 0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4f,
- 0x8b,0xff,0x36,0x51,0x8d,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,
- 0x55,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x82,0x3d,0x59,
- 0x97,0xff,0x82,0x3e,0x5a,0x98,0xff,0x01,0x3e,0x59,0x97,0xff,0x82,0x3d,0x57,
- 0x96,0xff,0x06,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3e,0x59,0x98,0xff,
- 0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x82,0x41,0x5c,
- 0x9b,0xff,0x03,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,
- 0x82,0x44,0x5f,0x9f,0xff,0x06,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,
- 0x61,0xa2,0xff,0x45,0x62,0xa2,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x8f,0x12,0x29,0x5d,0xff,0x03,0x12,0x2a,0x5e,0xff,0x12,0x2a,0x5f,0xff,0x13,
- 0x2b,0x60,0xff,0x85,0x13,0x2c,0x62,0xff,0x09,0x14,0x2d,0x63,0xff,0x14,0x2d,
- 0x64,0xff,0x15,0x2e,0x64,0xff,0x15,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x16,
- 0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,
- 0x82,0x19,0x32,0x69,0xff,0x83,0x1a,0x32,0x68,0xff,0x18,0x1b,0x32,0x68,0xff,
- 0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,
- 0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,
- 0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,
- 0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,
- 0x79,0xff,0x82,0x27,0x41,0x7a,0xff,0x01,0x28,0x42,0x7b,0xff,0x82,0x29,0x43,
- 0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,
- 0xff,0x0b,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,
- 0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x82,0x32,0x4c,0x88,0xff,0x17,0x33,0x4d,0x89,0xff,0x34,0x4f,0x8b,0xff,
- 0x36,0x51,0x8d,0xff,0x38,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,
- 0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x57,
- 0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,
- 0x5a,0x97,0xff,0x3d,0x59,0x97,0xff,0x3c,0x57,0x95,0xff,0x3c,0x56,0x95,0xff,
- 0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,
- 0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x05,
- 0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,
- 0xff,0x43,0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x05,0x45,0x60,0xa0,0xff,
- 0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x8d,0x12,0x29,0x5d,0xff,0x03,0x12,0x2a,0x5e,0xff,0x12,0x2a,0x5f,0xff,
- 0x13,0x2b,0x60,0xff,0x87,0x13,0x2c,0x62,0xff,0x08,0x13,0x2c,0x63,0xff,0x14,
- 0x2d,0x63,0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x65,0xff,
- 0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x82,0x18,0x31,
- 0x67,0xff,0x01,0x18,0x31,0x66,0xff,0x82,0x19,0x31,0x66,0xff,0x1b,0x1a,0x31,
- 0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,
- 0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,
- 0x26,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,
- 0xff,0x82,0x28,0x42,0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,
- 0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,
- 0x80,0xff,0x19,0x2d,0x46,0x81,0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,0x82,0xff,
- 0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8b,0xff,0x36,
- 0x51,0x8d,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,0x3c,0x58,0x96,0xff,0x82,0x3b,
- 0x56,0x94,0xff,0x15,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,
- 0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,0x41,
- 0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,0xff,
- 0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa0,
- 0xff,0x45,0x61,0xa1,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x8b,0x12,
- 0x29,0x5d,0xff,0x03,0x12,0x2a,0x5e,0xff,0x12,0x2a,0x5f,0xff,0x13,0x2b,0x60,
- 0xff,0x8a,0x13,0x2c,0x62,0xff,0x04,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,
- 0x15,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x82,0x16,0x2f,0x66,0xff,0x01,0x17,
- 0x2f,0x65,0xff,0x82,0x17,0x2f,0x64,0xff,0x06,0x18,0x2f,0x64,0xff,0x18,0x30,
- 0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1c,0x34,
- 0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,
- 0x1e,0x37,0x6e,0xff,0x31,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,
- 0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,
- 0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x75,0xff,
- 0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,
- 0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x50,0x8c,0xff,
- 0x37,0x52,0x8e,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,
- 0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,
- 0x95,0xff,0x3b,0x56,0x94,0xff,0x82,0x3b,0x55,0x93,0xff,0x07,0x3b,0x56,0x94,
- 0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,
- 0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,
- 0x01,0x40,0x5b,0x9a,0xff,0x82,0x41,0x5c,0x9b,0xff,0x09,0x42,0x5d,0x9c,0xff,
- 0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,
- 0xff,0x44,0x60,0xa0,0xff,0x45,0x60,0xa0,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x89,0x12,0x29,0x5d,0xff,0x04,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,
- 0xff,0x13,0x2b,0x60,0xff,0x13,0x2c,0x61,0xff,0x8c,0x13,0x2c,0x62,0xff,0x02,
- 0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,0x82,0x15,0x2e,0x64,0xff,0x25,0x15,
- 0x2d,0x63,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,
- 0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,
- 0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,
- 0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x39,0x71,
- 0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,
- 0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,
- 0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x82,0x29,0x43,
- 0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,
- 0xff,0x15,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x32,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,
- 0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x51,0x8e,0xff,0x37,
- 0x52,0x8f,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x82,0x3b,0x57,0x94,
- 0xff,0x01,0x3a,0x55,0x93,0xff,0x82,0x3a,0x54,0x92,0xff,0x0a,0x3a,0x55,0x93,
- 0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,
- 0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x05,0x41,0x5c,
- 0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,
- 0x5e,0x9e,0xff,0x82,0x44,0x5f,0x9f,0xff,0x03,0x45,0x60,0xa0,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x87,0x12,0x29,0x5d,0xff,0x04,0x12,0x29,0x5e,
- 0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x60,0xff,0x13,0x2c,0x61,0xff,0x90,0x13,
- 0x2c,0x62,0xff,0x82,0x14,0x2c,0x61,0xff,0x24,0x15,0x2c,0x61,0xff,0x15,0x2d,
- 0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x18,
- 0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,
- 0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x69,0xff,0x1b,0x33,0x69,
- 0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,
- 0xff,0x23,0x3d,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,
- 0x77,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x27,0x40,0x79,0xff,0x27,
- 0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x05,0x29,0x43,0x7c,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,
- 0x2c,0x45,0x80,0xff,0x13,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x52,
- 0x8e,0xff,0x38,0x53,0x90,0xff,0x82,0x39,0x55,0x92,0xff,0x19,0x39,0x54,0x91,
- 0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,
- 0x93,0xff,0x3b,0x55,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,
- 0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,
- 0x3f,0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x01,
- 0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x85,0x12,0x29,0x5d,0xff,0x04,0x12,0x29,
- 0x5e,0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x60,0xff,0x13,0x2c,0x61,0xff,0x8f,
- 0x13,0x2c,0x62,0xff,0x11,0x13,0x2c,0x61,0xff,0x12,0x2b,0x60,0xff,0x13,0x2a,
- 0x5f,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,
- 0x33,0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x29,
- 0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x71,
- 0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,
- 0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,
- 0x3f,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x42,0x7c,0xff,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,
- 0x8a,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,
- 0x36,0x50,0x8d,0xff,0x05,0x37,0x52,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x52,
- 0x90,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x82,0x3a,0x54,0x92,0xff,
- 0x14,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,
- 0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,
- 0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,
- 0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x83,0x12,0x29,0x5d,0xff,0x04,0x12,0x29,0x5e,
- 0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x60,0xff,0x13,0x2c,0x61,0xff,0x90,0x13,
- 0x2c,0x62,0xff,0x02,0x12,0x2b,0x60,0xff,0x12,0x2a,0x5e,0xff,0x82,0x12,0x29,
- 0x5d,0xff,0x03,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,
- 0x82,0x15,0x2c,0x61,0xff,0x0b,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,
- 0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,
- 0x19,0x31,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x17,0x1c,0x35,0x6b,0xff,
- 0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,
- 0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x39,
- 0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,
- 0x3c,0x74,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,
- 0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x27,0x40,0x79,
- 0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7d,0xff,0x28,0x42,0x7b,0xff,0x82,0x29,
- 0x43,0x7c,0xff,0x02,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,
- 0x7f,0xff,0x01,0x2c,0x45,0x80,0xff,0x82,0x2d,0x46,0x81,0xff,0x08,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x82,0x32,0x4c,0x88,0xff,0x03,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,
- 0x4e,0x8b,0xff,0x82,0x35,0x4f,0x8c,0xff,0x12,0x36,0x50,0x8d,0xff,0x36,0x51,
- 0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,
- 0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,
- 0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,
- 0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x0d,0x41,0x5c,0x9b,
- 0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x12,
- 0x29,0x5d,0xff,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x60,0xff,
- 0x13,0x2c,0x61,0xff,0x90,0x13,0x2c,0x62,0xff,0x03,0x13,0x2b,0x60,0xff,0x12,
- 0x2a,0x5f,0xff,0x12,0x29,0x5e,0xff,0x83,0x12,0x29,0x5d,0xff,0x0f,0x12,0x29,
- 0x5e,0xff,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,
- 0x17,0x2e,0x64,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,
- 0x33,0x69,0xff,0x1e,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,
- 0xff,0x1c,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,
- 0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,
- 0x22,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,0xff,0x27,0x40,0x79,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x29,0x43,0x7d,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,0x2f,0x2d,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,
- 0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,
- 0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,
- 0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x92,
- 0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,
- 0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,
- 0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,
- 0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x61,0xff,0x13,
- 0x2c,0x61,0xff,0x90,0x13,0x2c,0x62,0xff,0x03,0x13,0x2b,0x61,0xff,0x12,0x2a,
- 0x5f,0xff,0x12,0x29,0x5e,0xff,0x86,0x12,0x29,0x5d,0xff,0x05,0x13,0x2a,0x5e,
- 0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,
- 0x61,0xff,0x82,0x16,0x2d,0x62,0xff,0x08,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,
- 0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,
- 0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,
- 0x05,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x29,0x1f,0x38,0x6f,
- 0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,
- 0x3d,0x75,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x78,0xff,
- 0x28,0x41,0x7b,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x43,0x7e,
- 0xff,0x29,0x43,0x7c,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,
- 0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,
- 0x88,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,
- 0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,
- 0xff,0x1a,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x8f,0xff,0x39,
- 0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x92,0xff,
- 0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,
- 0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,
- 0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,
- 0x43,0x5e,0x9e,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x13,0x2c,0x61,
- 0xff,0x90,0x13,0x2c,0x62,0xff,0x03,0x13,0x2c,0x61,0xff,0x12,0x2a,0x60,0xff,
- 0x12,0x2a,0x5e,0xff,0x88,0x12,0x29,0x5d,0xff,0x04,0x12,0x29,0x5e,0xff,0x13,
- 0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x82,0x15,0x2c,0x61,
- 0xff,0x0b,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x17,
- 0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,
- 0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,
- 0xff,0x82,0x1b,0x34,0x6a,0xff,0x05,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6c,0xff,0x1e,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x82,0x1f,0x38,
- 0x6f,0xff,0x14,0x20,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,
- 0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x74,
- 0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x26,0x40,0x7a,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x29,
- 0x43,0x7e,0xff,0x29,0x43,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,
- 0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x01,0x2c,
- 0x45,0x80,0xff,0x82,0x2d,0x46,0x81,0xff,0x08,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,
- 0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,
- 0xff,0x03,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x82,
- 0x35,0x4f,0x8c,0xff,0x12,0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,0x51,
- 0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x39,
- 0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,
- 0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x95,0xff,0x3d,0x58,0x96,
- 0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,
- 0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x06,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,
- 0xff,0x42,0x5d,0x9d,0xff,0x42,0x5e,0x9d,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x90,0x13,0x2c,0x62,0xff,0x02,0x12,0x2b,0x60,0xff,0x12,0x2a,0x5e,
- 0xff,0x8b,0x12,0x29,0x5d,0xff,0x0f,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,
- 0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,
- 0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x17,0x2f,
- 0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,
- 0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x1e,0x1b,0x34,
- 0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,
- 0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,
- 0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,
- 0x75,0xff,0x25,0x3f,0x78,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,
- 0x29,0x43,0x7e,0xff,0x29,0x43,0x7c,0xff,0x29,0x42,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,
- 0x45,0x80,0xff,0x21,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,
- 0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x49,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,
- 0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,
- 0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,
- 0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,
- 0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,
- 0xff,0x82,0x3f,0x5a,0x99,0xff,0x07,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,
- 0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x8e,0x13,0x2c,0x62,0xff,0x03,0x13,0x2b,0x60,0xff,
- 0x12,0x2a,0x5f,0xff,0x12,0x29,0x5e,0xff,0x8d,0x12,0x29,0x5d,0xff,0x05,0x13,
- 0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x82,0x16,0x2d,0x62,0xff,0x08,0x17,0x2e,0x63,0xff,0x17,
- 0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,
- 0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x11,0x1f,
- 0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x73,0xff,0x24,0x3e,0x76,
- 0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x2a,0x43,0x7e,0xff,0x82,0x29,0x43,0x7c,0xff,0x16,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,
- 0x2e,0x47,0x83,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x32,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,
- 0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,
- 0xff,0x17,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,
- 0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x92,0xff,
- 0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,
- 0xff,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,
- 0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x01,0x02,0x03,0xff,
- 0x00,0x01,0x02,0xff,0x8c,0x13,0x2c,0x62,0xff,0x03,0x13,0x2b,0x61,0xff,0x12,
- 0x2a,0x5f,0xff,0x12,0x29,0x5e,0xff,0x8f,0x12,0x29,0x5d,0xff,0x11,0x12,0x2a,
- 0x5e,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,
- 0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,
- 0xff,0x19,0x31,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,
- 0x68,0xff,0x1b,0x33,0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x05,0x1c,0x35,0x6b,
- 0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1d,0x37,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x82,0x1f,0x38,0x6f,0xff,0x10,0x20,0x39,0x70,0xff,0x20,0x39,0x71,
- 0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x23,0x3c,0x75,0xff,0x25,0x3f,
- 0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,
- 0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,
- 0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2a,0x44,0x7e,0xff,0x82,0x29,0x43,
- 0x7c,0xff,0x10,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,
- 0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x82,0x33,0x4d,0x89,0xff,0x02,0x34,0x4e,
- 0x8a,0xff,0x34,0x4e,0x8b,0xff,0x82,0x35,0x4f,0x8c,0xff,0x01,0x36,0x50,0x8d,
- 0xff,0x82,0x37,0x51,0x8e,0xff,0x0f,0x38,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,
- 0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,
- 0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,
- 0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,0x40,0x5b,0x9a,0xff,0x04,0x41,0x5c,
- 0x9b,0xff,0x41,0x5c,0x9c,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x8b,
- 0x13,0x2c,0x62,0xff,0x02,0x12,0x2a,0x5f,0xff,0x12,0x29,0x5e,0xff,0x92,0x12,
- 0x29,0x5d,0xff,0x0f,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,
- 0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,
- 0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,
- 0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x31,0x67,0xff,
- 0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x1e,0x1b,0x34,0x6a,0xff,0x1b,
- 0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,
- 0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x38,0x70,
- 0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x22,0x3b,0x73,0xff,0x24,0x3e,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,
- 0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,
- 0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x2a,0x44,0x7e,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x82,0x2c,0x45,0x80,0xff,
- 0x09,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,
- 0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x05,0x33,0x4d,
- 0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x35,
- 0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x0f,0x37,0x51,0x8e,0xff,0x37,0x51,
- 0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x39,
- 0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,
- 0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,
- 0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,0x05,
- 0x40,0x5b,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x89,0x13,0x2c,0x62,0xff,0x02,0x12,0x2b,0x60,0xff,
- 0x12,0x2a,0x5e,0xff,0x94,0x12,0x29,0x5d,0xff,0x06,0x12,0x29,0x5e,0xff,0x13,
- 0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x14,0x2c,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x82,0x16,0x2d,0x62,0xff,0x08,0x17,0x2e,0x63,0xff,0x17,
- 0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,
- 0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x82,0x1e,0x37,0x6e,0xff,0x40,0x1f,
- 0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x23,0x3d,0x75,0xff,
- 0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,
- 0x44,0x7f,0xff,0x2b,0x44,0x7f,0xff,0x2a,0x44,0x7f,0xff,0x2a,0x44,0x7e,0xff,
- 0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,
- 0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,
- 0x8d,0xff,0x36,0x50,0x8e,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,
- 0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,
- 0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,
- 0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x99,0xff,0x40,
- 0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x87,0x13,0x2c,0x62,0xff,0x03,0x13,0x2b,0x61,0xff,0x12,0x2a,0x5f,0xff,0x12,
- 0x29,0x5e,0xff,0x96,0x12,0x29,0x5d,0xff,0x11,0x12,0x2a,0x5e,0xff,0x13,0x2a,
- 0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,
- 0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x66,
- 0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x05,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1d,0x36,0x6c,0xff,0x1d,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x82,0x1f,
- 0x38,0x6f,0xff,0x0f,0x22,0x3b,0x73,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,
- 0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x3f,
- 0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,
- 0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,0x01,0x2a,0x45,0x7f,0xff,0x82,
- 0x2a,0x44,0x7e,0xff,0x03,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,
- 0x80,0xff,0x82,0x2d,0x46,0x81,0xff,0x09,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x82,
- 0x33,0x4d,0x89,0xff,0x02,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x82,0x35,
- 0x4f,0x8c,0xff,0x01,0x36,0x50,0x8d,0xff,0x82,0x37,0x51,0x8e,0xff,0x0f,0x38,
- 0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,
- 0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,
- 0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,
- 0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x82,
- 0x40,0x5b,0x9a,0xff,0x02,0x01,0x01,0x03,0xff,0x00,0x01,0x02,0xff,0x85,0x13,
- 0x2c,0x62,0xff,0x03,0x13,0x2c,0x61,0xff,0x12,0x2a,0x5f,0xff,0x12,0x29,0x5e,
- 0xff,0x99,0x12,0x29,0x5d,0xff,0x0f,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,
- 0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,
- 0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,
- 0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,
- 0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x1d,0x1b,0x34,
- 0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x21,0x3a,0x71,0xff,
- 0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,
- 0xff,0x25,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,
- 0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2b,0x46,0x80,
- 0xff,0x2b,0x45,0x7f,0xff,0x2a,0x44,0x7e,0xff,0x82,0x2b,0x45,0x7f,0xff,0x22,
- 0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,
- 0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x88,0xff,0x32,
- 0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,
- 0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,
- 0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x92,0xff,0x3a,0x54,0x92,0xff,0x3a,
- 0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,
- 0xff,0x82,0x3f,0x5a,0x99,0xff,0x03,0x40,0x5b,0x9a,0xff,0x01,0x01,0x03,0xff,
- 0x00,0x01,0x02,0xff,0x84,0x13,0x2c,0x62,0xff,0x02,0x12,0x2a,0x5f,0xff,0x12,
- 0x29,0x5e,0xff,0x9b,0x12,0x29,0x5d,0xff,0x2c,0x12,0x29,0x5e,0xff,0x13,0x2a,
- 0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,
- 0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1f,0x38,0x70,0xff,
- 0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x76,
- 0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,
- 0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,
- 0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,
- 0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x82,0x2c,0x47,0x81,0xff,0x29,0x2b,0x46,0x80,0xff,
- 0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,
- 0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,
- 0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,
- 0xff,0x36,0x50,0x8d,0xff,0x36,0x50,0x8e,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,
- 0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,
- 0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,
- 0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,
- 0x9a,0xff,0x01,0x01,0x03,0xff,0x00,0x01,0x02,0xff,0x82,0x13,0x2c,0x62,0xff,
- 0x02,0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,0xff,0x9e,0x12,0x29,0x5d,0xff,0x11,
- 0x12,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,
- 0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,
- 0x63,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,
- 0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,
- 0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x82,0x1b,0x34,0x6a,0xff,0x05,0x1c,
- 0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1e,0x37,0x6e,0xff,0x21,0x3a,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x82,0x22,0x3b,0x74,0xff,0x0f,0x23,0x3c,0x75,0xff,0x23,
- 0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,
- 0x25,0x3f,0x79,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,
- 0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,
- 0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x82,0x2b,0x45,0x80,0xff,
- 0x11,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x82,0xff,0x2c,0x47,
- 0x81,0xff,0x2c,0x46,0x80,0xff,0x2c,0x45,0x80,0xff,0x2c,0x45,0x81,0xff,0x2d,
- 0x46,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x82,0x33,0x4d,0x89,0xff,0x05,
- 0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x35,0x50,0x8c,
- 0xff,0x36,0x50,0x8d,0xff,0x82,0x37,0x51,0x8e,0xff,0x13,0x38,0x52,0x8f,0xff,
- 0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,
- 0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,
- 0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x01,0x01,0x03,0xff,
- 0x00,0x01,0x02,0xff,0x13,0x2b,0x61,0xff,0x12,0x2a,0x5e,0xff,0xa1,0x12,0x29,
- 0x5d,0xff,0x0f,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,
- 0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,
- 0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x05,0x1b,0x34,0x6a,0xff,0x1b,0x34,
- 0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x72,0xff,0x82,
- 0x21,0x3a,0x73,0xff,0x0f,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,
- 0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x29,0x43,0x7e,0xff,0x82,0x2a,0x44,0x7f,0xff,0x04,0x2b,0x45,0x80,0xff,
- 0x2c,0x46,0x81,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x82,0x2d,0x48,
- 0x83,0xff,0x0b,0x2d,0x47,0x82,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x82,0x32,0x4c,0x88,0xff,0x05,0x33,0x4d,0x89,0xff,0x33,0x4d,0x8a,
- 0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,
- 0x50,0x8d,0xff,0x12,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x8f,
- 0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x92,0xff,0x3a,0x54,
- 0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3c,
- 0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x01,0x01,0x03,0xff,0x00,0x01,0x02,
- 0xff,0xa4,0x12,0x29,0x5d,0xff,0x05,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,
- 0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x82,0x16,0x2d,
- 0x62,0xff,0x3a,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,
- 0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,
- 0x6b,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,
- 0x22,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3d,0x77,
- 0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,
- 0x7a,0xff,0x27,0x40,0x7b,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x28,
- 0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,
- 0xff,0x2d,0x48,0x82,0xff,0x2d,0x49,0x83,0xff,0x2d,0x48,0x83,0xff,0x2c,0x46,
- 0x81,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,
- 0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,
- 0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,
- 0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,
- 0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,
- 0x16,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,
- 0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,
- 0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,
- 0xff,0x01,0x01,0x02,0xff,0x03,0x03,0x03,0xff,0xb4,0xb7,0xbf,0xff,0xbd,0xbf,
- 0xc8,0xff,0xb8,0xbc,0xc3,0xff,0xb6,0xba,0xc2,0xff,0xc5,0xc9,0xd1,0xff,0xa0,
- 0xc9,0xcc,0xd4,0xff,0x82,0xc9,0xcd,0xd4,0xff,0x88,0xc9,0xcd,0xd5,0xff,0x83,
- 0xca,0xcd,0xd5,0xff,0x84,0xca,0xcd,0xd6,0xff,0x01,0xcb,0xce,0xd7,0xff,0x85,
- 0xcb,0xcf,0xd7,0xff,0x89,0xcb,0xcf,0xd8,0xff,0x82,0xcc,0xcf,0xd8,0xff,0x01,
- 0xcc,0xd0,0xd8,0xff,0x83,0xcc,0xd0,0xd9,0xff,0x82,0xcd,0xd1,0xd9,0xff,0x95,
- 0xcd,0xd1,0xda,0xff,0x01,0xcd,0xd1,0xdb,0xff,0x82,0xcd,0xd2,0xdb,0xff,0x02,
- 0xce,0xd2,0xdb,0xff,0xce,0xd2,0xdc,0xff,0x82,0xcf,0xd2,0xdc,0xff,0x0d,0x8f,
- 0x98,0xac,0xff,0x6f,0x7b,0x96,0xff,0x6b,0x78,0x94,0xff,0x8f,0x97,0xa8,0xff,
- 0xa0,0xa5,0xaf,0xff,0xa2,0xa6,0xaf,0xff,0xa6,0xaa,0xb3,0xff,0xa3,0xa7,0xb0,
- 0xff,0xa2,0xa6,0xaf,0xff,0xa7,0xab,0xb4,0xff,0xa3,0xa7,0xb0,0xff,0xa2,0xa7,
- 0xb0,0xff,0xa7,0xab,0xb5,0xff,0x82,0x03,0x03,0x03,0xff,0x05,0xce,0xcd,0xcb,
- 0xff,0x9d,0xa2,0x9e,0xff,0x96,0xaa,0x9c,0xff,0xd3,0xd3,0xd4,0xff,0xe1,0xe1,
- 0xe1,0xff,0xe3,0xe5,0xe5,0xe6,0xff,0x0e,0xe5,0xe6,0xe6,0xff,0x7b,0x84,0x98,
- 0xff,0x44,0x53,0x73,0xff,0x3e,0x4d,0x70,0xff,0x80,0x86,0x94,0xff,0x9f,0x9f,
- 0xa1,0xff,0xa2,0xa2,0xa2,0xff,0xa8,0xa9,0xa9,0xff,0xa3,0xa3,0xa3,0xff,0xa2,
- 0xa2,0xa2,0xff,0xa9,0xa9,0xa9,0xff,0xa2,0xa2,0xa3,0xff,0xa2,0xa2,0xa2,0xff,
- 0xa8,0xa8,0xa9,0xff,0x82,0x03,0x03,0x03,0xff,0x05,0xc7,0xc7,0xc7,0xff,0xc1,
- 0xc1,0xc0,0xff,0xc0,0xbf,0xbb,0xff,0xcc,0xcc,0xcc,0xff,0xe3,0xe3,0xe3,0xff,
- 0xe4,0xe6,0xe6,0xe6,0xff,0x07,0x8b,0x93,0xa2,0xff,0x5d,0x69,0x82,0xff,0x58,
- 0x65,0x7f,0xff,0x8d,0x92,0x9c,0xff,0xa5,0xa6,0xa7,0xff,0xa8,0xa8,0xa8,0xff,
- 0xad,0xad,0xad,0xff,0x82,0xa8,0xa8,0xa8,0xff,0x01,0xad,0xad,0xad,0xff,0x82,
- 0xa8,0xa8,0xa8,0xff,0x03,0xae,0xae,0xae,0xff,0x03,0x03,0x03,0xff,0x00,0x00,
- 0x00,0xff,0x84,0x04,0x04,0x04,0xff,0xe5,0x05,0x05,0x05,0xff,0x01,0x03,0x03,
- 0x04,0xff,0x82,0x02,0x02,0x03,0xff,0x01,0x03,0x03,0x03,0xff,0x89,0x04,0x04,
- 0x04,0xff,0x01,0x00,0x00,0x00,0xff
-};
-
-static const GdkPixdata rotation_orientation_horz_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 34342, /* header length + pixel_data length */
- 0x2010002, /* pixdata_type */
- 480, /* rowstride */
- 120, /* width */
- 90, /* height */
- rotation_orientation_horz_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotation_orientation_vert.png b/src/image_data/rotation_orientation_vert.png
deleted file mode 100644
index 11c163d..0000000
--- a/src/image_data/rotation_orientation_vert.png
+++ /dev/null
Binary files differ
diff --git a/src/image_data/rotation_orientation_vert_pixdata.h b/src/image_data/rotation_orientation_vert_pixdata.h
deleted file mode 100644
index 7af1900..0000000
--- a/src/image_data/rotation_orientation_vert_pixdata.h
+++ /dev/null
@@ -1,2425 +0,0 @@
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotation_orientation_vert_pixdata_pixel_data[] = {
- 0x03,0x00,0x00,0x00,0xff,0x04,0x04,0x04,0xff,0x04,0x03,0x03,0xff,0x91,0x04,
- 0x04,0x04,0xff,0x82,0x03,0x03,0x03,0xff,0x01,0x03,0x03,0x04,0xff,0x82,0x03,
- 0x03,0x03,0xff,0x04,0x04,0x04,0x04,0xff,0x03,0x03,0x03,0xff,0x04,0x04,0x04,
- 0xff,0x03,0x03,0x04,0xff,0x82,0x03,0x03,0x03,0xff,0x82,0x03,0x03,0x04,0xff,
- 0xb5,0x04,0x04,0x04,0xff,0x82,0x03,0x03,0x03,0xff,0x0e,0x04,0x04,0x04,0xff,
- 0x00,0x00,0x00,0xff,0x05,0x05,0x05,0xff,0xe5,0xe4,0xe4,0xff,0xdc,0xc8,0xc7,
- 0xff,0xde,0xd5,0xd4,0xff,0xe5,0xe5,0xe5,0xff,0xe1,0xe1,0xe1,0xff,0xe3,0xe3,
- 0xe3,0xff,0xdf,0xdf,0xdf,0xff,0xe4,0xe4,0xe4,0xff,0xe3,0xe3,0xe3,0xff,0xe2,
- 0xe2,0xe2,0xff,0xe4,0xe4,0xe4,0xff,0x82,0xe5,0xe5,0xe5,0xff,0x01,0xe2,0xe2,
- 0xe2,0xff,0x82,0xe3,0xe3,0xe3,0xff,0x82,0xe4,0xe4,0xe4,0xff,0x04,0xdc,0xdd,
- 0xdd,0xff,0xbf,0xce,0xce,0xff,0xb1,0xc7,0xce,0xff,0xca,0xd0,0xd7,0xff,0x82,
- 0xcd,0xd1,0xd1,0xff,0x0a,0xd8,0xd8,0xd8,0xff,0xcf,0xcf,0xcf,0xff,0xd8,0xd8,
- 0xd8,0xff,0xd1,0xd1,0xd6,0xff,0xb4,0xb9,0xbf,0xff,0xc4,0xc7,0xcd,0xff,0xd3,
- 0xd5,0xd8,0xff,0xd0,0xd3,0xd5,0xff,0xdd,0xdd,0xde,0xff,0xe5,0xe5,0xe5,0xff,
- 0xa1,0xe6,0xe6,0xe6,0xff,0x82,0xe4,0xe4,0xe4,0xff,0x0d,0xde,0xde,0xde,0xff,
- 0xdf,0xdf,0xdf,0xff,0xe4,0xe4,0xe4,0xff,0xe2,0xe2,0xe2,0xff,0xe3,0xe3,0xe3,
- 0xff,0xe4,0xe4,0xe4,0xff,0xe0,0xe0,0xe0,0xff,0xdf,0xdf,0xdf,0xff,0xe4,0xe4,
- 0xe4,0xff,0xde,0xde,0xde,0xff,0xe1,0xe1,0xe1,0xff,0xde,0xde,0xde,0xff,0xe2,
- 0xe2,0xe2,0xff,0x82,0xdf,0xdf,0xdf,0xff,0x04,0xe5,0xe5,0xe5,0xff,0xca,0xca,
- 0xca,0xff,0xc7,0xc7,0xc7,0xff,0xe5,0xe5,0xe5,0xff,0x82,0x05,0x05,0x05,0xff,
- 0x0e,0xdd,0xd5,0xd4,0xff,0xb8,0x45,0x40,0xff,0xb7,0x65,0x63,0xff,0xc9,0xc9,
- 0xc9,0xff,0x9a,0x9a,0x9a,0xff,0xa2,0xa2,0xa2,0xff,0x98,0x98,0x98,0xff,0xb6,
- 0xb6,0xb6,0xff,0x9d,0x9d,0x9d,0xff,0xa9,0xa9,0xa9,0xff,0xa3,0xa3,0xa3,0xff,
- 0xc3,0xc3,0xc3,0xff,0xd7,0xd7,0xd7,0xff,0xb1,0xb1,0xb1,0xff,0x82,0xa9,0xa9,
- 0xa9,0xff,0x12,0xaa,0xaa,0xaa,0xff,0xb3,0xb3,0xb3,0xff,0xc3,0xc7,0xc9,0xff,
- 0x9c,0xb1,0xb2,0xff,0x80,0x97,0x9c,0xff,0xad,0xa9,0xa6,0xff,0xc3,0xb6,0x98,
- 0xff,0xbd,0xb6,0x9f,0xff,0xc2,0xc0,0xba,0xff,0xc7,0xc6,0xc7,0xff,0xcf,0xcf,
- 0xd0,0xff,0xc3,0xc3,0xc7,0xff,0x9c,0xa9,0xb4,0xff,0xb0,0xb8,0xc2,0xff,0xa6,
- 0xbb,0xd1,0xff,0xa6,0xa9,0xae,0xff,0xcd,0xcb,0xca,0xff,0xe3,0xe3,0xe3,0xff,
- 0xa1,0xe6,0xe6,0xe6,0xff,0x82,0xe4,0xe4,0xe4,0xff,0x13,0xcd,0xcd,0xcd,0xff,
- 0xac,0xac,0xac,0xff,0xb6,0xb6,0xb6,0xff,0xa9,0xa9,0xa9,0xff,0xaa,0xaa,0xaa,
- 0xff,0xaf,0xaf,0xaf,0xff,0xb6,0xb6,0xb6,0xff,0xba,0xba,0xba,0xff,0xd8,0xd8,
- 0xd8,0xff,0xc7,0xc7,0xc7,0xff,0xbf,0xbf,0xbf,0xff,0x99,0x99,0x99,0xff,0xb1,
- 0xb1,0xb1,0xff,0x96,0x96,0x96,0xff,0x8a,0x8a,0x8a,0xff,0xda,0xda,0xda,0xff,
- 0xa5,0xa5,0xa5,0xff,0xb6,0xb6,0xb6,0xff,0xe4,0xe4,0xe4,0xff,0x82,0x05,0x05,
- 0x05,0xff,0x0f,0xd4,0xd6,0xd9,0xff,0xcd,0xcb,0xcf,0xff,0xc8,0xc3,0xc7,0xff,
- 0xd0,0xd2,0xd5,0xff,0xc3,0xc4,0xc8,0xff,0xbe,0xbf,0xc3,0xff,0xca,0xcc,0xd0,
- 0xff,0xca,0xcb,0xcf,0xff,0xc7,0xc8,0xcc,0xff,0xca,0xcc,0xcf,0xff,0xcb,0xcd,
- 0xd0,0xff,0xcd,0xcf,0xd2,0xff,0xd4,0xd6,0xd9,0xff,0xd0,0xd1,0xd5,0xff,0xca,
- 0xcc,0xcf,0xff,0x82,0xcb,0xcd,0xd0,0xff,0x10,0xcc,0xce,0xd1,0xff,0xd1,0xd3,
- 0xd6,0xff,0xc7,0xca,0xcf,0xff,0xb8,0xbb,0xc3,0xff,0xc5,0xc6,0xcb,0xff,0xcb,
- 0xc7,0xc2,0xff,0xc8,0xc3,0xbc,0xff,0xce,0xcd,0xcd,0xff,0xc6,0xc6,0xc9,0xff,
- 0xbf,0xc1,0xc6,0xff,0xc9,0xcb,0xcf,0xff,0xb9,0xc3,0xcf,0xff,0xc3,0xc9,0xd0,
- 0xff,0xbf,0xc4,0xcd,0xff,0xaa,0xae,0xbe,0xff,0xc9,0xcb,0xd3,0xff,0x86,0xd6,
- 0xd8,0xdc,0xff,0x86,0xd7,0xd8,0xdc,0xff,0x82,0xd7,0xd9,0xdc,0xff,0x8d,0xd7,
- 0xd9,0xdd,0xff,0x83,0xd8,0xd9,0xdd,0xff,0x82,0xd8,0xd9,0xde,0xff,0x82,0xd8,
- 0xda,0xde,0xff,0x83,0xd6,0xd8,0xdc,0xff,0x15,0xd0,0xd2,0xd6,0xff,0xce,0xcf,
- 0xd4,0xff,0xd0,0xd2,0xd6,0xff,0xce,0xcf,0xd4,0xff,0xbf,0xc1,0xc5,0xff,0xc4,
- 0xc6,0xca,0xff,0xc8,0xca,0xce,0xff,0xce,0xcf,0xd3,0xff,0xd3,0xd5,0xd9,0xff,
- 0xd4,0xd6,0xda,0xff,0xce,0xd0,0xd4,0xff,0xd2,0xd4,0xd8,0xff,0xd2,0xd3,0xd8,
- 0xff,0xd3,0xd5,0xd9,0xff,0xd7,0xd9,0xdd,0xff,0xc3,0xc4,0xc8,0xff,0xc6,0xc8,
- 0xcc,0xff,0xd7,0xd9,0xdd,0xff,0x05,0x05,0x05,0xff,0x01,0x01,0x02,0xff,0x24,
- 0x3c,0x72,0xff,0x83,0x24,0x3c,0x71,0xff,0x40,0x25,0x3d,0x71,0xff,0x25,0x3d,
- 0x72,0xff,0x26,0x3e,0x73,0xff,0x27,0x3f,0x74,0xff,0x27,0x40,0x75,0xff,0x28,
- 0x40,0x76,0xff,0x29,0x41,0x76,0xff,0x2a,0x42,0x77,0xff,0x2a,0x43,0x78,0xff,
- 0x2b,0x44,0x79,0xff,0x2c,0x44,0x7a,0xff,0x2c,0x45,0x7b,0xff,0x2d,0x46,0x7c,
- 0xff,0x2e,0x46,0x7d,0xff,0x2f,0x47,0x7e,0xff,0x2f,0x48,0x80,0xff,0x31,0x4a,
- 0x82,0xff,0x32,0x4b,0x83,0xff,0x33,0x4c,0x85,0xff,0x34,0x4e,0x87,0xff,0x35,
- 0x4f,0x88,0xff,0x36,0x50,0x89,0xff,0x36,0x51,0x8a,0xff,0x37,0x52,0x8b,0xff,
- 0x38,0x53,0x8b,0xff,0x39,0x53,0x8d,0xff,0x3a,0x54,0x8e,0xff,0x3a,0x55,0x8f,
- 0xff,0x3b,0x56,0x90,0xff,0x3c,0x56,0x91,0xff,0x3c,0x57,0x92,0xff,0x3d,0x58,
- 0x93,0xff,0x3e,0x59,0x93,0xff,0x3f,0x5a,0x94,0xff,0x3f,0x5b,0x95,0xff,0x40,
- 0x5c,0x96,0xff,0x41,0x5c,0x97,0xff,0x42,0x5d,0x98,0xff,0x43,0x5e,0x99,0xff,
- 0x43,0x5e,0x9a,0xff,0x44,0x5f,0x9b,0xff,0x45,0x60,0x9c,0xff,0x45,0x61,0x9c,
- 0xff,0x46,0x62,0x9d,0xff,0x47,0x62,0x9e,0xff,0x47,0x63,0x9f,0xff,0x48,0x64,
- 0xa0,0xff,0x49,0x64,0xa1,0xff,0x4a,0x65,0xa2,0xff,0x4b,0x66,0xa3,0xff,0x4c,
- 0x67,0xa4,0xff,0x4d,0x67,0xa5,0xff,0x4d,0x68,0xa5,0xff,0x4e,0x69,0xa6,0xff,
- 0x4f,0x6a,0xa7,0xff,0x4f,0x6b,0xa8,0xff,0x50,0x6b,0xa9,0xff,0x51,0x6c,0xaa,
- 0xff,0x51,0x6d,0xab,0xff,0x52,0x6d,0xac,0xff,0x53,0x6e,0xad,0xff,0x54,0x6f,
- 0xae,0xff,0x54,0x70,0xaf,0xff,0x55,0x70,0xb0,0xff,0x94,0x56,0x71,0xb0,0xff,
- 0x07,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,
- 0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x83,
- 0x21,0x3a,0x72,0xff,0x1b,0x21,0x3b,0x73,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,
- 0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,
- 0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x49,
- 0x84,0xff,0x30,0x4a,0x86,0xff,0x31,0x4c,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,
- 0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,
- 0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x1f,0x3a,
- 0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,
- 0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,
- 0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,
- 0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,
- 0x6e,0xb0,0xff,0x94,0x52,0x6f,0xb1,0xff,0x09,0x02,0x02,0x04,0xff,0x01,0x01,
- 0x02,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,
- 0x82,0x23,0x3d,0x76,0xff,0x04,0x24,0x3d,0x76,0xff,0x23,0x3d,0x75,0xff,0x24,
- 0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x82,0x25,0x3f,0x78,0xff,0x35,0x26,0x40,
- 0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x36,0x51,0x8d,0xff,0x36,
- 0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x92,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,
- 0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,
- 0x9b,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x43,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,
- 0x45,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,
- 0xff,0x49,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,
- 0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,
- 0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xae,0xff,0x51,0x6e,0xb0,0xff,
- 0x94,0x52,0x6f,0xb1,0xff,0x0e,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1e,
- 0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,
- 0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,
- 0x79,0xff,0x83,0x26,0x40,0x79,0xff,0x03,0x27,0x40,0x7a,0xff,0x27,0x41,0x7a,
- 0xff,0x28,0x42,0x7b,0xff,0x82,0x29,0x43,0x7c,0xff,0x31,0x29,0x43,0x7d,0xff,
- 0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x50,0x8c,0xff,
- 0x37,0x51,0x8d,0xff,0x38,0x52,0x8f,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x93,
- 0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,
- 0x44,0x61,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,
- 0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,
- 0xa7,0xff,0x4b,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x69,0xa9,0xff,0x4d,
- 0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6c,0xae,0xff,0x51,0x6e,0xb0,0xff,0x52,0x6e,0xb0,0xff,0x93,0x52,0x6f,
- 0xb1,0xff,0x14,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1e,0x37,0x6f,0xff,
- 0x1e,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,
- 0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,
- 0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x27,0x40,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x29,0x42,0x7d,0xff,
- 0x29,0x43,0x7d,0xff,0x29,0x43,0x7c,0xff,0x82,0x29,0x43,0x7d,0xff,0x31,0x2a,
- 0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,
- 0x4f,0x8b,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,
- 0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x3a,0x54,0x92,0xff,0x3b,0x56,0x94,
- 0xff,0x3c,0x58,0x95,0xff,0x3d,0x59,0x97,0xff,0x3f,0x5a,0x98,0xff,0x40,0x5b,
- 0x9a,0xff,0x41,0x5d,0x9b,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,
- 0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa1,0xff,
- 0x46,0x63,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,
- 0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,
- 0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,
- 0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x51,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,
- 0x93,0x52,0x6f,0xb1,0xff,0x16,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1d,
- 0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,
- 0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3d,0x76,
- 0xff,0x2b,0x44,0x7a,0xff,0x35,0x4c,0x7f,0xff,0x39,0x50,0x80,0xff,0x36,0x4c,
- 0x7d,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x2b,0x45,0x80,0xff,0x83,0x2b,0x46,0x80,0xff,0x2e,0x2c,0x46,0x80,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,
- 0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,
- 0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x96,
- 0xff,0x3e,0x59,0x97,0xff,0x3f,0x5b,0x9a,0xff,0x41,0x5d,0x9c,0xff,0x42,0x5e,
- 0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa9,
- 0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,
- 0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x93,
- 0x52,0x6f,0xb1,0xff,0x18,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1d,0x36,
- 0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x74,0xff,0x2b,0x42,0x78,0xff,
- 0x5b,0x6d,0x8f,0xff,0x8b,0xa2,0xb9,0xff,0x99,0xb1,0xc6,0xff,0x7c,0x8b,0xa6,
- 0xff,0x32,0x49,0x7d,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,
- 0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x83,0x2e,0x49,0x83,
- 0xff,0x2d,0x2e,0x48,0x83,0xff,0x2e,0x48,0x84,0xff,0x2f,0x48,0x84,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,
- 0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,0x51,
- 0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,
- 0xff,0x40,0x5b,0x9a,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5f,0x9f,0xff,0x44,0x61,
- 0xa0,0xff,0x46,0x62,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,
- 0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,
- 0x4c,0x68,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,
- 0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,
- 0xb0,0xff,0x92,0x52,0x6f,0xb1,0xff,0x1d,0x02,0x02,0x04,0xff,0x01,0x01,0x02,
- 0xff,0x1c,0x36,0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x31,
- 0x48,0x7b,0xff,0x78,0x8b,0xa7,0xff,0x97,0xc4,0xe3,0xff,0xad,0xc9,0xdf,0xff,
- 0xb1,0xba,0xc4,0xff,0x66,0x73,0x93,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,
- 0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,
- 0x7f,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x46,0x80,0xff,0x2d,0x47,0x81,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,
- 0x30,0x4c,0x87,0xff,0x83,0x31,0x4c,0x87,0xff,0x82,0x31,0x4b,0x87,0xff,0x26,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,
- 0xff,0x35,0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,
- 0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,
- 0xff,0x40,0x5b,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,
- 0x9c,0xff,0x43,0x5e,0x9d,0xff,0x44,0x60,0x9f,0xff,0x46,0x61,0xa1,0xff,0x47,
- 0x63,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x67,0xa8,0xff,
- 0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,
- 0xff,0x4e,0x6b,0xad,0xff,0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,
- 0xb0,0xff,0x92,0x52,0x6f,0xb1,0xff,0x21,0x02,0x02,0x04,0xff,0x01,0x01,0x02,
- 0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x33,
- 0x49,0x7b,0xff,0x83,0x8f,0xa3,0xff,0xa6,0xb9,0xc8,0xff,0xa9,0xb1,0xba,0xff,
- 0xa5,0xab,0xb3,0xff,0x64,0x71,0x8d,0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,
- 0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,
- 0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x83,0xff,0x2f,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,
- 0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x32,0x4d,0x88,0xff,0x32,0x4e,0x89,
- 0xff,0x33,0x4f,0x8a,0xff,0x82,0x33,0x4e,0x8a,0xff,0x25,0x33,0x4f,0x8b,0xff,
- 0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,
- 0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,
- 0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,
- 0x56,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,
- 0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x46,
- 0x62,0xa2,0xff,0x47,0x64,0xa4,0xff,0x49,0x66,0xa6,0xff,0x4b,0x67,0xa8,0xff,
- 0x4c,0x68,0xa9,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,
- 0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x92,0x52,0x6f,0xb1,0xff,0x24,
- 0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,
- 0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,
- 0x72,0xff,0x21,0x3a,0x73,0xff,0x2d,0x44,0x78,0xff,0x66,0x71,0x8b,0xff,0x74,
- 0x7c,0x8d,0xff,0x50,0x5e,0x7d,0xff,0x54,0x66,0x8b,0xff,0x41,0x56,0x7f,0xff,
- 0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,
- 0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,
- 0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x49,0x83,0xff,0x2e,
- 0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,
- 0x31,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,
- 0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x85,0x36,0x51,0x8e,0xff,0x20,
- 0x36,0x51,0x8f,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,
- 0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,
- 0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9e,
- 0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,
- 0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x49,0x65,0xa6,0xff,0x4a,
- 0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4d,0x6a,0xac,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x91,0x52,0x6f,0xb1,0xff,0x28,0x02,
- 0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6e,0xff,
- 0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,
- 0xff,0x21,0x3a,0x73,0xff,0x28,0x40,0x75,0xff,0x28,0x40,0x76,0xff,0x2a,0x43,
- 0x78,0xff,0x2b,0x43,0x79,0xff,0x2b,0x43,0x7a,0xff,0x2d,0x44,0x7a,0xff,0x2a,
- 0x43,0x7b,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,
- 0x28,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,
- 0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,
- 0x4c,0x87,0xff,0x32,0x4d,0x88,0xff,0x33,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,
- 0x34,0x50,0x8b,0xff,0x35,0x51,0x8d,0xff,0x35,0x51,0x8e,0xff,0x36,0x52,0x8e,
- 0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x84,0x38,0x54,0x91,0xff,0x02,
- 0x39,0x54,0x91,0xff,0x39,0x54,0x92,0xff,0x82,0x3a,0x55,0x93,0xff,0x1b,0x3b,
- 0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,
- 0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,
- 0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,
- 0xff,0x4d,0x69,0xab,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x82,0x51,0x6e,0xb0,0xff,0x8d,0x52,0x6f,0xb1,0xff,0x2c,0x02,0x02,
- 0x04,0xff,0x01,0x01,0x02,0xff,0x1b,0x34,0x6c,0xff,0x1c,0x35,0x6d,0xff,0x1d,
- 0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,
- 0x25,0x3d,0x74,0xff,0x3d,0x50,0x7b,0xff,0x3a,0x4e,0x7a,0xff,0x43,0x55,0x7e,
- 0xff,0x43,0x55,0x7f,0xff,0x43,0x56,0x80,0xff,0x42,0x55,0x7e,0xff,0x36,0x4b,
- 0x7c,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x2b,0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,
- 0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,
- 0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,0x34,
- 0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,
- 0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,
- 0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x82,0x3b,0x57,0x94,0xff,0x01,
- 0x3b,0x58,0x95,0xff,0x82,0x3c,0x57,0x95,0xff,0x01,0x3d,0x57,0x95,0xff,0x82,
- 0x3d,0x58,0x96,0xff,0x15,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,
- 0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,
- 0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,
- 0x45,0x60,0xa1,0xff,0x45,0x61,0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,
- 0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x4a,0x66,
- 0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x83,
- 0x4d,0x6a,0xac,0xff,0x01,0x4e,0x6b,0xad,0xff,0x82,0x50,0x6d,0xaf,0xff,0x83,
- 0x51,0x6e,0xb0,0xff,0x88,0x52,0x6f,0xb1,0xff,0x29,0x02,0x02,0x04,0xff,0x01,
- 0x01,0x02,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,
- 0x1e,0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x23,0x3c,0x73,
- 0xff,0x33,0x48,0x78,0xff,0x34,0x48,0x76,0xff,0x39,0x4a,0x73,0xff,0x3e,0x50,
- 0x79,0xff,0x3f,0x51,0x7a,0xff,0x39,0x4b,0x77,0xff,0x2e,0x44,0x76,0xff,0x26,
- 0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x49,0x83,0xff,0x2e,0x49,
- 0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,
- 0x4c,0x88,0xff,0x32,0x4d,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,
- 0x34,0x50,0x8b,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8f,
- 0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x05,
- 0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x82,0x3e,0x5a,0x98,0xff,0x01,0x3e,0x5a,0x99,0xff,
- 0x82,0x3f,0x5a,0x98,0xff,0x15,0x3f,0x5a,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,
- 0x5b,0x9a,0xff,0x41,0x5b,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,
- 0x43,0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,
- 0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,
- 0xa4,0xff,0x48,0x64,0xa5,0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,
- 0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4c,0x69,0xab,0xff,
- 0x85,0x4d,0x6a,0xac,0xff,0x82,0x4e,0x6b,0xad,0xff,0x02,0x4f,0x6c,0xae,0xff,
- 0x50,0x6d,0xaf,0xff,0x83,0x51,0x6e,0xb0,0xff,0x84,0x52,0x6f,0xb1,0xff,0x34,
- 0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6c,
- 0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,
- 0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,
- 0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7b,
- 0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,
- 0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x85,0xff,
- 0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x32,0x4d,0x88,0xff,0x33,0x4e,0x89,
- 0xff,0x33,0x4f,0x8a,0xff,0x34,0x50,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,
- 0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,
- 0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,
- 0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x82,0x40,
- 0x5d,0x9b,0xff,0x05,0x40,0x5d,0x9c,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5d,0x9c,
- 0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x82,0x43,0x5e,0x9e,0xff,0x0d,
- 0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,
- 0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x65,
- 0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,
- 0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x89,0x4d,0x6a,0xac,0xff,0x82,0x4e,0x6b,
- 0xad,0xff,0x01,0x4f,0x6c,0xae,0xff,0x82,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,
- 0xb0,0xff,0x3e,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x1a,0x34,0x6b,0xff,
- 0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,
- 0x73,0xff,0x21,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,
- 0x3d,0x77,0xff,0x24,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,
- 0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x4a,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,
- 0x32,0x4d,0x89,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,
- 0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x5f,0x9f,0xff,0x43,0x60,0x9f,0xff,0x44,
- 0x5f,0x9f,0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa0,0xff,0x83,0x45,0x61,0xa1,
- 0xff,0x0a,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x48,
- 0x64,0xa5,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,
- 0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x4d,0x69,0xab,0xff,0x8d,0x4d,0x6a,
- 0xac,0xff,0x82,0x4e,0x6b,0xad,0xff,0x40,0x02,0x02,0x04,0xff,0x01,0x01,0x02,
- 0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,
- 0x6e,0xff,0x1e,0x36,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,
- 0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,
- 0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,
- 0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,
- 0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,
- 0xff,0x31,0x4c,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x8a,0xff,0x33,0x4f,
- 0x8b,0xff,0x34,0x50,0x8b,0xff,0x35,0x51,0x8c,0xff,0x36,0x51,0x8d,0xff,0x36,
- 0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x39,0x55,0x91,0xff,
- 0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,0xff,
- 0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x46,0x62,0xa2,
- 0xff,0x47,0x63,0xa3,0xff,0x47,0x62,0xa2,0xff,0x82,0x46,0x63,0xa3,0xff,0x01,
- 0x47,0x63,0xa4,0xff,0x82,0x47,0x64,0xa5,0xff,0x06,0x49,0x65,0xa6,0xff,0x49,
- 0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xaa,0xff,
- 0x4c,0x69,0xab,0xff,0x8f,0x4d,0x6a,0xac,0xff,0x42,0x02,0x02,0x04,0xff,0x01,
- 0x01,0x02,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x35,0x6c,0xff,
- 0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,
- 0xff,0x1f,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,
- 0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,
- 0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,
- 0x83,0xff,0x2e,0x49,0x83,0xff,0x2f,0x4a,0x84,0xff,0x2f,0x4b,0x85,0xff,0x30,
- 0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,
- 0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x53,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,
- 0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,
- 0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,
- 0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x47,
- 0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,
- 0x49,0x65,0xa5,0xff,0x83,0x49,0x65,0xa6,0xff,0x06,0x49,0x66,0xa7,0xff,0x4a,
- 0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,
- 0x4c,0x69,0xab,0xff,0x8f,0x4d,0x6a,0xac,0xff,0x44,0x02,0x02,0x04,0xff,0x01,
- 0x01,0x02,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,
- 0x1b,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x37,0x70,
- 0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,
- 0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,
- 0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,
- 0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,0x89,0xff,
- 0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,0x3b,
- 0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,
- 0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,
- 0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x83,0x4c,0x68,
- 0xa9,0xff,0x05,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xaa,0xff,0x4c,0x69,0xaa,0xff,
- 0x4c,0x69,0xab,0xff,0x4d,0x6a,0xab,0xff,0x8e,0x4d,0x6a,0xac,0xff,0x39,0x02,
- 0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,
- 0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,0x36,0x6e,
- 0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,
- 0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,
- 0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,
- 0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,
- 0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,
- 0x32,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,0x34,0x50,0x8b,
- 0xff,0x35,0x50,0x8c,0xff,0x36,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,
- 0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,
- 0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,0x0c,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,
- 0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,
- 0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,
- 0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4e,0x6a,0xab,0xff,0x82,0x4e,0x6b,0xac,
- 0xff,0x85,0x4e,0x6b,0xad,0xff,0x8c,0x4d,0x6a,0xac,0xff,0x4b,0x02,0x02,0x04,
- 0xff,0x01,0x01,0x02,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,
- 0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,
- 0x37,0x6f,0xff,0x26,0x3d,0x71,0xff,0x4b,0x57,0x74,0xff,0x60,0x64,0x74,0xff,
- 0x53,0x5a,0x71,0xff,0x4f,0x57,0x70,0xff,0x29,0x3f,0x73,0xff,0x23,0x3c,0x76,
- 0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,
- 0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,
- 0x43,0x7d,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2b,0x46,0x81,0xff,
- 0x2c,0x47,0x82,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x4a,0x84,
- 0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,
- 0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x35,
- 0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,
- 0x38,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,
- 0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,
- 0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,
- 0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,
- 0xff,0x45,0x62,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,
- 0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa7,0xff,0x4c,
- 0x68,0xa8,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,
- 0x4f,0x6c,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x82,0x51,0x6e,
- 0xb0,0xff,0x82,0x50,0x6d,0xaf,0xff,0x01,0x4f,0x6c,0xae,0xff,0x82,0x4e,0x6b,
- 0xad,0xff,0x88,0x4d,0x6a,0xac,0xff,0x4d,0x02,0x02,0x04,0xff,0x01,0x01,0x02,
- 0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1b,0x34,
- 0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x32,
- 0x44,0x71,0xff,0x92,0x88,0x7a,0xff,0xcb,0xae,0x7e,0xff,0xb6,0x9e,0x7a,0xff,
- 0xab,0x96,0x79,0xff,0x4d,0x57,0x74,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,
- 0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,
- 0xff,0x30,0x4b,0x86,0xff,0x30,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,0x32,0x4d,
- 0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,
- 0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x55,0x93,0xff,0x3a,0x56,0x94,
- 0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,
- 0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,
- 0x43,0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,
- 0xff,0x46,0x63,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,
- 0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4c,0x68,0xa8,0xff,0x4c,
- 0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,0xac,0xff,
- 0x4f,0x6c,0xad,0xff,0x50,0x6d,0xae,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,
- 0xff,0x83,0x52,0x6f,0xb1,0xff,0x01,0x51,0x6e,0xb0,0xff,0x82,0x50,0x6d,0xaf,
- 0xff,0x01,0x4f,0x6c,0xae,0xff,0x82,0x4e,0x6b,0xad,0xff,0x84,0x4d,0x6a,0xac,
- 0xff,0x4d,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x18,0x32,0x69,0xff,0x19,
- 0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,
- 0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x30,0x43,0x71,0xff,0x91,0x85,0x7b,
- 0xff,0xd8,0xb8,0x89,0xff,0xae,0x9a,0x7d,0xff,0x9e,0x8e,0x79,0xff,0x5d,0x5f,
- 0x70,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,
- 0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x85,0xff,0x30,
- 0x4c,0x86,0xff,0x31,0x4c,0x87,0xff,0x32,0x4d,0x88,0xff,0x32,0x4e,0x89,0xff,
- 0x33,0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,
- 0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,
- 0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,
- 0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x47,
- 0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,
- 0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6c,
- 0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x87,0x52,0x6f,0xb1,0xff,
- 0x01,0x51,0x6e,0xb0,0xff,0x82,0x50,0x6d,0xaf,0xff,0x01,0x4f,0x6c,0xae,0xff,
- 0x82,0x4e,0x6b,0xad,0xff,0x4d,0x02,0x02,0x04,0xff,0x01,0x01,0x02,0xff,0x18,
- 0x31,0x68,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,
- 0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x2d,0x41,0x71,
- 0xff,0x7f,0x78,0x78,0xff,0xbd,0x9d,0x75,0xff,0x85,0x6b,0x57,0xff,0x78,0x5f,
- 0x52,0xff,0x4b,0x47,0x5a,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x76,0xff,0x24,
- 0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,
- 0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7e,
- 0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2b,0x45,0x81,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x4a,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,
- 0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8c,
- 0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,
- 0x49,0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x67,0xa7,0xff,0x4c,0x68,0xa9,
- 0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,
- 0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x8b,
- 0x52,0x6f,0xb1,0xff,0x50,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x02,0x02,
- 0x04,0xff,0x01,0x01,0x02,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,
- 0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,
- 0x1c,0x36,0x6e,0xff,0x25,0x3c,0x70,0xff,0x4b,0x55,0x71,0xff,0x65,0x5e,0x63,
- 0xff,0x67,0x52,0x52,0xff,0x6c,0x54,0x53,0xff,0x42,0x41,0x5e,0xff,0x22,0x3b,
- 0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,
- 0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x30,
- 0x4c,0x87,0xff,0x31,0x4c,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x8a,0xff,
- 0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,
- 0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x39,0x55,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,
- 0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,
- 0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5d,0x9c,
- 0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,
- 0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,
- 0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,
- 0x4a,0x67,0xa7,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,
- 0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,
- 0xae,0xff,0x51,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x8c,0x52,0x6f,0xb1,0xff,
- 0x4e,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x17,0x31,0x68,0xff,0x18,0x31,
- 0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6b,0xff,0x1a,0x34,0x6b,0xff,0x1c,
- 0x36,0x6d,0xff,0x25,0x3d,0x71,0xff,0x2a,0x41,0x74,0xff,0x2d,0x42,0x74,0xff,
- 0x2c,0x41,0x72,0xff,0x36,0x45,0x6f,0xff,0x3f,0x4b,0x70,0xff,0x30,0x44,0x76,
- 0xff,0x2d,0x44,0x79,0xff,0x28,0x40,0x77,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,
- 0x40,0x7b,0xff,0x28,0x41,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,
- 0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,
- 0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x84,0xff,0x2f,0x4b,
- 0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x32,0x4d,0x88,0xff,0x32,
- 0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,
- 0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,
- 0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,
- 0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9b,0xff,
- 0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x42,0x5f,0x9e,
- 0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x62,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,
- 0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,
- 0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,
- 0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x8c,0x52,
- 0x6f,0xb1,0xff,0x0d,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x17,0x30,0x67,
- 0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,
- 0x6b,0xff,0x1e,0x36,0x6d,0xff,0x33,0x47,0x74,0xff,0x3e,0x4f,0x76,0xff,0x3d,
- 0x4e,0x76,0xff,0x36,0x4a,0x76,0xff,0x35,0x49,0x75,0xff,0x82,0x3e,0x50,0x78,
- 0xff,0x40,0x3d,0x4f,0x7a,0xff,0x30,0x45,0x76,0xff,0x23,0x3c,0x75,0xff,0x23,
- 0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,
- 0x27,0x40,0x7a,0xff,0x28,0x41,0x7b,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,
- 0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,0xff,
- 0x32,0x4d,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8c,
- 0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,
- 0x8f,0xff,0x38,0x54,0x90,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,
- 0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,
- 0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4f,0x6b,
- 0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xaf,0xff,0x51,
- 0x6e,0xb0,0xff,0x8b,0x52,0x6f,0xb1,0xff,0x02,0x02,0x02,0x04,0xff,0x00,0x01,
- 0x02,0xff,0x82,0x17,0x30,0x66,0xff,0x4b,0x18,0x30,0x67,0xff,0x19,0x31,0x67,
- 0xff,0x19,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x28,0x3d,0x6c,0xff,0x2f,0x41,
- 0x6d,0xff,0x2c,0x40,0x6d,0xff,0x29,0x3f,0x6f,0xff,0x26,0x3c,0x6d,0xff,0x2c,
- 0x41,0x6f,0xff,0x2f,0x43,0x6f,0xff,0x2f,0x44,0x72,0xff,0x28,0x3f,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3c,0x75,
- 0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x44,0x7f,0xff,0x2c,0x46,0x80,0xff,0x2d,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,
- 0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4c,0x87,
- 0xff,0x31,0x4c,0x88,0xff,0x32,0x4d,0x89,0xff,0x32,0x4e,0x89,0xff,0x33,0x4f,
- 0x8a,0xff,0x34,0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,
- 0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x55,0x91,0xff,
- 0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,
- 0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9f,0xff,0x43,0x60,0x9f,0xff,
- 0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,
- 0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4b,0x67,
- 0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4e,
- 0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xae,0xff,
- 0x51,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x8b,0x52,0x6f,0xb1,0xff,0x4f,0x02,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,
- 0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,
- 0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x74,
- 0xff,0x24,0x3d,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x4a,0x84,0xff,
- 0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x31,0x4c,0x87,0xff,0x31,0x4d,0x88,
- 0xff,0x32,0x4e,0x89,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,0x50,
- 0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,
- 0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,
- 0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,
- 0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,
- 0xff,0x49,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,
- 0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,
- 0x6c,0xad,0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,
- 0x89,0x52,0x6f,0xb1,0xff,0x45,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x02,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,
- 0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,
- 0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,
- 0xff,0x23,0x3d,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,
- 0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x46,0x7f,0xff,0x2c,0x47,0x81,0xff,
- 0x2e,0x48,0x83,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4c,0x87,0xff,0x31,0x4d,0x88,
- 0xff,0x32,0x4d,0x89,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,
- 0x8c,0xff,0x35,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8e,0xff,0x37,
- 0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x92,0xff,0x39,0x55,0x93,0xff,
- 0x3a,0x56,0x94,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x60,0xa0,0xff,0x44,0x61,0xa1,0xff,
- 0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x82,0x48,0x64,
- 0xa4,0xff,0x0b,0x48,0x64,0xa5,0xff,0x48,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x67,0xa8,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,
- 0xff,0x4f,0x6c,0xad,0xff,0x50,0x6d,0xae,0xff,0x51,0x6d,0xaf,0xff,0x51,0x6e,
- 0xb0,0xff,0x85,0x52,0x6f,0xb1,0xff,0x03,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,
- 0xff,0x4f,0x6c,0xae,0xff,0x82,0x4e,0x6b,0xad,0xff,0x40,0x02,0x02,0x04,0xff,
- 0x00,0x01,0x02,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2e,0x63,
- 0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x68,0xff,0x1a,0x32,
- 0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6c,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,
- 0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,
- 0x77,0xff,0x25,0x3f,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,
- 0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,
- 0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x46,0x81,
- 0xff,0x2d,0x47,0x82,0xff,0x2f,0x49,0x84,0xff,0x30,0x4b,0x86,0xff,0x32,0x4d,
- 0x88,0xff,0x32,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x34,
- 0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,
- 0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,
- 0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,
- 0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,
- 0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x82,0x45,0x62,
- 0xa1,0xff,0x02,0x46,0x62,0xa1,0xff,0x46,0x61,0xa1,0xff,0x82,0x45,0x61,0xa2,
- 0xff,0x0a,0x46,0x62,0xa3,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa5,0xff,0x49,
- 0x66,0xa6,0xff,0x4b,0x68,0xa9,0xff,0x4d,0x6a,0xab,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6d,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x82,0x52,0x6f,
- 0xb1,0xff,0x03,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x4f,0x6c,0xae,0xff,
- 0x82,0x4e,0x6b,0xad,0xff,0x83,0x4d,0x6a,0xac,0xff,0x1c,0x02,0x02,0x04,0xff,
- 0x00,0x01,0x02,0xff,0x14,0x2c,0x60,0xff,0x15,0x2d,0x62,0xff,0x16,0x2e,0x64,
- 0xff,0x18,0x30,0x66,0xff,0x18,0x32,0x68,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x29,0x3f,0x70,0xff,0x32,
- 0x48,0x76,0xff,0x26,0x3d,0x71,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,
- 0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,
- 0x79,0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,
- 0x41,0x7b,0xff,0x82,0x28,0x42,0x7c,0xff,0x21,0x29,0x43,0x7c,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2d,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x30,0x4a,0x85,0xff,
- 0x31,0x4d,0x88,0xff,0x33,0x4e,0x8a,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8c,
- 0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x55,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x97,0xff,
- 0x3d,0x5a,0x98,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x82,0x44,0x60,0x9f,0xff,0x0d,0x44,0x5f,0x9f,
- 0xff,0x44,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,0x61,
- 0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x48,
- 0x64,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4b,0x67,0xa8,0xff,0x4d,0x6a,0xab,0xff,
- 0x4e,0x6b,0xad,0xff,0x84,0x4f,0x6c,0xae,0xff,0x82,0x4e,0x6b,0xad,0xff,0x86,
- 0x4d,0x6a,0xac,0xff,0x1b,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x14,0x2b,
- 0x60,0xff,0x15,0x2d,0x62,0xff,0x17,0x30,0x66,0xff,0x17,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1e,0x37,0x6d,0xff,
- 0x3b,0x4e,0x75,0xff,0x75,0x7f,0x93,0xff,0x8d,0x96,0xa9,0xff,0x5d,0x6b,0x8a,
- 0xff,0x25,0x3c,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,
- 0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,
- 0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7b,0xff,
- 0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x82,0x29,0x43,0x7d,0xff,0x82,0x2a,
- 0x44,0x7e,0xff,0x84,0x2b,0x45,0x7f,0xff,0x1a,0x2c,0x45,0x80,0xff,0x2d,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x30,0x4a,0x85,0xff,0x32,
- 0x4d,0x88,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,0x8b,0xff,0x35,0x50,0x8d,0xff,
- 0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,
- 0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,
- 0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,
- 0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x82,0x42,0x5e,0x9d,0xff,0x10,0x41,
- 0x5d,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9d,0xff,
- 0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,
- 0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x65,
- 0xa6,0xff,0x49,0x65,0xa6,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,
- 0x69,0xaa,0xff,0x82,0x4d,0x6a,0xab,0xff,0x89,0x4d,0x6a,0xac,0xff,0x1f,0x02,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x14,0x2b,0x60,0xff,0x15,0x2e,0x63,0xff,
- 0x16,0x30,0x66,0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x69,0xff,0x19,0x32,0x6a,
- 0xff,0x19,0x33,0x6b,0xff,0x1f,0x37,0x6c,0xff,0x49,0x5b,0x7d,0xff,0xa1,0xaa,
- 0xb3,0xff,0xa6,0xae,0xb6,0xff,0x76,0x82,0x96,0xff,0x25,0x3b,0x6d,0xff,0x20,
- 0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,
- 0x22,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x25,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x42,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,
- 0x45,0x80,0xff,0x82,0x2c,0x46,0x81,0xff,0x03,0x2c,0x47,0x82,0xff,0x2d,0x47,
- 0x82,0xff,0x2d,0x47,0x81,0xff,0x82,0x2d,0x46,0x81,0xff,0x17,0x2e,0x47,0x82,
- 0xff,0x2e,0x48,0x83,0xff,0x30,0x4a,0x86,0xff,0x33,0x4e,0x8a,0xff,0x34,0x4f,
- 0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,
- 0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,
- 0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,0x40,0x5c,0x9b,0xff,0x82,
- 0x40,0x5b,0x9a,0xff,0x12,0x40,0x5c,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,
- 0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,
- 0x60,0xa1,0xff,0x45,0x61,0xa1,0xff,0x46,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,
- 0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,
- 0xab,0xff,0x88,0x4d,0x6a,0xac,0xff,0x23,0x4e,0x6b,0xad,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x14,0x2b,0x60,0xff,0x15,0x2e,0x64,0xff,0x16,0x2f,
- 0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,
- 0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x43,0x56,0x7e,0xff,0xb5,0xba,0xc0,0xff,
- 0x9e,0xa2,0xa7,0xff,0x75,0x7f,0x92,0xff,0x20,0x37,0x6d,0xff,0x1f,0x38,0x71,
- 0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,
- 0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,
- 0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,
- 0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x83,0x2e,
- 0x49,0x83,0xff,0x0c,0x2e,0x47,0x83,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x31,0x4c,0x87,0xff,0x33,0x4f,0x8b,0xff,0x34,0x50,
- 0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,0x36,0x52,0x8f,0xff,0x37,
- 0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x82,0x39,0x55,0x92,0xff,0x06,0x3a,0x56,
- 0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x96,0xff,0x3c,0x58,0x96,0xff,0x3d,
- 0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x82,0x3e,0x5b,0x99,0xff,0x02,0x3e,0x5a,
- 0x98,0xff,0x3e,0x59,0x98,0xff,0x82,0x3f,0x5a,0x99,0xff,0x13,0x40,0x5b,0x9a,
- 0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,
- 0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,
- 0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x4c,0x6a,0xab,0xff,0x85,0x4d,
- 0x6a,0xac,0xff,0x27,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,
- 0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,0x2b,0x5f,0xff,0x15,0x2d,
- 0x63,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6a,0xff,0x33,0x49,0x76,0xff,
- 0x8e,0x93,0xa1,0xff,0x87,0x8a,0x93,0xff,0x58,0x64,0x80,0xff,0x1e,0x37,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3a,
- 0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,
- 0x3e,0x77,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,
- 0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,
- 0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x48,
- 0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x82,0x2f,0x4a,0x85,0xff,
- 0x11,0x2f,0x49,0x84,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x4a,
- 0x85,0xff,0x33,0x4e,0x8a,0xff,0x34,0x50,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,
- 0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,
- 0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x82,0x3d,0x59,0x97,0xff,0x19,
- 0x3d,0x58,0x96,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3d,0x58,0x97,
- 0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,
- 0x9b,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x43,
- 0x5e,0x9e,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,
- 0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x64,0xa5,
- 0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,
- 0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x83,0x4d,0x6a,0xac,0xff,
- 0x3a,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,
- 0xb0,0xff,0x52,0x6f,0xb1,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,
- 0x2a,0x5f,0xff,0x14,0x2c,0x61,0xff,0x16,0x2f,0x65,0xff,0x16,0x30,0x66,0xff,
- 0x17,0x30,0x67,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,
- 0xff,0x20,0x38,0x6e,0xff,0x39,0x4c,0x78,0xff,0x3b,0x4e,0x77,0xff,0x2b,0x41,
- 0x71,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x38,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,
- 0x23,0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,
- 0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,
- 0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,
- 0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,
- 0x2f,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4a,0x85,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x31,0x4c,0x88,0xff,0x34,0x4f,
- 0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,
- 0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x39,0x55,0x93,0xff,0x3a,0x56,0x94,0xff,0x82,0x3b,0x57,0x95,0xff,0x10,0x3b,
- 0x56,0x94,0xff,0x3b,0x56,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,
- 0x3d,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,
- 0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,
- 0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x60,0xa0,0xff,0x45,
- 0x61,0xa1,0xff,0x82,0x46,0x62,0xa3,0xff,0x0d,0x46,0x63,0xa3,0xff,0x47,0x63,
- 0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,
- 0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,
- 0x4d,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,
- 0xff,0x84,0x52,0x6f,0xb1,0xff,0x36,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,
- 0x13,0x2a,0x5e,0xff,0x14,0x2b,0x60,0xff,0x15,0x2d,0x63,0xff,0x16,0x2f,0x66,
- 0xff,0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x1d,0x35,
- 0x6c,0xff,0x2e,0x44,0x74,0xff,0x36,0x49,0x72,0xff,0x39,0x4d,0x78,0xff,0x3a,
- 0x4d,0x78,0xff,0x27,0x3e,0x71,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,
- 0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x74,0xff,0x22,0x3b,0x74,
- 0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,
- 0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,
- 0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,
- 0x2b,0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,
- 0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x2f,0x4a,
- 0x85,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x4a,0x86,0xff,0x33,
- 0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,0xff,
- 0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x55,0x91,
- 0xff,0x39,0x55,0x92,0xff,0x3a,0x55,0x93,0xff,0x3a,0x55,0x92,0xff,0x82,0x39,
- 0x54,0x92,0xff,0x12,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,
- 0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x41,
- 0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5f,0x9f,0xff,0x45,0x61,0xa1,0xff,
- 0x47,0x63,0xa3,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x48,0x64,0xa5,
- 0xff,0x82,0x47,0x64,0xa5,0xff,0x08,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,
- 0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4d,0x6a,0xac,
- 0xff,0x4f,0x6c,0xae,0xff,0x51,0x6e,0xb0,0xff,0x86,0x52,0x6f,0xb1,0xff,0x48,
- 0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,
- 0xff,0x14,0x2c,0x61,0xff,0x15,0x2e,0x64,0xff,0x16,0x2f,0x67,0xff,0x17,0x30,
- 0x68,0xff,0x18,0x31,0x69,0xff,0x1b,0x34,0x6b,0xff,0x27,0x3e,0x70,0xff,0x30,
- 0x43,0x6e,0xff,0x38,0x4b,0x75,0xff,0x33,0x47,0x72,0xff,0x24,0x3b,0x6f,0xff,
- 0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x72,
- 0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,
- 0x76,0xff,0x25,0x3d,0x78,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,
- 0x40,0x7a,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,
- 0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,
- 0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,
- 0x85,0xff,0x2f,0x4b,0x86,0xff,0x30,0x4b,0x87,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x32,0x4d,0x89,0xff,0x34,0x4f,0x8b,0xff,
- 0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,
- 0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x38,0x53,0x90,0xff,0x38,0x52,
- 0x8f,0xff,0x38,0x53,0x90,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,
- 0xff,0x40,0x5a,0x9a,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x43,0x5e,
- 0x9d,0xff,0x44,0x61,0xa1,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,
- 0x65,0xa6,0xff,0x82,0x4a,0x66,0xa7,0xff,0x01,0x4a,0x67,0xa7,0xff,0x82,0x4a,
- 0x67,0xa8,0xff,0x06,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xaa,0xff,0x4d,0x69,0xab,
- 0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x51,0x6e,0xb0,0xff,0x87,0x52,
- 0x6f,0xb1,0xff,0x53,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x12,0x29,0x5d,
- 0xff,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x61,0xff,0x16,0x2e,
- 0x64,0xff,0x17,0x30,0x66,0xff,0x18,0x31,0x68,0xff,0x19,0x32,0x69,0xff,0x1b,
- 0x34,0x6b,0xff,0x1e,0x36,0x6b,0xff,0x22,0x39,0x6e,0xff,0x20,0x38,0x6d,0xff,
- 0x1e,0x37,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,
- 0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3c,
- 0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,
- 0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,
- 0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,
- 0xff,0x2c,0x45,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,
- 0x84,0xff,0x2e,0x4a,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x2e,
- 0x48,0x84,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x31,0x4b,0x87,0xff,
- 0x34,0x4f,0x8b,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,
- 0xff,0x36,0x52,0x8f,0xff,0x36,0x51,0x8e,0xff,0x36,0x50,0x8d,0xff,0x36,0x51,
- 0x8e,0xff,0x36,0x50,0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x39,
- 0x53,0x91,0xff,0x39,0x54,0x92,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,
- 0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,
- 0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5c,0x9b,0xff,0x42,0x5e,
- 0x9d,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,
- 0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,
- 0x4b,0x68,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,
- 0xff,0x4d,0x6a,0xab,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,
- 0xaf,0xff,0x51,0x6e,0xb0,0xff,0x87,0x52,0x6f,0xb1,0xff,0x2e,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x12,0x29,0x5d,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2b,
- 0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2e,0x63,0xff,0x17,
- 0x2f,0x66,0xff,0x18,0x31,0x68,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,
- 0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1e,0x37,0x6f,
- 0xff,0x1f,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,
- 0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x24,
- 0x3d,0x76,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,
- 0x4a,0x85,0xff,0x30,0x4b,0x86,0xff,0x2f,0x49,0x84,0xff,0x2e,0x47,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x33,0x4f,0x8a,0xff,0x34,0x50,0x8c,
- 0xff,0x82,0x35,0x50,0x8c,0xff,0x01,0x34,0x4e,0x8b,0xff,0x82,0x35,0x4f,0x8b,
- 0xff,0x21,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,
- 0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,
- 0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5e,
- 0x9d,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa1,0xff,0x45,0x63,0xa2,0xff,0x46,
- 0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,0x69,0xaa,
- 0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6a,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,
- 0xae,0xff,0x50,0x6d,0xae,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x86,
- 0x52,0x6f,0xb1,0xff,0x2e,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x12,0x29,
- 0x5d,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x15,0x2d,0x61,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,
- 0x18,0x30,0x67,0xff,0x19,0x32,0x69,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x34,0x6c,
- 0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,
- 0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,
- 0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,
- 0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,
- 0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,
- 0x48,0x83,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x2f,0x4b,0x86,0xff,
- 0x2e,0x49,0x84,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x32,0x4e,0x89,0xff,0x33,0x4f,0x8a,0xff,0x83,0x33,0x4d,0x89,0xff,0x23,
- 0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,
- 0x91,0xff,0x39,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x94,0xff,0x3c,
- 0x56,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3f,0x5a,0x99,0xff,
- 0x41,0x5d,0x9c,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,
- 0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,
- 0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x67,0xa7,0xff,0x4b,
- 0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,
- 0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,
- 0xff,0x51,0x6e,0xb0,0xff,0x86,0x52,0x6f,0xb1,0xff,0x02,0x02,0x02,0x04,0xff,
- 0x00,0x01,0x02,0xff,0x82,0x12,0x29,0x5d,0xff,0x29,0x13,0x2a,0x5e,0xff,0x14,
- 0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x17,0x2e,0x63,0xff,0x17,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x1a,0x31,0x68,
- 0xff,0x1a,0x33,0x6a,0xff,0x1b,0x35,0x6c,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,
- 0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,
- 0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,0x75,0xff,0x23,0x3d,0x76,0xff,
- 0x24,0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,
- 0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,
- 0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2b,0x45,0x81,0xff,0x2c,
- 0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2e,0x49,0x83,0xff,0x2e,0x4a,0x84,0xff,
- 0x2f,0x4a,0x85,0xff,0x2e,0x49,0x84,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x49,0x84,0xff,0x30,0x4b,0x86,0xff,0x82,0x31,0x4b,0x87,0xff,0x24,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,
- 0xff,0x35,0x4f,0x8b,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,
- 0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3d,0x58,0x96,0xff,
- 0x3e,0x5a,0x98,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,
- 0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x46,0x63,
- 0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,
- 0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,
- 0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,
- 0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x84,0x51,0x6e,0xb0,0xff,0x05,
- 0x50,0x6d,0xaf,0xff,0x4f,0x6c,0xae,0xff,0x4e,0x6b,0xad,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x82,0x12,0x29,0x5d,0xff,0x4c,0x13,0x2a,0x5e,0xff,
- 0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,
- 0x66,0xff,0x1a,0x32,0x67,0xff,0x1b,0x33,0x69,0xff,0x1c,0x33,0x6b,0xff,0x1d,
- 0x35,0x6d,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3d,0x76,
- 0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,0x40,
- 0x7a,0xff,0x27,0x40,0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,
- 0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,
- 0x2c,0x46,0x81,0xff,0x2d,0x48,0x82,0xff,0x2d,0x48,0x83,0xff,0x2e,0x49,0x84,
- 0xff,0x2f,0x4a,0x85,0xff,0x2e,0x48,0x83,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,
- 0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,
- 0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3c,0x57,0x95,0xff,0x3e,
- 0x5a,0x98,0xff,0x40,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,0xff,0x44,0x61,0xa0,
- 0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x49,0x65,
- 0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,
- 0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xaa,0xff,0x4e,0x6a,0xab,0xff,
- 0x83,0x4e,0x6b,0xac,0xff,0x82,0x4d,0x6a,0xac,0xff,0x82,0x4e,0x6b,0xad,0xff,
- 0x83,0x4d,0x6a,0xac,0xff,0x26,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,
- 0x2b,0x60,0xff,0x12,0x29,0x5d,0xff,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,
- 0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,
- 0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,
- 0x66,0xff,0x1a,0x31,0x67,0xff,0x1b,0x32,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,
- 0x35,0x6b,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6f,0xff,0x20,0x39,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,
- 0xff,0x24,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x2a,
- 0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,
- 0x2c,0x47,0x82,0xff,0x2d,0x48,0x83,0xff,0x82,0x2e,0x49,0x84,0xff,0x25,0x2d,
- 0x47,0x82,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,
- 0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,
- 0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x92,0xff,
- 0x3b,0x56,0x94,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5b,0x99,0xff,0x40,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x43,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,
- 0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x82,0x4c,0x68,
- 0xa9,0xff,0x02,0x4b,0x68,0xa9,0xff,0x4a,0x67,0xa8,0xff,0x82,0x4b,0x68,0xa9,
- 0xff,0x02,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x85,0x4d,0x6a,0xac,0xff,
- 0x4b,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,0x2c,0x62,0xff,0x13,0x2b,
- 0x60,0xff,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,
- 0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,
- 0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x70,0xff,0x20,
- 0x39,0x72,0xff,0x22,0x3b,0x74,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,
- 0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,
- 0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,
- 0x7f,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,
- 0x48,0x82,0xff,0x2c,0x47,0x81,0xff,0x2c,0x46,0x80,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8b,0xff,0x35,
- 0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,
- 0x38,0x52,0x8f,0xff,0x39,0x53,0x91,0xff,0x3b,0x56,0x94,0xff,0x3d,0x59,0x97,
- 0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,
- 0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,
- 0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x63,0xa2,0xff,
- 0x46,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,
- 0xff,0x82,0x49,0x66,0xa6,0xff,0x82,0x48,0x65,0xa5,0xff,0x07,0x48,0x65,0xa6,
- 0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,
- 0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x69,0xac,0xff,0x84,0x4d,0x6a,0xac,0xff,
- 0x02,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x82,0x13,0x2c,0x62,0xff,0x47,
- 0x13,0x2b,0x60,0xff,0x13,0x2a,0x5f,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,
- 0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,
- 0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,
- 0x32,0x68,0xff,0x1b,0x32,0x69,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,
- 0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,
- 0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x72,0xff,0x22,0x3c,0x75,0xff,0x24,0x3d,
- 0x76,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,
- 0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2b,0x45,0x7f,0xff,0x2b,0x45,0x7e,
- 0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,
- 0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x53,
- 0x90,0xff,0x3a,0x56,0x93,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,
- 0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9b,0xff,
- 0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9f,
- 0xff,0x43,0x60,0x9f,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa4,0xff,0x47,0x63,0xa3,0xff,0x82,
- 0x46,0x62,0xa3,0xff,0x09,0x46,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,
- 0xa5,0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,
- 0x68,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x83,0x4d,0x6a,0xac,
- 0xff,0x03,0x4e,0x6b,0xad,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x83,
- 0x13,0x2c,0x62,0xff,0x1e,0x13,0x2c,0x61,0xff,0x13,0x2b,0x60,0xff,0x14,0x2b,
- 0x5f,0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,
- 0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,
- 0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x22,
- 0x3b,0x73,0xff,0x23,0x3c,0x75,0xff,0x24,0x3e,0x77,0xff,0x26,0x3f,0x79,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,
- 0xff,0x2a,0x43,0x7e,0xff,0x83,0x29,0x43,0x7d,0xff,0x20,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x36,0x51,0x8e,0xff,0x38,0x53,0x90,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,
- 0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,
- 0x44,0x61,0xa1,0xff,0x82,0x45,0x62,0xa2,0xff,0x01,0x45,0x61,0xa1,0xff,0x82,
- 0x45,0x60,0xa0,0xff,0x0d,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x63,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,
- 0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,
- 0x4c,0x69,0xab,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x82,0x51,0x6e,
- 0xb0,0xff,0x02,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x84,0x13,0x2c,0x62,
- 0xff,0x1a,0x14,0x2d,0x62,0xff,0x14,0x2c,0x61,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,
- 0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6e,0xff,0x20,
- 0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,
- 0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x25,0x3e,0x77,0xff,0x26,0x40,0x79,
- 0xff,0x83,0x28,0x41,0x7b,0xff,0x21,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,
- 0x34,0x4e,0x8a,0xff,0x35,0x50,0x8d,0xff,0x38,0x53,0x90,0xff,0x39,0x55,0x92,
- 0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,
- 0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5f,0x9e,0xff,0x82,0x43,0x60,0x9f,0xff,0x82,0x43,0x5f,0x9e,0xff,0x0f,
- 0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,
- 0xff,0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,
- 0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,
- 0x68,0xaa,0xff,0x4e,0x6b,0xac,0xff,0x50,0x6c,0xae,0xff,0x51,0x6e,0xaf,0xff,
- 0x83,0x52,0x6f,0xb1,0xff,0x02,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x84,
- 0x13,0x2c,0x62,0xff,0x03,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2d,
- 0x63,0xff,0x82,0x15,0x2d,0x62,0xff,0x4c,0x16,0x2e,0x62,0xff,0x17,0x2e,0x63,
- 0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,
- 0x67,0xff,0x1b,0x32,0x69,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,
- 0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1f,0x37,0x6e,0xff,
- 0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x72,
- 0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,
- 0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,
- 0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,
- 0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,
- 0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,
- 0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,0xff,0x32,
- 0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x35,0x50,0x8d,0xff,0x37,0x53,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,
- 0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x97,0xff,0x3d,0x5a,
- 0x98,0xff,0x3e,0x5a,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9b,0xff,0x40,
- 0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5d,0x9c,0xff,
- 0x41,0x5d,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,
- 0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,0x61,
- 0xa2,0xff,0x46,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa5,0xff,0x49,
- 0x65,0xa7,0xff,0x4b,0x68,0xa9,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xad,0xff,
- 0x50,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x82,0x52,0x6f,
- 0xb1,0xff,0x03,0x51,0x6e,0xb0,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,
- 0x85,0x13,0x2c,0x62,0xff,0x30,0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,
- 0x2f,0x65,0xff,0x16,0x2e,0x64,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x1a,0x31,0x67,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,
- 0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x35,0x50,0x8d,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,
- 0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x1e,0x3a,0x56,0x93,0xff,0x3b,0x57,
- 0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,
- 0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,
- 0x40,0x5c,0x9a,0xff,0x3f,0x5b,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5b,0x9b,
- 0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5f,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x46,
- 0x62,0xa2,0xff,0x48,0x64,0xa5,0xff,0x4b,0x67,0xa8,0xff,0x4c,0x68,0xa9,0xff,
- 0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xae,
- 0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x82,0x52,0x6f,0xb1,0xff,0x03,
- 0x4f,0x6c,0xae,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x85,0x13,0x2c,
- 0x62,0xff,0x55,0x14,0x2d,0x63,0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,
- 0x16,0x2f,0x66,0xff,0x17,0x30,0x66,0xff,0x17,0x30,0x65,0xff,0x17,0x2f,0x65,
- 0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,
- 0x68,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,
- 0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1f,0x38,0x6f,0xff,
- 0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,
- 0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,
- 0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x28,
- 0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,
- 0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x34,0x50,0x8c,0xff,0x35,
- 0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,
- 0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,
- 0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5a,0x98,0xff,0x3e,
- 0x59,0x97,0xff,0x3f,0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,
- 0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,0x9e,
- 0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x46,0x62,0xa2,0xff,0x49,0x65,
- 0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,
- 0x6a,0xab,0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,
- 0x50,0x6d,0xae,0xff,0x51,0x6e,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x52,0x6f,0xb1,
- 0xff,0x4e,0x6b,0xad,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x85,0x13,
- 0x2c,0x62,0xff,0x39,0x13,0x2c,0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,0x65,
- 0xff,0x16,0x2f,0x66,0xff,0x16,0x30,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,
- 0x68,0xff,0x18,0x31,0x67,0xff,0x19,0x31,0x67,0xff,0x19,0x31,0x66,0xff,0x1a,
- 0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,
- 0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x38,0x6f,
- 0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,
- 0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,
- 0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x44,0x7d,
- 0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x33,0x4e,0x8a,0xff,0x34,0x50,0x8c,0xff,
- 0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,
- 0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,
- 0x5a,0x97,0xff,0x3e,0x59,0x98,0xff,0x82,0x3d,0x58,0x96,0xff,0x1a,0x3e,0x58,
- 0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x5a,0x98,0xff,0x40,0x5b,0x9a,0xff,0x41,
- 0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,
- 0x44,0x5f,0x9f,0xff,0x47,0x62,0xa2,0xff,0x48,0x64,0xa5,0xff,0x4a,0x66,0xa6,
- 0xff,0x4b,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4d,0x69,
- 0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x50,
- 0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,
- 0x4d,0x6a,0xac,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x86,0x13,0x2c,
- 0x62,0xff,0x09,0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,0x2f,0x65,0xff,
- 0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,
- 0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6a,0xff,0x82,0x1a,0x33,0x69,0xff,0x32,
- 0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,
- 0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,
- 0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,
- 0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7a,
- 0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,
- 0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,
- 0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,
- 0x33,0x4e,0x8a,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x51,0x8e,
- 0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x39,0x55,
- 0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,
- 0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3c,0x58,0x95,0xff,0x3b,0x56,0x94,0xff,
- 0x3b,0x56,0x95,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,
- 0xff,0x3f,0x59,0x98,0xff,0x82,0x40,0x5b,0x9a,0xff,0x15,0x41,0x5c,0x9b,0xff,
- 0x42,0x5d,0x9c,0xff,0x43,0x5f,0x9e,0xff,0x46,0x62,0xa2,0xff,0x48,0x64,0xa4,
- 0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x67,
- 0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,
- 0x6b,0xac,0xff,0x4f,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,
- 0x51,0x6e,0xb0,0xff,0x4e,0x6b,0xad,0xff,0x4d,0x6a,0xac,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x86,0x13,0x2c,0x62,0xff,0x36,0x14,0x2d,0x63,0xff,
- 0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,
- 0xff,0x17,0x31,0x68,0xff,0x18,0x31,0x68,0xff,0x19,0x32,0x69,0xff,0x19,0x33,
- 0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x35,0x6c,0xff,0x1c,0x35,0x6c,0xff,0x1c,
- 0x35,0x6b,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,
- 0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,
- 0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,
- 0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,
- 0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x84,0xff,0x30,0x4b,0x87,0xff,0x34,
- 0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,
- 0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,
- 0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x56,
- 0x94,0xff,0x82,0x3a,0x55,0x93,0xff,0x16,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,
- 0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,
- 0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5e,0x9d,0xff,0x44,
- 0x61,0xa1,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa9,
- 0xff,0x4c,0x69,0xa9,0xff,0x4d,0x6a,0xaa,0xff,0x4e,0x6a,0xab,0xff,0x4e,0x6b,
- 0xac,0xff,0x4f,0x6c,0xad,0xff,0x82,0x50,0x6d,0xae,0xff,0x04,0x4c,0x69,0xab,
- 0xff,0x4d,0x6a,0xac,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x86,0x13,
- 0x2c,0x62,0xff,0x0c,0x13,0x2d,0x63,0xff,0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,
- 0xff,0x15,0x2f,0x65,0xff,0x16,0x30,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,
- 0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,
- 0x34,0x6c,0xff,0x1c,0x35,0x6d,0xff,0x82,0x1d,0x36,0x6e,0xff,0x46,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,0x6f,0xff,0x1f,
- 0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x81,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x32,0x4d,0x89,0xff,0x34,0x50,0x8c,0xff,0x35,0x51,
- 0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,
- 0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,0x56,0x93,0xff,
- 0x3a,0x54,0x92,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x92,
- 0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,
- 0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,
- 0x5d,0x9c,0xff,0x43,0x60,0xa0,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x64,0xa4,0xff,0x48,0x65,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,
- 0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4d,0x69,
- 0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4f,0x6c,0xad,0xff,0x4f,
- 0x6c,0xae,0xff,0x4d,0x6a,0xac,0xff,0x4c,0x69,0xab,0xff,0x4d,0x6a,0xac,0xff,
- 0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x87,0x13,0x2c,0x62,0xff,0x53,0x14,
- 0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,
- 0x17,0x30,0x67,0xff,0x17,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x6a,
- 0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,
- 0x6b,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,
- 0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,
- 0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,
- 0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,0x28,0x42,0x7a,0xff,0x28,
- 0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,
- 0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,
- 0x86,0xff,0x33,0x4e,0x8a,0xff,0x35,0x51,0x8d,0xff,0x35,0x51,0x8e,0xff,0x36,
- 0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,0x38,0x54,0x91,0xff,
- 0x39,0x54,0x91,0xff,0x38,0x53,0x90,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,
- 0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,
- 0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,
- 0x5a,0x99,0xff,0x40,0x5c,0x9b,0xff,0x42,0x5f,0x9e,0xff,0x44,0x61,0xa0,0xff,
- 0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,
- 0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,
- 0xa8,0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,
- 0x6b,0xac,0xff,0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xad,0xff,0x4b,0x68,0xaa,0xff,
- 0x4c,0x69,0xaa,0xff,0x4c,0x69,0xab,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,
- 0xff,0x87,0x13,0x2c,0x62,0xff,0x31,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,
- 0x15,0x2e,0x65,0xff,0x16,0x2f,0x66,0xff,0x16,0x30,0x67,0xff,0x17,0x31,0x68,
- 0xff,0x18,0x31,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6a,0xff,0x1a,0x32,0x69,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x34,0x6a,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,
- 0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,
- 0xff,0x21,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x74,0xff,0x24,0x3d,
- 0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,
- 0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,
- 0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x87,0xff,0x34,
- 0x4f,0x8b,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x37,0x53,0x8f,0xff,
- 0x38,0x53,0x90,0xff,0x38,0x53,0x8f,0xff,0x82,0x37,0x51,0x8e,0xff,0x20,0x37,
- 0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x56,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,
- 0xff,0x3e,0x59,0x97,0xff,0x3f,0x5b,0x99,0xff,0x41,0x5e,0x9d,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,
- 0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x69,0xa9,
- 0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4d,0x6a,
- 0xab,0xff,0x4b,0x68,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x02,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,0xff,0x05,0x14,0x2d,
- 0x63,0xff,0x15,0x2e,0x64,0xff,0x15,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,
- 0x30,0x67,0xff,0x82,0x18,0x31,0x68,0xff,0x29,0x18,0x31,0x67,0xff,0x19,0x30,
- 0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x34,0x6a,0xff,0x1b,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,
- 0x1e,0x38,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,
- 0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,
- 0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,
- 0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,
- 0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x32,
- 0x4d,0x89,0xff,0x35,0x51,0x8d,0xff,0x36,0x52,0x8e,0xff,0x36,0x52,0x8f,0xff,
- 0x36,0x51,0x8d,0xff,0x35,0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x20,0x37,
- 0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,
- 0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,
- 0xff,0x3e,0x59,0x98,0xff,0x40,0x5c,0x9b,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,
- 0x63,0xa2,0xff,0x47,0x64,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,
- 0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x68,0xa9,
- 0xff,0x4d,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4e,0x6b,0xac,0xff,0x4b,0x67,
- 0xa8,0xff,0x4b,0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x4c,0x69,0xab,0xff,0x02,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,0xff,0x52,0x14,0x2d,
- 0x63,0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,
- 0x30,0x66,0xff,0x17,0x2f,0x65,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,
- 0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x35,0x6a,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,
- 0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,
- 0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,
- 0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x77,0xff,0x25,0x3f,0x77,
- 0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,
- 0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,
- 0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x33,0x4e,0x8a,0xff,0x35,0x51,0x8d,0xff,0x35,0x4f,
- 0x8b,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,
- 0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,
- 0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,
- 0xff,0x3d,0x57,0x96,0xff,0x3f,0x5b,0x99,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,
- 0x9d,0xff,0x43,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,
- 0x62,0xa1,0xff,0x45,0x63,0xa2,0xff,0x46,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,
- 0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,
- 0xff,0x4c,0x68,0xa9,0xff,0x4c,0x69,0xaa,0xff,0x4d,0x6a,0xab,0xff,0x4c,0x69,
- 0xaa,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,0x4c,
- 0x69,0xaa,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,
- 0xff,0x52,0x13,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,0x64,0xff,0x15,
- 0x2e,0x63,0xff,0x15,0x2d,0x62,0xff,0x16,0x2e,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1f,0x38,0x6f,0xff,0x1f,
- 0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x33,0x4e,
- 0x8a,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,
- 0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,
- 0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x92,
- 0xff,0x3b,0x56,0x94,0xff,0x3d,0x59,0x97,0xff,0x3f,0x5c,0x9a,0xff,0x41,0x5d,
- 0x9c,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,
- 0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x64,0xa4,0xff,0x48,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,0xa7,
- 0xff,0x4b,0x67,0xa7,0xff,0x4b,0x68,0xa8,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x69,
- 0xaa,0xff,0x4a,0x66,0xa7,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,
- 0x67,0xa9,0xff,0x4b,0x68,0xaa,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,
- 0x89,0x13,0x2c,0x62,0xff,0x30,0x14,0x2c,0x61,0xff,0x14,0x2b,0x60,0xff,0x14,
- 0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1c,0x35,
- 0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,
- 0x4f,0x8c,0xff,0x82,0x36,0x50,0x8d,0xff,0x16,0x37,0x51,0x8e,0xff,0x38,0x52,
- 0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x55,0x93,0xff,0x3c,
- 0x57,0x95,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,
- 0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x43,0x60,0x9f,0xff,0x43,0x60,0xa0,
- 0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,0xa2,0xff,0x47,0x64,
- 0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,
- 0x67,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x82,0x4c,0x68,0xa9,0xff,0x07,0x48,0x65,
- 0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x4a,0x67,0xa9,0xff,0x4b,
- 0x68,0xaa,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x86,0x13,0x2c,0x62,
- 0xff,0x54,0x13,0x2c,0x61,0xff,0x13,0x2b,0x60,0xff,0x12,0x2a,0x5e,0xff,0x13,
- 0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,
- 0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x65,
- 0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,
- 0x68,0xff,0x1b,0x33,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,
- 0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,
- 0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x41,0x7a,0xff,0x28,
- 0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,
- 0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,
- 0xff,0x39,0x53,0x91,0xff,0x3b,0x55,0x93,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x48,0x64,0xa4,
- 0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,
- 0xa8,0xff,0x4b,0x68,0xa9,0xff,0x49,0x66,0xa7,0xff,0x48,0x64,0xa6,0xff,0x49,
- 0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x68,0xa9,0xff,
- 0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x85,0x13,0x2c,0x62,0xff,0x02,0x13,
- 0x2b,0x60,0xff,0x12,0x2a,0x5e,0xff,0x82,0x12,0x29,0x5d,0xff,0x49,0x12,0x29,
- 0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,
- 0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,
- 0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,
- 0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x38,0x6e,0xff,0x1f,0x38,0x70,0xff,0x20,
- 0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,
- 0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,
- 0xff,0x26,0x40,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,
- 0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x81,0xff,
- 0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,
- 0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,
- 0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x90,0xff,
- 0x39,0x54,0x91,0xff,0x3b,0x57,0x94,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,
- 0xff,0x3f,0x5c,0x99,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,
- 0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa3,0xff,
- 0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x4a,0x66,0xa6,0xff,0x4a,0x67,0xa7,
- 0xff,0x4b,0x67,0xa8,0xff,0x82,0x48,0x64,0xa5,0xff,0x06,0x48,0x65,0xa6,0xff,
- 0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x4b,0x67,0xa9,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x83,0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x60,0xff,
- 0x12,0x2a,0x5f,0xff,0x85,0x12,0x29,0x5d,0xff,0x18,0x13,0x2a,0x5e,0xff,0x14,
- 0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,
- 0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,
- 0xff,0x82,0x25,0x3e,0x77,0xff,0x39,0x25,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8a,
- 0xff,0x35,0x4f,0x8b,0xff,0x35,0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,
- 0x8e,0xff,0x38,0x52,0x8f,0xff,0x3a,0x55,0x92,0xff,0x3c,0x58,0x96,0xff,0x3d,
- 0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,
- 0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x43,0x5f,0x9e,
- 0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,0x63,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,
- 0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,0x49,0x65,0xa6,0xff,0x47,0x63,0xa4,0xff,
- 0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,0x4a,0x66,0xa8,
- 0xff,0x4a,0x67,0xa9,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x13,0x2c,
- 0x62,0xff,0x13,0x2b,0x61,0xff,0x12,0x2a,0x5f,0xff,0x87,0x12,0x29,0x5d,0xff,
- 0x18,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,
- 0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,
- 0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,0xff,
- 0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6e,0xff,0x1f,0x39,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,
- 0x3c,0x74,0xff,0x24,0x3e,0x77,0xff,0x82,0x27,0x40,0x7a,0xff,0x37,0x26,0x3f,
- 0x79,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,
- 0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,
- 0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x53,0x90,0xff,0x3a,0x56,0x94,
- 0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,
- 0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x42,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,
- 0x45,0x62,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,
- 0xff,0x49,0x65,0xa5,0xff,0x49,0x65,0xa6,0xff,0x4a,0x66,0xa7,0xff,0x47,0x63,
- 0xa4,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,0xa5,0xff,0x49,
- 0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x67,0xa8,0xff,0x02,0x02,0x04,0xff,
- 0x00,0x01,0x02,0xff,0x12,0x2b,0x5f,0xff,0x89,0x12,0x29,0x5d,0xff,0x50,0x12,
- 0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x15,0x2c,0x60,0xff,
- 0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,
- 0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1b,0x32,
- 0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,
- 0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,
- 0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x73,0xff,0x23,0x3d,0x76,
- 0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,
- 0x7c,0xff,0x27,0x40,0x7a,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,
- 0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x39,0x54,0x91,0xff,0x3b,0x57,0x94,
- 0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,
- 0x98,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9c,0xff,0x41,
- 0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x60,0x9f,0xff,
- 0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa2,0xff,0x47,0x64,0xa3,
- 0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x48,0x64,0xa5,0xff,0x45,0x62,
- 0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,
- 0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x4a,0x66,0xa8,0xff,0x02,0x02,0x04,0xff,
- 0x00,0x01,0x02,0xff,0x8b,0x12,0x29,0x5d,0xff,0x4f,0x13,0x2a,0x5e,0xff,0x13,
- 0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,
- 0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,
- 0x23,0x3c,0x75,0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,
- 0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,0x27,0x41,
- 0x7b,0xff,0x27,0x41,0x79,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,
- 0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,
- 0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x37,0x52,0x8f,0xff,
- 0x3a,0x55,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,
- 0x46,0x63,0xa2,0xff,0x47,0x63,0xa3,0xff,0x48,0x64,0xa4,0xff,0x49,0x65,0xa5,
- 0xff,0x46,0x62,0xa2,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,
- 0xa4,0xff,0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa7,0xff,0x4a,
- 0x66,0xa7,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8b,0x12,0x29,0x5d,
- 0xff,0x4f,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,
- 0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,
- 0x39,0x70,0xff,0x22,0x3b,0x74,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x77,0xff,
- 0x25,0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x28,0x41,0x7b,
- 0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x27,0x41,0x7b,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x44,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,
- 0x2d,0x47,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4e,0x8b,0xff,0x36,
- 0x50,0x8d,0xff,0x38,0x53,0x90,0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,
- 0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x97,0xff,0x3d,0x5a,0x97,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,
- 0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,
- 0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,
- 0x47,0x64,0xa4,0xff,0x48,0x64,0xa3,0xff,0x46,0x61,0xa1,0xff,0x45,0x61,0xa2,
- 0xff,0x46,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x48,0x64,
- 0xa5,0xff,0x49,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x02,0x02,0x04,0xff,0x00,
- 0x01,0x02,0xff,0x8c,0x12,0x29,0x5d,0xff,0x4e,0x13,0x2a,0x5e,0xff,0x14,0x2b,
- 0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,
- 0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,
- 0xff,0x1c,0x35,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1f,0x38,
- 0x6f,0xff,0x21,0x3a,0x73,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,
- 0x3e,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,
- 0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x28,0x42,0x7c,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,
- 0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,
- 0x8b,0xff,0x36,0x51,0x8d,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,
- 0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9a,
- 0xff,0x40,0x5d,0x9b,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x43,0x60,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,0x46,
- 0x63,0xa2,0xff,0x47,0x64,0xa3,0xff,0x46,0x61,0xa1,0xff,0x45,0x60,0xa0,0xff,
- 0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,
- 0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x66,0xa7,0xff,0x02,0x02,
- 0x04,0xff,0x00,0x01,0x02,0xff,0x8c,0x12,0x29,0x5d,0xff,0x1a,0x13,0x2a,0x5e,
- 0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,
- 0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,
- 0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,
- 0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1d,0x35,0x6c,0xff,0x1e,0x37,0x6e,
- 0xff,0x20,0x39,0x72,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3c,
- 0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x40,0x7b,0xff,0x28,0x41,0x7c,0xff,0x82,0x28,0x42,0x7c,
- 0xff,0x25,0x27,0x41,0x7a,0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,
- 0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x35,
- 0x4f,0x8b,0xff,0x37,0x52,0x8f,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,
- 0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x45,0x62,0xa1,0xff,
- 0x82,0x45,0x63,0xa2,0xff,0x0b,0x44,0x60,0xa0,0xff,0x45,0x60,0xa0,0xff,0x45,
- 0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,
- 0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x49,0x65,0xa6,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x8c,0x12,0x29,0x5d,0xff,0x19,0x12,0x2a,0x5e,0xff,
- 0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x61,
- 0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,
- 0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x33,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1d,0x36,0x6d,0xff,0x1f,0x38,0x71,0xff,
- 0x20,0x3a,0x72,0xff,0x21,0x3b,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,
- 0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x3f,
- 0x79,0xff,0x27,0x40,0x7a,0xff,0x82,0x27,0x41,0x7b,0xff,0x33,0x26,0x40,0x79,
- 0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,
- 0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,
- 0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x35,0x4f,
- 0x8c,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,
- 0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,
- 0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,
- 0xff,0x40,0x5c,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,
- 0x9e,0xff,0x43,0x60,0x9f,0xff,0x44,0x61,0xa0,0xff,0x44,0x61,0xa1,0xff,0x45,
- 0x62,0xa1,0xff,0x44,0x61,0xa0,0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,
- 0x45,0x60,0xa1,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,
- 0xff,0x47,0x63,0xa4,0xff,0x48,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x02,0x02,
- 0x04,0xff,0x00,0x01,0x02,0xff,0x8d,0x12,0x29,0x5d,0xff,0x17,0x13,0x2a,0x5e,
- 0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,
- 0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,
- 0x30,0x66,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x6a,0xff,
- 0x1c,0x35,0x6c,0xff,0x1e,0x37,0x6f,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,
- 0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,
- 0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x82,
- 0x26,0x40,0x79,0xff,0x26,0x25,0x3f,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,
- 0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,
- 0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,
- 0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x8a,0xff,0x35,0x50,0x8d,0xff,0x37,
- 0x53,0x90,0xff,0x38,0x54,0x90,0xff,0x39,0x55,0x91,0xff,0x39,0x55,0x92,0xff,
- 0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3d,0x58,0x96,
- 0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x99,0xff,0x40,0x5c,
- 0x9a,0xff,0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9c,0xff,0x42,0x5f,0x9d,0xff,0x42,
- 0x5f,0x9e,0xff,0x43,0x60,0x9f,0xff,0x82,0x44,0x61,0xa0,0xff,0x0c,0x43,0x5f,
- 0x9e,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,
- 0x47,0x64,0xa5,0xff,0x48,0x65,0xa6,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,
- 0xff,0x8d,0x12,0x29,0x5d,0xff,0x15,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,
- 0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,
- 0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x1a,0x31,
- 0x67,0xff,0x1b,0x32,0x68,0xff,0x1c,0x34,0x6b,0xff,0x1d,0x36,0x6e,0xff,0x1f,
- 0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,
- 0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,
- 0xff,0x82,0x25,0x3e,0x78,0xff,0x36,0x24,0x3e,0x77,0xff,0x24,0x3e,0x76,0xff,
- 0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x2f,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,
- 0xff,0x33,0x4d,0x89,0xff,0x36,0x51,0x8d,0xff,0x37,0x53,0x8f,0xff,0x38,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,
- 0x57,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,
- 0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,
- 0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x60,
- 0x9f,0xff,0x44,0x61,0xa0,0xff,0x43,0x60,0x9f,0xff,0x42,0x5e,0x9d,0xff,0x43,
- 0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,
- 0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,0x63,0xa4,0xff,0x47,0x64,0xa4,
- 0xff,0x48,0x64,0xa6,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8d,0x12,
- 0x29,0x5d,0xff,0x4d,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,
- 0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,
- 0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1b,
- 0x33,0x6a,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,
- 0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x72,0xff,0x21,0x3a,0x73,
- 0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x23,0x3d,
- 0x76,0xff,0x23,0x3d,0x75,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,
- 0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,
- 0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x46,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x33,0x4d,0x89,0xff,0x35,0x50,0x8d,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,0xff,0x3a,0x56,
- 0x94,0xff,0x3b,0x57,0x95,0xff,0x3b,0x58,0x95,0xff,0x3d,0x59,0x97,0xff,0x3e,
- 0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5c,0x9b,0xff,
- 0x40,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,0x43,0x5f,0x9f,
- 0xff,0x44,0x60,0x9f,0xff,0x42,0x5e,0x9d,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,
- 0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x47,0x63,0xa4,0xff,
- 0x48,0x64,0xa5,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8e,0x12,0x29,
- 0x5d,0xff,0x3d,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,
- 0xff,0x18,0x30,0x66,0xff,0x1a,0x32,0x69,0xff,0x1b,0x34,0x6c,0xff,0x1c,0x35,
- 0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x1f,
- 0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,
- 0x23,0x3c,0x75,0xff,0x22,0x3c,0x75,0xff,0x22,0x3c,0x74,0xff,0x22,0x3b,0x73,
- 0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3e,
- 0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,0x28,
- 0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,
- 0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x34,
- 0x4e,0x8b,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,0x90,0xff,
- 0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x94,
- 0xff,0x3b,0x58,0x95,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,0x5a,
- 0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,
- 0x5e,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x82,0x42,0x5f,0x9e,0xff,0x0d,0x41,0x5d,
- 0x9c,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,
- 0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,
- 0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x47,0x64,0xa5,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x8e,0x12,0x29,0x5d,0xff,0x4c,0x13,0x2a,0x5e,0xff,
- 0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x65,0xff,0x18,0x31,0x68,0xff,0x1a,0x33,
- 0x6a,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,
- 0x37,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,
- 0x21,0x3a,0x73,0xff,0x21,0x3b,0x73,0xff,0x21,0x3b,0x74,0xff,0x21,0x3b,0x72,
- 0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3d,
- 0x74,0xff,0x24,0x3d,0x75,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,
- 0x40,0x78,0xff,0x27,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,
- 0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,
- 0x4a,0x86,0xff,0x32,0x4b,0x87,0xff,0x33,0x4d,0x89,0xff,0x35,0x51,0x8d,0xff,
- 0x37,0x53,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,
- 0xff,0x3a,0x56,0x93,0xff,0x3a,0x56,0x94,0xff,0x3b,0x57,0x95,0xff,0x3c,0x59,
- 0x96,0xff,0x3d,0x59,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,
- 0x5c,0x9a,0xff,0x40,0x5d,0x9b,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5e,0x9d,0xff,
- 0x42,0x5e,0x9d,0xff,0x41,0x5d,0x9c,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5c,0x9c,
- 0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9e,0xff,0x44,0x60,
- 0xa0,0xff,0x45,0x60,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x46,
- 0x63,0xa3,0xff,0x47,0x64,0xa4,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,
- 0x8f,0x12,0x29,0x5d,0xff,0x30,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x15,
- 0x2c,0x60,0xff,0x15,0x2c,0x62,0xff,0x16,0x2e,0x64,0xff,0x17,0x30,0x67,0xff,
- 0x18,0x32,0x69,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,0x6c,0xff,0x1b,0x35,0x6d,
- 0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,
- 0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x72,0xff,0x21,0x3a,0x72,0xff,0x20,
- 0x3a,0x71,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x34,0x4f,0x8b,0xff,0x36,0x52,0x8f,0xff,0x37,0x53,0x90,0xff,0x38,
- 0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x09,0x3a,0x56,0x93,0xff,0x3b,0x57,
- 0x94,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,
- 0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5d,0x9b,0xff,
- 0x82,0x41,0x5e,0x9d,0xff,0x82,0x40,0x5b,0x9a,0xff,0x0c,0x41,0x5c,0x9b,0xff,
- 0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,
- 0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x46,0x63,
- 0xa3,0xff,0x47,0x63,0xa4,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8f,
- 0x12,0x29,0x5d,0xff,0x4b,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2c,
- 0x61,0xff,0x15,0x2d,0x63,0xff,0x16,0x2f,0x65,0xff,0x17,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x34,0x6b,0xff,0x1b,0x35,0x6c,0xff,
- 0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x37,0x6f,0xff,0x1f,0x38,0x70,
- 0xff,0x1f,0x38,0x71,0xff,0x20,0x39,0x71,0xff,0x1f,0x39,0x70,0xff,0x1f,0x38,
- 0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,
- 0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,
- 0x25,0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,
- 0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,
- 0xff,0x33,0x4d,0x89,0xff,0x36,0x51,0x8d,0xff,0x37,0x53,0x8f,0xff,0x38,0x54,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,
- 0x57,0x94,0xff,0x3c,0x58,0x96,0xff,0x3c,0x59,0x97,0xff,0x3d,0x5a,0x97,0xff,
- 0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x40,0x5d,0x9b,
- 0xff,0x41,0x5d,0x9c,0xff,0x40,0x5c,0x9b,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,
- 0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,
- 0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,
- 0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,0x47,0x63,0xa4,0xff,0x02,0x02,0x04,
- 0xff,0x00,0x01,0x02,0xff,0x8f,0x12,0x29,0x5d,0xff,0x0f,0x12,0x2a,0x5e,0xff,
- 0x13,0x2b,0x5f,0xff,0x14,0x2c,0x62,0xff,0x15,0x2e,0x64,0xff,0x16,0x2f,0x66,
- 0xff,0x17,0x30,0x67,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,
- 0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x36,0x6e,0xff,0x1d,
- 0x36,0x6f,0xff,0x1e,0x37,0x70,0xff,0x1f,0x38,0x70,0xff,0x83,0x1e,0x37,0x6e,
- 0xff,0x28,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,
- 0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,
- 0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,
- 0x46,0x81,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,
- 0xff,0x33,0x4c,0x89,0xff,0x35,0x4f,0x8b,0xff,0x37,0x53,0x8f,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3a,
- 0x56,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x3d,0x59,0x97,0xff,
- 0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5c,0x9a,0xff,0x82,0x40,0x5c,
- 0x9b,0xff,0x82,0x3f,0x5a,0x99,0xff,0x0d,0x40,0x5b,0x9a,0xff,0x41,0x5b,0x9b,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x44,0x5f,
- 0x9e,0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,
- 0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,
- 0x8f,0x12,0x29,0x5d,0xff,0x1e,0x12,0x2a,0x5e,0xff,0x13,0x2b,0x60,0xff,0x14,
- 0x2d,0x63,0xff,0x15,0x2f,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,
- 0x18,0x31,0x68,0xff,0x19,0x32,0x6a,0xff,0x19,0x33,0x6b,0xff,0x1a,0x34,0x6b,
- 0xff,0x1b,0x35,0x6c,0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6e,0xff,0x1e,0x36,
- 0x6f,0xff,0x1d,0x36,0x6d,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,
- 0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,
- 0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,
- 0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x11,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x34,0x4d,0x8a,0xff,0x36,0x51,0x8d,0xff,0x37,0x53,0x90,
- 0xff,0x38,0x54,0x91,0xff,0x82,0x39,0x55,0x92,0xff,0x18,0x3a,0x56,0x93,0xff,
- 0x3b,0x57,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,
- 0xff,0x3e,0x5b,0x99,0xff,0x3f,0x5b,0x9a,0xff,0x3f,0x5c,0x9a,0xff,0x3f,0x5b,
- 0x99,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,
- 0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,
- 0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,
- 0xff,0x45,0x62,0xa2,0xff,0x46,0x63,0xa3,0xff,0x02,0x02,0x04,0xff,0x00,0x01,
- 0x02,0xff,0x8f,0x12,0x29,0x5d,0xff,0x4b,0x12,0x2a,0x5f,0xff,0x13,0x2c,0x62,
- 0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,
- 0x67,0xff,0x18,0x31,0x68,0xff,0x18,0x32,0x69,0xff,0x19,0x33,0x6a,0xff,0x1a,
- 0x34,0x6b,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x35,0x6d,0xff,0x1c,0x35,0x6d,0xff,
- 0x1c,0x35,0x6c,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,
- 0x70,0xff,0x21,0x3a,0x71,0xff,0x22,0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,
- 0x3d,0x74,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,
- 0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,
- 0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,
- 0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,
- 0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,0xff,0x33,0x4d,0x89,0xff,0x35,0x4f,0x8b,
- 0xff,0x37,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,
- 0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,0x57,0x95,0xff,0x3c,0x58,0x95,0xff,0x3c,
- 0x59,0x96,0xff,0x3d,0x5a,0x97,0xff,0x3e,0x5a,0x98,0xff,0x3f,0x5b,0x99,0xff,
- 0x3f,0x5b,0x9a,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x59,0x97,0xff,0x3e,0x59,0x98,
- 0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,
- 0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,
- 0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,0x61,0xa2,0xff,0x46,0x62,0xa3,0xff,
- 0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8e,0x12,0x29,0x5d,0xff,0x3c,0x12,
- 0x2a,0x5f,0xff,0x13,0x2b,0x61,0xff,0x13,0x2c,0x63,0xff,0x14,0x2d,0x64,0xff,
- 0x15,0x2e,0x65,0xff,0x16,0x2f,0x65,0xff,0x16,0x30,0x66,0xff,0x17,0x30,0x67,
- 0xff,0x18,0x32,0x69,0xff,0x19,0x32,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x34,
- 0x6c,0xff,0x1b,0x34,0x6c,0xff,0x1b,0x34,0x6b,0xff,0x1b,0x34,0x6a,0xff,0x1b,
- 0x34,0x6b,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x37,0x6d,0xff,
- 0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,
- 0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,
- 0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,
- 0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,
- 0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,
- 0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x8a,0xff,0x35,0x50,0x8d,0xff,
- 0x37,0x53,0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x39,0x56,0x93,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,
- 0x97,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x5b,0x99,0xff,0x3e,0x5a,0x98,0xff,0x82,
- 0x3d,0x58,0x97,0xff,0x0e,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,
- 0x9a,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,
- 0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,
- 0x45,0x61,0xa1,0xff,0x45,0x62,0xa2,0xff,0x01,0x02,0x04,0xff,0x00,0x01,0x02,
- 0xff,0x8d,0x12,0x29,0x5d,0xff,0x02,0x12,0x2a,0x5f,0xff,0x13,0x2c,0x61,0xff,
- 0x82,0x13,0x2c,0x62,0xff,0x0a,0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,
- 0x2e,0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x18,0x31,0x69,0xff,
- 0x19,0x32,0x6a,0xff,0x19,0x33,0x6a,0xff,0x1a,0x33,0x6b,0xff,0x1a,0x33,0x6a,
- 0xff,0x82,0x1b,0x33,0x69,0xff,0x3d,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,
- 0x1c,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,
- 0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,
- 0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x75,0xff,0x25,
- 0x3e,0x77,0xff,0x25,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x79,0xff,
- 0x28,0x42,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,
- 0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,
- 0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,
- 0x33,0x4c,0x89,0xff,0x34,0x4f,0x8b,0xff,0x37,0x52,0x8e,0xff,0x38,0x54,0x90,
- 0xff,0x38,0x55,0x91,0xff,0x39,0x56,0x92,0xff,0x3a,0x57,0x94,0xff,0x3b,0x57,
- 0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3d,0x5a,0x98,0xff,0x3e,
- 0x5a,0x98,0xff,0x3d,0x58,0x96,0xff,0x3d,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,
- 0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x45,
- 0x62,0xa2,0xff,0x02,0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8b,0x12,0x29,0x5d,
- 0xff,0x03,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x13,0x2c,0x61,0xff,0x83,
- 0x13,0x2c,0x62,0xff,0x36,0x14,0x2d,0x63,0xff,0x14,0x2d,0x64,0xff,0x15,0x2e,
- 0x65,0xff,0x16,0x2f,0x66,0xff,0x16,0x30,0x67,0xff,0x18,0x31,0x68,0xff,0x18,
- 0x32,0x69,0xff,0x19,0x32,0x69,0xff,0x19,0x32,0x68,0xff,0x1a,0x32,0x67,0xff,
- 0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,
- 0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,
- 0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,
- 0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,
- 0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x40,0x79,
- 0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,
- 0x46,0x81,0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x86,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x8a,0xff,0x35,0x50,0x8c,0xff,0x37,0x53,
- 0x90,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,0xff,0x3b,
- 0x57,0x94,0xff,0x3c,0x58,0x95,0xff,0x3c,0x59,0x96,0xff,0x82,0x3d,0x59,0x97,
- 0xff,0x82,0x3c,0x57,0x95,0xff,0x0f,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,
- 0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x43,0x5f,
- 0x9f,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x01,
- 0x02,0x04,0xff,0x00,0x01,0x02,0xff,0x8b,0x12,0x29,0x5d,0xff,0x01,0x13,0x2a,
- 0x60,0xff,0x85,0x13,0x2c,0x62,0xff,0x49,0x13,0x2c,0x63,0xff,0x14,0x2d,0x63,
- 0xff,0x15,0x2e,0x64,0xff,0x15,0x2f,0x65,0xff,0x17,0x30,0x66,0xff,0x17,0x31,
- 0x68,0xff,0x18,0x31,0x68,0xff,0x18,0x31,0x67,0xff,0x19,0x30,0x66,0xff,0x19,
- 0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x68,0xff,0x1b,0x33,0x69,0xff,
- 0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,
- 0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,
- 0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x3f,0x78,0xff,
- 0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,
- 0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,
- 0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x36,0x51,0x8e,0xff,0x38,0x54,0x91,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,
- 0x93,0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3c,0x58,0x96,0xff,0x3d,
- 0x59,0x97,0xff,0x3c,0x57,0x95,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,
- 0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x98,
- 0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,
- 0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,
- 0x60,0xa0,0xff,0x45,0x61,0xa1,0xff,0x02,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x89,0x12,0x29,0x5d,0xff,0x02,0x12,0x29,0x5e,0xff,0x13,0x2a,0x60,0xff,0x87,
- 0x13,0x2c,0x62,0xff,0x34,0x14,0x2d,0x63,0xff,0x14,0x2e,0x64,0xff,0x15,0x2e,
- 0x65,0xff,0x16,0x2f,0x66,0xff,0x17,0x30,0x67,0xff,0x17,0x30,0x66,0xff,0x18,
- 0x2f,0x65,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,
- 0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,
- 0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,
- 0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x21,
- 0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,
- 0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,
- 0xff,0x28,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x88,
- 0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x35,0x4f,0x8b,0xff,0x36,0x52,
- 0x8f,0xff,0x38,0x54,0x91,0xff,0x3a,0x56,0x93,0xff,0x3a,0x57,0x94,0xff,0x3b,
- 0x57,0x95,0xff,0x82,0x3c,0x58,0x96,0xff,0x12,0x3b,0x56,0x94,0xff,0x3b,0x55,
- 0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,
- 0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,
- 0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,
- 0xff,0x44,0x5f,0x9f,0xff,0x44,0x60,0xa0,0xff,0x45,0x60,0xa1,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x88,0x12,0x29,0x5d,0xff,0x02,0x12,0x2a,0x5e,
- 0xff,0x13,0x2b,0x60,0xff,0x88,0x13,0x2c,0x62,0xff,0x03,0x13,0x2d,0x63,0xff,
- 0x14,0x2d,0x64,0xff,0x15,0x2e,0x65,0xff,0x82,0x16,0x2f,0x65,0xff,0x0b,0x17,
- 0x2e,0x64,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,
- 0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,
- 0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x82,0x1e,
- 0x37,0x6e,0xff,0x36,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,
- 0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,
- 0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,
- 0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,
- 0x29,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,
- 0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,
- 0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,
- 0x35,0x50,0x8c,0xff,0x37,0x52,0x8f,0xff,0x39,0x55,0x92,0xff,0x3a,0x56,0x93,
- 0xff,0x3b,0x57,0x94,0xff,0x3b,0x58,0x95,0xff,0x3b,0x56,0x94,0xff,0x3a,0x55,
- 0x93,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,
- 0x57,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,
- 0x40,0x5b,0x9a,0xff,0x41,0x5b,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9c,
- 0xff,0x43,0x5e,0x9d,0xff,0x43,0x5f,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x45,0x60,
- 0xa0,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x87,0x12,0x29,0x5d,0xff,
- 0x02,0x12,0x2a,0x5e,0xff,0x13,0x2b,0x60,0xff,0x8a,0x13,0x2c,0x62,0xff,0x32,
- 0x14,0x2d,0x63,0xff,0x15,0x2e,0x64,0xff,0x15,0x2e,0x63,0xff,0x16,0x2d,0x62,
- 0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,
- 0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,
- 0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,
- 0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3d,0x76,0xff,0x25,0x3e,0x76,0xff,0x25,
- 0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,0xff,
- 0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,
- 0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,
- 0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,
- 0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x36,0x50,0x8d,0xff,0x37,0x52,0x8f,
- 0xff,0x39,0x55,0x92,0xff,0x82,0x3b,0x57,0x94,0xff,0x13,0x3a,0x55,0x92,0xff,
- 0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,
- 0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,
- 0x98,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,
- 0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,
- 0x45,0x60,0xa0,0xff,0x02,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x86,0x12,0x29,
- 0x5d,0xff,0x02,0x12,0x2a,0x5e,0xff,0x13,0x2b,0x61,0xff,0x8b,0x13,0x2c,0x62,
- 0xff,0x34,0x14,0x2d,0x63,0xff,0x14,0x2c,0x62,0xff,0x15,0x2c,0x61,0xff,0x15,
- 0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,
- 0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,
- 0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,
- 0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2a,
- 0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x36,
- 0x50,0x8d,0xff,0x38,0x53,0x90,0xff,0x3a,0x56,0x92,0xff,0x3a,0x56,0x93,0xff,
- 0x82,0x39,0x54,0x91,0xff,0x11,0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,
- 0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,
- 0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,
- 0x9f,0xff,0x44,0x60,0xa0,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x85,
- 0x12,0x29,0x5d,0xff,0x02,0x12,0x2a,0x5f,0xff,0x13,0x2b,0x61,0xff,0x8c,0x13,
- 0x2c,0x62,0xff,0x01,0x13,0x2b,0x61,0xff,0x82,0x14,0x2b,0x60,0xff,0x30,0x15,
- 0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,
- 0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,
- 0xff,0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,
- 0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,0x78,0xff,0x26,0x40,0x79,0xff,0x27,0x41,
- 0x7a,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x36,
- 0x50,0x8c,0xff,0x36,0x51,0x8d,0xff,0x38,0x52,0x90,0xff,0x82,0x38,0x53,0x90,
- 0xff,0x12,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,
- 0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,
- 0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,0x43,0x5e,
- 0x9e,0xff,0x44,0x5f,0x9f,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x84,
- 0x12,0x29,0x5d,0xff,0x02,0x12,0x2a,0x5e,0xff,0x13,0x2b,0x61,0xff,0x8c,0x13,
- 0x2c,0x62,0xff,0x01,0x13,0x2b,0x60,0xff,0x82,0x13,0x2a,0x5f,0xff,0x1c,0x14,
- 0x2b,0x5f,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,
- 0x17,0x2e,0x64,0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x66,
- 0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,
- 0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,
- 0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x39,0x71,0xff,
- 0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,0xff,0x23,0x3d,0x74,
- 0xff,0x24,0x3d,0x75,0xff,0x25,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,
- 0x79,0xff,0x27,0x41,0x7a,0xff,0x82,0x28,0x42,0x7b,0xff,0x27,0x29,0x43,0x7c,
- 0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,
- 0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,
- 0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,
- 0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x8a,0xff,0x35,0x4e,0x8b,
- 0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,
- 0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,
- 0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x94,0xff,0x3d,0x57,0x95,0xff,
- 0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,
- 0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x42,0x5d,
- 0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x5f,0x9f,0xff,0x01,0x02,0x03,0xff,0x00,
- 0x01,0x02,0xff,0x83,0x12,0x29,0x5d,0xff,0x02,0x12,0x2a,0x5f,0xff,0x13,0x2b,
- 0x61,0xff,0x8c,0x13,0x2c,0x62,0xff,0x49,0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,
- 0xff,0x12,0x29,0x5d,0xff,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x15,0x2c,
- 0x60,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,
- 0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,
- 0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,
- 0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1e,0x38,
- 0x6f,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,
- 0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,
- 0x24,0x3e,0x76,0xff,0x25,0x3f,0x77,0xff,0x26,0x40,0x78,0xff,0x27,0x41,0x79,
- 0xff,0x29,0x43,0x7d,0xff,0x28,0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,
- 0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,
- 0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,
- 0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x86,0xff,0x32,0x4b,0x87,
- 0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,
- 0x8c,0xff,0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,
- 0x52,0x8f,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,
- 0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,
- 0xff,0x3e,0x58,0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,
- 0x9a,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,
- 0x5e,0x9e,0xff,0x43,0x5f,0x9f,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x82,0x12,0x29,0x5d,0xff,0x02,0x13,0x2a,0x5f,0xff,0x13,0x2c,0x61,0xff,0x8c,
- 0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,0xff,0x82,0x12,
- 0x29,0x5d,0xff,0x0b,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,
- 0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,
- 0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x82,0x1b,0x33,0x69,0xff,0x3c,0x1b,0x34,0x6a,0xff,0x1c,0x35,
- 0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x20,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,
- 0x22,0x3b,0x73,0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,
- 0xff,0x25,0x3e,0x77,0xff,0x26,0x3f,0x78,0xff,0x27,0x41,0x7b,0xff,0x29,0x43,
- 0x7e,0xff,0x29,0x42,0x7c,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,
- 0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,
- 0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,
- 0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,
- 0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,
- 0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,
- 0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,
- 0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x43,0x5e,0x9d,0xff,
- 0x43,0x5e,0x9e,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x12,0x29,0x5d,
- 0xff,0x13,0x2a,0x60,0xff,0x13,0x2c,0x61,0xff,0x8c,0x13,0x2c,0x62,0xff,0x02,
- 0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,0xff,0x84,0x12,0x29,0x5d,0xff,0x46,0x13,
- 0x2a,0x5e,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,
- 0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,
- 0xff,0x23,0x3d,0x74,0xff,0x24,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x25,0x3f,
- 0x78,0xff,0x28,0x42,0x7c,0xff,0x2a,0x43,0x7e,0xff,0x29,0x43,0x7d,0xff,0x28,
- 0x42,0x7b,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,
- 0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,
- 0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,
- 0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,
- 0xff,0x39,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x55,0x93,0xff,0x3c,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,
- 0x42,0x5d,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x13,0x2a,0x60,0xff,0x8d,0x13,0x2c,0x62,0xff,0x02,
- 0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,0xff,0x85,0x12,0x29,0x5d,0xff,0x45,0x13,
- 0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2d,0x61,0xff,
- 0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,
- 0xff,0x19,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x38,0x6e,0xff,0x1f,0x38,0x6f,0xff,
- 0x20,0x39,0x70,0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,
- 0xff,0x23,0x3c,0x74,0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x26,0x40,
- 0x79,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x29,
- 0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x82,
- 0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,
- 0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,
- 0x36,0x50,0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x39,0x53,0x90,
- 0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,
- 0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x8d,0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x60,0xff,
- 0x12,0x29,0x5e,0xff,0x86,0x12,0x29,0x5d,0xff,0x45,0x13,0x29,0x5e,0xff,0x14,
- 0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,
- 0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1e,
- 0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,0xff,
- 0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x73,0xff,0x22,0x3c,0x74,
- 0xff,0x23,0x3d,0x75,0xff,0x24,0x3e,0x76,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x29,0x43,0x7d,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x43,0x7c,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7e,0xff,
- 0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,
- 0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x34,
- 0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,
- 0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,
- 0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,
- 0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,
- 0x5a,0x98,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,
- 0x42,0x5d,0x9c,0xff,0x42,0x5e,0x9d,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x8c,0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x60,0xff,0x12,0x29,0x5e,0xff,
- 0x88,0x12,0x29,0x5d,0xff,0x1e,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,
- 0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,
- 0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,
- 0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,
- 0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,
- 0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x21,0x3a,0x71,0xff,
- 0x21,0x3b,0x72,0xff,0x22,0x3c,0x73,0xff,0x23,0x3c,0x74,0xff,0x24,0x3e,0x77,
- 0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,
- 0x7e,0xff,0x2a,0x44,0x7e,0xff,0x82,0x29,0x43,0x7c,0xff,0x24,0x29,0x44,0x7d,
- 0xff,0x2a,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4b,0x88,0xff,
- 0x33,0x4c,0x88,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,
- 0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,
- 0x90,0xff,0x39,0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x92,0xff,0x3b,
- 0x55,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,
- 0x3e,0x59,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,
- 0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x42,0x5d,0x9d,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x8b,0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x61,
- 0xff,0x12,0x29,0x5e,0xff,0x89,0x12,0x29,0x5d,0xff,0x44,0x13,0x2a,0x5e,0xff,
- 0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,
- 0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,
- 0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,
- 0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,
- 0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,0x70,
- 0xff,0x21,0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x22,0x3b,0x73,0xff,0x23,0x3c,
- 0x74,0xff,0x25,0x3f,0x79,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x29,
- 0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x29,0x43,0x7d,0xff,
- 0x28,0x43,0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x46,0x82,0xff,0x2e,0x47,
- 0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,
- 0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x8a,0xff,
- 0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x54,
- 0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,
- 0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,
- 0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x40,0x5b,0x9b,0xff,0x41,0x5c,0x9c,
- 0xff,0x42,0x5d,0x9c,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x8a,0x13,
- 0x2c,0x62,0xff,0x02,0x13,0x2b,0x61,0xff,0x12,0x2a,0x5e,0xff,0x8a,0x12,0x29,
- 0x5d,0xff,0x1d,0x13,0x2a,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,
- 0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,
- 0xff,0x18,0x2f,0x65,0xff,0x18,0x30,0x66,0xff,0x19,0x31,0x66,0xff,0x1a,0x32,
- 0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,
- 0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,
- 0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,0x20,0x3a,0x71,0xff,0x21,0x3a,0x72,
- 0xff,0x22,0x3b,0x73,0xff,0x23,0x3d,0x75,0xff,0x26,0x40,0x79,0xff,0x27,0x40,
- 0x7b,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x82,
- 0x2a,0x44,0x7e,0xff,0x82,0x29,0x43,0x7c,0xff,0x23,0x2a,0x44,0x7d,0xff,0x2a,
- 0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,
- 0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,
- 0x89,0xff,0x34,0x4e,0x8a,0xff,0x34,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,
- 0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,
- 0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,
- 0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x95,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,
- 0x97,0xff,0x3f,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,
- 0x5c,0x9b,0xff,0x42,0x5d,0x9c,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x89,0x13,0x2c,0x62,0xff,0x02,0x13,0x2b,0x61,0xff,0x12,0x2a,0x5e,0xff,0x8b,
- 0x12,0x29,0x5d,0xff,0x44,0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,
- 0x60,0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,
- 0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x31,0x66,0xff,
- 0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,
- 0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,
- 0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x70,0xff,0x21,
- 0x3a,0x71,0xff,0x21,0x3b,0x72,0xff,0x24,0x3e,0x77,0xff,0x26,0x3f,0x79,0xff,
- 0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,
- 0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2a,0x44,0x7e,0xff,0x29,0x43,
- 0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,
- 0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,
- 0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x86,
- 0xff,0x32,0x4c,0x87,0xff,0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,
- 0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x36,0x51,0x8e,0xff,0x37,
- 0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,
- 0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,
- 0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,
- 0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x41,0x5c,0x9c,0xff,0x01,
- 0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x88,0x13,0x2c,0x62,0xff,0x02,0x13,0x2c,
- 0x61,0xff,0x12,0x2a,0x5e,0xff,0x8d,0x12,0x29,0x5d,0xff,0x1d,0x13,0x2a,0x5e,
- 0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,
- 0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,
- 0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,
- 0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,
- 0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x20,0x39,
- 0x70,0xff,0x20,0x3a,0x71,0xff,0x22,0x3b,0x73,0xff,0x25,0x3e,0x78,0xff,0x26,
- 0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,
- 0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x82,0x2a,0x44,0x7f,0xff,0x82,0x29,
- 0x43,0x7d,0xff,0x22,0x2a,0x44,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,
- 0xff,0x2c,0x46,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,
- 0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,
- 0x4c,0x87,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,
- 0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,
- 0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,
- 0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,
- 0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,
- 0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x01,0x02,0x03,
- 0xff,0x00,0x01,0x02,0xff,0x87,0x13,0x2c,0x62,0xff,0x02,0x13,0x2c,0x61,0xff,
- 0x12,0x2a,0x5e,0xff,0x8e,0x12,0x29,0x5d,0xff,0x1e,0x13,0x2a,0x5e,0xff,0x13,
- 0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,
- 0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,
- 0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x1f,0x39,0x70,0xff,
- 0x20,0x39,0x71,0xff,0x23,0x3c,0x75,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x78,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x82,0x2a,0x44,0x7f,0xff,
- 0x23,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x45,
- 0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,
- 0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,
- 0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,
- 0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,
- 0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,0xff,0x01,0x02,
- 0x03,0xff,0x00,0x01,0x02,0xff,0x86,0x13,0x2c,0x62,0xff,0x02,0x13,0x2c,0x61,
- 0xff,0x12,0x2a,0x5e,0xff,0x8f,0x12,0x29,0x5d,0xff,0x43,0x12,0x29,0x5e,0xff,
- 0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,0x61,
- 0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x30,
- 0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,
- 0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,0xff,
- 0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,
- 0xff,0x20,0x39,0x71,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,0x3e,
- 0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,
- 0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,
- 0x2b,0x45,0x80,0xff,0x2a,0x44,0x7f,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,
- 0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,
- 0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x4a,0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,
- 0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,
- 0xff,0x36,0x51,0x8e,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,
- 0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,
- 0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,
- 0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x41,0x5c,0x9b,
- 0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x85,0x13,0x2c,0x62,0xff,0x02,
- 0x13,0x2c,0x61,0xff,0x12,0x2a,0x5e,0xff,0x91,0x12,0x29,0x5d,0xff,0x42,0x13,
- 0x2a,0x5e,0xff,0x13,0x2b,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,
- 0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,
- 0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x32,
- 0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,
- 0x36,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,
- 0x21,0x3a,0x72,0xff,0x23,0x3d,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,
- 0xff,0x25,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,
- 0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7d,0xff,
- 0x2b,0x45,0x7e,0xff,0x2b,0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x49,
- 0x85,0xff,0x31,0x4a,0x86,0xff,0x32,0x4b,0x88,0xff,0x32,0x4c,0x89,0xff,0x33,
- 0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,
- 0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,
- 0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,
- 0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,
- 0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x85,0x13,0x2c,0x62,0xff,0x01,0x12,
- 0x2a,0x5f,0xff,0x92,0x12,0x29,0x5d,0xff,0x42,0x12,0x2a,0x5e,0xff,0x13,0x2a,
- 0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x15,0x2d,0x62,0xff,0x16,
- 0x2e,0x62,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,0xff,
- 0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,
- 0xff,0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,
- 0x6d,0xff,0x1e,0x37,0x6e,0xff,0x1f,0x38,0x6f,0xff,0x22,0x3b,0x74,0xff,0x23,
- 0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,
- 0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x42,0x7c,
- 0xff,0x29,0x43,0x7d,0xff,0x2a,0x43,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x45,
- 0x80,0xff,0x2c,0x46,0x80,0xff,0x2b,0x45,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2b,
- 0x45,0x7f,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,
- 0x2e,0x48,0x83,0xff,0x2f,0x48,0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,
- 0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,
- 0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,
- 0x51,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,
- 0x39,0x54,0x92,0xff,0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,0x3c,0x56,0x94,
- 0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,0xff,0x3f,0x59,
- 0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x01,0x02,0x03,0xff,0x00,
- 0x01,0x02,0xff,0x84,0x13,0x2c,0x62,0xff,0x01,0x12,0x2a,0x5f,0xff,0x94,0x12,
- 0x29,0x5d,0xff,0x21,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,
- 0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,
- 0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1b,0x34,0x6b,0xff,
- 0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6c,0xff,0x1e,0x37,0x6d,0xff,0x20,0x39,0x70,
- 0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3e,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,
- 0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,
- 0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2b,0x46,0x80,0xff,0x2c,0x46,0x80,
- 0xff,0x82,0x2b,0x45,0x7f,0xff,0x1e,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,
- 0x2d,0x46,0x82,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,
- 0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,
- 0x89,0xff,0x33,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,
- 0x50,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,
- 0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,
- 0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,
- 0x97,0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x40,0x5b,0x9a,0xff,0x01,
- 0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x83,0x13,0x2c,0x62,0xff,0x01,0x12,0x2a,
- 0x5e,0xff,0x95,0x12,0x29,0x5d,0xff,0x20,0x13,0x2a,0x5e,0xff,0x13,0x2b,0x5f,
- 0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,
- 0x63,0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,
- 0x31,0x67,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,
- 0x1b,0x34,0x6a,0xff,0x1c,0x35,0x6b,0xff,0x1d,0x36,0x6c,0xff,0x1d,0x36,0x6d,
- 0xff,0x21,0x3a,0x72,0xff,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,0x23,0x3d,
- 0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,0xff,0x26,
- 0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7c,0xff,
- 0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,
- 0xff,0x82,0x2c,0x47,0x81,0xff,0x1f,0x2c,0x46,0x7f,0xff,0x2b,0x45,0x7f,0xff,
- 0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2e,0x48,0x83,
- 0xff,0x2f,0x49,0x84,0xff,0x30,0x49,0x85,0xff,0x31,0x4b,0x86,0xff,0x32,0x4b,
- 0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,0x35,
- 0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,
- 0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,0x92,
- 0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,0x3d,0x57,
- 0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x97,0xff,0x3f,0x5a,0x98,0xff,0x3f,
- 0x5a,0x99,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x82,0x13,0x2c,0x62,
- 0xff,0x01,0x12,0x2a,0x5e,0xff,0x96,0x12,0x29,0x5d,0xff,0x43,0x12,0x2a,0x5e,
- 0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x60,0xff,0x15,0x2d,
- 0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x18,0x2f,0x64,0xff,0x18,
- 0x30,0x65,0xff,0x19,0x31,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,
- 0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1c,0x34,0x6b,0xff,0x1c,0x35,0x6c,
- 0xff,0x1e,0x37,0x6f,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3b,
- 0x75,0xff,0x23,0x3c,0x76,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,
- 0x3f,0x78,0xff,0x26,0x3f,0x79,0xff,0x27,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x42,0x7c,0xff,0x29,0x43,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,0xff,0x2d,0x47,
- 0x82,0xff,0x2c,0x46,0x80,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2d,
- 0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x48,0x84,0xff,0x2f,0x49,0x85,0xff,
- 0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,
- 0xff,0x34,0x4e,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,
- 0x8d,0xff,0x37,0x51,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,
- 0x53,0x91,0xff,0x39,0x54,0x91,0xff,0x3a,0x55,0x92,0xff,0x3b,0x55,0x93,0xff,
- 0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,0x3e,0x58,0x97,
- 0xff,0x3e,0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x01,0x02,0x03,0xff,0x00,0x01,
- 0x02,0xff,0x13,0x2c,0x62,0xff,0x12,0x2a,0x5e,0xff,0x98,0x12,0x29,0x5d,0xff,
- 0x21,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,0x14,0x2c,0x60,0xff,0x15,0x2c,
- 0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,0x64,0xff,0x18,
- 0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1a,0x32,0x68,0xff,
- 0x1b,0x33,0x69,0xff,0x1b,0x33,0x6a,0xff,0x1b,0x34,0x6b,0xff,0x1c,0x35,0x6b,
- 0xff,0x1f,0x38,0x70,0xff,0x20,0x3a,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,
- 0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,0xff,0x24,0x3e,0x77,0xff,0x25,
- 0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,0x41,0x7b,0xff,
- 0x28,0x41,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,0x2a,0x44,0x7f,
- 0xff,0x2b,0x45,0x80,0xff,0x2b,0x46,0x80,0xff,0x2c,0x47,0x81,0xff,0x82,0x2d,
- 0x48,0x82,0xff,0x1e,0x2d,0x46,0x81,0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,
- 0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,
- 0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,
- 0x4d,0x8a,0xff,0x34,0x4e,0x8a,0xff,0x35,0x4f,0x8b,0xff,0x36,0x50,0x8c,0xff,
- 0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,
- 0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,0x55,0x93,0xff,0x3b,0x56,
- 0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x57,0x96,0xff,0x3e,0x58,0x97,0xff,0x3e,
- 0x59,0x98,0xff,0x3f,0x5a,0x99,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,
- 0x12,0x2a,0x5e,0xff,0x99,0x12,0x29,0x5d,0xff,0x22,0x13,0x2a,0x5e,0xff,0x13,
- 0x2a,0x5f,0xff,0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,
- 0x16,0x2e,0x63,0xff,0x17,0x2e,0x64,0xff,0x18,0x2f,0x64,0xff,0x18,0x30,0x65,
- 0xff,0x19,0x31,0x66,0xff,0x1a,0x32,0x67,0xff,0x1b,0x32,0x68,0xff,0x1b,0x33,
- 0x69,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x36,0x6d,0xff,0x20,0x39,0x71,0xff,0x20,
- 0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x22,0x3c,0x75,0xff,
- 0x23,0x3c,0x76,0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x25,0x3f,0x79,
- 0xff,0x26,0x40,0x7a,0xff,0x27,0x40,0x7a,0xff,0x28,0x41,0x7b,0xff,0x28,0x42,
- 0x7c,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7f,0xff,0x2b,
- 0x45,0x80,0xff,0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x82,0x2d,0x48,0x83,
- 0xff,0x1c,0x2d,0x46,0x81,0xff,0x2c,0x46,0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,
- 0x48,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,0x4a,0x85,0xff,0x31,0x4b,0x86,0xff,
- 0x32,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,
- 0xff,0x35,0x4e,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,
- 0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x52,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,
- 0x54,0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x56,0x95,0xff,
- 0x3c,0x57,0x96,0xff,0x3d,0x58,0x96,0xff,0x3e,0x59,0x97,0xff,0x3f,0x59,0x98,
- 0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,0xff,0x9a,0x12,0x29,0x5d,0xff,0x40,
- 0x12,0x29,0x5e,0xff,0x13,0x2a,0x5f,0xff,0x14,0x2b,0x5f,0xff,0x15,0x2c,0x60,
- 0xff,0x15,0x2d,0x61,0xff,0x16,0x2d,0x62,0xff,0x17,0x2e,0x63,0xff,0x17,0x2f,
- 0x64,0xff,0x18,0x30,0x65,0xff,0x19,0x30,0x66,0xff,0x1a,0x31,0x67,0xff,0x1a,
- 0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1b,0x34,0x6a,0xff,0x1e,0x37,0x6e,0xff,
- 0x1f,0x38,0x71,0xff,0x20,0x39,0x72,0xff,0x21,0x3a,0x73,0xff,0x21,0x3b,0x74,
- 0xff,0x22,0x3b,0x75,0xff,0x23,0x3c,0x75,0xff,0x24,0x3d,0x76,0xff,0x24,0x3e,
- 0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,0x7a,0xff,0x27,
- 0x41,0x7b,0xff,0x28,0x42,0x7c,0xff,0x29,0x42,0x7d,0xff,0x29,0x43,0x7e,0xff,
- 0x2a,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,0x2c,0x46,0x81,0xff,0x2c,0x47,0x82,
- 0xff,0x2d,0x48,0x83,0xff,0x2d,0x48,0x82,0xff,0x2c,0x45,0x80,0xff,0x2c,0x46,
- 0x81,0xff,0x2d,0x47,0x82,0xff,0x2e,0x47,0x83,0xff,0x2f,0x49,0x84,0xff,0x30,
- 0x49,0x85,0xff,0x31,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,0x4c,0x88,0xff,
- 0x33,0x4d,0x89,0xff,0x34,0x4d,0x8a,0xff,0x34,0x4e,0x8b,0xff,0x35,0x4f,0x8c,
- 0xff,0x36,0x50,0x8d,0xff,0x36,0x50,0x8e,0xff,0x37,0x51,0x8f,0xff,0x38,0x52,
- 0x8f,0xff,0x39,0x53,0x90,0xff,0x39,0x54,0x91,0xff,0x3a,0x54,0x92,0xff,0x3b,
- 0x55,0x93,0xff,0x3c,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,0x58,0x96,0xff,
- 0x3e,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x01,0x02,0x03,0xff,0x00,0x01,0x02,
- 0xff,0x9b,0x12,0x29,0x5d,0xff,0x44,0x13,0x2a,0x5e,0xff,0x14,0x2b,0x5f,0xff,
- 0x14,0x2b,0x60,0xff,0x15,0x2c,0x61,0xff,0x16,0x2d,0x62,0xff,0x16,0x2e,0x63,
- 0xff,0x17,0x2f,0x64,0xff,0x18,0x2f,0x65,0xff,0x19,0x30,0x66,0xff,0x19,0x31,
- 0x67,0xff,0x1a,0x32,0x68,0xff,0x1b,0x33,0x69,0xff,0x1c,0x34,0x6b,0xff,0x1e,
- 0x37,0x6f,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x39,0x72,0xff,
- 0x21,0x3a,0x73,0xff,0x22,0x3b,0x74,0xff,0x23,0x3c,0x75,0xff,0x23,0x3d,0x76,
- 0xff,0x24,0x3d,0x77,0xff,0x25,0x3e,0x78,0xff,0x26,0x3f,0x79,0xff,0x26,0x40,
- 0x7a,0xff,0x27,0x41,0x7b,0xff,0x28,0x41,0x7c,0xff,0x28,0x42,0x7d,0xff,0x29,
- 0x43,0x7e,0xff,0x2a,0x44,0x7e,0xff,0x2b,0x44,0x7f,0xff,0x2b,0x45,0x80,0xff,
- 0x2c,0x47,0x81,0xff,0x2d,0x48,0x82,0xff,0x2c,0x46,0x81,0xff,0x2b,0x45,0x7f,
- 0xff,0x2c,0x45,0x80,0xff,0x2d,0x46,0x81,0xff,0x2e,0x47,0x82,0xff,0x2f,0x48,
- 0x84,0xff,0x30,0x49,0x85,0xff,0x30,0x4a,0x86,0xff,0x31,0x4b,0x87,0xff,0x32,
- 0x4c,0x88,0xff,0x33,0x4c,0x89,0xff,0x33,0x4d,0x89,0xff,0x34,0x4e,0x8a,0xff,
- 0x35,0x4f,0x8b,0xff,0x35,0x4f,0x8c,0xff,0x36,0x50,0x8d,0xff,0x37,0x51,0x8e,
- 0xff,0x38,0x52,0x8f,0xff,0x38,0x53,0x90,0xff,0x39,0x53,0x91,0xff,0x3a,0x54,
- 0x92,0xff,0x3a,0x55,0x93,0xff,0x3b,0x56,0x94,0xff,0x3c,0x57,0x95,0xff,0x3d,
- 0x57,0x96,0xff,0x3d,0x58,0x97,0xff,0x3e,0x59,0x98,0xff,0x01,0x02,0x03,0xff,
- 0x04,0x04,0x04,0xff,0xb8,0xba,0xc1,0xff,0xc0,0xc3,0xca,0xff,0xbc,0xbf,0xc5,
- 0xff,0xba,0xbe,0xc5,0xff,0xca,0xcd,0xd4,0xff,0x96,0xcd,0xd0,0xd6,0xff,0x84,
- 0xcd,0xd0,0xd7,0xff,0x85,0xcd,0xd1,0xd8,0xff,0x84,0xce,0xd1,0xd8,0xff,0x01,
- 0xcf,0xd2,0xd9,0xff,0x86,0xcf,0xd2,0xda,0xff,0x86,0xcf,0xd3,0xda,0xff,0x83,
- 0xd0,0xd3,0xdb,0xff,0x01,0xd0,0xd4,0xdb,0xff,0x83,0xd0,0xd4,0xdc,0xff,0x01,
- 0xd1,0xd4,0xdc,0xff,0x83,0xd0,0xd4,0xdc,0xff,0x89,0xd1,0xd4,0xdc,0xff,0x01,
- 0xd1,0xd5,0xdc,0xff,0x82,0xd1,0xd5,0xdd,0xff,0x82,0xd2,0xd5,0xdd,0xff,0x11,
- 0xd2,0xd6,0xdd,0xff,0xd2,0xd6,0xde,0xff,0x9b,0xa3,0xb4,0xff,0x72,0x7e,0x98,
- 0xff,0x99,0x9f,0xac,0xff,0xa4,0xa8,0xb0,0xff,0xa9,0xac,0xb4,0xff,0xa9,0xac,
- 0xb5,0xff,0xa5,0xa9,0xb1,0xff,0xa9,0xad,0xb6,0xff,0x04,0x04,0x04,0xff,0x05,
- 0x04,0x04,0xff,0xcd,0xcc,0xcb,0xff,0x9c,0xa2,0x9d,0xff,0x97,0xab,0x9c,0xff,
- 0xd4,0xd4,0xd4,0xff,0xe1,0xe1,0xe1,0xff,0xb0,0xe5,0xe6,0xe6,0xff,0x9b,0xe6,
- 0xe6,0xe6,0xff,0x08,0x8b,0x93,0xa3,0xff,0x46,0x55,0x75,0xff,0x8d,0x91,0x9b,
- 0xff,0xa1,0xa1,0xa2,0xff,0xa9,0xa9,0xa9,0xff,0xa9,0xa9,0xaa,0xff,0xa3,0xa3,
- 0xa3,0xff,0xa8,0xa8,0xa9,0xff,0x82,0x04,0x04,0x04,0xff,0x05,0xc7,0xc7,0xc7,
- 0xff,0xc2,0xc2,0xc0,0xff,0xc0,0xbf,0xbc,0xff,0xcd,0xcd,0xcd,0xff,0xe3,0xe3,
- 0xe3,0xff,0xcb,0xe6,0xe6,0xe6,0xff,0x0a,0x99,0xa0,0xad,0xff,0x60,0x6c,0x85,
- 0xff,0x97,0x9b,0xa2,0xff,0xa7,0xa7,0xa8,0xff,0xad,0xad,0xad,0xff,0xae,0xae,
- 0xae,0xff,0xa9,0xa9,0xa9,0xff,0xaf,0xaf,0xaf,0xff,0x04,0x04,0x04,0xff,0x00,
- 0x00,0x00,0xff,0x84,0x03,0x03,0x03,0xff,0xcc,0x04,0x04,0x04,0xff,0x03,0x03,
- 0x03,0x03,0xff,0x02,0x02,0x02,0xff,0x02,0x03,0x03,0xff,0x85,0x03,0x03,0x03,
- 0xff,0x01,0x00,0x00,0x00,0xff
-};
-
-static const GdkPixdata rotation_orientation_vert_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 36156, /* header length + pixel_data length */
- 0x2010002, /* pixdata_type */
- 360, /* rowstride */
- 90, /* width */
- 120, /* height */
- rotation_orientation_vert_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/rotation_pixdata.h b/src/image_data/rotation_pixdata.h
deleted file mode 100644
index 333fc70..0000000
--- a/src/image_data/rotation_pixdata.h
+++ /dev/null
@@ -1,1347 +0,0 @@
-/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
-
-static guint8 rotation_pixdata_pixel_data[] = {
- 0xa6,0xff,0xff,0xff,0x00,0x92,0xea,0xeb,0xf1,0x00,0x82,0xea,0xea,0xf1,0x00,
- 0x06,0xeb,0xeb,0xf2,0x0e,0xe9,0xe9,0xf2,0x1d,0xea,0xea,0xf1,0x00,0xeb,0xeb,
- 0xf2,0x00,0xea,0xe9,0xf1,0x00,0xe9,0xe8,0xf0,0x00,0x82,0xe8,0xe8,0xef,0x00,
- 0x03,0xe8,0xe9,0xf0,0x00,0xe7,0xe8,0xed,0x00,0xe7,0xe6,0xed,0x00,0x82,0xe5,
- 0xe4,0xec,0x00,0x15,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,
- 0x00,0xe2,0xe2,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe1,0xe1,0xe7,0x00,0xe2,0xe2,
- 0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,0xe3,0x00,0xde,
- 0xdd,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,
- 0xd9,0xd9,0xdd,0x00,0xda,0xd9,0xdc,0x00,0xdb,0xda,0xde,0x00,0xd8,0xd8,0xdc,
- 0x00,0xd8,0xd7,0xda,0x00,0xd7,0xd6,0xda,0x00,0xd8,0xd7,0xda,0x00,0xc6,0xff,
- 0xff,0xff,0x00,0x92,0xea,0xeb,0xf1,0x00,0x82,0xea,0xea,0xf1,0x00,0x06,0xec,
- 0xec,0xf2,0x23,0xeb,0xeb,0xf2,0x82,0xe9,0xe9,0xf1,0x58,0xeb,0xeb,0xf2,0x00,
- 0xea,0xe9,0xf1,0x00,0xe9,0xe8,0xf0,0x00,0x82,0xe8,0xe8,0xef,0x00,0x03,0xe9,
- 0xe9,0xf0,0x00,0xe7,0xe8,0xed,0x00,0xe7,0xe6,0xed,0x00,0x82,0xe5,0xe4,0xec,
- 0x00,0x15,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,0x00,0xe2,
- 0xe2,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe1,0xe1,0xe7,0x00,0xe2,0xe2,0xe8,0x00,
- 0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,0xe3,0x00,0xde,0xdd,0xe2,
- 0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,0xd9,0xd9,
- 0xdd,0x00,0xda,0xd9,0xdc,0x00,0xdb,0xda,0xde,0x00,0xd8,0xd8,0xdc,0x00,0xd8,
- 0xd7,0xda,0x00,0xd7,0xd6,0xda,0x00,0xd8,0xd7,0xda,0x00,0xc6,0xff,0xff,0xff,
- 0x00,0x92,0xea,0xeb,0xf1,0x00,0x24,0xea,0xea,0xf1,0x00,0xe9,0xe9,0xf0,0x25,
- 0xeb,0xeb,0xf2,0x7f,0xf6,0xf6,0xf9,0x99,0xf3,0xf3,0xf7,0x99,0xe9,0xe9,0xf0,
- 0x6f,0xea,0xe9,0xf1,0x10,0xe9,0xe8,0xf0,0x00,0xe8,0xe8,0xef,0x00,0xe8,0xe8,
- 0xee,0x00,0xe9,0xe9,0xf0,0x00,0xe7,0xe8,0xed,0x00,0xe7,0xe6,0xed,0x00,0xe5,
- 0xe4,0xec,0x00,0xe5,0xe4,0xeb,0x00,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,0x00,
- 0xe3,0xe3,0xe9,0x00,0xe2,0xe2,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe1,0xe1,0xe7,
- 0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,
- 0xe3,0x00,0xde,0xdd,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,
- 0xd9,0xdf,0x00,0xd9,0xd9,0xdd,0x00,0xda,0xd9,0xdc,0x00,0xdc,0xda,0xde,0x00,
- 0xd8,0xd8,0xdc,0x00,0xd8,0xd7,0xda,0x00,0xd7,0xd6,0xda,0x00,0xd8,0xd7,0xda,
- 0x00,0xc6,0xff,0xff,0xff,0x00,0x91,0xea,0xeb,0xf1,0x00,0x25,0xe9,0xea,0xf0,
- 0x00,0xe7,0xe9,0xef,0x10,0xec,0xeb,0xf2,0x65,0xf5,0xf5,0xf9,0x99,0xff,0xff,
- 0xff,0x99,0xfe,0xfe,0xfe,0x99,0xf5,0xf5,0xf8,0x99,0xea,0xe9,0xf0,0x83,0xe8,
- 0xe8,0xf0,0x23,0xe8,0xe8,0xef,0x00,0xe8,0xe7,0xee,0x00,0xe9,0xe9,0xf0,0x00,
- 0xe7,0xe8,0xee,0x00,0xe7,0xe6,0xed,0x00,0xe5,0xe4,0xec,0x00,0xe5,0xe4,0xeb,
- 0x00,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,0x00,0xe2,0xe2,
- 0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe1,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,
- 0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,0xe3,0x00,0xde,0xdc,0xe2,0x00,
- 0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,0xd9,0xd9,0xdd,
- 0x00,0xda,0xd9,0xdc,0x00,0xdc,0xda,0xde,0x00,0xd8,0xd8,0xdc,0x00,0xd8,0xd7,
- 0xda,0x00,0xd7,0xd6,0xda,0x00,0xd8,0xd7,0xda,0x00,0xc6,0xff,0xff,0xff,0x00,
- 0x91,0xea,0xeb,0xf1,0x00,0x05,0xe9,0xea,0xf0,0x0d,0xe7,0xe9,0xef,0x5b,0xf1,
- 0xf1,0xf6,0x99,0xfd,0xfa,0xfb,0x79,0xf9,0xf3,0xf2,0x53,0x82,0xff,0xff,0xff,
- 0x99,0x1e,0xf8,0xf8,0xfa,0x99,0xeb,0xea,0xf1,0x8b,0xe7,0xe7,0xef,0x38,0xe8,
- 0xe7,0xee,0x00,0xe9,0xe9,0xf0,0x00,0xe7,0xe8,0xed,0x00,0xe7,0xe6,0xed,0x00,
- 0xe5,0xe4,0xec,0x00,0xe5,0xe4,0xeb,0x00,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,
- 0x00,0xe3,0xe3,0xe9,0x00,0xe2,0xe2,0xe7,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe1,
- 0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,
- 0xdc,0xe3,0x00,0xde,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,
- 0xda,0xd9,0xdf,0x00,0xd9,0xd9,0xdd,0x00,0xda,0xd9,0xdc,0x00,0xdc,0xda,0xde,
- 0x00,0xd8,0xd8,0xdc,0x00,0xd8,0xd7,0xda,0x00,0xd7,0xd6,0xda,0x00,0xd8,0xd7,
- 0xda,0x00,0xc6,0xff,0xff,0xff,0x00,0x8d,0xe8,0xe8,0xee,0x00,0x83,0xe8,0xe9,
- 0xf0,0x00,0x24,0xe8,0xe9,0xf0,0x02,0xea,0xea,0xf1,0x38,0xef,0xf0,0xf4,0x99,
- 0xfb,0xfb,0xfc,0x8b,0x8e,0x97,0xb1,0x8a,0xc4,0xb3,0xb7,0x99,0xe9,0xe8,0xe6,
- 0x5b,0xff,0xff,0xff,0x8c,0xff,0xff,0xff,0x99,0xfc,0xfa,0xfd,0x99,0xec,0xed,
- 0xf2,0x93,0xe7,0xe6,0xee,0x52,0xe9,0xe9,0xf0,0x00,0xe7,0xe8,0xee,0x00,0xe7,
- 0xe6,0xed,0x00,0xe5,0xe4,0xec,0x00,0xe5,0xe4,0xeb,0x00,0xe7,0xe6,0xed,0x00,
- 0xe5,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe1,0xe7,
- 0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xde,
- 0xe4,0x00,0xdd,0xdc,0xe3,0x00,0xde,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,
- 0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,0xda,0xd9,0xdd,0x00,0xb7,0xb7,0xb7,0xff,
- 0xe7,0xe6,0xe9,0xff,0xef,0xee,0xf1,0xff,0xee,0xee,0xf0,0xff,0x82,0xee,0xee,
- 0xf1,0xff,0x02,0xef,0xee,0xf1,0xff,0xef,0xee,0xf2,0xff,0x82,0xf0,0xef,0xf2,
- 0xff,0x02,0xf0,0xf0,0xf3,0xff,0xf1,0xf0,0xf3,0xff,0x82,0xf1,0xf0,0xf4,0xff,
- 0x82,0xf2,0xf1,0xf4,0xff,0x04,0xf1,0xf2,0xf5,0xff,0xf2,0xf2,0xf5,0xff,0xf3,
- 0xf2,0xf6,0xff,0xf3,0xf3,0xf6,0xff,0x82,0xf3,0xf3,0xf5,0xff,0x07,0xf3,0xf3,
- 0xf6,0xff,0xf3,0xf3,0xf7,0xff,0xf4,0xf4,0xf7,0xff,0xf4,0xf4,0xf8,0xff,0xf5,
- 0xf4,0xf8,0xff,0xf5,0xf5,0xf8,0xff,0xf4,0xf5,0xf8,0xff,0x83,0xf5,0xf5,0xf8,
- 0xff,0x82,0xf5,0xf5,0xf9,0xff,0x03,0xf6,0xf6,0xfa,0xff,0xf0,0xf0,0xf6,0xff,
- 0x5d,0x5b,0x61,0x2d,0xa7,0xff,0xff,0xff,0x00,0x8d,0xe8,0xe8,0xee,0x00,0x82,
- 0xe8,0xe9,0xf0,0x00,0x24,0xe8,0xe9,0xf0,0x03,0xe7,0xe8,0xef,0x36,0xeb,0xeb,
- 0xf1,0x94,0xfa,0xfa,0xfc,0x90,0x91,0x9d,0xb9,0x7e,0x13,0x2e,0x6a,0x98,0x35,
- 0x4b,0x7b,0x99,0x9a,0xa1,0xaf,0x99,0xe9,0xe7,0xe1,0x69,0xff,0xff,0xff,0x79,
- 0xff,0xff,0xff,0x99,0xfd,0xfd,0xfd,0x99,0xf0,0xf0,0xf4,0x98,0xe6,0xe6,0xee,
- 0x6e,0xe7,0xe8,0xee,0x0d,0xe7,0xe6,0xed,0x00,0xe5,0xe4,0xec,0x00,0xe5,0xe4,
- 0xeb,0x00,0xe7,0xe6,0xed,0x00,0xe5,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,0x00,0xe2,
- 0xe2,0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,
- 0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,0xe3,0x00,0xde,0xdc,0xe2,
- 0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,0xda,0xd9,
- 0xdd,0x00,0xb7,0xb7,0xb7,0xff,0xed,0xed,0xef,0xff,0xff,0xff,0xfe,0xff,0x9f,
- 0xeb,0xeb,0xeb,0xff,0x03,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf9,0xff,0x7a,0x79,
- 0x7f,0x45,0xa7,0xff,0xff,0xff,0x00,0x8d,0xe8,0xe8,0xee,0x00,0x26,0xe8,0xe9,
- 0xf0,0x00,0xe7,0xe8,0xef,0x00,0xe6,0xe6,0xee,0x16,0xeb,0xeb,0xf2,0x7d,0xf7,
- 0xf7,0xf9,0x99,0xc1,0xc8,0xd7,0x7e,0x1c,0x36,0x6d,0x91,0x1f,0x37,0x70,0x99,
- 0x11,0x2c,0x6a,0x99,0x26,0x3e,0x75,0x99,0x83,0x8e,0xa5,0x99,0xe4,0xe2,0xde,
- 0x83,0xfb,0xfc,0xfc,0x69,0xff,0xff,0xff,0x99,0xfe,0xfe,0xfe,0x99,0xf3,0xf3,
- 0xf7,0x99,0xe6,0xe7,0xed,0x85,0xe7,0xe6,0xed,0x20,0xe5,0xe4,0xec,0x00,0xe5,
- 0xe4,0xeb,0x00,0xe7,0xe6,0xed,0x00,0xe6,0xe5,0xeb,0x00,0xe3,0xe3,0xe9,0x00,
- 0xe2,0xe2,0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,
- 0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xde,0xe4,0x00,0xdd,0xdc,0xe4,0x00,0xdd,0xdc,
- 0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xda,0xd9,0xdf,0x00,0xda,
- 0xd9,0xdd,0x00,0xb7,0xb7,0xb7,0xff,0xec,0xeb,0xed,0xff,0xfc,0xfc,0xfc,0xff,
- 0x9f,0x00,0x00,0x00,0xff,0x03,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf9,0xff,0x6d,
- 0x6e,0x72,0x3f,0xa7,0xff,0xff,0xff,0x00,0x8d,0xe8,0xe8,0xee,0x00,0x36,0xe8,
- 0xe9,0xf0,0x00,0xe7,0xe8,0xef,0x17,0xe7,0xe7,0xef,0x6a,0xf4,0xf3,0xf8,0x99,
- 0xdf,0xe2,0xea,0x77,0x2f,0x46,0x79,0x8c,0x1b,0x35,0x6d,0x99,0x18,0x31,0x6b,
- 0x99,0x4d,0x64,0x8e,0x99,0x1f,0x3a,0x74,0x99,0x23,0x3d,0x76,0x99,0x61,0x71,
- 0x94,0x99,0xc4,0xc9,0xcc,0x98,0xef,0xef,0xed,0x67,0xff,0xff,0xfe,0x99,0xfe,
- 0xff,0xff,0x99,0xf6,0xf7,0xf8,0x99,0xe8,0xe8,0xee,0x8c,0xe5,0xe4,0xec,0x38,
- 0xe4,0xe3,0xeb,0x00,0xe7,0xe6,0xed,0x00,0xe6,0xe5,0xeb,0x00,0xe3,0xe4,0xea,
- 0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,
- 0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xdf,0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,
- 0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xdb,0xd9,0xdf,0x00,
- 0xda,0xd9,0xdd,0x00,0xb7,0xb7,0xb7,0xff,0xeb,0xeb,0xee,0xff,0xfc,0xfc,0xfb,
- 0xff,0x00,0x00,0x00,0xff,0xa7,0xa4,0xbd,0xff,0xa7,0xae,0xbe,0xff,0xa6,0xb1,
- 0xc2,0xff,0xad,0xb7,0xc8,0xff,0xb0,0xbb,0xcc,0xff,0xad,0xb6,0xc7,0xff,0xa0,
- 0xb2,0xc5,0xff,0xa7,0xb0,0xb9,0xff,0xb4,0xbc,0xc8,0xff,0xa5,0xb3,0xc7,0xff,
- 0xa4,0xb3,0xca,0xff,0xc0,0xc9,0xdb,0xff,0xc2,0xcc,0xdd,0xff,0xc1,0xcc,0xdd,
- 0xff,0xc3,0xcd,0xdd,0xff,0x82,0xc2,0xcd,0xde,0xff,0x10,0xc4,0xce,0xdf,0xff,
- 0xc4,0xcf,0xdf,0xff,0xc4,0xce,0xe0,0xff,0xc7,0xd0,0xe0,0xff,0xc7,0xd1,0xe0,
- 0xff,0xc6,0xd1,0xe1,0xff,0xb9,0xc3,0xd3,0xff,0xb1,0xba,0xcb,0xff,0xb3,0xbe,
- 0xcf,0xff,0xb9,0xc2,0xd3,0xff,0xae,0xb9,0xca,0xff,0xb9,0xc0,0xc8,0xff,0x11,
- 0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf9,0xff,0x59,0x5a,0x61,0x3a,
- 0xa7,0xff,0xff,0xff,0x00,0x8d,0xe8,0xe8,0xee,0x00,0x27,0xe6,0xe6,0xed,0x09,
- 0xe8,0xe9,0xf0,0x53,0xf0,0xf0,0xf5,0x99,0xf2,0xf4,0xf6,0x8b,0x42,0x56,0x83,
- 0x82,0x1a,0x33,0x6b,0x99,0x1e,0x38,0x6e,0x99,0x44,0x56,0x7f,0x99,0xa2,0xb3,
- 0xc1,0x99,0x43,0x5a,0x88,0x99,0x1e,0x38,0x75,0x99,0x20,0x3a,0x77,0x99,0x47,
- 0x5c,0x89,0x99,0xa4,0xaa,0xb0,0x9a,0xed,0xeb,0xe7,0x6d,0xfe,0xfe,0xfe,0x8f,
- 0xff,0xff,0xff,0x99,0xfa,0xfa,0xfb,0x99,0xea,0xe9,0xef,0x92,0xe4,0xe3,0xeb,
- 0x4f,0xe7,0xe6,0xed,0x00,0xe6,0xe5,0xeb,0x00,0xe3,0xe4,0xea,0x00,0xe2,0xe2,
- 0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,
- 0xe0,0xe5,0x00,0xdf,0xdf,0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,
- 0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xdd,
- 0x00,0xb7,0xb7,0xb7,0xff,0xec,0xeb,0xed,0xff,0xfb,0xfc,0xfb,0xff,0x00,0x00,
- 0x00,0xff,0x82,0x25,0x3d,0x74,0xff,0x16,0x25,0x3d,0x75,0xff,0x22,0x3b,0x73,
- 0xff,0x29,0x42,0x79,0xff,0x2b,0x44,0x7c,0xff,0x2e,0x47,0x7f,0xff,0x31,0x4a,
- 0x82,0xff,0x33,0x4b,0x85,0xff,0x36,0x50,0x8a,0xff,0x38,0x52,0x8d,0xff,0x3a,
- 0x55,0x90,0xff,0x3d,0x58,0x93,0xff,0x3f,0x5b,0x97,0xff,0x41,0x5d,0x9a,0xff,
- 0x44,0x60,0x9d,0xff,0x46,0x62,0xa0,0xff,0x48,0x64,0xa2,0xff,0x4b,0x67,0xa5,
- 0xff,0x4d,0x69,0xa8,0xff,0x4f,0x6b,0xaa,0xff,0x52,0x6d,0xad,0xff,0x54,0x70,
- 0xb0,0xff,0x55,0x71,0xb1,0xff,0x82,0x54,0x71,0xb1,0xff,0x82,0x55,0x71,0xb2,
- 0xff,0x05,0x56,0x72,0xb2,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf5,
- 0xf5,0xf8,0xff,0x5a,0x5b,0x62,0x3a,0x83,0xff,0xff,0xff,0x00,0x84,0xeb,0xeb,
- 0xf2,0x66,0x0a,0xea,0xea,0xf1,0x66,0xeb,0xea,0xf1,0x66,0xea,0xea,0xf1,0x66,
- 0xea,0xe9,0xf0,0x66,0xe9,0xe9,0xf0,0x66,0xe9,0xe9,0xef,0x66,0xe8,0xe9,0xee,
- 0x66,0xe8,0xe8,0xee,0x66,0xe8,0xe7,0xee,0x66,0xe7,0xe7,0xed,0x66,0x82,0xe7,
- 0xe6,0xed,0x66,0x1a,0xe6,0xe5,0xeb,0x66,0xe5,0xe5,0xeb,0x66,0xe5,0xe4,0xea,
- 0x66,0xe4,0xe4,0xea,0x66,0xe4,0xe4,0xe9,0x66,0xe3,0xe3,0xe9,0x66,0xe3,0xe3,
- 0xe8,0x66,0xe2,0xe2,0xe8,0x66,0xe2,0xe1,0xe7,0x66,0xe2,0xe1,0xe6,0x66,0xe1,
- 0xe0,0xe6,0x66,0xe0,0xe0,0xe5,0x66,0xe0,0xdf,0xe4,0x66,0xdf,0xde,0xe3,0x66,
- 0xdf,0xde,0xe2,0x66,0xde,0xdd,0xe2,0x66,0xdd,0xdc,0xe1,0x66,0xdd,0xdc,0xe0,
- 0x66,0xdc,0xdc,0xdf,0x66,0xdc,0xdb,0xde,0x66,0xdb,0xda,0xde,0x66,0xda,0xd9,
- 0xde,0x66,0xda,0xd9,0xdc,0x66,0xd9,0xd8,0xdc,0x66,0xd9,0xd8,0xdb,0x66,0xd8,
- 0xd7,0xda,0x66,0x86,0xe8,0xe8,0xee,0x00,0x28,0xe8,0xe8,0xee,0x07,0xe6,0xe6,
- 0xed,0x40,0xec,0xec,0xf2,0x95,0xfb,0xfb,0xfd,0x86,0x6c,0x7c,0x9d,0x7c,0x19,
- 0x32,0x68,0x99,0x19,0x32,0x6c,0x99,0x1d,0x37,0x6e,0x99,0x2e,0x42,0x71,0x99,
- 0x3d,0x4f,0x79,0x99,0x32,0x49,0x7d,0x99,0x25,0x3f,0x79,0x99,0x27,0x40,0x7c,
- 0x99,0x1d,0x38,0x77,0x99,0x39,0x4f,0x81,0x99,0x92,0x9c,0xb1,0x99,0xd7,0xd9,
- 0xdd,0x7b,0xfe,0xfe,0xfe,0x7c,0xff,0xff,0xff,0x99,0xfd,0xfd,0xfc,0x99,0xed,
- 0xed,0xf2,0x97,0xe4,0xe3,0xeb,0x6b,0xe6,0xe5,0xeb,0x09,0xe3,0xe4,0xea,0x00,
- 0xe2,0xe2,0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,
- 0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xdf,0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,
- 0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,0x00,0xdb,0xda,0xdf,0x00,0xda,
- 0xd9,0xdd,0x00,0xb7,0xb7,0xb7,0xff,0xec,0xeb,0xed,0xff,0xfb,0xfc,0xfb,0xff,
- 0x00,0x00,0x00,0xff,0x82,0x1d,0x37,0x70,0xff,0x16,0x28,0x41,0x79,0xff,0x4a,
- 0x62,0x90,0xff,0x29,0x42,0x7b,0xff,0x26,0x40,0x7b,0xff,0x28,0x43,0x7e,0xff,
- 0x2a,0x45,0x80,0xff,0x2b,0x45,0x81,0xff,0x2d,0x47,0x83,0xff,0x2f,0x49,0x86,
- 0xff,0x32,0x4c,0x89,0xff,0x34,0x4e,0x8c,0xff,0x36,0x51,0x90,0xff,0x39,0x54,
- 0x93,0xff,0x3c,0x58,0x97,0xff,0x3f,0x5b,0x9a,0xff,0x41,0x5e,0x9e,0xff,0x45,
- 0x61,0xa2,0xff,0x48,0x65,0xa5,0xff,0x4a,0x67,0xa9,0xff,0x4c,0x69,0xab,0xff,
- 0x4f,0x6c,0xaf,0xff,0x51,0x6e,0xb1,0xff,0x85,0x50,0x6e,0xb1,0xff,0x04,0x11,
- 0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf8,0xff,0x57,0x59,0x5e,0x3a,
- 0x83,0xff,0xff,0xff,0x00,0x01,0xeb,0xeb,0xf2,0x66,0x85,0xff,0xff,0xff,0x66,
- 0x02,0xff,0xfe,0xff,0x66,0xfe,0xff,0xfe,0x66,0x82,0xfe,0xff,0xff,0x66,0x03,
- 0xff,0xfe,0xfe,0x66,0xfe,0xff,0xfe,0x66,0xfe,0xfe,0xfe,0x66,0x82,0xfe,0xfe,
- 0xfd,0x66,0x01,0xfd,0xfd,0xfe,0x66,0x84,0xfd,0xfd,0xfd,0x66,0x0a,0xfc,0xfc,
- 0xfc,0x66,0xfc,0xfb,0xfc,0x66,0xfc,0xfc,0xfc,0x66,0xfc,0xfb,0xfc,0x66,0xfb,
- 0xfb,0xfb,0x66,0xfb,0xfa,0xfa,0x66,0xfb,0xfa,0xfb,0x66,0xfa,0xfa,0xfa,0x66,
- 0xfa,0xf9,0xfa,0x66,0xfa,0xf9,0xf9,0x66,0x82,0xf9,0xf9,0xf9,0x66,0x04,0xf8,
- 0xf9,0xf9,0x66,0xf8,0xf8,0xf9,0x66,0xf8,0xf8,0xf8,0x66,0xf8,0xf8,0xf7,0x66,
- 0x82,0xf7,0xf7,0xf7,0x66,0x04,0xf7,0xf6,0xf6,0x66,0xf7,0xf6,0xf7,0x66,0xf6,
- 0xf6,0xf6,0x66,0xd8,0xd6,0xda,0x66,0x85,0xe6,0xe7,0xec,0x00,0x14,0xe6,0xe7,
- 0xec,0x01,0xe7,0xe7,0xed,0x27,0xea,0xea,0xef,0x94,0xfa,0xfa,0xfb,0x92,0x9a,
- 0xa4,0xba,0x74,0x15,0x2d,0x62,0x99,0x0a,0x26,0x63,0x99,0x19,0x31,0x69,0x99,
- 0x10,0x2e,0x6d,0x99,0x1c,0x36,0x70,0x99,0x26,0x3e,0x73,0x99,0x1f,0x39,0x73,
- 0x99,0x26,0x3f,0x79,0x99,0x27,0x41,0x7b,0x99,0x2b,0x45,0x7f,0x99,0x1f,0x3b,
- 0x7a,0x99,0x2e,0x48,0x80,0x99,0x71,0x82,0xa3,0x99,0xeb,0xe8,0xe5,0x90,0xfc,
- 0xfb,0xfc,0x74,0x82,0xfe,0xfe,0xfe,0x99,0x13,0xf0,0xf0,0xf4,0x99,0xe3,0xe3,
- 0xe9,0x83,0xe4,0xe4,0xea,0x1e,0xe2,0xe2,0xe8,0x00,0xe1,0xe1,0xe7,0x00,0xe0,
- 0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xdf,0xe4,0x00,
- 0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,0xe0,
- 0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,0xeb,0xe9,
- 0xed,0xff,0xfb,0xfa,0xfb,0xff,0x00,0x00,0x00,0xff,0x82,0x1a,0x34,0x6f,0xff,
- 0x16,0x40,0x57,0x84,0xff,0x95,0xa5,0xb7,0xff,0x3a,0x4f,0x81,0xff,0x25,0x3f,
- 0x7b,0xff,0x2b,0x45,0x80,0xff,0x2d,0x48,0x83,0xff,0x2f,0x4a,0x85,0xff,0x31,
- 0x4c,0x88,0xff,0x33,0x4e,0x89,0xff,0x34,0x4f,0x8b,0xff,0x36,0x50,0x8d,0xff,
- 0x38,0x52,0x8f,0xff,0x39,0x53,0x91,0xff,0x3c,0x56,0x94,0xff,0x3e,0x58,0x96,
- 0xff,0x40,0x5b,0x9a,0xff,0x42,0x5d,0x9d,0xff,0x45,0x61,0xa1,0xff,0x47,0x64,
- 0xa5,0xff,0x4b,0x68,0xa9,0xff,0x4e,0x6b,0xad,0xff,0x51,0x6e,0xb0,0xff,0x85,
- 0x52,0x6f,0xb1,0xff,0x04,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf5,0xf4,
- 0xf8,0xff,0x57,0x58,0x5c,0x3a,0x83,0xff,0xff,0xff,0x00,0x01,0xeb,0xeb,0xf2,
- 0x66,0x86,0xff,0xff,0xff,0x66,0x03,0xfe,0xff,0xff,0x66,0xff,0xff,0xff,0x66,
- 0xff,0xff,0xfe,0x66,0x82,0xfe,0xfe,0xfe,0x66,0x01,0xfe,0xfe,0xfd,0x66,0x82,
- 0xfd,0xfd,0xfe,0x66,0x08,0xfd,0xfd,0xfd,0x66,0xfd,0xfc,0xfd,0x66,0xfc,0xfd,
- 0xfd,0x66,0xfc,0xfc,0xfd,0x66,0xfc,0xfc,0xfc,0x66,0xfc,0xfb,0xfc,0x66,0xfb,
- 0xfb,0xfc,0x66,0xfc,0xfc,0xfb,0x66,0x82,0xfb,0xfb,0xfb,0x66,0x01,0xfb,0xfa,
- 0xfa,0x66,0x82,0xfa,0xfa,0xfa,0x66,0x0a,0xfa,0xf9,0xf9,0x66,0xf9,0xf9,0xf9,
- 0x66,0xfa,0xf9,0xf9,0x66,0xf9,0xf8,0xf8,0x66,0xf8,0xf8,0xf9,0x66,0xf8,0xf7,
- 0xf8,0x66,0xf8,0xf8,0xf8,0x66,0xf7,0xf7,0xf7,0x66,0xf7,0xf6,0xf7,0x66,0xf7,
- 0xf7,0xf6,0x66,0x82,0xf6,0xf6,0xf6,0x66,0x02,0xf6,0xf5,0xf6,0x66,0xd7,0xd6,
- 0xda,0x66,0x84,0xe6,0xe7,0xec,0x00,0x2a,0xe6,0xe7,0xec,0x01,0xe6,0xe7,0xec,
- 0x20,0xe8,0xe8,0xee,0x7f,0xf6,0xf6,0xf9,0x98,0xcd,0xd2,0xdd,0x77,0x1e,0x34,
- 0x66,0x95,0x19,0x32,0x66,0x99,0x14,0x2f,0x68,0x99,0xa2,0x91,0x7b,0x99,0x4f,
- 0x59,0x72,0x99,0x1b,0x36,0x71,0x99,0x20,0x39,0x73,0x99,0x24,0x3d,0x77,0x99,
- 0x26,0x3f,0x79,0x99,0x28,0x41,0x7b,0x99,0x2a,0x43,0x7e,0x99,0x2d,0x48,0x83,
- 0x99,0x26,0x42,0x7f,0x99,0x29,0x43,0x7f,0x99,0x61,0x72,0x9d,0x99,0xd7,0xd9,
- 0xde,0x9c,0xfb,0xfa,0xf8,0x75,0xfd,0xfd,0xfd,0x99,0xfe,0xfe,0xfe,0x99,0xf5,
- 0xf4,0xf7,0x99,0xe5,0xe5,0xeb,0x8e,0xe1,0xe1,0xe7,0x35,0xe1,0xe1,0xe7,0x00,
- 0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe5,0x00,0xdf,0xdf,0xe4,
- 0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xdd,0xdc,
- 0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,0xea,
- 0xe9,0xeb,0xff,0xfb,0xfa,0xfa,0xff,0x00,0x00,0x00,0xff,0x82,0x1e,0x37,0x70,
- 0xff,0x1f,0x2d,0x43,0x75,0xff,0x36,0x49,0x76,0xff,0x2e,0x45,0x7a,0xff,0x27,
- 0x40,0x7c,0xff,0x2a,0x44,0x7f,0xff,0x2c,0x47,0x82,0xff,0x2f,0x4a,0x84,0xff,
- 0x31,0x4c,0x87,0xff,0x33,0x4e,0x8a,0xff,0x35,0x51,0x8d,0xff,0x37,0x53,0x90,
- 0xff,0x39,0x55,0x92,0xff,0x3b,0x57,0x94,0xff,0x3c,0x58,0x96,0xff,0x3e,0x59,
- 0x97,0xff,0x40,0x5b,0x99,0xff,0x41,0x5c,0x9c,0xff,0x43,0x5e,0x9e,0xff,0x44,
- 0x60,0xa1,0xff,0x47,0x63,0xa4,0xff,0x49,0x66,0xa7,0xff,0x4c,0x69,0xab,0xff,
- 0x4e,0x6b,0xad,0xff,0x4f,0x6c,0xae,0xff,0x50,0x6d,0xaf,0xff,0x51,0x6e,0xb0,
- 0xff,0x52,0x6f,0xb1,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf5,0xf4,
- 0xf7,0xff,0x56,0x58,0x5b,0x3a,0x83,0xff,0xff,0xff,0x00,0x02,0xeb,0xeb,0xf2,
- 0x66,0xff,0xff,0xff,0x66,0xa6,0x00,0x00,0x00,0x66,0x02,0xf6,0xf5,0xf6,0x66,
- 0xd7,0xd5,0xd8,0x66,0x84,0xe6,0xe7,0xec,0x00,0x2a,0xe5,0xe5,0xeb,0x0d,0xe7,
- 0xe6,0xec,0x6d,0xf2,0xf2,0xf5,0x99,0xe9,0xeb,0xf1,0x78,0x17,0x2d,0x61,0x83,
- 0x13,0x2a,0x5f,0x98,0x17,0x30,0x65,0x99,0x2c,0x41,0x70,0x99,0x77,0x64,0x62,
- 0x99,0x5f,0x5c,0x68,0x99,0x19,0x33,0x6d,0x99,0x21,0x3a,0x73,0x99,0x24,0x3e,
- 0x77,0x99,0x26,0x40,0x79,0x99,0x28,0x42,0x7c,0x99,0x2a,0x43,0x7e,0x99,0x2c,
- 0x47,0x82,0x99,0x30,0x4a,0x85,0x99,0x2d,0x48,0x84,0x99,0x24,0x3f,0x7f,0x99,
- 0x49,0x60,0x93,0x99,0xb7,0xbe,0xce,0x9a,0xfc,0xfa,0xf5,0x7d,0xfc,0xfd,0xfd,
- 0x93,0xff,0xff,0xff,0x99,0xf8,0xf8,0xf9,0x99,0xe6,0xe7,0xec,0x92,0xe0,0xe0,
- 0xe6,0x4d,0xe0,0xe0,0xe7,0x00,0xe2,0xe2,0xe8,0x00,0xe1,0xe0,0xe6,0x00,0xdf,
- 0xdf,0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,
- 0xdd,0xdc,0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,
- 0xff,0xe9,0xe9,0xec,0xff,0xfb,0xfb,0xfa,0xff,0x00,0x00,0x00,0xff,0x82,0x1e,
- 0x37,0x6f,0xff,0x16,0x1e,0x38,0x71,0xff,0x1e,0x38,0x74,0xff,0x24,0x3e,0x77,
- 0xff,0x27,0x41,0x7a,0xff,0x29,0x43,0x7d,0xff,0x2b,0x45,0x80,0xff,0x2d,0x48,
- 0x83,0xff,0x30,0x4b,0x86,0xff,0x32,0x4d,0x89,0xff,0x34,0x50,0x8c,0xff,0x36,
- 0x52,0x8f,0xff,0x38,0x55,0x91,0xff,0x3b,0x57,0x95,0xff,0x3d,0x5a,0x97,0xff,
- 0x3f,0x5c,0x9a,0xff,0x41,0x5e,0x9c,0xff,0x43,0x60,0x9f,0xff,0x45,0x61,0xa1,
- 0xff,0x46,0x62,0xa2,0xff,0x47,0x63,0xa4,0xff,0x49,0x65,0xa6,0xff,0x4a,0x67,
- 0xa9,0xff,0x82,0x4c,0x69,0xab,0xff,0x82,0x4d,0x6a,0xac,0xff,0x05,0x4e,0x6b,
- 0xad,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf4,0xf4,0xf7,0xff,0x50,
- 0x52,0x56,0x3a,0x83,0xff,0xff,0xff,0x00,0x11,0xea,0xeb,0xf1,0x66,0xff,0xff,
- 0xff,0x66,0x00,0x00,0x00,0x66,0xc1,0xaf,0xb5,0x4d,0xb2,0xb0,0xb7,0x5e,0xb1,
- 0xb5,0xbc,0x5d,0xbd,0xbf,0xc6,0x5d,0xba,0xbd,0xc3,0x5d,0xb5,0xbb,0xc3,0x5d,
- 0xa5,0xae,0xb5,0x5d,0xbb,0xba,0xba,0x5d,0xb2,0xb7,0xc2,0x5d,0xab,0xb2,0xc1,
- 0x5d,0xcb,0xce,0xd5,0x5d,0xcf,0xd2,0xda,0x5d,0xce,0xd2,0xd9,0x5d,0xcf,0xd2,
- 0xd9,0x5d,0x82,0xcf,0xd3,0xda,0x5d,0x83,0xd0,0xd3,0xdb,0x5d,0x03,0xd0,0xd4,
- 0xdb,0x5d,0xd1,0xd4,0xdb,0x5d,0xd1,0xd4,0xdc,0x5d,0x82,0xd1,0xd5,0xdc,0x5d,
- 0x01,0xd1,0xd5,0xdd,0x5d,0x82,0xd2,0xd5,0xdd,0x5d,0x0c,0xd2,0xd5,0xde,0x5d,
- 0xd2,0xd6,0xde,0x5d,0xd2,0xd5,0xdd,0x5d,0xc2,0xc5,0xcd,0x5d,0xbb,0xbe,0xc6,
- 0x5d,0xc2,0xc6,0xce,0x5d,0xbd,0xc1,0xc9,0x5d,0xb8,0xbc,0xc4,0x5e,0xc3,0xc6,
- 0xce,0x4a,0x00,0x00,0x00,0x66,0xf5,0xf5,0xf5,0x66,0xd7,0xd6,0xd8,0x66,0x83,
- 0xe6,0xe7,0xec,0x00,0x2b,0xe6,0xe7,0xec,0x0a,0xe6,0xe5,0xeb,0x51,0xf0,0xee,
- 0xf2,0x99,0xf8,0xf8,0xfa,0x83,0x4c,0x5f,0x88,0x7c,0x13,0x2b,0x61,0x97,0x12,
- 0x29,0x5d,0x99,0x19,0x31,0x65,0x99,0x13,0x2d,0x66,0x99,0x2f,0x42,0x6e,0x99,
- 0x20,0x3a,0x72,0x99,0x20,0x39,0x71,0x99,0x20,0x39,0x70,0x99,0x23,0x3d,0x75,
- 0x99,0x27,0x40,0x7a,0x99,0x28,0x42,0x7c,0x99,0x2a,0x44,0x7f,0x99,0x2c,0x47,
- 0x82,0x99,0x2e,0x49,0x84,0x99,0x31,0x4c,0x87,0x99,0x31,0x4c,0x88,0x99,0x24,
- 0x40,0x80,0x99,0x3c,0x56,0x8e,0x99,0x97,0xa4,0xbe,0x99,0xf6,0xf5,0xf0,0x8b,
- 0xfb,0xfb,0xfc,0x86,0xfe,0xfe,0xfd,0x99,0xfb,0xfc,0xfa,0x99,0xea,0xea,0xee,
- 0x96,0xdf,0xdf,0xe6,0x68,0xe2,0xe2,0xe8,0x07,0xe1,0xe0,0xe6,0x00,0xdf,0xdf,
- 0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xde,
- 0xdd,0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,
- 0xea,0xe9,0xeb,0xff,0xfb,0xfb,0xfa,0xff,0x00,0x00,0x00,0xff,0x82,0x1b,0x35,
- 0x6e,0xff,0x18,0x26,0x3d,0x71,0xff,0x38,0x4b,0x76,0xff,0x26,0x3f,0x77,0xff,
- 0x25,0x3f,0x79,0xff,0x28,0x42,0x7c,0xff,0x2a,0x44,0x7f,0xff,0x2c,0x47,0x82,
- 0xff,0x2e,0x4a,0x84,0xff,0x31,0x4c,0x88,0xff,0x33,0x4f,0x8a,0xff,0x35,0x51,
- 0x8d,0xff,0x37,0x53,0x90,0xff,0x3a,0x56,0x93,0xff,0x3c,0x58,0x96,0xff,0x3e,
- 0x5b,0x98,0xff,0x41,0x5d,0x9b,0xff,0x43,0x60,0x9f,0xff,0x45,0x62,0xa1,0xff,
- 0x48,0x65,0xa4,0xff,0x4a,0x67,0xa7,0xff,0x4c,0x69,0xa9,0xff,0x4d,0x6a,0xab,
- 0xff,0x4e,0x6b,0xad,0xff,0x4e,0x6b,0xae,0xff,0x83,0x4d,0x6a,0xac,0xff,0x04,
- 0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf3,0xf4,0xf8,0xff,0x50,0x51,0x58,
- 0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xea,0xeb,0xf1,0x66,0xff,0xff,0xff,0x66,
- 0x00,0x00,0x00,0x66,0x82,0x24,0x3c,0x73,0x66,0x1a,0x23,0x3c,0x74,0x66,0x22,
- 0x3a,0x73,0x66,0x28,0x41,0x79,0x66,0x2a,0x43,0x7b,0x66,0x2d,0x45,0x7d,0x66,
- 0x2d,0x46,0x7d,0x66,0x2f,0x49,0x80,0x66,0x30,0x49,0x81,0x66,0x32,0x4a,0x83,
- 0x66,0x34,0x4c,0x86,0x66,0x35,0x4e,0x88,0x66,0x38,0x51,0x8c,0x66,0x39,0x53,
- 0x8e,0x66,0x3c,0x56,0x91,0x66,0x3e,0x58,0x94,0x66,0x40,0x5b,0x97,0x66,0x42,
- 0x5d,0x9a,0x66,0x44,0x60,0x9c,0x66,0x46,0x62,0x9f,0x66,0x48,0x64,0xa2,0x66,
- 0x4a,0x67,0xa4,0x66,0x4d,0x68,0xa7,0x66,0x4f,0x6a,0xa9,0x66,0x51,0x6c,0xab,
- 0x66,0x52,0x6e,0xae,0x66,0x54,0x70,0xb0,0x66,0x83,0x55,0x71,0xb1,0x66,0x01,
- 0x54,0x70,0xb0,0x66,0x83,0x55,0x71,0xb1,0x66,0x32,0x55,0x71,0xb1,0x52,0x00,
- 0x00,0x00,0x66,0xf5,0xf4,0xf5,0x66,0xd7,0xd4,0xd7,0x66,0xe5,0xe4,0xea,0x00,
- 0xe4,0xe3,0xea,0x00,0xe4,0xe4,0xea,0x05,0xe4,0xe4,0xeb,0x41,0xea,0xeb,0xef,
- 0x99,0xfb,0xfb,0xfd,0x8e,0x6b,0x7b,0x9c,0x6b,0x13,0x2c,0x62,0x95,0x11,0x2a,
- 0x61,0x99,0x26,0x3b,0x6a,0x99,0x66,0x72,0x89,0x99,0x2c,0x42,0x72,0x99,0x1c,
- 0x36,0x6e,0x99,0x1e,0x37,0x6f,0x99,0x20,0x39,0x72,0x99,0x21,0x3a,0x73,0x99,
- 0x22,0x3c,0x74,0x99,0x24,0x3d,0x77,0x99,0x29,0x43,0x7d,0x99,0x2a,0x44,0x7f,
- 0x99,0x2d,0x47,0x81,0x99,0x2f,0x4a,0x84,0x99,0x30,0x4c,0x87,0x99,0x33,0x4f,
- 0x8a,0x99,0x34,0x4f,0x8a,0x99,0x29,0x45,0x84,0x99,0x36,0x51,0x8d,0x99,0x78,
- 0x89,0xb0,0x99,0xe2,0xe3,0xe5,0x9a,0xfa,0xf9,0xf9,0x81,0xfd,0xfc,0xfc,0x99,
- 0xfd,0xfc,0xfd,0x99,0xee,0xee,0xf1,0x99,0xe0,0xe0,0xe6,0x81,0xe1,0xe0,0xe6,
- 0x1a,0xe0,0xdf,0xe4,0x00,0xdd,0xdd,0xe4,0x00,0xdd,0xdc,0xe2,0x00,0xdf,0xde,
- 0xe3,0x00,0xde,0xdd,0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,
- 0xb7,0xb7,0xff,0xea,0xe9,0xea,0xff,0xfb,0xf9,0xfa,0xff,0x00,0x00,0x00,0xff,
- 0x82,0x14,0x30,0x6c,0xff,0x17,0x48,0x54,0x74,0xff,0xaf,0x93,0x6f,0xff,0x33,
- 0x44,0x70,0xff,0x21,0x3c,0x79,0xff,0x27,0x41,0x7b,0xff,0x29,0x43,0x7e,0xff,
- 0x2c,0x46,0x81,0xff,0x2e,0x49,0x83,0xff,0x30,0x4b,0x86,0xff,0x32,0x4e,0x89,
- 0xff,0x34,0x50,0x8c,0xff,0x37,0x52,0x8f,0xff,0x39,0x55,0x92,0xff,0x3b,0x57,
- 0x95,0xff,0x3d,0x5a,0x97,0xff,0x40,0x5c,0x9a,0xff,0x42,0x5e,0x9e,0xff,0x44,
- 0x61,0xa0,0xff,0x47,0x64,0xa3,0xff,0x4a,0x66,0xa6,0xff,0x4b,0x68,0xa9,0xff,
- 0x4e,0x6b,0xac,0xff,0x50,0x6d,0xaf,0xff,0x82,0x52,0x6f,0xb1,0xff,0x06,0x51,
- 0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,
- 0xf4,0xf3,0xf7,0xff,0x52,0x54,0x5a,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xea,
- 0xea,0xf1,0x66,0xff,0xff,0xff,0x66,0x00,0x00,0x00,0x66,0x82,0x1b,0x34,0x6e,
- 0x66,0x1b,0x2a,0x44,0x7a,0x66,0x43,0x5b,0x8a,0x66,0x22,0x3b,0x75,0x66,0x24,
- 0x3e,0x79,0x66,0x26,0x40,0x7b,0x66,0x28,0x42,0x7e,0x66,0x29,0x44,0x80,0x66,
- 0x2b,0x46,0x81,0x66,0x2d,0x48,0x83,0x66,0x2e,0x49,0x85,0x66,0x2f,0x4a,0x87,
- 0x66,0x31,0x4c,0x89,0x66,0x33,0x4d,0x8a,0x66,0x34,0x4e,0x8c,0x66,0x35,0x50,
- 0x8e,0x66,0x37,0x52,0x90,0x66,0x39,0x54,0x93,0x66,0x3b,0x56,0x95,0x66,0x3d,
- 0x58,0x98,0x66,0x3f,0x5a,0x9b,0x66,0x41,0x5d,0x9d,0x66,0x44,0x5f,0xa0,0x66,
- 0x46,0x62,0xa4,0x66,0x48,0x65,0xa7,0x66,0x4a,0x68,0xaa,0x66,0x4d,0x6a,0xad,
- 0x66,0x4f,0x6d,0xaf,0x66,0x82,0x50,0x6e,0xb1,0x66,0x84,0x51,0x6e,0xb1,0x66,
- 0x32,0x51,0x6e,0xb1,0x50,0x00,0x00,0x00,0x66,0xf5,0xf4,0xf5,0x66,0xd6,0xd4,
- 0xd7,0x66,0xe5,0xe4,0xea,0x00,0xe4,0xe3,0xea,0x02,0xe4,0xe4,0xea,0x25,0xe7,
- 0xe7,0xed,0x88,0xf8,0xf8,0xfa,0x94,0xaa,0xb3,0xc6,0x6c,0x15,0x2e,0x63,0x91,
- 0x13,0x2c,0x62,0x99,0x14,0x2d,0x63,0x99,0x2b,0x3f,0x6d,0x99,0x79,0x81,0x92,
- 0x99,0x23,0x39,0x6b,0x99,0x1a,0x33,0x69,0x99,0x1e,0x37,0x70,0x99,0x20,0x39,
- 0x72,0x99,0x23,0x3c,0x75,0x99,0x24,0x3e,0x77,0x99,0x58,0x6b,0x97,0xa9,0xa7,
- 0xb2,0xc9,0xc9,0xda,0xde,0xe9,0xe5,0xf4,0xf6,0xf9,0xf7,0xf8,0xf9,0xfb,0xf9,
- 0xe6,0xe9,0xf0,0xeb,0xbc,0xc5,0xd8,0xd1,0x79,0x8c,0xb4,0xb1,0x39,0x54,0x8e,
- 0x9a,0x30,0x4b,0x8a,0x99,0x33,0x4f,0x8e,0x99,0x5d,0x73,0xa3,0x99,0xc9,0xce,
- 0xd8,0x9b,0xfb,0xf9,0xf7,0x83,0xfc,0xfc,0xfb,0x99,0xfd,0xfd,0xfd,0x99,0xf2,
- 0xf1,0xf4,0x99,0xe1,0xe0,0xe7,0x90,0xdf,0xdf,0xe4,0x32,0xdd,0xdd,0xe4,0x00,
- 0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,0x00,0xde,0xdd,0xe1,0x00,0xdb,0xda,0xdf,
- 0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,0xe8,0xe8,0xea,0xff,0xfa,0xf9,
- 0xfa,0xff,0x00,0x00,0x00,0xff,0x82,0x1a,0x34,0x6b,0xff,0x18,0x2f,0x44,0x73,
- 0xff,0x42,0x4a,0x6b,0xff,0x33,0x45,0x73,0xff,0x22,0x3c,0x76,0xff,0x26,0x3f,
- 0x79,0xff,0x28,0x42,0x7c,0xff,0x2a,0x44,0x7f,0xff,0x2d,0x48,0x83,0xff,0x2f,
- 0x4b,0x86,0xff,0x32,0x4d,0x88,0xff,0x33,0x4f,0x8b,0xff,0x36,0x51,0x8d,0xff,
- 0x38,0x54,0x91,0xff,0x3a,0x56,0x93,0xff,0x3c,0x59,0x96,0xff,0x3f,0x5b,0x99,
- 0xff,0x41,0x5d,0x9c,0xff,0x43,0x60,0x9f,0xff,0x45,0x62,0xa2,0xff,0x48,0x65,
- 0xa5,0xff,0x4b,0x67,0xa8,0xff,0x4d,0x6a,0xab,0xff,0x4f,0x6c,0xad,0xff,0x52,
- 0x6f,0xb0,0xff,0x82,0x52,0x6f,0xb1,0xff,0x05,0x53,0x70,0xb2,0xff,0x11,0x11,
- 0x11,0xff,0xff,0xff,0xff,0xff,0xf4,0xf4,0xf6,0xff,0x4c,0x4e,0x54,0x3a,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xea,0xea,0xf0,0x66,0xff,0xff,0xff,0x66,0x00,0x00,
- 0x00,0x66,0x82,0x17,0x30,0x6b,0x66,0x1e,0x4c,0x61,0x8a,0x66,0x89,0x99,0xae,
- 0x66,0x26,0x3e,0x75,0x66,0x24,0x3d,0x77,0x66,0x27,0x40,0x7b,0x66,0x29,0x42,
- 0x7d,0x66,0x2b,0x44,0x7f,0x66,0x2d,0x47,0x82,0x66,0x2f,0x4a,0x84,0x66,0x30,
- 0x4c,0x86,0x66,0x32,0x4e,0x89,0x66,0x34,0x50,0x8c,0x66,0x36,0x52,0x8e,0x66,
- 0x37,0x53,0x90,0x66,0x39,0x54,0x91,0x66,0x3a,0x56,0x93,0x66,0x3c,0x58,0x95,
- 0x66,0x3e,0x59,0x97,0x66,0x3f,0x5a,0x99,0x66,0x40,0x5b,0x9a,0x66,0x41,0x5d,
- 0x9c,0x66,0x43,0x5e,0x9e,0x66,0x45,0x60,0xa0,0x66,0x45,0x62,0xa2,0x66,0x47,
- 0x64,0xa5,0x66,0x49,0x66,0xa7,0x66,0x4b,0x68,0xaa,0x66,0x4d,0x6a,0xad,0x66,
- 0x4e,0x6b,0xad,0x66,0x4f,0x6c,0xae,0x66,0x82,0x50,0x6d,0xaf,0x66,0x0b,0x51,
- 0x6e,0xb0,0x66,0x51,0x6e,0xb0,0x50,0x00,0x00,0x00,0x66,0xf4,0xf4,0xf5,0x66,
- 0xd5,0xd4,0xd6,0x66,0xe5,0xe4,0xea,0x01,0xe4,0xe3,0xea,0x1a,0xe5,0xe4,0xea,
- 0x85,0xf4,0xf3,0xf6,0x97,0xd1,0xd5,0xe0,0x67,0x13,0x2c,0x62,0x88,0x82,0x13,
- 0x2c,0x62,0x99,0x0a,0x12,0x2b,0x62,0x99,0x20,0x37,0x68,0x99,0x1b,0x31,0x63,
- 0x99,0x11,0x29,0x61,0x99,0x1b,0x32,0x68,0x99,0x1d,0x37,0x6e,0x99,0x21,0x39,
- 0x72,0x99,0x63,0x75,0x9e,0xad,0xcc,0xd2,0xdf,0xdc,0xfb,0xfb,0xfc,0xfb,0x87,
- 0xff,0xff,0xff,0xff,0x15,0xe0,0xe4,0xee,0xe7,0x92,0xa1,0xc2,0xbb,0x37,0x51,
- 0x90,0x99,0x2d,0x4b,0x8e,0x99,0x4c,0x66,0x9f,0x99,0xad,0xb6,0xcc,0x9a,0xfa,
- 0xf8,0xf3,0x8c,0xfb,0xfb,0xfb,0x95,0xfe,0xfe,0xfe,0x99,0xf6,0xf4,0xf5,0x99,
- 0xe5,0xe3,0xe8,0x94,0xdc,0xdc,0xe3,0x4c,0xdd,0xdc,0xe2,0x00,0xdf,0xde,0xe3,
- 0x00,0xde,0xdd,0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,
- 0xb7,0xff,0xe9,0xe8,0xe9,0xff,0xfa,0xf9,0xf9,0xff,0x00,0x00,0x00,0xff,0x82,
- 0x19,0x31,0x66,0xff,0x1f,0x1c,0x33,0x69,0xff,0x14,0x2f,0x6a,0xff,0x21,0x39,
- 0x6f,0xff,0x21,0x3a,0x71,0xff,0x23,0x3c,0x74,0xff,0x25,0x3f,0x77,0xff,0x27,
- 0x41,0x7a,0xff,0x2a,0x44,0x7e,0xff,0x2d,0x47,0x82,0xff,0x30,0x4b,0x86,0xff,
- 0x33,0x4e,0x8a,0xff,0x35,0x51,0x8d,0xff,0x37,0x53,0x90,0xff,0x39,0x56,0x93,
- 0xff,0x3c,0x58,0x95,0xff,0x3e,0x5a,0x98,0xff,0x40,0x5d,0x9b,0xff,0x42,0x5f,
- 0x9e,0xff,0x44,0x62,0xa1,0xff,0x47,0x63,0xa3,0xff,0x48,0x65,0xa5,0xff,0x4a,
- 0x67,0xa8,0xff,0x4e,0x6b,0xac,0xff,0x51,0x6e,0xb0,0xff,0x52,0x6f,0xb1,0xff,
- 0x51,0x6e,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,
- 0xff,0xf3,0xf3,0xf6,0xff,0x49,0x4b,0x51,0x3b,0x83,0xff,0xff,0xff,0x00,0x03,
- 0xea,0xea,0xf1,0x66,0xfe,0xff,0xff,0x66,0x00,0x00,0x00,0x66,0x82,0x1b,0x34,
- 0x6d,0x66,0x1c,0x2b,0x40,0x72,0x66,0x34,0x47,0x73,0x66,0x27,0x3f,0x75,0x66,
- 0x23,0x3d,0x76,0x66,0x26,0x3f,0x79,0x66,0x27,0x41,0x7b,0x66,0x29,0x43,0x7e,
- 0x66,0x2b,0x45,0x80,0x66,0x2d,0x48,0x82,0x66,0x2f,0x4a,0x85,0x66,0x31,0x4c,
- 0x87,0x66,0x33,0x4e,0x8a,0x66,0x34,0x50,0x8c,0x66,0x36,0x52,0x8e,0x66,0x38,
- 0x54,0x91,0x66,0x3a,0x56,0x93,0x66,0x3c,0x58,0x95,0x66,0x3e,0x5a,0x98,0x66,
- 0x3f,0x5c,0x9b,0x66,0x41,0x5e,0x9d,0x66,0x43,0x60,0x9f,0x66,0x44,0x61,0xa1,
- 0x66,0x46,0x63,0xa3,0x66,0x48,0x64,0xa5,0x66,0x49,0x66,0xa6,0x66,0x4a,0x67,
- 0xa8,0x66,0x4b,0x68,0xa9,0x66,0x4d,0x6a,0xab,0x66,0x82,0x4d,0x6a,0xac,0x66,
- 0x01,0x4c,0x69,0xab,0x66,0x82,0x4d,0x6a,0xac,0x66,0x1d,0x4d,0x6a,0xac,0x50,
- 0x00,0x00,0x00,0x66,0xf4,0xf4,0xf4,0x66,0xd4,0xd4,0xd5,0x66,0xe5,0xe4,0xea,
- 0x0b,0xe5,0xe4,0xeb,0x66,0xf1,0xf0,0xf4,0x99,0xf8,0xf8,0xfa,0x7a,0x32,0x45,
- 0x72,0x81,0x13,0x2b,0x5f,0x99,0x12,0x2a,0x5f,0x99,0x13,0x2c,0x61,0x99,0x13,
- 0x2c,0x63,0x99,0x12,0x2c,0x65,0x99,0x14,0x2f,0x68,0x99,0x1a,0x30,0x67,0x99,
- 0x1a,0x33,0x68,0x99,0x1b,0x34,0x6b,0x99,0x8c,0x99,0xb5,0xbd,0xfc,0xfc,0xfd,
- 0xfc,0xff,0xff,0xff,0xff,0xf9,0xfa,0xfb,0xfb,0xc2,0xc8,0xd4,0xe0,0x80,0x85,
- 0x92,0xdf,0x58,0x5b,0x62,0xed,0x4c,0x4e,0x50,0xf9,0x60,0x61,0x62,0xfb,0x95,
- 0x96,0x99,0xf6,0xe8,0xe9,0xeb,0xfa,0x82,0xff,0xff,0xff,0xff,0x13,0xcb,0xd3,
- 0xe3,0xd9,0x47,0x61,0x99,0x9d,0x32,0x4e,0x92,0x99,0x45,0x60,0x9d,0x99,0x8e,
- 0x9d,0xbe,0x99,0xef,0xed,0xea,0x98,0xfa,0xfa,0xf9,0x8f,0xfc,0xfc,0xfb,0x99,
- 0xf9,0xf8,0xfa,0x99,0xe7,0xe7,0xeb,0x97,0xdc,0xdb,0xe1,0x67,0xdf,0xde,0xe3,
- 0x04,0xde,0xdd,0xe1,0x00,0xdb,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xb7,0xb7,
- 0xb7,0xff,0xe8,0xe7,0xe8,0xff,0xfa,0xf8,0xf9,0xff,0x00,0x00,0x00,0xff,0x82,
- 0x16,0x30,0x68,0xff,0x19,0x27,0x3f,0x71,0xff,0x69,0x77,0x92,0xff,0x23,0x3b,
- 0x72,0xff,0x21,0x3b,0x74,0xff,0x25,0x3e,0x77,0xff,0x27,0x40,0x7a,0xff,0x28,
- 0x42,0x7c,0xff,0x2a,0x44,0x7e,0xff,0x2c,0x45,0x7f,0xff,0x2d,0x46,0x81,0xff,
- 0x30,0x4a,0x86,0xff,0x34,0x50,0x8c,0xff,0x36,0x52,0x8f,0xff,0x38,0x54,0x91,
- 0xff,0x3a,0x57,0x94,0xff,0x3d,0x59,0x97,0xff,0x3f,0x5c,0x9a,0xff,0x41,0x5d,
- 0x9c,0xff,0x42,0x5e,0x9d,0xff,0x43,0x5e,0x9e,0xff,0x44,0x60,0xa0,0xff,0x46,
- 0x62,0xa3,0xff,0x49,0x66,0xa7,0xff,0x4d,0x69,0xab,0xff,0x4e,0x6b,0xad,0xff,
- 0x82,0x4d,0x6a,0xac,0xff,0x04,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf3,
- 0xf3,0xf6,0xff,0x4e,0x4e,0x54,0x3c,0x83,0xff,0xff,0xff,0x00,0x03,0xea,0xe9,
- 0xf0,0x66,0xff,0xff,0xff,0x66,0x00,0x00,0x00,0x66,0x82,0x1b,0x34,0x6c,0x66,
- 0x1c,0x1a,0x34,0x6d,0x66,0x1a,0x34,0x70,0x66,0x21,0x3a,0x72,0x66,0x22,0x3c,
- 0x75,0x66,0x25,0x3e,0x78,0x66,0x26,0x40,0x7a,0x66,0x28,0x42,0x7c,0x66,0x2a,
- 0x44,0x7e,0x66,0x2c,0x46,0x81,0x66,0x2e,0x49,0x83,0x66,0x2f,0x4b,0x86,0x66,
- 0x31,0x4c,0x88,0x66,0x33,0x4f,0x8a,0x66,0x35,0x51,0x8d,0x66,0x37,0x53,0x8f,
- 0x66,0x39,0x54,0x91,0x66,0x3a,0x57,0x94,0x66,0x3c,0x59,0x96,0x66,0x3e,0x5b,
- 0x99,0x66,0x40,0x5d,0x9b,0x66,0x42,0x5f,0x9d,0x66,0x44,0x60,0xa0,0x66,0x45,
- 0x63,0xa2,0x66,0x48,0x65,0xa5,0x66,0x4a,0x67,0xa7,0x66,0x4c,0x69,0xaa,0x66,
- 0x4e,0x6a,0xac,0x66,0x50,0x6c,0xae,0x66,0x82,0x51,0x6e,0xb0,0x66,0x82,0x50,
- 0x6d,0xaf,0x66,0x09,0x4f,0x6c,0xae,0x66,0x4f,0x6c,0xae,0x50,0x00,0x00,0x00,
- 0x66,0xf5,0xf3,0xf4,0x66,0xd5,0xd4,0xd7,0x69,0xe1,0xe0,0xe7,0x58,0xec,0xeb,
- 0xef,0x99,0xfc,0xfc,0xfd,0x7b,0x37,0x4a,0x76,0x6c,0x84,0x12,0x29,0x5d,0x99,
- 0x0b,0x13,0x2b,0x60,0x99,0x15,0x2f,0x64,0x99,0x18,0x31,0x68,0x99,0x1a,0x33,
- 0x6b,0x99,0x1b,0x33,0x69,0x99,0x1c,0x35,0x6b,0x99,0x5a,0x6c,0x94,0xab,0xe5,
- 0xe8,0xef,0xed,0xb5,0xbb,0xc9,0xde,0x33,0x38,0x44,0xe1,0x01,0x01,0x02,0xfb,
- 0x85,0x00,0x00,0x00,0xff,0x16,0x15,0x15,0x15,0xff,0x6f,0x6f,0x6f,0xff,0xe9,
- 0xe9,0xea,0xfd,0xff,0xff,0xff,0xff,0xd9,0xde,0xea,0xe1,0x55,0x6c,0xa2,0xa1,
- 0x37,0x54,0x96,0x99,0x41,0x5e,0x9e,0x99,0x71,0x86,0xb3,0x99,0xd7,0xda,0xdf,
- 0x9c,0xf9,0xf8,0xf6,0x8e,0xfb,0xfb,0xfb,0x99,0xfb,0xfb,0xfa,0x99,0xeb,0xea,
- 0xed,0x98,0xdc,0xdb,0xe0,0x7f,0xde,0xdd,0xe1,0x18,0xdb,0xda,0xdf,0x00,0xda,
- 0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,0xe8,0xe6,0xe7,0xff,0xf9,0xf8,0xf8,0xff,
- 0x00,0x00,0x00,0xff,0x82,0x15,0x2f,0x68,0xff,0x1f,0x29,0x40,0x72,0xff,0x6d,
- 0x78,0x90,0xff,0x22,0x3a,0x71,0xff,0x20,0x3a,0x73,0xff,0x24,0x3d,0x77,0xff,
- 0x26,0x40,0x79,0xff,0x28,0x42,0x7c,0xff,0x2a,0x44,0x7f,0xff,0x2d,0x48,0x82,
- 0xff,0x2e,0x4a,0x84,0xff,0x2f,0x48,0x83,0xff,0x32,0x4c,0x88,0xff,0x36,0x52,
- 0x8e,0xff,0x38,0x54,0x90,0xff,0x3a,0x56,0x93,0xff,0x3c,0x58,0x95,0xff,0x3d,
- 0x58,0x96,0xff,0x3d,0x59,0x97,0xff,0x3f,0x5b,0x99,0xff,0x42,0x5c,0x9b,0xff,
- 0x44,0x5f,0x9f,0xff,0x46,0x62,0xa3,0xff,0x47,0x64,0xa5,0xff,0x49,0x66,0xa7,
- 0xff,0x4c,0x68,0xab,0xff,0x4e,0x6b,0xad,0xff,0x50,0x6d,0xaf,0xff,0x11,0x11,
- 0x11,0xff,0xff,0xff,0xff,0xff,0xf3,0xf3,0xf5,0xff,0x53,0x54,0x57,0x3f,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xe9,0xe9,0xf0,0x66,0xfe,0xfe,0xff,0x66,0x00,0x00,
- 0x00,0x66,0x82,0x17,0x30,0x68,0x66,0x1e,0x26,0x3b,0x6c,0x66,0x34,0x46,0x70,
- 0x66,0x1e,0x37,0x6f,0x66,0x20,0x39,0x71,0x66,0x22,0x3c,0x74,0x66,0x24,0x3d,
- 0x77,0x66,0x26,0x3f,0x79,0x66,0x28,0x41,0x7b,0x66,0x2a,0x44,0x7e,0x66,0x2c,
- 0x47,0x81,0x66,0x2e,0x49,0x83,0x66,0x30,0x4b,0x87,0x66,0x32,0x4e,0x89,0x66,
- 0x34,0x4f,0x8b,0x66,0x35,0x51,0x8d,0x66,0x37,0x53,0x90,0x66,0x39,0x55,0x92,
- 0x66,0x3b,0x58,0x95,0x66,0x3d,0x59,0x97,0x66,0x3f,0x5b,0x9a,0x66,0x41,0x5d,
- 0x9c,0x66,0x42,0x5f,0x9e,0x66,0x44,0x61,0xa0,0x66,0x47,0x64,0xa3,0x66,0x49,
- 0x65,0xa6,0x66,0x4b,0x67,0xa8,0x66,0x4d,0x69,0xaa,0x66,0x4f,0x6b,0xad,0x66,
- 0x51,0x6d,0xaf,0x66,0x52,0x6f,0xb1,0x66,0x82,0x53,0x70,0xb2,0x66,0x08,0x52,
- 0x6f,0xb1,0x66,0x52,0x6f,0xb1,0x50,0x00,0x00,0x00,0x66,0xf3,0xf3,0xf4,0x68,
- 0xda,0xd9,0xdd,0x88,0xe9,0xe8,0xed,0x95,0xfb,0xfa,0xfb,0x94,0x82,0x8e,0xa9,
- 0x6a,0x85,0x12,0x29,0x5d,0x99,0x04,0x13,0x2a,0x5e,0x99,0x15,0x2c,0x61,0x99,
- 0x18,0x2f,0x64,0x99,0x19,0x32,0x68,0x99,0x82,0x1c,0x35,0x6c,0x99,0x20,0x1e,
- 0x37,0x6e,0x99,0x1e,0x29,0x45,0xc0,0x01,0x01,0x02,0xfc,0x00,0x00,0x00,0xff,
- 0x01,0x02,0x03,0xfb,0x0b,0x12,0x20,0xda,0x15,0x22,0x3d,0xc3,0x1b,0x29,0x4b,
- 0xb8,0x1d,0x2e,0x51,0xb6,0x1b,0x29,0x47,0xbf,0x12,0x1b,0x2e,0xd1,0x04,0x06,
- 0x0b,0xf3,0x28,0x28,0x28,0xff,0xcf,0xcf,0xcf,0xff,0xff,0xff,0xff,0xff,0xd2,
- 0xd8,0xe5,0xdf,0x44,0x5f,0x9b,0x9b,0x3f,0x5b,0x9c,0x99,0x3d,0x5b,0xa0,0x99,
- 0x5d,0x75,0xad,0x99,0xbd,0xc5,0xd5,0x9b,0xfa,0xf8,0xf4,0x92,0xfa,0xf9,0xf9,
- 0x99,0xfc,0xfb,0xfb,0x99,0xee,0xee,0xf0,0x99,0xde,0xdd,0xe1,0x92,0xdb,0xda,
- 0xdf,0x2f,0xda,0xd9,0xde,0x00,0xb7,0xb7,0xb7,0xff,0xe6,0xe6,0xe8,0xff,0xf8,
- 0xf8,0xf9,0xff,0x00,0x00,0x00,0xff,0x82,0x16,0x2e,0x65,0xff,0x1f,0x1a,0x33,
- 0x6a,0xff,0x24,0x3b,0x6d,0xff,0x20,0x39,0x70,0xff,0x20,0x39,0x72,0xff,0x23,
- 0x3c,0x75,0xff,0x25,0x3e,0x78,0xff,0x27,0x41,0x7b,0xff,0x29,0x43,0x7e,0xff,
- 0x2c,0x46,0x81,0xff,0x2e,0x49,0x84,0xff,0x2f,0x4a,0x85,0xff,0x30,0x49,0x85,
- 0xff,0x34,0x50,0x8c,0xff,0x36,0x52,0x8e,0xff,0x37,0x52,0x8f,0xff,0x38,0x53,
- 0x90,0xff,0x3a,0x54,0x92,0xff,0x3d,0x57,0x95,0xff,0x3e,0x59,0x98,0xff,0x41,
- 0x5d,0x9c,0xff,0x46,0x62,0xa2,0xff,0x49,0x66,0xa6,0xff,0x4a,0x67,0xa7,0xff,
- 0x4c,0x69,0xaa,0xff,0x4f,0x6c,0xae,0xff,0x52,0x6f,0xb1,0xff,0x53,0x70,0xb2,
- 0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,0xff,0xf3,0xf2,0xf6,0xff,0x4b,0x4c,
- 0x52,0x41,0x83,0xff,0xff,0xff,0x00,0x03,0xe9,0xe9,0xf0,0x66,0xff,0xfe,0xfe,
- 0x66,0x00,0x00,0x00,0x66,0x82,0x0e,0x29,0x64,0x66,0x28,0x54,0x5b,0x6f,0x66,
- 0x9a,0x83,0x6a,0x66,0x1d,0x35,0x6b,0x66,0x1d,0x37,0x70,0x66,0x21,0x3a,0x72,
- 0x66,0x22,0x3c,0x74,0x66,0x24,0x3e,0x77,0x66,0x26,0x3f,0x79,0x66,0x27,0x41,
- 0x7a,0x66,0x29,0x43,0x7c,0x66,0x2b,0x45,0x7f,0x66,0x2d,0x47,0x81,0x66,0x2f,
- 0x49,0x85,0x66,0x32,0x4d,0x88,0x66,0x34,0x50,0x8c,0x66,0x36,0x52,0x8e,0x66,
- 0x38,0x54,0x91,0x66,0x3a,0x56,0x93,0x66,0x3c,0x58,0x96,0x66,0x3e,0x5a,0x99,
- 0x66,0x40,0x5c,0x9b,0x66,0x41,0x5e,0x9c,0x66,0x43,0x5f,0x9e,0x66,0x44,0x60,
- 0xa0,0x66,0x45,0x61,0xa1,0x66,0x46,0x62,0xa2,0x66,0x47,0x63,0xa4,0x66,0x4a,
- 0x67,0xa8,0x66,0x4d,0x6b,0xac,0x66,0x4f,0x6d,0xae,0x66,0x50,0x6d,0xaf,0x66,
- 0x4f,0x6c,0xae,0x66,0x4e,0x6b,0xad,0x66,0x4d,0x6a,0xac,0x50,0x04,0x04,0x05,
- 0x67,0xed,0xed,0xee,0x82,0xe0,0xdf,0xe5,0xc2,0xf7,0xf6,0xf8,0x95,0xab,0xb4,
- 0xc5,0x5f,0x12,0x29,0x5d,0x91,0x85,0x12,0x29,0x5d,0x99,0x26,0x13,0x2a,0x5f,
- 0x99,0x15,0x2c,0x61,0x99,0x17,0x2e,0x63,0x99,0x19,0x31,0x67,0x99,0x1b,0x33,
- 0x69,0x99,0x1c,0x35,0x6b,0x99,0x1f,0x38,0x6f,0x99,0x18,0x2a,0x53,0xab,0x04,
- 0x07,0x0e,0xed,0x0c,0x13,0x24,0xd5,0x20,0x34,0x61,0xa9,0x2b,0x45,0x81,0x99,
- 0x2e,0x49,0x83,0x99,0x2f,0x49,0x84,0x99,0x30,0x49,0x84,0x99,0x34,0x50,0x8c,
- 0x99,0x36,0x52,0x8d,0x99,0x30,0x48,0x7d,0xa1,0x19,0x26,0x40,0xc5,0x27,0x29,
- 0x2c,0xf6,0xe8,0xe8,0xe8,0xff,0xff,0xff,0xff,0xff,0x9b,0xa8,0xc4,0xc5,0x41,
- 0x5c,0x9b,0x99,0x45,0x60,0xa0,0x99,0x3d,0x5c,0xa1,0x99,0x53,0x6e,0xab,0x99,
- 0xa0,0xad,0xca,0x9a,0xf5,0xf3,0xf0,0x9a,0xf9,0xf8,0xf8,0x9d,0xfc,0xfb,0xfb,
- 0x99,0xf3,0xf3,0xf4,0x99,0xe0,0xdf,0xe3,0x95,0xda,0xd9,0xde,0x4a,0xb7,0xb7,
- 0xb7,0xff,0xe6,0xe5,0xe8,0xff,0xf8,0xf8,0xf8,0xff,0x00,0x00,0x00,0xff,0x82,
- 0x14,0x2c,0x60,0xff,0x1f,0x16,0x2e,0x64,0xff,0x18,0x30,0x68,0xff,0x1d,0x35,
- 0x6d,0xff,0x20,0x39,0x71,0xff,0x22,0x3b,0x75,0xff,0x24,0x3e,0x77,0xff,0x26,
- 0x40,0x7a,0xff,0x28,0x42,0x7c,0xff,0x2a,0x44,0x80,0xff,0x2d,0x48,0x83,0xff,
- 0x2f,0x4a,0x85,0xff,0x2e,0x48,0x83,0xff,0x31,0x4c,0x88,0xff,0x33,0x4d,0x89,
- 0xff,0x35,0x4f,0x8b,0xff,0x37,0x51,0x8e,0xff,0x39,0x54,0x91,0xff,0x3b,0x56,
- 0x94,0xff,0x3f,0x5b,0x9a,0xff,0x43,0x60,0x9f,0xff,0x45,0x62,0xa2,0xff,0x49,
- 0x65,0xa5,0xff,0x4b,0x68,0xa8,0xff,0x4d,0x6a,0xab,0xff,0x4f,0x6c,0xad,0xff,
- 0x51,0x6d,0xb0,0xff,0x50,0x6d,0xaf,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xff,
- 0xff,0xf2,0xf2,0xf5,0xff,0x4f,0x4f,0x54,0x43,0x83,0xff,0xff,0xff,0x00,0x03,
- 0xe8,0xe8,0xef,0x66,0xfe,0xfe,0xfe,0x66,0x00,0x00,0x00,0x66,0x82,0x17,0x31,
- 0x67,0x66,0x0c,0x2c,0x41,0x6f,0x66,0x3a,0x46,0x69,0x66,0x27,0x3d,0x70,0x66,
- 0x1e,0x37,0x70,0x66,0x21,0x3a,0x73,0x66,0x23,0x3c,0x75,0x66,0x25,0x3e,0x78,
- 0x66,0x27,0x40,0x7a,0x66,0x28,0x42,0x7c,0x66,0x2a,0x44,0x7f,0x66,0x2c,0x46,
- 0x81,0x66,0x2d,0x48,0x82,0x66,0x82,0x2e,0x48,0x83,0x66,0x19,0x32,0x4d,0x89,
- 0x66,0x35,0x51,0x8d,0x66,0x37,0x53,0x8f,0x66,0x39,0x55,0x92,0x66,0x3b,0x57,
- 0x94,0x66,0x3c,0x58,0x96,0x66,0x3d,0x58,0x96,0x66,0x3e,0x59,0x98,0x66,0x3f,
- 0x5a,0x99,0x66,0x40,0x5b,0x9a,0x66,0x42,0x5d,0x9d,0x66,0x45,0x60,0xa0,0x66,
- 0x46,0x62,0xa2,0x66,0x46,0x63,0xa4,0x66,0x48,0x65,0xa6,0x66,0x4b,0x67,0xa9,
- 0x66,0x4d,0x6a,0xab,0x66,0x4e,0x6b,0xad,0x66,0x4f,0x6c,0xae,0x66,0x50,0x6d,
- 0xaf,0x50,0x15,0x15,0x16,0x6c,0xe8,0xe9,0xeb,0xaf,0xec,0xeb,0xed,0xc1,0xdd,
- 0xe0,0xe7,0x6f,0x19,0x30,0x62,0x84,0x86,0x12,0x29,0x5d,0x99,0x26,0x13,0x2a,
- 0x5f,0x99,0x15,0x2d,0x61,0x99,0x17,0x2f,0x64,0x99,0x58,0x69,0x90,0xab,0x22,
- 0x39,0x6e,0x9b,0x1c,0x35,0x6c,0x99,0x1f,0x38,0x6f,0x99,0x20,0x39,0x71,0x99,
- 0x20,0x38,0x6d,0x9d,0x26,0x3f,0x78,0x99,0x29,0x43,0x7e,0x99,0x2c,0x46,0x81,
- 0x99,0x2e,0x49,0x84,0x99,0x2f,0x4b,0x86,0x99,0x2f,0x49,0x85,0x99,0x33,0x50,
- 0x8b,0x99,0x36,0x52,0x8e,0x99,0x39,0x55,0x92,0x99,0x39,0x57,0x94,0x99,0x2e,
- 0x43,0x73,0xa9,0x6a,0x6c,0x70,0xf3,0xff,0xff,0xff,0xff,0xe6,0xe6,0xe8,0xfb,
- 0x56,0x6d,0xa5,0xa2,0x44,0x5e,0x9e,0x99,0x47,0x63,0xa2,0x99,0x42,0x61,0xa5,
- 0x99,0x4e,0x6a,0xab,0x99,0x85,0x97,0xbf,0x98,0xe5,0xe5,0xe7,0xa3,0xf8,0xf7,
- 0xf6,0x9a,0xfa,0xfb,0xfb,0x99,0xf6,0xf7,0xf7,0x99,0xe4,0xe3,0xe6,0x97,0xc4,
- 0xc4,0xc6,0xff,0xe6,0xe5,0xe6,0xff,0xf8,0xf7,0xf8,0xff,0x00,0x00,0x00,0xff,
- 0x82,0x14,0x2b,0x5f,0xff,0x1f,0x16,0x2d,0x62,0xff,0x18,0x30,0x65,0xff,0x1a,
- 0x32,0x68,0xff,0x1d,0x35,0x6c,0xff,0x1f,0x38,0x70,0xff,0x22,0x3c,0x75,0xff,
- 0x25,0x3f,0x78,0xff,0x28,0x41,0x7c,0xff,0x2a,0x44,0x7f,0xff,0x2b,0x46,0x81,
- 0xff,0x2c,0x47,0x81,0xff,0x2d,0x46,0x82,0xff,0x2f,0x49,0x85,0xff,0x32,0x4c,
- 0x88,0xff,0x34,0x4e,0x8a,0xff,0x36,0x50,0x8d,0xff,0x3a,0x54,0x91,0xff,0x3d,
- 0x59,0x97,0xff,0x40,0x5d,0x9b,0xff,0x42,0x5f,0x9e,0xff,0x45,0x62,0xa1,0xff,
- 0x47,0x64,0xa4,0xff,0x49,0x65,0xa5,0xff,0x49,0x66,0xa6,0xff,0x49,0x66,0xa7,
- 0xff,0x4b,0x68,0xaa,0xff,0x4d,0x6a,0xac,0xff,0x11,0x11,0x11,0xff,0xff,0xff,
- 0xff,0xff,0xf1,0xf1,0xf4,0xff,0x50,0x50,0x56,0x44,0x83,0xff,0xff,0xff,0x00,
- 0x03,0xe8,0xe8,0xee,0x66,0xfe,0xfe,0xfe,0x66,0x00,0x00,0x00,0x66,0x82,0x16,
- 0x2d,0x62,0x66,0x0c,0x16,0x2f,0x65,0x66,0x12,0x2d,0x67,0x66,0x1d,0x36,0x6d,
- 0x66,0x1e,0x36,0x6f,0x66,0x20,0x39,0x71,0x66,0x22,0x3b,0x74,0x66,0x24,0x3d,
- 0x76,0x66,0x25,0x3f,0x78,0x66,0x27,0x41,0x7b,0x66,0x29,0x43,0x7d,0x66,0x2b,
- 0x45,0x7f,0x66,0x2d,0x47,0x82,0x66,0x82,0x2f,0x4a,0x85,0x66,0x1a,0x2f,0x49,
- 0x84,0x66,0x33,0x4e,0x8a,0x66,0x35,0x50,0x8c,0x66,0x36,0x51,0x8e,0x66,0x37,
- 0x51,0x8e,0x66,0x38,0x52,0x90,0x66,0x3a,0x54,0x91,0x66,0x3b,0x55,0x94,0x66,
- 0x3d,0x58,0x97,0x66,0x40,0x5b,0x9a,0x66,0x43,0x5f,0x9f,0x66,0x46,0x63,0xa3,
- 0x66,0x49,0x65,0xa5,0x66,0x4a,0x66,0xa7,0x66,0x4b,0x68,0xa9,0x66,0x4e,0x6b,
- 0xac,0x66,0x50,0x6d,0xaf,0x66,0x52,0x6f,0xb1,0x66,0x53,0x70,0xb1,0x67,0x6c,
- 0x84,0xbb,0x5c,0x92,0x92,0x95,0xa9,0xef,0xef,0xf1,0xc2,0xe6,0xe6,0xe9,0xa9,
- 0x1b,0x32,0x66,0x72,0x12,0x2b,0x5f,0x98,0x12,0x29,0x5d,0x99,0x82,0x12,0x29,
- 0x5e,0x99,0x01,0x12,0x29,0x5c,0x99,0x82,0x12,0x29,0x5d,0x99,0x26,0x13,0x2b,
- 0x5f,0x99,0x15,0x2c,0x61,0x99,0x4d,0x5e,0x87,0xa8,0xf2,0xf3,0xf6,0xf6,0x80,
- 0x8d,0xab,0xba,0x1d,0x36,0x6d,0x99,0x1e,0x38,0x6f,0x99,0x21,0x3a,0x71,0x99,
- 0x24,0x3d,0x75,0x99,0x25,0x3e,0x77,0x99,0x27,0x41,0x7a,0x99,0x2a,0x44,0x7e,
- 0x99,0x2c,0x47,0x81,0x99,0x2e,0x48,0x83,0x99,0x2f,0x48,0x84,0x99,0x34,0x4f,
- 0x8b,0x99,0x36,0x52,0x8f,0x99,0x39,0x55,0x91,0x99,0x3a,0x56,0x94,0x99,0x3c,
- 0x58,0x96,0x99,0x32,0x47,0x79,0xa7,0xc8,0xc8,0xc9,0xfd,0xff,0xff,0xff,0xff,
- 0x80,0x89,0x9a,0xd7,0x45,0x60,0x9f,0x99,0x45,0x61,0xa1,0x99,0x49,0x66,0xa6,
- 0x99,0x49,0x67,0xaa,0x99,0x4a,0x68,0xad,0x99,0x6e,0x85,0xb8,0x99,0xcc,0xd1,
- 0xdb,0x9c,0xf7,0xf7,0xf5,0x9a,0xf9,0xf9,0xf9,0x99,0xf8,0xf9,0xf8,0x99,0xd4,
- 0xd4,0xd5,0xff,0xe0,0xdd,0xe1,0xff,0xf5,0xf4,0xf6,0xff,0x00,0x00,0x00,0xff,
- 0x82,0x14,0x2c,0x62,0xff,0x1f,0x15,0x2d,0x62,0xff,0x17,0x2e,0x64,0xff,0x19,
- 0x31,0x66,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x36,0x6d,0xff,0x1f,0x39,0x70,0xff,
- 0x21,0x3b,0x73,0xff,0x25,0x3e,0x77,0xff,0x27,0x41,0x7a,0xff,0x28,0x42,0x7b,
- 0xff,0x2a,0x44,0x7e,0xff,0x2c,0x46,0x80,0xff,0x2e,0x48,0x84,0xff,0x31,0x4b,
- 0x86,0xff,0x34,0x4d,0x8a,0xff,0x37,0x53,0x8f,0xff,0x3b,0x57,0x94,0xff,0x3d,
- 0x59,0x97,0xff,0x3f,0x5b,0x9a,0xff,0x41,0x5e,0x9d,0xff,0x42,0x5f,0x9e,0xff,
- 0x44,0x5f,0x9e,0xff,0x44,0x60,0xa0,0xff,0x46,0x62,0xa3,0xff,0x49,0x66,0xa8,
- 0xff,0x4d,0x6a,0xac,0xff,0x51,0x6e,0xb0,0xff,0x11,0x11,0x11,0xff,0xff,0xff,
- 0xff,0xff,0xf1,0xf1,0xf4,0xff,0x51,0x51,0x57,0x44,0x83,0xff,0xff,0xff,0x00,
- 0x03,0xe8,0xe8,0xee,0x66,0xfe,0xfe,0xfe,0x66,0x00,0x00,0x00,0x66,0x82,0x0e,
- 0x26,0x5c,0x66,0x26,0x31,0x44,0x6f,0x66,0x61,0x6f,0x8b,0x66,0x14,0x2d,0x63,
- 0x66,0x1b,0x33,0x6a,0x66,0x1d,0x36,0x6d,0x66,0x20,0x38,0x70,0x66,0x22,0x3b,
- 0x74,0x66,0x24,0x3d,0x77,0x66,0x26,0x3f,0x79,0x66,0x28,0x41,0x7b,0x66,0x2a,
- 0x43,0x7e,0x66,0x2b,0x45,0x80,0x66,0x2d,0x48,0x82,0x66,0x2e,0x48,0x83,0x66,
- 0x2e,0x47,0x82,0x66,0x30,0x49,0x85,0x66,0x31,0x4b,0x87,0x66,0x33,0x4d,0x89,
- 0x66,0x35,0x4e,0x8c,0x66,0x37,0x51,0x8e,0x66,0x39,0x53,0x91,0x66,0x3c,0x56,
- 0x95,0x66,0x3f,0x5b,0x99,0x66,0x41,0x5e,0x9d,0x66,0x43,0x61,0xa0,0x66,0x45,
- 0x62,0xa2,0x66,0x48,0x64,0xa4,0x66,0x4a,0x66,0xa6,0x66,0x4a,0x67,0xa8,0x66,
- 0x4b,0x68,0xa9,0x66,0x4c,0x69,0xaa,0x66,0x4d,0x6a,0xac,0x66,0x51,0x6d,0xae,
- 0x67,0xa3,0xb0,0xce,0x86,0xb9,0xb8,0xbc,0xc2,0xf8,0xf7,0xf8,0xbc,0xa4,0xaa,
- 0xba,0xa6,0x13,0x2c,0x62,0x98,0x82,0x13,0x2c,0x62,0x99,0x2b,0x13,0x2b,0x62,
- 0x99,0x12,0x2b,0x60,0x99,0x13,0x2a,0x60,0x99,0x12,0x2b,0x5f,0x99,0x12,0x29,
- 0x5e,0x99,0x13,0x2a,0x5f,0x99,0x16,0x2d,0x63,0x99,0xb9,0xc0,0xd0,0xd4,0xff,
- 0xff,0xff,0xff,0xe0,0xe2,0xe7,0xef,0x26,0x3d,0x6f,0x9e,0x1f,0x38,0x6f,0x99,
- 0x21,0x3b,0x73,0x99,0x23,0x3c,0x74,0x99,0x25,0x3f,0x77,0x99,0x27,0x41,0x7a,
- 0x99,0x29,0x43,0x7c,0x99,0x2b,0x45,0x7e,0x99,0x2e,0x46,0x82,0x99,0x30,0x49,
- 0x85,0x99,0x34,0x4e,0x8b,0x99,0x37,0x52,0x8e,0x99,0x39,0x55,0x92,0x99,0x3a,
- 0x57,0x94,0x99,0x3c,0x58,0x96,0x99,0x3e,0x5b,0x99,0x99,0x8c,0x94,0xa4,0xda,
- 0xff,0xff,0xff,0xff,0x9c,0x9d,0x9f,0xfa,0x3f,0x58,0x90,0xa0,0x46,0x63,0xa3,
- 0x99,0x47,0x62,0xa3,0x99,0x4a,0x67,0xa7,0x99,0x4f,0x6d,0xae,0x99,0x47,0x67,
- 0xad,0x99,0x5e,0x78,0xb3,0x99,0xad,0xb8,0xcf,0x9a,0xeb,0xe9,0xe6,0x9e,0xf7,
- 0xf9,0xf7,0x9a,0xe0,0xdf,0xdf,0xff,0xe9,0xe8,0xea,0xff,0xe6,0xe5,0xe8,0xff,
- 0x27,0x27,0x27,0xff,0x82,0x13,0x2c,0x63,0xff,0x1f,0x15,0x2f,0x65,0xff,0x17,
- 0x30,0x66,0xff,0x19,0x31,0x67,0xff,0x1b,0x32,0x69,0xff,0x1c,0x35,0x6c,0xff,
- 0x1f,0x38,0x6e,0xff,0x21,0x3a,0x71,0xff,0x23,0x3c,0x74,0xff,0x25,0x3e,0x77,
- 0xff,0x27,0x41,0x7a,0xff,0x29,0x44,0x7d,0xff,0x2c,0x45,0x7f,0xff,0x2e,0x47,
- 0x83,0xff,0x30,0x4a,0x86,0xff,0x35,0x51,0x8d,0xff,0x38,0x54,0x90,0xff,0x3a,
- 0x56,0x93,0xff,0x3c,0x59,0x96,0xff,0x3e,0x5a,0x98,0xff,0x3e,0x59,0x98,0xff,
- 0x3f,0x5a,0x99,0xff,0x41,0x5c,0x9c,0xff,0x45,0x61,0xa1,0xff,0x49,0x66,0xa6,
- 0xff,0x4c,0x69,0xaa,0xff,0x4f,0x6c,0xad,0xff,0x51,0x6e,0xb0,0xff,0x11,0x11,
- 0x11,0xff,0xff,0xff,0xff,0xff,0xf1,0xf1,0xf4,0xff,0x50,0x50,0x55,0x44,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xe7,0xe8,0xed,0x66,0xfe,0xfe,0xfd,0x66,0x00,0x00,
- 0x00,0x66,0x82,0x0f,0x28,0x5f,0x66,0x25,0x2f,0x42,0x6f,0x66,0x59,0x65,0x81,
- 0x66,0x14,0x2b,0x62,0x66,0x19,0x30,0x66,0x66,0x1b,0x33,0x68,0x66,0x1c,0x35,
- 0x6b,0x66,0x1e,0x37,0x6e,0x66,0x20,0x39,0x70,0x66,0x22,0x3c,0x74,0x66,0x25,
- 0x3e,0x77,0x66,0x27,0x40,0x7a,0x66,0x28,0x42,0x7b,0x66,0x29,0x43,0x7d,0x66,
- 0x2b,0x45,0x7e,0x66,0x2d,0x46,0x80,0x66,0x2e,0x48,0x83,0x66,0x30,0x4a,0x86,
- 0x66,0x32,0x4c,0x88,0x66,0x34,0x4f,0x8c,0x66,0x37,0x53,0x90,0x66,0x3a,0x56,
- 0x94,0x66,0x3c,0x59,0x96,0x66,0x3f,0x5b,0x99,0x66,0x40,0x5d,0x9b,0x66,0x41,
- 0x5e,0x9d,0x66,0x42,0x5f,0x9e,0x66,0x43,0x5f,0x9f,0x66,0x45,0x60,0xa0,0x66,
- 0x45,0x62,0xa2,0x66,0x48,0x64,0xa5,0x66,0x4a,0x67,0xa8,0x66,0x51,0x6d,0xae,
- 0x68,0x93,0xa2,0xc7,0x8e,0xcb,0xd0,0xde,0xb9,0xb0,0xb0,0xb1,0xb2,0xc6,0xca,
- 0xd6,0x9e,0x79,0x84,0x9e,0xc0,0x88,0x13,0x2c,0x62,0x99,0x03,0x14,0x2d,0x64,
- 0x99,0x56,0x68,0x90,0xac,0xf9,0xf9,0xfb,0xfa,0x82,0xff,0xff,0xff,0xff,0x33,
- 0x8d,0x93,0xa2,0xd9,0x20,0x39,0x71,0x99,0x21,0x3b,0x72,0x99,0x23,0x3d,0x74,
- 0x99,0x25,0x3f,0x78,0x99,0x27,0x41,0x7a,0x99,0x29,0x43,0x7c,0x99,0x2b,0x46,
- 0x80,0x99,0x2d,0x46,0x82,0x99,0x2f,0x49,0x84,0x99,0x32,0x4b,0x87,0x99,0x34,
- 0x4f,0x8b,0x99,0x37,0x52,0x8f,0x99,0x3a,0x56,0x93,0x99,0xa2,0xaf,0xcd,0xc1,
- 0xca,0xd2,0xe3,0xd8,0xda,0xe0,0xec,0xe2,0xff,0xff,0xff,0xff,0xe4,0xe4,0xe4,
- 0xff,0xb9,0xbe,0xc8,0xe6,0xcb,0xd3,0xe5,0xd5,0x49,0x65,0xa6,0x99,0x49,0x66,
- 0xa5,0x99,0x4c,0x69,0xab,0x99,0x52,0x6f,0xb1,0x99,0x47,0x67,0xae,0x99,0x55,
- 0x71,0xb0,0x99,0x88,0x97,0xb9,0x99,0xdc,0xdc,0xdb,0xa6,0xdd,0xdd,0xdd,0xff,
- 0xf1,0xf1,0xf1,0xff,0xf3,0xf2,0xf3,0xff,0x84,0x83,0x85,0xff,0x4a,0x5b,0x83,
- 0xff,0x13,0x2c,0x62,0xff,0x14,0x2d,0x64,0xff,0x17,0x30,0x67,0xff,0x19,0x33,
- 0x6a,0xff,0x1b,0x34,0x6c,0xff,0x1c,0x35,0x6c,0xff,0x1d,0x36,0x6d,0xff,0x20,
- 0x39,0x70,0xff,0x22,0x3b,0x73,0xff,0x24,0x3e,0x76,0xff,0x26,0x40,0x79,0xff,
- 0x28,0x43,0x7b,0xff,0x2b,0x45,0x7e,0xff,0x2d,0x46,0x81,0xff,0x2f,0x49,0x84,
- 0xff,0x33,0x4e,0x8a,0xff,0x37,0x53,0x8f,0xff,0x82,0x39,0x55,0x92,0xff,0x0d,
- 0x3a,0x55,0x93,0xff,0x3c,0x56,0x95,0xff,0x3e,0x59,0x98,0xff,0x42,0x5e,0x9e,
- 0xff,0x47,0x63,0xa3,0xff,0x4a,0x66,0xa6,0xff,0x4c,0x68,0xa9,0xff,0x4e,0x6b,
- 0xac,0xff,0x4e,0x6b,0xad,0xff,0x11,0x11,0x11,0xff,0xff,0xff,0xfe,0xff,0xf1,
- 0xf1,0xf4,0xff,0x4f,0x4f,0x54,0x44,0x83,0xff,0xff,0xff,0x00,0x03,0xe8,0xe7,
- 0xed,0x66,0xfd,0xfe,0xfe,0x66,0x00,0x00,0x00,0x66,0x82,0x13,0x2c,0x62,0x66,
- 0x29,0x16,0x2e,0x63,0x66,0x1d,0x34,0x65,0x66,0x18,0x30,0x67,0x66,0x19,0x31,
- 0x68,0x66,0x1a,0x33,0x6a,0x66,0x1b,0x35,0x6b,0x66,0x1d,0x36,0x6c,0x66,0x1f,
- 0x38,0x6e,0x66,0x20,0x3a,0x71,0x66,0x22,0x3b,0x73,0x66,0x24,0x3e,0x75,0x66,
- 0x26,0x3f,0x78,0x66,0x28,0x42,0x7b,0x66,0x29,0x44,0x7d,0x66,0x2b,0x45,0x7f,
- 0x66,0x2d,0x46,0x81,0x66,0x2f,0x48,0x84,0x66,0x33,0x4d,0x89,0x66,0x36,0x52,
- 0x8f,0x66,0x38,0x54,0x91,0x66,0x3a,0x56,0x93,0x66,0x3b,0x58,0x95,0x66,0x3c,
- 0x58,0x96,0x66,0x3d,0x58,0x96,0x66,0x3e,0x58,0x97,0x66,0x40,0x5a,0x99,0x66,
- 0x41,0x5c,0x9b,0x66,0x44,0x61,0xa0,0x66,0x48,0x64,0xa4,0x66,0x4b,0x67,0xa8,
- 0x66,0x4d,0x6a,0xab,0x66,0x75,0x8a,0xbb,0x79,0xbf,0xc6,0xda,0xb8,0xd9,0xdd,
- 0xe9,0xb9,0x98,0x99,0x9b,0xa9,0x94,0x9e,0xb4,0xbe,0x6e,0x79,0x96,0xc2,0x15,
- 0x2c,0x61,0x99,0x13,0x2c,0x61,0x99,0x13,0x2c,0x62,0x99,0x13,0x2c,0x61,0x99,
- 0x84,0x13,0x2c,0x62,0x99,0x02,0x17,0x30,0x66,0x99,0xd4,0xd8,0xe3,0xe3,0x83,
- 0xff,0xff,0xff,0xff,0x0f,0xe9,0xea,0xea,0xfd,0x40,0x54,0x82,0xa5,0x23,0x3c,
- 0x75,0x99,0x24,0x3f,0x77,0x99,0x26,0x3f,0x78,0x99,0x27,0x41,0x7a,0x99,0x29,
- 0x43,0x7e,0x99,0x2c,0x46,0x7f,0x99,0x2e,0x47,0x82,0x99,0x30,0x49,0x85,0x99,
- 0x33,0x4b,0x88,0x99,0x33,0x4d,0x8a,0x99,0x36,0x50,0x8d,0x99,0x38,0x52,0x90,
- 0x99,0x89,0x98,0xbe,0xb6,0x85,0xff,0xff,0xff,0xff,0x2e,0xec,0xef,0xf6,0xee,
- 0x4b,0x69,0xa9,0x99,0x4a,0x67,0xa8,0x99,0x4a,0x67,0xaa,0x99,0x4f,0x6c,0xae,
- 0x99,0x53,0x70,0xb1,0x99,0x4c,0x6a,0xaf,0x99,0x50,0x6d,0xb0,0x99,0x75,0x89,
- 0xb9,0x99,0xbf,0xbf,0xbf,0xff,0xee,0xee,0xee,0xff,0xf8,0xf8,0xf8,0xff,0x92,
- 0x92,0x92,0xff,0x8e,0x97,0xaf,0xff,0x65,0x73,0x94,0xff,0x13,0x2d,0x63,0xff,
- 0x16,0x2f,0x66,0xff,0x17,0x31,0x67,0xff,0x1a,0x31,0x68,0xff,0x1b,0x33,0x69,
- 0xff,0x1d,0x36,0x6c,0xff,0x1f,0x38,0x6f,0xff,0x21,0x3b,0x72,0xff,0x23,0x3d,
- 0x75,0xff,0x26,0x3f,0x78,0xff,0x27,0x41,0x7a,0xff,0x2a,0x44,0x7d,0xff,0x2c,
- 0x46,0x80,0xff,0x2e,0x48,0x83,0xff,0x31,0x4b,0x86,0xff,0x35,0x51,0x8d,0xff,
- 0x36,0x51,0x8e,0xff,0x37,0x51,0x8e,0xff,0x39,0x54,0x91,0xff,0x3b,0x56,0x94,
- 0xff,0x3f,0x5b,0x99,0xff,0x43,0x60,0x9f,0xff,0x45,0x62,0xa2,0xff,0x48,0x65,
- 0xa5,0xff,0x4b,0x67,0xa8,0xff,0x4d,0x6a,0xab,0xff,0x4c,0x68,0xaa,0xff,0x11,
- 0x11,0x11,0xff,0xfe,0xfd,0xfe,0xff,0xf0,0xf0,0xf3,0xff,0x50,0x50,0x55,0x44,
- 0x83,0xff,0xff,0xff,0x00,0x03,0xe7,0xe6,0xed,0x66,0xfe,0xfe,0xfe,0x66,0x00,
- 0x00,0x00,0x66,0x82,0x13,0x2c,0x62,0x66,0x2e,0x12,0x2c,0x62,0x66,0x13,0x2c,
- 0x63,0x66,0x16,0x30,0x66,0x66,0x18,0x32,0x69,0x66,0x1a,0x32,0x69,0x66,0x1b,
- 0x33,0x6a,0x66,0x1c,0x34,0x6b,0x66,0x1d,0x36,0x6d,0x66,0x1f,0x38,0x6f,0x66,
- 0x21,0x3a,0x71,0x66,0x23,0x3c,0x74,0x66,0x25,0x3e,0x77,0x66,0x26,0x40,0x79,
- 0x66,0x28,0x42,0x7b,0x66,0x2a,0x44,0x7d,0x66,0x2c,0x45,0x80,0x66,0x2e,0x47,
- 0x82,0x66,0x30,0x4a,0x85,0x66,0x33,0x4e,0x8a,0x66,0x36,0x52,0x8f,0x66,0x37,
- 0x52,0x8f,0x66,0x38,0x52,0x8f,0x66,0x39,0x53,0x91,0x66,0x3b,0x55,0x93,0x66,
- 0x3c,0x57,0x95,0x66,0x3f,0x5b,0x99,0x66,0x43,0x5f,0x9e,0x66,0x45,0x63,0xa2,
- 0x66,0x48,0x64,0xa4,0x66,0x4a,0x66,0xa7,0x66,0x4b,0x68,0xa8,0x66,0xbe,0xc4,
- 0xd7,0xbd,0xca,0xd0,0xe0,0xc2,0xe0,0xe4,0xef,0xb9,0xd0,0xcf,0xce,0xd2,0xd8,
- 0xdb,0xdd,0xc9,0x91,0x97,0xab,0xc2,0x00,0x13,0x4d,0x99,0x13,0x2a,0x5e,0x99,
- 0x12,0x29,0x5e,0x99,0x13,0x2a,0x5d,0x99,0x13,0x2b,0x5f,0x99,0x13,0x2a,0x5f,
- 0x99,0x13,0x2b,0x5f,0x99,0x13,0x2c,0x61,0x99,0x8f,0x9b,0xb5,0xc1,0x85,0xff,
- 0xff,0xff,0xff,0x0f,0xaa,0xae,0xb7,0xe8,0x28,0x40,0x7a,0x9a,0x27,0x40,0x7a,
- 0x99,0x26,0x40,0x79,0x99,0x28,0x42,0x7b,0x99,0x2a,0x44,0x7e,0x99,0x2c,0x45,
- 0x80,0x99,0x2e,0x47,0x83,0x99,0x31,0x4a,0x86,0x99,0x32,0x4d,0x89,0x99,0x35,
- 0x4f,0x8b,0x99,0x36,0x50,0x8d,0x99,0x38,0x52,0x90,0x99,0x3b,0x55,0x93,0x99,
- 0xbf,0xc3,0xcb,0xea,0x83,0xff,0xff,0xff,0xff,0x2f,0xfa,0xfa,0xfa,0xff,0x59,
- 0x5f,0x6b,0xe1,0x16,0x1f,0x32,0xd5,0x4e,0x6a,0xac,0x99,0x4d,0x6a,0xab,0x99,
- 0x4d,0x6a,0xac,0x99,0x4f,0x6c,0xae,0x99,0x52,0x6f,0xb1,0x99,0x50,0x6d,0xb1,
- 0x99,0x4a,0x69,0xaf,0x99,0xb7,0xb7,0xb7,0xff,0xe5,0xe4,0xe5,0xff,0xf7,0xf6,
- 0xf6,0xff,0x97,0x97,0x97,0xff,0x98,0xa2,0xb8,0xff,0x83,0x8d,0xa6,0xff,0x13,
- 0x2b,0x61,0xff,0x14,0x2c,0x60,0xff,0x16,0x2d,0x62,0xff,0x18,0x30,0x65,0xff,
- 0x1a,0x32,0x68,0xff,0x1c,0x35,0x6b,0xff,0x1e,0x37,0x6e,0xff,0x20,0x39,0x70,
- 0xff,0x22,0x3c,0x74,0xff,0x25,0x3e,0x76,0xff,0x27,0x40,0x79,0xff,0x29,0x43,
- 0x7c,0xff,0x2b,0x45,0x7f,0xff,0x2d,0x47,0x82,0xff,0x2f,0x49,0x85,0xff,0x32,
- 0x4c,0x87,0xff,0x34,0x4e,0x8a,0xff,0x36,0x50,0x8d,0xff,0x38,0x53,0x90,0xff,
- 0x3c,0x57,0x95,0xff,0x40,0x5d,0x9b,0xff,0x42,0x5f,0x9e,0xff,0x44,0x61,0xa1,
- 0xff,0x47,0x64,0xa3,0xff,0x4a,0x66,0xa7,0xff,0x4b,0x67,0xa8,0xff,0x49,0x66,
- 0xa7,0xff,0x11,0x11,0x11,0xff,0xfe,0xfe,0xfe,0xff,0xf0,0xf0,0xf3,0xff,0x4f,
- 0x4f,0x55,0x44,0x83,0xff,0xff,0xff,0x00,0x03,0xe6,0xe7,0xec,0x66,0xfd,0xfd,
- 0xfd,0x66,0x00,0x00,0x00,0x66,0x82,0x13,0x2c,0x62,0x66,0x29,0x13,0x2c,0x61,
- 0x66,0x13,0x2b,0x60,0x66,0x14,0x2c,0x60,0x66,0x16,0x2d,0x62,0x66,0x18,0x2f,
- 0x64,0x66,0x19,0x31,0x67,0x66,0x1b,0x33,0x69,0x66,0x1c,0x35,0x6b,0x66,0x1e,
- 0x37,0x6e,0x66,0x20,0x39,0x70,0x66,0x21,0x3b,0x73,0x66,0x23,0x3d,0x75,0x66,
- 0x25,0x3f,0x77,0x66,0x27,0x41,0x79,0x66,0x29,0x43,0x7c,0x66,0x2b,0x45,0x7e,
- 0x66,0x2c,0x46,0x81,0x66,0x2e,0x48,0x83,0x66,0x30,0x4a,0x86,0x66,0x33,0x4c,
- 0x89,0x66,0x34,0x4e,0x8a,0x66,0x35,0x50,0x8c,0x66,0x37,0x51,0x8f,0x66,0x3a,
- 0x54,0x92,0x66,0x3d,0x59,0x97,0x66,0x40,0x5d,0x9c,0x66,0x42,0x5f,0x9e,0x66,
- 0x43,0x61,0xa0,0x66,0x46,0x62,0xa2,0x66,0x48,0x65,0xa5,0x66,0x4a,0x67,0xa7,
- 0x66,0x93,0xa1,0xc5,0x8f,0xc0,0xc6,0xd6,0xc1,0xd5,0xda,0xe6,0xb9,0xc7,0xc7,
- 0xc7,0xc2,0xf7,0xf6,0xf5,0xd2,0xe0,0xdf,0xe1,0xcb,0x69,0x77,0x96,0x99,0x00,
- 0x19,0x51,0x99,0x0f,0x27,0x5b,0x99,0x13,0x29,0x5d,0x99,0x84,0x12,0x29,0x5d,
- 0x99,0x16,0xb7,0xbe,0xce,0xd3,0xd4,0xd9,0xe2,0xe3,0xe1,0xe1,0xe2,0xfb,0xff,
- 0xff,0xff,0xff,0xdd,0xdd,0xdd,0xff,0xb8,0xb8,0xb8,0xff,0xb3,0xb3,0xb4,0xfc,
- 0x3e,0x50,0x7a,0xaa,0x27,0x40,0x7a,0x99,0x28,0x42,0x7c,0x99,0x29,0x42,0x7b,
- 0x99,0x2a,0x44,0x7d,0x99,0x2c,0x45,0x80,0x99,0x2e,0x48,0x84,0x99,0x30,0x4a,
- 0x86,0x99,0x35,0x51,0x8d,0x99,0x37,0x53,0x8e,0x99,0x38,0x54,0x91,0x99,0x3a,
- 0x55,0x93,0x99,0x3b,0x55,0x93,0x99,0x4f,0x5d,0x7b,0xc1,0xef,0xef,0xef,0xff,
- 0x82,0xff,0xff,0xff,0xff,0x2f,0xa5,0xa5,0xa5,0xff,0x00,0x00,0x00,0xff,0x08,
- 0x0b,0x12,0xee,0x50,0x6c,0xae,0x99,0x51,0x6e,0xb0,0x99,0x4e,0x6b,0xad,0x99,
- 0x4c,0x69,0xab,0x99,0x4f,0x6c,0xae,0x99,0x53,0x6f,0xb1,0x99,0x52,0x6f,0xb1,
- 0x99,0xb7,0xb7,0xb7,0xff,0xe4,0xe2,0xe4,0xff,0xf7,0xf6,0xf6,0xff,0x90,0x90,
- 0x90,0xff,0x8b,0x94,0xab,0xff,0x40,0x52,0x7a,0xff,0x12,0x29,0x5d,0xff,0x13,
- 0x2a,0x5e,0xff,0x15,0x2c,0x61,0xff,0x18,0x2f,0x64,0xff,0x1a,0x31,0x67,0xff,
- 0x1b,0x34,0x6a,0xff,0x1d,0x36,0x6d,0xff,0x1f,0x38,0x6f,0xff,0x21,0x3b,0x73,
- 0xff,0x25,0x3f,0x78,0xff,0x27,0x41,0x79,0xff,0x28,0x42,0x7a,0xff,0x2a,0x44,
- 0x7e,0xff,0x2d,0x46,0x81,0xff,0x2f,0x48,0x84,0xff,0x31,0x4a,0x86,0xff,0x33,
- 0x4d,0x8a,0xff,0x35,0x4f,0x8c,0xff,0x38,0x52,0x90,0xff,0x3d,0x59,0x97,0xff,
- 0x3f,0x5c,0x9a,0xff,0x41,0x5e,0x9d,0xff,0x44,0x61,0xa0,0xff,0x46,0x63,0xa2,
- 0xff,0x49,0x65,0xa6,0xff,0x48,0x64,0xa4,0xff,0x48,0x65,0xa6,0xff,0x11,0x11,
- 0x11,0xff,0xfe,0xfe,0xfd,0xff,0xf0,0xf0,0xf2,0xff,0x4e,0x4d,0x52,0x44,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xe6,0xe6,0xec,0x66,0xfd,0xfd,0xfd,0x66,0x00,0x00,
- 0x00,0x66,0x82,0x12,0x2a,0x5e,0x66,0x82,0x12,0x29,0x5d,0x66,0x28,0x12,0x29,
- 0x5e,0x66,0x14,0x2b,0x60,0x66,0x17,0x2e,0x63,0x66,0x18,0x30,0x66,0x66,0x1a,
- 0x32,0x68,0x66,0x1c,0x34,0x6a,0x66,0x1c,0x36,0x6c,0x66,0x1e,0x38,0x6e,0x66,
- 0x21,0x3a,0x72,0x66,0x24,0x3d,0x77,0x66,0x27,0x40,0x7a,0x66,0x27,0x41,0x7a,
- 0x66,0x28,0x42,0x7b,0x66,0x29,0x44,0x7d,0x66,0x2b,0x45,0x7f,0x66,0x2d,0x47,
- 0x82,0x66,0x2f,0x48,0x84,0x66,0x31,0x4b,0x86,0x66,0x33,0x4d,0x89,0x66,0x34,
- 0x4e,0x8b,0x66,0x37,0x51,0x8e,0x66,0x3b,0x56,0x94,0x66,0x3d,0x5a,0x98,0x66,
- 0x3f,0x5b,0x9a,0x66,0x41,0x5d,0x9c,0x66,0x42,0x5f,0x9e,0x66,0x44,0x61,0xa1,
- 0x66,0x47,0x64,0xa3,0x66,0x49,0x64,0xa5,0x66,0x46,0x63,0xa3,0x66,0x73,0x87,
- 0xb7,0x7b,0xbd,0xc3,0xd5,0xae,0xb9,0xb8,0xbb,0xc2,0xfa,0xfa,0xf9,0xc2,0xf1,
- 0xf0,0xf1,0xcb,0xef,0xef,0xf0,0xaf,0x8c,0x96,0xad,0x9a,0x14,0x2b,0x5f,0x99,
- 0x06,0x1f,0x56,0x99,0x13,0x2a,0x5e,0x99,0x82,0x12,0x29,0x5d,0x99,0x29,0x13,
- 0x2a,0x5e,0x99,0x1a,0x30,0x64,0x9a,0x0b,0x16,0x30,0xc1,0x66,0x66,0x66,0xff,
- 0xff,0xff,0xff,0xff,0xa8,0xa8,0xa8,0xff,0x00,0x00,0x00,0xff,0x01,0x01,0x01,
- 0xff,0x0e,0x15,0x25,0xd5,0x24,0x3d,0x76,0x9a,0x27,0x40,0x7a,0x99,0x28,0x42,
- 0x7b,0x99,0x2a,0x45,0x7d,0x99,0x2d,0x46,0x81,0x99,0x2e,0x48,0x83,0x99,0x30,
- 0x4a,0x85,0x99,0x35,0x51,0x8d,0x99,0x38,0x55,0x91,0x99,0x3a,0x56,0x93,0x99,
- 0x3b,0x58,0x95,0x99,0x3e,0x5b,0x99,0x99,0x3f,0x5b,0x99,0x99,0x93,0x96,0x9c,
- 0xee,0xff,0xff,0xff,0xff,0xed,0xed,0xed,0xff,0x23,0x23,0x23,0xff,0x01,0x01,
- 0x02,0xfd,0x30,0x42,0x6a,0xb3,0x50,0x6c,0xae,0x99,0x51,0x6e,0xb1,0x99,0x51,
- 0x6e,0xb0,0x99,0x4e,0x6b,0xad,0x99,0x4d,0x6a,0xac,0x99,0x4f,0x6c,0xae,0x99,
- 0x52,0x6f,0xb1,0x99,0xb7,0xb7,0xb7,0xff,0xe5,0xe5,0xe7,0xff,0xf7,0xf7,0xf7,
- 0xff,0x81,0x81,0x82,0xff,0x4e,0x5d,0x82,0xff,0x15,0x2c,0x5f,0xff,0x82,0x12,
- 0x29,0x5d,0xff,0x1d,0x14,0x2b,0x60,0xff,0x17,0x2e,0x63,0xff,0x19,0x30,0x66,
- 0xff,0x1b,0x33,0x69,0xff,0x1c,0x35,0x6b,0xff,0x1f,0x38,0x6e,0xff,0x23,0x3c,
- 0x75,0xff,0x26,0x40,0x7a,0xff,0x28,0x42,0x7c,0xff,0x28,0x42,0x7b,0xff,0x29,
- 0x44,0x7d,0xff,0x2c,0x45,0x80,0xff,0x2e,0x47,0x82,0xff,0x30,0x4a,0x85,0xff,
- 0x32,0x4c,0x88,0xff,0x34,0x4e,0x8b,0xff,0x39,0x55,0x92,0xff,0x3c,0x58,0x96,
- 0xff,0x3e,0x5b,0x99,0xff,0x40,0x5d,0x9c,0xff,0x42,0x60,0x9e,0xff,0x45,0x62,
- 0xa2,0xff,0x47,0x63,0xa3,0xff,0x46,0x62,0xa2,0xff,0x47,0x64,0xa5,0xff,0x11,
- 0x11,0x11,0xff,0xfe,0xfd,0xfd,0xff,0xef,0xee,0xf2,0xff,0x52,0x52,0x57,0x3d,
- 0x83,0xff,0xff,0xff,0x00,0x03,0xe5,0xe5,0xeb,0x66,0xfd,0xfd,0xfd,0x66,0x00,
- 0x00,0x00,0x66,0x85,0x12,0x29,0x5d,0x66,0x51,0x13,0x2a,0x5f,0x66,0x15,0x2c,
- 0x61,0x66,0x17,0x2e,0x64,0x66,0x19,0x31,0x66,0x66,0x1a,0x32,0x68,0x66,0x1c,
- 0x34,0x6b,0x66,0x1f,0x38,0x70,0x66,0x22,0x3b,0x74,0x66,0x24,0x3e,0x78,0x66,
- 0x26,0x40,0x7a,0x66,0x27,0x41,0x7b,0x66,0x27,0x41,0x7a,0x66,0x28,0x42,0x7b,
- 0x66,0x2a,0x45,0x7e,0x66,0x2c,0x46,0x80,0x66,0x2e,0x47,0x83,0x66,0x30,0x49,
- 0x85,0x66,0x32,0x4b,0x87,0x66,0x33,0x4d,0x8a,0x66,0x38,0x53,0x90,0x66,0x3a,
- 0x56,0x94,0x66,0x3c,0x58,0x96,0x66,0x3e,0x5a,0x98,0x66,0x40,0x5c,0x9a,0x66,
- 0x41,0x5e,0x9d,0x66,0x43,0x60,0x9f,0x66,0x45,0x62,0xa2,0x66,0x45,0x60,0xa0,
- 0x66,0x45,0x61,0xa1,0x66,0x47,0x63,0xa4,0x66,0x5e,0x77,0xaf,0x59,0x93,0x92,
- 0x95,0xab,0xe9,0xe8,0xeb,0xc1,0xef,0xee,0xf0,0xc2,0xfa,0xf9,0xfa,0xa1,0xf7,
- 0xf6,0xf4,0xb3,0xb6,0xbb,0xc7,0x9b,0x2d,0x42,0x6f,0x99,0x00,0x16,0x4f,0x99,
- 0x13,0x2a,0x5e,0x99,0x12,0x29,0x5d,0x99,0x13,0x2a,0x5f,0x99,0x15,0x2d,0x61,
- 0x99,0x07,0x0e,0x1f,0xd3,0x30,0x33,0x3c,0xe7,0xfc,0xfc,0xfc,0xff,0xee,0xee,
- 0xee,0xff,0x1c,0x1e,0x22,0xf2,0x06,0x0b,0x15,0xe3,0x07,0x0d,0x19,0xdf,0x20,
- 0x35,0x66,0xa2,0x27,0x40,0x79,0x99,0x28,0x42,0x7b,0x99,0x2a,0x44,0x7e,0x99,
- 0x2d,0x46,0x81,0x99,0x2f,0x48,0x83,0x99,0x31,0x4a,0x86,0x99,0x34,0x4f,0x8c,
- 0x99,0x37,0x52,0x8f,0x99,0x3a,0x56,0x93,0x99,0x3c,0x58,0x96,0x99,0x3e,0x5a,
- 0x99,0x99,0x40,0x5d,0x9b,0x99,0x41,0x57,0x84,0xac,0xe0,0xe0,0xe1,0xfe,0x88,
- 0x88,0x88,0xff,0x00,0x00,0x00,0xff,0x11,0x18,0x28,0xdb,0x49,0x65,0xa6,0x99,
- 0x50,0x6d,0xae,0x99,0x52,0x6e,0xb0,0x99,0x52,0x6f,0xb1,0x99,0x50,0x6d,0xaf,
- 0x99,0x4e,0x6b,0xad,0x99,0x4d,0x6a,0xac,0x99,0x50,0x6d,0xaf,0x98,0xb7,0xb7,
- 0xb7,0xff,0xeb,0xea,0xeb,0xff,0xec,0xea,0xec,0xff,0x58,0x58,0x59,0xff,0x15,
- 0x2c,0x5f,0xff,0x83,0x12,0x29,0x5d,0xff,0x1d,0x13,0x2a,0x5f,0xff,0x16,0x2d,
- 0x61,0xff,0x18,0x2f,0x65,0xff,0x1a,0x31,0x67,0xff,0x1c,0x35,0x6c,0xff,0x20,
- 0x39,0x72,0xff,0x23,0x3c,0x76,0xff,0x25,0x3e,0x78,0xff,0x26,0x40,0x7a,0xff,
- 0x27,0x41,0x7a,0xff,0x28,0x42,0x7c,0xff,0x2b,0x45,0x7e,0xff,0x2d,0x46,0x81,
- 0xff,0x2f,0x48,0x84,0xff,0x31,0x4b,0x87,0xff,0x35,0x4f,0x8c,0xff,0x39,0x55,
- 0x92,0xff,0x3b,0x57,0x95,0xff,0x3d,0x5a,0x98,0xff,0x3f,0x5c,0x9b,0xff,0x42,
- 0x5f,0x9d,0xff,0x44,0x61,0xa0,0xff,0x44,0x60,0x9f,0xff,0x45,0x60,0xa1,0xff,
- 0x46,0x63,0xa4,0xff,0x11,0x11,0x11,0xff,0xfd,0xfd,0xfc,0xff,0xef,0xee,0xf0,
- 0xff,0x54,0x54,0x5a,0x39,0x83,0xff,0xff,0xff,0x00,0x03,0xe6,0xe5,0xeb,0x66,
- 0xfd,0xfc,0xfc,0x66,0x00,0x00,0x00,0x66,0x86,0x12,0x29,0x5d,0x66,0x07,0x14,
- 0x2b,0x60,0x66,0x16,0x2d,0x62,0x66,0x18,0x2f,0x65,0x66,0x1a,0x33,0x69,0x66,
- 0x1d,0x36,0x6e,0x66,0x1f,0x38,0x71,0x66,0x21,0x3a,0x74,0x66,0x82,0x23,0x3c,
- 0x75,0x66,0x47,0x24,0x3d,0x75,0x66,0x26,0x3f,0x77,0x66,0x27,0x41,0x7a,0x66,
- 0x29,0x43,0x7c,0x66,0x2b,0x45,0x7f,0x66,0x2d,0x46,0x81,0x66,0x2f,0x48,0x84,
- 0x66,0x30,0x4a,0x86,0x66,0x33,0x4d,0x89,0x66,0x37,0x53,0x8f,0x66,0x39,0x55,
- 0x92,0x66,0x3b,0x57,0x94,0x66,0x3d,0x59,0x97,0x66,0x3e,0x5b,0x99,0x66,0x40,
- 0x5d,0x9b,0x66,0x42,0x5f,0x9e,0x66,0x42,0x5e,0x9d,0x66,0x43,0x5e,0x9d,0x66,
- 0x45,0x60,0xa0,0x66,0x45,0x62,0xa2,0x66,0x47,0x64,0xa4,0x50,0x00,0x00,0x00,
- 0x66,0xe4,0xe3,0xe6,0x9b,0xde,0xdd,0xe0,0xc1,0xf4,0xf3,0xf3,0x99,0xfb,0xfb,
- 0xfa,0x99,0xf9,0xf8,0xf7,0xb3,0xd2,0xd4,0xda,0xa2,0x4c,0x5d,0x83,0x99,0x00,
- 0x13,0x4d,0x99,0x13,0x2a,0x5d,0x99,0x13,0x2a,0x5f,0x99,0x15,0x2c,0x61,0x99,
- 0x18,0x2d,0x62,0x9a,0x1c,0x33,0x68,0x99,0xc0,0xc3,0xca,0xec,0xff,0xff,0xff,
- 0xff,0x9d,0x9f,0xa4,0xf0,0x20,0x3a,0x71,0x99,0x23,0x3c,0x73,0x99,0x24,0x3d,
- 0x75,0x9a,0x27,0x40,0x79,0x99,0x29,0x43,0x7c,0x99,0x2b,0x45,0x7f,0x99,0x2c,
- 0x46,0x81,0x99,0x2f,0x48,0x84,0x99,0x31,0x4a,0x86,0x99,0x33,0x4d,0x89,0x99,
- 0x35,0x4f,0x8c,0x99,0x38,0x52,0x8f,0x99,0x39,0x55,0x93,0x99,0x3d,0x58,0x96,
- 0x99,0x3f,0x5c,0x9a,0x99,0x42,0x5e,0x9d,0x99,0x5c,0x63,0x73,0xd9,0x1c,0x1c,
- 0x1c,0xff,0x03,0x04,0x07,0xf8,0x3a,0x50,0x84,0xa7,0x48,0x64,0xa5,0x99,0x4b,
- 0x68,0xaa,0x99,0x50,0x6d,0xaf,0x99,0x52,0x6f,0xb1,0x99,0x53,0x70,0xb2,0x99,
- 0x51,0x6e,0xb0,0x99,0x4d,0x6a,0xac,0x99,0x5c,0x77,0xb3,0x7a,0xd0,0xd0,0xd0,
- 0xff,0xe7,0xe6,0xe7,0xff,0xe7,0xe5,0xe7,0xff,0x14,0x14,0x14,0xff,0x13,0x2a,
- 0x5d,0xff,0x83,0x12,0x29,0x5d,0xff,0x07,0x12,0x29,0x5e,0xff,0x15,0x2c,0x60,
- 0xff,0x17,0x2e,0x63,0xff,0x19,0x32,0x68,0xff,0x1d,0x36,0x6e,0xff,0x20,0x39,
- 0x71,0xff,0x22,0x3b,0x74,0xff,0x82,0x23,0x3d,0x75,0xff,0x14,0x25,0x3f,0x77,
- 0xff,0x28,0x41,0x7b,0xff,0x2a,0x44,0x7d,0xff,0x2c,0x46,0x80,0xff,0x2e,0x48,
- 0x83,0xff,0x30,0x4a,0x85,0xff,0x34,0x4f,0x8b,0xff,0x38,0x54,0x91,0xff,0x3a,
- 0x56,0x93,0xff,0x3c,0x59,0x97,0xff,0x3f,0x5b,0x99,0xff,0x41,0x5e,0x9c,0xff,
- 0x43,0x5f,0x9e,0xff,0x43,0x5d,0x9d,0xff,0x44,0x60,0xa0,0xff,0x46,0x62,0xa2,
- 0xff,0x11,0x11,0x11,0xff,0xfd,0xfc,0xfc,0xff,0xef,0xee,0xf1,0xff,0x53,0x53,
- 0x58,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xe5,0xe4,0xeb,0x66,0xfc,0xfc,0xfc,
- 0x66,0x00,0x00,0x00,0x66,0x86,0x12,0x29,0x5d,0x66,0x05,0x13,0x2a,0x5f,0x66,
- 0x15,0x2e,0x63,0x66,0x17,0x31,0x67,0x66,0x19,0x33,0x6b,0x66,0x1b,0x35,0x6d,
- 0x66,0x82,0x1e,0x37,0x6f,0x66,0x48,0x1f,0x38,0x6f,0x66,0x21,0x3a,0x71,0x66,
- 0x22,0x3c,0x73,0x66,0x24,0x3e,0x76,0x66,0x26,0x40,0x78,0x66,0x28,0x42,0x7b,
- 0x66,0x2a,0x44,0x7d,0x66,0x2c,0x45,0x80,0x66,0x2e,0x47,0x82,0x66,0x2f,0x49,
- 0x84,0x66,0x31,0x4a,0x86,0x66,0x34,0x4e,0x8a,0x66,0x38,0x54,0x90,0x66,0x39,
- 0x55,0x93,0x66,0x3b,0x58,0x95,0x66,0x3d,0x5a,0x97,0x66,0x3f,0x5c,0x9a,0x66,
- 0x40,0x5c,0x9a,0x66,0x3f,0x5a,0x99,0x66,0x41,0x5c,0x9c,0x66,0x43,0x5f,0x9e,
- 0x66,0x45,0x60,0xa0,0x66,0x46,0x62,0xa3,0x50,0x00,0x00,0x00,0x66,0xf2,0xf1,
- 0xf1,0x66,0xd4,0xd3,0xd6,0x8b,0xdc,0xdb,0xdf,0x95,0xef,0xee,0xf0,0x99,0xfb,
- 0xfa,0xfa,0x99,0xf9,0xf7,0xf7,0xb2,0xe4,0xe3,0xe7,0xa8,0x6e,0x7a,0x99,0x9a,
- 0x01,0x1a,0x52,0x99,0x10,0x27,0x5d,0x99,0x16,0x2d,0x62,0x99,0x18,0x2f,0x64,
- 0x99,0x19,0x31,0x67,0x99,0x5b,0x67,0x84,0xbc,0xfd,0xfd,0xfd,0xff,0xf8,0xf8,
- 0xf8,0xff,0x66,0x74,0x94,0xb9,0x23,0x3d,0x74,0x99,0x24,0x3f,0x76,0x99,0x27,
- 0x41,0x79,0x99,0x29,0x43,0x7c,0x99,0x2b,0x44,0x7f,0x99,0x2d,0x47,0x82,0x99,
- 0x2f,0x49,0x84,0x99,0x31,0x4b,0x87,0x99,0x33,0x4d,0x89,0x99,0x35,0x4f,0x8c,
- 0x99,0x37,0x51,0x8e,0x99,0x39,0x54,0x92,0x99,0x3b,0x56,0x94,0x99,0x3d,0x57,
- 0x95,0x99,0x40,0x5b,0x9a,0x99,0x3e,0x58,0x92,0x9e,0x06,0x08,0x0d,0xf2,0x1a,
- 0x23,0x39,0xcf,0x4c,0x69,0xaa,0x99,0x4c,0x68,0xa9,0x99,0x4b,0x68,0xa9,0x99,
- 0x4d,0x6a,0xac,0x99,0x4f,0x6c,0xae,0x99,0x51,0x6e,0xb0,0x99,0x53,0x70,0xb2,
- 0x99,0x51,0x6e,0xb0,0x8a,0xdf,0xe3,0xed,0x50,0xd7,0xd7,0xd7,0xff,0xdb,0xda,
- 0xdc,0xff,0xf1,0xf0,0xf1,0xff,0x01,0x01,0x01,0xff,0x85,0x12,0x29,0x5d,0xff,
- 0x1c,0x13,0x2b,0x5f,0xff,0x16,0x2f,0x65,0xff,0x19,0x33,0x6a,0xff,0x1c,0x36,
- 0x6d,0xff,0x1f,0x38,0x70,0xff,0x20,0x39,0x71,0xff,0x20,0x3a,0x71,0xff,0x22,
- 0x3c,0x73,0xff,0x25,0x3e,0x76,0xff,0x27,0x40,0x79,0xff,0x29,0x43,0x7c,0xff,
- 0x2b,0x45,0x7f,0xff,0x2d,0x46,0x82,0xff,0x2f,0x49,0x85,0xff,0x32,0x4c,0x88,
- 0xff,0x37,0x52,0x8f,0xff,0x39,0x55,0x93,0xff,0x3b,0x57,0x95,0xff,0x3e,0x5a,
- 0x98,0xff,0x40,0x5d,0x9b,0xff,0x40,0x5c,0x9b,0xff,0x41,0x5c,0x9b,0xff,0x43,
- 0x5f,0x9e,0xff,0x45,0x61,0xa1,0xff,0x11,0x11,0x11,0xff,0xfd,0xfc,0xfc,0xff,
- 0xee,0xed,0xf1,0xff,0x53,0x54,0x5a,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xe5,
- 0xe4,0xea,0x66,0xfc,0xfc,0xfd,0x66,0x00,0x00,0x00,0x66,0x84,0x12,0x29,0x5d,
- 0x66,0x48,0x12,0x29,0x5e,0x66,0x12,0x2b,0x5f,0x66,0x13,0x2c,0x61,0x66,0x15,
- 0x2e,0x64,0x66,0x16,0x30,0x67,0x66,0x18,0x32,0x69,0x66,0x1a,0x32,0x69,0x66,
- 0x1b,0x33,0x69,0x66,0x1b,0x34,0x6a,0x66,0x1e,0x37,0x6d,0x66,0x1f,0x38,0x70,
- 0x66,0x21,0x3a,0x72,0x66,0x23,0x3c,0x74,0x66,0x24,0x3e,0x76,0x66,0x26,0x40,
- 0x79,0x66,0x28,0x42,0x7b,0x66,0x2a,0x44,0x7e,0x66,0x2c,0x46,0x80,0x66,0x2e,
- 0x47,0x83,0x66,0x30,0x49,0x85,0x66,0x32,0x4b,0x87,0x66,0x34,0x4f,0x8b,0x66,
- 0x38,0x54,0x91,0x66,0x3b,0x57,0x94,0x66,0x3c,0x59,0x96,0x66,0x3d,0x5a,0x97,
- 0x66,0x3c,0x57,0x96,0x66,0x3e,0x59,0x98,0x66,0x40,0x5b,0x9a,0x66,0x42,0x5d,
- 0x9d,0x66,0x44,0x5f,0x9f,0x66,0x45,0x61,0xa1,0x50,0x00,0x00,0x00,0x66,0xf1,
- 0xf1,0xf1,0x66,0xcf,0xcd,0xcf,0x66,0xda,0xd9,0xdd,0x25,0xd9,0xd8,0xdb,0x8c,
- 0xe9,0xe9,0xea,0x99,0xf9,0xf8,0xf8,0x99,0xf7,0xf7,0xf7,0xa9,0xee,0xed,0xee,
- 0xae,0x92,0x9b,0xb0,0x9b,0x16,0x2e,0x62,0x99,0x0a,0x22,0x5a,0x99,0x19,0x30,
- 0x65,0x99,0x19,0x31,0x67,0x99,0x1b,0x34,0x69,0x99,0x89,0x8c,0x91,0xef,0xff,
- 0xff,0xff,0xff,0xe9,0xea,0xeb,0xfa,0x74,0x85,0xa8,0xb4,0x25,0x3f,0x77,0x99,
- 0x27,0x41,0x7a,0x99,0x29,0x43,0x7c,0x99,0x2b,0x44,0x7e,0x99,0x2d,0x47,0x82,
- 0x99,0x2f,0x49,0x84,0x99,0x31,0x4b,0x87,0x99,0x34,0x4d,0x8a,0x99,0x35,0x4f,
- 0x8d,0x99,0x37,0x52,0x8f,0x99,0x4c,0x65,0x9c,0x9f,0x3b,0x55,0x94,0x99,0x3e,
- 0x58,0x97,0x99,0x40,0x5a,0x99,0x99,0x42,0x5c,0x9b,0x99,0x2b,0x3d,0x66,0xb2,
- 0x3a,0x52,0x87,0xa4,0x4a,0x67,0xa7,0x99,0x4e,0x6b,0xac,0x99,0x50,0x6d,0xae,
- 0x99,0x4f,0x6c,0xae,0x99,0x82,0x4d,0x6a,0xac,0x99,0x07,0x4f,0x6c,0xae,0x96,
- 0xb3,0xbf,0xdb,0x54,0xf2,0xf1,0xf2,0x8b,0xca,0xca,0xca,0xff,0xdd,0xdd,0xde,
- 0xff,0xf5,0xf4,0xf5,0xff,0x00,0x00,0x00,0xff,0x85,0x12,0x29,0x5d,0xff,0x1c,
- 0x13,0x2c,0x62,0xff,0x16,0x30,0x67,0xff,0x18,0x32,0x69,0xff,0x1b,0x34,0x6c,
- 0xff,0x1c,0x35,0x6d,0xff,0x1d,0x36,0x6c,0xff,0x1f,0x39,0x70,0xff,0x22,0x3b,
- 0x72,0xff,0x24,0x3d,0x75,0xff,0x26,0x3f,0x78,0xff,0x28,0x42,0x7b,0xff,0x2a,
- 0x44,0x7e,0xff,0x2d,0x46,0x81,0xff,0x2f,0x48,0x84,0xff,0x31,0x4a,0x86,0xff,
- 0x34,0x4e,0x8b,0xff,0x38,0x54,0x92,0xff,0x3a,0x57,0x94,0xff,0x3d,0x5a,0x97,
- 0xff,0x3f,0x5b,0x99,0xff,0x3f,0x59,0x98,0xff,0x40,0x5b,0x9b,0xff,0x43,0x5d,
- 0x9d,0xff,0x45,0x60,0xa0,0xff,0x11,0x11,0x11,0xff,0xfc,0xfc,0xfc,0xff,0xed,
- 0xed,0xf0,0xff,0x52,0x52,0x58,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xe5,0xe4,
- 0xea,0x66,0xfc,0xfc,0xfc,0x66,0x00,0x00,0x00,0x66,0x83,0x12,0x29,0x5d,0x66,
- 0x01,0x13,0x2a,0x5f,0x66,0x83,0x13,0x2c,0x62,0x66,0x4e,0x13,0x2c,0x63,0x66,
- 0x15,0x2e,0x64,0x66,0x16,0x2e,0x63,0x66,0x18,0x2f,0x64,0x66,0x19,0x31,0x67,
- 0x66,0x1b,0x33,0x69,0x66,0x1c,0x35,0x6c,0x66,0x1e,0x37,0x6e,0x66,0x20,0x39,
- 0x70,0x66,0x22,0x3b,0x72,0x66,0x23,0x3d,0x75,0x66,0x25,0x3f,0x77,0x66,0x27,
- 0x41,0x7a,0x66,0x29,0x43,0x7c,0x66,0x2b,0x45,0x7e,0x66,0x2d,0x46,0x81,0x66,
- 0x2e,0x48,0x83,0x66,0x30,0x4a,0x86,0x66,0x32,0x4c,0x88,0x66,0x34,0x4e,0x8b,
- 0x66,0x38,0x53,0x90,0x66,0x3a,0x57,0x94,0x66,0x3a,0x55,0x93,0x66,0x3b,0x56,
- 0x94,0x66,0x3d,0x58,0x96,0x66,0x3f,0x5a,0x99,0x66,0x41,0x5c,0x9b,0x66,0x43,
- 0x5e,0x9d,0x66,0x44,0x60,0xa0,0x50,0x00,0x00,0x00,0x66,0xf1,0xf1,0xf1,0x66,
- 0xcf,0xcd,0xce,0x66,0xda,0xd9,0xdd,0x00,0xda,0xd9,0xdd,0x0f,0xd6,0xd5,0xd9,
- 0x74,0xe4,0xe3,0xe4,0x98,0xf7,0xf6,0xf6,0x99,0xf8,0xf6,0xf7,0xa0,0xf5,0xf4,
- 0xf4,0xb0,0xb6,0xbc,0xc8,0x99,0x33,0x47,0x75,0x99,0x02,0x1c,0x57,0x99,0x1c,
- 0x32,0x68,0x99,0x1c,0x34,0x6a,0x99,0x15,0x26,0x4b,0xaf,0x98,0x98,0x98,0xff,
- 0xff,0xff,0xff,0xff,0xfb,0xfc,0xfc,0xfd,0xa9,0xb3,0xca,0xc9,0x40,0x58,0x8b,
- 0xa1,0x29,0x43,0x7c,0x99,0x2c,0x45,0x80,0x99,0x2e,0x47,0x82,0x99,0x30,0x49,
- 0x84,0x99,0x32,0x4c,0x88,0x99,0x35,0x4f,0x8c,0x99,0x3d,0x57,0x93,0x9b,0x94,
- 0xa3,0xc5,0xbb,0xea,0xee,0xf4,0xee,0xad,0xb9,0xd3,0xc7,0x43,0x5e,0x9c,0x9a,
- 0x42,0x5e,0x9d,0x99,0x44,0x61,0xa0,0x99,0x46,0x62,0xa2,0x99,0x45,0x61,0xa1,
- 0x99,0x47,0x64,0xa4,0x99,0x4a,0x67,0xa8,0x99,0x4f,0x6c,0xad,0x99,0x52,0x6f,
- 0xb1,0x99,0x53,0x70,0xb2,0x99,0x50,0x6d,0xaf,0x99,0x7b,0x90,0xc0,0x59,0xf2,
- 0xf3,0xf2,0x89,0xde,0xdb,0xde,0x99,0xbf,0xbf,0xc0,0xff,0xe2,0xe0,0xe2,0xff,
- 0xf5,0xf5,0xf5,0xff,0x00,0x00,0x00,0xff,0x83,0x12,0x29,0x5d,0xff,0x1e,0x12,
- 0x29,0x5e,0xff,0x13,0x2b,0x61,0xff,0x13,0x2d,0x63,0xff,0x15,0x2e,0x65,0xff,
- 0x18,0x31,0x68,0xff,0x19,0x31,0x68,0xff,0x1b,0x33,0x68,0xff,0x1c,0x35,0x6b,
- 0xff,0x1e,0x38,0x6e,0xff,0x20,0x3a,0x71,0xff,0x23,0x3c,0x74,0xff,0x25,0x3f,
- 0x77,0xff,0x27,0x41,0x7a,0xff,0x29,0x43,0x7c,0xff,0x2b,0x45,0x7f,0xff,0x2e,
- 0x47,0x82,0xff,0x30,0x49,0x85,0xff,0x32,0x4c,0x88,0xff,0x36,0x51,0x8e,0xff,
- 0x3a,0x56,0x93,0xff,0x3c,0x59,0x96,0xff,0x3c,0x58,0x96,0xff,0x3d,0x58,0x96,
- 0xff,0x40,0x5a,0x99,0xff,0x42,0x5d,0x9c,0xff,0x44,0x5f,0x9f,0xff,0x11,0x11,
- 0x11,0xff,0xfc,0xfc,0xfc,0xff,0xed,0xec,0xef,0xff,0x50,0x4f,0x54,0x3a,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xe4,0xe3,0xe9,0x66,0xfc,0xfc,0xfc,0x66,0x00,0x00,
- 0x00,0x66,0x82,0x13,0x2a,0x60,0x66,0x84,0x13,0x2c,0x62,0x66,0x21,0x13,0x2c,
- 0x61,0x66,0x12,0x2a,0x5f,0x66,0x13,0x2a,0x5e,0x66,0x14,0x2c,0x60,0x66,0x17,
- 0x2e,0x63,0x66,0x18,0x30,0x65,0x66,0x1a,0x32,0x68,0x66,0x1b,0x34,0x6a,0x66,
- 0x1d,0x36,0x6d,0x66,0x1f,0x38,0x6f,0x66,0x20,0x3a,0x71,0x66,0x22,0x3c,0x74,
- 0x66,0x24,0x3e,0x76,0x66,0x26,0x40,0x79,0x66,0x29,0x42,0x7c,0x66,0x29,0x43,
- 0x7d,0x66,0x2c,0x45,0x80,0x66,0x2d,0x46,0x82,0x66,0x2f,0x49,0x84,0x66,0x31,
- 0x4b,0x87,0x66,0x33,0x4c,0x89,0x66,0x34,0x4e,0x8b,0x66,0x37,0x51,0x8e,0x66,
- 0x38,0x52,0x90,0x66,0x3a,0x55,0x92,0x66,0x3c,0x57,0x95,0x66,0x3e,0x58,0x97,
- 0x66,0x40,0x5b,0x9a,0x66,0x42,0x5d,0x9c,0x66,0x43,0x5f,0x9e,0x50,0x00,0x00,
- 0x00,0x66,0xf1,0xf0,0xf1,0x66,0xcf,0xcd,0xce,0x66,0x82,0xda,0xd9,0xdd,0x00,
- 0x0d,0xda,0xd9,0xdc,0x00,0xd6,0xd5,0xd8,0x5c,0xde,0xdd,0xdf,0x95,0xf3,0xf1,
- 0xf2,0x99,0xf8,0xf8,0xf8,0x99,0xf8,0xf7,0xf5,0xb2,0xd2,0xd4,0xdb,0xa0,0x52,
- 0x63,0x89,0x99,0x03,0x1d,0x59,0x99,0x1b,0x35,0x6b,0x99,0x1e,0x37,0x6d,0x99,
- 0x0f,0x18,0x2d,0xcb,0x90,0x90,0x90,0xff,0x82,0xff,0xff,0xff,0xff,0x08,0xed,
- 0xef,0xf4,0xf1,0xaf,0xb9,0xcf,0xcd,0x84,0x92,0xb5,0xb7,0x69,0x7b,0xa5,0xad,
- 0x66,0x79,0xa5,0xab,0x7e,0x8e,0xb3,0xb3,0xa6,0xb2,0xcd,0xc5,0xe1,0xe5,0xee,
- 0xe7,0x82,0xff,0xff,0xff,0xff,0x07,0xd7,0xdc,0xe8,0xe3,0x48,0x64,0xa1,0x9b,
- 0x43,0x60,0x9f,0x99,0x45,0x62,0xa2,0x99,0x48,0x64,0xa4,0x99,0x4a,0x66,0xa7,
- 0x99,0x4a,0x68,0xa8,0x99,0x82,0x4b,0x68,0xa9,0x99,0x0a,0x4f,0x6c,0xae,0x99,
- 0x51,0x6e,0xb0,0x99,0x6c,0x84,0xbc,0x6e,0xf1,0xf2,0xf4,0x73,0xe2,0xe1,0xe2,
- 0x99,0xd2,0xd0,0xd2,0x68,0xb9,0xb9,0xb9,0xff,0xe2,0xe0,0xe1,0xff,0xf5,0xf4,
- 0xf5,0xff,0x00,0x00,0x00,0xff,0x82,0x12,0x29,0x5d,0xff,0x01,0x12,0x2a,0x5f,
- 0xff,0x83,0x13,0x2c,0x62,0xff,0x1b,0x15,0x2d,0x64,0xff,0x16,0x2e,0x64,0xff,
- 0x18,0x2f,0x64,0xff,0x1a,0x32,0x67,0xff,0x1b,0x34,0x6b,0xff,0x1e,0x37,0x6d,
- 0xff,0x20,0x39,0x70,0xff,0x22,0x3c,0x73,0xff,0x24,0x3e,0x76,0xff,0x26,0x40,
- 0x79,0xff,0x28,0x43,0x7b,0xff,0x2b,0x45,0x7e,0xff,0x2d,0x46,0x81,0xff,0x2f,
- 0x49,0x84,0xff,0x31,0x4b,0x87,0xff,0x33,0x4d,0x8a,0xff,0x38,0x53,0x90,0xff,
- 0x3b,0x57,0x94,0xff,0x3b,0x55,0x93,0xff,0x3c,0x57,0x95,0xff,0x3f,0x5a,0x98,
- 0xff,0x41,0x5c,0x9b,0xff,0x43,0x5e,0x9e,0xff,0x11,0x11,0x11,0xff,0xfd,0xfc,
- 0xfb,0xff,0xed,0xec,0xee,0xff,0x4c,0x4c,0x52,0x3a,0x83,0xff,0xff,0xff,0x00,
- 0x03,0xe3,0xe3,0xe8,0x66,0xfc,0xfb,0xfc,0x66,0x00,0x00,0x00,0x66,0x85,0x13,
- 0x2c,0x62,0x66,0x01,0x13,0x2b,0x60,0x66,0x83,0x12,0x29,0x5d,0x66,0x1e,0x14,
- 0x2b,0x5f,0x66,0x16,0x2d,0x61,0x66,0x17,0x2f,0x64,0x66,0x19,0x31,0x66,0x66,
- 0x1b,0x33,0x69,0x66,0x1c,0x35,0x6b,0x66,0x1e,0x36,0x6d,0x66,0x1f,0x39,0x70,
- 0x66,0x21,0x3a,0x72,0x66,0x23,0x3d,0x74,0x66,0x27,0x41,0x7b,0x66,0x2a,0x44,
- 0x7e,0x66,0x29,0x43,0x7c,0x66,0x2a,0x44,0x7e,0x66,0x2c,0x45,0x80,0x66,0x2e,
- 0x48,0x83,0x66,0x30,0x4a,0x85,0x66,0x32,0x4b,0x88,0x66,0x34,0x4e,0x8a,0x66,
- 0x35,0x4f,0x8c,0x66,0x37,0x51,0x8e,0x66,0x39,0x54,0x91,0x66,0x3b,0x55,0x93,
- 0x66,0x3d,0x57,0x96,0x66,0x3e,0x5a,0x98,0x66,0x41,0x5c,0x9a,0x66,0x42,0x5d,
- 0x9d,0x50,0x00,0x00,0x00,0x66,0xf0,0xf0,0xf0,0x66,0xcf,0xcc,0xce,0x66,0x82,
- 0xda,0xd9,0xdd,0x00,0x0f,0xda,0xd9,0xdc,0x00,0xd6,0xd5,0xd8,0x00,0xd5,0xd4,
- 0xd7,0x41,0xd9,0xd8,0xdb,0x92,0xec,0xeb,0xee,0x99,0xf8,0xf7,0xf8,0x99,0xf6,
- 0xf5,0xf5,0xb1,0xe4,0xe4,0xe7,0xa7,0x77,0x84,0xa1,0x9b,0x0d,0x28,0x62,0x99,
- 0x19,0x33,0x6a,0x99,0x21,0x3b,0x70,0x99,0x0a,0x11,0x22,0xd6,0x4f,0x4f,0x4f,
- 0xff,0xc5,0xc5,0xc5,0xff,0x84,0xff,0xff,0xff,0xff,0x01,0xfe,0xfe,0xff,0xfe,
- 0x83,0xff,0xff,0xff,0xff,0x15,0xee,0xf0,0xf5,0xf1,0x98,0xa0,0xaf,0xda,0x10,
- 0x13,0x18,0xef,0x1c,0x28,0x42,0xc7,0x43,0x60,0x9e,0x9a,0x45,0x62,0xa2,0x99,
- 0x48,0x64,0xa4,0x99,0x4a,0x67,0xa8,0x99,0x4d,0x6a,0xab,0x99,0x4f,0x6b,0xac,
- 0x99,0x50,0x6d,0xae,0x99,0x4e,0x6b,0xad,0x99,0x4e,0x6b,0xad,0x7d,0xea,0xec,
- 0xf0,0x67,0xe8,0xe6,0xe8,0x98,0xd3,0xd2,0xd5,0x7c,0xd4,0xd2,0xd4,0x0b,0xb7,
- 0xb7,0xb7,0xff,0xe1,0xdf,0xe0,0xff,0xf5,0xf4,0xf5,0xff,0x00,0x00,0x00,0xff,
- 0x82,0x12,0x2a,0x5f,0xff,0x84,0x13,0x2c,0x62,0xff,0x1b,0x13,0x2b,0x60,0xff,
- 0x14,0x2c,0x60,0xff,0x17,0x2e,0x63,0xff,0x19,0x31,0x66,0xff,0x1b,0x33,0x69,
- 0xff,0x1c,0x36,0x6c,0xff,0x1f,0x38,0x6f,0xff,0x21,0x3a,0x72,0xff,0x23,0x3d,
- 0x75,0xff,0x25,0x3f,0x78,0xff,0x28,0x41,0x7a,0xff,0x2a,0x44,0x7d,0xff,0x2c,
- 0x45,0x80,0xff,0x2e,0x48,0x83,0xff,0x30,0x4a,0x86,0xff,0x33,0x4c,0x88,0xff,
- 0x35,0x4f,0x8c,0xff,0x37,0x52,0x8f,0xff,0x39,0x54,0x91,0xff,0x3b,0x56,0x94,
- 0xff,0x3e,0x58,0x97,0xff,0x40,0x5b,0x9a,0xff,0x42,0x5d,0x9d,0xff,0x11,0x11,
- 0x11,0xff,0xfc,0xfc,0xfb,0xff,0xec,0xec,0xee,0xff,0x58,0x59,0x5f,0x3a,0x83,
- 0xff,0xff,0xff,0x00,0x03,0xe3,0xe3,0xe8,0x66,0xfc,0xfb,0xfb,0x66,0x00,0x00,
- 0x00,0x66,0x83,0x13,0x2c,0x62,0x66,0x02,0x13,0x2b,0x60,0x66,0x12,0x29,0x5e,
- 0x66,0x84,0x12,0x29,0x5d,0x66,0x1e,0x12,0x29,0x5e,0x66,0x14,0x2b,0x60,0x66,
- 0x16,0x2d,0x62,0x66,0x18,0x2f,0x65,0x66,0x1a,0x31,0x67,0x66,0x1b,0x33,0x6a,
- 0x66,0x1c,0x35,0x6c,0x66,0x1e,0x37,0x6e,0x66,0x20,0x39,0x70,0x66,0x24,0x3d,
- 0x76,0x66,0x27,0x40,0x7b,0x66,0x29,0x43,0x7d,0x66,0x2a,0x44,0x7f,0x66,0x29,
- 0x44,0x7d,0x66,0x2a,0x45,0x7e,0x66,0x2d,0x46,0x81,0x66,0x2f,0x48,0x84,0x66,
- 0x30,0x4a,0x86,0x66,0x32,0x4c,0x88,0x66,0x34,0x4e,0x8b,0x66,0x36,0x50,0x8d,
- 0x66,0x38,0x52,0x8f,0x66,0x3a,0x54,0x92,0x66,0x3b,0x56,0x94,0x66,0x3d,0x58,
- 0x97,0x66,0x3f,0x5a,0x99,0x66,0x41,0x5c,0x9b,0x50,0x00,0x00,0x00,0x66,0xf0,
- 0xf0,0xf0,0x66,0xce,0xcc,0xcd,0x66,0x82,0xda,0xd9,0xdd,0x00,0x18,0xda,0xd9,
- 0xdc,0x00,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0xd6,0xd5,0xd8,0x28,0xd5,
- 0xd5,0xd8,0x8d,0xe7,0xe5,0xe7,0x99,0xf7,0xf6,0xf7,0x99,0xf5,0xf5,0xf5,0xa8,
- 0xee,0xee,0xed,0xac,0x9b,0xa5,0xba,0x9c,0x26,0x3f,0x75,0x99,0x16,0x32,0x6f,
- 0x99,0x26,0x3e,0x78,0x9a,0x0c,0x14,0x27,0xd3,0x03,0x03,0x03,0xff,0x39,0x39,
- 0x39,0xff,0x80,0x81,0x83,0xf8,0xcb,0xce,0xd2,0xf2,0xf2,0xf3,0xf5,0xf9,0xf7,
- 0xf8,0xf9,0xfb,0xe2,0xe4,0xea,0xef,0xaf,0xb6,0xc3,0xdd,0x6b,0x73,0x85,0xd6,
- 0x17,0x1b,0x25,0xe8,0x82,0x00,0x00,0x00,0xff,0x12,0x0d,0x12,0x1f,0xe1,0x41,
- 0x5d,0x9a,0x9b,0x45,0x63,0xa2,0x99,0x48,0x65,0xa5,0x99,0x4b,0x67,0xa8,0x99,
- 0x4d,0x69,0xaa,0x99,0x4f,0x6d,0xad,0x99,0x52,0x6f,0xb0,0x99,0x51,0x6e,0xb0,
- 0x92,0xd0,0xd6,0xe5,0x5d,0xeb,0xeb,0xeb,0x92,0xd3,0xd2,0xd5,0x8e,0xd0,0xce,
- 0xd2,0x2e,0xd3,0xd2,0xd4,0x03,0xb7,0xb7,0xb7,0xff,0xe0,0xdf,0xe0,0xff,0xf5,
- 0xf4,0xf4,0xff,0x00,0x00,0x00,0xff,0x85,0x13,0x2c,0x62,0xff,0x1c,0x13,0x2a,
- 0x5f,0xff,0x12,0x29,0x5d,0xff,0x13,0x2b,0x5f,0xff,0x16,0x2d,0x62,0xff,0x18,
- 0x30,0x65,0xff,0x1a,0x32,0x68,0xff,0x1b,0x34,0x6b,0xff,0x1e,0x37,0x6e,0xff,
- 0x20,0x39,0x71,0xff,0x22,0x3c,0x73,0xff,0x24,0x3e,0x76,0xff,0x29,0x43,0x7c,
- 0xff,0x29,0x43,0x7d,0xff,0x2b,0x45,0x7f,0xff,0x2d,0x47,0x82,0xff,0x30,0x49,
- 0x85,0xff,0x32,0x4c,0x87,0xff,0x34,0x4e,0x8a,0xff,0x36,0x50,0x8d,0xff,0x38,
- 0x53,0x90,0xff,0x3b,0x55,0x93,0xff,0x3d,0x58,0x96,0xff,0x3f,0x5a,0x99,0xff,
- 0x42,0x5c,0x9c,0xff,0x11,0x11,0x11,0xff,0xfb,0xfb,0xfb,0xff,0xeb,0xeb,0xee,
- 0xff,0x4c,0x4c,0x50,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xe2,0xe2,0xe8,0x66,
- 0xfb,0xfa,0xfb,0x66,0x00,0x00,0x00,0x66,0x82,0x0d,0x26,0x5d,0x66,0x01,0x0c,
- 0x25,0x5b,0x66,0x87,0x0c,0x24,0x59,0x66,0x1d,0x0d,0x24,0x5a,0x66,0x0f,0x27,
- 0x5d,0x66,0x10,0x29,0x5f,0x66,0x13,0x2b,0x62,0x66,0x14,0x2d,0x64,0x66,0x16,
- 0x2f,0x66,0x66,0x17,0x31,0x69,0x66,0x1a,0x34,0x6e,0x66,0x1e,0x38,0x74,0x66,
- 0x20,0x3a,0x76,0x66,0x22,0x3c,0x78,0x66,0x24,0x3e,0x7b,0x66,0x26,0x40,0x7d,
- 0x66,0x26,0x41,0x7d,0x66,0x27,0x41,0x7d,0x66,0x28,0x42,0x7f,0x66,0x2a,0x44,
- 0x82,0x66,0x2c,0x46,0x84,0x66,0x2e,0x48,0x86,0x66,0x30,0x4a,0x89,0x66,0x32,
- 0x4c,0x8b,0x66,0x34,0x4f,0x8e,0x66,0x38,0x53,0x92,0x66,0x39,0x54,0x94,0x66,
- 0x3b,0x56,0x96,0x66,0x3c,0x58,0x99,0x50,0x00,0x00,0x00,0x66,0xf0,0xf0,0xf0,
- 0x66,0xcd,0xcc,0xcd,0x66,0x82,0xda,0xd9,0xdd,0x00,0x10,0xda,0xd9,0xdc,0x00,
- 0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0xd6,0xd5,0xd8,0x00,0xd6,0xd5,0xd8,
- 0x11,0xd3,0xd1,0xd3,0x77,0xe2,0xe0,0xe2,0x98,0xf4,0xf3,0xf4,0x99,0xf5,0xf5,
- 0xf5,0x9f,0xf5,0xf3,0xf2,0xae,0xba,0xbf,0xcd,0x99,0x41,0x57,0x88,0x99,0x10,
- 0x2d,0x6d,0x99,0x28,0x42,0x7b,0x99,0x18,0x26,0x48,0xb9,0x06,0x0a,0x13,0xe8,
- 0x84,0x00,0x00,0x00,0xff,0x01,0x00,0x00,0x01,0xfe,0x83,0x00,0x00,0x00,0xff,
- 0x14,0x05,0x08,0x0d,0xf1,0x1b,0x26,0x40,0xc8,0x3f,0x5a,0x96,0x9c,0x44,0x61,
- 0xa1,0x99,0x46,0x63,0xa3,0x99,0x49,0x65,0xa5,0x99,0x4a,0x68,0xa7,0x99,0x4c,
- 0x68,0xaa,0x99,0x4c,0x69,0xab,0x99,0x4d,0x6a,0xac,0x99,0xa9,0xb6,0xd5,0x5d,
- 0xf1,0xf0,0xf0,0x90,0xd7,0xd6,0xd8,0x99,0xd1,0xcf,0xd2,0x34,0xd0,0xcf,0xd2,
- 0x03,0xd3,0xd2,0xd4,0x00,0xb7,0xb7,0xb7,0xff,0xe0,0xde,0xdf,0xff,0xf5,0xf4,
- 0xf4,0xff,0x00,0x00,0x00,0xff,0x84,0x13,0x2c,0x62,0xff,0x01,0x12,0x2a,0x5e,
- 0xff,0x82,0x12,0x29,0x5d,0xff,0x1a,0x13,0x2a,0x5e,0xff,0x15,0x2c,0x61,0xff,
- 0x17,0x2f,0x64,0xff,0x1a,0x31,0x67,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x36,0x6d,
- 0xff,0x1f,0x38,0x6f,0xff,0x21,0x3b,0x72,0xff,0x25,0x3e,0x77,0xff,0x29,0x43,
- 0x7e,0xff,0x29,0x43,0x7d,0xff,0x2a,0x44,0x7d,0xff,0x2d,0x46,0x81,0xff,0x2e,
- 0x48,0x83,0xff,0x31,0x4a,0x86,0xff,0x33,0x4d,0x89,0xff,0x35,0x4f,0x8c,0xff,
- 0x38,0x52,0x8f,0xff,0x3a,0x54,0x92,0xff,0x3c,0x57,0x95,0xff,0x3e,0x59,0x98,
- 0xff,0x40,0x5b,0x9a,0xff,0x11,0x11,0x11,0xff,0xfb,0xfb,0xfb,0xff,0xeb,0xeb,
- 0xed,0xff,0x4c,0x4c,0x52,0x3a,0x83,0xff,0xff,0xff,0x00,0x03,0xe2,0xe2,0xe7,
- 0x66,0xfb,0xfa,0xfb,0x66,0x00,0x00,0x00,0x66,0x82,0x2a,0x3e,0x6c,0x66,0x89,
- 0x2b,0x3f,0x6d,0x66,0x1c,0x2c,0x41,0x6f,0x66,0x2e,0x43,0x71,0x66,0x30,0x44,
- 0x73,0x66,0x31,0x46,0x75,0x66,0x32,0x47,0x77,0x66,0x35,0x4a,0x7b,0x66,0x38,
- 0x4e,0x81,0x66,0x39,0x50,0x82,0x66,0x3b,0x52,0x84,0x66,0x3d,0x53,0x87,0x66,
- 0x3e,0x55,0x89,0x66,0x40,0x57,0x8b,0x66,0x42,0x59,0x8d,0x66,0x43,0x5a,0x8e,
- 0x66,0x43,0x59,0x8d,0x66,0x44,0x5a,0x8e,0x66,0x45,0x5c,0x91,0x66,0x47,0x5e,
- 0x93,0x66,0x49,0x5f,0x95,0x66,0x4b,0x61,0x97,0x66,0x4b,0x62,0x99,0x66,0x42,
- 0x5a,0x93,0x66,0x49,0x61,0x98,0x66,0x4b,0x63,0x9a,0x66,0x4d,0x65,0x9c,0x54,
- 0x00,0x00,0x00,0x66,0xf0,0xef,0xef,0x66,0xce,0xcb,0xcd,0x66,0x82,0xda,0xd9,
- 0xdd,0x00,0x03,0xda,0xd9,0xdc,0x00,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,
- 0x82,0xd6,0xd5,0xd8,0x00,0x27,0xd7,0xd5,0xd7,0x00,0xd3,0xcf,0xd3,0x5d,0xdc,
- 0xda,0xdd,0x95,0xf0,0xf0,0xf0,0x99,0xf7,0xf6,0xf6,0x99,0xf6,0xf4,0xf4,0xaf,
- 0xd4,0xd7,0xdd,0x9f,0x5e,0x70,0x99,0x99,0x11,0x2d,0x6e,0x99,0x29,0x43,0x7e,
- 0x99,0x2a,0x43,0x7d,0x9a,0x1d,0x2f,0x55,0xb0,0x12,0x1b,0x33,0xca,0x08,0x0c,
- 0x16,0xe5,0x02,0x03,0x06,0xf7,0x02,0x02,0x04,0xfa,0x06,0x09,0x11,0xec,0x13,
- 0x1c,0x30,0xd1,0x23,0x33,0x57,0xb7,0x39,0x53,0x8b,0x9f,0x40,0x5c,0x9c,0x99,
- 0x41,0x5f,0x9d,0x99,0x44,0x60,0xa0,0x99,0x44,0x61,0xa0,0x99,0x46,0x61,0xa1,
- 0x99,0x47,0x64,0xa4,0x99,0x48,0x65,0xa6,0x99,0x4b,0x67,0xa9,0x99,0x73,0x89,
- 0xbb,0x62,0xf1,0xf1,0xf1,0x7a,0xdb,0xd9,0xdb,0x99,0xce,0xcc,0xce,0x54,0xd1,
- 0xd0,0xd1,0x0b,0xd2,0xd1,0xd2,0x00,0xd3,0xd2,0xd4,0x00,0xb7,0xb7,0xb7,0xff,
- 0xe0,0xde,0xe0,0xff,0xf4,0xf3,0xf4,0xff,0x00,0x00,0x00,0xff,0x83,0x13,0x2c,
- 0x62,0xff,0x01,0x12,0x2a,0x5e,0xff,0x84,0x12,0x29,0x5d,0xff,0x19,0x14,0x2c,
- 0x60,0xff,0x16,0x2e,0x62,0xff,0x18,0x30,0x66,0xff,0x1b,0x33,0x69,0xff,0x1c,
- 0x35,0x6b,0xff,0x1e,0x37,0x6e,0xff,0x20,0x3a,0x71,0xff,0x25,0x3f,0x78,0xff,
- 0x28,0x42,0x7c,0xff,0x2a,0x44,0x7e,0xff,0x2a,0x44,0x7d,0xff,0x2b,0x45,0x7f,
- 0xff,0x2d,0x47,0x82,0xff,0x30,0x49,0x85,0xff,0x32,0x4c,0x88,0xff,0x34,0x4e,
- 0x8b,0xff,0x37,0x51,0x8e,0xff,0x39,0x53,0x90,0xff,0x3b,0x55,0x94,0xff,0x3d,
- 0x58,0x96,0xff,0x40,0x5a,0x99,0xff,0x11,0x11,0x11,0xff,0xfb,0xfb,0xfb,0xff,
- 0xeb,0xea,0xed,0xff,0x4e,0x4f,0x54,0x3a,0x83,0xff,0xff,0xff,0x00,0x06,0xe1,
- 0xe1,0xe6,0x66,0xfb,0xfa,0xfb,0x66,0x00,0x00,0x00,0x66,0xce,0xd0,0xd0,0x5d,
- 0xd3,0xd5,0xd5,0x4e,0xe1,0xe2,0xe4,0x4c,0x8a,0xdf,0xe0,0xe2,0x4c,0x01,0xe0,
- 0xe0,0xe2,0x4c,0x82,0xdf,0xe0,0xe2,0x4c,0x04,0xe0,0xe1,0xe2,0x4c,0xe0,0xe1,
- 0xe3,0x4c,0xe0,0xe1,0xe2,0x4c,0xe0,0xe0,0xe2,0x4c,0x8a,0xe0,0xe1,0xe3,0x4c,
- 0x09,0xe3,0xe4,0xe5,0x4c,0xd4,0xd6,0xdb,0x4c,0x64,0x70,0x89,0x4c,0x9f,0xa1,
- 0xa4,0x4c,0xa5,0xa5,0xa7,0x4e,0xa7,0xa8,0xaa,0x3c,0x00,0x00,0x00,0x66,0xf0,
- 0xef,0xf0,0x66,0xcd,0xcc,0xcc,0x66,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,
- 0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x27,0xd7,0xd5,0xd7,
- 0x00,0xd4,0xd1,0xd4,0x00,0xd1,0xd0,0xd3,0x42,0xd6,0xd5,0xd7,0x91,0xeb,0xea,
- 0xea,0x99,0xf6,0xf5,0xf6,0x99,0xf6,0xf5,0xf4,0xb1,0xe4,0xe4,0xe6,0xa5,0x7f,
- 0x8d,0xad,0x9b,0x1d,0x38,0x77,0x99,0x28,0x43,0x7f,0x99,0x2c,0x45,0x7f,0x99,
- 0x2c,0x46,0x80,0x99,0x2f,0x49,0x84,0x99,0x31,0x4b,0x86,0x99,0x32,0x4c,0x89,
- 0x99,0x34,0x4e,0x8b,0x99,0x39,0x54,0x91,0x99,0x3b,0x57,0x94,0x99,0x3d,0x59,
- 0x97,0x99,0x3f,0x5b,0x98,0x99,0x40,0x5c,0x9a,0x99,0x42,0x5d,0x9d,0x99,0x44,
- 0x5f,0x9e,0x99,0x45,0x60,0xa1,0x99,0x47,0x63,0xa4,0x99,0x48,0x65,0xa6,0x99,
- 0x5e,0x77,0xb1,0x73,0xf1,0xf1,0xf4,0x7d,0xe1,0xdf,0xe1,0x99,0xd2,0xd0,0xd2,
- 0x63,0xcd,0xcc,0xce,0x0b,0xd1,0xd0,0xd1,0x00,0xd2,0xd1,0xd2,0x00,0xd3,0xd2,
- 0xd4,0x00,0xb7,0xb7,0xb7,0xff,0xe0,0xde,0xe0,0xff,0xf4,0xf2,0xf4,0xff,0x00,
- 0x00,0x00,0xff,0x82,0x13,0x2c,0x62,0xff,0x01,0x12,0x29,0x5e,0xff,0x85,0x12,
- 0x29,0x5d,0xff,0x19,0x13,0x2a,0x5f,0xff,0x16,0x2d,0x62,0xff,0x18,0x2f,0x64,
- 0xff,0x1a,0x32,0x68,0xff,0x1b,0x34,0x6a,0xff,0x1d,0x36,0x6d,0xff,0x21,0x3a,
- 0x72,0xff,0x25,0x3e,0x78,0xff,0x27,0x41,0x7b,0xff,0x29,0x43,0x7e,0xff,0x2b,
- 0x45,0x80,0xff,0x2b,0x45,0x7f,0xff,0x2d,0x46,0x81,0xff,0x2f,0x48,0x84,0xff,
- 0x31,0x4b,0x87,0xff,0x34,0x4d,0x8a,0xff,0x36,0x50,0x8d,0xff,0x38,0x52,0x8f,
- 0xff,0x3a,0x55,0x93,0xff,0x3c,0x57,0x95,0xff,0x3f,0x59,0x98,0xff,0x11,0x11,
- 0x11,0xff,0xfb,0xfb,0xfa,0xff,0xea,0xea,0xea,0xff,0x4a,0x4a,0x50,0x3a,0x83,
- 0xff,0xff,0xff,0x00,0x02,0xe2,0xe1,0xe5,0x66,0xfa,0xfa,0xfb,0x66,0xa6,0x00,
- 0x00,0x00,0x66,0x02,0xf0,0xef,0xf0,0x66,0xcd,0xcb,0xcc,0x66,0x83,0xda,0xd9,
- 0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,
- 0x00,0x20,0xd7,0xd5,0xd7,0x00,0xd4,0xd1,0xd4,0x00,0xd2,0xd1,0xd4,0x00,0xd2,
- 0xd1,0xd3,0x2b,0xd3,0xd1,0xd4,0x8c,0xe6,0xe3,0xe5,0x99,0xf6,0xf5,0xf6,0x99,
- 0xf5,0xf4,0xf4,0xa8,0xed,0xed,0xed,0xaa,0xa3,0xac,0xc2,0x9d,0x33,0x4d,0x85,
- 0x99,0x20,0x3b,0x79,0x99,0x2e,0x48,0x81,0x99,0x2f,0x49,0x84,0x99,0x31,0x4b,
- 0x87,0x99,0x33,0x4c,0x89,0x99,0x35,0x50,0x8c,0x99,0x38,0x51,0x8e,0x99,0x3a,
- 0x54,0x92,0x99,0x3c,0x56,0x93,0x99,0x3d,0x58,0x96,0x99,0x40,0x5a,0x99,0x99,
- 0x42,0x5c,0x9c,0x99,0x44,0x5f,0x9e,0x99,0x45,0x60,0xa1,0x99,0x47,0x63,0xa4,
- 0x99,0x49,0x66,0xa6,0x81,0xde,0xe2,0xe9,0x62,0xe5,0xe4,0xe5,0x97,0xcf,0xcd,
- 0xd0,0x80,0xcf,0xcd,0xcf,0x20,0xd0,0xce,0xd0,0x01,0x82,0xd2,0xd1,0xd2,0x00,
- 0x05,0xd3,0xd2,0xd4,0x00,0xb7,0xb7,0xb7,0xff,0xdf,0xde,0xdf,0xff,0xf4,0xf3,
- 0xf3,0xff,0x00,0x00,0x00,0xff,0x82,0x10,0x28,0x5c,0xff,0x01,0x10,0x27,0x5b,
- 0xff,0x86,0x10,0x27,0x5c,0xff,0x18,0x13,0x2a,0x5f,0xff,0x15,0x2d,0x62,0xff,
- 0x17,0x2f,0x65,0xff,0x19,0x31,0x68,0xff,0x1a,0x34,0x6b,0xff,0x1f,0x38,0x72,
- 0xff,0x22,0x3c,0x76,0xff,0x24,0x3e,0x78,0xff,0x27,0x40,0x7b,0xff,0x29,0x43,
- 0x7f,0xff,0x2a,0x45,0x80,0xff,0x2a,0x44,0x7f,0xff,0x2c,0x46,0x82,0xff,0x2f,
- 0x48,0x85,0xff,0x31,0x4b,0x88,0xff,0x33,0x4d,0x8a,0xff,0x35,0x50,0x8d,0xff,
- 0x38,0x52,0x91,0xff,0x3a,0x55,0x94,0xff,0x3d,0x57,0x96,0xff,0x11,0x11,0x11,
- 0xff,0xfa,0xfa,0xf9,0xff,0xea,0xea,0xeb,0xff,0x49,0x4a,0x4f,0x3a,0x83,0xff,
- 0xff,0xff,0x00,0x05,0xe1,0xe0,0xe5,0x66,0xfb,0xfa,0xfa,0x66,0xfa,0xfa,0xfa,
- 0x66,0xfa,0xf9,0xf9,0x66,0xf9,0xf9,0xf9,0x66,0x82,0xf8,0xf8,0xf9,0x66,0x0e,
- 0xf9,0xf8,0xf8,0x66,0xf8,0xf8,0xf7,0x66,0xf8,0xf7,0xf7,0x66,0xf8,0xf6,0xf7,
- 0x66,0xf7,0xf6,0xf7,0x66,0xf7,0xf6,0xf6,0x66,0xf6,0xf5,0xf6,0x66,0xf6,0xf6,
- 0xf6,0x66,0xf6,0xf6,0xf5,0x66,0xf5,0xf5,0xf5,0x66,0xf5,0xf4,0xf5,0x66,0xf5,
- 0xf4,0xf4,0x66,0xf4,0xf4,0xf4,0x66,0xf5,0xf4,0xf4,0x66,0x82,0xf4,0xf3,0xf4,
- 0x66,0x82,0xf4,0xf3,0xf3,0x66,0x01,0xf3,0xf2,0xf3,0x66,0x82,0xf3,0xf2,0xf2,
- 0x66,0x01,0xf2,0xf2,0xf2,0x66,0x82,0xf2,0xf1,0xf2,0x66,0x02,0xf1,0xf1,0xf1,
- 0x66,0xf2,0xf1,0xf1,0x66,0x82,0xf1,0xf0,0xf1,0x66,0x07,0xf1,0xef,0xf0,0x66,
- 0xf1,0xf0,0xf0,0x66,0xf0,0xef,0xf0,0x66,0xf0,0xf0,0xef,0x66,0xf0,0xef,0xef,
- 0x66,0xf0,0xef,0xf0,0x66,0xcd,0xcb,0xcc,0x66,0x83,0xda,0xd9,0xdd,0x00,0x02,
- 0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x1e,0xd7,
- 0xd5,0xd7,0x00,0xd4,0xd1,0xd4,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,0xd3,0x00,
- 0xd3,0xd1,0xd4,0x14,0xd0,0xce,0xd1,0x79,0xde,0xdd,0xde,0x99,0xf3,0xf2,0xf2,
- 0x99,0xf5,0xf4,0xf5,0x9f,0xf3,0xf2,0xf1,0xab,0xbe,0xc5,0xd1,0x9a,0x4c,0x62,
- 0x93,0x99,0x19,0x36,0x76,0x99,0x30,0x4a,0x86,0x99,0x31,0x4b,0x86,0x99,0x34,
- 0x4e,0x8a,0x99,0x36,0x50,0x8c,0x99,0x38,0x52,0x8f,0x99,0x3a,0x54,0x91,0x99,
- 0x3b,0x56,0x94,0x99,0x3e,0x58,0x97,0x99,0x40,0x5a,0x99,0x99,0x41,0x5d,0x9c,
- 0x99,0x43,0x5e,0x9f,0x99,0x45,0x61,0xa2,0x99,0x47,0x64,0xa5,0x8f,0xca,0xd1,
- 0xe2,0x65,0xeb,0xea,0xea,0x95,0xd3,0xd1,0xd4,0x89,0xcf,0xce,0xd1,0x1d,0x82,
- 0xd0,0xce,0xd0,0x00,0x07,0xd2,0xd0,0xd2,0x00,0xd2,0xd1,0xd2,0x00,0xd3,0xd2,
- 0xd4,0x00,0xb7,0xb7,0xb7,0xff,0x00,0xff,0x00,0xff,0xf4,0xf3,0xf3,0xff,0x00,
- 0x00,0x00,0xff,0x89,0x14,0x2b,0x5e,0xff,0x18,0x15,0x2d,0x60,0xff,0x18,0x2f,
- 0x64,0xff,0x1a,0x31,0x66,0xff,0x1c,0x34,0x69,0xff,0x1f,0x38,0x6e,0xff,0x23,
- 0x3b,0x74,0xff,0x25,0x3e,0x77,0xff,0x27,0x40,0x79,0xff,0x29,0x43,0x7c,0xff,
- 0x2b,0x45,0x7f,0xff,0x2e,0x48,0x82,0xff,0x2f,0x49,0x83,0xff,0x2f,0x48,0x82,
- 0xff,0x31,0x4a,0x86,0xff,0x33,0x4d,0x89,0xff,0x35,0x50,0x8b,0xff,0x37,0x52,
- 0x8e,0xff,0x3a,0x54,0x91,0xff,0x3f,0x58,0x96,0xff,0x40,0x5a,0x98,0xff,0x11,
- 0x11,0x11,0xff,0xfa,0xfa,0xf9,0xff,0xe9,0xe8,0xeb,0xff,0x49,0x49,0x4e,0x3a,
- 0x83,0xff,0xff,0xff,0x00,0x02,0xe1,0xe0,0xe4,0x66,0xfa,0xfa,0xfa,0x66,0x83,
- 0xf9,0xf9,0xf9,0x66,0x06,0xf8,0xf8,0xf9,0x66,0xf8,0xf7,0xf8,0x66,0xf8,0xf7,
- 0xf7,0x66,0xf8,0xf8,0xf8,0x66,0xf8,0xf7,0xf7,0x66,0xf7,0xf7,0xf7,0x66,0x82,
- 0xf7,0xf6,0xf6,0x66,0x03,0xf7,0xf5,0xf6,0x66,0xf6,0xf5,0xf5,0x66,0xf5,0xf5,
- 0xf6,0x66,0x83,0xf5,0xf4,0xf5,0x66,0x02,0xf4,0xf3,0xf4,0x66,0xf4,0xf4,0xf4,
- 0x66,0x82,0xf4,0xf3,0xf3,0x66,0x08,0xf3,0xf3,0xf3,0x66,0xf3,0xf2,0xf3,0x66,
- 0xf3,0xf2,0xf2,0x66,0xf2,0xf2,0xf3,0x66,0xf2,0xf2,0xf2,0x66,0xf2,0xf1,0xf2,
- 0x66,0xf2,0xf1,0xf1,0x66,0xf2,0xf0,0xf1,0x66,0x82,0xf1,0xf0,0xf1,0x66,0x04,
- 0xf1,0xf0,0xf0,0x66,0xf1,0xef,0xf1,0x66,0xf1,0xf0,0xf0,0x66,0xf0,0xf0,0xf0,
- 0x66,0x82,0x00,0xff,0x00,0x66,0x03,0xf0,0xef,0xef,0x66,0xf0,0xef,0xf0,0x66,
- 0xcd,0xcb,0xcc,0x66,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,
- 0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x1e,0xd7,0xd5,0xd7,0x00,0xd4,0xd1,
- 0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,
- 0xd1,0xd5,0x01,0xcd,0xcc,0xce,0x5f,0xd9,0xd7,0xd8,0x95,0xef,0xee,0xef,0x99,
- 0xf5,0xf4,0xf5,0x99,0xf5,0xf3,0xf2,0xad,0xd6,0xd8,0xde,0x9d,0x65,0x77,0xa1,
- 0x99,0x1a,0x37,0x79,0x99,0x31,0x4c,0x88,0x99,0x34,0x4e,0x8a,0x99,0x36,0x4f,
- 0x8d,0x99,0x38,0x52,0x8f,0x99,0x39,0x54,0x92,0x99,0x3b,0x57,0x95,0x99,0x3e,
- 0x59,0x98,0x99,0x40,0x5b,0x9a,0x99,0x41,0x5d,0x9c,0x99,0x44,0x60,0xa0,0x99,
- 0x45,0x61,0xa1,0x99,0x9a,0xa9,0xcb,0x5f,0xed,0xed,0xed,0x89,0xd4,0xd2,0xd5,
- 0x99,0xcc,0xc9,0xcd,0x44,0xcf,0xce,0xd0,0x05,0x82,0xd0,0xce,0xd0,0x00,0x14,
- 0xd2,0xd0,0xd2,0x00,0xd2,0xd1,0xd2,0x00,0xd3,0xd2,0xd4,0x00,0xb7,0xb7,0xb7,
- 0xff,0x00,0xff,0x00,0xff,0xf3,0xf3,0xf3,0xff,0x00,0x00,0x00,0xff,0x9b,0xbc,
- 0xa4,0xff,0xb3,0xc7,0xbf,0xff,0xc3,0xcb,0xcb,0xff,0xc9,0xcd,0xd4,0xff,0xba,
- 0xce,0xc5,0xff,0xb5,0xca,0xbe,0xff,0xc3,0xc6,0xcd,0xff,0xb9,0xbd,0xc2,0xff,
- 0xcb,0xcf,0xd6,0xff,0xc9,0xcd,0xd4,0xff,0xb5,0xba,0xc1,0xff,0xc5,0xc9,0xd0,
- 0xff,0xc6,0xc9,0xd0,0xff,0x82,0xc6,0xc9,0xd1,0xff,0x82,0xc7,0xca,0xd2,0xff,
- 0x10,0xc7,0xcb,0xd3,0xff,0xc8,0xcb,0xd3,0xff,0xcb,0xcf,0xd8,0xff,0xcd,0xd1,
- 0xd9,0xff,0xc8,0xcb,0xd4,0xff,0xc9,0xcd,0xd5,0xff,0xcf,0xd3,0xdc,0xff,0xce,
- 0xd1,0xda,0xff,0xc9,0xcc,0xd4,0xff,0xc0,0xc5,0xd1,0xff,0x7d,0x85,0x9a,0xff,
- 0x9b,0x9f,0xa7,0xff,0x11,0x11,0x11,0xff,0xfa,0xfa,0xf8,0xff,0xe9,0xe8,0xea,
- 0xff,0x4a,0x49,0x4c,0x3a,0x83,0xff,0xff,0xff,0x00,0x0a,0xe0,0xdf,0xe4,0x66,
- 0xdf,0xdf,0xe3,0x66,0xdf,0xde,0xe2,0x66,0xde,0xde,0xe2,0x66,0xde,0xdc,0xe1,
- 0x66,0xdd,0xdc,0xe1,0x66,0xdd,0xdc,0xe0,0x66,0xdc,0xdb,0xdf,0x66,0xdb,0xda,
- 0xde,0x66,0xdb,0xda,0xdd,0x66,0x82,0xda,0xd9,0xdc,0x66,0x01,0xd9,0xd8,0xdb,
- 0x66,0x82,0xd8,0xd7,0xda,0x66,0x0a,0xd7,0xd6,0xd9,0x66,0xd7,0xd6,0xd8,0x66,
- 0xd7,0xd5,0xd7,0x66,0xd6,0xd4,0xd7,0x66,0xd5,0xd4,0xd7,0x66,0xd5,0xd4,0xd6,
- 0x66,0xd4,0xd3,0xd5,0x66,0xd4,0xd2,0xd5,0x66,0xd3,0xd1,0xd4,0x66,0xd2,0xd1,
- 0xd3,0x66,0x82,0xd2,0xd0,0xd2,0x66,0x06,0xd1,0xd0,0xd1,0x66,0xd1,0xcf,0xd0,
- 0x66,0xd1,0xcf,0xd1,0x66,0xd0,0xce,0xd0,0x66,0xcf,0xce,0xcf,0x66,0xd0,0xcd,
- 0xcf,0x66,0x82,0xcf,0xcd,0xce,0x66,0x02,0xce,0xcc,0xce,0x66,0xcd,0xcb,0xcd,
- 0x66,0x82,0xcd,0xcc,0xcd,0x66,0x83,0xcd,0xcb,0xcc,0x66,0x83,0xda,0xd9,0xdd,
- 0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,
- 0x1e,0xd7,0xd6,0xd7,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,
- 0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xcf,0xce,0xcf,0x00,0xcd,
- 0xcb,0xce,0x44,0xd4,0xd3,0xd4,0x90,0xe9,0xe8,0xe9,0x99,0xf5,0xf4,0xf5,0x99,
- 0xf4,0xf3,0xf3,0xaf,0xe4,0xe4,0xe7,0xa4,0x87,0x95,0xb5,0x9b,0x28,0x43,0x82,
- 0x99,0x2e,0x49,0x88,0x99,0x37,0x51,0x8d,0x99,0x38,0x52,0x90,0x99,0x39,0x54,
- 0x92,0x99,0x3d,0x57,0x95,0x99,0x3e,0x59,0x97,0x99,0x40,0x5b,0x9a,0x99,0x43,
- 0x5e,0x9d,0x99,0x44,0x60,0x9f,0x99,0x7a,0x8e,0xbb,0x6d,0xf3,0xf2,0xf2,0x88,
- 0xdb,0xd9,0xda,0x99,0xcf,0xcd,0xcf,0x4b,0xcd,0xca,0xcd,0x07,0xcf,0xce,0xd0,
- 0x00,0x82,0xd0,0xce,0xd0,0x00,0x06,0xd2,0xd0,0xd2,0x00,0xd2,0xd1,0xd2,0x00,
- 0xd3,0xd2,0xd4,0x00,0xb7,0xb7,0xb7,0xff,0xdf,0xdd,0xde,0xff,0xf3,0xf3,0xf2,
- 0xff,0x9e,0x00,0x00,0x00,0xff,0x04,0x11,0x11,0x11,0xff,0xf9,0xf9,0xf9,0xff,
- 0xe9,0xe8,0xea,0xff,0x47,0x49,0x4d,0x3a,0x90,0xff,0xff,0xff,0x00,0x01,0x89,
- 0x89,0x89,0x66,0x82,0x89,0x88,0x89,0x66,0x04,0x88,0x88,0x89,0x66,0x89,0x89,
- 0x89,0x66,0x89,0x89,0x88,0x66,0x88,0x89,0x88,0x66,0x82,0x89,0x89,0x88,0x66,
- 0x05,0x88,0x89,0x89,0x66,0x89,0x89,0x89,0x66,0x89,0x89,0x88,0x66,0x89,0x89,
- 0x89,0x66,0x89,0x89,0x88,0x66,0x82,0x88,0x89,0x89,0x66,0x87,0xff,0xff,0xff,
- 0x00,0x01,0xe0,0xdf,0xe4,0x00,0x82,0xde,0xde,0xe3,0x00,0x03,0xdc,0xda,0xdf,
- 0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,0xda,0xd9,0xdd,0x00,0x02,
- 0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x1c,0xd7,
- 0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,0xd3,0x00,
- 0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xcf,0xce,0xcf,0x00,0x89,0x89,0x89,
- 0x99,0x9b,0x9a,0x9b,0xab,0xb8,0xb6,0xb7,0xd0,0xc9,0xc8,0xc9,0xd6,0xe1,0xe0,
- 0xe0,0xba,0xf2,0xf2,0xf1,0xa8,0xed,0xec,0xec,0xa8,0xa8,0xb1,0xc6,0x9c,0x3d,
- 0x56,0x8f,0x99,0x29,0x45,0x86,0x99,0x39,0x52,0x90,0x99,0x3b,0x55,0x93,0x99,
- 0x3d,0x57,0x95,0x99,0x3e,0x59,0x98,0x99,0x40,0x5b,0x9a,0x99,0x43,0x5e,0x9d,
- 0x99,0x4b,0x65,0xa3,0x74,0xf3,0xf3,0xf3,0x67,0xdf,0xde,0xdf,0x99,0xcc,0xca,
- 0xcb,0x6a,0xcd,0xcb,0xcd,0x11,0x87,0xce,0xcd,0xcf,0x00,0x03,0xb7,0xb7,0xb7,
- 0xff,0xe0,0xdf,0xe0,0xff,0xf7,0xf6,0xf7,0xff,0x9f,0xeb,0xeb,0xeb,0xff,0x03,
- 0xfc,0xfc,0xfc,0xff,0xe9,0xe9,0xeb,0xff,0x43,0x45,0x49,0x3b,0x90,0xff,0xff,
- 0xff,0x00,0x03,0x88,0x89,0x88,0x66,0x89,0x89,0x89,0x66,0x89,0x88,0x88,0x66,
- 0x82,0x89,0x89,0x88,0x66,0x84,0x89,0x89,0x89,0x66,0x07,0x88,0x89,0x89,0x66,
- 0x89,0x88,0x89,0x66,0x89,0x89,0x89,0x66,0x89,0x89,0x88,0x66,0x88,0x88,0x89,
- 0x66,0x88,0x89,0x89,0x66,0x89,0x89,0x89,0x66,0x87,0xff,0xff,0xff,0x00,0x01,
- 0xe0,0xdf,0xe4,0x00,0x82,0xde,0xde,0xe3,0x00,0x03,0xdc,0xda,0xdf,0x00,0xda,
- 0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,
- 0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x1b,0xd7,0xd6,0xd8,
- 0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,
- 0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xcf,0xce,0xcf,0x00,0x88,0x89,0x88,0x99,0x89,
- 0x89,0x89,0x99,0x93,0x92,0x92,0xa2,0xb2,0xb1,0xb3,0xca,0xc5,0xc4,0xc4,0xd6,
- 0xd9,0xd8,0xd9,0xc8,0xf0,0xee,0xee,0xa4,0xf2,0xf1,0xf0,0xaa,0xc3,0xc8,0xd5,
- 0x9b,0x5a,0x6f,0xa0,0x99,0x30,0x4c,0x8f,0x99,0x3b,0x55,0x93,0x99,0x3c,0x57,
- 0x96,0x99,0x3e,0x59,0x98,0x99,0x41,0x5c,0x9b,0x99,0x4b,0x66,0xa1,0x85,0xe7,
- 0xe9,0xef,0x6d,0xe5,0xe3,0xe5,0x99,0xd0,0xce,0xcf,0x75,0xce,0xcc,0xcd,0x14,
- 0x88,0xce,0xcd,0xcf,0x00,0x04,0xb7,0xb7,0xb7,0xff,0xd6,0xd4,0xd5,0xff,0xe1,
- 0xdf,0xe0,0xff,0xdf,0xdd,0xde,0xff,0x83,0xdf,0xde,0xde,0xff,0x03,0xdf,0xdd,
- 0xdf,0xff,0xdf,0xde,0xdf,0xff,0xe0,0xde,0xdf,0xff,0x83,0xe0,0xdf,0xe0,0xff,
- 0x01,0xe1,0xe0,0xe0,0xff,0x83,0xe1,0xe0,0xe1,0xff,0x83,0xe2,0xe0,0xe2,0xff,
- 0x82,0xe3,0xe2,0xe2,0xff,0x01,0xe3,0xe1,0xe4,0xff,0x82,0xe4,0xe3,0xe4,0xff,
- 0x04,0xe4,0xe4,0xe5,0xff,0xe5,0xe4,0xe5,0xff,0xe5,0xe3,0xe5,0xff,0xe4,0xe4,
- 0xe6,0xff,0x82,0xe6,0xe4,0xe6,0xff,0x06,0xe6,0xe5,0xe7,0xff,0xe7,0xe6,0xe7,
- 0xff,0xe7,0xe5,0xe8,0xff,0xe8,0xe7,0xe9,0xff,0xe0,0xdf,0xe1,0xff,0x50,0x50,
- 0x55,0x36,0x90,0xff,0xff,0xff,0x00,0x02,0x9e,0x9e,0x9e,0x66,0x9e,0x9d,0x9d,
- 0x66,0x82,0x9e,0x9d,0x9e,0x66,0x04,0x9d,0x9d,0x9e,0x66,0x9d,0x9e,0x9e,0x66,
- 0x9e,0x9e,0x9d,0x66,0x9d,0x9e,0x9d,0x66,0x82,0x9e,0x9e,0x9e,0x66,0x03,0x9e,
- 0x9e,0x9d,0x66,0x9e,0x9e,0x9e,0x66,0x9e,0x9d,0x9e,0x66,0x82,0x9e,0x9e,0x9e,
- 0x66,0x01,0x9e,0x9d,0x9e,0x66,0x87,0xff,0xff,0xff,0x00,0x01,0xe0,0xdf,0xe4,
- 0x00,0x82,0xde,0xde,0xe3,0x00,0x03,0xdc,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,
- 0xdb,0xda,0xde,0x00,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,
- 0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x1b,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,
- 0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,
- 0xd1,0xd5,0x00,0xcf,0xce,0xcf,0x00,0x9e,0x9e,0x9e,0x99,0x9e,0x9d,0x9d,0x99,
- 0x9e,0x9d,0x9e,0x99,0xa0,0x9f,0xa0,0x9b,0xb4,0xb4,0xb5,0xc0,0xc6,0xc5,0xc6,
- 0xd5,0xd9,0xd7,0xd8,0xd1,0xec,0xea,0xeb,0xa8,0xf5,0xf2,0xf3,0xaa,0xbd,0xc1,
- 0xcd,0x9d,0x4a,0x5f,0x91,0x99,0x33,0x4f,0x93,0x99,0x3c,0x57,0x95,0x99,0x3f,
- 0x59,0x99,0x99,0x41,0x5c,0x9b,0x8e,0xbc,0xc0,0xcc,0x79,0xe8,0xe7,0xe8,0x91,
- 0xd0,0xce,0xd0,0x92,0xcc,0xc9,0xcb,0x2e,0xcf,0xcd,0xcd,0x01,0x8e,0xce,0xcd,
- 0xcf,0x00,0x84,0xff,0xff,0xff,0x00,0x01,0x89,0x89,0x89,0xff,0x82,0x89,0x88,
- 0x89,0xff,0x04,0x88,0x88,0x89,0xff,0x89,0x89,0x89,0xff,0x89,0x89,0x88,0xff,
- 0x88,0x89,0x88,0xff,0x82,0x89,0x89,0x88,0xff,0x05,0x88,0x89,0x89,0xff,0x89,
- 0x89,0x89,0xff,0x89,0x89,0x88,0xff,0x89,0x89,0x89,0xff,0x89,0x89,0x88,0xff,
- 0x82,0x88,0x89,0x89,0xff,0x9b,0xff,0xff,0xff,0x00,0x08,0xbd,0xbc,0xbc,0x66,
- 0xbc,0xbc,0xbd,0x66,0xbc,0xbb,0xbc,0x66,0xbc,0xbc,0xbc,0x66,0xbc,0xbb,0xbc,
- 0x66,0xbd,0xbc,0xbc,0x66,0xbc,0xbc,0xbc,0x66,0xbd,0xbc,0xbc,0x66,0x83,0xbc,
- 0xbc,0xbc,0x66,0x01,0xbd,0xbc,0xbc,0x66,0x84,0xbc,0xbc,0xbc,0x66,0x87,0xff,
- 0xff,0xff,0x00,0x01,0xe0,0xdf,0xe4,0x00,0x82,0xde,0xde,0xe3,0x00,0x03,0xdc,
- 0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,0xda,0xd9,0xdd,
- 0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,
- 0x1b,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd1,0xd4,0x00,0xd2,0xd1,
- 0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xcf,0xce,0xcf,0x00,0xbd,
- 0xbc,0xbc,0x99,0xbc,0xbc,0xbd,0x99,0xbc,0xbb,0xbc,0x99,0xbc,0xbc,0xbc,0x99,
- 0xbc,0xbb,0xbc,0x99,0xc3,0xc1,0xc2,0xb5,0xcb,0xca,0xca,0xd3,0xec,0xd9,0xec,
- 0xd5,0x3c,0xf3,0x3c,0xb6,0xab,0xeb,0xac,0xac,0x9e,0xa0,0xb2,0xa3,0x73,0x81,
- 0xa1,0x9a,0x38,0x54,0x95,0x99,0x3c,0x57,0x98,0x94,0xae,0xb6,0xc9,0x87,0xdd,
- 0xde,0xdd,0xcf,0xd4,0xd3,0xd4,0x94,0xcc,0xca,0xcb,0x33,0xcd,0xcb,0xcc,0x02,
- 0xcf,0xcc,0xcd,0x00,0x8e,0xce,0xcd,0xcf,0x00,0x84,0xff,0xff,0xff,0x00,0x03,
- 0x88,0x89,0x88,0xff,0x89,0x89,0x89,0xff,0x89,0x88,0x88,0xff,0x82,0x89,0x89,
- 0x88,0xff,0x84,0x89,0x89,0x89,0xff,0x07,0x88,0x89,0x89,0xff,0x89,0x88,0x89,
- 0xff,0x89,0x89,0x89,0xff,0x89,0x89,0x88,0xff,0x88,0x88,0x89,0xff,0x88,0x89,
- 0x89,0xff,0x89,0x89,0x89,0xff,0x9b,0xff,0xff,0xff,0x00,0x82,0xdb,0xdb,0xda,
- 0x66,0x82,0xdb,0xda,0xdb,0x66,0x01,0xdb,0xdb,0xdb,0x66,0x82,0xdb,0xda,0xdb,
- 0x66,0x03,0xdb,0xdb,0xdb,0x66,0xdc,0xda,0xda,0x66,0xdb,0xdb,0xda,0x66,0x82,
- 0xdb,0xda,0xdb,0x66,0x82,0xdb,0xdb,0xdb,0x66,0x82,0xdb,0xda,0xdb,0x66,0x87,
- 0xff,0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,0xdf,0xde,0xe3,0x00,0xde,0xde,
- 0xe3,0x00,0xdc,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,
- 0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,
- 0xd5,0xd8,0x00,0x07,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd1,0xd4,
- 0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xcf,0xce,
- 0xcf,0x00,0x82,0xdb,0xdb,0xda,0x99,0x82,0xdb,0xda,0xdb,0x99,0x10,0xdb,0xdb,
- 0xdb,0x99,0xdb,0xda,0xdb,0x99,0xd7,0xd5,0xd6,0xac,0xd2,0xd1,0xd2,0xcf,0xf4,
- 0xde,0xf2,0xd6,0x4b,0xf5,0x4a,0xc3,0xa5,0xea,0xa7,0xaa,0xd3,0xce,0xd1,0xa8,
- 0x87,0x91,0xa7,0x99,0x9d,0xa7,0xc3,0x89,0xe7,0xe6,0xe8,0xca,0xd9,0xd7,0xd8,
- 0xd6,0xca,0xc8,0xc9,0x55,0xcc,0xca,0xcb,0x0a,0xcd,0xcb,0xcc,0x00,0xcf,0xcc,
- 0xcd,0x00,0x8e,0xce,0xcd,0xcf,0x00,0x84,0xff,0xff,0xff,0x00,0x02,0x9e,0x9e,
- 0x9e,0xff,0x9e,0x9d,0x9d,0xff,0x82,0x9e,0x9d,0x9e,0xff,0x04,0x9d,0x9d,0x9e,
- 0xff,0x9d,0x9e,0x9e,0xff,0x9e,0x9e,0x9d,0xff,0x9d,0x9e,0x9d,0xff,0x82,0x9e,
- 0x9e,0x9e,0xff,0x03,0x9e,0x9e,0x9d,0xff,0x9e,0x9e,0x9e,0xff,0x9e,0x9d,0x9e,
- 0xff,0x82,0x9e,0x9e,0x9e,0xff,0x01,0x9e,0x9d,0x9e,0xff,0x97,0xff,0xff,0xff,
- 0x00,0x01,0xac,0xac,0xac,0x66,0x96,0xf0,0xef,0xf0,0x66,0x01,0xac,0xac,0xac,
- 0x66,0x83,0xff,0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,0xdf,0xde,0xe3,0x00,
- 0xde,0xdf,0xe3,0x00,0xdc,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,
- 0x00,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,
- 0x82,0xd6,0xd5,0xd8,0x00,0x04,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,
- 0xd0,0xd4,0x00,0xac,0xac,0xac,0x99,0x8a,0xf0,0xef,0xf0,0x99,0x0a,0xea,0xe9,
- 0xea,0xa3,0xd8,0xd7,0xd9,0xcb,0xe1,0xe0,0xe1,0xd6,0xf1,0xf0,0xf1,0xcd,0xef,
- 0xef,0xef,0xa9,0xe3,0xe2,0xe1,0xaa,0xf3,0xf1,0xf3,0xc9,0xe3,0xe2,0xe3,0xd6,
- 0xdd,0xdc,0xdd,0xc1,0xec,0xeb,0xec,0x9f,0x82,0xf0,0xef,0xf0,0x99,0x01,0xac,
- 0xac,0xac,0x99,0x8e,0xce,0xcb,0xcd,0x00,0x84,0xff,0xff,0xff,0x00,0x08,0xbd,
- 0xbc,0xbc,0xff,0xbc,0xbc,0xbd,0xff,0xbc,0xbb,0xbc,0xff,0xbc,0xbc,0xbc,0xff,
- 0xbc,0xbb,0xbc,0xff,0xbd,0xbc,0xbc,0xff,0xbc,0xbc,0xbc,0xff,0xbd,0xbc,0xbc,
- 0xff,0x83,0xbc,0xbc,0xbc,0xff,0x01,0xbd,0xbc,0xbc,0xff,0x84,0xbc,0xbc,0xbc,
- 0xff,0x97,0xff,0xff,0xff,0x00,0x02,0xac,0xac,0xac,0x66,0xd7,0xd7,0xd7,0x66,
- 0x94,0xff,0xff,0xff,0x66,0x02,0xd7,0xd7,0xd7,0x66,0xac,0xac,0xac,0x66,0x83,
- 0xff,0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,0xdf,0xde,0xe3,0x00,0xde,0xdf,
- 0xe3,0x00,0xdc,0xda,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,
- 0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,
- 0xd5,0xd8,0x00,0x05,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd0,0xd4,
- 0x00,0xac,0xac,0xac,0x99,0xd7,0xd7,0xd7,0x99,0x8a,0xff,0xff,0xff,0x99,0x08,
- 0xfc,0xfc,0xfc,0x9c,0xe3,0xe2,0xe3,0xc1,0xe1,0xe0,0xe0,0xd5,0xf2,0xf1,0xf1,
- 0xd5,0xf8,0xf6,0xf8,0xd6,0xea,0xe9,0xeb,0xd6,0xe1,0xdf,0xe0,0xca,0xf7,0xf6,
- 0xf6,0xa3,0x82,0xff,0xff,0xff,0x99,0x02,0xd7,0xd7,0xd7,0x99,0xac,0xac,0xac,
- 0x99,0x8e,0xce,0xcb,0xcd,0x00,0x84,0xff,0xff,0xff,0x00,0x82,0xdb,0xdb,0xda,
- 0xff,0x82,0xdb,0xda,0xdb,0xff,0x01,0xdb,0xdb,0xdb,0xff,0x82,0xdb,0xda,0xdb,
- 0xff,0x03,0xdb,0xdb,0xdb,0xff,0xdc,0xda,0xda,0xff,0xdb,0xdb,0xda,0xff,0x82,
- 0xdb,0xda,0xdb,0xff,0x82,0xdb,0xdb,0xdb,0xff,0x82,0xdb,0xda,0xdb,0xff,0xb2,
- 0xff,0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,0xdf,0xde,0xe3,0x00,0xde,0xdf,
- 0xe3,0x00,0xdc,0xdb,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,
- 0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,
- 0xd5,0xd8,0x00,0x0e,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd0,0xd4,
- 0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xd0,0xce,
- 0xd0,0x00,0xce,0xcc,0xce,0x00,0xce,0xcd,0xce,0x00,0xcf,0xcd,0xce,0x00,0xcf,
- 0xcd,0xd0,0x00,0xcf,0xce,0xd0,0x00,0xcd,0xca,0xcc,0x00,0xcc,0xc9,0xcb,0x00,
- 0x82,0xcc,0xca,0xcc,0x00,0x08,0xcd,0xcc,0xcd,0x00,0xc9,0xc7,0xc8,0x49,0xd2,
- 0xd0,0xd0,0x91,0xe0,0xde,0xe0,0x99,0xd2,0xd0,0xd1,0x85,0xcb,0xc9,0xca,0x2c,
- 0xcc,0xca,0xcb,0x00,0xcd,0xcb,0xcc,0x00,0x91,0xce,0xcb,0xcd,0x00,0x01,0xac,
- 0xac,0xac,0xff,0x96,0xf0,0xef,0xf0,0xff,0x01,0xac,0xac,0xac,0xff,0xae,0xff,
- 0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,0xdf,0xde,0xe3,0x00,0xde,0xde,0xe3,
- 0x00,0xdc,0xdb,0xdf,0x00,0xda,0xd9,0xde,0x00,0xdb,0xda,0xde,0x00,0x83,0xda,
- 0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,
- 0xd8,0x00,0x0e,0xd7,0xd6,0xd8,0x00,0xd4,0xd1,0xd5,0x00,0xd2,0xd0,0xd4,0x00,
- 0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,0xd4,0xd1,0xd5,0x00,0xd0,0xce,0xd0,
- 0x00,0xce,0xcc,0xce,0x00,0xce,0xcd,0xce,0x00,0xcf,0xcd,0xce,0x00,0xcf,0xcd,
- 0xd0,0x00,0xcf,0xce,0xd0,0x00,0xcd,0xcb,0xcc,0x00,0xcc,0xc9,0xcb,0x00,0x82,
- 0xcc,0xca,0xcc,0x00,0x08,0xcd,0xcc,0xcd,0x00,0xca,0xc9,0xca,0x00,0xc8,0xc6,
- 0xc7,0x33,0xce,0xcc,0xcd,0x89,0xcd,0xcb,0xcc,0x41,0xcb,0xc9,0xca,0x01,0xcc,
- 0xca,0xcb,0x00,0xcd,0xcb,0xcc,0x00,0x91,0xce,0xcb,0xcd,0x00,0x02,0xac,0xac,
- 0xac,0xff,0xd7,0xd7,0xd7,0xff,0x94,0xff,0xff,0xff,0xff,0x02,0xd7,0xd7,0xd7,
- 0xff,0xac,0xac,0xac,0xff,0xae,0xff,0xff,0xff,0x00,0x06,0xe0,0xdf,0xe4,0x00,
- 0xdf,0xde,0xe3,0x00,0xde,0xde,0xe3,0x00,0xdc,0xdb,0xdf,0x00,0xda,0xd9,0xde,
- 0x00,0xdb,0xda,0xde,0x00,0x83,0xda,0xd9,0xdd,0x00,0x02,0xd7,0xd6,0xd9,0x00,
- 0xd5,0xd4,0xd7,0x00,0x82,0xd6,0xd5,0xd8,0x00,0x0e,0xd7,0xd6,0xd8,0x00,0xd4,
- 0xd2,0xd5,0x00,0xd2,0xd0,0xd4,0x00,0xd2,0xd1,0xd3,0x00,0xd3,0xd1,0xd4,0x00,
- 0xd4,0xd1,0xd5,0x00,0xd0,0xce,0xd0,0x00,0xce,0xcc,0xce,0x00,0xce,0xcd,0xce,
- 0x00,0xcf,0xcd,0xce,0x00,0xcf,0xcd,0xd0,0x00,0xcf,0xce,0xd0,0x00,0xcd,0xcb,
- 0xcc,0x00,0xcc,0xc9,0xcb,0x00,0x82,0xcc,0xca,0xcc,0x00,0x05,0xcd,0xcc,0xcd,
- 0x00,0xca,0xc9,0xca,0x00,0xc8,0xc6,0xc7,0x00,0xcb,0xc9,0xc9,0x22,0xcd,0xcb,
- 0xcb,0x11,0x94,0xcd,0xcb,0xcc,0x00,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,
- 0xff,0x00,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,
- 0xff,0x00,0x91,0xff,0xff,0xff,0x00
-};
-
-static const GdkPixdata rotation_pixdata = {
- 0x47646b50, /* Pixbuf magic: 'GdkP' */
- 24 + 19987, /* header length + pixel_data length */
- 0x2010002, /* pixdata_type */
- 496, /* rowstride */
- 124, /* width */
- 60, /* height */
- rotation_pixdata_pixel_data /* pixel_data */
-};
diff --git a/src/image_data/src.mk b/src/image_data/src.mk
deleted file mode 100644
index 52c10e1..0000000
--- a/src/image_data/src.mk
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-# files in the src/image_data directory of nvidia-settings
-#
-
-IMAGE_DATA_SRC +=
-
-IMAGE_DATA_EXTRA_DIST += HOWTO-ADD-IMAGES
-IMAGE_DATA_EXTRA_DIST += antialias.png
-IMAGE_DATA_EXTRA_DIST += antialias_pixdata.h
-IMAGE_DATA_EXTRA_DIST += background.png
-IMAGE_DATA_EXTRA_DIST += background_pixdata.h
-IMAGE_DATA_EXTRA_DIST += background_tall.png
-IMAGE_DATA_EXTRA_DIST += background_tall_pixdata.h
-IMAGE_DATA_EXTRA_DIST += bnc_cable.png
-IMAGE_DATA_EXTRA_DIST += bnc_cable_pixdata.h
-IMAGE_DATA_EXTRA_DIST += bsd.png
-IMAGE_DATA_EXTRA_DIST += bsd_pixdata.h
-IMAGE_DATA_EXTRA_DIST += clock.png
-IMAGE_DATA_EXTRA_DIST += clock_pixdata.h
-IMAGE_DATA_EXTRA_DIST += color.png
-IMAGE_DATA_EXTRA_DIST += color_pixdata.h
-IMAGE_DATA_EXTRA_DIST += config.png
-IMAGE_DATA_EXTRA_DIST += config_pixdata.h
-IMAGE_DATA_EXTRA_DIST += crt.png
-IMAGE_DATA_EXTRA_DIST += crt_pixdata.h
-IMAGE_DATA_EXTRA_DIST += cursor_shadow.png
-IMAGE_DATA_EXTRA_DIST += cursor_shadow_pixdata.h
-IMAGE_DATA_EXTRA_DIST += dfp.png
-IMAGE_DATA_EXTRA_DIST += dfp_pixdata.h
-IMAGE_DATA_EXTRA_DIST += display_config.png
-IMAGE_DATA_EXTRA_DIST += display_config_pixdata.h
-IMAGE_DATA_EXTRA_DIST += framelock.png
-IMAGE_DATA_EXTRA_DIST += framelock_pixdata.h
-IMAGE_DATA_EXTRA_DIST += glx.png
-IMAGE_DATA_EXTRA_DIST += glx_pixdata.h
-IMAGE_DATA_EXTRA_DIST += gpu.png
-IMAGE_DATA_EXTRA_DIST += gpu_pixdata.h
-IMAGE_DATA_EXTRA_DIST += gvi.png
-IMAGE_DATA_EXTRA_DIST += gvi_pixdata.h
-IMAGE_DATA_EXTRA_DIST += help.png
-IMAGE_DATA_EXTRA_DIST += help_pixdata.h
-IMAGE_DATA_EXTRA_DIST += led_green.png
-IMAGE_DATA_EXTRA_DIST += led_green_pixdata.h
-IMAGE_DATA_EXTRA_DIST += led_grey.png
-IMAGE_DATA_EXTRA_DIST += led_grey_pixdata.h
-IMAGE_DATA_EXTRA_DIST += led_red.png
-IMAGE_DATA_EXTRA_DIST += led_red_pixdata.h
-IMAGE_DATA_EXTRA_DIST += logo.png
-IMAGE_DATA_EXTRA_DIST += logo_pixdata.h
-IMAGE_DATA_EXTRA_DIST += logo_tall.png
-IMAGE_DATA_EXTRA_DIST += logo_tall_pixdata.h
-IMAGE_DATA_EXTRA_DIST += nvidia_icon.png
-IMAGE_DATA_EXTRA_DIST += nvidia_icon_pixdata.h
-IMAGE_DATA_EXTRA_DIST += opengl.png
-IMAGE_DATA_EXTRA_DIST += opengl_pixdata.h
-IMAGE_DATA_EXTRA_DIST += penguin.png
-IMAGE_DATA_EXTRA_DIST += penguin_pixdata.h
-IMAGE_DATA_EXTRA_DIST += png_to_c_header.sh
-IMAGE_DATA_EXTRA_DIST += rj45_input.png
-IMAGE_DATA_EXTRA_DIST += rj45_input_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rj45_output.png
-IMAGE_DATA_EXTRA_DIST += rj45_output_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rj45_unused.png
-IMAGE_DATA_EXTRA_DIST += rj45_unused_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotate_left_off.png
-IMAGE_DATA_EXTRA_DIST += rotate_left_off_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotate_left_on.png
-IMAGE_DATA_EXTRA_DIST += rotate_left_on_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotate_right_off.png
-IMAGE_DATA_EXTRA_DIST += rotate_right_off_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotate_right_on.png
-IMAGE_DATA_EXTRA_DIST += rotate_right_on_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotation.png
-IMAGE_DATA_EXTRA_DIST += rotation_orientation_horz.png
-IMAGE_DATA_EXTRA_DIST += rotation_orientation_horz_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotation_orientation_vert.png
-IMAGE_DATA_EXTRA_DIST += rotation_orientation_vert_pixdata.h
-IMAGE_DATA_EXTRA_DIST += rotation_pixdata.h
-IMAGE_DATA_EXTRA_DIST += sdi.png
-IMAGE_DATA_EXTRA_DIST += sdi_pixdata.h
-IMAGE_DATA_EXTRA_DIST += sdi_shared_sync_bnc.png
-IMAGE_DATA_EXTRA_DIST += sdi_shared_sync_bnc_pixdata.h
-IMAGE_DATA_EXTRA_DIST += slimm.png
-IMAGE_DATA_EXTRA_DIST += slimm_pixdata.h
-IMAGE_DATA_EXTRA_DIST += solaris.png
-IMAGE_DATA_EXTRA_DIST += solaris_pixdata.h
-IMAGE_DATA_EXTRA_DIST += src.mk
-IMAGE_DATA_EXTRA_DIST += svp_3dvp.png
-IMAGE_DATA_EXTRA_DIST += svp_3dvp_pixdata.h
-IMAGE_DATA_EXTRA_DIST += thermal.png
-IMAGE_DATA_EXTRA_DIST += thermal_pixdata.h
-IMAGE_DATA_EXTRA_DIST += tv.png
-IMAGE_DATA_EXTRA_DIST += tv_pixdata.h
-IMAGE_DATA_EXTRA_DIST += vcs.png
-IMAGE_DATA_EXTRA_DIST += vcs_pixdata.h
-IMAGE_DATA_EXTRA_DIST += x.png
-IMAGE_DATA_EXTRA_DIST += x_pixdata.h
-IMAGE_DATA_EXTRA_DIST += xvideo.png
-IMAGE_DATA_EXTRA_DIST += xvideo_pixdata.h
diff --git a/src/libXNVCtrl/Makefile b/src/libXNVCtrl/Makefile
index 15b03cc..d40ec01 100644
--- a/src/libXNVCtrl/Makefile
+++ b/src/libXNVCtrl/Makefile
@@ -22,2 +22,3 @@
RANLIB ?= ranlib
+CFLAGS += -fPIC
diff --git a/src/libXNVCtrl/NVCtrl.h b/src/libXNVCtrl/NVCtrl.h
index b04a21d..dbefc6e 100644
--- a/src/libXNVCtrl/NVCtrl.h
+++ b/src/libXNVCtrl/NVCtrl.h
@@ -140,14 +140,3 @@
/*
- * NV_CTRL_FLATPANEL_SCALING - the current flat panel scaling state;
- * possible values are:
- *
- * 0: default (the driver will use whatever state is current)
- * 1: native (the driver will use the panel's scaler, if possible)
- * 2: scaled (the driver will use the GPU's scaler, if possible)
- * 3: centered (the driver will center the image)
- * 4: aspect scaled (scale with the GPU's scaler, but keep the aspect
- * ratio correct)
- *
- * USAGE NOTE: This attribute has been deprecated in favor of the new
- * NV_CTRL_GPU_SCALING attribute.
+ * NV_CTRL_FLATPANEL_SCALING - not supported
*/
@@ -298,3 +287,5 @@
#define NV_CTRL_FSAA_MODE_32xS 13
-#define NV_CTRL_FSAA_MODE_MAX NV_CTRL_FSAA_MODE_32xS
+#define NV_CTRL_FSAA_MODE_32x 14
+#define NV_CTRL_FSAA_MODE_64xS 15
+#define NV_CTRL_FSAA_MODE_MAX NV_CTRL_FSAA_MODE_64xS
@@ -725,8 +716,7 @@
* NV_CTRL_TEXTURE_CLAMPING - texture clamping mode in OpenGL. By
- * default, NVIDIA's OpenGL implementation uses CLAMP_TO_EDGE, which
- * is not strictly conformant, but some applications rely on the
- * non-conformant behavior, and not all GPUs support conformant
- * texture clamping in hardware. _SPEC forces OpenGL texture clamping
- * to be conformant, but may introduce slower performance on older
- * GPUS, or incorrect texture clamping in certain applications.
+ * default, _SPEC is used, which forces OpenGL texture clamping to
+ * conform with the OpenGL specification. _EDGE forces NVIDIA's
+ * OpenGL implementation to remap GL_CLAMP to GL_CLAMP_TO_EDGE,
+ * which is not strictly conformant, but some applications rely on
+ * the non-conformant behavior.
*/
@@ -939,6 +929,5 @@
*
- * - if, rather than using the GLX_NV_video_out extension to display
- * GLX pbuffers on the GVO output, you wish display the X screen on
- * the GVO output, set NV_CTRL_GVO_DISPLAY_X_SCREEN to
- * NV_CTRL_GVO_DISPLAY_X_SCREEN_ENABLE.
+ * - if using the GLX_NV_present_video extension, call
+ * glXBindVideoDeviceNV() to bind the GVO video device to current
+ * OpenGL context.
*
@@ -946,11 +935,14 @@
* cached in the X server. The values will be flushed to the hardware
- * either when NV_CTRL_GVO_DISPLAY_X_SCREEN is enabled, or when a GLX
- * pbuffer is bound to the GVO output (with glXBindVideoImageNV()).
+ * either when the next MetaMode is set that uses the GVO display
+ * device, or when a GLX pbuffer is bound to the GVO output (with
+ * glXBindVideoImageNV()).
*
- * Note that GLX_NV_video_out and NV_CTRL_GVO_DISPLAY_X_SCREEN are
- * mutually exclusive. If NV_CTRL_GVO_DISPLAY_X_SCREEN is enabled,
- * then glXGetVideoDeviceNV will fail. Similarly, if a GLX client has
- * locked the GVO output (via glXGetVideoDeviceNV), then
- * NV_CTRL_GVO_DISPLAY_X_SCREEN will fail. The NV_CTRL_GVO_GLX_LOCKED
- * event will be sent when a GLX client locks the GVO output.
+ * Note that GLX_NV_video_out/GLX_NV_present_video and X screen use
+ * are mutually exclusive. If a MetaMode is currently using the GVO
+ * device, then glXGetVideoDeviceNV and glXBindVideoImageNV() will
+ * fail. Similarly, if a GLX client has locked the GVO output (via
+ * glXGetVideoDeviceNV or glXBindVideoImageNV), then setting a
+ * MetaMode that uses the GVO device will fail. The
+ * NV_CTRL_GVO_GLX_LOCKED event will be sent when a GLX client locks
+ * the GVO output.
*
@@ -1217,21 +1209,3 @@
/*
- * NV_CTRL_GVO_DISPLAY_X_SCREEN - enable/disable GVO output of the X
- * screen (in Clone mode). At this point, all the GVO attributes that
- * have been cached in the X server are flushed to the hardware and GVO is
- * enabled. Note that this attribute can fail to be set if a GLX
- * client has locked the GVO output (via glXGetVideoDeviceNV). Note
- * that due to the inherit race conditions in this locking strategy,
- * NV_CTRL_GVO_DISPLAY_X_SCREEN can fail unexpectantly. In the
- * failing situation, X will not return an X error. Instead, you
- * should query the value of NV_CTRL_GVO_DISPLAY_X_SCREEN after
- * setting it to confirm that the setting was applied.
- *
- * NOTE: This attribute is related to the NV_CTRL_GVO_LOCK_OWNER
- * attribute. When NV_CTRL_GVO_DISPLAY_X_SCREEN is enabled,
- * the GVO device will be locked by NV_CTRL_GVO_LOCK_OWNER_CLONE.
- * see NV_CTRL_GVO_LOCK_OWNER for detais.
- *
- * NOTE: This attribute is deprecated and will be removed in a future release.
- * To display an X screen over GVO, it is recommended to instead
- * configure GVO via MetaModes.
+ * NV_CTRL_GVO_DISPLAY_X_SCREEN - no longer supported
*/
@@ -1335,7 +1309,8 @@
/*
- * NV_CTRL_GVO_GLX_LOCKED - indicates that GVO configurability is locked by
- * GLX; this occurs when the GLX_NV_video_out function calls
- * glXGetVideoDeviceNV(). All GVO output resources are locked until
- * either glXReleaseVideoDeviceNV() is called or the X Display used
- * when calling glXGetVideoDeviceNV() is closed.
+ * NV_CTRL_GVO_GLX_LOCKED - indicates that GVO configurability is
+ * locked by GLX; this occurs when either glXGetVideoDeviceNV (part of
+ * GLX_NV_video_out) or glXBindVideoDeviceNV (part of
+ * GLX_NV_present_video) is called. All GVO output resources are
+ * locked until released by the GLX_NV_video_out/GLX_NV_present_video
+ * client.
*
@@ -1385,12 +1360,3 @@
/*
- * NV_CTRL_GVO_X_SCREEN_PAN_[XY] - when GVO output of the X screen is
- * enabled, the pan x/y attributes control which portion of the X
- * screen is displayed by GVO. These attributes can be updated while
- * GVO output is enabled, or before enabling GVO output. The pan
- * values will be clamped so that GVO output is not panned beyond the
- * end of the X screen.
- *
- * NOTE: These attributes are deprecated and will be removed in a future
- * release. To display an X screen over GVO, it is recommended to
- * instead configure GVO via MetaModes.
+ * NV_CTRL_GVO_X_SCREEN_PAN_[XY] - no longer supported
*/
@@ -1915,15 +1881,4 @@
-/*
- * NV_CTRL_GPU_SCALING - Controls what the GPU scales to and how.
- * This attribute is a packed integer; the scaling target (native/best fit)
- * is packed in the upper 16-bits and the scaling method is packed in the
- * lower 16-bits.
- *
- * 'Best fit' scaling will make the GPU scale the frontend (current) mode to
- * the closest larger resolution in the flat panel's EDID and allow the
- * flat panel to do its own scaling to the native resolution.
- *
- * 'Native' scaling will make the GPU scale the frontend (current) mode to
- * the flat panel's native resolution, thus disabling any internal scaling
- * the flat panel might have.
+/*
+ * NV_CTRL_GPU_SCALING - not supported
*/
@@ -1943,7 +1898,3 @@
/*
- * NV_CTRL_FRONTEND_RESOLUTION - Returns the dimensions of the frontend
- * (current) resolution as determined by the NVIDIA X Driver.
- *
- * This attribute is a packed integer; the width is packed in the upper
- * 16-bits and the height is packed in the lower 16-bits.
+ * NV_CTRL_FRONTEND_RESOLUTION - not supported
*/
@@ -1954,11 +1905,3 @@
/*
- * NV_CTRL_BACKEND_RESOLUTION - Returns the dimensions of the
- * backend resolution as determined by the NVIDIA X Driver.
- *
- * The backend resolution is the resolution (supported by the display
- * device) the GPU is set to scale to. If this resolution matches the
- * frontend resolution, GPU scaling will not be needed/used.
- *
- * This attribute is a packed integer; the width is packed in the upper
- * 16-bits and the height is packed in the lower 16-bits.
+ * NV_CTRL_BACKEND_RESOLUTION - not supported
*/
@@ -1988,13 +1931,3 @@
/*
- * NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION - Returns the dimensions of the
- * resolution, selected by the X driver, from the DFP's EDID that most
- * closely matches the frontend resolution of the current mode. The best
- * fit resolution is selected on a per-mode basis.
- * NV_CTRL_GPU_SCALING_TARGET is used to select between
- * NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION and NV_CTRL_NATIVE_RESOLUTION.
- *
- * This attribute is only valid for flat panel (DFP) display devices.
- *
- * This attribute is a packed integer; the width is packed in the upper
- * 16-bits and the height is packed in the lower 16-bits.
+ * NV_CTRL_FLATPANEL_BEST_FIT_RESOLUTION - not supported
*/
@@ -2005,10 +1938,3 @@
/*
- * NV_CTRL_GPU_SCALING_ACTIVE - Returns the current state of
- * GPU scaling. GPU scaling is mode-specific (meaning it may vary
- * depending on which mode is currently set). GPU scaling is active if
- * the frontend timing (current resolution) is different than the target
- * resolution. The target resolution is either the native resolution of
- * the flat panel or the best fit resolution supported by the flat panel.
- * What (and how) the GPU should scale to is controlled through the
- * NV_CTRL_GPU_SCALING attribute.
+ * NV_CTRL_GPU_SCALING_ACTIVE - not supported
*/
@@ -2019,8 +1945,3 @@
/*
- * NV_CTRL_DFP_SCALING_ACTIVE - Returns the current state of
- * DFP scaling. DFP scaling is mode-specific (meaning it may vary
- * depending on which mode is currently set). DFP scaling is active if
- * the GPU is set to scale to the best fit resolution (NV_CTRL_GPU_SCALING
- * is set to NV_CTRL_GPU_SCALING_TARGET_FLATPANEL_BEST_FIT) and the best fit
- * and native resolutions are different.
+ * NV_CTRL_DFP_SCALING_ACTIVE - not supported
*/
@@ -2061,15 +1982,12 @@
* NV_CTRL_GVO_LOCK_OWNER - indicates that the GVO device is available
- * or in use (by GLX, Clone Mode, TwinView etc).
+ * or in use (by GLX or an X screen).
*
- * The GVO device is locked by GLX when the GLX_NV_video_out function
- * calls glXGetVideoDeviceNV(). The GVO device is then unlocked when
- * glXReleaseVideoDeviceNV() is called, or the X Display used when calling
- * glXGetVideoDeviceNV() is closed.
- *
- * The GVO device is locked/unlocked for Clone mode use when the
- * attribute NV_CTRL_GVO_DISPLAY_X_SCREEN is enabled/disabled.
+ * The GVO device is locked by GLX when either glXGetVideoDeviceNV
+ * (part of GLX_NV_video_out) or glXBindVideoDeviceNV (part of
+ * GLX_NV_present_video) is called. All GVO output resources are
+ * locked until released by the GLX_NV_video_out/GLX_NV_present_video
+ * client.
*
- * The GVO device is locked/unlocked by TwinView mode, when the GVO device is
- * associated/unassociated to/from an X screen through the
- * NV_CTRL_ASSOCIATED_DISPLAY_DEVICES attribute directly.
+ * The GVO device is locked/unlocked by an X screen, when the GVO device is
+ * used in a MetaMode on an X screen.
*
@@ -2088,3 +2006,3 @@
#define NV_CTRL_GVO_LOCK_OWNER_GLX 1
-#define NV_CTRL_GVO_LOCK_OWNER_CLONE 2
+#define NV_CTRL_GVO_LOCK_OWNER_CLONE /* no longer supported */ 2
#define NV_CTRL_GVO_LOCK_OWNER_X_SCREEN 3
@@ -2834,12 +2752,3 @@
/*
- * NV_CTRL_OVERSCAN_COMPENSATION - This option specifies the amount of overscan
- * compensation to apply to the current mode. It is measured in raster pixels,
- * i.e. pixels as specified in the current mode's backend timings.
- *
- * This option is similar to NV_CTRL_TV_OVERSCAN, but can be available on
- * display devices other than TVs. It also has semantics that are the opposite
- * of NV_CTRL_TV_OVERSCAN: a higher NV_CTRL_OVERSCAN_COMPENSATION makes the
- * screen smaller instead of bigger. NV_CTRL_OVERSCAN_COMPENSATION and
- * NV_CTRL_TV_OVERSCAN will not be available on the same display device at the
- * same time.
+ * NV_CTRL_OVERSCAN_COMPENSATION - not supported
*/
@@ -2923,10 +2832,5 @@
/*
- * NV_CTRL_GPU_SCALING_DEFAULT_TARGET - Returns the default scaling target
- * for the specified display device.
- *
- * NV_CTRL_GPU_SCALING_DEFAULT_METHOD - Returns the default scaling method
- * for the specified display device.
+ * NV_CTRL_GPU_SCALING_DEFAULT_TARGET - not supported
*
- * The values returned by these attributes are one of the target or method
- * values defined for the attribute NV_CTRL_GPU_SCALING.
+ * NV_CTRL_GPU_SCALING_DEFAULT_METHOD - not supported
*/
@@ -3268,3 +3172,18 @@
-#define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_GVO_AUDIO_BLANKING
+/*
+ * NV_CTRL_CURRENT_METAMODE_ID - switch modes to the MetaMode with
+ * the specified ID.
+ */
+#define NV_CTRL_CURRENT_METAMODE_ID 387 /* RW- */
+
+/*
+ * NV_CTRL_DISPLAY_ENABLED - Returns whether or not the display device
+ * is currently enabled.
+ */
+#define NV_CTRL_DISPLAY_ENABLED 388 /* R-D */
+#define NV_CTRL_DISPLAY_ENABLED_TRUE 1
+#define NV_CTRL_DISPLAY_ENABLED_FALSE 0
+
+
+#define NV_CTRL_LAST_ATTRIBUTE NV_CTRL_DISPLAY_ENABLED
@@ -3406,3 +3325,6 @@
-#define NV_CTRL_STRING_CURRENT_METAMODE 12 /* R--- */
+#define NV_CTRL_STRING_CURRENT_METAMODE 12 /* RW-- */
+#define NV_CTRL_STRING_CURRENT_METAMODE_VERSION_1 \
+ NV_CTRL_STRING_CURRENT_METAMODE
+
@@ -3867,5 +3789,71 @@
+/*
+ * NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 - Returns the metamode currently
+ * being used by the specified X screen. The MetaMode string has the same
+ * syntax as the MetaMode X configuration option, as documented in the NVIDIA
+ * driver README. Also, see NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 for more
+ * details on the base syntax.
+ *
+ * The returned string may also be prepended with a comma-separated list of
+ * "token=value" pairs, separated from the MetaMode string by "::".
+ */
+#define NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2 45 /* RW-- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME - Returns a type name for the
+ * display device ("CRT", "DFP", or "TV"). However, note that the determination
+ * of the name is based on the protocol through which the X driver communicates
+ * to the display device. E.g., if the driver communicates using VGA ,then the
+ * basename is "CRT"; if the driver communicates using TMDS, LVDS, or DP, then
+ * the name is "DFP".
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME 46 /* R-D- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID - Returns the type-based name + ID for
+ * the display device, e.g. "CRT-0", "DFP-1", "TV-2". If this device is a
+ * DisplayPort 1.2 device, then this name will also be prepended with the
+ * device's port address like so: "DFP-1.0.1.2.3". See
+ * NV_CTRL_STRING_DISPLAY_NAME_TYPE_BASENAME for more information about the
+ * construction of type-based names.
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_TYPE_ID 47 /* R-D- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_DP_GUID - Returns the GUID of the DisplayPort
+ * display device. e.g. "DP-GUID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c"
+ *
+ * The display device must be a DisplayPort 1.2 device.
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_DP_GUID 48 /* R-D- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH - Returns the SHA-1 hash of the
+ * display device's EDID in 8-4-4-4-12 UID format. e.g.
+ * "DPY-EDID-f16a5bde-79f3-11e1-b2ae-8b5a8969ba9c"
+ *
+ * The display device must have a valid EDID.
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_EDID_HASH 49 /* R-D- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX - Returns the current NV-CONTROL
+ * target ID (name) of the display device. e.g. "DPY-1", "DPY-4"
+ *
+ * This name for the display device is not guarenteed to be the same between
+ * different runs of the X server.
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_TARGET_INDEX 50 /* R-D- */
+
+/*
+ * NV_CTRL_STRING_DISPLAY_NAME_RANDR - Returns the RandR output name for the
+ * display device. e.g. "VGA-1", "DVI-I-0", "DVI-D-3", "LVDS-1", "DP-2",
+ * "HDMI-3", "eDP-6". This name should match If this device is a DisplayPort
+ * 1.2 device, then this name will also be prepended with the device's port
+ * address like so: "DVI-I-3.0.1.2.3"
+ */
+#define NV_CTRL_STRING_DISPLAY_NAME_RANDR 51 /* R-D- */
#define NV_CTRL_STRING_LAST_ATTRIBUTE \
- NV_CTRL_STRING_3D_VISION_PRO_GLASSES_NAME
+ NV_CTRL_STRING_DISPLAY_NAME_RANDR
@@ -3990,2 +3978,4 @@
#define NV_CTRL_BINARY_DATA_METAMODES 2 /* R-D- */
+#define NV_CTRL_BINARY_DATA_METAMODES_VERSION_1 \
+ NV_CTRL_BINARY_DATA_METAMODES
@@ -4196,5 +4186,38 @@
+/*
+ * NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 - Returns values similar to
+ * NV_CTRL_BINARY_DATA_METAMODES(_VERSION_1) but also returns extended syntax
+ * information to indicate a specific display device, as well as other per-
+ * display deviceflags as "token=value" pairs. For example:
+ *
+ * "DPY-1: 1280x1024 {Stereo=PassiveLeft},
+ * DPY-2: 1280x1024 {Stereo=PassiveRight},"
+ *
+ * The display device names have the form "DPY-%d", where the integer
+ * part of the name is the NV-CONTROL target ID for that display device
+ * for this instance of the X server. Note that display device NV-CONTROL
+ * target IDs are not guaranteed to be the same from one run of the X
+ * server to the next.
+ */
+
+#define NV_CTRL_BINARY_DATA_METAMODES_VERSION_2 16 /* R-D- */
+
+/*
+ * NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN - Returns the list of
+ * display devices that are currently scanning out the X screen target.
+ *
+ * The format of the returned data is:
+ *
+ * 4 CARD32 number of display devices
+ * 4 * n CARD32 display device indices
+ *
+ * This attribute can only be queried through XNVCTRLQueryTargetBinaryData()
+ * using a NV_CTRL_TARGET_TYPE_X_SCREEN target.
+ */
+
+#define NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN 17 /* R--- */
+
#define NV_CTRL_BINARY_DATA_LAST_ATTRIBUTE \
- NV_CTRL_BINARY_DATA_DISPLAYS_CONNECTED_TO_GPU
+ NV_CTRL_BINARY_DATA_DISPLAYS_ENABLED_ON_XSCREEN
diff --git a/src/libXNVCtrl/nv_control.h b/src/libXNVCtrl/nv_control.h
index 914d83a..0124c87 100644
--- a/src/libXNVCtrl/nv_control.h
+++ b/src/libXNVCtrl/nv_control.h
@@ -55,2 +55,5 @@
* 1.27 Added DISPLAY TargetType
+ * 1.28 Added NV_CTRL_CURRENT_METAMODE_ID: clients should use this
+ * attribute to switch MetaModes, rather than pass the MetaMode ID
+ * through the RRSetScreenConfig protocol request.
*/
@@ -65,3 +68,3 @@
#define NV_CONTROL_MAJOR 1
-#define NV_CONTROL_MINOR 27
+#define NV_CONTROL_MINOR 28
diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributes.c b/src/libXNVCtrlAttributes/NvCtrlAttributes.c
index 9247bde..3e7ec39 100644
--- a/src/libXNVCtrlAttributes/NvCtrlAttributes.c
+++ b/src/libXNVCtrlAttributes/NvCtrlAttributes.c
@@ -572,9 +572,2 @@ NvCtrlGetDisplayAttribute64(NvCtrlAttributeHandle *handle,
- if ((attr >= NV_CTRL_ATTR_XRANDR_BASE) &&
- (attr <= NV_CTRL_ATTR_XRANDR_LAST_ATTRIBUTE)) {
- status = NvCtrlXrandrGetAttribute(h, attr, &value_32);
- *val = value_32;
- return status;
- }
-
return NvCtrlNoAttribute;
@@ -616,8 +609,2 @@ NvCtrlSetDisplayAttribute(NvCtrlAttributeHandle *handle,
}
-
- if ((attr >= NV_CTRL_ATTR_XRANDR_BASE) &&
- (attr <= NV_CTRL_ATTR_XRANDR_LAST_ATTRIBUTE)) {
-
- return NvCtrlXrandrSetAttribute(h, attr, val);
- }
@@ -933,20 +920,2 @@ void NvCtrlAttributeClose(NvCtrlAttributeHandle *handle)
-ReturnStatus
-NvCtrlXrandrSetScreenMode (NvCtrlAttributeHandle *handle,
- int width, int height, int refresh)
-{
- return NvCtrlXrandrSetScreenMagicMode
- ((NvCtrlAttributePrivateHandle *)handle, width, height, refresh);
-} /* NvCtrlXrandrSetScreenMode() */
-
-
-ReturnStatus
-NvCtrlXrandrGetScreenMode (NvCtrlAttributeHandle *handle,
- int *width, int *height, int *refresh)
-{
- return NvCtrlXrandrGetScreenMagicMode
- ((NvCtrlAttributePrivateHandle *)handle, width, height, refresh);
-} /* NvCtrlXrandrGetScreenMode() */
-
-
/*
@@ -973,3 +942,5 @@ const char *NvCtrlGetMultisampleModeName(int multisample_mode)
"16x (8xMS, 8xCS)", /* FSAA_MODE_16xQ */
- "32x (4xSS, 8xMS)" /* FSAA_MODE_32xS */
+ "32x (4xSS, 8xMS)", /* FSAA_MODE_32xS */
+ "32x (8xMS, 24xCS)", /* FSAA_MODE_32x */
+ "64x (16xSS, 4xMS)", /* FSAA_MODE_64xS */
};
diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributes.h b/src/libXNVCtrlAttributes/NvCtrlAttributes.h
index 4637890..c8beb87 100644
--- a/src/libXNVCtrlAttributes/NvCtrlAttributes.h
+++ b/src/libXNVCtrlAttributes/NvCtrlAttributes.h
@@ -132,16 +132,3 @@ typedef void NvCtrlAttributeHandle;
-/* XRandR */
-
-#define NV_CTRL_ATTR_XRANDR_BASE \
- (NV_CTRL_ATTR_GLX_LAST_ATTRIBUTE + 1)
-
-#define NV_CTRL_ATTR_XRANDR_ROTATION_SUPPORTED (NV_CTRL_ATTR_XRANDR_BASE + 0)
-#define NV_CTRL_ATTR_XRANDR_ROTATIONS (NV_CTRL_ATTR_XRANDR_BASE + 1)
-#define NV_CTRL_ATTR_XRANDR_ROTATION (NV_CTRL_ATTR_XRANDR_BASE + 2)
-
-#define NV_CTRL_ATTR_XRANDR_LAST_ATTRIBUTE \
- (NV_CTRL_ATTR_XRANDR_ROTATION)
-
-
-#define NV_CTRL_ATTR_LAST_ATTRIBUTE (NV_CTRL_ATTR_XRANDR_LAST_ATTRIBUTE)
+#define NV_CTRL_ATTR_LAST_ATTRIBUTE (NV_CTRL_ATTR_GLX_LAST_ATTRIBUTE)
@@ -508,10 +495,2 @@ void NvCtrlAttributeClose(NvCtrlAttributeHandle *handle);
-ReturnStatus
-NvCtrlXrandrSetScreenMode (NvCtrlAttributeHandle *handle,
- int width, int height, int refresh);
-
-ReturnStatus
-NvCtrlXrandrGetScreenMode (NvCtrlAttributeHandle *handle,
- int *width, int *height, int *refresh);
-
#endif /* __NVCTRL_ATTRIBUTES__ */
diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h b/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
index 070e377..728f3e9 100644
--- a/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
+++ b/src/libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
@@ -25,3 +25,2 @@
#include <GL/glx.h> /* GLX #defines */
-#include <X11/extensions/Xrandr.h> /* Xrandr */
#include <X11/extensions/Xvlib.h> /* Xv */
@@ -218,15 +217,2 @@ NvCtrlXrandrAttributesClose (NvCtrlAttributePrivateHandle *);
ReturnStatus
-NvCtrlXrandrGetAttribute (NvCtrlAttributePrivateHandle *, int, int *);
-
-ReturnStatus
-NvCtrlXrandrSetAttribute (NvCtrlAttributePrivateHandle *, int, int);
-
-ReturnStatus
-NvCtrlXrandrSetScreenMagicMode (NvCtrlAttributePrivateHandle *, int, int, int);
-
-ReturnStatus
-NvCtrlXrandrGetScreenMagicMode (NvCtrlAttributePrivateHandle *, int *, int *,
- int *);
-
-ReturnStatus
NvCtrlXrandrGetStringAttribute (NvCtrlAttributePrivateHandle *,
diff --git a/src/libXNVCtrlAttributes/NvCtrlAttributesXrandr.c b/src/libXNVCtrlAttributes/NvCtrlAttributesXrandr.c
index 8a97c1d..99aa756 100644
--- a/src/libXNVCtrlAttributes/NvCtrlAttributesXrandr.c
+++ b/src/libXNVCtrlAttributes/NvCtrlAttributesXrandr.c
@@ -63,31 +63,2 @@ typedef struct __libXrandrInfoRec {
(Display *dpy, Window window, int mask);
-
- XRRScreenConfiguration * (* XRRGetScreenInfo)
- (Display *dpy, Drawable draw);
-
- SizeID (* XRRConfigCurrentConfiguration)
- (XRRScreenConfiguration *config, Rotation *rotation);
-
- short (* XRRConfigCurrentRate)
- (XRRScreenConfiguration *config);
-
- Rotation (* XRRConfigRotations)
- (XRRScreenConfiguration *config, Rotation *rotation);
-
- XRRScreenSize * (* XRRConfigSizes)
- (XRRScreenConfiguration *config, int *nsizes);
-
- short * (* XRRConfigRates)
- (XRRScreenConfiguration *config, int size_index, int *nrates);
-
- Status (* XRRSetScreenConfig)
- (Display *dpy, XRRScreenConfiguration *config, Drawable draw,
- int size_index, Rotation rotation, Time timestamp);
-
- Status (* XRRSetScreenConfigAndRate)
- (Display *dpy, XRRScreenConfiguration *config, Drawable draw,
- int size_index, Rotation rotation, short rate, Time timestamp);
-
- void (* XRRFreeScreenConfigInfo)
- (XRRScreenConfiguration *);
@@ -147,38 +118,2 @@ static Bool open_libxrandr(void)
- __libXrandr->XRRGetScreenInfo =
- NV_DLSYM(__libXrandr->handle, "XRRGetScreenInfo");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRConfigCurrentConfiguration =
- NV_DLSYM(__libXrandr->handle, "XRRConfigCurrentConfiguration");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRConfigCurrentRate =
- NV_DLSYM(__libXrandr->handle, "XRRConfigCurrentRate");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRConfigRotations =
- NV_DLSYM(__libXrandr->handle, "XRRConfigRotations");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRConfigSizes =
- NV_DLSYM(__libXrandr->handle, "XRRConfigSizes");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRConfigRates =
- NV_DLSYM(__libXrandr->handle, "XRRConfigRates");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRSetScreenConfig =
- NV_DLSYM(__libXrandr->handle, "XRRSetScreenConfig");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRSetScreenConfigAndRate =
- NV_DLSYM(__libXrandr->handle, "XRRSetScreenConfigAndRate");
- if ((error_str = dlerror()) != NULL) goto fail;
-
- __libXrandr->XRRFreeScreenConfigInfo =
- NV_DLSYM(__libXrandr->handle, "XRRFreeScreenConfigInfo");
- if ((error_str = dlerror()) != NULL) goto fail;
-
@@ -236,24 +171,2 @@ static void close_libxrandr(void)
*
- * Some XR&R functions fails on XFree86 4.3.0 with BadImplementation if the
- * screen resolution is not the one the server started with. We work around
- * that by temporarily installing an error handler, trying the call, and then
- * disabling the rotation page if it fails.
- *
- ****/
-
-static int errors = 0;
-static int (*old_error_handler)(Display *, XErrorEvent *);
-
-static int
-error_handler (Display *dpy, XErrorEvent *err)
-{
- errors++;
- return 0;
-
-} /* error_handler() */
-
-
-
-/******************************************************************************
- *
* Initializes the NvCtrlXrandrAttributes Extension by linking the
@@ -267,4 +180,2 @@ NvCtrlInitXrandrAttributes (NvCtrlAttributePrivateHandle *h)
NvCtrlXrandrAttributes * xrandr = NULL;
- XRRScreenConfiguration *sc;
- Rotation rotation, rotations;
@@ -291,6 +202,2 @@ NvCtrlInitXrandrAttributes (NvCtrlAttributePrivateHandle *h)
- XSync(h->dpy, False);
- errors = 0;
- old_error_handler = XSetErrorHandler(error_handler);
-
/* Verify server support of XRandR extension */
@@ -299,4 +206,2 @@ NvCtrlInitXrandrAttributes (NvCtrlAttributePrivateHandle *h)
&(xrandr->error_base)) ) {
- XSync(h->dpy, False);
- XSetErrorHandler(old_error_handler);
goto fail;
@@ -309,4 +214,2 @@ NvCtrlInitXrandrAttributes (NvCtrlAttributePrivateHandle *h)
(xrandr->minor_version < MIN_RANDR_MINOR)))) {
- XSync(h->dpy, False);
- XSetErrorHandler(old_error_handler);
goto fail;
@@ -318,18 +221,2 @@ NvCtrlInitXrandrAttributes (NvCtrlAttributePrivateHandle *h)
-
- /* Try calling a couple functions that are known to fail */
- sc = __libXrandr->XRRGetScreenInfo(h->dpy, RootWindow(h->dpy, h->target_id));
- if ( sc ) {
- rotations = __libXrandr->XRRConfigRotations(sc, &rotation);
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- } else {
- errors++;
- }
-
- XSync(h->dpy, False);
- XSetErrorHandler(old_error_handler);
- if ( errors > 0 ) {
- goto fail;
- }
-
return xrandr;
@@ -370,154 +257,2 @@ NvCtrlXrandrAttributesClose (NvCtrlAttributePrivateHandle *h)
-/******************************************************************************
- *
- * Retrieves XRandR integer attributes
- *
- ****/
-
-ReturnStatus
-NvCtrlXrandrGetAttribute (NvCtrlAttributePrivateHandle *h,
- int attr, int *val)
-{
- XRRScreenConfiguration *sc;
- Rotation rotation, rotations;
-
-
- /* Validate */
- if ( !h || !h->dpy || h->target_type != NV_CTRL_TARGET_TYPE_X_SCREEN ) {
- return NvCtrlBadHandle;
- }
- if ( !h->xrandr || !__libXrandr ) {
- return NvCtrlMissingExtension;
- }
- if ( !val ) {
- return NvCtrlBadArgument;
- }
-
-
- /* Get current screen configuration information */
- sc = __libXrandr->XRRGetScreenInfo(h->dpy, RootWindow(h->dpy,
- h->target_id));
- if ( !sc ) {
- return NvCtrlError;
- }
- rotations = __libXrandr->XRRConfigRotations(sc, &rotation);
- __libXrandr->XRRFreeScreenConfigInfo(sc);
-
-
- /* Fetch right attribute */
- switch ( attr ) {
-
- case NV_CTRL_ATTR_XRANDR_ROTATION_SUPPORTED:
- /* For rotation to be supported, there must
- * be at least 2 orientations
- */
- *val = ( rotations != 1 && rotations != 2 &&
- rotations != 4 && rotations != 8 ) ? 1 : 0;
- break;
-
- case NV_CTRL_ATTR_XRANDR_ROTATIONS:
- /* Return the available rotations */
- *val = rotations;
- break;
-
- case NV_CTRL_ATTR_XRANDR_ROTATION:
- /* Return the current rotation */
- *val = (int)rotation;
- break;
-
- default:
- return NvCtrlNoAttribute;
- break;
- } /* Done fetching attribute */
-
-
- return NvCtrlSuccess;
-
-} /* NvCtrlXrandrGetAttribute */
-
-
-
-/******************************************************************************
- *
- * Sets XRandR integer attributes
- *
- ****/
-
-static ReturnStatus
-set_rotation(NvCtrlAttributePrivateHandle *h, Rotation rotation)
-{
- XRRScreenConfiguration *sc;
- Rotation cur_rotation, rotations;
- SizeID cur_size;
- Status ret;
-
-
- assert(h->target_type == NV_CTRL_TARGET_TYPE_X_SCREEN);
-
- /* Get current screen configuration information */
- sc = __libXrandr->XRRGetScreenInfo(h->dpy, RootWindow(h->dpy,
- h->target_id));
- if ( !sc ) {
- return NvCtrlError;
- }
- cur_size = __libXrandr->XRRConfigCurrentConfiguration(sc, &cur_rotation);
- rotations = __libXrandr->XRRConfigRotations(sc, &cur_rotation);
-
-
- /* Check orientation we want is supported */
- if ( !(rotations & rotation) ) {
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- return NvCtrlBadArgument;
- }
-
-
- /* Set the orientation */
- ret = __libXrandr->XRRSetScreenConfig(h->dpy, sc,
- RootWindow(h->dpy, h->target_id),
- cur_size, rotation, CurrentTime);
- __libXrandr->XRRFreeScreenConfigInfo(sc);
-
- return ( ret == Success )?NvCtrlSuccess:NvCtrlError;
-
-} /* set_rotation() */
-
-
-ReturnStatus
-NvCtrlXrandrSetAttribute (NvCtrlAttributePrivateHandle *h,
- int attr, int val)
-{
- /* Validate */
- if ( !h || !h->dpy || h->target_type != NV_CTRL_TARGET_TYPE_X_SCREEN ) {
- return NvCtrlBadHandle;
- }
- if ( !h->xrandr || !__libXrandr ) {
- return NvCtrlMissingExtension;
- }
-
-
- /* Set right attribute */
- switch ( attr ) {
-
- case NV_CTRL_ATTR_XRANDR_ROTATION_SUPPORTED:
- return NvCtrlReadOnlyAttribute;
- break;
-
- case NV_CTRL_ATTR_XRANDR_ROTATIONS:
- return NvCtrlReadOnlyAttribute;
- break;
-
- case NV_CTRL_ATTR_XRANDR_ROTATION:
- return set_rotation(h, (Rotation)val);
- break;
-
- default:
- return NvCtrlNoAttribute;
- break;
- }
-
- return NvCtrlSuccess;
-
-} /* NvCtrlXrandrSetAttribute */
-
-
/*
@@ -551,127 +286 @@ NvCtrlXrandrGetStringAttribute (NvCtrlAttributePrivateHandle *h,
} /* NvCtrlXrandrGetStringAttribute() */
-
-
-/******************************************************************************
- *
- * Sets XRandR size and refresh rate.
- *
- ****/
-
-ReturnStatus
-NvCtrlXrandrSetScreenMagicMode (NvCtrlAttributePrivateHandle *h,
- int width, int height, int magic_ref_rate)
-{
- XRRScreenConfiguration *sc;
- Rotation cur_rotation;
- int nsizes;
- XRRScreenSize *sizes;
- int nrates;
- short *rates;
- Status ret;
-
-
- /* Validate */
- if ( !h || !h->dpy || h->target_type != NV_CTRL_TARGET_TYPE_X_SCREEN ) {
- return NvCtrlBadHandle;
- }
-
- if ( !h->xrandr || !__libXrandr ) {
- return NvCtrlMissingExtension;
- }
-
-
- /* Get current screen configuration information */
- sc = __libXrandr->XRRGetScreenInfo(h->dpy, RootWindow(h->dpy,
- h->target_id));
- if ( !sc ) {
- return NvCtrlError;
- }
- __libXrandr->XRRConfigRotations(sc, &cur_rotation);
-
-
- /* Look for size that has matching refresh rate */
- sizes = __libXrandr->XRRConfigSizes(sc, &nsizes);
- while ( --nsizes >= 0 ) {
-
- /* Must match in size */
- if ( sizes[nsizes].width != width ||
- sizes[nsizes].height != height ) {
- continue;
- }
-
- rates = __libXrandr->XRRConfigRates(sc, nsizes, &nrates);
- while ( --nrates >= 0 ) {
-
- /* Set the mode if we found the rate */
- if ( *rates == magic_ref_rate ) {
- ret = __libXrandr->XRRSetScreenConfigAndRate
- (h->dpy, sc, RootWindow(h->dpy, h->target_id), nsizes,
- cur_rotation, magic_ref_rate, CurrentTime);
-
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- return (ret == Success)?NvCtrlSuccess:NvCtrlError;
- }
- rates++;
- }
- }
-
- /* If we are here, then we could not find the correct mode to set */
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- return NvCtrlError;
-
-} /* NvCtrlXrandrSetScreenMagicMode */
-
-
-
-/******************************************************************************
- *
- * Gets XRandR size and refresh rate.
- *
- ****/
-
-ReturnStatus
-NvCtrlXrandrGetScreenMagicMode (NvCtrlAttributePrivateHandle *h,
- int *width, int *height, int *magic_ref_rate)
-{
- XRRScreenConfiguration *sc;
- Rotation cur_rotation;
- int nsizes;
- XRRScreenSize *sizes;
- int cur_size;
- short cur_rate;
-
-
- /* Validate */
- if ( !h || !h->dpy || h->target_type != NV_CTRL_TARGET_TYPE_X_SCREEN ) {
- return NvCtrlBadHandle;
- }
-
- if ( !h->xrandr || !__libXrandr ) {
- return NvCtrlMissingExtension;
- }
-
-
- /* Get current screen configuration information */
- sc = __libXrandr->XRRGetScreenInfo(h->dpy, RootWindow(h->dpy,
- h->target_id));
- if ( !sc ) {
- return NvCtrlError;
- }
- cur_size = __libXrandr->XRRConfigCurrentConfiguration(sc, &cur_rotation);
- cur_rate = __libXrandr->XRRConfigCurrentRate(sc);
- sizes = __libXrandr->XRRConfigSizes(sc, &nsizes);
- if (cur_size >= nsizes) {
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- return NvCtrlError;
- }
-
-
- /* Get the width & height from the size information */
- *width = sizes[cur_size].width;
- *height = sizes[cur_size].height;
- *magic_ref_rate = (int)cur_rate;
-
- __libXrandr->XRRFreeScreenConfigInfo(sc);
- return NvCtrlSuccess;
-
-} /* NvCtrlXrandrGetScreenMagicMode */
diff --git a/src/libXNVCtrlAttributes/src.mk b/src/libXNVCtrlAttributes/src.mk
deleted file mode 100644
index e8f9609..0000000
--- a/src/libXNVCtrlAttributes/src.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# files in the src/libXNVCtrlAttributes directory of nvidia-settings
-#
-
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributes.c
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributesNvControl.c
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributesVidMode.c
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributesXv.c
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributesGlx.c
-LIB_XNVCTRL_ATTRIBUTES_SRC += NvCtrlAttributesXrandr.c
-
-LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST += NvCtrlAttributes.h
-LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST += NvCtrlAttributesPrivate.h
-LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST += src.mk
diff --git a/src/lscf.c b/src/lscf.c
index 569aed4..e77d527 100644
--- a/src/lscf.c
+++ b/src/lscf.c
@@ -1,2 +1,5 @@
#include <stdio.h>
+
+#include "lscf.h"
+
#if defined(NV_SUNOS)
diff --git a/src/msg.c b/src/msg.c
index 09467b4..1a79651 100644
--- a/src/msg.c
+++ b/src/msg.c
@@ -21,2 +21,5 @@
#include "command-line.h"
+#include "common-utils.h"
+
+#include <NvCtrlAttributes.h>
diff --git a/src/msg.h b/src/msg.h
index 5334a32..1188ea9 100644
--- a/src/msg.h
+++ b/src/msg.h
@@ -31,45 +31,2 @@ void nv_msg_preserve_whitespace(const char*, const char*, ...);
-
-/*
- * NV_VSNPRINTF(): macro that assigns buf using vsnprintf(). This is
- * correct for differing semantics of vsnprintf() in different
- * versions of glibc:
- *
- * different semantics of the return value from (v)snprintf:
- *
- * -1 when the buffer is not long enough (glibc < 2.1)
- *
- * or
- *
- * the length the string would have been if the buffer had been large
- * enough (glibc >= 2.1)
- *
- * This macro allocates memory for buf; the caller should use free()
- * when done.
- */
-#define NV_FMT_BUF_LEN 256
-#define NV_VSNPRINTF(buf, fmt) \
-do { \
- va_list ap; \
- int len, current_len = NV_FMT_BUF_LEN; \
- \
- (buf) = malloc(current_len); \
- \
- while (1) { \
- va_start(ap, fmt); \
- len = vsnprintf((buf), current_len, (fmt), ap); \
- va_end(ap); \
- \
- if ((len > -1) && (len < current_len)) { \
- break; \
- } else if (len > -1) { \
- current_len = len + 1; \
- } else { \
- current_len += NV_FMT_BUF_LEN; \
- } \
- \
- (buf) = realloc(buf, current_len); \
- } \
-} while (0)
-
#endif /* __MSG_H__ */
diff --git a/src/option-table.h b/src/option-table.h
index 58bd581..50b0356 100644
--- a/src/option-table.h
+++ b/src/option-table.h
@@ -35,18 +35,21 @@
static const NVGetoptOption __options[] = {
- { "version", 'v', 0, NULL,
- "Print the <nvidia-settings> version and exit." },
+ { "version", 'v', NVGETOPT_HELP_ALWAYS, NULL,
+ "Print the ^nvidia-settings^ version and exit." },
- { "help", 'h', 0, NULL,
+ { "help", 'h', NVGETOPT_HELP_ALWAYS, NULL,
"Print usage information and exit." },
- { "config", CONFIG_FILE_OPTION, NVGETOPT_STRING_ARGUMENT, NULL,
- "Use the configuration file ^CONFIG> rather than the "
- "default ^" DEFAULT_RC_FILE ">" },
+ { "config", CONFIG_FILE_OPTION,
+ NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
+ "Use the configuration file &CONFIG& rather than the "
+ "default &" DEFAULT_RC_FILE "&" },
- { "ctrl-display", 'c', NVGETOPT_STRING_ARGUMENT, NULL,
+ { "ctrl-display", 'c',
+ NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
"Control the specified X display. If this option is not given, then "
- "<nvidia-settings> will control the display specified by <'--display'>; "
- "if that is not given, then the ^$DISPLAY> environment variable is used." },
+ "^nvidia-settings^ will control the display specified by ^'--display'^; "
+ "if that is not given, then the &$DISPLAY& environment "
+ "variable is used." },
- { "load-config-only", 'l', 0, NULL,
+ { "load-config-only", 'l', NVGETOPT_HELP_ALWAYS, NULL,
"Load the configuration file, send the values specified therein to "
@@ -55,8 +58,8 @@ static const NVGetoptOption __options[] = {
- { "no-config", 'n', 0, NULL,
+ { "no-config", 'n', NVGETOPT_HELP_ALWAYS, NULL,
"Do not load the configuration file. This mode of operation is useful "
- "if <nvidia-settings> has difficulties starting due to problems with "
+ "if ^nvidia-settings^ has difficulties starting due to problems with "
"applying settings in the configuration file." },
- { "rewrite-config-file", 'r', 0, NULL,
+ { "rewrite-config-file", 'r', NVGETOPT_HELP_ALWAYS, NULL,
"Write the X server configuration to the configuration file, and exit, "
@@ -65,11 +68,12 @@ static const NVGetoptOption __options[] = {
{ "verbose", 'V',
- NVGETOPT_STRING_ARGUMENT | NVGETOPT_ARGUMENT_IS_OPTIONAL, NULL,
+ NVGETOPT_STRING_ARGUMENT | NVGETOPT_ARGUMENT_IS_OPTIONAL |
+ NVGETOPT_HELP_ALWAYS, NULL,
"Controls how much information is printed. By default, the verbosity "
- "is <errors> and only error messages are printed. Valid values are "
- "<'none'> (do not print messages), <'errors'> (print error messages), "
- "<'warnings'> (print error and warning messages), and "
- "<'all'> (print error, warning and other informational messages)." },
+ "is ^errors^ and only error messages are printed. Valid values are "
+ "^'none'^ (do not print messages), ^'errors'^ (print error messages), "
+ "^'warnings'^ (print error and warning messages), and "
+ "^'all'^ (print error, warning and other informational messages)." },
- { "assign", 'a', NVGETOPT_STRING_ARGUMENT, NULL,
- "The ^ASSIGN> argument to the <'--assign'> command line option is of the "
+ { "assign", 'a', NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
+ "The &ASSIGN& argument to the ^'--assign'^ command line option is of the "
"form:\n"
@@ -82,3 +86,3 @@ static const NVGetoptOption __options[] = {
"when it is not specified, then it is implied following the same rule as "
- "the <--ctrl-display> option. If the X screen is not specified, then the "
+ "the ^--ctrl-display^ option. If the X screen is not specified, then the "
"assignment is made to all X screens. Note that the '/' is only required "
@@ -90,4 +94,4 @@ static const NVGetoptOption __options[] = {
"type name, a colon, and the target id. The target type name can be "
- "one of <\"screen\", \"gpu\", \"framelock\", \"vcs\", \"gvi\",> or "
- "<\"fan\";> the target id is the index into the list of targets "
+ "one of ^\"screen\", \"gpu\", \"framelock\", \"vcs\", \"gvi\",^ or "
+ "^\"fan\";^ the target id is the index into the list of targets "
"(for that target type). The target specification can be used in "
@@ -116,4 +120,4 @@ static const NVGetoptOption __options[] = {
- { "query", 'q', NVGETOPT_STRING_ARGUMENT, NULL,
- "The ^QUERY> argument to the <'--query'> command line option is of the "
+ { "query", 'q', NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
+ "The &QUERY& argument to the ^'--query'^ command line option is of the "
"form:\n"
@@ -124,9 +128,9 @@ static const NVGetoptOption __options[] = {
"X Display {DISPLAY}. The syntax is the same as that for the "
- "<'--assign'> option, without '=<{value}'>; specify <'-q screens', "
- "'-q gpus', '-q framelocks', '-q vcs', '-q gvis', or '-q fans'> to "
+ "^'--assign'^ option, without '=^{value}'^; specify ^'-q screens', "
+ "'-q gpus', '-q framelocks', '-q vcs', '-q gvis', or '-q fans'^ to "
"query a list of X screens, GPUs, Frame Lock devices, Visual Computing "
"Systems, SDI Input Devices, or Fans, respectively, that are present "
- "on the X Display {DISPLAY}. Specify <'-q all'> to query all attributes." },
+ "on the X Display {DISPLAY}. Specify ^'-q all'^ to query all attributes." },
- { "terse", 't', 0, NULL,
+ { "terse", 't', NVGETOPT_HELP_ALWAYS, NULL,
"When querying attribute values with the '--query' command line option, "
@@ -135,3 +139,3 @@ static const NVGetoptOption __options[] = {
- { "display-device-string", 'd', 0, NULL,
+ { "display-device-string", 'd', NVGETOPT_HELP_ALWAYS, NULL,
"When printing attribute values in response to the '--query' option, "
@@ -141,6 +145,6 @@ static const NVGetoptOption __options[] = {
- { "glxinfo", 'g', 0, NULL,
+ { "glxinfo", 'g', NVGETOPT_HELP_ALWAYS, NULL,
"Print GLX Information for the X display and exit." },
- { "describe", 'e', NVGETOPT_STRING_ARGUMENT, NULL,
+ { "describe", 'e', NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
"Prints information about a particular attribute. Specify 'all' to "
@@ -149,4 +153,4 @@ static const NVGetoptOption __options[] = {
- { "page", 'p', NVGETOPT_STRING_ARGUMENT, NULL,
- "The ^PAGE> argument to the <'--page'> commandline option selects a "
+ { "page", 'p', NVGETOPT_STRING_ARGUMENT | NVGETOPT_HELP_ALWAYS, NULL,
+ "The &PAGE& argument to the ^'--page'^ commandline option selects a "
"particular page in the nvidia-settings user interface to display "
@@ -165,3 +169,3 @@ static const NVGetoptOption __options[] = {
"\n"
- "The first page with a name matching the ^PAGE> argument will be used. "
+ "The first page with a name matching the &PAGE& argument will be used. "
"By default, the \"X Server Information\" page is displayed." },
diff --git a/src/parse.c b/src/parse.c
index 0e9ec28..0df6942 100644
--- a/src/parse.c
+++ b/src/parse.c
@@ -30,2 +30,5 @@
+#include "common-utils.h"
+
+
/* local helper functions */
@@ -38,3 +41,2 @@ static int ctoi(const char c);
static int count_number_of_chars(char *o, char d);
-static char *nv_strndup(char *s, int n);
@@ -219,3 +221,2 @@ AttributeTableEntry attributeTable[] = {
{ "GvoDataFormat", NV_CTRL_GVO_DATA_FORMAT, I, "Configures how the data in the source (either the X screen or the GLX pbuffer) is interpreted and displayed by the GVO device." },
- { "GvoDisplayXScreen", NV_CTRL_GVO_DISPLAY_X_SCREEN, I|N, "Enable/disable GVO output of the X screen (in Clone mode)." },
{ "GvoCompositeSyncInputDetected", NV_CTRL_GVO_COMPOSITE_SYNC_INPUT_DETECTED, I|N, "Indicates whether Composite Sync input is detected." },
@@ -228,4 +229,2 @@ AttributeTableEntry attributeTable[] = {
{ "GvoGlxLocked", NV_CTRL_GVO_GLX_LOCKED, I|N, "Indicates that GVO configuration is locked by GLX; this occurs when the GLX_NV_video_out function calls glXGetVideoDeviceNV(). All GVO output resources are locked until either glXReleaseVideoDeviceNV() is called or the X Display used when calling glXGetVideoDeviceNV() is closed." },
- { "GvoXScreenPanX", NV_CTRL_GVO_X_SCREEN_PAN_X, I, "When GVO output of the X screen is enabled, the pan x/y attributes control which portion of the X screen is displayed by GVO. These attributes can be updated while GVO output is enabled, or before enabling GVO output. The pan values will be clamped so that GVO output is not panned beyond the end of the X screen." },
- { "GvoXScreenPanY", NV_CTRL_GVO_X_SCREEN_PAN_Y, I, "When GVO output of the X screen is enabled, the pan x/y attributes control which portion of the X screen is displayed by GVO. These attributes can be updated while GVO output is enabled, or before enabling GVO output. The pan values will be clamped so that GVO output is not panned beyond the end of the X screen." },
{ "GvoOverrideHwCsc", NV_CTRL_GVO_OVERRIDE_HW_CSC, I, "Override the SDI hardware's Color Space Conversion with the values controlled through XNVCTRLSetGvoColorConversion() and XNVCTRLGetGvoColorConversion()." },
@@ -303,2 +302,5 @@ AttributeTableEntry attributeTable[] = {
{ "SynchronousPaletteUpdates", NV_CTRL_SYNCHRONOUS_PALETTE_UPDATES, 0, "Controls whether colormap updates are synchronized with X rendering." },
+ { "CurrentMetaModeID", NV_CTRL_CURRENT_METAMODE_ID, N, "The ID of the current MetaMode." },
+ { "CurrentMetaMode", NV_CTRL_STRING_CURRENT_METAMODE_VERSION_2, S|N, "Controls the current MetaMode." },
+ { "XineramaInfoOrder", NV_CTRL_STRING_TWINVIEW_XINERAMA_INFO_ORDER, S|N, "Controls the TwinViewXineramaInfoOrder." },
@@ -376,3 +378,3 @@ AttributeTableEntry attributeTable[] = {
-#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_GVO_AUDIO_BLANKING
+#if NV_CTRL_LAST_ATTRIBUTE != NV_CTRL_DISPLAY_ENABLED
#warning "Have you forgotten to add a new integer attribute to attributeTable?"
@@ -461,3 +463,3 @@ TargetTypeEntry targetTypeTable[] = {
- { NULL, NULL, 0, 0, 0 },
+ { NULL, NULL, 0, 0, 0, 0, 0, 0 },
};
@@ -590,3 +592,3 @@ int nv_parse_attribute_string(const char *str, int query, ParsedAttribute *a)
while (*s && *s != ']') s++;
- display_device_name = nv_strndup(start, s - start);
+ display_device_name = nvstrndup(start, s - start);
a->display_device_mask =
@@ -619,3 +621,6 @@ int nv_parse_attribute_string(const char *str, int query, ParsedAttribute *a)
/* color attributes are floating point */
- a->fval = strtod(s, &tmp);
+ a->val.f = strtod(s, &tmp);
+ } else if (a->flags & NV_PARSER_TYPE_STRING_ATTRIBUTE) {
+ a->val.str = strdup(s);
+ tmp = s + strlen(s);
} else if (a->flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) {
@@ -627,7 +632,7 @@ int nv_parse_attribute_string(const char *str, int query, ParsedAttribute *a)
*/
- a->val = strtol(s, &tmp, 0);
+ a->val.i = strtol(s, &tmp, 0);
if (tmp && *tmp == ',') {
- a->val = (a->val & 0xffff) << 16;
- a->val |= strtol((tmp + 1), &tmp, 0) & 0xffff;
+ a->val.i = (a->val.i & 0xffff) << 16;
+ a->val.i |= strtol((tmp + 1), &tmp, 0) & 0xffff;
}
@@ -644,6 +649,6 @@ int nv_parse_attribute_string(const char *str, int query, ParsedAttribute *a)
DISPLAY_DEVICES_WILDCARD_DFP)) == 0)) {
- a->val = mask;
+ a->val.i = mask;
tmp = s + strlen(s);
} else {
- a->val = strtol(s, &tmp, 0);
+ a->val.i = strtol(s, &tmp, 0);
}
@@ -652,3 +657,3 @@ int nv_parse_attribute_string(const char *str, int query, ParsedAttribute *a)
/* String that names a standard CSC matrix */
- a->pfval = nv_get_sdi_csc_matrix(s);
+ a->val.pf = nv_get_sdi_csc_matrix(s);
tmp = s + strlen(s);
@@ -656,3 +661,3 @@ int nv_parse_attribute_string(const char *str, int query, ParsedAttribute *a)
/* all other attributes are integer */
- a->val = strtol(s, &tmp, 0);
+ a->val.i = strtol(s, &tmp, 0);
}
@@ -745,3 +750,3 @@ static int nv_parse_display_and_target(char *start,
- tmp = nv_strndup(pOpen + 1, len);
+ tmp = nvstrndup(pOpen + 1, len);
@@ -838,3 +843,3 @@ static int nv_parse_display_and_target(char *start,
- a->display = nv_strndup(start, end - start);
+ a->display = nvstrndup(start, end - start);
a->flags |= NV_PARSER_HAS_X_DISPLAY;
@@ -1238,3 +1243,2 @@ void nv_parsed_attribute_add(ParsedAttribute *head, ParsedAttribute *a)
t->val = a->val;
- t->fval = a->fval;
t->display_device_mask = a->display_device_mask;
@@ -1500,3 +1504,3 @@ static char **nv_strtok(char *s, char c, int *n)
len = delims[0] - s;
- tokens[0] = nv_strndup(s, len);
+ tokens[0] = nvstrndup(s, len);
@@ -1504,3 +1508,3 @@ static char **nv_strtok(char *s, char c, int *n)
len = delims[i] - delims[i-1];
- tokens[i] = nv_strndup(delims[i-1]+1, len-1);
+ tokens[i] = nvstrndup(delims[i-1]+1, len-1);
}
@@ -1581,20 +1585,2 @@ int count_number_of_bits(unsigned int mask)
-/*
- * nv_strndup() - this function takes a pointer to a string and a
- * length n, mallocs a new string of n+1, copies the first n chars
- * from the original string into the new, and null terminates the new
- * string. The caller should free the string.
- */
-
-static char *nv_strndup(char *s, int n)
-{
- char *m = malloc(n + 1);
- strncpy (m, s, n);
- m[n] = '\0';
- return (m);
-
-} /* nv_strndup() */
-
-
-
/** parse_skip_whitespace() ******************************************
@@ -1778,2 +1764,35 @@ const char *parse_read_display_name(const char *str, unsigned int *mask)
+/** parse_read_display_id() *****************************************
+ *
+ * Convert a 'DPY-#' style display device name into a display device
+ * id. The location where parsing stopped is returned or NULL if an
+ * error occured.
+ *
+ **/
+const char *parse_read_display_id(const char *str, unsigned int *id)
+{
+ if (!str || !id) {
+ return NULL;
+ }
+
+ str = parse_skip_whitespace(str);
+ if (!strncmp(str, "DPY-", 4)) {
+ *id = atoi(str+4);
+ } else {
+ return NULL;
+ }
+
+ while (*str && *str != ':') {
+ str++;
+ }
+ if (*str == ':') {
+ str++;
+ }
+
+ return parse_skip_whitespace(str);
+
+} /* parse_read_display_id() */
+
+
+
/** parse_read_float_range() *****************************************
diff --git a/src/parse.h b/src/parse.h
index 1b1870a..7dfcc1b 100644
--- a/src/parse.h
+++ b/src/parse.h
@@ -120,5 +120,8 @@ typedef struct _ParsedAttribute {
int attr;
- int val;
- float fval; /* XXX put in a union with val? */
- const float *pfval; /* XXX put in a union with val? */
+ union {
+ int i;
+ float f;
+ const float *pf;
+ char *str;
+ } val;
uint32 display_device_mask;
@@ -331,2 +334,3 @@ const char *parse_read_name(const char *str, char **name, char term);
const char *parse_read_display_name(const char *str, unsigned int *mask);
+const char *parse_read_display_id(const char *str, unsigned int *id);
int parse_read_float_range(const char *str, float *min, float *max);
diff --git a/src/query-assign.c b/src/query-assign.c
index 52ec01f..54bc01a 100644
--- a/src/query-assign.c
+++ b/src/query-assign.c
@@ -34,2 +34,3 @@
#include "query-assign.h"
+#include "common-utils.h"
@@ -635,3 +636,3 @@ static int validate_value(CtrlHandleTarget *t, ParsedAttribute *a, uint32 d,
case ATTRIBUTE_TYPE_BOOL:
- if ((a->val < 0) || (a->val > 1)) {
+ if ((a->val.i < 0) || (a->val.i > 1)) {
bad_val = NV_TRUE;
@@ -641,9 +642,10 @@ static int validate_value(CtrlHandleTarget *t, ParsedAttribute *a, uint32 d,
if (a->flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) {
- if (((a->val >> 16) < (valid.u.range.min >> 16)) ||
- ((a->val >> 16) > (valid.u.range.max >> 16)) ||
- ((a->val & 0xffff) < (valid.u.range.min & 0xffff)) ||
- ((a->val & 0xffff) > (valid.u.range.max & 0xffff)))
+ if (((a->val.i >> 16) < (valid.u.range.min >> 16)) ||
+ ((a->val.i >> 16) > (valid.u.range.max >> 16)) ||
+ ((a->val.i & 0xffff) < (valid.u.range.min & 0xffff)) ||
+ ((a->val.i & 0xffff) > (valid.u.range.max & 0xffff)))
bad_val = NV_TRUE;
} else {
- if ((a->val < valid.u.range.min) || (a->val > valid.u.range.max))
+ if ((a->val.i < valid.u.range.min) ||
+ (a->val.i > valid.u.range.max))
bad_val = NV_TRUE;
@@ -655,4 +657,4 @@ static int validate_value(CtrlHandleTarget *t, ParsedAttribute *a, uint32 d,
- u = (((unsigned int) a->val) >> 16);
- l = (a->val & 0xffff);
+ u = (((unsigned int) a->val.i) >> 16);
+ l = (a->val.i & 0xffff);
@@ -663,4 +665,4 @@ static int validate_value(CtrlHandleTarget *t, ParsedAttribute *a, uint32 d,
} else {
- if ((a->val > 31) || (a->val < 0) ||
- ((valid.u.bits.ints & (1<<a->val)) == 0)) {
+ if ((a->val.i > 31) || (a->val.i < 0) ||
+ ((valid.u.bits.ints & (1<<a->val.i)) == 0)) {
bad_val = NV_TRUE;
@@ -690,3 +692,3 @@ static int validate_value(CtrlHandleTarget *t, ParsedAttribute *a, uint32 d,
"specified %s is invalid.",
- a->val >> 16, a->val & 0xffff,
+ a->val.i >> 16, a->val.i & 0xffff,
a->name, t->name,
@@ -696,3 +698,3 @@ static int validate_value(CtrlHandleTarget *t, ParsedAttribute *a, uint32 d,
"specified %s is invalid.",
- a->val, a->name, t->name,
+ a->val.i, a->name, t->name,
d_str, whence);
@@ -836,3 +838,3 @@ static void print_valid_values(char *name, int attr, uint32 flags,
if (n > 0) c += sprintf(c, ", ");
- c += sprintf(c, targetTypeTable[i].name);
+ c += sprintf(c, "%s", targetTypeTable[i].name);
n++;
@@ -1558,23 +1560,28 @@ static int process_parsed_attribute_internal(CtrlHandleTarget *t,
if (assign) {
- ret = validate_value(t, a, d, target_type, whence);
- if (!ret) return NV_FALSE;
+ if (a->flags & NV_PARSER_TYPE_STRING_ATTRIBUTE) {
+ status = NvCtrlSetStringAttribute(t->h, a->attr, a->val.str, NULL);
+ } else {
- status = NvCtrlSetDisplayAttribute(t->h, d, a->attr, a->val);
-
- if (status != NvCtrlSuccess) {
- nv_error_msg("Error assigning value %d to attribute '%s' "
- "(%s%s) as specified %s (%s).",
- a->val, a->name, t->name, str, whence,
- NvCtrlAttributesStrError(status));
- return NV_FALSE;
- }
-
- if (verbose) {
- if (a->flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) {
- nv_msg(" ", "Attribute '%s' (%s%s) assigned value %d,%d.",
- a->name, t->name, str,
- a->val >> 16, a->val & 0xffff);
- } else {
- nv_msg(" ", "Attribute '%s' (%s%s) assigned value %d.",
- a->name, t->name, str, a->val);
+ ret = validate_value(t, a, d, target_type, whence);
+ if (!ret) return NV_FALSE;
+
+ status = NvCtrlSetDisplayAttribute(t->h, d, a->attr, a->val.i);
+
+ if (status != NvCtrlSuccess) {
+ nv_error_msg("Error assigning value %d to attribute '%s' "
+ "(%s%s) as specified %s (%s).",
+ a->val.i, a->name, t->name, str, whence,
+ NvCtrlAttributesStrError(status));
+ return NV_FALSE;
+ }
+
+ if (verbose) {
+ if (a->flags & NV_PARSER_TYPE_PACKED_ATTRIBUTE) {
+ nv_msg(" ", "Attribute '%s' (%s%s) assigned value %d,%d.",
+ a->name, t->name, str,
+ a->val.i >> 16, a->val.i & 0xffff);
+ } else {
+ nv_msg(" ", "Attribute '%s' (%s%s) assigned value %d.",
+ a->name, t->name, str, a->val.i);
+ }
}
@@ -1610,3 +1617,3 @@ static int process_parsed_attribute_internal(CtrlHandleTarget *t,
} else {
- status = NvCtrlGetDisplayAttribute(t->h, d, a->attr, &a->val);
+ status = NvCtrlGetDisplayAttribute(t->h, d, a->attr, &a->val.i);
@@ -1624,3 +1631,3 @@ static int process_parsed_attribute_internal(CtrlHandleTarget *t,
} else {
- print_queried_value(t, &valid, a->val, a->flags, a->name, d,
+ print_queried_value(t, &valid, a->val.i, a->flags, a->name, d,
" ", __terse ?
@@ -1876,3 +1883,3 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
/*
- * assign fval to all values in the array; a->attr will
+ * assign a->val.f to all values in the array; a->attr will
* tell NvCtrlSetColorAttributes() which indices in the
@@ -1881,3 +1888,3 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
- v[0] = v[1] = v[2] = a->fval;
+ v[0] = v[1] = v[2] = a->val.f;
@@ -1887,3 +1894,3 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
nv_error_msg("Error assigning %f to attribute '%s' on %s "
- "specified %s (%s)", a->fval, a->name,
+ "specified %s (%s)", a->val.f, a->name,
t->name, whence,
@@ -1911,5 +1918,5 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
if (a->flags & NV_PARSER_TYPE_VALUE_IS_SWITCH_DISPLAY) {
- a->val = t->c;
+ a->val.i = t->c;
} else {
- a->val = t->d;
+ a->val.i = t->d;
}
@@ -1931,6 +1938,6 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
- if ((check_mask & a->val) != a->val) {
+ if ((check_mask & a->val.i) != a->val.i) {
tmp_d_str0 =
- display_device_mask_to_display_device_name(a->val);
+ display_device_mask_to_display_device_name(a->val.i);
@@ -1962,3 +1969,3 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
- if (!a->val) {
+ if (!a->val.i) {
@@ -2084,3 +2091,3 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
/* Make sure the standard is known */
- if (!a->pfval) {
+ if (!a->val.pf) {
nv_error_msg("The attribute '%s' specified %s cannot be "
@@ -2094,6 +2101,6 @@ int nv_process_parsed_attribute(ParsedAttribute *a, CtrlHandles *h,
for (c = 0; c < 3; c++) {
- colorMatrix[r][c] = a->pfval[r*5 + c];
+ colorMatrix[r][c] = a->val.pf[r*5 + c];
}
- colorOffset[r] = a->pfval[r*5 + 3];
- colorScale[r] = a->pfval[r*5 + 4];
+ colorOffset[r] = a->val.pf[r*5 + 3];
+ colorScale[r] = a->val.pf[r*5 + 4];
}
diff --git a/src/src.mk b/src/src.mk
index dda3891..beb592e 100644
--- a/src/src.mk
+++ b/src/src.mk
@@ -1 +1,12 @@
+##############################################################################
+# define the list of files that should be built and distributed in the
+# nvidia-settings source tarball; this is used by the NVIDIA driver
+# build when packaging the tarball, and by the nvidia-settings
+# makefile when building nvidia-settings.
+#
+# Defines NVIDIA_SETTINGS_SRC, NVIDIA_SETTINGS_EXTRA_DIST, and
+# NVIDIA_SETTINGS_DIST_FILES
+##############################################################################
+
+
#
@@ -13,2 +24,4 @@ SRC_SRC += glxinfo.c
+NVIDIA_SETTINGS_SRC += $(SRC_SRC)
+
SRC_EXTRA_DIST += src.mk
@@ -23 +36,238 @@ SRC_EXTRA_DIST += glxinfo.h
SRC_EXTRA_DIST += gen-manpage-opts.c
+
+NVIDIA_SETTINGS_EXTRA_DIST += $(SRC_EXTRA_DIST)
+
+#
+# files in the src/image_data directory of nvidia-settings
+#
+
+IMAGE_DATA_SRC +=
+
+IMAGE_DATA_EXTRA_DIST += image_data/HOWTO-ADD-IMAGES
+IMAGE_DATA_EXTRA_DIST += image_data/antialias.png
+IMAGE_DATA_EXTRA_DIST += image_data/antialias_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/background.png
+IMAGE_DATA_EXTRA_DIST += image_data/background_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/background_tall.png
+IMAGE_DATA_EXTRA_DIST += image_data/background_tall_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/bnc_cable.png
+IMAGE_DATA_EXTRA_DIST += image_data/bnc_cable_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/bsd.png
+IMAGE_DATA_EXTRA_DIST += image_data/bsd_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/clock.png
+IMAGE_DATA_EXTRA_DIST += image_data/clock_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/color.png
+IMAGE_DATA_EXTRA_DIST += image_data/color_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/config.png
+IMAGE_DATA_EXTRA_DIST += image_data/config_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/crt.png
+IMAGE_DATA_EXTRA_DIST += image_data/crt_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/cursor_shadow.png
+IMAGE_DATA_EXTRA_DIST += image_data/cursor_shadow_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/dfp.png
+IMAGE_DATA_EXTRA_DIST += image_data/dfp_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/display_config.png
+IMAGE_DATA_EXTRA_DIST += image_data/display_config_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/framelock.png
+IMAGE_DATA_EXTRA_DIST += image_data/framelock_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/glx.png
+IMAGE_DATA_EXTRA_DIST += image_data/glx_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/gpu.png
+IMAGE_DATA_EXTRA_DIST += image_data/gpu_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/gvi.png
+IMAGE_DATA_EXTRA_DIST += image_data/gvi_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/help.png
+IMAGE_DATA_EXTRA_DIST += image_data/help_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/led_green.png
+IMAGE_DATA_EXTRA_DIST += image_data/led_green_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/led_grey.png
+IMAGE_DATA_EXTRA_DIST += image_data/led_grey_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/led_red.png
+IMAGE_DATA_EXTRA_DIST += image_data/led_red_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/logo.png
+IMAGE_DATA_EXTRA_DIST += image_data/logo_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/logo_tall.png
+IMAGE_DATA_EXTRA_DIST += image_data/logo_tall_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/nvidia_icon.png
+IMAGE_DATA_EXTRA_DIST += image_data/nvidia_icon_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/opengl.png
+IMAGE_DATA_EXTRA_DIST += image_data/opengl_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/penguin.png
+IMAGE_DATA_EXTRA_DIST += image_data/penguin_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/png_to_c_header.sh
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_input.png
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_input_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_output.png
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_output_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_unused.png
+IMAGE_DATA_EXTRA_DIST += image_data/rj45_unused_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/sdi.png
+IMAGE_DATA_EXTRA_DIST += image_data/sdi_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/sdi_shared_sync_bnc.png
+IMAGE_DATA_EXTRA_DIST += image_data/sdi_shared_sync_bnc_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/slimm.png
+IMAGE_DATA_EXTRA_DIST += image_data/slimm_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/solaris.png
+IMAGE_DATA_EXTRA_DIST += image_data/solaris_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/svp_3dvp.png
+IMAGE_DATA_EXTRA_DIST += image_data/svp_3dvp_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/thermal.png
+IMAGE_DATA_EXTRA_DIST += image_data/thermal_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/tv.png
+IMAGE_DATA_EXTRA_DIST += image_data/tv_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/vcs.png
+IMAGE_DATA_EXTRA_DIST += image_data/vcs_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/x.png
+IMAGE_DATA_EXTRA_DIST += image_data/x_pixdata.h
+IMAGE_DATA_EXTRA_DIST += image_data/xvideo.png
+IMAGE_DATA_EXTRA_DIST += image_data/xvideo_pixdata.h
+
+NVIDIA_SETTINGS_EXTRA_DIST += $(IMAGE_DATA_EXTRA_DIST)
+
+#
+# files in the src/libXNVCtrlAttributes directory of nvidia-settings
+#
+
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributes.c
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributesNvControl.c
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributesVidMode.c
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributesXv.c
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributesGlx.c
+LIB_XNVCTRL_ATTRIBUTES_SRC += libXNVCtrlAttributes/NvCtrlAttributesXrandr.c
+
+NVIDIA_SETTINGS_SRC += $(LIB_XNVCTRL_ATTRIBUTES_SRC)
+
+LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST += libXNVCtrlAttributes/NvCtrlAttributes.h
+LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST += libXNVCtrlAttributes/NvCtrlAttributesPrivate.h
+
+NVIDIA_SETTINGS_EXTRA_DIST += $(LIB_XNVCTRL_ATTRIBUTES_EXTRA_DIST)
+
+#
+# files in the src/xpm_data directory of nvidia-settings
+#
+
+LIB_XPM_DATA_SRC +=
+
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/blue_xpm.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/green_xpm.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/red_xpm.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/rgb_xpm.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_add_glasses.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_autopick_next_channel.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_battery_0.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_battery_100.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_battery_25.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_battery_50.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_battery_75.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_excellent.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_good.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_low.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_nosignal.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_verygood.h
+LIB_XPM_DATA_EXTRA_DIST += xpm_data/svp_status_verylow.h
+
+NVIDIA_SETTINGS_EXTRA_DIST += $(LIB_XPM_DATA_EXTRA_DIST)
+
+#
+# files in the src/gtk+-2.x directory of nvidia-settings
+#
+
+GTK_SRC += gtk+-2.x/ctkxvideo.c
+GTK_SRC += gtk+-2.x/ctkcursorshadow.c
+GTK_SRC += gtk+-2.x/ctkui.c
+GTK_SRC += gtk+-2.x/ctkframelock.c
+GTK_SRC += gtk+-2.x/ctkgauge.c
+GTK_SRC += gtk+-2.x/ctkcurve.c
+GTK_SRC += gtk+-2.x/ctkcolorcorrection.c
+GTK_SRC += gtk+-2.x/ctkscale.c
+GTK_SRC += gtk+-2.x/ctkmultisample.c
+GTK_SRC += gtk+-2.x/ctkconfig.c
+GTK_SRC += gtk+-2.x/ctkevent.c
+GTK_SRC += gtk+-2.x/ctkwindow.c
+GTK_SRC += gtk+-2.x/ctkopengl.c
+GTK_SRC += gtk+-2.x/ctkglx.c
+GTK_SRC += gtk+-2.x/ctkhelp.c
+GTK_SRC += gtk+-2.x/ctkimagesliders.c
+GTK_SRC += gtk+-2.x/ctkdisplaydevice-crt.c
+GTK_SRC += gtk+-2.x/ctkdisplaydevice-tv.c
+GTK_SRC += gtk+-2.x/ctkdisplaydevice.c
+GTK_SRC += gtk+-2.x/ctkditheringcontrols.c
+GTK_SRC += gtk+-2.x/ctkthermal.c
+GTK_SRC += gtk+-2.x/ctkpowermizer.c
+GTK_SRC += gtk+-2.x/ctkgvo.c
+GTK_SRC += gtk+-2.x/ctkgvo-csc.c
+GTK_SRC += gtk+-2.x/ctkdropdownmenu.c
+GTK_SRC += gtk+-2.x/ctkclocks.c
+GTK_SRC += gtk+-2.x/ctkutils.c
+GTK_SRC += gtk+-2.x/ctkedid.c
+GTK_SRC += gtk+-2.x/ctkserver.c
+GTK_SRC += gtk+-2.x/ctkdisplaylayout.c
+GTK_SRC += gtk+-2.x/ctkdisplayconfig.c
+GTK_SRC += gtk+-2.x/ctkscreen.c
+GTK_SRC += gtk+-2.x/ctkslimm.c
+GTK_SRC += gtk+-2.x/ctkgpu.c
+GTK_SRC += gtk+-2.x/ctkbanner.c
+GTK_SRC += gtk+-2.x/ctkvcs.c
+GTK_SRC += gtk+-2.x/ctkdisplayconfig-utils.c
+GTK_SRC += gtk+-2.x/ctkgvo-banner.c
+GTK_SRC += gtk+-2.x/ctkgvo-sync.c
+GTK_SRC += gtk+-2.x/ctkpowersavings.c
+GTK_SRC += gtk+-2.x/ctkgvi.c
+GTK_SRC += gtk+-2.x/ctklicense.c
+GTK_SRC += gtk+-2.x/ctkecc.c
+GTK_SRC += gtk+-2.x/ctkcolorcontrols.c
+GTK_SRC += gtk+-2.x/ctk3dvisionpro.c
+
+NVIDIA_SETTINGS_SRC += $(GTK_SRC)
+
+GTK_EXTRA_DIST += gtk+-2.x/ctkxvideo.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkcursorshadow.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkui.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkframelock.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgauge.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkcurve.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkcolorcorrection.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkscale.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkmultisample.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkconfig.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkevent.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkwindow.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkopengl.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkglx.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkhelp.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkimagesliders.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplaydevice-crt.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplaydevice-tv.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplaydevice.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkditheringcontrols.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkconstants.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkthermal.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkpowermizer.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgvo.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgvo-csc.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdropdownmenu.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkclocks.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkutils.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkedid.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkserver.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplaylayout.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplayconfig.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkscreen.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkslimm.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgpu.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkbanner.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkvcs.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkdisplayconfig-utils.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkpowersavings.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgvo-banner.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgvo-sync.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkgvi.h
+GTK_EXTRA_DIST += gtk+-2.x/ctklicense.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkecc.h
+GTK_EXTRA_DIST += gtk+-2.x/ctkcolorcontrols.h
+GTK_EXTRA_DIST += gtk+-2.x/ctk3dvisionpro.h
+
+NVIDIA_SETTINGS_EXTRA_DIST += $(GTK_EXTRA_DIST)
+
+NVIDIA_SETTINGS_DIST_FILES += $(NVIDIA_SETTINGS_SRC)
+NVIDIA_SETTINGS_DIST_FILES += $(NVIDIA_SETTINGS_EXTRA_DIST)
diff --git a/src/version.mk b/src/version.mk
new file mode 100644
index 0000000..c29a7ba
--- /dev/null
+++ b/src/version.mk
@@ -0,0 +1 @@
+NVIDIA_VERSION = 302.07
diff --git a/src/xpm_data/src.mk b/src/xpm_data/src.mk
deleted file mode 100644
index a4432b4..0000000
--- a/src/xpm_data/src.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# files in the src/xpm_data directory of nvidia-settings
-#
-
-LIB_XPM_DATA_SRC +=
-
-LIB_XPM_DATA_EXTRA_DIST += blue_xpm.h
-LIB_XPM_DATA_EXTRA_DIST += green_xpm.h
-LIB_XPM_DATA_EXTRA_DIST += red_xpm.h
-LIB_XPM_DATA_EXTRA_DIST += rgb_xpm.h
-LIB_XPM_DATA_EXTRA_DIST += src.mk
-LIB_XPM_DATA_EXTRA_DIST += svp_add_glasses.h
-LIB_XPM_DATA_EXTRA_DIST += svp_autopick_next_channel.h
-LIB_XPM_DATA_EXTRA_DIST += svp_battery_0.h
-LIB_XPM_DATA_EXTRA_DIST += svp_battery_100.h
-LIB_XPM_DATA_EXTRA_DIST += svp_battery_25.h
-LIB_XPM_DATA_EXTRA_DIST += svp_battery_50.h
-LIB_XPM_DATA_EXTRA_DIST += svp_battery_75.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_excellent.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_good.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_low.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_nosignal.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_verygood.h
-LIB_XPM_DATA_EXTRA_DIST += svp_status_verylow.h
diff --git a/utils.mk b/utils.mk
index 32014a3..2a7a9cf 100644
--- a/utils.mk
+++ b/utils.mk
@@ -30,5 +30,6 @@ CC ?= gcc
LD ?= ld
-CFLAGS ?=
-CFLAGS += -Wall -fno-strict-aliasing -Wno-unused-parameter
-CFLAGS += -O2 -fno-omit-frame-pointer
+# only set these warnings and optimizations if CFLAGS is unset
+CFLAGS ?= -Wall -Wno-unused-parameter -O2
+# always set these -f CFLAGS
+CFLAGS += -fno-strict-aliasing -fno-omit-frame-pointer
CC_ONLY_CFLAGS ?=
@@ -95,5 +96,5 @@ endif
ifeq ($(TARGET_OS),Linux)
- LIBDL_LDFLAGS = -ldl
+ LIBDL_LIBS = -ldl
else
- LIBDL_LDFLAGS =
+ LIBDL_LIBS =
endif
@@ -126,7 +127,6 @@ endif
-prefix = /usr/local
+PREFIX ?= /usr/local
-exec_prefix = $(prefix)
-bindir = $(exec_prefix)/bin
-mandir = $(exec_prefix)/share/man/man1
+BINDIR = $(DESTDIR)$(PREFIX)/bin
+MANDIR = $(DESTDIR)$(PREFIX)/share/man/man1
@@ -147,6 +147,12 @@ default build: all
# source directory when building from the source tarball
+#
+# Throw an error if one of these two places did not define NVIDIA_VERSION.
##############################################################################
-include $(wildcard $(OUTPUTDIR)/version.mk version.mk)
+VERSION_MK := $(wildcard $(OUTPUTDIR)/version.mk version.mk)
+include $(VERSION_MK)
+ifndef NVIDIA_VERSION
+$(error NVIDIA_VERSION undefined)
+endif
@@ -262,3 +268,3 @@ define DEFINE_OBJECT_RULE_WITH_OBJECT_NAME
@$(MKDIR) $(OUTPUTDIR)
- $$(call quiet_cmd,$(1)) -c $$< -o $$@ $$(CFLAGS) \
+ $$(call quiet_cmd,$(1)) $$(CFLAGS) -c $$< -o $$@ \
$(call AUTO_DEP_CMD,$(1),$(2),$(3))
@@ -300,3 +306,3 @@ define DEFINE_STAMP_C_RULE
$$(call BUILD_OBJECT_LIST,$$(STAMP_C)),$(1)) \
- $$(wildcard version.mk $$(OUTPUTDIR)/version.mk)
+ $$(VERSION_MK)
@ $$(RM) $$@
diff --git a/version.mk b/version.mk
index 11eb84d..c29a7ba 100644
--- a/version.mk
+++ b/version.mk
@@ -1 +1 @@
-NVIDIA_VERSION = 295.40
+NVIDIA_VERSION = 302.07