diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-10-24 11:30:15 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-10-30 12:56:19 +0000 |
commit | 6036726eb981b6c4b42047513b9d3f4ac865daac (patch) | |
tree | 673593e70678e7789766d1f732eb51f613a2703b /chromium/third_party/ffmpeg | |
parent | 466052c4e7c052268fd931888cd58961da94c586 (diff) | |
download | qtwebengine-chromium-6036726eb981b6c4b42047513b9d3f4ac865daac.tar.gz |
BASELINE: Update Chromium to 70.0.3538.78
Change-Id: Ie634710bf039e26c1957f4ae45e101bd4c434ae7
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/ffmpeg')
288 files changed, 23586 insertions, 2515 deletions
diff --git a/chromium/third_party/ffmpeg/Changelog b/chromium/third_party/ffmpeg/Changelog index 784e09aeae5..807a05dec92 100644 --- a/chromium/third_party/ffmpeg/Changelog +++ b/chromium/third_party/ffmpeg/Changelog @@ -12,6 +12,10 @@ version <next>: - adeclick filter - adeclip filter - libtensorflow backend for DNN based filters like srcnn +- vc1 decoder is now bit-exact +- ATRAC9 decoder +- lensfun wrapper filter +- colorconstancy filter version 4.0: diff --git a/chromium/third_party/ffmpeg/MAINTAINERS b/chromium/third_party/ffmpeg/MAINTAINERS index 78f450dda60..234b655cefb 100644 --- a/chromium/third_party/ffmpeg/MAINTAINERS +++ b/chromium/third_party/ffmpeg/MAINTAINERS @@ -332,6 +332,7 @@ Filters: vf_bwdif Thomas Mundt (CC <thomas.mundt@hr.de>) vf_chromakey.c Timo Rothenpieler vf_colorchannelmixer.c Paul B Mahol + vf_colorconstancy.c Mina Sami (CC <minas.gorgy@gmail.com>) vf_colorbalance.c Paul B Mahol vf_colorkey.c Timo Rothenpieler vf_colorlevels.c Paul B Mahol diff --git a/chromium/third_party/ffmpeg/Makefile b/chromium/third_party/ffmpeg/Makefile index 0cd0a1d6f2d..4bf1dfedcfc 100644 --- a/chromium/third_party/ffmpeg/Makefile +++ b/chromium/third_party/ffmpeg/Makefile @@ -58,6 +58,7 @@ tools/target_dec_%_fuzzer$(EXESUF): $(FF_DEP_LIBS) CONFIGURABLE_COMPONENTS = \ $(wildcard $(FFLIBS:%=$(SRC_PATH)/lib%/all*.c)) \ $(SRC_PATH)/libavcodec/bitstream_filters.c \ + $(SRC_PATH)/libavcodec/parsers.c \ $(SRC_PATH)/libavformat/protocols.c \ config.h: ffbuild/.config diff --git a/chromium/third_party/ffmpeg/README.chromium b/chromium/third_party/ffmpeg/README.chromium index 43b8ef6fe72..fe45954f4e2 100644 --- a/chromium/third_party/ffmpeg/README.chromium +++ b/chromium/third_party/ffmpeg/README.chromium @@ -3,7 +3,7 @@ URL: http://ffmpeg.org/ License: LGPL 2.1 License File: CREDITS.chromium Upstream Git: git://source.ffmpeg.org/ffmpeg.git -Last Upstream Merge: 2c2d689c56646cce64d02a3b75f61c12c5589260, May 21 2018 +Last Upstream Merge: a5c17cf43e42ae3562a66a3f350cd1619361a395, July 31 2018 This file documents the layout of the Chromium copy of FFmpeg, some common tasks, and how to create the build files and related configurations. diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/config.h index 339941f2b09..ad802dac571 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-16/arch-arm --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/arm-linux-androideabi --extra-cflags='--target=arm-linux-androideabi' --extra-ldflags='--target=arm-linux-androideabi' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-neon --extra-cflags='-mtune=generic-armv7-a' --extra-cflags='-mfloat-abi=softfp' --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-16/arch-arm --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/arm-linux-androideabi --extra-cflags='--target=arm-linux-androideabi' --extra-ldflags='--target=arm-linux-androideabi' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-neon --extra-cflags='-mtune=generic-armv7-a' --extra-cflags='-mfloat-abi=softfp' --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm-neon/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/config.h index 085d3886690..5712a07f393 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-21/arch-arm64 --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/aarch64-linux-android --extra-cflags='--target=aarch64-linux-android' --extra-ldflags='--target=aarch64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-21/arch-arm64 --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/aarch64-linux-android --extra-cflags='--target=aarch64-linux-android' --extra-ldflags='--target=aarch64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/arm64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/config.h index 55fd903565f..f3044376095 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-16/arch-x86 --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/i686-linux-android --extra-cflags='--target=i686-linux-android' --extra-ldflags='--target=i686-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/x86-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --disable-x86asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-16/arch-x86 --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/i686-linux-android --extra-cflags='--target=i686-linux-android' --extra-ldflags='--target=i686-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/x86-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --disable-x86asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/ia32/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/config.h index 8275115e7b2..abef9eb52ac 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-21/arch-mips64 --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/mips64el-linux-android --extra-cflags='--target=mips64el-linux-android' --extra-ldflags='--target=mips64el-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-mips64r6 --extra-cflags='-mcpu=mips64r6' --disable-mips64r2 --enable-msa --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-21/arch-mips64 --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/mips64el-linux-android --extra-cflags='--target=mips64el-linux-android' --extra-ldflags='--target=mips64el-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-mips64r6 --extra-cflags='-mcpu=mips64r6' --disable-mips64r2 --enable-msa --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mips64el/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/config.h index 9ae8143f3a1..201cb5f1916 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-16/arch-mips --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/mipsel-linux-android --extra-cflags='--target=mipsel-linux-android' --extra-ldflags='--target=mipsel-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/mipsel-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-16/arch-mips --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/mipsel-linux-android --extra-cflags='--target=mipsel-linux-android' --extra-ldflags='--target=mipsel-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/mipsel-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/mipsel/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.asm index 5bf2a343f44..2652b409b96 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.h index 24233614296..fd77750dfbb 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-21/arch-x86_64 --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/x86_64-linux-android --extra-cflags='--target=x86_64-linux-android' --extra-ldflags='--target=x86_64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/x86_64-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=x86_64 --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-21/arch-x86_64 --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/x86_64-linux-android --extra-cflags='--target=x86_64-linux-android' --extra-ldflags='--target=x86_64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/x86_64-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=x86_64 --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-demuxer=aac --enable-parser=aac --enable-decoder=aac" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/android/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/config.h index 15c9f4620e2..1dd5a7e09de 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux-noasm/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/config.h index 612aeab1648..f3e73ea97ba 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm-neon/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h index 8999bbfca09..5b1bab8d90f 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h index f1374f66b55..29af8c4d6d2 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/arm64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.asm index b6cd026d28f..b1b412798ed 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.h index 65d19be18d2..ad9576cd927 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/ia32/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/config.h index 98a87b7c7d7..9f9d18c8f73 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mips64el/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/config.h index 4d2d68d433c..813b34175e8 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/mipsel/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.asm index 98a4d7133fd..8ecf078d618 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.h index 2b6fb3d43d7..026747b2ca1 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/linux/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.asm index 44d4044ad04..a4d3e3fdecb 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.h index 69722f139f8..99425f23c5d 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-cross-compile --cc=clang --ld=ld64.lld --nm=llvm-nm --ar=llvm-ar --target-os=darwin --extra-cflags='--target=i686-apple-darwin-macho' --extra-cflags=-F/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks --extra-cflags='-mmacosx-version-min=10.10' --extra-cflags=-fblocks --extra-cflags=-nostdinc --extra-cflags=-isystem/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include --extra-cflags=-isystem/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1 --extra-cflags=-isystem/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include/ --extra-ldflags=-syslibroot --extra-ldflags=/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk --extra-ldflags=-L/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib --extra-ldflags=-lSystem --extra-ldflags=-macosx_version_min --extra-ldflags=10.10 --extra-ldflags=-sdk_version --extra-ldflags=10.10 --arch=x86_64 --extra-cflags=-m64 --extra-ldflags=-m64 --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-cross-compile --cc=clang --ld=ld64.lld --nm=llvm-nm --ar=llvm-ar --target-os=darwin --extra-cflags='--target=i686-apple-darwin-macho' --extra-cflags=-F/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks --extra-cflags='-mmacosx-version-min=10.10' --extra-cflags=-fblocks --extra-cflags=-nostdinc --extra-cflags=-isystem/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include --extra-cflags=-isystem/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1 --extra-cflags=-isystem/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include/ --extra-ldflags=-syslibroot --extra-ldflags=/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk --extra-ldflags=-L/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib --extra-ldflags=-lSystem --extra-ldflags=-macosx_version_min --extra-ldflags=10.10 --extra-ldflags=-sdk_version --extra-ldflags=10.10 --arch=x86_64 --extra-cflags=-m64 --extra-ldflags=-m64 --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "_" #define EXTERN_ASM _ @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/mac/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.asm index 4d6d7396a98..4e63c0899ba 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.h index 65689976f16..b105e818c70 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/config.h @@ -1,7 +1,7 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/ffmpeg/chromium/include/win --target-os=win32 --enable-cross-compile --cc=clang-cl --ld=lld-link --nm=llvm-nm --ar=llvm-ar --extra-cflags=-O2 --extra-cflags=-m32 --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/um --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/shared --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/winrt --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/ucrt --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/include --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/include --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x86' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x86' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x86' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x86' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/chromium/include/win --target-os=win32 --enable-cross-compile --cc=clang-cl --ld=lld-link --nm=llvm-nm --ar=llvm-ar --extra-cflags=-O2 --extra-cflags=-m32 --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/um --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/shared --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/winrt --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/ucrt --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/include --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/include --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x86' --extra-ldflags='-libpath:-libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x86 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x86 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x86 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x86' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x86' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x86' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x86' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/ia32/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.asm index 50a29f2c078..23b15575fa5 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.h index ac4d5d30e26..370f57a52c7 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/config.h @@ -1,7 +1,7 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/ffmpeg/chromium/include/win --target-os=win64 --enable-cross-compile --cc=clang-cl --ld=lld-link --nm=llvm-nm --ar=llvm-ar --extra-cflags=-O2 --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/um --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/shared --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/winrt --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/ucrt --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/include --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/include --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x64' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x64' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x64' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x64' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/chromium/include/win --target-os=win64 --enable-cross-compile --cc=clang-cl --ld=lld-link --nm=llvm-nm --ar=llvm-ar --extra-cflags=-O2 --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/um --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/shared --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/winrt --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/ucrt --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/include --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/include --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x64' --extra-ldflags='-libpath:-libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x64 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x64 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x64 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x64' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x64' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x64' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x64' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chrome/win/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/config.h index cd87f49d618..9afab4de858 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux-noasm/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/config.h index 7080200a5dc..2b28acb7650 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm-neon/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/config.h index 26d6544c4ca..747fb4e7f0b 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h index bd288c1d18e..a38d08cbb9c 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/arm64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.asm b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.asm index 3d6f63fcb58..28292cc300d 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.h index aa433ab6117..01075800f09 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/ia32/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/config.h index 177be757239..f44ba1bf058 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mips64el/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/config.h index 7b5e14f7214..44ca065d82c 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/mipsel/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.asm index db2389340bf..8645bfc4516 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.h index ab16fe003b5..4d851be838c 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld' --enable-decoder='aac,h264' --enable-demuxer=aac --enable-parser='aac,h264' --enable-decoder=mpeg4 --enable-parser='h263,mpeg4video' --enable-demuxer=avi --enable-demuxer=amr --enable-decoder='amrnb,amrwb' --enable-decoder=gsm_ms --enable-parser=gsm" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/ChromeOS/linux/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/config.h index 2898620950c..5f542d540fe 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-16/arch-arm --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/arm-linux-androideabi --extra-cflags='--target=arm-linux-androideabi' --extra-ldflags='--target=arm-linux-androideabi' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-neon --extra-cflags='-mtune=generic-armv7-a' --extra-cflags='-mfloat-abi=softfp' --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-16/arch-arm --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/arm-linux-androideabi --extra-cflags='--target=arm-linux-androideabi' --extra-ldflags='--target=arm-linux-androideabi' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-neon --extra-cflags='-mtune=generic-armv7-a' --extra-cflags='-mfloat-abi=softfp' --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm-neon/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/config.h index 4b072c561bb..ceb7440abc8 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-21/arch-arm64 --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/aarch64-linux-android --extra-cflags='--target=aarch64-linux-android' --extra-ldflags='--target=aarch64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-21/arch-arm64 --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/aarch64-linux-android --extra-cflags='--target=aarch64-linux-android' --extra-ldflags='--target=aarch64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/arm64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/config.h index b1e8557ba80..10847311f72 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-16/arch-x86 --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/i686-linux-android --extra-cflags='--target=i686-linux-android' --extra-ldflags='--target=i686-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/x86-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --disable-x86asm --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-16/arch-x86 --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/i686-linux-android --extra-cflags='--target=i686-linux-android' --extra-ldflags='--target=i686-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/x86-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --disable-x86asm --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/ia32/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/config.h index 931d20dee99..b61b4e0153a 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-21/arch-mips64 --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/mips64el-linux-android --extra-cflags='--target=mips64el-linux-android' --extra-ldflags='--target=mips64el-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-mips64r6 --extra-cflags='-mcpu=mips64r6' --disable-mips64r2 --enable-msa --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-21/arch-mips64 --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/mips64el-linux-android --extra-cflags='--target=mips64el-linux-android' --extra-ldflags='--target=mips64el-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/mips64el-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-mips64r6 --extra-cflags='-mcpu=mips64r6' --disable-mips64r2 --enable-msa --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mips64el/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/config.h index dd4426ba7c4..e87d6d7b84e 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-16/arch-mips --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/mipsel-linux-android --extra-cflags='--target=mipsel-linux-android' --extra-ldflags='--target=mipsel-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/mipsel-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-16/arch-mips --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/mipsel-linux-android --extra-cflags='--target=mipsel-linux-android' --extra-ldflags='--target=mipsel-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/mipsel-linux-android-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/mipsel/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.asm index 539c82573c7..6ee7848a17a 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.h index dfad80548c3..3e19915cc88 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google2/chrome-client2/src/third_party/android_ndk/platforms/android-21/arch-x86_64 --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/android_ndk/sysroot/usr/include/x86_64-linux-android --extra-cflags='--target=x86_64-linux-android' --extra-ldflags='--target=x86_64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google2/chrome-client2/src/third_party/android_ndk/toolchains/x86_64-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=x86_64 --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --enable-small --enable-cross-compile --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/platforms/android-21/arch-x86_64 --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/sysroot/usr/include/x86_64-linux-android --extra-cflags='--target=x86_64-linux-android' --extra-ldflags='--target=x86_64-linux-android' --extra-ldflags='--gcc-toolchain=/usr/local/google/home/tguilbert/Code/chromium/src/third_party/android_ndk/toolchains/x86_64-4.9/prebuilt/linux-x86_64/' --target-os=android --arch=x86_64 --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/android/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/config.h index 48125a55e0f..17065061057 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --disable-asm --disable-inline-asm --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux-noasm/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h index abd5b584c4e..aedb5a0af35 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --enable-neon --extra-cflags='-mfpu=neon' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm-neon/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h index 8d6e7ea3b01..b814942f09d 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=arm --enable-armv6 --enable-armv6t2 --enable-vfp --enable-thumb --extra-cflags='-march=armv7-a' --enable-cross-compile --target-os=linux --extra-cflags='--target=arm-linux-gnueabihf' --extra-ldflags='--target=arm-linux-gnueabihf' --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_arm-sysroot --extra-cflags='-mtune=cortex-a8' --extra-cflags='-mfloat-abi=hard' --extra-cflags=-O2 --disable-neon --extra-cflags='-mfpu=vfpv3-d16' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h index 503cefe255c..8ce6e73e9d6 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --target-os=linux --extra-cflags='--target=aarch64-linux-gnu' --extra-ldflags='--target=aarch64-linux-gnu' --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_arm64-sysroot --arch=aarch64 --enable-armv8 --extra-cflags='-march=armv8-a' --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/arm64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.asm index 319dab08334..0cd31d21d66 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h index a53a6f8816c..af44931cf23 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=i686 --extra-cflags='\"-m32\"' --extra-ldflags='\"-m32\"' --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ia32/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/config.h index d975268be05..2674f067ba4 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mips64el --enable-mipsfpu --disable-mipsdsp --disable-mipsdspr2 --extra-cflags='-march=mips64el' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_mips64el-sysroot --enable-mips64r2 --disable-mips64r6 --disable-msa --extra-cflags='-mcpu=mips64r2' --extra-cflags='--target=mips64el-linux-gnuabi64' --extra-ldflags='--target=mips64el-linux-gnuabi64' --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mips64el/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/config.h index ccd97e8e78d..f5231148de6 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google2/chrome-client2/src/build/linux/debian_sid_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --arch=mipsel --disable-mips32r6 --disable-mips32r5 --disable-mips32r2 --disable-mipsdsp --disable-mipsdspr2 --disable-msa --enable-mipsfpu --extra-cflags='-march=mipsel' --extra-cflags='-mcpu=mips32' --extra-ldflags='-z notext' --enable-cross-compile --target-os=linux --sysroot=/usr/local/google/home/tguilbert/Code/chromium/src/build/linux/debian_sid_mips-sysroot --extra-cflags='--target=mipsel-linux-gnu' --extra-ldflags='--target=mipsel-linux-gnu' --enable-pic --cc=clang --cxx=clang++ --ld=clang" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/mipsel/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.asm index 091f0353afd..191dabc3f37 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h index 276c64964c2..3c9b98446d1 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-lto --enable-pic --cc=clang --cxx=clang++ --ld=clang --extra-ldflags='-fuse-ld=lld'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "" #define EXTERN_ASM @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.asm index 91fdc089d4a..a8eb7c343ee 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.h index 9c6e4bf483b..bf3b66faf07 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/config.h @@ -1,12 +1,12 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-cross-compile --cc=clang --ld=ld64.lld --nm=llvm-nm --ar=llvm-ar --target-os=darwin --extra-cflags='--target=i686-apple-darwin-macho' --extra-cflags=-F/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks --extra-cflags='-mmacosx-version-min=10.10' --extra-cflags=-fblocks --extra-cflags=-nostdinc --extra-cflags=-isystem/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include --extra-cflags=-isystem/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1 --extra-cflags=-isystem/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include/ --extra-ldflags=-syslibroot --extra-ldflags=/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk --extra-ldflags=-L/usr/local/google2/chrome-client2/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib --extra-ldflags=-lSystem --extra-ldflags=-macosx_version_min --extra-ldflags=10.10 --extra-ldflags=-sdk_version --extra-ldflags=10.10 --arch=x86_64 --extra-cflags=-m64 --extra-ldflags=-m64" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --enable-pic --cc=clang --cxx=clang++ --ld=clang --enable-cross-compile --cc=clang --ld=ld64.lld --nm=llvm-nm --ar=llvm-ar --target-os=darwin --extra-cflags='--target=i686-apple-darwin-macho' --extra-cflags=-F/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks --extra-cflags='-mmacosx-version-min=10.10' --extra-cflags=-fblocks --extra-cflags=-nostdinc --extra-cflags=-isystem/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include --extra-cflags=-isystem/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/c++/4.2.1 --extra-cflags=-isystem/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/8.1.0/include/ --extra-ldflags=-syslibroot --extra-ldflags=/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk --extra-ldflags=-L/usr/local/google/home/tguilbert/Code/chromium/src/build/win_files/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib --extra-ldflags=-lSystem --extra-ldflags=-macosx_version_min --extra-ldflags=10.10 --extra-ldflags=-sdk_version --extra-ldflags=10.10 --arch=x86_64 --extra-cflags=-m64 --extra-ldflags=-m64" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" #define AVCONV_DATADIR "/usr/local/share/ffmpeg" -#define CC_IDENT "clang version 7.0.0 (trunk 334100)" +#define CC_IDENT "clang version 7.0.0 (trunk 337439)" #define av_restrict restrict #define EXTERN_PREFIX "_" #define EXTERN_ASM _ @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/mac/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.asm index 575c59c9966..f97b64edc1d 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.h index 1a85384d281..a6e3f217a0b 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/config.h @@ -1,7 +1,7 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/ffmpeg/chromium/include/win --target-os=win32 --enable-cross-compile --cc=clang-cl --ld=lld-link --nm=llvm-nm --ar=llvm-ar --extra-cflags=-O2 --extra-cflags=-m32 --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/um --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/shared --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/winrt --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/ucrt --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/include --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/include --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x86' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x86' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x86' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x86'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/chromium/include/win --target-os=win32 --enable-cross-compile --cc=clang-cl --ld=lld-link --nm=llvm-nm --ar=llvm-ar --extra-cflags=-O2 --extra-cflags=-m32 --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/um --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/shared --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/winrt --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/ucrt --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/include --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/include --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x86' --extra-ldflags='-libpath:-libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x86 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x86 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x86 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x86' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x86' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x86' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x86'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/ia32/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.asm b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.asm index 15d70c44837..5e267bca6d2 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.asm +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.asm @@ -402,6 +402,7 @@ %define CONFIG_OPENSSL 0 %define CONFIG_LIBTLS 0 %define CONFIG_GMP 0 +%define CONFIG_LIBLENSFUN 0 %define CONFIG_LIBOPENCORE_AMRNB 0 %define CONFIG_LIBOPENCORE_AMRWB 0 %define CONFIG_LIBVMAF 0 @@ -956,6 +957,7 @@ %define CONFIG_ATRAC3AL_DECODER 0 %define CONFIG_ATRAC3P_DECODER 0 %define CONFIG_ATRAC3PAL_DECODER 0 +%define CONFIG_ATRAC9_DECODER 0 %define CONFIG_BINKAUDIO_DCT_DECODER 0 %define CONFIG_BINKAUDIO_RDFT_DECODER 0 %define CONFIG_BMV_AUDIO_DECODER 0 @@ -1641,6 +1643,7 @@ %define CONFIG_BLACKFRAME_FILTER 0 %define CONFIG_BLEND_FILTER 0 %define CONFIG_BOXBLUR_FILTER 0 +%define CONFIG_BOXBLUR_OPENCL_FILTER 0 %define CONFIG_BWDIF_FILTER 0 %define CONFIG_CHROMAKEY_FILTER 0 %define CONFIG_CIESCOPE_FILTER 0 @@ -1709,6 +1712,7 @@ %define CONFIG_GBLUR_FILTER 0 %define CONFIG_GEQ_FILTER 0 %define CONFIG_GRADFUN_FILTER 0 +%define CONFIG_GREYEDGE_FILTER 0 %define CONFIG_HALDCLUT_FILTER 0 %define CONFIG_HFLIP_FILTER 0 %define CONFIG_HISTEQ_FILTER 0 @@ -1729,6 +1733,7 @@ %define CONFIG_INTERLEAVE_FILTER 0 %define CONFIG_KERNDEINT_FILTER 0 %define CONFIG_LENSCORRECTION_FILTER 0 +%define CONFIG_LENSFUN_FILTER 0 %define CONFIG_LIBVMAF_FILTER 0 %define CONFIG_LIMITER_FILTER 0 %define CONFIG_LOOP_FILTER 0 @@ -1774,6 +1779,7 @@ %define CONFIG_PP7_FILTER 0 %define CONFIG_PREMULTIPLY_FILTER 0 %define CONFIG_PREWITT_FILTER 0 +%define CONFIG_PREWITT_OPENCL_FILTER 0 %define CONFIG_PROCAMP_VAAPI_FILTER 0 %define CONFIG_PROGRAM_OPENCL_FILTER 0 %define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1790,6 +1796,7 @@ %define CONFIG_REPEATFIELDS_FILTER 0 %define CONFIG_REVERSE_FILTER 0 %define CONFIG_ROBERTS_FILTER 0 +%define CONFIG_ROBERTS_OPENCL_FILTER 0 %define CONFIG_ROTATE_FILTER 0 %define CONFIG_SAB_FILTER 0 %define CONFIG_SCALE_FILTER 0 @@ -1818,9 +1825,10 @@ %define CONFIG_SIGNATURE_FILTER 0 %define CONFIG_SMARTBLUR_FILTER 0 %define CONFIG_SOBEL_FILTER 0 +%define CONFIG_SOBEL_OPENCL_FILTER 0 %define CONFIG_SPLIT_FILTER 0 %define CONFIG_SPP_FILTER 0 -%define CONFIG_SRCNN_FILTER 0 +%define CONFIG_SR_FILTER 0 %define CONFIG_SSIM_FILTER 0 %define CONFIG_STEREO3D_FILTER 0 %define CONFIG_STREAMSELECT_FILTER 0 @@ -1838,6 +1846,7 @@ %define CONFIG_TLUT2_FILTER 0 %define CONFIG_TMIX_FILTER 0 %define CONFIG_TONEMAP_FILTER 0 +%define CONFIG_TONEMAP_OPENCL_FILTER 0 %define CONFIG_TRANSPOSE_FILTER 0 %define CONFIG_TRIM_FILTER 0 %define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.h index 5695ea03fda..bfa6471e433 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/config.h @@ -1,7 +1,7 @@ /* Automatically generated by configure - do not modify! */ #ifndef FFMPEG_CONFIG_H #define FFMPEG_CONFIG_H -/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/usr/local/google2/chrome-client2/src/third_party/ffmpeg/chromium/include/win --target-os=win64 --enable-cross-compile --cc=clang-cl --ld=lld-link --nm=llvm-nm --ar=llvm-ar --extra-cflags=-O2 --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/um --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/shared --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/winrt --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/ucrt --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/include --extra-cflags=-imsvc/usr/local/google2/chrome-client2/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/include --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x64' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x64' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x64' --extra-ldflags='-libpath:/usr/local/google2/chrome-client2/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x64'" -- elide long configuration string from binary */ +/* #define FFMPEG_CONFIGURATION "--disable-everything --disable-all --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --enable-avcodec --enable-avformat --enable-avutil --enable-fft --enable-rdft --enable-static --enable-libopus --disable-debug --disable-bzlib --disable-error-resilience --disable-iconv --disable-lzo --disable-network --disable-schannel --disable-sdl2 --disable-symver --disable-xlib --disable-zlib --disable-securetransport --disable-faan --disable-alsa --disable-autodetect --enable-decoder='vorbis,libopus,flac' --enable-decoder='pcm_u8,pcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,mp3' --enable-decoder='pcm_s16be,pcm_s24be,pcm_mulaw,pcm_alaw' --enable-demuxer='ogg,matroska,wav,flac,mp3,mov' --enable-parser='opus,vorbis,flac,mpegaudio' --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/opus/src/include --disable-linux-perf --x86asmexe=yasm --optflags='\"-O2\"' --enable-decoder='theora,vp8' --enable-parser='vp3,vp8' --toolchain=msvc --extra-cflags=-I/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/chromium/include/win --target-os=win64 --enable-cross-compile --cc=clang-cl --ld=lld-link --nm=llvm-nm --ar=llvm-ar --extra-cflags=-O2 --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/um --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/shared --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/winrt --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Include/10.0.17134.0/ucrt --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/include --extra-cflags=-imsvc/usr/local/google/home/tguilbert/Code/chromium/src/third_party/ffmpeg/../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/include --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x64' --extra-ldflags='-libpath:-libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x64 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x64 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x64 -libpath:../depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/atlmfc/lib/x64' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/ucrt/x64' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/win_sdk/Lib/10.0.17134.0/um/x64' --extra-ldflags='-libpath:/usr/local/google/home/tguilbert/Code/chromium/src/third_party/depot_tools/win_toolchain/vs_files/3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c/VC/Tools/MSVC/14.14.26428/lib/x64'" -- elide long configuration string from binary */ #define FFMPEG_LICENSE "LGPL version 2.1 or later" #define CONFIG_THIS_YEAR 2018 #define FFMPEG_DATADIR "/usr/local/share/ffmpeg" @@ -417,6 +417,7 @@ #define CONFIG_OPENSSL 0 #define CONFIG_LIBTLS 0 #define CONFIG_GMP 0 +#define CONFIG_LIBLENSFUN 0 #define CONFIG_LIBOPENCORE_AMRNB 0 #define CONFIG_LIBOPENCORE_AMRWB 0 #define CONFIG_LIBVMAF 0 @@ -971,6 +972,7 @@ #define CONFIG_ATRAC3AL_DECODER 0 #define CONFIG_ATRAC3P_DECODER 0 #define CONFIG_ATRAC3PAL_DECODER 0 +#define CONFIG_ATRAC9_DECODER 0 #define CONFIG_BINKAUDIO_DCT_DECODER 0 #define CONFIG_BINKAUDIO_RDFT_DECODER 0 #define CONFIG_BMV_AUDIO_DECODER 0 @@ -1656,6 +1658,7 @@ #define CONFIG_BLACKFRAME_FILTER 0 #define CONFIG_BLEND_FILTER 0 #define CONFIG_BOXBLUR_FILTER 0 +#define CONFIG_BOXBLUR_OPENCL_FILTER 0 #define CONFIG_BWDIF_FILTER 0 #define CONFIG_CHROMAKEY_FILTER 0 #define CONFIG_CIESCOPE_FILTER 0 @@ -1724,6 +1727,7 @@ #define CONFIG_GBLUR_FILTER 0 #define CONFIG_GEQ_FILTER 0 #define CONFIG_GRADFUN_FILTER 0 +#define CONFIG_GREYEDGE_FILTER 0 #define CONFIG_HALDCLUT_FILTER 0 #define CONFIG_HFLIP_FILTER 0 #define CONFIG_HISTEQ_FILTER 0 @@ -1744,6 +1748,7 @@ #define CONFIG_INTERLEAVE_FILTER 0 #define CONFIG_KERNDEINT_FILTER 0 #define CONFIG_LENSCORRECTION_FILTER 0 +#define CONFIG_LENSFUN_FILTER 0 #define CONFIG_LIBVMAF_FILTER 0 #define CONFIG_LIMITER_FILTER 0 #define CONFIG_LOOP_FILTER 0 @@ -1789,6 +1794,7 @@ #define CONFIG_PP7_FILTER 0 #define CONFIG_PREMULTIPLY_FILTER 0 #define CONFIG_PREWITT_FILTER 0 +#define CONFIG_PREWITT_OPENCL_FILTER 0 #define CONFIG_PROCAMP_VAAPI_FILTER 0 #define CONFIG_PROGRAM_OPENCL_FILTER 0 #define CONFIG_PSEUDOCOLOR_FILTER 0 @@ -1805,6 +1811,7 @@ #define CONFIG_REPEATFIELDS_FILTER 0 #define CONFIG_REVERSE_FILTER 0 #define CONFIG_ROBERTS_FILTER 0 +#define CONFIG_ROBERTS_OPENCL_FILTER 0 #define CONFIG_ROTATE_FILTER 0 #define CONFIG_SAB_FILTER 0 #define CONFIG_SCALE_FILTER 0 @@ -1833,9 +1840,10 @@ #define CONFIG_SIGNATURE_FILTER 0 #define CONFIG_SMARTBLUR_FILTER 0 #define CONFIG_SOBEL_FILTER 0 +#define CONFIG_SOBEL_OPENCL_FILTER 0 #define CONFIG_SPLIT_FILTER 0 #define CONFIG_SPP_FILTER 0 -#define CONFIG_SRCNN_FILTER 0 +#define CONFIG_SR_FILTER 0 #define CONFIG_SSIM_FILTER 0 #define CONFIG_STEREO3D_FILTER 0 #define CONFIG_STREAMSELECT_FILTER 0 @@ -1853,6 +1861,7 @@ #define CONFIG_TLUT2_FILTER 0 #define CONFIG_TMIX_FILTER 0 #define CONFIG_TONEMAP_FILTER 0 +#define CONFIG_TONEMAP_OPENCL_FILTER 0 #define CONFIG_TRANSPOSE_FILTER 0 #define CONFIG_TRIM_FILTER 0 #define CONFIG_UNPREMULTIPLY_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavutil/ffversion.h b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavutil/ffversion.h index 37148ffcdd3..c01335c81a3 100644 --- a/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavutil/ffversion.h +++ b/chromium/third_party/ffmpeg/chromium/config/Chromium/win/x64/libavutil/ffversion.h @@ -1,5 +1,5 @@ /* Automatically generated by version.sh, do not manually edit! */ #ifndef AVUTIL_FFVERSION_H #define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "N-92142-g5baf51b94b" +#define FFMPEG_VERSION "N-92393-g05759213af" #endif /* AVUTIL_FFVERSION_H */ diff --git a/chromium/third_party/ffmpeg/chromium/patches/README b/chromium/third_party/ffmpeg/chromium/patches/README index cd19e43ba49..484c06d636d 100644 --- a/chromium/third_party/ffmpeg/chromium/patches/README +++ b/chromium/third_party/ffmpeg/chromium/patches/README @@ -803,16 +803,51 @@ Date: Thu May 24 13:43:24 2018 -0700 libavutil/encryption_info.c ------------------------------------------------------------------ -commit 5ceb9b2b805173b4eea81ae15065e254014f867a -Author: Jacob Trimble <modmaker-at-google.com@ffmpeg.org> -Date: Tue Jun 12 14:26:20 2018 -0700 +commit a69bb2d3a1420cc4eed7b37e99cd3145a091a59d +Author: Jacob Trimble <modmaker@google.com> +Date: Mon Aug 13 15:29:32 2018 -0700 - avformat/mov: Add check for per-sample IV size. + avutil/encryption_info: Fix size calculation. - Found by Chrome's ClusterFuzz: http://crbug.com/849062. + Bug: 873693 + Change-Id: Ibc46ef48e86e38a17f0bb833c1ff972f9dde37d6 + Reviewed-on: https://chromium-review.googlesource.com/1173449 + Reviewed-by: Dale Curtis <dalecurtis@chromium.org> + + Affects: +libavutil/encryption_info.c + +------------------------------------------------------------------ +commit ddbe19a87228d61d131fe3b1876cd68bb4cbc3be +Author: Jacob Trimble <modmaker@google.com> +Date: Tue Aug 14 10:53:06 2018 -0700 + + avformat/mov: Allow saio/saiz in clear content. + + If there is a saio/saiz in clear content, we shouldn't create the + encryption index if we don't already have one. Otherwise it will + confuse the cenc_filter. + + Bug: 873432 + Change-Id: I1bfb20f590d667a2ff3c4fcb5efecbcc7ed99387 + Reviewed-on: https://chromium-review.googlesource.com/1174892 + Reviewed-by: Matthew Wolenetz <wolenetz@chromium.org> + Reviewed-by: Dale Curtis <dalecurtis@chromium.org> + + Affects: +libavformat/mov.c + +------------------------------------------------------------------ +commit 89863ce983b1b93c5b149b1914ef650a7fc049f6 +Author: Dale Curtis <dalecurtis@chromium.org> +Date: Tue Aug 21 15:42:31 2018 -0700 + + Correct opus-in-mp4 pre-skip to be uint16_t versus int16_t. - Signed-off-by: Jacob Trimble <modmaker@google.com> - Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> + This field is a uint16_t, see docs: + http://opus-codec.org/docs/opus_in_isobmff.html#4.3.2 + + Signed-off-by: Dale Curtis <dalecurtis@chromium.org> Affects: libavformat/mov.c diff --git a/chromium/third_party/ffmpeg/chromium/patches/config_flag_changes.txt b/chromium/third_party/ffmpeg/chromium/patches/config_flag_changes.txt new file mode 100644 index 00000000000..0ad0183e414 --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/patches/config_flag_changes.txt @@ -0,0 +1,11 @@ ++ CONFIG_ATRAC9_DECODER 0 ++ CONFIG_BOXBLUR_OPENCL_FILTER 0 ++ CONFIG_GREYEDGE_FILTER 0 ++ CONFIG_LENSFUN_FILTER 0 ++ CONFIG_LIBLENSFUN 0 ++ CONFIG_PREWITT_OPENCL_FILTER 0 ++ CONFIG_ROBERTS_OPENCL_FILTER 0 ++ CONFIG_SOBEL_OPENCL_FILTER 0 +- CONFIG_SRCNN_FILTER 0 ++ CONFIG_SR_FILTER 0 ++ CONFIG_TONEMAP_OPENCL_FILTER 0 diff --git a/chromium/third_party/ffmpeg/chromium/scripts/find_patches.py b/chromium/third_party/ffmpeg/chromium/scripts/find_patches.py index 3900a82bcb9..65ac39c2462 100755 --- a/chromium/third_party/ffmpeg/chromium/scripts/find_patches.py +++ b/chromium/third_party/ffmpeg/chromium/scripts/find_patches.py @@ -97,7 +97,10 @@ def main(argv): origin_branch = argv[1] else: origin_branch = "HEAD" + write_patches_file(origin_branch, sys.stdout) +def write_patches_file(origin_branch, output_file): + """Write the patches file for |origin_branch| to |output_file|.""" # Get the latest upstream commit that's reachable from the origin branch. # We'll use that to compare against. upstream = run(["git", "merge-base", "upstream/master", origin_branch] @@ -208,20 +211,24 @@ def main(argv): sha1_to_date[sha1] = date # Print the patches file. - log("Writing patch file to stdout") - print("--------------------------------------------------------------------") - print("-- Chromium Patches --") - print("--------------------------------------------------------------------") - print("\n") + log("Writing patch file") + print("--------------------------------------------------------------------", + file=output_file) + print("-- Chromium Patches --", + file=output_file) + print("--------------------------------------------------------------------", + file=output_file) + print("\n", file=output_file) wd = os.getcwd() for sha1, date in sorted(sha1_to_date.iteritems(), key=lambda (k,v): v): - print("------------------------------------------------------------------") - print(run(["git", "log", "-1", "%s" % sha1])) - print(" Affects: ") + print("------------------------------------------------------------------", + file=output_file) + print(run(["git", "log", "-1", "%s" % sha1]), file=output_file) + print(" Affects: ", file=output_file) # TODO(liberato): maybe add the lines that were affected. for file in sha1ToFiles[sha1]: - print(os.path.relpath(file, wd)) - print() + print(os.path.relpath(file, wd), file=output_file) + print(file=output_file) log("Done") diff --git a/chromium/third_party/ffmpeg/chromium/scripts/robo_branch.py b/chromium/third_party/ffmpeg/chromium/scripts/robo_branch.py new file mode 100644 index 00000000000..ac7d2c09c85 --- /dev/null +++ b/chromium/third_party/ffmpeg/chromium/scripts/robo_branch.py @@ -0,0 +1,155 @@ +#!/usr/bin/python +# +# Copyright 2018 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +# +# Functions to facilitate a branching for merges. +# +# A "sushi branch" is a branch that we've created and manage. We do this to +# prevent making changes to branches that we don't understand. It's mostly as +# a sanity check that we're being used correctly. + +import check_merge +from datetime import datetime +import find_patches +import os +from robo_lib import log +from subprocess import call +from subprocess import check_output + +def IsWorkingDirectoryClean(): + """Return true if and only if the working directory is clean.""" + return not check_output(["git", "status", "--untracked-files=no", + "--porcelain"]).strip() + +def RequiresCleanWorkingDirectory(fn): + def wrapper(*args, **kwargs): + if not IsWorkingDirectoryClean(): + raise Exception("Working directory is not clean.") + fn(*args, **kwargs) + return wrapper + +@RequiresCleanWorkingDirectory +def CreateAndCheckoutDatedSushiBranch(cfg): + """Create a dated branch from origin/master and check it out.""" + now = datetime.now() + branch_name=cfg.sushi_branch_prefix() + now.strftime("%Y-%m-%d-%H-%M-%S") + log("Creating dated branch %s" % branch_name) + # Fetch the latest from origin + if call(["git", "fetch", "origin"]): + raise Exception("Could not fetch from origin") + + # Create the named branch + # Note that we definitely do not want this branch to track origin/master; that + # would eventually cause 'git cl upload' to push the merge commit, assuming + # that the merge commit is pushed to origin/sushi-branch. One might argue + # that we should push the merge to origin/master, which would make this okay. + # For now, we leave the branch untracked to make sure that the user doesn't + # accidentally do the wrong thing. I think that with an automatic deps roll, + # we'll want to stage things on origin/sushi-branch. + # + # We don't want to push anything to origin yet, though, just to keep from + # making a bunch of sushi branches. We can do it later just as easily. + if call(["git", "branch", "--no-track", branch_name, "origin/master"]): + raise Exception("Could not create branch") + + # NOTE: we could push the remote branch back to origin and start tracking it + # now, and not worry about tracking later. However, until the scripts + # actually work, i don't want to push a bunch of branches to origin. + + # Check out the branch. On failure, delete the new branch. + if call(["git", "checkout", branch_name]): + call(["git", "branch", "-D", branch_name]) + raise Exception("Could not checkout branch") + + cfg.SetBranchName(branch_name) + +def CreateAndCheckoutDatedSushiBranchIfNeeded(cfg): + """Create a dated branch from origin/master if we're not already on one.""" + if cfg.sushi_branch_name(): + log("Already on sushi branch %s" % cfg.sushi_branch_name()) + return + + CreateAndCheckoutDatedSushiBranch(cfg) + +@RequiresCleanWorkingDirectory +def MergeUpstreamToSushiBranch(cfg): + log("Merging upstream/master to local branch") + if not cfg.sushi_branch_name(): + raise Exception("Refusing to do a merge on a branch I didn't create") + if call(["git", "fetch", "upstream"]): + raise Exception("Could not fetch from upstream") + if call(["git", "merge", "upstream/master"]): + raise Exception("Merge failed -- resolve conflicts manually.") + log("Merge has completed successfully") + +def IsMergeCommitOnThisBranch(cfg): + """Return true if there's a merge commit on this branch before it joins up + with origin/master.""" + # Get all sha1s between us and origin/master + sha1s = check_output(["git", "log", "--format=%H", + "origin/master..%s" % cfg.branch_name()]).split() + for sha1 in sha1s: + # Does |sha1| have more than one parent commit? + if len(check_output(["git", "show", "--no-patch", "--format=%P", + sha1]).split()) > 1: + return True + return False + +def MergeUpstreamToSushiBranchIfNeeded(cfg): + """Start a merge if we've not started one before, or do nothing successfully + if the merge is complete. If it's half done, then get mad and exit.""" + if IsMergeCommitOnThisBranch(cfg): + log("Merge commit already marked as complete") + return + # See if a merge is in progress. "git merge HEAD" will do nothing if it + # succeeds, but will fail if a merge is in progress. + if call(["git", "merge", "HEAD"]): + raise Exception( + "Merge is in progress -- please resolve conflicts and complete it.") + # There is no merge on this branch, and none is in progress. Start a merge. + MergeUpstreamToSushiBranch(cfg) + +def CheckMerge(cfg): + """Verify that the merge config looks good.""" + # If we haven't built all configs, then we might not be checking everything. + # The check might look at config for each platform, etc. + log("Checking merge for common failures") + cfg.chdir_to_ffmpeg_home(); + check_merge.main([]) + +def WritePatchesReadme(cfg): + """Write the chromium patches file.""" + log("Generating CHROMIUM.patches file") + cfg.chdir_to_ffmpeg_home(); + with open(os.path.join("chromium", "patches", "README"), "w+") as f: + find_patches.write_patches_file("HEAD", f) + +def AddAndCommit(cfg, commit_title): + """Add everything, and commit locally with |commit_title|""" + log("Creating local commit %s" % commit_title) + cfg.chdir_to_ffmpeg_home(); + if IsWorkingDirectoryClean(): + log("No files to commit to %s" % commit_title) + return + if call(["git", "add", "-u"]): + raise Exception("Could not add files") + if call(["git", "commit", "-m", commit_title]): + raise Exception("Could create commit") + +def PushToOriginWithoutReviewAndTrack(cfg): + """Push the local branch to origin/ """ + # This would do a 'git push origin %s:%s" % local branch name. + log("TODO: push merge commit to origin/%s without review!" % + cfg.sushi_branch_name()) + # This would also get branch --set-upstream-to=origin/%s %s + log("TODO: set upstream tracking branch to origin/%s!" % + cfg.sushi_branch_name()) + raise Exception("Please do these things and comment this exception out.") + +def HandleAutorename(cfg): + # Note that you probably also want to comment out the "build and import all + # configs" call in robosushi. it'll work if you re-run it, but it takes a + # while and only needs to be done once. + raise Exception("Please commit autorename file changes and comment this out.") diff --git a/chromium/third_party/ffmpeg/chromium/scripts/robo_build.py b/chromium/third_party/ffmpeg/chromium/scripts/robo_build.py index 73c2d8c4e2f..96469969da4 100644 --- a/chromium/third_party/ffmpeg/chromium/scripts/robo_build.py +++ b/chromium/third_party/ffmpeg/chromium/scripts/robo_build.py @@ -77,9 +77,7 @@ def BuildAndImportFFmpegConfigForHost(robo_configuration): Args: robo_configuration: RoboConfiguration. """ - # TODO: optimize this out if we've done it already -- it's only needed if the - # ffmpeg build config changes. If you just change ffmpeg source files, then - # just re-build chrome and it'll rebuild the library. + ConfigureAndBuildFFmpeg(robo_configuration, robo_configuration.host_operating_system(), robo_configuration.host_architecture()) diff --git a/chromium/third_party/ffmpeg/chromium/scripts/robo_lib.py b/chromium/third_party/ffmpeg/chromium/scripts/robo_lib.py index 46d3b9dad7a..64cef9558c5 100644 --- a/chromium/third_party/ffmpeg/chromium/scripts/robo_lib.py +++ b/chromium/third_party/ffmpeg/chromium/scripts/robo_lib.py @@ -21,6 +21,8 @@ class RoboConfiguration: Important: We might be doing --setup, so these sanity checks should only be for things that we don't plan for fix as part of that. """ + # This is the prefix that our branches start with. + self._sushi_branch_prefix = "sushi-" self.EnsureHostInfo() self.EnsureChromeSrc() self.EnsurePathContainsLLVM() @@ -28,6 +30,10 @@ class RoboConfiguration: self.EnsureFFmpegHome() log("Using ffmpeg home: %s" % self.ffmpeg_home()) self.EnsureASANConfig() + self.ComputeBranchName() + log("On branch: %s" % self.branch_name()) + if self.sushi_branch_name(): + log("On sushi branch: %s" % self.sushi_branch_name()) def chrome_src(self): """Return /path/to/chromium/src""" @@ -57,6 +63,20 @@ class RoboConfiguration: def chdir_to_ffmpeg_home(self): os.chdir(self.ffmpeg_home()) + def branch_name(self): + """Return the current workspace's branch name, or None. This might be any + branch (e.g., "master"), not just one that we've created.""" + return self._branch_name + + def sushi_branch_name(self): + """If the workspace is currently on a branch that we created (a "sushi + branch"), return it. Else return None.""" + return self._sushi_branch_name + + def sushi_branch_prefix(self): + """Return the branch name that indicates that this is a "sushi branch".""" + return self._sushi_branch_prefix + def EnsureHostInfo(self): """Ensure that the host architecture and platform are set.""" # TODO(liberato): autodetect @@ -97,3 +117,17 @@ class RoboConfiguration: if llvm_path not in os.environ["PATH"]: raise Exception("Please add %s to the beginning of $PATH" % llvm_path) + def ComputeBranchName(self): + """Get the current branch name and set it.""" + self.chdir_to_ffmpeg_home() + branch_name = subprocess.Popen(["git", "rev-parse", "--abbrev-ref", "HEAD"], + stdout=subprocess.PIPE).communicate()[0].strip() + self.SetBranchName(branch_name) + + def SetBranchName(self, name): + """Set our branch name, which may be a sushi branch or not.""" + self._branch_name = name + # If this is one of our branches, then record that too. + if name and not name.startswith(self.sushi_branch_prefix()): + name = None + self._sushi_branch_name = name diff --git a/chromium/third_party/ffmpeg/chromium/scripts/robosushi.py b/chromium/third_party/ffmpeg/chromium/scripts/robosushi.py index 707b19adedb..930071a994e 100755 --- a/chromium/third_party/ffmpeg/chromium/scripts/robosushi.py +++ b/chromium/third_party/ffmpeg/chromium/scripts/robosushi.py @@ -17,6 +17,7 @@ import getopt import os import sys +import robo_branch from robo_lib import log import robo_lib import robo_build @@ -27,7 +28,7 @@ def main(argv): robo_configuration.chdir_to_ffmpeg_home(); parsed, remaining = getopt.getopt(argv, "", - ["setup", "test", "build", "all"]) + ["setup", "test", "build", "auto-merge", "auto-merge-test"]) for opt, arg in parsed: if opt == "--setup": @@ -38,14 +39,44 @@ def main(argv): robo_build.BuildAndImportFFmpegConfigForHost(robo_configuration) robo_build.RunTests(robo_configuration) elif opt == "--build": + # Unconditionally build all the configs and import them. robo_build.BuildAndImportAllFFmpegConfigs(robo_configuration) - # TODO: run check_merge.py - # TODO: run find_patches.py - elif opt == "--all": - robo_build.BuildAndImportFFmpegConfigForHost(robo_configuration) + elif opt == "--auto-merge" or opt == "--auto-merge-test": + # Start a branch (if needed), merge (if needed), and try to verify it. + # TODO: Verify that the working directory is clean. + robo_branch.CreateAndCheckoutDatedSushiBranchIfNeeded(robo_configuration) + robo_branch.MergeUpstreamToSushiBranchIfNeeded(robo_configuration) + # We want to push the merge and make the local branch track it, so that + # future 'git cl upload's don't try to review the merge commit, and spam + # the ffmpeg committers. + robo_branch.PushToOriginWithoutReviewAndTrack(robo_configuration) + + # Try to get everything to build. + # auto-merge-test is just to make this quicker while i'm developing it + # TODO: Make it skip these if they're already done. + if opt == "--auto-merge-test": + robo_build.BuildAndImportFFmpegConfigForHost(robo_configuration) + else: + robo_build.BuildAndImportAllFFmpegConfigs(robo_configuration) + robo_branch.HandleAutorename(robo_configuration) + robo_branch.AddAndCommit(robo_configuration, "GN Configuration") + robo_branch.CheckMerge(robo_configuration) + robo_branch.WritePatchesReadme(robo_configuration) + robo_branch.AddAndCommit(robo_configuration, "Chromium patches file") robo_build.RunTests(robo_configuration) - robo_build.BuildAndImportAllFFmpegConfigs(robo_configuration) - # TODO: run some sanity checks to see if this might be okay to auto-roll. + + # TODO: Start a fake deps roll. To do this, we would: + # Create new remote branch from the current remote sushi branch. + # Create and check out a new local branch at the current local branch. + # Make the new local branch track the new remote branch. + # Push to origin/new remote branch. + # Start a fake deps roll CL that runs the *san bots. + # Switch back to original local branch. + # For extra points, include a pointer to the fake deps roll CL in the + # local branch, so that when it's pushed for review, it'll point the + # reviewer at it. + + # TODO: git cl upload for review. else: raise Exception("Unknown option '%s'" % opt); diff --git a/chromium/third_party/ffmpeg/configure b/chromium/third_party/ffmpeg/configure index 9deab1c8414..281fa094993 100755 --- a/chromium/third_party/ffmpeg/configure +++ b/chromium/third_party/ffmpeg/configure @@ -239,6 +239,7 @@ External library support: --enable-libilbc enable iLBC de/encoding via libilbc [no] --enable-libjack enable JACK audio sound server [no] --enable-libkvazaar enable HEVC encoding via libkvazaar [no] + --enable-liblensfun enable lensfun lens correction [no] --enable-libmodplug enable ModPlug via libmodplug [no] --enable-libmp3lame enable MP3 encoding via libmp3lame [no] --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no] @@ -260,7 +261,7 @@ External library support: --enable-libsrt enable Haivision SRT protocol via libsrt [no] --enable-libssh enable SFTP protocol via libssh [no] --enable-libtensorflow enable TensorFlow as a DNN module backend - for DNN based filters like srcnn [no] + for DNN based filters like sr [no] --enable-libtesseract enable Tesseract, needed for ocr filter [no] --enable-libtheora enable Theora encoding via libtheora [no] --enable-libtls enable LibreSSL (via libtls), needed for https support @@ -1656,6 +1657,7 @@ EXTERNAL_LIBRARY_NONFREE_LIST=" EXTERNAL_LIBRARY_VERSION3_LIST=" gmp + liblensfun libopencore_amrnb libopencore_amrwb libvmaf @@ -2565,6 +2567,7 @@ asv2_encoder_select="bswapdsp fdctdsp pixblockdsp" atrac1_decoder_select="mdct sinewin" atrac3_decoder_select="mdct" atrac3p_decoder_select="mdct sinewin" +atrac9_decoder_select="mdct" avrn_decoder_select="exif jpegtables" bink_decoder_select="blockdsp hpeldsp" binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs" @@ -2992,6 +2995,7 @@ vc1_parser_select="vc1dsp" # bitstream_filters aac_adtstoasc_bsf_select="adts_header" +eac3_core_bsf_select="ac3_parser" filter_units_bsf_select="cbs" h264_metadata_bsf_deps="const_nan" h264_metadata_bsf_select="cbs_h264" @@ -3044,6 +3048,7 @@ hevc_videotoolbox_encoder_deps="pthreads" hevc_videotoolbox_encoder_select="videotoolbox_encoder" libaom_av1_decoder_deps="libaom" libaom_av1_encoder_deps="libaom" +libaom_av1_encoder_select="extract_extradata_bsf" libcelt_decoder_deps="libcelt" libcodec2_decoder_deps="libcodec2" libcodec2_encoder_deps="libcodec2" @@ -3310,6 +3315,7 @@ avgblur_opencl_filter_deps="opencl" azmq_filter_deps="libzmq" blackframe_filter_deps="gpl" boxblur_filter_deps="gpl" +boxblur_opencl_filter_deps="opencl gpl" bs2b_filter_deps="libbs2b" colormatrix_filter_deps="gpl" convolution_opencl_filter_deps="opencl" @@ -3350,6 +3356,7 @@ hqdn3d_filter_deps="gpl" interlace_filter_deps="gpl" kerndeint_filter_deps="gpl" ladspa_filter_deps="ladspa libdl" +lensfun_filter_deps="liblensfun version3" lv2_filter_deps="lv2" mcdeint_filter_deps="avcodec gpl" movie_filter_deps="avcodec avformat" @@ -3370,12 +3377,14 @@ perspective_filter_deps="gpl" phase_filter_deps="gpl" pp7_filter_deps="gpl" pp_filter_deps="gpl postproc" +prewitt_opencl_filter_deps="opencl" procamp_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer" program_opencl_filter_deps="opencl" pullup_filter_deps="gpl" removelogo_filter_deps="avcodec avformat swscale" repeatfields_filter_deps="gpl" resample_filter_deps="avresample" +roberts_opencl_filter_deps="opencl" rubberband_filter_deps="librubberband" sab_filter_deps="gpl swscale" scale2ref_filter_deps="swscale" @@ -3394,14 +3403,15 @@ showspectrumpic_filter_deps="avcodec" showspectrumpic_filter_select="fft" signature_filter_deps="gpl avcodec avformat" smartblur_filter_deps="gpl swscale" +sobel_opencl_filter_deps="opencl" sofalizer_filter_deps="libmysofa avcodec" sofalizer_filter_select="fft" spectrumsynth_filter_deps="avcodec" spectrumsynth_filter_select="fft" spp_filter_deps="gpl avcodec" spp_filter_select="fft idctdsp fdctdsp me_cmp pixblockdsp" -srcnn_filter_deps="avformat" -srcnn_filter_select="dnn" +sr_filter_deps="avformat swscale" +sr_filter_select="dnn" stereo3d_filter_deps="gpl" subtitles_filter_deps="avformat avcodec libass" super2xsai_filter_deps="gpl" @@ -3410,6 +3420,7 @@ tinterlace_filter_deps="gpl" tinterlace_merge_test_deps="tinterlace_filter" tinterlace_pad_test_deps="tinterlace_filter" tonemap_filter_deps="const_nan" +tonemap_opencl_filter_deps="opencl const_nan" unsharp_opencl_filter_deps="opencl" uspp_filter_deps="gpl avcodec" vaguedenoiser_filter_deps="gpl" @@ -3668,7 +3679,7 @@ CODEC_LIST=" $ENCODER_LIST $DECODER_LIST " -PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parser.c) +PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parsers.c) BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c) HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h) PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c) @@ -3966,8 +3977,8 @@ case "$toolchain" in ;; *-tsan) cc_default="${toolchain%-tsan}" - add_cflags -fsanitize=thread -fPIE - add_ldflags -fsanitize=thread -pie + add_cflags -fsanitize=thread + add_ldflags -fsanitize=thread case "$toolchain" in gcc-tsan) add_cflags -fPIC @@ -5911,8 +5922,8 @@ check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC" if ! disabled ffnvcodec; then check_pkg_config ffnvcodec "ffnvcodec >= 8.1.24.2" \ "ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h" "" || \ - { test_pkg_config ffnvcodec_tmp "ffnvcodec < 8.1" "" "" && check_pkg_config ffnvcodec "ffnvcodec >= 8.0.14.2" \ - "ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h" ""; } + check_pkg_config ffnvcodec "ffnvcodec >= 8.0.14.2 ffnvcodec < 8.1" \ + "ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h" "" fi check_cpp_condition winrt windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" @@ -5992,7 +6003,7 @@ enabled gmp && require gmp gmp.h mpz_export -lgmp enabled gnutls && require_pkg_config gnutls gnutls gnutls/gnutls.h gnutls_global_init enabled jni && { [ $target_os = "android" ] && check_header jni.h && enabled pthreads || die "ERROR: jni not found"; } enabled ladspa && require_header ladspa.h -enabled libaom && require_pkg_config libaom "aom >= 0.1.0" aom/aom_codec.h aom_codec_version +enabled libaom && require_pkg_config libaom "aom >= 1.0.0" aom/aom_codec.h aom_codec_version enabled lv2 && require_pkg_config lv2 lilv-0 "lilv/lilv.h" lilv_world_new enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883 enabled libass && require_pkg_config libass libass ass/ass.h ass_library_init @@ -6021,6 +6032,7 @@ enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do done || die "ERROR: libgsm not found"; } enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc $pthreads_extralibs enabled libkvazaar && require_pkg_config libkvazaar "kvazaar >= 0.8.1" kvazaar.h kvz_api_get +enabled liblensfun && require_pkg_config liblensfun lensfun lensfun.h lf_db_new # While it may appear that require is being used as a pkg-config # fallback for libmfx, it is actually being used to detect a different # installation route altogether. If libmfx is installed via the Intel @@ -6343,10 +6355,8 @@ fi if enabled_all opencl vaapi ; then enabled opencl_drm_beignet && enable opencl_vaapi_beignet - if enabled libmfx ; then - check_type "CL/cl.h CL/va_ext.h" "clCreateFromVA_APIMediaSurfaceINTEL_fn" && - enable opencl_vaapi_intel_media - fi + check_type "CL/cl.h CL/va_ext.h" "clCreateFromVA_APIMediaSurfaceINTEL_fn" && + enable opencl_vaapi_intel_media fi if enabled_all opencl dxva2 ; then @@ -6832,7 +6842,7 @@ enabled signature_filter && prepend avfilter_deps "avcodec avformat" enabled smartblur_filter && prepend avfilter_deps "swscale" enabled spectrumsynth_filter && prepend avfilter_deps "avcodec" enabled spp_filter && prepend avfilter_deps "avcodec" -enabled srcnn_filter && prepend avfilter_deps "avformat" +enabled sr_filter && prepend avfilter_deps "avformat swscale" enabled subtitles_filter && prepend avfilter_deps "avformat avcodec" enabled uspp_filter && prepend avfilter_deps "avcodec" enabled zoompan_filter && prepend avfilter_deps "swscale" diff --git a/chromium/third_party/ffmpeg/doc/fate.texi b/chromium/third_party/ffmpeg/doc/fate.texi index c9c0d3aea98..a3529942306 100644 --- a/chromium/third_party/ffmpeg/doc/fate.texi +++ b/chromium/third_party/ffmpeg/doc/fate.texi @@ -222,6 +222,11 @@ Set to @samp{1} to generate the missing or mismatched references. Specify which hardware acceleration to use while running regression tests, by default @samp{none} is used. +@item KEEP +Set to @samp{1} to keep temp files generated by fate test(s) when test is successful. +Default is @samp{0}, which removes these files. Files are always kept when a test +fails. + @end table @section Examples diff --git a/chromium/third_party/ffmpeg/doc/filters.texi b/chromium/third_party/ffmpeg/doc/filters.texi index de4b61cb40c..0b0903e5a71 100644 --- a/chromium/third_party/ffmpeg/doc/filters.texi +++ b/chromium/third_party/ffmpeg/doc/filters.texi @@ -1986,7 +1986,12 @@ Adjust audio tempo. The filter accepts exactly one parameter, the audio tempo. If not specified then the filter will assume nominal 1.0 tempo. Tempo must -be in the [0.5, 2.0] range. +be in the [0.5, 100.0] range. + +Note that tempo greater than 2 will skip some samples rather than +blend them in. If for any reason this is a concern it is always +possible to daisy-chain several instances of atempo to achieve the +desired product tempo. @subsection Examples @@ -1998,9 +2003,15 @@ atempo=0.8 @end example @item -To speed up audio to 125% tempo: +To speed up audio to 300% tempo: +@example +atempo=3 +@end example + +@item +To speed up audio to 300% tempo by daisy-chaining two atempo instances: @example -atempo=1.25 +atempo=sqrt(3),atempo=sqrt(3) @end example @end itemize @@ -5420,13 +5431,13 @@ The filter accepts the following options: @table @option @item sizeX -Set horizontal kernel size. +Set horizontal radius size. @item planes Set which planes to filter. By default all planes are filtered. @item sizeY -Set vertical kernel size, if zero it will be same as @code{sizeX}. +Set vertical radius size, if zero it will be same as @code{sizeX}. Default is @code{0}. @end table @@ -5634,10 +5645,10 @@ the width and height of currently filtered plane @item SW @item SH -Width and height scale depending on the currently filtered plane. It is the -ratio between the corresponding luma plane number of pixels and the current -plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and -@code{0.5,0.5} for chroma planes. +Width and height scale for the plane being filtered. It is the +ratio between the dimensions of the current plane to the luma plane, +e.g. for a @code{yuv420p} frame, the values are @code{1,1} for +the luma plane and @code{0.5,0.5} for the chroma planes. @item T Time of the current frame, expressed in seconds. @@ -9929,6 +9940,47 @@ gradfun=radius=8 @end itemize +@section greyedge +A color constancy variation filter which estimates scene illumination via grey edge algorithm +and corrects the scene colors accordingly. + +See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf} + +The filter accepts the following options: + +@table @option +@item difford +The order of differentiation to be applied on the scene. Must be chosen in the range +[0,2] and default value is 1. + +@item minknorm +The Minkowski parameter to be used for calculating the Minkowski distance. Must +be chosen in the range [0,65535] and default value is 1. Set to 0 for getting +max value instead of calculating Minkowski distance. + +@item sigma +The standard deviation of Gaussian blur to be applied on the scene. Must be +chosen in the range [0,1024.0] and default value = 1. Sigma can't be set to 0 +if @var{difford} is greater than 0. +@end table + +@subsection Examples +@itemize + +@item +Grey Edge: +@example +greyedge=difford=1:minknorm=5:sigma=2 +@end example + +@item +Max Edge: +@example +greyedge=difford=1:minknorm=0:sigma=2 +@end example + +@end itemize + @anchor{haldclut} @section haldclut @@ -10689,6 +10741,124 @@ The formula that generates the correction is: where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the distances from the focal point in the source and target images, respectively. +@section lensfun + +Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}). + +The @code{lensfun} filter requires the camera make, camera model, and lens model +to apply the lens correction. The filter will load the lensfun database and +query it to find the corresponding camera and lens entries in the database. As +long as these entries can be found with the given options, the filter can +perform corrections on frames. Note that incomplete strings will result in the +filter choosing the best match with the given options, and the filter will +output the chosen camera and lens models (logged with level "info"). You must +provide the make, camera model, and lens model as they are required. + +The filter accepts the following options: + +@table @option +@item make +The make of the camera (for example, "Canon"). This option is required. + +@item model +The model of the camera (for example, "Canon EOS 100D"). This option is +required. + +@item lens_model +The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This +option is required. + +@item mode +The type of correction to apply. The following values are valid options: + +@table @samp +@item vignetting +Enables fixing lens vignetting. + +@item geometry +Enables fixing lens geometry. This is the default. + +@item subpixel +Enables fixing chromatic aberrations. + +@item vig_geo +Enables fixing lens vignetting and lens geometry. + +@item vig_subpixel +Enables fixing lens vignetting and chromatic aberrations. + +@item distortion +Enables fixing both lens geometry and chromatic aberrations. + +@item all +Enables all possible corrections. + +@end table +@item focal_length +The focal length of the image/video (zoom; expected constant for video). For +example, a 18--55mm lens has focal length range of [18--55], so a value in that +range should be chosen when using that lens. Default 18. + +@item aperture +The aperture of the image/video (expected constant for video). Note that +aperture is only used for vignetting correction. Default 3.5. + +@item focus_distance +The focus distance of the image/video (expected constant for video). Note that +focus distance is only used for vignetting and only slightly affects the +vignetting correction process. If unknown, leave it at the default value (which +is 1000). + +@item target_geometry +The target geometry of the output image/video. The following values are valid +options: + +@table @samp +@item rectilinear (default) +@item fisheye +@item panoramic +@item equirectangular +@item fisheye_orthographic +@item fisheye_stereographic +@item fisheye_equisolid +@item fisheye_thoby +@end table +@item reverse +Apply the reverse of image correction (instead of correcting distortion, apply +it). + +@item interpolation +The type of interpolation used when correcting distortion. The following values +are valid options: + +@table @samp +@item nearest +@item linear (default) +@item lanczos +@end table +@end table + +@subsection Examples + +@itemize +@item +Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens +model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and +aperture of "8.0". + +@example +ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov +@end example + +@item +Apply the same as before, but only for the first 5 seconds of video. + +@example +ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov +@end example + +@end itemize + @section libvmaf Obtain the VMAF (Video Multi-Method Assessment Fusion) @@ -11426,10 +11596,15 @@ Default value for @option{hi} is 64*12, default value for @option{lo} is @section negate -Negate input video. +Negate (invert) the input video. -It accepts an integer in input; if non-zero it negates the -alpha component (if available). The default value in input is 0. +It accepts the following option: + +@table @option + +@item negate_alpha +With value 1, it negates the alpha component, if present. Default value is 0. +@end table @section nlmeans @@ -18301,9 +18476,15 @@ Default is @code{replace}. @section aphasemeter -Convert input audio to a video output, displaying the audio phase. +Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase}, +representing mean phase of current audio frame. A video output can also be produced and is +enabled by default. The audio is passed through as first output. -The filter accepts the following options: +Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in +range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase +and @code{1} means channels are in phase. + +The filter accepts the following options, all related to its video output: @table @option @item rate, r @@ -18329,11 +18510,6 @@ Set color which will be used for drawing median phase. If color is Enable video output. Default is enabled. @end table -The filter also exports the frame metadata @code{lavfi.aphasemeter.phase} which -represents mean phase of current audio frame. Value is in range @code{[-1, 1]}. -The @code{-1} means left and right channels are completely out of phase and -@code{1} means channels are in phase. - @section avectorscope Convert input audio to a video output, representing the audio vector @@ -19376,7 +19552,7 @@ The expression is evaluated through the eval API and can contain the following constants: @table @option -@item FRAME_RATE +@item FRAME_RATE, FR frame rate, only defined for constant frame-rate video @item PTS diff --git a/chromium/third_party/ffmpeg/doc/formats.texi b/chromium/third_party/ffmpeg/doc/formats.texi index ddd77435486..a97d61063ab 100644 --- a/chromium/third_party/ffmpeg/doc/formats.texi +++ b/chromium/third_party/ffmpeg/doc/formats.texi @@ -30,37 +30,43 @@ latency. Must be an integer not lesser than 32. It is 5000000 by default. @item packetsize @var{integer} (@emph{output}) Set packet size. -@item fflags @var{flags} (@emph{input/output}) -Set format flags. +@item fflags @var{flags} +Set format flags. Some are implemented for a limited number of formats. -Possible values: +Possible values for input files: @table @samp -@item ignidx -Ignore index. +@item discardcorrupt +Discard corrupted packets. @item fastseek Enable fast, but inaccurate seeks for some formats. @item genpts -Generate PTS. +Generate missing PTS if DTS is present. +@item igndts +Ignore DTS if PTS is set. Inert when nofillin is set. +@item ignidx +Ignore index. +@item keepside (@emph{deprecated},@emph{inert}) +@item nobuffer +Reduce the latency introduced by buffering during initial input streams analysis. @item nofillin -Do not fill in missing values that can be exactly calculated. +Do not fill in missing values in packet fields that can be exactly calculated. @item noparse Disable AVParsers, this needs @code{+nofillin} too. -@item igndts -Ignore DTS. -@item discardcorrupt -Discard corrupted frames. @item sortdts -Try to interleave output packets by DTS. -@item keepside -Do not merge side data. -@item latm -Enable RTP MP4A-LATM payload. -@item nobuffer -Reduce the latency introduced by optional buffering +Try to interleave output packets by DTS. At present, available only for AVIs with an index. +@end table + +Possible values for output files: +@table @samp +@item autobsf +Automatically apply bitstream filters as required by the output format. Enabled by default. @item bitexact Only write platform-, build- and time-independent data. This ensures that file and data checksums are reproducible and match between platforms. Its primary use is for regression testing. +@item flush_packets +Write out packets immediately. +@item latm (@emph{deprecated},@emph{inert}) @item shortest Stop muxing at the end of the shortest stream. It may be needed to increase max_interleave_delta to avoid flushing the longer diff --git a/chromium/third_party/ffmpeg/doc/indevs.texi b/chromium/third_party/ffmpeg/doc/indevs.texi index 6951940a93a..5d4c02c5974 100644 --- a/chromium/third_party/ffmpeg/doc/indevs.texi +++ b/chromium/third_party/ffmpeg/doc/indevs.texi @@ -326,6 +326,12 @@ Defaults to @samp{2}. Sets the decklink device duplex mode. Must be @samp{unset}, @samp{half} or @samp{full}. Defaults to @samp{unset}. +@item timecode_format +Timecode type to include in the frame and video stream metadata. Must be +@samp{none}, @samp{rp188vitc}, @samp{rp188vitc2}, @samp{rp188ltc}, +@samp{rp188any}, @samp{vitc}, @samp{vitc2}, or @samp{serial}. Defaults to +@samp{none} (not included). + @item video_input Sets the video input source. Must be @samp{unset}, @samp{sdi}, @samp{hdmi}, @samp{optical_sdi}, @samp{component}, @samp{composite} or @samp{s_video}. @@ -402,116 +408,6 @@ ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' @end itemize -@section kmsgrab - -KMS video input device. - -Captures the KMS scanout framebuffer associated with a specified CRTC or plane as a -DRM object that can be passed to other hardware functions. - -Requires either DRM master or CAP_SYS_ADMIN to run. - -If you don't understand what all of that means, you probably don't want this. Look at -@option{x11grab} instead. - -@subsection Options - -@table @option - -@item device -DRM device to capture on. Defaults to @option{/dev/dri/card0}. - -@item format -Pixel format of the framebuffer. Defaults to @option{bgr0}. - -@item format_modifier -Format modifier to signal on output frames. This is necessary to import correctly into -some APIs, but can't be autodetected. See the libdrm documentation for possible values. - -@item crtc_id -KMS CRTC ID to define the capture source. The first active plane on the given CRTC -will be used. - -@item plane_id -KMS plane ID to define the capture source. Defaults to the first active plane found if -neither @option{crtc_id} nor @option{plane_id} are specified. - -@item framerate -Framerate to capture at. This is not synchronised to any page flipping or framebuffer -changes - it just defines the interval at which the framebuffer is sampled. Sampling -faster than the framebuffer update rate will generate independent frames with the same -content. Defaults to @code{30}. - -@end table - -@subsection Examples - -@itemize - -@item -Capture from the first active plane, download the result to normal frames and encode. -This will only work if the framebuffer is both linear and mappable - if not, the result -may be scrambled or fail to download. -@example -ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4 -@end example - -@item -Capture from CRTC ID 42 at 60fps, map the result to VAAPI, convert to NV12 and encode as H.264. -@example -ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4 -@end example - -@end itemize - -@section libndi_newtek - -The libndi_newtek input device provides capture capabilities for using NDI (Network -Device Interface, standard created by NewTek). - -Input filename is a NDI source name that could be found by sending -find_sources 1 -to command line - it has no specific syntax but human-readable formatted. - -To enable this input device, you need the NDI SDK and you -need to configure with the appropriate @code{--extra-cflags} -and @code{--extra-ldflags}. - -@subsection Options - -@table @option - -@item find_sources -If set to @option{true}, print a list of found/available NDI sources and exit. -Defaults to @option{false}. - -@item wait_sources -Override time to wait until the number of online sources have changed. -Defaults to @option{0.5}. - -@item allow_video_fields -When this flag is @option{false}, all video that you receive will be progressive. -Defaults to @option{true}. - -@end table - -@subsection Examples - -@itemize - -@item -List input devices: -@example -ffmpeg -f libndi_newtek -find_sources 1 -i dummy -@end example - -@item -Restream to NDI: -@example -ffmpeg -f libndi_newtek -i "DEV-5.INTERNAL.M1STEREO.TV (NDI_SOURCE_NAME_1)" -f libndi_newtek -y NDI_SOURCE_NAME_2 -@end example - -@end itemize - @section dshow Windows DirectShow input device. @@ -939,6 +835,68 @@ Set the number of channels. Default is 2. @end table +@section kmsgrab + +KMS video input device. + +Captures the KMS scanout framebuffer associated with a specified CRTC or plane as a +DRM object that can be passed to other hardware functions. + +Requires either DRM master or CAP_SYS_ADMIN to run. + +If you don't understand what all of that means, you probably don't want this. Look at +@option{x11grab} instead. + +@subsection Options + +@table @option + +@item device +DRM device to capture on. Defaults to @option{/dev/dri/card0}. + +@item format +Pixel format of the framebuffer. Defaults to @option{bgr0}. + +@item format_modifier +Format modifier to signal on output frames. This is necessary to import correctly into +some APIs, but can't be autodetected. See the libdrm documentation for possible values. + +@item crtc_id +KMS CRTC ID to define the capture source. The first active plane on the given CRTC +will be used. + +@item plane_id +KMS plane ID to define the capture source. Defaults to the first active plane found if +neither @option{crtc_id} nor @option{plane_id} are specified. + +@item framerate +Framerate to capture at. This is not synchronised to any page flipping or framebuffer +changes - it just defines the interval at which the framebuffer is sampled. Sampling +faster than the framebuffer update rate will generate independent frames with the same +content. Defaults to @code{30}. + +@end table + +@subsection Examples + +@itemize + +@item +Capture from the first active plane, download the result to normal frames and encode. +This will only work if the framebuffer is both linear and mappable - if not, the result +may be scrambled or fail to download. +@example +ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4 +@end example + +@item +Capture from CRTC ID 42 at 60fps, map the result to VAAPI, convert to NV12 and encode as H.264. +@example +ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4 +@end example + +@end itemize + @section lavfi Libavfilter input virtual device. @@ -1077,6 +1035,54 @@ IIDC1394 input device, based on libdc1394 and libraw1394. Requires the configure option @code{--enable-libdc1394}. +@section libndi_newtek + +The libndi_newtek input device provides capture capabilities for using NDI (Network +Device Interface, standard created by NewTek). + +Input filename is a NDI source name that could be found by sending -find_sources 1 +to command line - it has no specific syntax but human-readable formatted. + +To enable this input device, you need the NDI SDK and you +need to configure with the appropriate @code{--extra-cflags} +and @code{--extra-ldflags}. + +@subsection Options + +@table @option + +@item find_sources +If set to @option{true}, print a list of found/available NDI sources and exit. +Defaults to @option{false}. + +@item wait_sources +Override time to wait until the number of online sources have changed. +Defaults to @option{0.5}. + +@item allow_video_fields +When this flag is @option{false}, all video that you receive will be progressive. +Defaults to @option{true}. + +@end table + +@subsection Examples + +@itemize + +@item +List input devices: +@example +ffmpeg -f libndi_newtek -find_sources 1 -i dummy +@end example + +@item +Restream to NDI: +@example +ffmpeg -f libndi_newtek -i "DEV-5.INTERNAL.M1STEREO.TV (NDI_SOURCE_NAME_1)" -f libndi_newtek -y NDI_SOURCE_NAME_2 +@end example + +@end itemize + @section openal The OpenAL input device provides audio capture on all systems with a @@ -1195,7 +1201,6 @@ Set the number of channels. Default is 2. @end table - @section pulse PulseAudio input device. diff --git a/chromium/third_party/ffmpeg/doc/outdevs.texi b/chromium/third_party/ffmpeg/doc/outdevs.texi index c2906b9371c..30d376d793a 100644 --- a/chromium/third_party/ffmpeg/doc/outdevs.texi +++ b/chromium/third_party/ffmpeg/doc/outdevs.texi @@ -182,6 +182,35 @@ ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLi @end itemize +@section fbdev + +Linux framebuffer output device. + +The Linux framebuffer is a graphic hardware-independent abstraction +layer to show graphics on a computer monitor, typically on the +console. It is accessed through a file device node, usually +@file{/dev/fb0}. + +For more detailed information read the file +@file{Documentation/fb/framebuffer.txt} included in the Linux source tree. + +@subsection Options +@table @option + +@item xoffset +@item yoffset +Set x/y coordinate of top left corner. Default is 0. +@end table + +@subsection Examples +Play a file on framebuffer device @file{/dev/fb0}. +Required pixel format depends on current framebuffer settings. +@example +ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0 +@end example + +See also @url{http://linux-fbdev.sourceforge.net/}, and fbset(1). + @section libndi_newtek The libndi_newtek output device provides playback capabilities for using NDI (Network @@ -227,35 +256,6 @@ ffmpeg -i "udp://@@239.1.1.1:10480?fifo_size=1000000&overrun_nonfatal=1" -vf "sc @end itemize -@section fbdev - -Linux framebuffer output device. - -The Linux framebuffer is a graphic hardware-independent abstraction -layer to show graphics on a computer monitor, typically on the -console. It is accessed through a file device node, usually -@file{/dev/fb0}. - -For more detailed information read the file -@file{Documentation/fb/framebuffer.txt} included in the Linux source tree. - -@subsection Options -@table @option - -@item xoffset -@item yoffset -Set x/y coordinate of top left corner. Default is 0. -@end table - -@subsection Examples -Play a file on framebuffer device @file{/dev/fb0}. -Required pixel format depends on current framebuffer settings. -@example -ffmpeg -re -i INPUT -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0 -@end example - -See also @url{http://linux-fbdev.sourceforge.net/}, and fbset(1). - @section opengl OpenGL output device. @@ -425,6 +425,10 @@ ffmpeg -i INPUT -c:v rawvideo -pix_fmt yuv420p -window_size qcif -f sdl "SDL out sndio audio output device. +@section v4l2 + +Video4Linux2 output device. + @section xv XV (XVideo) output device. diff --git a/chromium/third_party/ffmpeg/ffmpeg_generated.gni b/chromium/third_party/ffmpeg/ffmpeg_generated.gni index 3e6e8ee2c02..8ac532b6c34 100644 --- a/chromium/third_party/ffmpeg/ffmpeg_generated.gni +++ b/chromium/third_party/ffmpeg/ffmpeg_generated.gni @@ -77,6 +77,7 @@ if ((is_android && current_cpu == "arm" && arm_use_neon) || (is_android && curre "libavcodec/opus_rc.c", "libavcodec/opustab.c", "libavcodec/parser.c", + "libavcodec/parsers.c", "libavcodec/pcm.c", "libavcodec/profiles.c", "libavcodec/pthread.c", diff --git a/chromium/third_party/ffmpeg/fftools/cmdutils.c b/chromium/third_party/ffmpeg/fftools/cmdutils.c index 844f43359c2..b8de319fe4a 100644 --- a/chromium/third_party/ffmpeg/fftools/cmdutils.c +++ b/chromium/third_party/ffmpeg/fftools/cmdutils.c @@ -1018,7 +1018,7 @@ static int init_report(const char *env) av_free(key); } - av_bprint_init(&filename, 0, 1); + av_bprint_init(&filename, 0, AV_BPRINT_SIZE_AUTOMATIC); expand_filename_template(&filename, av_x_if_null(filename_template, "%p-%t.log"), tm); av_free(filename_template); diff --git a/chromium/third_party/ffmpeg/fftools/ffmpeg.c b/chromium/third_party/ffmpeg/fftools/ffmpeg.c index d4ac6903cca..55faec8ede2 100644 --- a/chromium/third_party/ffmpeg/fftools/ffmpeg.c +++ b/chromium/third_party/ffmpeg/fftools/ffmpeg.c @@ -772,7 +772,7 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int u - FFMIN3(pkt->pts, pkt->dts, ost->last_mux_dts + 1) - FFMAX3(pkt->pts, pkt->dts, ost->last_mux_dts + 1); } - if ((st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO || st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) && + if ((st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO || st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO || st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) && pkt->dts != AV_NOPTS_VALUE && !(st->codecpar->codec_id == AV_CODEC_ID_VP9 && ost->stream_copy) && ost->last_mux_dts != AV_NOPTS_VALUE) { @@ -1121,7 +1121,7 @@ static void do_video_out(OutputFile *of, format_video_sync != VSYNC_PASSTHROUGH && format_video_sync != VSYNC_DROP) { if (delta0 < -0.6) { - av_log(NULL, AV_LOG_WARNING, "Past duration %f too large\n", -delta0); + av_log(NULL, AV_LOG_VERBOSE, "Past duration %f too large\n", -delta0); } else av_log(NULL, AV_LOG_DEBUG, "Clipping frame in rate conversion by %f\n", -delta0); sync_ipts = ost->sync_opts; @@ -1689,7 +1689,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti vid = 0; av_bprint_init(&buf, 0, AV_BPRINT_SIZE_AUTOMATIC); - av_bprint_init(&buf_script, 0, 1); + av_bprint_init(&buf_script, 0, AV_BPRINT_SIZE_AUTOMATIC); for (i = 0; i < nb_output_streams; i++) { float q = -1; ost = output_streams[i]; @@ -2710,8 +2710,13 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo ist->dts = ist->next_dts; switch (ist->dec_ctx->codec_type) { case AVMEDIA_TYPE_AUDIO: - ist->next_dts += ((int64_t)AV_TIME_BASE * ist->dec_ctx->frame_size) / - ist->dec_ctx->sample_rate; + av_assert1(pkt->duration >= 0); + if (ist->dec_ctx->sample_rate) { + ist->next_dts += ((int64_t)AV_TIME_BASE * ist->dec_ctx->frame_size) / + ist->dec_ctx->sample_rate; + } else { + ist->next_dts += av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q); + } break; case AVMEDIA_TYPE_VIDEO: if (ist->framerate.num) { @@ -4048,49 +4053,63 @@ static void *input_thread(void *arg) return NULL; } +static void free_input_thread(int i) +{ + InputFile *f = input_files[i]; + AVPacket pkt; + + if (!f || !f->in_thread_queue) + return; + av_thread_message_queue_set_err_send(f->in_thread_queue, AVERROR_EOF); + while (av_thread_message_queue_recv(f->in_thread_queue, &pkt, 0) >= 0) + av_packet_unref(&pkt); + + pthread_join(f->thread, NULL); + f->joined = 1; + av_thread_message_queue_free(&f->in_thread_queue); +} + static void free_input_threads(void) { int i; - for (i = 0; i < nb_input_files; i++) { - InputFile *f = input_files[i]; - AVPacket pkt; + for (i = 0; i < nb_input_files; i++) + free_input_thread(i); +} - if (!f || !f->in_thread_queue) - continue; - av_thread_message_queue_set_err_send(f->in_thread_queue, AVERROR_EOF); - while (av_thread_message_queue_recv(f->in_thread_queue, &pkt, 0) >= 0) - av_packet_unref(&pkt); +static int init_input_thread(int i) +{ + int ret; + InputFile *f = input_files[i]; - pthread_join(f->thread, NULL); - f->joined = 1; + if (nb_input_files == 1) + return 0; + + if (f->ctx->pb ? !f->ctx->pb->seekable : + strcmp(f->ctx->iformat->name, "lavfi")) + f->non_blocking = 1; + ret = av_thread_message_queue_alloc(&f->in_thread_queue, + f->thread_queue_size, sizeof(AVPacket)); + if (ret < 0) + return ret; + + if ((ret = pthread_create(&f->thread, NULL, input_thread, f))) { + av_log(NULL, AV_LOG_ERROR, "pthread_create failed: %s. Try to increase `ulimit -v` or decrease `ulimit -s`.\n", strerror(ret)); av_thread_message_queue_free(&f->in_thread_queue); + return AVERROR(ret); } + + return 0; } static int init_input_threads(void) { int i, ret; - if (nb_input_files == 1) - return 0; - for (i = 0; i < nb_input_files; i++) { - InputFile *f = input_files[i]; - - if (f->ctx->pb ? !f->ctx->pb->seekable : - strcmp(f->ctx->iformat->name, "lavfi")) - f->non_blocking = 1; - ret = av_thread_message_queue_alloc(&f->in_thread_queue, - f->thread_queue_size, sizeof(AVPacket)); + ret = init_input_thread(i); if (ret < 0) return ret; - - if ((ret = pthread_create(&f->thread, NULL, input_thread, f))) { - av_log(NULL, AV_LOG_ERROR, "pthread_create failed: %s. Try to increase `ulimit -v` or decrease `ulimit -s`.\n", strerror(ret)); - av_thread_message_queue_free(&f->in_thread_queue); - return AVERROR(ret); - } } return 0; } @@ -4232,7 +4251,7 @@ static int process_input(int file_index) AVFormatContext *is; InputStream *ist; AVPacket pkt; - int ret, i, j; + int ret, thread_ret, i, j; int64_t duration; int64_t pkt_dts; @@ -4255,7 +4274,15 @@ static int process_input(int file_index) avcodec_flush_buffers(avctx); } } +#if HAVE_THREADS + free_input_thread(file_index); +#endif ret = seek_to_start(ifile, is); +#if HAVE_THREADS + thread_ret = init_input_thread(file_index); + if (thread_ret < 0) + return thread_ret; +#endif if (ret < 0) av_log(NULL, AV_LOG_WARNING, "Seek to start failed.\n"); else diff --git a/chromium/third_party/ffmpeg/fftools/ffmpeg_filter.c b/chromium/third_party/ffmpeg/fftools/ffmpeg_filter.c index 068f499e0b6..6518d50870c 100644 --- a/chromium/third_party/ffmpeg/fftools/ffmpeg_filter.c +++ b/chromium/third_party/ffmpeg/fftools/ffmpeg_filter.c @@ -775,7 +775,7 @@ static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter, sar = ifilter->sample_aspect_ratio; if(!sar.den) sar = (AVRational){0,1}; - av_bprint_init(&args, 0, 1); + av_bprint_init(&args, 0, AV_BPRINT_SIZE_AUTOMATIC); av_bprintf(&args, "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:" "pixel_aspect=%d/%d:sws_param=flags=%d", diff --git a/chromium/third_party/ffmpeg/fftools/ffmpeg_opt.c b/chromium/third_party/ffmpeg/fftools/ffmpeg_opt.c index a2ecddae719..58ec13e5a8f 100644 --- a/chromium/third_party/ffmpeg/fftools/ffmpeg_opt.c +++ b/chromium/third_party/ffmpeg/fftools/ffmpeg_opt.c @@ -1103,9 +1103,22 @@ static int open_input_file(OptionsContext *o, const char *filename) } } + if (o->start_time != AV_NOPTS_VALUE && o->start_time_eof != AV_NOPTS_VALUE) { + av_log(NULL, AV_LOG_WARNING, "Cannot use -ss and -sseof both, using -ss for %s\n", filename); + o->start_time_eof = AV_NOPTS_VALUE; + } + if (o->start_time_eof != AV_NOPTS_VALUE) { - if (ic->duration>0) { + if (o->start_time_eof >= 0) { + av_log(NULL, AV_LOG_ERROR, "-sseof value must be negative; aborting\n"); + exit_program(1); + } + if (ic->duration > 0) { o->start_time = o->start_time_eof + ic->duration; + if (o->start_time < 0) { + av_log(NULL, AV_LOG_WARNING, "-sseof value seeks to before start of file %s; ignored\n", filename); + o->start_time = AV_NOPTS_VALUE; + } } else av_log(NULL, AV_LOG_WARNING, "Cannot use -sseof, duration of %s not known\n", filename); } diff --git a/chromium/third_party/ffmpeg/fftools/ffplay.c b/chromium/third_party/ffmpeg/fftools/ffplay.c index 84ba6673dc7..368e2621232 100644 --- a/chromium/third_party/ffmpeg/fftools/ffplay.c +++ b/chromium/third_party/ffmpeg/fftools/ffplay.c @@ -954,6 +954,22 @@ static int upload_texture(SDL_Texture **tex, AVFrame *frame, struct SwsContext * return ret; } +static void set_sdl_yuv_conversion_mode(AVFrame *frame) +{ +#if SDL_VERSION_ATLEAST(2,0,8) + SDL_YUV_CONVERSION_MODE mode = SDL_YUV_CONVERSION_AUTOMATIC; + if (frame && (frame->format == AV_PIX_FMT_YUV420P || frame->format == AV_PIX_FMT_YUYV422 || frame->format == AV_PIX_FMT_UYVY422)) { + if (frame->color_range == AVCOL_RANGE_JPEG) + mode = SDL_YUV_CONVERSION_JPEG; + else if (frame->colorspace == AVCOL_SPC_BT709) + mode = SDL_YUV_CONVERSION_BT709; + else if (frame->colorspace == AVCOL_SPC_BT470BG || frame->colorspace == AVCOL_SPC_SMPTE170M || frame->colorspace == AVCOL_SPC_SMPTE240M) + mode = SDL_YUV_CONVERSION_BT601; + } + SDL_SetYUVConversionMode(mode); +#endif +} + static void video_image_display(VideoState *is) { Frame *vp; @@ -1015,7 +1031,9 @@ static void video_image_display(VideoState *is) vp->flip_v = vp->frame->linesize[0] < 0; } + set_sdl_yuv_conversion_mode(vp->frame); SDL_RenderCopyEx(renderer, is->vid_texture, NULL, &rect, 0, NULL, vp->flip_v ? SDL_FLIP_VERTICAL : 0); + set_sdl_yuv_conversion_mode(NULL); if (sp) { #if USE_ONEPASS_SUBTITLE_RENDER SDL_RenderCopy(renderer, is->sub_texture, NULL, &rect); @@ -3251,15 +3269,14 @@ static void event_loop(VideoState *cur_stream) refresh_loop_wait_event(cur_stream, &event); switch (event.type) { case SDL_KEYDOWN: - if (exit_on_keydown) { + if (exit_on_keydown || event.key.keysym.sym == SDLK_ESCAPE || event.key.keysym.sym == SDLK_q) { do_exit(cur_stream); break; } + // If we don't yet have a window, skip all key events, because read_thread might still be initializing... + if (!cur_stream->width) + continue; switch (event.key.keysym.sym) { - case SDLK_ESCAPE: - case SDLK_q: - do_exit(cur_stream); - break; case SDLK_f: toggle_full_screen(cur_stream); cur_stream->force_refresh = 1; diff --git a/chromium/third_party/ffmpeg/libavcodec/Makefile b/chromium/third_party/ffmpeg/libavcodec/Makefile index 3ab071a0397..e62603f0ddc 100644 --- a/chromium/third_party/ffmpeg/libavcodec/Makefile +++ b/chromium/third_party/ffmpeg/libavcodec/Makefile @@ -44,6 +44,7 @@ OBJS = ac3_parser.o \ options.o \ mjpegenc_huffman.o \ parser.o \ + parsers.o \ profiles.o \ qsv_api.o \ raw.o \ @@ -210,6 +211,7 @@ OBJS-$(CONFIG_ATRAC3P_DECODER) += atrac3plusdec.o atrac3plus.o \ atrac3plusdsp.o atrac.o OBJS-$(CONFIG_ATRAC3PAL_DECODER) += atrac3plusdec.o atrac3plus.o \ atrac3plusdsp.o atrac.o +OBJS-$(CONFIG_ATRAC9_DECODER) += atrac9dec.o OBJS-$(CONFIG_AURA_DECODER) += cyuv.o OBJS-$(CONFIG_AURA2_DECODER) += aura.o OBJS-$(CONFIG_AVRN_DECODER) += avrndec.o mjpegdec.o @@ -1045,7 +1047,7 @@ OBJS-$(CONFIG_DUMP_EXTRADATA_BSF) += dump_extradata_bsf.o OBJS-$(CONFIG_DCA_CORE_BSF) += dca_core_bsf.o OBJS-$(CONFIG_EAC3_CORE_BSF) += eac3_core_bsf.o OBJS-$(CONFIG_EXTRACT_EXTRADATA_BSF) += extract_extradata_bsf.o \ - h2645_parse.o + av1_parse.o h2645_parse.o OBJS-$(CONFIG_FILTER_UNITS_BSF) += filter_units_bsf.o OBJS-$(CONFIG_H264_METADATA_BSF) += h264_metadata_bsf.o OBJS-$(CONFIG_H264_MP4TOANNEXB_BSF) += h264_mp4toannexb_bsf.o diff --git a/chromium/third_party/ffmpeg/libavcodec/aacdec_fixed.c b/chromium/third_party/ffmpeg/libavcodec/aacdec_fixed.c index 167f5b68a19..1bdb93f5bc8 100644 --- a/chromium/third_party/ffmpeg/libavcodec/aacdec_fixed.c +++ b/chromium/third_party/ffmpeg/libavcodec/aacdec_fixed.c @@ -436,7 +436,7 @@ static void apply_independent_coupling_fixed(AACContext *ac, else { for (i = 0; i < len; i++) { tmp = (int)(((int64_t)src[i] * c + (int64_t)0x1000000000) >> 37); - dest[i] += tmp * (1 << shift); + dest[i] += tmp * (1U << shift); } } } diff --git a/chromium/third_party/ffmpeg/libavcodec/aarch64/h264dsp_init_aarch64.c b/chromium/third_party/ffmpeg/libavcodec/aarch64/h264dsp_init_aarch64.c index e0f378f5ab4..eb2014e24d6 100644 --- a/chromium/third_party/ffmpeg/libavcodec/aarch64/h264dsp_init_aarch64.c +++ b/chromium/third_party/ffmpeg/libavcodec/aarch64/h264dsp_init_aarch64.c @@ -34,20 +34,20 @@ void ff_h264_v_loop_filter_chroma_neon(uint8_t *pix, int stride, int alpha, void ff_h264_h_loop_filter_chroma_neon(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0); -void ff_weight_h264_pixels_16_neon(uint8_t *dst, int stride, int height, +void ff_weight_h264_pixels_16_neon(uint8_t *dst, ptrdiff_t stride, int height, int log2_den, int weight, int offset); -void ff_weight_h264_pixels_8_neon(uint8_t *dst, int stride, int height, +void ff_weight_h264_pixels_8_neon(uint8_t *dst, ptrdiff_t stride, int height, int log2_den, int weight, int offset); -void ff_weight_h264_pixels_4_neon(uint8_t *dst, int stride, int height, +void ff_weight_h264_pixels_4_neon(uint8_t *dst, ptrdiff_t stride, int height, int log2_den, int weight, int offset); -void ff_biweight_h264_pixels_16_neon(uint8_t *dst, uint8_t *src, int stride, +void ff_biweight_h264_pixels_16_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int height, int log2_den, int weightd, int weights, int offset); -void ff_biweight_h264_pixels_8_neon(uint8_t *dst, uint8_t *src, int stride, +void ff_biweight_h264_pixels_8_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int height, int log2_den, int weightd, int weights, int offset); -void ff_biweight_h264_pixels_4_neon(uint8_t *dst, uint8_t *src, int stride, +void ff_biweight_h264_pixels_4_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int height, int log2_den, int weightd, int weights, int offset); diff --git a/chromium/third_party/ffmpeg/libavcodec/ac3_parser.c b/chromium/third_party/ffmpeg/libavcodec/ac3_parser.c index f4618bf215e..1e203ae6ac2 100644 --- a/chromium/third_party/ffmpeg/libavcodec/ac3_parser.c +++ b/chromium/third_party/ffmpeg/libavcodec/ac3_parser.c @@ -162,7 +162,9 @@ int avpriv_ac3_parse_header(AC3HeaderInfo **phdr, const uint8_t *buf, return AVERROR(ENOMEM); hdr = *phdr; - init_get_bits8(&gb, buf, size); + err = init_get_bits8(&gb, buf, size); + if (err < 0) + return AVERROR_INVALIDDATA; err = ff_ac3_parse_header(&gb, hdr); if (err < 0) return AVERROR_INVALIDDATA; diff --git a/chromium/third_party/ffmpeg/libavcodec/ac3dec.c b/chromium/third_party/ffmpeg/libavcodec/ac3dec.c index dfa025cbccb..ea7e052f8b5 100644 --- a/chromium/third_party/ffmpeg/libavcodec/ac3dec.c +++ b/chromium/third_party/ffmpeg/libavcodec/ac3dec.c @@ -1690,6 +1690,7 @@ dependent_frame: if (s->frame_type == EAC3_FRAME_TYPE_DEPENDENT) { uint64_t ich_layout = avpriv_ac3_channel_layout_tab[s->prev_output_mode & ~AC3_OUTPUT_LFEON]; + int channel_map_size = ff_ac3_channels_tab[s->output_mode & ~AC3_OUTPUT_LFEON] + s->lfe_on; uint64_t channel_layout; int extend = 0; @@ -1718,6 +1719,9 @@ dependent_frame: custom_channel_map_locations[ch][1]); if (index < 0) return AVERROR_INVALIDDATA; + if (extend >= channel_map_size) + return AVERROR_INVALIDDATA; + extended_channel_map[index] = offset + channel_map[extend++]; } else { int i; @@ -1728,6 +1732,9 @@ dependent_frame: 1LL << i); if (index < 0) return AVERROR_INVALIDDATA; + if (extend >= channel_map_size) + return AVERROR_INVALIDDATA; + extended_channel_map[index] = offset + channel_map[extend++]; } } diff --git a/chromium/third_party/ffmpeg/libavcodec/allcodecs.c b/chromium/third_party/ffmpeg/libavcodec/allcodecs.c index 90d170b06bc..505a361fb96 100644 --- a/chromium/third_party/ffmpeg/libavcodec/allcodecs.c +++ b/chromium/third_party/ffmpeg/libavcodec/allcodecs.c @@ -392,6 +392,7 @@ extern AVCodec ff_atrac3_decoder; extern AVCodec ff_atrac3al_decoder; extern AVCodec ff_atrac3p_decoder; extern AVCodec ff_atrac3pal_decoder; +extern AVCodec ff_atrac9_decoder; extern AVCodec ff_binkaudio_dct_decoder; extern AVCodec ff_binkaudio_rdft_decoder; extern AVCodec ff_bmv_audio_decoder; diff --git a/chromium/third_party/ffmpeg/libavcodec/atrac9dec.c b/chromium/third_party/ffmpeg/libavcodec/atrac9dec.c new file mode 100644 index 00000000000..629757f63d7 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavcodec/atrac9dec.c @@ -0,0 +1,929 @@ +/* + * ATRAC9 decoder + * Copyright (c) 2018 Rostislav Pehlivanov <atomnuker@gmail.com> + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "internal.h" +#include "get_bits.h" +#include "fft.h" +#include "atrac9tab.h" +#include "libavutil/lfg.h" +#include "libavutil/float_dsp.h" + +typedef struct ATRAC9ChannelData { + int band_ext; + int q_unit_cnt; + int band_ext_data[4]; + int32_t scalefactors[31]; + int32_t scalefactors_prev[31]; + + int precision_coarse[30]; + int precision_fine[30]; + int precision_mask[30]; + + int codebookset[30]; + + int32_t q_coeffs_coarse[256]; + int32_t q_coeffs_fine[256]; + + DECLARE_ALIGNED(32, float, coeffs )[256]; + DECLARE_ALIGNED(32, float, prev_win)[128]; +} ATRAC9ChannelData; + +typedef struct ATRAC9BlockData { + ATRAC9ChannelData channel[2]; + + /* Base */ + int band_count; + int q_unit_cnt; + int q_unit_cnt_prev; + + /* Stereo block only */ + int stereo_q_unit; + + /* Band extension only */ + int has_band_ext; + int has_band_ext_data; + int band_ext_q_unit; + int band_ext_mode; + + /* Gradient */ + int grad_mode; + int grad_boundary; + int gradient[31]; + + /* Stereo */ + int cpe_base_channel; + int is_signs[30]; + +} ATRAC9BlockData; + +typedef struct ATRAC9Context { + AVCodecContext *avctx; + AVFloatDSPContext *fdsp; + FFTContext imdct; + ATRAC9BlockData block[5]; + AVLFG lfg; + + /* Set on init */ + int frame_log2; + int avg_frame_size; + int frame_count; + int samplerate_idx; + const ATRAC9BlockConfig *block_config; + + /* Generated on init */ + VLC sf_vlc[2][8]; /* Signed/unsigned, length */ + VLC coeff_vlc[2][8][4]; /* Cookbook, precision, cookbook index */ + uint8_t alloc_curve[48][48]; + DECLARE_ALIGNED(32, float, imdct_win)[256]; + + DECLARE_ALIGNED(32, float, temp)[256]; +} ATRAC9Context; + +static inline int parse_gradient(ATRAC9Context *s, ATRAC9BlockData *b, + GetBitContext *gb) +{ + int grad_range[2]; + int grad_value[2]; + int values, sign, base; + uint8_t *curve; + float scale; + + b->grad_mode = get_bits(gb, 2); + if (b->grad_mode) { + grad_range[0] = get_bits(gb, 5); + grad_range[1] = 31; + grad_value[0] = get_bits(gb, 5); + grad_value[1] = 31; + } else { + grad_range[0] = get_bits(gb, 6); + grad_range[1] = get_bits(gb, 6) + 1; + grad_value[0] = get_bits(gb, 5); + grad_value[1] = get_bits(gb, 5); + } + b->grad_boundary = get_bits(gb, 4); + + if (grad_range[0] >= grad_range[1] || grad_range[1] > 47) + return AVERROR_INVALIDDATA; + + if (grad_value[0] >= grad_value[1] || grad_value[1] >= 32) + return AVERROR_INVALIDDATA; + + if (b->grad_boundary > b->q_unit_cnt) + return AVERROR_INVALIDDATA; + + values = grad_value[1] - grad_value[0]; + sign = 1 - 2*(values < 0); + base = grad_value[0] + sign; + scale = (FFABS(values) - 1) / 31.0f; + curve = s->alloc_curve[grad_range[1] - grad_range[0] - 1]; + + for (int i = 0; i <= b->q_unit_cnt; i++) + b->gradient[i] = grad_value[i >= grad_range[0]]; + + for (int i = grad_range[0]; i < grad_range[1]; i++) + b->gradient[i] = base + sign*((int)(scale*curve[i - grad_range[0]])); + + return 0; +} + +static inline void calc_precision(ATRAC9Context *s, ATRAC9BlockData *b, + ATRAC9ChannelData *c) +{ + memset(c->precision_mask, 0, sizeof(c->precision_mask)); + for (int i = 1; i < b->q_unit_cnt; i++) { + const int delta = FFABS(c->scalefactors[i] - c->scalefactors[i - 1]) - 1; + if (delta > 0) { + const int neg = c->scalefactors[i - 1] > c->scalefactors[i]; + c->precision_mask[i - neg] += FFMIN(delta, 5); + } + } + + if (b->grad_mode) { + for (int i = 0; i < b->q_unit_cnt; i++) { + c->precision_coarse[i] = c->scalefactors[i]; + c->precision_coarse[i] += c->precision_mask[i] - b->gradient[i]; + if (c->precision_coarse[i] < 0) + continue; + switch (b->grad_mode) { + case 1: + c->precision_coarse[i] >>= 1; + break; + case 2: + c->precision_coarse[i] = (3 * c->precision_coarse[i]) >> 3; + break; + case 3: + c->precision_coarse[i] >>= 2; + break; + } + } + } else { + for (int i = 0; i < b->q_unit_cnt; i++) + c->precision_coarse[i] = c->scalefactors[i] - b->gradient[i]; + } + + + for (int i = 0; i < b->q_unit_cnt; i++) + c->precision_coarse[i] = FFMAX(c->precision_coarse[i], 1); + + for (int i = 0; i < b->grad_boundary; i++) + c->precision_coarse[i]++; + + for (int i = 0; i < b->q_unit_cnt; i++) { + c->precision_fine[i] = 0; + if (c->precision_coarse[i] > 15) { + c->precision_fine[i] = c->precision_coarse[i] - 15; + c->precision_coarse[i] = 15; + } + } +} + +static inline int parse_band_ext(ATRAC9Context *s, ATRAC9BlockData *b, + GetBitContext *gb, int stereo) +{ + int ext_band = 0; + + if (b->has_band_ext) { + ext_band = at9_tab_band_ext_group[b->q_unit_cnt - 13][2]; + if (stereo) { + b->channel[1].band_ext = get_bits(gb, 2); + b->channel[1].band_ext = ext_band > 2 ? b->channel[1].band_ext : 4; + } else { + skip_bits1(gb); + } + } + + b->has_band_ext_data = get_bits1(gb); + if (!b->has_band_ext_data) + return 0; + + if (!b->has_band_ext) { + b->band_ext_mode = get_bits(gb, 2); + skip_bits_long(gb, get_bits(gb, 5)); + return 0; + } + + b->channel[0].band_ext = get_bits(gb, 2); + b->channel[0].band_ext = ext_band > 2 ? b->channel[0].band_ext : 4; + + if (!get_bits(gb, 5)) + return 0; + + for (int i = 0; i <= stereo; i++) { + ATRAC9ChannelData *c = &b->channel[i]; + const int count = at9_tab_band_ext_cnt[c->band_ext][ext_band]; + for (int j = 0; j < count; j++) { + int len = at9_tab_band_ext_lengths[c->band_ext][ext_band][j]; + c->band_ext_data[j] = get_bits(gb, len); + } + } + + return 0; +} + +static inline int read_scalefactors(ATRAC9Context *s, ATRAC9BlockData *b, + ATRAC9ChannelData *c, GetBitContext *gb, + int channel_idx, int first_in_pkt) +{ + static const int mode_map[2][4] = { { 0, 1, 2, 3 }, { 0, 2, 3, 4 } }; + const int mode = mode_map[channel_idx][get_bits(gb, 2)]; + + memset(c->scalefactors, 0, sizeof(c->scalefactors)); + + if (first_in_pkt && (mode == 4 || ((mode == 3) && !channel_idx))) { + av_log(s->avctx, AV_LOG_ERROR, "Invalid scalefactor coding mode!\n"); + return AVERROR_INVALIDDATA; + } + + switch (mode) { + case 0: { /* VLC delta offset */ + const uint8_t *sf_weights = at9_tab_sf_weights[get_bits(gb, 3)]; + const int base = get_bits(gb, 5); + const int len = get_bits(gb, 2) + 3; + const VLC *tab = &s->sf_vlc[0][len]; + + c->scalefactors[0] = get_bits(gb, len); + + for (int i = 1; i < b->band_ext_q_unit; i++) { + int val = c->scalefactors[i - 1] + get_vlc2(gb, tab->table, 9, 2); + c->scalefactors[i] = val & ((1 << len) - 1); + } + + for (int i = 0; i < b->band_ext_q_unit; i++) + c->scalefactors[i] += base - sf_weights[i]; + + break; + } + case 1: { /* CLC offset */ + const int len = get_bits(gb, 2) + 2; + const int base = len < 5 ? get_bits(gb, 5) : 0; + for (int i = 0; i < b->band_ext_q_unit; i++) + c->scalefactors[i] = base + get_bits(gb, len); + break; + } + case 2: + case 4: { /* VLC dist to baseline */ + const int *baseline = mode == 4 ? c->scalefactors_prev : + channel_idx ? b->channel[0].scalefactors : + c->scalefactors_prev; + const int baseline_len = mode == 4 ? b->q_unit_cnt_prev : + channel_idx ? b->band_ext_q_unit : + b->q_unit_cnt_prev; + + const int len = get_bits(gb, 2) + 2; + const int unit_cnt = FFMIN(b->band_ext_q_unit, baseline_len); + const VLC *tab = &s->sf_vlc[1][len]; + + for (int i = 0; i < unit_cnt; i++) { + int dist = get_vlc2(gb, tab->table, 9, 2); + c->scalefactors[i] = baseline[i] + dist; + } + + for (int i = unit_cnt; i < b->band_ext_q_unit; i++) + c->scalefactors[i] = get_bits(gb, 5); + + break; + } + case 3: { /* VLC offset with baseline */ + const int *baseline = channel_idx ? b->channel[0].scalefactors : + c->scalefactors_prev; + const int baseline_len = channel_idx ? b->band_ext_q_unit : + b->q_unit_cnt_prev; + + const int base = get_bits(gb, 5) - (1 << (5 - 1)); + const int len = get_bits(gb, 2) + 1; + const int unit_cnt = FFMIN(b->band_ext_q_unit, baseline_len); + const VLC *tab = &s->sf_vlc[0][len]; + + c->scalefactors[0] = get_bits(gb, len); + + for (int i = 1; i < unit_cnt; i++) { + int val = c->scalefactors[i - 1] + get_vlc2(gb, tab->table, 9, 2); + c->scalefactors[i] = val & ((1 << len) - 1); + } + + for (int i = 0; i < unit_cnt; i++) + c->scalefactors[i] += base + baseline[i]; + + for (int i = unit_cnt; i < b->band_ext_q_unit; i++) + c->scalefactors[i] = get_bits(gb, 5); + break; + } + } + + for (int i = 0; i < b->band_ext_q_unit; i++) + if (c->scalefactors[i] < 0 || c->scalefactors[i] > 31) + return AVERROR_INVALIDDATA; + + memcpy(c->scalefactors_prev, c->scalefactors, sizeof(c->scalefactors)); + + return 0; +} + +static inline void calc_codebook_idx(ATRAC9Context *s, ATRAC9BlockData *b, + ATRAC9ChannelData *c) +{ + int avg = 0; + const int last_sf = c->scalefactors[c->q_unit_cnt]; + + memset(c->codebookset, 0, sizeof(c->codebookset)); + + if (c->q_unit_cnt <= 1) + return; + if (s->samplerate_idx > 7) + return; + + c->scalefactors[c->q_unit_cnt] = c->scalefactors[c->q_unit_cnt - 1]; + + if (c->q_unit_cnt > 12) { + for (int i = 0; i < 12; i++) + avg += c->scalefactors[i]; + avg = (avg + 6) / 12; + } + + for (int i = 8; i < c->q_unit_cnt; i++) { + const int prev = c->scalefactors[i - 1]; + const int cur = c->scalefactors[i ]; + const int next = c->scalefactors[i + 1]; + const int min = FFMIN(prev, next); + if ((cur - min >= 3 || 2*cur - prev - next >= 3)) + c->codebookset[i] = 1; + } + + + for (int i = 12; i < c->q_unit_cnt; i++) { + const int cur = c->scalefactors[i]; + const int cnd = at9_q_unit_to_coeff_cnt[i] == 16; + const int min = FFMIN(c->scalefactors[i + 1], c->scalefactors[i - 1]); + if (c->codebookset[i]) + continue; + + c->codebookset[i] = (((cur - min) >= 2) && (cur >= (avg - cnd))); + } + + c->scalefactors[c->q_unit_cnt] = last_sf; +} + +static inline void read_coeffs_coarse(ATRAC9Context *s, ATRAC9BlockData *b, + ATRAC9ChannelData *c, GetBitContext *gb) +{ + const int max_prec = s->samplerate_idx > 7 ? 1 : 7; + + memset(c->q_coeffs_coarse, 0, sizeof(c->q_coeffs_coarse)); + + for (int i = 0; i < c->q_unit_cnt; i++) { + int *coeffs = &c->q_coeffs_coarse[at9_q_unit_to_coeff_idx[i]]; + const int bands = at9_q_unit_to_coeff_cnt[i]; + const int prec = c->precision_coarse[i] + 1; + + if (prec <= max_prec) { + const int cb = c->codebookset[i]; + const int cbi = at9_q_unit_to_codebookidx[i]; + const VLC *tab = &s->coeff_vlc[cb][prec][cbi]; + const HuffmanCodebook *huff = &at9_huffman_coeffs[cb][prec][cbi]; + const int groups = bands >> huff->value_cnt_pow; + + for (int j = 0; j < groups; j++) { + uint16_t val = get_vlc2(gb, tab->table, 9, huff->max_bit_size); + + for (int k = 0; k < huff->value_cnt; k++) { + coeffs[k] = sign_extend(val, huff->value_bits); + val >>= huff->value_bits; + } + + coeffs += huff->value_cnt; + } + } else { + for (int j = 0; j < bands; j++) + coeffs[j] = sign_extend(get_bits(gb, prec), prec); + } + } +} + +static inline void read_coeffs_fine(ATRAC9Context *s, ATRAC9BlockData *b, + ATRAC9ChannelData *c, GetBitContext *gb) +{ + memset(c->q_coeffs_fine, 0, sizeof(c->q_coeffs_fine)); + + for (int i = 0; i < c->q_unit_cnt; i++) { + const int start = at9_q_unit_to_coeff_idx[i + 0]; + const int end = at9_q_unit_to_coeff_idx[i + 1]; + const int len = c->precision_fine[i] + 1; + + if (c->precision_fine[i] <= 0) + continue; + + for (int j = start; j < end; j++) + c->q_coeffs_fine[j] = sign_extend(get_bits(gb, len), len); + } +} + +static inline void dequantize(ATRAC9Context *s, ATRAC9BlockData *b, + ATRAC9ChannelData *c) +{ + memset(c->coeffs, 0, sizeof(c->coeffs)); + + for (int i = 0; i < c->q_unit_cnt; i++) { + const int start = at9_q_unit_to_coeff_idx[i + 0]; + const int end = at9_q_unit_to_coeff_idx[i + 1]; + + const float coarse_c = at9_quant_step_coarse[c->precision_coarse[i]]; + const float fine_c = at9_quant_step_fine[c->precision_fine[i]]; + + for (int j = start; j < end; j++) { + const float vc = c->q_coeffs_coarse[j] * coarse_c; + const float vf = c->q_coeffs_fine[j] * fine_c; + c->coeffs[j] = vc + vf; + } + } +} + +static inline void apply_intensity_stereo(ATRAC9Context *s, ATRAC9BlockData *b, + const int stereo) +{ + float *src = b->channel[ b->cpe_base_channel].coeffs; + float *dst = b->channel[!b->cpe_base_channel].coeffs; + + if (!stereo) + return; + + if (b->q_unit_cnt <= b->stereo_q_unit) + return; + + for (int i = b->stereo_q_unit; i < b->q_unit_cnt; i++) { + const int sign = b->is_signs[i]; + const int start = at9_q_unit_to_coeff_idx[i + 0]; + const int end = at9_q_unit_to_coeff_idx[i + 1]; + for (int j = start; j < end; j++) + dst[j] = sign*src[j]; + } +} + +static inline void apply_scalefactors(ATRAC9Context *s, ATRAC9BlockData *b, + const int stereo) +{ + for (int i = 0; i <= stereo; i++) { + float *coeffs = b->channel[i].coeffs; + for (int j = 0; j < b->q_unit_cnt; j++) { + const int start = at9_q_unit_to_coeff_idx[j + 0]; + const int end = at9_q_unit_to_coeff_idx[j + 1]; + const int scalefactor = b->channel[i].scalefactors[j]; + const float scale = at9_scalefactor_c[scalefactor]; + for (int k = start; k < end; k++) + coeffs[k] *= scale; + } + } +} + +static inline void fill_with_noise(ATRAC9Context *s, ATRAC9ChannelData *c, + int start, int count) +{ + float maxval = 0.0f; + for (int i = 0; i < count; i += 2) { + double tmp[2]; + av_bmg_get(&s->lfg, tmp); + c->coeffs[start + i + 0] = tmp[0]; + c->coeffs[start + i + 1] = tmp[1]; + maxval = FFMAX(FFABS(tmp[0]), FFMAX(FFABS(tmp[1]), maxval)); + } + /* Normalize */ + for (int i = 0; i < count; i++) + c->coeffs[start + i] /= maxval; +} + +static inline void scale_band_ext_coeffs(ATRAC9ChannelData *c, float sf[6], + const int s_unit, const int e_unit) +{ + for (int i = s_unit; i < e_unit; i++) { + const int start = at9_q_unit_to_coeff_idx[i + 0]; + const int end = at9_q_unit_to_coeff_idx[i + 1]; + for (int j = start; j < end; j++) + c->coeffs[j] *= sf[i - s_unit]; + } +} + +static inline void apply_band_extension(ATRAC9Context *s, ATRAC9BlockData *b, + const int stereo) +{ + const int bc = at9_tab_band_ext_group[b->q_unit_cnt - 13][2]; + const int g_units[4] = { /* A, B, C, total units */ + b->q_unit_cnt, + at9_tab_band_ext_group[b->q_unit_cnt - 13][0], + at9_tab_band_ext_group[b->q_unit_cnt - 13][1], + FFMAX(g_units[2], 22), + }; + + const int g_bins[4] = { /* A, B, C, total bins */ + at9_q_unit_to_coeff_idx[g_units[0]], + at9_q_unit_to_coeff_idx[g_units[1]], + at9_q_unit_to_coeff_idx[g_units[2]], + at9_q_unit_to_coeff_idx[g_units[3]], + }; + + if (!b->has_band_ext || !b->has_band_ext_data) + return; + + for (int ch = 0; ch <= stereo; ch++) { + ATRAC9ChannelData *c = &b->channel[ch]; + + /* Mirror the spectrum */ + for (int i = 0; i < 3; i++) + for (int j = 0; j < (g_bins[i + 1] - g_bins[i + 0]); j++) + c->coeffs[g_bins[i] + j] = c->coeffs[g_bins[i] - j - 1]; + + switch (c->band_ext) { + case 0: { + int l; + float sf[6] = { 0.0f }; + const int n_start = at9_q_unit_to_coeff_idx[g_units[3] - 1]; + const int n_cnt = at9_q_unit_to_coeff_cnt[g_units[3] - 1]; + switch (bc) { + case 3: + sf[0] = at9_band_ext_scales_m0[0][0][c->band_ext_data[0]]; + sf[1] = at9_band_ext_scales_m0[0][1][c->band_ext_data[0]]; + sf[2] = at9_band_ext_scales_m0[0][2][c->band_ext_data[1]]; + sf[3] = at9_band_ext_scales_m0[0][3][c->band_ext_data[2]]; + sf[4] = at9_band_ext_scales_m0[0][4][c->band_ext_data[3]]; + break; + case 4: + sf[0] = at9_band_ext_scales_m0[1][0][c->band_ext_data[0]]; + sf[1] = at9_band_ext_scales_m0[1][1][c->band_ext_data[0]]; + sf[2] = at9_band_ext_scales_m0[1][2][c->band_ext_data[1]]; + sf[3] = at9_band_ext_scales_m0[1][3][c->band_ext_data[2]]; + sf[4] = at9_band_ext_scales_m0[1][4][c->band_ext_data[3]]; + break; + case 5: + sf[0] = at9_band_ext_scales_m0[2][0][c->band_ext_data[0]]; + sf[1] = at9_band_ext_scales_m0[2][1][c->band_ext_data[1]]; + sf[2] = at9_band_ext_scales_m0[2][2][c->band_ext_data[1]]; + break; + } + + l = g_units[3] - g_units[0] - 1; + sf[l] = at9_scalefactor_c[c->scalefactors[g_units[0]]]; + + fill_with_noise(s, c, n_start, n_cnt); + scale_band_ext_coeffs(c, sf, g_units[0], g_units[3]); + break; + } + case 1: { + float sf[6]; + for (int i = g_units[0]; i < g_units[3]; i++) + sf[i - g_units[0]] = at9_scalefactor_c[c->scalefactors[i]]; + + fill_with_noise(s, c, g_bins[0], g_bins[3] - g_bins[0]); + scale_band_ext_coeffs(c, sf, g_units[0], g_units[3]); + break; + } + case 2: { + const float g_sf[2] = { + at9_band_ext_scales_m2[c->band_ext_data[0]], + at9_band_ext_scales_m2[c->band_ext_data[1]], + }; + + for (int i = 0; i < 2; i++) + for (int j = g_bins[i + 0]; j < g_bins[i + 1]; j++) + c->coeffs[j] *= g_sf[i]; + break; + } + case 3: { + float scale = at9_band_ext_scales_m3[c->band_ext_data[0]][0]; + float rate = at9_band_ext_scales_m3[c->band_ext_data[1]][1]; + rate = pow(2, rate); + for (int i = g_bins[0]; i < g_bins[3]; i++) { + scale *= rate; + c->coeffs[i] *= scale; + } + break; + } + case 4: { + const float m = at9_band_ext_scales_m4[c->band_ext_data[0]]; + const float g_sf[3] = { 0.7079468f*m, 0.5011902f*m, 0.3548279f*m }; + + for (int i = 0; i < 3; i++) + for (int j = g_bins[i + 0]; j < g_bins[i + 1]; j++) + c->coeffs[j] *= g_sf[i]; + break; + } + } + } +} + +static int atrac9_decode_block(ATRAC9Context *s, GetBitContext *gb, + ATRAC9BlockData *b, AVFrame *frame, + int frame_idx, int block_idx) +{ + const int first_in_pkt = !get_bits1(gb); + const int reuse_params = get_bits1(gb); + const int stereo = s->block_config->type[block_idx] == ATRAC9_BLOCK_TYPE_CPE; + + if (first_in_pkt && reuse_params) { + av_log(s->avctx, AV_LOG_ERROR, "Invalid block flags!\n"); + return AVERROR_INVALIDDATA; + } + + /* Band parameters */ + if (!reuse_params) { + int stereo_band, ext_band; + const int min_band_count = s->samplerate_idx > 7 ? 1 : 3; + b->band_count = get_bits(gb, 4) + min_band_count; + b->q_unit_cnt = at9_tab_band_q_unit_map[b->band_count]; + + b->band_ext_q_unit = b->stereo_q_unit = b->q_unit_cnt; + + if (b->band_count > at9_tab_sri_max_bands[s->samplerate_idx]) { + av_log(s->avctx, AV_LOG_ERROR, "Invalid band count %i!\n", + b->band_count); + return AVERROR_INVALIDDATA; + } + + if (stereo) { + stereo_band = get_bits(gb, 4) + min_band_count; + if (stereo_band > b->band_count) { + av_log(s->avctx, AV_LOG_ERROR, "Invalid stereo band %i!\n", + stereo_band); + return AVERROR_INVALIDDATA; + } + b->stereo_q_unit = at9_tab_band_q_unit_map[stereo_band]; + } + + b->has_band_ext = get_bits1(gb); + if (b->has_band_ext) { + ext_band = get_bits(gb, 4) + min_band_count; + if (ext_band < b->band_count) { + av_log(s->avctx, AV_LOG_ERROR, "Invalid extension band %i!\n", + ext_band); + return AVERROR_INVALIDDATA; + } + b->band_ext_q_unit = at9_tab_band_q_unit_map[ext_band]; + } + } + + /* Calculate bit alloc gradient */ + if (parse_gradient(s, b, gb)) + return AVERROR_INVALIDDATA; + + /* IS data */ + b->cpe_base_channel = 0; + if (stereo) { + b->cpe_base_channel = get_bits1(gb); + if (get_bits1(gb)) { + for (int i = b->stereo_q_unit; i < b->q_unit_cnt; i++) + b->is_signs[i] = 1 - 2*get_bits1(gb); + } else { + for (int i = 0; i < FF_ARRAY_ELEMS(b->is_signs); i++) + b->is_signs[i] = 1; + } + } + + /* Band extension */ + if (parse_band_ext(s, b, gb, stereo)) + return AVERROR_INVALIDDATA; + + /* Scalefactors */ + for (int i = 0; i <= stereo; i++) { + ATRAC9ChannelData *c = &b->channel[i]; + c->q_unit_cnt = i == b->cpe_base_channel ? b->q_unit_cnt : + b->stereo_q_unit; + if (read_scalefactors(s, b, c, gb, i, first_in_pkt)) + return AVERROR_INVALIDDATA; + + calc_precision (s, b, c); + calc_codebook_idx (s, b, c); + read_coeffs_coarse(s, b, c, gb); + read_coeffs_fine (s, b, c, gb); + dequantize (s, b, c); + } + + b->q_unit_cnt_prev = b->has_band_ext ? b->band_ext_q_unit : b->q_unit_cnt; + + apply_intensity_stereo(s, b, stereo); + apply_scalefactors (s, b, stereo); + apply_band_extension (s, b, stereo); + + /* iMDCT */ + for (int i = 0; i <= stereo; i++) { + ATRAC9ChannelData *c = &b->channel[i]; + const int dst_idx = s->block_config->plane_map[block_idx][i]; + const int wsize = 1 << s->frame_log2; + const ptrdiff_t offset = wsize*frame_idx*sizeof(float); + float *dst = (float *)(frame->extended_data[dst_idx] + offset); + + s->imdct.imdct_half(&s->imdct, s->temp, c->coeffs); + s->fdsp->vector_fmul_window(dst, c->prev_win, s->temp, + s->imdct_win, wsize >> 1); + memcpy(c->prev_win, s->temp + (wsize >> 1), sizeof(float)*wsize >> 1); + } + + return 0; +} + +static int atrac9_decode_frame(AVCodecContext *avctx, void *data, + int *got_frame_ptr, AVPacket *avpkt) +{ + int ret; + GetBitContext gb; + AVFrame *frame = data; + ATRAC9Context *s = avctx->priv_data; + const int frames = FFMIN(avpkt->size / s->avg_frame_size, s->frame_count); + + frame->nb_samples = (1 << s->frame_log2) * frames; + ret = ff_get_buffer(avctx, frame, 0); + if (ret < 0) + return ret; + + init_get_bits8(&gb, avpkt->data, avpkt->size); + + for (int i = 0; i < frames; i++) { + for (int j = 0; j < s->block_config->count; j++) { + ret = atrac9_decode_block(s, &gb, &s->block[j], frame, i, j); + if (ret) + return ret; + align_get_bits(&gb); + } + } + + *got_frame_ptr = 1; + + return avctx->block_align; +} + +static void atrac9_decode_flush(AVCodecContext *avctx) +{ + ATRAC9Context *s = avctx->priv_data; + + for (int j = 0; j < s->block_config->count; j++) { + ATRAC9BlockData *b = &s->block[j]; + const int stereo = s->block_config->type[j] == ATRAC9_BLOCK_TYPE_CPE; + for (int i = 0; i <= stereo; i++) { + ATRAC9ChannelData *c = &b->channel[i]; + memset(c->prev_win, 0, sizeof(c->prev_win)); + } + } +} + +static av_cold int atrac9_decode_close(AVCodecContext *avctx) +{ + ATRAC9Context *s = avctx->priv_data; + + for (int i = 1; i < 7; i++) + ff_free_vlc(&s->sf_vlc[0][i]); + for (int i = 2; i < 6; i++) + ff_free_vlc(&s->sf_vlc[1][i]); + for (int i = 0; i < 2; i++) + for (int j = 0; j < 8; j++) + for (int k = 0; k < 4; k++) + ff_free_vlc(&s->coeff_vlc[i][j][k]); + + ff_mdct_end(&s->imdct); + av_free(s->fdsp); + + return 0; +} + +static av_cold int atrac9_decode_init(AVCodecContext *avctx) +{ + GetBitContext gb; + ATRAC9Context *s = avctx->priv_data; + int version, block_config_idx, superframe_idx, alloc_c_len; + + s->avctx = avctx; + + av_lfg_init(&s->lfg, 0xFBADF00D); + + if (avctx->extradata_size != 12) { + av_log(avctx, AV_LOG_ERROR, "Invalid extradata length!\n"); + return AVERROR_INVALIDDATA; + } + + version = AV_RL32(avctx->extradata); + if (version > 2) { + av_log(avctx, AV_LOG_ERROR, "Unsupported version (%i)!\n", version); + return AVERROR_INVALIDDATA; + } + + init_get_bits8(&gb, avctx->extradata + 4, avctx->extradata_size); + + if (get_bits(&gb, 8) != 0xFE) { + av_log(avctx, AV_LOG_ERROR, "Incorrect magic byte!\n"); + return AVERROR_INVALIDDATA; + } + + s->samplerate_idx = get_bits(&gb, 4); + avctx->sample_rate = at9_tab_samplerates[s->samplerate_idx]; + + block_config_idx = get_bits(&gb, 3); + if (block_config_idx > 5) { + av_log(avctx, AV_LOG_ERROR, "Incorrect block config!\n"); + return AVERROR_INVALIDDATA; + } + s->block_config = &at9_block_layout[block_config_idx]; + + avctx->channel_layout = s->block_config->channel_layout; + avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; + + if (get_bits1(&gb)) { + av_log(avctx, AV_LOG_ERROR, "Incorrect verification bit!\n"); + return AVERROR_INVALIDDATA; + } + + /* Average frame size in bytes */ + s->avg_frame_size = get_bits(&gb, 11) + 1; + + superframe_idx = get_bits(&gb, 2); + if (superframe_idx & 1) { + av_log(avctx, AV_LOG_ERROR, "Invalid superframe index!\n"); + return AVERROR_INVALIDDATA; + } + + s->frame_count = 1 << superframe_idx; + s->frame_log2 = at9_tab_sri_frame_log2[s->samplerate_idx]; + + if (ff_mdct_init(&s->imdct, s->frame_log2 + 1, 1, 1.0f / 32768.0f)) + return AVERROR(ENOMEM); + + s->fdsp = avpriv_float_dsp_alloc(avctx->flags & AV_CODEC_FLAG_BITEXACT); + if (!s->fdsp) + return AVERROR(ENOMEM); + + /* iMDCT window */ + for (int i = 0; i < (1 << s->frame_log2); i++) { + const int len = 1 << s->frame_log2; + const float sidx = ( i + 0.5f) / len; + const float eidx = (len - i - 0.5f) / len; + const float s_c = sinf(sidx*M_PI - M_PI_2)*0.5f + 0.5f; + const float e_c = sinf(eidx*M_PI - M_PI_2)*0.5f + 0.5f; + s->imdct_win[i] = s_c / ((s_c * s_c) + (e_c * e_c)); + } + + /* Allocation curve */ + alloc_c_len = FF_ARRAY_ELEMS(at9_tab_b_dist); + for (int i = 1; i <= alloc_c_len; i++) + for (int j = 0; j < i; j++) + s->alloc_curve[i - 1][j] = at9_tab_b_dist[(j * alloc_c_len) / i]; + + /* Unsigned scalefactor VLCs */ + for (int i = 1; i < 7; i++) { + const HuffmanCodebook *hf = &at9_huffman_sf_unsigned[i]; + + init_vlc(&s->sf_vlc[0][i], 9, hf->size, hf->bits, 1, 1, hf->codes, + 2, 2, 0); + } + + /* Signed scalefactor VLCs */ + for (int i = 2; i < 6; i++) { + const HuffmanCodebook *hf = &at9_huffman_sf_signed[i]; + + int nums = hf->size; + int16_t sym[32]; + for (int j = 0; j < nums; j++) + sym[j] = sign_extend(j, hf->value_bits); + + ff_init_vlc_sparse(&s->sf_vlc[1][i], 9, hf->size, hf->bits, 1, 1, + hf->codes, 2, 2, sym, sizeof(*sym), sizeof(*sym), 0); + } + + /* Coefficient VLCs */ + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 8; j++) { + for (int k = 0; k < 4; k++) { + const HuffmanCodebook *hf = &at9_huffman_coeffs[i][j][k]; + init_vlc(&s->coeff_vlc[i][j][k], 9, hf->size, hf->bits, 1, 1, + hf->codes, 2, 2, 0); + } + } + } + + return 0; +} + +AVCodec ff_atrac9_decoder = { + .name = "atrac9", + .long_name = NULL_IF_CONFIG_SMALL("ATRAC9 (Adaptive TRansform Acoustic Coding 9)"), + .type = AVMEDIA_TYPE_AUDIO, + .id = AV_CODEC_ID_ATRAC9, + .priv_data_size = sizeof(ATRAC9Context), + .init = atrac9_decode_init, + .close = atrac9_decode_close, + .decode = atrac9_decode_frame, + .flush = atrac9_decode_flush, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, + .capabilities = AV_CODEC_CAP_SUBFRAMES | AV_CODEC_CAP_DR1, +}; diff --git a/chromium/third_party/ffmpeg/libavcodec/atrac9tab.h b/chromium/third_party/ffmpeg/libavcodec/atrac9tab.h new file mode 100644 index 00000000000..d25c6f1b7fa --- /dev/null +++ b/chromium/third_party/ffmpeg/libavcodec/atrac9tab.h @@ -0,0 +1,1633 @@ +/* + * ATRAC9 decoder + * Copyright (c) 2018 Rostislav Pehlivanov <atomnuker@gmail.com> + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_ATRAC9TAB_H +#define AVCODEC_ATRAC9TAB_H + +#include <stdint.h> + +#include "libavutil/channel_layout.h" + +enum ATRAC9BlockType { + ATRAC9_BLOCK_TYPE_SCE, /* Single channel */ + ATRAC9_BLOCK_TYPE_CPE, /* 2 coupled channels */ + ATRAC9_BLOCK_TYPE_LFE, /* Single LFE channel */ +}; + +typedef struct ATRAC9BlockConfig { + uint64_t channel_layout; + enum ATRAC9BlockType type[5]; + int plane_map[5][2]; + int count; +} ATRAC9BlockConfig; + +static const ATRAC9BlockConfig at9_block_layout[] = { + { /* Mono */ + AV_CH_LAYOUT_MONO, + { + ATRAC9_BLOCK_TYPE_SCE, + }, + { { 0 }, }, + 1, + }, + { /* Dual Mono */ + AV_CH_LAYOUT_STEREO, + { + ATRAC9_BLOCK_TYPE_SCE, + ATRAC9_BLOCK_TYPE_SCE, + }, + { { 0 }, { 1 }, }, + 2, + }, + { /* Stereo */ + AV_CH_LAYOUT_STEREO, + { + ATRAC9_BLOCK_TYPE_CPE, + }, + { { 0, 1 }, }, + 1, + }, + { /* 5.1 */ + AV_CH_LAYOUT_5POINT1, + { + ATRAC9_BLOCK_TYPE_CPE, + ATRAC9_BLOCK_TYPE_SCE, + ATRAC9_BLOCK_TYPE_LFE, + ATRAC9_BLOCK_TYPE_CPE, + }, + { { 0, 1 }, { 2 }, { 3 }, { 4, 5 }, }, + 4, + }, + { /* 5.1 */ + AV_CH_LAYOUT_7POINT1, + { + ATRAC9_BLOCK_TYPE_CPE, + ATRAC9_BLOCK_TYPE_SCE, + ATRAC9_BLOCK_TYPE_LFE, + ATRAC9_BLOCK_TYPE_CPE, + ATRAC9_BLOCK_TYPE_CPE, + }, + { { 0, 1 }, { 2 }, { 3 }, { 4, 5 }, { 6, 7 }, }, + 5, + }, + { /* Quad */ + AV_CH_LAYOUT_QUAD, + { + ATRAC9_BLOCK_TYPE_CPE, + ATRAC9_BLOCK_TYPE_CPE, + }, + { { 0, 1 }, { 2, 3 }, }, + 2, + }, +}; + +static const uint8_t at9_tab_sri_frame_log2[] = { + 6, 6, 7, 7, 7, 8, 8, 8, 6, 6, 7, 7, 7, 8, 8, 8, +}; + +static const uint8_t at9_tab_band_q_unit_map[] = { + 0, 4, 8, 10, 12, 13, 14, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 28, 30, +}; + +static const uint8_t at9_q_unit_to_coeff_cnt[] = { + 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 8, 8, 8, + 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, +}; + +static const int at9_q_unit_to_coeff_idx[] = { + 0, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, + 72, 80, 88, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256 +}; + +const uint8_t at9_q_unit_to_codebookidx[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, +}; + +static const uint8_t at9_tab_sri_max_bands[] = { + 8, 8, 12, 12, 12, 18, 18, 18, 8, 8, 12, 12, 12, 16, 16, 16, +}; + +static const int at9_tab_samplerates[] = { + 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 44100, 48000, + 64000, 88200, 96000, 128000, 176400, 192000, +}; + +static const uint8_t at9_tab_band_ext_cnt[][6] = { + { 0, 0, 0, 4, 4, 2 }, + { 0, 0, 0, 0, 0, 0 }, + { 0, 0, 0, 2, 2, 1 }, + { 0, 0, 0, 2, 2, 2 }, + { 1, 1, 1, 0, 0, 0 }, +}; + +/* B unit, C unit, Band count */ +static const uint8_t at9_tab_band_ext_group[][3] = { + { 16, 21, 0 }, + { 18, 22, 1 }, + { 20, 22, 2 }, + { 21, 22, 3 }, + { 21, 22, 3 }, + { 23, 24, 4 }, + { 23, 24, 4 }, + { 24, 24, 5 }, +}; + +static const uint8_t at9_tab_band_ext_lengths[][6][4] = { + { + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 5, 4, 3, 3 }, + { 4, 4, 3, 4 }, + { 4, 5, 0, 0 }, + }, + { + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + }, + { + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 6, 6, 0, 0 }, + { 6, 6, 0, 0 }, + { 6, 0, 0, 0 }, + }, + { + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 4, 4, 0, 0 }, + { 4, 4, 0, 0 }, + { 4, 4, 0, 0 }, + }, + { + { 3, 0, 0, 0 }, + { 3, 0, 0, 0 }, + { 3, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + }, +}; + +static const float at9_band_ext_scales_m0[][5][32] = { + { + { + 0.000000e+0f, 1.988220e-1f, 2.514343e-1f, 2.960510e-1f, + 3.263550e-1f, 3.771362e-1f, 3.786926e-1f, 4.540405e-1f, + 4.877625e-1f, 5.262451e-1f, 5.447083e-1f, 5.737000e-1f, + 6.212158e-1f, 6.222839e-1f, 6.560974e-1f, 6.896667e-1f, + 7.555542e-1f, 7.677917e-1f, 7.918091e-1f, 7.971497e-1f, + 8.188171e-1f, 8.446045e-1f, 9.790649e-1f, 9.822083e-1f, + 9.846191e-1f, 9.859314e-1f, 9.863586e-1f, 9.863892e-1f, + 9.873352e-1f, 9.881287e-1f, 9.898682e-1f, 9.913330e-1f, + }, { + 0.000000e+0f, 9.982910e-1f, 7.592773e-2f, 7.179565e-1f, + 9.851379e-1f, 5.340271e-1f, 9.013672e-1f, 6.349182e-1f, + 7.226257e-1f, 1.948547e-1f, 7.628174e-1f, 9.873657e-1f, + 8.112183e-1f, 2.715454e-1f, 9.734192e-1f, 1.443787e-1f, + 4.640198e-1f, 3.249207e-1f, 3.790894e-1f, 8.276367e-2f, + 5.954590e-1f, 2.864380e-1f, 9.806824e-1f, 7.929077e-1f, + 6.292114e-1f, 4.887085e-1f, 2.905273e-1f, 1.301880e-1f, + 3.140869e-1f, 5.482483e-1f, 4.210815e-1f, 1.182861e-1f, + }, { + 0.000000e+0f, 3.155518e-2f, 8.581543e-2f, 1.364746e-1f, + 1.858826e-1f, 2.368469e-1f, 2.888184e-1f, 3.432617e-1f, + 4.012451e-1f, 4.623108e-1f, 5.271301e-1f, 5.954895e-1f, + 6.681213e-1f, 7.448425e-1f, 8.245239e-1f, 9.097290e-1f, + }, { + 0.000000e+0f, 4.418945e-2f, 1.303711e-1f, 2.273560e-1f, + 3.395996e-1f, 4.735718e-1f, 6.267090e-1f, 8.003845e-1f, + }, { + 0.000000e+0f, 2.804565e-2f, 9.683228e-2f, 1.849976e-1f, + 3.005981e-1f, 4.470520e-1f, 6.168518e-1f, 8.007813e-1f, + }, + }, + { + { + 0.000000e+0f, 2.708740e-1f, 3.479614e-1f, 3.578186e-1f, + 5.083618e-1f, 5.299072e-1f, 5.819092e-1f, 6.381836e-1f, + 7.276917e-1f, 7.595520e-1f, 7.878723e-1f, 9.707336e-1f, + 9.713135e-1f, 9.736023e-1f, 9.759827e-1f, 9.832458e-1f, + }, { + 0.000000e+0f, 2.330627e-1f, 5.891418e-1f, 7.170410e-1f, + 2.036438e-1f, 1.613464e-1f, 6.668701e-1f, 9.481201e-1f, + 9.769897e-1f, 5.111694e-1f, 3.522644e-1f, 8.209534e-1f, + 2.933960e-1f, 9.757690e-1f, 5.289917e-1f, 4.372253e-1f, + }, { + 0.000000e+0f, 4.360962e-2f, 1.056519e-1f, 1.590576e-1f, + 2.078857e-1f, 2.572937e-1f, 3.082581e-1f, 3.616028e-1f, + 4.191589e-1f, 4.792175e-1f, 5.438538e-1f, 6.125183e-1f, + 6.841125e-1f, 7.589417e-1f, 8.365173e-1f, 9.148254e-1f, + }, { + 0.000000e+0f, 4.074097e-2f, 1.164551e-1f, 2.077026e-1f, + 3.184509e-1f, 4.532166e-1f, 6.124268e-1f, 7.932129e-1f, + }, { + 0.000000e+0f, 8.880615e-3f, 2.932739e-2f, 5.593872e-2f, + 8.825684e-2f, 1.259155e-1f, 1.721497e-1f, 2.270813e-1f, + 2.901611e-1f, 3.579712e-1f, 4.334106e-1f, 5.147095e-1f, + 6.023254e-1f, 6.956177e-1f, 7.952881e-1f, 8.977356e-1f, + }, + }, + { + { + 0.000000e+0f, 7.379150e-2f, 1.806335e-1f, 2.687073e-1f, + 3.407898e-1f, 4.047546e-1f, 4.621887e-1f, 5.168762e-1f, + 5.703125e-1f, 6.237488e-1f, 6.763611e-1f, 7.288208e-1f, + 7.808533e-1f, 8.337708e-1f, 8.874512e-1f, 9.418030e-1f, + }, { + 0.000000e+0f, 7.980347e-2f, 1.615295e-1f, 1.665649e-1f, + 1.822205e-1f, 2.185669e-1f, 2.292175e-1f, 2.456665e-1f, + 2.666321e-1f, 3.306580e-1f, 3.330688e-1f, 3.765259e-1f, + 4.085083e-1f, 4.400024e-1f, 4.407654e-1f, 4.817505e-1f, + 4.924011e-1f, 5.320740e-1f, 5.893860e-1f, 6.131287e-1f, + 6.212463e-1f, 6.278076e-1f, 6.308899e-1f, 7.660828e-1f, + 7.850647e-1f, 7.910461e-1f, 7.929382e-1f, 8.038330e-1f, + 9.834900e-1f, 9.846191e-1f, 9.852295e-1f, 9.862671e-1f, + }, { + 0.000000e+0f, 6.084290e-1f, 3.672791e-1f, 3.151855e-1f, + 1.488953e-1f, 2.571716e-1f, 5.103455e-1f, 3.311157e-1f, + 5.426025e-2f, 4.254456e-1f, 7.998352e-1f, 7.873230e-1f, + 5.418701e-1f, 2.925110e-1f, 8.468628e-2f, 1.410522e-1f, + 9.819641e-1f, 9.609070e-1f, 3.530884e-2f, 9.729004e-2f, + 5.758362e-1f, 9.941711e-1f, 7.215576e-1f, 7.183228e-1f, + 2.028809e-1f, 9.588623e-2f, 2.032166e-1f, 1.338806e-1f, + 5.003357e-1f, 1.874390e-1f, 9.804993e-1f, 1.107788e-1f, + }, + }, +}; + +static const float at9_band_ext_scales_m2[] = { + 4.272461e-4f, 1.312256e-3f, 2.441406e-3f, 3.692627e-3f, + 4.913330e-3f, 6.134033e-3f, 7.507324e-3f, 8.972168e-3f, + 1.049805e-2f, 1.223755e-2f, 1.406860e-2f, 1.599121e-2f, + 1.800537e-2f, 2.026367e-2f, 2.264404e-2f, 2.517700e-2f, + 2.792358e-2f, 3.073120e-2f, 3.344727e-2f, 3.631592e-2f, + 3.952026e-2f, 4.275513e-2f, 4.608154e-2f, 4.968262e-2f, + 5.355835e-2f, 5.783081e-2f, 6.195068e-2f, 6.677246e-2f, + 7.196045e-2f, 7.745361e-2f, 8.319092e-2f, 8.993530e-2f, + 9.759521e-2f, 1.056213e-1f, 1.138916e-1f, 1.236267e-1f, + 1.348267e-1f, 1.470337e-1f, 1.603394e-1f, 1.755676e-1f, + 1.905823e-1f, 2.071228e-1f, 2.245178e-1f, 2.444153e-1f, + 2.658997e-1f, 2.897644e-1f, 3.146057e-1f, 3.450012e-1f, + 3.766174e-1f, 4.122620e-1f, 4.505615e-1f, 4.893799e-1f, + 5.305481e-1f, 5.731201e-1f, 6.157837e-1f, 6.580811e-1f, + 6.985168e-1f, 7.435303e-1f, 7.865906e-1f, 8.302612e-1f, + 8.718567e-1f, 9.125671e-1f, 9.575806e-1f, 9.996643e-1f, +}; + +static const float at9_band_ext_scales_m3[][2] = { + { 3.491211e-1f, -2.913818e-1f, }, { 5.371094e-1f, -2.541504e-1f, }, + { 6.782227e-1f, -1.664429e-1f, }, { 7.910156e-1f, -1.476440e-1f, }, + { 9.057617e-1f, -1.342163e-1f, }, { 1.024902e+0f, -1.220703e-1f, }, + { 1.156250e+0f, -1.117554e-1f, }, { 1.290527e+0f, -1.026611e-1f, }, + { 1.458984e+0f, -9.436035e-2f, }, { 1.664551e+0f, -8.483887e-2f, }, + { 1.929688e+0f, -7.476807e-2f, }, { 2.278320e+0f, -6.304932e-2f, }, + { 2.831543e+0f, -4.492188e-2f, }, { 3.659180e+0f, -2.447510e-2f, }, + { 5.257813e+0f, +1.831055e-4f, }, { 8.373047e+0f, +4.174805e-2f, }, +}; + +static const float at9_band_ext_scales_m4[] = { + 3.610229e-2f, 1.260681e-1f, 2.227478e-1f, 3.338318e-1f, + 4.662170e-1f, 6.221313e-1f, 7.989197e-1f, 9.939575e-1f, +}; + +static const float at9_quant_step_coarse[] = { + 2.0000000000000000e+0f, 6.6666666666666663e-1f, 2.8571428571428570e-1f, + 1.3333333333333333e-1f, 6.4516129032258063e-2f, 3.1746031746031744e-2f, + 1.5748031496062992e-2f, 7.8431372549019607e-3f, 3.9138943248532287e-3f, + 1.9550342130987292e-3f, 9.7703957010258913e-4f, 4.8840048840048840e-4f, + 2.4417043096081065e-4f, 1.2207776353537203e-4f, 6.1037018951994385e-5f, + 3.0518043793392844e-5f, +}; + +static const float at9_quant_step_fine[] = { + 3.0518043793392844e-05f, 1.0172681264464281e-05f, 4.3597205419132631e-06f, + 2.0345362528928561e-06f, 9.8445302559331759e-07f, 4.8441339354591809e-07f, + 2.4029955742829012e-07f, 1.1967860311134448e-07f, 5.9722199204291275e-08f, + 2.9831909866464167e-08f, 1.4908668194134265e-08f, 7.4525137468602791e-09f, + 3.7258019525568114e-09f, 1.8627872668859698e-09f, 9.3136520869755679e-10f, + 4.6567549848772173e-10f, +}; + +static const float at9_scalefactor_c[] = { + 3.0517578125e-5f, 6.1035156250e-5f, 1.2207031250e-4f, 2.4414062500e-4f, + 4.8828125000e-4f, 9.7656250000e-4f, 1.9531250000e-3f, 3.9062500000e-3f, + 7.8125000000e-3f, 1.5625000000e-2f, 3.1250000000e-2f, 6.2500000000e-2f, + 1.2500000000e-1f, 2.5000000000e-1f, 5.0000000000e-1f, 1.0000000000e+0f, + 2.0000000000e+0f, 4.0000000000e+0f, 8.0000000000e+0f, 1.6000000000e+1f, + 3.2000000000e+1f, 6.4000000000e+1f, 1.2800000000e+2f, 2.5600000000e+2f, + 5.1200000000e+2f, 1.0240000000e+3f, 2.0480000000e+3f, 4.0960000000e+3f, + 8.1920000000e+3f, 1.6384000000e+4f, 3.2768000000e+4f, 6.5536000000e+4f, +}; + +static const uint8_t at9_tab_sf_weights[][32] = { + { + 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 3, 2, 3, 3, 4, 4, 4, + 4, 4, 4, 5, 5, 6, 6, 7, 7, 8, 10, 12, 12, 12, + }, + { + 3, 2, 2, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, + 1, 1, 1, 1, 1, 2, 3, 3, 4, 5, 7, 10, 10, 10, + }, + { + 0, 2, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 9, 12, 12, 12, + }, + { + 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, + 6, 6, 6, 7, 8, 8, 10, 11, 11, 12, 13, 13, 13, 13, + }, + { + 0, 2, 2, 3, 3, 4, 4, 5, 4, 5, 5, 5, 5, 6, 7, 8, 8, 8, + 8, 9, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, + }, + { + 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 3, 3, 3, 4, 4, 5, 6, 7, 7, 9, 11, 11, 11, + }, + { + 0, 5, 8, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 13, 15, 15, 15, + }, + { + 0, 2, 3, 4, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 11, + 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 15, 15, 15, + }, +}; + +static const uint8_t at9_tab_b_dist[] = { + 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 15, 6, 18, 19, 20, 21, 22, 23, 24, 25, 26, 26, 27, + 27, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, +}; + +static const uint8_t huff_sfb_a1_bits[] = { + 1, 1, +}; + +static const uint16_t huff_sfb_a1_codes[] = { + 0x00, 0x01, +}; + +static const uint8_t huff_sfb_a2_bits[] = { + 1, 3, 3, 2, +}; + +static const uint16_t huff_sfb_a2_codes[] = { + 0x00, 0x06, 0x07, 0x02, +}; + +static const uint8_t huff_sfb_a3_bits[] = { + 2, 2, 4, 6, 6, 5, 3, 2, +}; + +static const uint16_t huff_sfb_a3_codes[] = { + 0x00, 0x01, 0x0E, 0x3E, 0x3F, 0x1E, 0x06, 0x02, +}; + +static const uint8_t huff_sfb_a4_bits[] = { + 2, 2, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 6, 5, 4, 2, +}; + +static const uint16_t huff_sfb_a4_codes[] = { + 0x01, 0x02, 0x00, 0x06, 0x0F, 0x13, 0x23, 0x24, + 0x25, 0x22, 0x21, 0x20, 0x0E, 0x05, 0x01, 0x03, +}; + +static const uint8_t huff_sfb_a5_bits[] = { + 2, 3, 3, 4, 5, 5, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 6, 5, 5, 4, 3, +}; + +static const uint16_t huff_sfb_a5_codes[] = { + 0x02, 0x01, 0x07, 0x0D, 0x0C, 0x18, 0x1B, 0x21, 0x3F, 0x6A, 0x6B, 0x68, + 0x73, 0x79, 0x7C, 0x7D, 0x7A, 0x7B, 0x78, 0x72, 0x44, 0x45, 0x47, 0x46, + 0x69, 0x38, 0x20, 0x1D, 0x19, 0x09, 0x05, 0x00, +}; + +static const uint8_t huff_sfb_a6_bits[] = { + 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, +}; + +static const uint16_t huff_sfb_a6_codes[] = { + 0x00, 0x01, 0x04, 0x05, 0x12, 0x13, 0x2E, 0x2F, 0x30, 0x66, 0x67, 0xD6, + 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, + 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, + 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, + 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x68, 0x69, 0x6A, 0x31, 0x32, 0x14, 0x15, + 0x16, 0x06, 0x07, 0x08, +}; + +static const uint8_t huff_sfb_b2_bits[] = { + 1, 2, 0, 2, +}; + +static const uint16_t huff_sfb_b2_codes[] = { + 0x00, 0x03, 0x00, 0x02, +}; + +static const uint8_t huff_sfb_b3_bits[] = { + 1, 3, 5, 6, 0, 6, 4, 2, +}; + +static const uint16_t huff_sfb_b3_codes[] = { + 0x01, 0x00, 0x04, 0x0B, 0x00, 0x0A, 0x03, 0x01, +}; + +static const uint8_t huff_sfb_b4_bits[] = { + 1, 3, 4, 5, 5, 7, 8, 8, 0, 8, 8, 7, 6, 6, 4, 3, +}; + +static const uint16_t huff_sfb_b4_codes[] = { + 0x01, 0x01, 0x04, 0x0E, 0x0F, 0x2C, 0x5A, 0x5D, 0x00, 0x5C, 0x5B, 0x2F, + 0x15, 0x14, 0x06, 0x00, +}; + +static const uint8_t huff_sfb_b5_bits[] = { + 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 6, 7, 7, 7, 8, 8, + 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 3, +}; + +static const uint16_t huff_sfb_b5_codes[] = { + 0x00, 0x05, 0x07, 0x0C, 0x04, 0x02, 0x03, 0x05, 0x09, 0x10, 0x23, 0x33, + 0x36, 0x6E, 0x60, 0x65, 0x62, 0x61, 0x63, 0x64, 0x6F, 0x6D, 0x6C, 0x6B, + 0x6A, 0x68, 0x69, 0x45, 0x44, 0x37, 0x1A, 0x07, +}; + +typedef struct HuffmanCodebook { + const uint8_t *bits; + const uint16_t *codes; + const int size; + const int value_cnt; + const int value_cnt_pow; + const int value_bits; + const int max_bit_size; +} HuffmanCodebook; + +static const HuffmanCodebook at9_huffman_sf_unsigned[] = { + { 0 }, + { huff_sfb_a1_bits, huff_sfb_a1_codes, 2, 1, 0, 1, 1, }, + { huff_sfb_a2_bits, huff_sfb_a2_codes, 4, 1, 0, 2, 3, }, + { huff_sfb_a3_bits, huff_sfb_a3_codes, 8, 1, 0, 3, 6, }, + { huff_sfb_a4_bits, huff_sfb_a4_codes, 16, 1, 0, 4, 8, }, + { huff_sfb_a5_bits, huff_sfb_a5_codes, 32, 1, 0, 5, 8, }, + { huff_sfb_a6_bits, huff_sfb_a6_codes, 64, 1, 0, 6, 8, }, +}; + +static const HuffmanCodebook at9_huffman_sf_signed[] = { + { 0 }, + { 0 }, + { huff_sfb_b2_bits, huff_sfb_b2_codes, 4, 1, 0, 2, 2, }, + { huff_sfb_b3_bits, huff_sfb_b3_codes, 8, 1, 0, 3, 6, }, + { huff_sfb_b4_bits, huff_sfb_b4_codes, 16, 1, 0, 4, 8, }, + { huff_sfb_b5_bits, huff_sfb_b5_codes, 32, 1, 0, 5, 8, }, +}; + +static const uint8_t huff_spec_a21_bits[] = { + 0, 3, 0, 3, 3, 3, 0, 3, 0, 0, 0, 0, 3, 3, 0, 3, +}; + +static const uint16_t huff_spec_a21_codes[] = { + 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0x00, 0x06, +}; + +static const uint8_t huff_spec_a22_bits[] = { + 0, 4, 0, 4, 5, 6, 0, 6, 0, 0, 0, 0, 5, 6, 0, 6, + 5, 6, 0, 6, 6, 7, 0, 7, 0, 0, 0, 0, 6, 7, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 6, 0, 6, 6, 7, 0, 7, 0, 0, 0, 0, 6, 7, 0, 7, + 5, 6, 0, 6, 7, 7, 0, 7, 0, 0, 0, 0, 6, 7, 0, 7, + 6, 7, 0, 7, 7, 8, 0, 8, 0, 0, 0, 0, 7, 8, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 7, 0, 7, 7, 8, 0, 8, 0, 0, 0, 0, 7, 7, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 6, 0, 6, 6, 7, 0, 7, 0, 0, 0, 0, 7, 7, 0, 7, + 6, 7, 0, 7, 7, 8, 0, 7, 0, 0, 0, 0, 7, 8, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 7, 0, 7, 7, 7, 0, 8, 0, 0, 0, 0, 7, 8, 0, 8, +}; + +static const uint16_t huff_spec_a22_codes[] = { + 0x00, 0x02, 0x00, 0x03, 0x10, 0x3C, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x11, 0x3E, 0x00, 0x3D, + 0x0E, 0x00, 0x00, 0x39, 0x18, 0x26, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x24, 0x00, 0x6D, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0x38, 0x00, 0x01, 0x1A, 0x6C, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x19, 0x74, 0x00, 0x27, + 0x16, 0x14, 0x00, 0x17, 0x76, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x35, 0x64, 0x00, 0x6F, + 0x26, 0x04, 0x00, 0x63, 0x22, 0xA2, 0x00, 0x97, 0x00, 0x00, 0x00, 0x00, 0x67, 0xA0, 0x00, 0x0D, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2B, 0x52, 0x00, 0x0B, 0x20, 0x92, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0x61, 0x0E, 0x00, 0x95, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x16, 0x00, 0x15, 0x34, 0x6E, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x77, 0x08, 0x00, 0x07, + 0x2A, 0x0A, 0x00, 0x53, 0x60, 0x94, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x21, 0x90, 0x00, 0x93, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x27, 0x62, 0x00, 0x05, 0x66, 0x0C, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x23, 0x96, 0x00, 0xA3, +}; + +static const uint8_t huff_spec_a23_bits[] = { + 3, 4, 0, 4, 5, 6, 0, 6, 0, 0, 0, 0, 5, 6, 0, 6, + 5, 7, 0, 6, 6, 8, 0, 7, 0, 0, 0, 0, 6, 8, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 6, 0, 7, 6, 7, 0, 8, 0, 0, 0, 0, 6, 7, 0, 8, + 5, 6, 0, 6, 7, 8, 0, 8, 0, 0, 0, 0, 6, 7, 0, 7, + 6, 8, 0, 7, 8, 9, 0, 9, 0, 0, 0, 0, 7, 9, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 8, 0, 8, 8, 9, 0, 9, 0, 0, 0, 0, 7, 8, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 6, 0, 6, 6, 7, 0, 7, 0, 0, 0, 0, 7, 8, 0, 8, + 6, 8, 0, 8, 7, 9, 0, 8, 0, 0, 0, 0, 8, 9, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 7, 0, 8, 7, 8, 0, 9, 0, 0, 0, 0, 8, 9, 0, 9, +}; + +static const uint16_t huff_spec_a23_codes[] = { + 0x006, 0x002, 0x000, 0x003, 0x016, 0x01E, 0x000, 0x021, 0x000, 0x000, 0x000, 0x000, + 0x017, 0x020, 0x000, 0x01F, 0x01C, 0x054, 0x000, 0x027, 0x010, 0x0A6, 0x000, 0x027, + 0x000, 0x000, 0x000, 0x000, 0x015, 0x0A4, 0x000, 0x02D, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x01D, 0x026, 0x000, 0x055, 0x014, 0x02C, 0x000, 0x0A5, 0x000, 0x000, 0x000, 0x000, + 0x011, 0x026, 0x000, 0x0A7, 0x01E, 0x000, 0x000, 0x003, 0x04A, 0x074, 0x000, 0x071, + 0x000, 0x000, 0x000, 0x000, 0x023, 0x00A, 0x000, 0x009, 0x018, 0x072, 0x000, 0x00D, + 0x0A2, 0x15A, 0x000, 0x123, 0x000, 0x000, 0x000, 0x000, 0x00F, 0x158, 0x000, 0x05D, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x01B, 0x0AE, 0x000, 0x077, 0x092, 0x140, 0x000, 0x121, + 0x000, 0x000, 0x000, 0x000, 0x025, 0x05E, 0x000, 0x143, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x01F, 0x002, 0x000, 0x001, 0x022, 0x008, 0x000, 0x00B, 0x000, 0x000, 0x000, 0x000, + 0x04B, 0x070, 0x000, 0x075, 0x01A, 0x076, 0x000, 0x0AF, 0x024, 0x142, 0x000, 0x05F, + 0x000, 0x000, 0x000, 0x000, 0x093, 0x120, 0x000, 0x141, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x019, 0x00C, 0x000, 0x073, 0x00E, 0x05C, 0x000, 0x159, 0x000, 0x000, 0x000, 0x000, + 0x0A3, 0x122, 0x000, 0x15B, +}; + +static const uint8_t huff_spec_a24_bits[] = { + 2, 4, 0, 4, 5, 6, 0, 6, 0, 0, 0, 0, 5, 6, 0, 6, + 5, 7, 0, 6, 6, 8, 0, 8, 0, 0, 0, 0, 6, 8, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 6, 0, 7, 6, 8, 0, 8, 0, 0, 0, 0, 6, 8, 0, 8, + 5, 7, 0, 7, 7, 9, 0, 9, 0, 0, 0, 0, 6, 8, 0, 8, + 6, 9, 0, 8, 8, 10, 0, 10, 0, 0, 0, 0, 8, 10, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 8, 0, 9, 9, 10, 0, 10, 0, 0, 0, 0, 8, 9, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 7, 0, 7, 6, 8, 0, 8, 0, 0, 0, 0, 7, 9, 0, 9, + 6, 9, 0, 8, 8, 10, 0, 9, 0, 0, 0, 0, 9, 10, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 8, 0, 9, 8, 9, 0, 10, 0, 0, 0, 0, 8, 10, 0, 10, +}; + +static const uint16_t huff_spec_a24_codes[] = { + 0x002, 0x002, 0x000, 0x003, 0x01E, 0x010, 0x000, 0x013, 0x000, 0x000, 0x000, 0x000, + 0x01F, 0x012, 0x000, 0x011, 0x01A, 0x030, 0x000, 0x01B, 0x000, 0x064, 0x000, 0x0C1, + 0x000, 0x000, 0x000, 0x000, 0x003, 0x052, 0x000, 0x07D, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x01B, 0x01A, 0x000, 0x031, 0x002, 0x07C, 0x000, 0x053, 0x000, 0x000, 0x000, 0x000, + 0x001, 0x0C0, 0x000, 0x065, 0x01C, 0x062, 0x000, 0x065, 0x02A, 0x198, 0x000, 0x19B, + 0x000, 0x000, 0x000, 0x000, 0x017, 0x078, 0x000, 0x07B, 0x004, 0x0FE, 0x000, 0x077, + 0x050, 0x33A, 0x000, 0x1F9, 0x000, 0x000, 0x000, 0x000, 0x073, 0x338, 0x000, 0x0E1, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x007, 0x066, 0x000, 0x187, 0x19E, 0x308, 0x000, 0x30B, + 0x000, 0x000, 0x000, 0x000, 0x075, 0x0E2, 0x000, 0x1FB, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x01D, 0x064, 0x000, 0x063, 0x016, 0x07A, 0x000, 0x079, 0x000, 0x000, 0x000, 0x000, + 0x02B, 0x19A, 0x000, 0x199, 0x006, 0x186, 0x000, 0x067, 0x074, 0x1FA, 0x000, 0x0E3, + 0x000, 0x000, 0x000, 0x000, 0x19F, 0x30A, 0x000, 0x309, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x005, 0x076, 0x000, 0x0FF, 0x072, 0x0E0, 0x000, 0x339, 0x000, 0x000, 0x000, 0x000, + 0x051, 0x1F8, 0x000, 0x33B, +}; + +static const uint8_t huff_spec_a31_bits[] = { + 0, 0, 4, 5, 0, 5, 4, 0, 0, 0, 5, 5, 0, 5, 5, 0, + 5, 5, 6, 6, 0, 6, 5, 5, 5, 6, 6, 7, 0, 7, 6, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 7, 0, 7, 6, 6, + 5, 5, 5, 6, 0, 6, 6, 5, 0, 0, 5, 5, 0, 5, 5, 0, +}; + +static const uint16_t huff_spec_a31_codes[] = { + 0x00, 0x00, 0x02, 0x18, 0x00, 0x19, 0x03, 0x00, 0x00, 0x00, 0x12, 0x02, 0x00, 0x09, 0x15, 0x00, + 0x1A, 0x0A, 0x3E, 0x2C, 0x00, 0x2F, 0x01, 0x0D, 0x0E, 0x38, 0x20, 0x78, 0x00, 0x7B, 0x23, 0x3B, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3A, 0x22, 0x7A, 0x00, 0x79, 0x21, 0x39, + 0x1B, 0x0C, 0x00, 0x2E, 0x00, 0x2D, 0x3F, 0x0B, 0x00, 0x00, 0x14, 0x08, 0x00, 0x03, 0x13, 0x00, +}; + +static const uint8_t huff_spec_a32_bits[] = { + 4, 5, 5, 6, 0, 6, 5, 5, 5, 6, 5, 6, 0, 6, 5, 5, + 5, 5, 6, 7, 0, 7, 6, 5, 6, 6, 7, 7, 0, 7, 7, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 7, 7, 0, 7, 7, 6, + 5, 5, 6, 7, 0, 7, 6, 5, 5, 5, 5, 6, 0, 6, 5, 6, +}; + +static const uint16_t huff_spec_a32_codes[] = { + 0x0D, 0x18, 0x16, 0x3A, 0x00, 0x3B, 0x17, 0x19, 0x12, 0x3E, 0x08, 0x1C, 0x00, 0x1B, 0x07, 0x01, + 0x10, 0x02, 0x28, 0x78, 0x00, 0x7B, 0x1F, 0x05, 0x2A, 0x16, 0x72, 0x2A, 0x00, 0x29, 0x71, 0x19, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x18, 0x70, 0x28, 0x00, 0x2B, 0x73, 0x17, + 0x11, 0x04, 0x1E, 0x7A, 0x00, 0x79, 0x29, 0x03, 0x13, 0x00, 0x06, 0x1A, 0x00, 0x1D, 0x09, 0x3F, +}; + +static const uint8_t huff_spec_a33_bits[] = { + 3, 4, 5, 6, 0, 6, 5, 4, 4, 5, 6, 7, 0, 7, 6, 5, + 5, 6, 6, 7, 0, 7, 6, 6, 6, 7, 8, 8, 0, 8, 8, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 8, 0, 8, 8, 7, + 5, 6, 6, 7, 0, 7, 6, 6, 4, 5, 6, 7, 0, 7, 6, 5, +}; + +static const uint16_t huff_spec_a33_codes[] = { + 0x05, 0x06, 0x10, 0x08, 0x00, 0x09, 0x11, 0x07, 0x04, 0x12, 0x3E, 0x6A, 0x00, 0x6D, 0x3D, 0x19, + 0x06, 0x3A, 0x06, 0x02, 0x00, 0x01, 0x05, 0x39, 0x02, 0x16, 0xDC, 0x2A, 0x00, 0x29, 0xDF, 0x69, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x68, 0xDE, 0x28, 0x00, 0x2B, 0xDD, 0x17, + 0x07, 0x38, 0x04, 0x00, 0x00, 0x03, 0x07, 0x3B, 0x05, 0x18, 0x3C, 0x6C, 0x00, 0x6B, 0x3F, 0x13, +}; + +static const uint8_t huff_spec_a34_bits[] = { + 2, 4, 5, 7, 0, 7, 5, 4, 4, 5, 6, 8, 0, 8, 6, 5, + 5, 6, 7, 8, 0, 8, 7, 6, 7, 8, 8, 10, 0, 10, 9, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 0, 10, 8, 8, + 5, 6, 7, 8, 0, 8, 7, 6, 4, 5, 6, 8, 0, 8, 6, 5, +}; + +static const uint16_t huff_spec_a34_codes[] = { + 0x000, 0x00A, 0x00A, 0x034, 0x000, 0x035, 0x00B, 0x00B, 0x008, 0x01C, 0x032, 0x0DA, + 0x000, 0x0DD, 0x035, 0x01F, 0x008, 0x01E, 0x03A, 0x06C, 0x000, 0x063, 0x039, 0x031, + 0x032, 0x06E, 0x060, 0x37A, 0x000, 0x379, 0x1BF, 0x0D9, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x033, 0x0D8, 0x1BE, 0x378, 0x000, 0x37B, 0x061, 0x06F, + 0x009, 0x030, 0x038, 0x062, 0x000, 0x06D, 0x03B, 0x01F, 0x009, 0x01E, 0x034, 0x0DC, + 0x000, 0x0DB, 0x033, 0x01D, +}; + +static const uint8_t huff_spec_a41_bits[] = { + 0, 0, 0, 0, 6, 6, 7, 7, 0, 7, 7, 6, 6, 0, 0, 0, + 0, 0, 0, 0, 7, 7, 7, 7, 0, 7, 7, 7, 6, 0, 0, 0, + 0, 0, 0, 0, 7, 7, 7, 8, 0, 8, 7, 7, 7, 0, 0, 0, + 0, 0, 0, 0, 7, 7, 8, 8, 0, 8, 8, 7, 7, 0, 0, 0, + 7, 7, 7, 8, 7, 8, 8, 8, 0, 8, 8, 8, 7, 8, 7, 7, + 7, 7, 7, 7, 8, 8, 8, 9, 0, 8, 8, 8, 8, 7, 7, 7, + 7, 7, 8, 8, 8, 8, 9, 9, 0, 9, 8, 8, 8, 8, 8, 7, + 8, 8, 8, 8, 8, 9, 9, 9, 0, 9, 9, 9, 8, 8, 8, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 8, 8, 8, 8, 9, 9, 9, 0, 9, 9, 9, 8, 8, 8, 8, + 7, 7, 8, 8, 8, 8, 8, 9, 0, 9, 9, 8, 8, 8, 8, 7, + 7, 7, 7, 7, 8, 8, 8, 8, 0, 9, 8, 8, 8, 7, 7, 7, + 7, 7, 7, 8, 7, 8, 8, 8, 0, 8, 8, 8, 7, 8, 7, 7, + 0, 0, 0, 0, 7, 7, 8, 8, 0, 8, 8, 7, 7, 0, 0, 0, + 0, 0, 0, 0, 7, 7, 7, 8, 0, 8, 7, 7, 7, 0, 0, 0, + 0, 0, 0, 0, 6, 7, 7, 7, 0, 7, 7, 7, 7, 0, 0, 0, +}; + +static const uint16_t huff_spec_a41_codes[] = { + 0x000, 0x000, 0x000, 0x000, 0x018, 0x00E, 0x05E, 0x028, 0x000, 0x029, 0x05F, 0x00F, + 0x019, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x076, 0x06E, 0x03E, 0x004, + 0x000, 0x017, 0x045, 0x07B, 0x013, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x04A, 0x048, 0x010, 0x0CE, 0x000, 0x0E1, 0x023, 0x055, 0x053, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x008, 0x018, 0x0D6, 0x09E, 0x000, 0x09D, 0x0E5, 0x02B, + 0x01B, 0x000, 0x000, 0x000, 0x07C, 0x05C, 0x038, 0x0FC, 0x002, 0x0D2, 0x09A, 0x05C, + 0x000, 0x06B, 0x0A3, 0x0D9, 0x00F, 0x0FF, 0x03D, 0x061, 0x074, 0x056, 0x036, 0x000, + 0x0CC, 0x08C, 0x058, 0x1E2, 0x000, 0x00F, 0x05F, 0x0A1, 0x0D5, 0x00D, 0x03B, 0x059, + 0x040, 0x014, 0x0DA, 0x0B6, 0x084, 0x040, 0x1E0, 0x196, 0x000, 0x1A1, 0x00D, 0x043, + 0x087, 0x0C7, 0x0E3, 0x00B, 0x0F2, 0x0C4, 0x08E, 0x05A, 0x024, 0x1CC, 0x194, 0x168, + 0x000, 0x16B, 0x1A3, 0x1CF, 0x027, 0x069, 0x099, 0x0C9, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x0F3, 0x0C8, 0x098, 0x068, 0x026, 0x1CE, 0x1A2, 0x16A, 0x000, 0x169, 0x195, 0x1CD, + 0x025, 0x05B, 0x08F, 0x0C5, 0x041, 0x00A, 0x0E2, 0x0C6, 0x086, 0x042, 0x00C, 0x1A0, + 0x000, 0x197, 0x1E1, 0x041, 0x085, 0x0B7, 0x0DB, 0x015, 0x075, 0x058, 0x03A, 0x00C, + 0x0D4, 0x0A0, 0x05E, 0x00E, 0x000, 0x1E3, 0x059, 0x08D, 0x0CD, 0x001, 0x037, 0x057, + 0x07D, 0x060, 0x03C, 0x0FE, 0x00E, 0x0D8, 0x0A2, 0x06A, 0x000, 0x05D, 0x09B, 0x0D3, + 0x003, 0x0FD, 0x039, 0x05D, 0x000, 0x000, 0x000, 0x000, 0x01A, 0x02A, 0x0E4, 0x09C, + 0x000, 0x09F, 0x0D7, 0x019, 0x009, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x052, 0x054, 0x022, 0x0E0, 0x000, 0x0CF, 0x011, 0x049, 0x04B, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x012, 0x07A, 0x044, 0x016, 0x000, 0x005, 0x03F, 0x06F, + 0x077, 0x000, 0x000, 0x000, +}; + +static const uint8_t huff_spec_a42_bits[] = { + 5, 6, 7, 7, 7, 7, 8, 8, 0, 8, 8, 7, 7, 7, 7, 6, + 6, 7, 7, 8, 7, 7, 8, 8, 0, 8, 8, 7, 7, 8, 7, 7, + 7, 7, 8, 8, 7, 8, 8, 9, 0, 9, 8, 8, 7, 8, 8, 7, + 8, 8, 8, 8, 8, 8, 8, 9, 0, 9, 8, 8, 8, 8, 8, 8, + 7, 7, 7, 8, 8, 8, 9, 9, 0, 9, 9, 8, 8, 8, 7, 7, + 7, 7, 8, 8, 8, 9, 9, 9, 0, 9, 9, 9, 8, 8, 8, 7, + 8, 8, 8, 8, 9, 9, 9, 10, 0, 10, 9, 9, 9, 8, 8, 8, + 8, 8, 9, 9, 9, 9, 10, 10, 0, 10, 10, 9, 9, 9, 9, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 9, 9, 9, 9, 9, 10, 10, 0, 10, 10, 9, 9, 9, 9, 8, + 8, 8, 8, 8, 9, 9, 9, 10, 0, 10, 9, 9, 9, 8, 8, 8, + 7, 7, 8, 8, 8, 9, 9, 9, 0, 9, 9, 9, 8, 8, 8, 7, + 7, 7, 7, 8, 8, 8, 9, 9, 0, 9, 9, 8, 8, 8, 7, 7, + 8, 8, 8, 8, 8, 8, 8, 9, 0, 9, 8, 8, 8, 8, 8, 8, + 7, 7, 8, 8, 7, 8, 8, 9, 0, 9, 8, 8, 7, 8, 8, 7, + 6, 7, 7, 8, 7, 7, 8, 8, 0, 8, 8, 7, 7, 8, 7, 7, +}; + +static const uint16_t huff_spec_a42_codes[] = { + 0x003, 0x018, 0x058, 0x000, 0x066, 0x03C, 0x0D6, 0x07C, 0x000, 0x07D, 0x0D7, 0x03D, + 0x067, 0x001, 0x059, 0x019, 0x002, 0x064, 0x036, 0x0DA, 0x04C, 0x01C, 0x0BE, 0x02C, + 0x000, 0x037, 0x0C5, 0x029, 0x04B, 0x0E7, 0x03B, 0x069, 0x044, 0x02E, 0x0FA, 0x092, + 0x020, 0x0F8, 0x086, 0x1FC, 0x000, 0x1E7, 0x07F, 0x0F5, 0x023, 0x0AD, 0x0FD, 0x02D, + 0x0F6, 0x0DC, 0x09C, 0x03E, 0x0F0, 0x0B6, 0x026, 0x186, 0x000, 0x18D, 0x02F, 0x0B5, + 0x0E1, 0x03D, 0x0AF, 0x0D9, 0x054, 0x040, 0x014, 0x0EC, 0x0BC, 0x054, 0x1C6, 0x108, + 0x000, 0x10B, 0x1C5, 0x069, 0x0B9, 0x0DF, 0x019, 0x047, 0x026, 0x008, 0x0E4, 0x0A2, + 0x056, 0x1DC, 0x142, 0x06A, 0x000, 0x091, 0x123, 0x1DF, 0x04B, 0x0A7, 0x0EB, 0x00B, + 0x0C0, 0x09E, 0x06A, 0x022, 0x1AA, 0x140, 0x092, 0x3CA, 0x000, 0x3A7, 0x04B, 0x121, + 0x18F, 0x007, 0x071, 0x0A5, 0x020, 0x004, 0x1A8, 0x174, 0x0E4, 0x068, 0x3A4, 0x2EE, + 0x000, 0x2ED, 0x3C9, 0x049, 0x0E7, 0x185, 0x1D1, 0x1FF, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x021, 0x1FE, 0x1D0, 0x184, 0x0E6, 0x048, 0x3C8, 0x2EC, 0x000, 0x2EF, 0x3A5, 0x069, + 0x0E5, 0x175, 0x1A9, 0x005, 0x0C1, 0x0A4, 0x070, 0x006, 0x18E, 0x120, 0x04A, 0x3A6, + 0x000, 0x3CB, 0x093, 0x141, 0x1AB, 0x023, 0x06B, 0x09F, 0x027, 0x00A, 0x0EA, 0x0A6, + 0x04A, 0x1DE, 0x122, 0x090, 0x000, 0x06B, 0x143, 0x1DD, 0x057, 0x0A3, 0x0E5, 0x009, + 0x055, 0x046, 0x018, 0x0DE, 0x0B8, 0x068, 0x1C4, 0x10A, 0x000, 0x109, 0x1C7, 0x055, + 0x0BD, 0x0ED, 0x015, 0x041, 0x0F7, 0x0D8, 0x0AE, 0x03C, 0x0E0, 0x0B4, 0x02E, 0x18C, + 0x000, 0x187, 0x027, 0x0B7, 0x0F1, 0x03F, 0x09D, 0x0DD, 0x045, 0x02C, 0x0FC, 0x0AC, + 0x022, 0x0F4, 0x07E, 0x1E6, 0x000, 0x1FD, 0x087, 0x0F9, 0x021, 0x093, 0x0FB, 0x02F, + 0x003, 0x068, 0x03A, 0x0E6, 0x04A, 0x028, 0x0C4, 0x036, 0x000, 0x02D, 0x0BF, 0x01D, + 0x04D, 0x0DB, 0x037, 0x065, +}; + +static const uint8_t huff_spec_a43_bits[] = { + 4, 6, 6, 7, 7, 8, 8, 9, 0, 9, 8, 8, 7, 7, 6, 6, + 5, 6, 7, 7, 7, 8, 8, 9, 0, 9, 8, 8, 7, 7, 7, 6, + 6, 7, 7, 7, 8, 8, 9, 9, 0, 9, 9, 8, 8, 7, 7, 7, + 7, 7, 7, 8, 8, 8, 9, 10, 0, 10, 9, 9, 8, 8, 7, 7, + 7, 7, 8, 8, 8, 9, 10, 10, 0, 10, 10, 9, 8, 8, 8, 7, + 8, 8, 8, 9, 9, 9, 10, 10, 0, 10, 10, 9, 9, 9, 8, 8, + 8, 9, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 9, + 9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9, + 8, 9, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 9, + 8, 8, 8, 9, 9, 9, 10, 10, 0, 10, 10, 9, 9, 9, 8, 8, + 7, 7, 8, 8, 8, 9, 10, 10, 0, 10, 10, 9, 8, 8, 8, 7, + 7, 7, 7, 8, 8, 9, 9, 10, 0, 10, 9, 8, 8, 8, 7, 7, + 6, 7, 7, 7, 8, 8, 9, 9, 0, 9, 9, 8, 8, 7, 7, 7, + 5, 6, 7, 7, 7, 8, 8, 9, 0, 9, 8, 8, 7, 7, 7, 6, +}; + +static const uint16_t huff_spec_a43_codes[] = { + 0x002, 0x03E, 0x016, 0x060, 0x04E, 0x0DC, 0x04A, 0x130, 0x000, 0x131, 0x04B, 0x0DD, + 0x04F, 0x061, 0x017, 0x03F, 0x002, 0x02C, 0x076, 0x042, 0x034, 0x0CE, 0x002, 0x0E8, + 0x000, 0x0CF, 0x001, 0x0D1, 0x037, 0x045, 0x07B, 0x02F, 0x014, 0x072, 0x052, 0x01A, + 0x0E0, 0x080, 0x198, 0x01E, 0x000, 0x01D, 0x19B, 0x083, 0x0DF, 0x019, 0x055, 0x079, + 0x050, 0x03C, 0x004, 0x0C4, 0x096, 0x00C, 0x0EA, 0x34A, 0x000, 0x34F, 0x0ED, 0x1D7, + 0x095, 0x0AF, 0x003, 0x03F, 0x046, 0x026, 0x0D6, 0x092, 0x046, 0x15A, 0x3A8, 0x108, + 0x000, 0x10F, 0x3A3, 0x135, 0x039, 0x091, 0x0D9, 0x031, 0x0D4, 0x0CA, 0x072, 0x1C6, + 0x136, 0x090, 0x2B2, 0x104, 0x000, 0x103, 0x111, 0x08B, 0x133, 0x1D3, 0x071, 0x0C9, + 0x03E, 0x1B4, 0x18C, 0x0CC, 0x38A, 0x2B0, 0x106, 0x0F2, 0x000, 0x0EF, 0x101, 0x113, + 0x3A1, 0x0CB, 0x18F, 0x1B7, 0x0EE, 0x092, 0x388, 0x348, 0x10A, 0x0F4, 0x0F0, 0x0EA, + 0x000, 0x0E9, 0x0ED, 0x0F7, 0x10D, 0x34D, 0x3AB, 0x0C9, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x0EF, 0x0C8, 0x3AA, 0x34C, 0x10C, 0x0F6, 0x0EC, 0x0E8, 0x000, 0x0EB, 0x0F1, 0x0F5, + 0x10B, 0x349, 0x389, 0x093, 0x03F, 0x1B6, 0x18E, 0x0CA, 0x3A0, 0x112, 0x100, 0x0EE, + 0x000, 0x0F3, 0x107, 0x2B1, 0x38B, 0x0CD, 0x18D, 0x1B5, 0x0D5, 0x0C8, 0x070, 0x1D2, + 0x132, 0x08A, 0x110, 0x102, 0x000, 0x105, 0x2B3, 0x091, 0x137, 0x1C7, 0x073, 0x0CB, + 0x047, 0x030, 0x0D8, 0x090, 0x038, 0x134, 0x3A2, 0x10E, 0x000, 0x109, 0x3A9, 0x15B, + 0x047, 0x093, 0x0D7, 0x027, 0x051, 0x03E, 0x002, 0x0AE, 0x094, 0x1D6, 0x0EC, 0x34E, + 0x000, 0x34B, 0x0EB, 0x00D, 0x097, 0x0C5, 0x005, 0x03D, 0x015, 0x078, 0x054, 0x018, + 0x0DE, 0x082, 0x19A, 0x01C, 0x000, 0x01F, 0x199, 0x081, 0x0E1, 0x01B, 0x053, 0x073, + 0x003, 0x02E, 0x07A, 0x044, 0x036, 0x0D0, 0x000, 0x0CE, 0x000, 0x0E9, 0x003, 0x0CF, + 0x035, 0x043, 0x077, 0x02D, +}; + +static const uint8_t huff_spec_a44_bits[] = { + 4, 5, 6, 7, 7, 8, 9, 10, 0, 10, 9, 8, 7, 7, 6, 5, + 5, 6, 6, 7, 7, 8, 9, 10, 0, 10, 9, 8, 7, 7, 6, 6, + 6, 6, 7, 7, 8, 9, 10, 10, 0, 10, 10, 9, 8, 7, 7, 6, + 7, 7, 7, 8, 8, 9, 10, 10, 0, 10, 10, 9, 8, 8, 7, 7, + 7, 8, 8, 8, 9, 10, 10, 10, 0, 10, 10, 10, 9, 8, 8, 7, + 8, 8, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 8, + 9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9, + 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, + 9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9, + 8, 8, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 8, + 7, 7, 8, 8, 9, 10, 10, 10, 0, 10, 10, 10, 9, 8, 8, 8, + 7, 7, 7, 8, 8, 9, 10, 10, 0, 10, 10, 9, 8, 8, 7, 7, + 6, 6, 7, 7, 8, 9, 10, 10, 0, 10, 10, 9, 8, 7, 7, 6, + 5, 6, 6, 7, 7, 8, 9, 10, 0, 10, 9, 8, 7, 7, 6, 6, +}; + +static const uint16_t huff_spec_a44_codes[] = { + 0x00A, 0x012, 0x030, 0x06E, 0x024, 0x074, 0x0EC, 0x07E, 0x000, 0x07F, 0x0ED, 0x075, + 0x025, 0x06F, 0x031, 0x013, 0x010, 0x03C, 0x018, 0x05A, 0x002, 0x046, 0x09E, 0x07C, + 0x000, 0x079, 0x0E5, 0x04D, 0x007, 0x065, 0x01B, 0x03F, 0x02E, 0x016, 0x072, 0x01A, + 0x0D6, 0x1C6, 0x3B4, 0x066, 0x000, 0x06B, 0x3B7, 0x1D9, 0x0D5, 0x021, 0x075, 0x015, + 0x06C, 0x03E, 0x01E, 0x0CC, 0x044, 0x0F2, 0x082, 0x05C, 0x000, 0x05F, 0x087, 0x0F5, + 0x031, 0x0CF, 0x017, 0x059, 0x01C, 0x0EE, 0x0D0, 0x024, 0x1C0, 0x08E, 0x06E, 0x048, + 0x000, 0x04D, 0x06D, 0x089, 0x0F7, 0x033, 0x0D3, 0x001, 0x070, 0x028, 0x1C2, 0x0F0, + 0x08A, 0x074, 0x054, 0x040, 0x000, 0x043, 0x053, 0x073, 0x099, 0x0EF, 0x1C5, 0x02B, + 0x0E6, 0x04E, 0x08C, 0x080, 0x068, 0x058, 0x046, 0x02A, 0x000, 0x029, 0x045, 0x051, + 0x065, 0x085, 0x09B, 0x09D, 0x07A, 0x076, 0x060, 0x056, 0x04E, 0x02C, 0x024, 0x022, + 0x000, 0x021, 0x027, 0x02F, 0x04B, 0x05B, 0x063, 0x071, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x07B, 0x070, 0x062, 0x05A, 0x04A, 0x02E, 0x026, 0x020, 0x000, 0x023, 0x025, 0x02D, + 0x04F, 0x057, 0x061, 0x077, 0x0E7, 0x09C, 0x09A, 0x084, 0x064, 0x050, 0x044, 0x028, + 0x000, 0x02B, 0x047, 0x059, 0x069, 0x081, 0x08D, 0x04F, 0x071, 0x02A, 0x1C4, 0x0EE, + 0x098, 0x072, 0x052, 0x042, 0x000, 0x041, 0x055, 0x075, 0x08B, 0x0F1, 0x1C3, 0x029, + 0x01D, 0x000, 0x0D2, 0x032, 0x0F6, 0x088, 0x06C, 0x04C, 0x000, 0x049, 0x06F, 0x08F, + 0x1C1, 0x025, 0x0D1, 0x0EF, 0x06D, 0x058, 0x016, 0x0CE, 0x030, 0x0F4, 0x086, 0x05E, + 0x000, 0x05D, 0x083, 0x0F3, 0x045, 0x0CD, 0x01F, 0x03F, 0x02F, 0x014, 0x074, 0x020, + 0x0D4, 0x1D8, 0x3B6, 0x06A, 0x000, 0x067, 0x3B5, 0x1C7, 0x0D7, 0x01B, 0x073, 0x017, + 0x011, 0x03E, 0x01A, 0x064, 0x006, 0x04C, 0x0E4, 0x078, 0x000, 0x07D, 0x09F, 0x047, + 0x003, 0x05B, 0x019, 0x03D, +}; + +static const uint8_t huff_spec_a51_bits[] = { + 5, 5, 5, 5, 5, 6, 6, 6, 4, 4, 5, 5, 5, 5, 5, 5, + 0, 5, 5, 5, 5, 5, 5, 4, 4, 6, 6, 6, 5, 5, 5, 5, +}; + +static const uint16_t huff_spec_a51_codes[] = { + 0x19, 0x16, 0x12, 0x0E, 0x06, 0x3A, 0x38, 0x30, 0x00, 0x04, 0x1E, 0x1A, + 0x14, 0x10, 0x0C, 0x04, 0x00, 0x05, 0x0D, 0x11, 0x15, 0x1B, 0x1F, 0x05, + 0x01, 0x31, 0x39, 0x3B, 0x07, 0x0F, 0x13, 0x17, +}; + +static const uint8_t huff_spec_a52_bits[] = { + 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, + 0, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, +}; + +static const uint16_t huff_spec_a52_codes[] = { + 0x09, 0x04, 0x00, 0x1E, 0x1A, 0x14, 0x0C, 0x06, 0x18, 0x16, 0x0E, 0x04, + 0x3A, 0x38, 0x22, 0x20, 0x00, 0x21, 0x23, 0x39, 0x3B, 0x05, 0x0F, 0x17, + 0x19, 0x07, 0x0D, 0x15, 0x1B, 0x1F, 0x01, 0x05, +}; + +static const uint8_t huff_spec_a53_bits[] = { + 3, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 7, 7, 7, 7, + 0, 7, 7, 7, 7, 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, +}; + +static const uint16_t huff_spec_a53_codes[] = { + 0x00, 0x0C, 0x08, 0x04, 0x1E, 0x16, 0x14, 0x06, 0x0C, 0x04, 0x38, 0x1E, + 0x76, 0x74, 0x3A, 0x38, 0x00, 0x39, 0x3B, 0x75, 0x77, 0x1F, 0x39, 0x05, + 0x0D, 0x07, 0x15, 0x17, 0x1F, 0x05, 0x09, 0x0D, +}; + +static const uint8_t huff_spec_a54_bits[] = { + 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8, + 0, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, +}; + +static const uint16_t huff_spec_a54_codes[] = { + 0x02, 0x0E, 0x0A, 0x08, 0x02, 0x1A, 0x0E, 0x02, 0x00, 0x30, 0x18, 0x66, + 0x36, 0x34, 0xCA, 0xC8, 0x00, 0xC9, 0xCB, 0x35, 0x37, 0x67, 0x19, 0x31, + 0x01, 0x03, 0x0F, 0x1B, 0x03, 0x09, 0x0B, 0x0F, +}; + +static const uint8_t huff_spec_a61_bits[] = { + 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, + 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, + 5, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, +}; + +static const uint16_t huff_spec_a61_codes[] = { + 0x35, 0x30, 0x2A, 0x28, 0x24, 0x20, 0x18, 0x0E, 0x0C, 0x7E, 0x7C, 0x72, + 0x70, 0x68, 0x5E, 0x5C, 0x04, 0x0E, 0x08, 0x00, 0x3C, 0x3A, 0x36, 0x32, + 0x2C, 0x26, 0x22, 0x1A, 0x16, 0x14, 0x06, 0x04, 0x00, 0x05, 0x07, 0x15, + 0x17, 0x1B, 0x23, 0x27, 0x2D, 0x33, 0x37, 0x3B, 0x3D, 0x01, 0x09, 0x0F, + 0x05, 0x5D, 0x5F, 0x69, 0x71, 0x73, 0x7D, 0x7F, 0x0D, 0x0F, 0x19, 0x21, + 0x25, 0x29, 0x2B, 0x31, +}; + +static const uint8_t huff_spec_a62_bits[] = { + 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, + 0, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, +}; + +static const uint16_t huff_spec_a62_codes[] = { + 0x14, 0x0E, 0x08, 0x04, 0x02, 0x3E, 0x3C, 0x38, 0x34, 0x30, 0x2A, 0x24, + 0x1A, 0x18, 0x0E, 0x02, 0x32, 0x36, 0x2C, 0x26, 0x20, 0x16, 0x0C, 0x00, + 0x76, 0x74, 0x5E, 0x5C, 0x46, 0x44, 0x2A, 0x28, 0x00, 0x29, 0x2B, 0x45, + 0x47, 0x5D, 0x5F, 0x75, 0x77, 0x01, 0x0D, 0x17, 0x21, 0x27, 0x2D, 0x37, + 0x33, 0x03, 0x0F, 0x19, 0x1B, 0x25, 0x2B, 0x31, 0x35, 0x39, 0x3D, 0x3F, + 0x03, 0x05, 0x09, 0x0F, +}; + +static const uint8_t huff_spec_a63_bits[] = { + 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, + 0, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, +}; + +static const uint16_t huff_spec_a63_codes[] = { + 0x00, 0x1C, 0x18, 0x14, 0x10, 0x0A, 0x08, 0x02, 0x3E, 0x36, 0x2E, 0x2C, + 0x24, 0x1C, 0x0E, 0x08, 0x1E, 0x1A, 0x0C, 0x7A, 0x6A, 0x68, 0x4C, 0x32, + 0x16, 0x14, 0xF2, 0xF0, 0x9E, 0x9C, 0x62, 0x60, 0x00, 0x61, 0x63, 0x9D, + 0x9F, 0xF1, 0xF3, 0x15, 0x17, 0x33, 0x4D, 0x69, 0x6B, 0x7B, 0x0D, 0x1B, + 0x1F, 0x09, 0x0F, 0x1D, 0x25, 0x2D, 0x2F, 0x37, 0x3F, 0x03, 0x09, 0x0B, + 0x11, 0x15, 0x19, 0x1D, +}; + +static const uint8_t huff_spec_a64_bits[] = { + 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, + 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, + 0, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, + 6, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 4, +}; + +static const uint16_t huff_spec_a64_codes[] = { + 0x006, 0x002, 0x01C, 0x01A, 0x016, 0x012, 0x00E, 0x00A, 0x002, 0x03E, + 0x032, 0x02A, 0x022, 0x020, 0x010, 0x07A, 0x000, 0x078, 0x060, 0x050, + 0x024, 0x006, 0x0C6, 0x0C4, 0x0A4, 0x04E, 0x00A, 0x008, 0x14E, 0x14C, + 0x09A, 0x098, 0x000, 0x099, 0x09B, 0x14D, 0x14F, 0x009, 0x00B, 0x04F, + 0x0A5, 0x0C5, 0x0C7, 0x007, 0x025, 0x051, 0x061, 0x079, 0x001, 0x07B, + 0x011, 0x021, 0x023, 0x02B, 0x033, 0x03F, 0x003, 0x00B, 0x00F, 0x013, + 0x017, 0x01B, 0x01D, 0x003, +}; + +static const uint8_t huff_spec_a71_bits[] = { + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, + 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, +}; + +static const uint16_t huff_spec_a71_codes[] = { + 0x6C, 0x66, 0x62, 0x5C, 0x56, 0x50, 0x52, 0x4E, 0x48, 0x3E, 0x36, 0x34, 0x2A, 0x26, 0x1E, 0x16, + 0x0E, 0x08, 0x00, 0xF6, 0xF4, 0xEE, 0xEC, 0xE2, 0xE0, 0xDA, 0xD2, 0xD0, 0xBE, 0xBC, 0xB2, 0xB0, + 0x0C, 0x20, 0x1C, 0x16, 0x10, 0x08, 0x02, 0x7E, 0x7C, 0x78, 0x74, 0x72, 0x6E, 0x6A, 0x64, 0x60, + 0x5A, 0x54, 0x4C, 0x4A, 0x46, 0x44, 0x3C, 0x32, 0x30, 0x28, 0x24, 0x1C, 0x14, 0x0C, 0x0A, 0x02, + 0x00, 0x03, 0x0B, 0x0D, 0x15, 0x1D, 0x25, 0x29, 0x31, 0x33, 0x3D, 0x45, 0x47, 0x4B, 0x4D, 0x55, + 0x5B, 0x61, 0x65, 0x6B, 0x6F, 0x73, 0x75, 0x79, 0x7D, 0x7F, 0x03, 0x09, 0x11, 0x17, 0x1D, 0x21, + 0x0D, 0xB1, 0xB3, 0xBD, 0xBF, 0xD1, 0xD3, 0xDB, 0xE1, 0xE3, 0xED, 0xEF, 0xF5, 0xF7, 0x01, 0x09, + 0x0F, 0x17, 0x1F, 0x27, 0x2B, 0x35, 0x37, 0x3F, 0x49, 0x4F, 0x53, 0x51, 0x57, 0x5D, 0x63, 0x67, +}; + +static const uint8_t huff_spec_a72_bits[] = { + 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, +}; + +static const uint16_t huff_spec_a72_codes[] = { + 0x2A, 0x24, 0x1C, 0x18, 0x12, 0x0E, 0x0A, 0x06, 0x02, 0x7E, 0x7C, 0x7A, 0x76, 0x72, 0x70, 0x6A, + 0x68, 0x62, 0x5C, 0x5A, 0x52, 0x4E, 0x46, 0x42, 0x3C, 0x34, 0x2A, 0x28, 0x20, 0x12, 0x10, 0x08, + 0x66, 0x74, 0x6C, 0x64, 0x5E, 0x58, 0x50, 0x44, 0x40, 0x36, 0x2C, 0x22, 0x1A, 0x0A, 0x02, 0x00, + 0xF2, 0xF0, 0xDE, 0xDC, 0xC2, 0xC0, 0xAE, 0xAC, 0x9A, 0x98, 0x7E, 0x7C, 0x5E, 0x5C, 0x32, 0x30, + 0x00, 0x31, 0x33, 0x5D, 0x5F, 0x7D, 0x7F, 0x99, 0x9B, 0xAD, 0xAF, 0xC1, 0xC3, 0xDD, 0xDF, 0xF1, + 0xF3, 0x01, 0x03, 0x0B, 0x1B, 0x23, 0x2D, 0x37, 0x41, 0x45, 0x51, 0x59, 0x5F, 0x65, 0x6D, 0x75, + 0x67, 0x09, 0x11, 0x13, 0x21, 0x29, 0x2B, 0x35, 0x3D, 0x43, 0x47, 0x4F, 0x53, 0x5B, 0x5D, 0x63, + 0x69, 0x6B, 0x71, 0x73, 0x77, 0x7B, 0x7D, 0x7F, 0x03, 0x07, 0x0B, 0x0F, 0x13, 0x19, 0x1D, 0x25, +}; + +static const uint8_t huff_spec_a73_bits[] = { + 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, +}; + +static const uint16_t huff_spec_a73_codes[] = { + 0x003, 0x03E, 0x038, 0x034, 0x030, 0x02C, 0x028, 0x024, 0x020, 0x01C, 0x016, 0x014, + 0x00E, 0x00A, 0x004, 0x000, 0x07A, 0x076, 0x06E, 0x06C, 0x064, 0x05E, 0x056, 0x04E, + 0x04C, 0x044, 0x036, 0x030, 0x022, 0x018, 0x012, 0x004, 0x03C, 0x03E, 0x032, 0x024, + 0x020, 0x010, 0x0F2, 0x0F0, 0x0E8, 0x0CE, 0x0BA, 0x0B8, 0x0A8, 0x08C, 0x06A, 0x04E, + 0x04C, 0x034, 0x00E, 0x00C, 0x1D6, 0x1D4, 0x19A, 0x198, 0x156, 0x154, 0x11E, 0x11C, + 0x0D2, 0x0D0, 0x06E, 0x06C, 0x000, 0x06D, 0x06F, 0x0D1, 0x0D3, 0x11D, 0x11F, 0x155, + 0x157, 0x199, 0x19B, 0x1D5, 0x1D7, 0x00D, 0x00F, 0x035, 0x04D, 0x04F, 0x06B, 0x08D, + 0x0A9, 0x0B9, 0x0BB, 0x0CF, 0x0E9, 0x0F1, 0x0F3, 0x011, 0x021, 0x025, 0x033, 0x03F, + 0x03D, 0x005, 0x013, 0x019, 0x023, 0x031, 0x037, 0x045, 0x04D, 0x04F, 0x057, 0x05F, + 0x065, 0x06D, 0x06F, 0x077, 0x07B, 0x001, 0x005, 0x00B, 0x00F, 0x015, 0x017, 0x01D, + 0x021, 0x025, 0x029, 0x02D, 0x031, 0x035, 0x039, 0x03F, +}; + +static const uint8_t huff_spec_a74_bits[] = { + 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, + 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 7, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, +}; + +static const uint16_t huff_spec_a74_codes[] = { + 0x00D, 0x00A, 0x004, 0x000, 0x03A, 0x036, 0x032, 0x030, 0x02C, 0x028, 0x026, 0x022, + 0x01E, 0x018, 0x012, 0x00E, 0x006, 0x07E, 0x07A, 0x070, 0x06A, 0x05E, 0x056, 0x054, + 0x048, 0x040, 0x038, 0x022, 0x01A, 0x00A, 0x0F8, 0x0E6, 0x008, 0x0FA, 0x0F0, 0x0D2, + 0x0BA, 0x0B8, 0x094, 0x084, 0x074, 0x042, 0x032, 0x1E6, 0x1CA, 0x1C8, 0x1A2, 0x12E, + 0x10E, 0x10C, 0x0EC, 0x082, 0x062, 0x060, 0x3CA, 0x3C8, 0x342, 0x340, 0x25A, 0x258, + 0x1DE, 0x1DC, 0x102, 0x100, 0x000, 0x101, 0x103, 0x1DD, 0x1DF, 0x259, 0x25B, 0x341, + 0x343, 0x3C9, 0x3CB, 0x061, 0x063, 0x083, 0x0ED, 0x10D, 0x10F, 0x12F, 0x1A3, 0x1C9, + 0x1CB, 0x1E7, 0x033, 0x043, 0x075, 0x085, 0x095, 0x0B9, 0x0BB, 0x0D3, 0x0F1, 0x0FB, + 0x009, 0x0E7, 0x0F9, 0x00B, 0x01B, 0x023, 0x039, 0x041, 0x049, 0x055, 0x057, 0x05F, + 0x06B, 0x071, 0x07B, 0x07F, 0x007, 0x00F, 0x013, 0x019, 0x01F, 0x023, 0x027, 0x029, + 0x02D, 0x031, 0x033, 0x037, 0x03B, 0x001, 0x005, 0x00B, +}; + +static const uint8_t huff_spec_b22_bits[] = { + 0, 4, 0, 4, 4, 5, 0, 5, 0, 0, 0, 0, 4, 5, 0, 5, + 4, 7, 0, 6, 6, 9, 0, 7, 0, 0, 0, 0, 6, 9, 0, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 6, 0, 7, 6, 7, 0, 9, 0, 0, 0, 0, 6, 7, 0, 9, + 4, 8, 0, 8, 8, 10, 0, 10, 0, 0, 0, 0, 6, 9, 0, 9, + 5, 10, 0, 9, 9, 10, 0, 10, 0, 0, 0, 0, 7, 10, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 9, 0, 10, 9, 10, 0, 10, 0, 0, 0, 0, 7, 10, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 8, 0, 8, 6, 9, 0, 9, 0, 0, 0, 0, 8, 10, 0, 10, + 6, 10, 0, 9, 7, 10, 0, 10, 0, 0, 0, 0, 9, 10, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 9, 0, 10, 7, 10, 0, 10, 0, 0, 0, 0, 9, 10, 0, 10, +}; + +static const uint16_t huff_spec_b22_codes[] = { + 0x000, 0x00E, 0x000, 0x00F, 0x008, 0x006, 0x000, 0x00B, 0x000, 0x000, 0x000, 0x000, + 0x009, 0x00A, 0x000, 0x007, 0x006, 0x00A, 0x000, 0x029, 0x006, 0x158, 0x000, 0x023, + 0x000, 0x000, 0x000, 0x000, 0x013, 0x174, 0x000, 0x021, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x007, 0x028, 0x000, 0x00B, 0x012, 0x020, 0x000, 0x175, 0x000, 0x000, 0x000, 0x000, + 0x007, 0x022, 0x000, 0x159, 0x00C, 0x0BC, 0x000, 0x0BF, 0x022, 0x2B8, 0x000, 0x2BB, + 0x000, 0x000, 0x000, 0x000, 0x00B, 0x170, 0x000, 0x15B, 0x000, 0x04E, 0x000, 0x15F, + 0x042, 0x04A, 0x000, 0x041, 0x000, 0x000, 0x000, 0x000, 0x055, 0x044, 0x000, 0x04D, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x02D, 0x172, 0x000, 0x2ED, 0x040, 0x042, 0x000, 0x047, + 0x000, 0x000, 0x000, 0x000, 0x013, 0x2EE, 0x000, 0x049, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x00D, 0x0BE, 0x000, 0x0BD, 0x00A, 0x15A, 0x000, 0x171, 0x000, 0x000, 0x000, 0x000, + 0x023, 0x2BA, 0x000, 0x2B9, 0x02C, 0x2EC, 0x000, 0x173, 0x012, 0x048, 0x000, 0x2EF, + 0x000, 0x000, 0x000, 0x000, 0x041, 0x046, 0x000, 0x043, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x001, 0x15E, 0x000, 0x04F, 0x054, 0x04C, 0x000, 0x045, 0x000, 0x000, 0x000, 0x000, + 0x043, 0x040, 0x000, 0x04B, +}; + +static const uint8_t huff_spec_b23_bits[] = { + 2, 4, 0, 4, 4, 6, 0, 6, 0, 0, 0, 0, 4, 6, 0, 6, + 4, 9, 0, 7, 7, 9, 0, 8, 0, 0, 0, 0, 7, 9, 0, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 7, 0, 9, 7, 8, 0, 9, 0, 0, 0, 0, 7, 8, 0, 9, + 4, 8, 0, 8, 9, 10, 0, 10, 0, 0, 0, 0, 7, 10, 0, 10, + 7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 9, 10, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 8, 10, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 8, 0, 8, 7, 10, 0, 10, 0, 0, 0, 0, 9, 10, 0, 10, + 7, 10, 0, 10, 8, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 10, 0, 10, 9, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10, +}; + +static const uint16_t huff_spec_b23_codes[] = { + 0x003, 0x008, 0x000, 0x009, 0x002, 0x018, 0x000, 0x01B, 0x000, 0x000, 0x000, 0x000, + 0x003, 0x01A, 0x000, 0x019, 0x000, 0x17C, 0x000, 0x055, 0x056, 0x0E8, 0x000, 0x07D, + 0x000, 0x000, 0x000, 0x000, 0x059, 0x0F6, 0x000, 0x07F, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x001, 0x054, 0x000, 0x17D, 0x058, 0x07E, 0x000, 0x0F7, 0x000, 0x000, 0x000, 0x000, + 0x057, 0x07C, 0x000, 0x0E9, 0x004, 0x0A2, 0x000, 0x0A1, 0x17A, 0x1DA, 0x000, 0x1D9, + 0x000, 0x000, 0x000, 0x000, 0x053, 0x1E8, 0x000, 0x2F3, 0x05C, 0x1D6, 0x000, 0x1E7, + 0x1EA, 0x1E2, 0x000, 0x1CF, 0x000, 0x000, 0x000, 0x000, 0x17F, 0x1CA, 0x000, 0x1DD, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x05B, 0x2F0, 0x000, 0x1DF, 0x1E4, 0x1CC, 0x000, 0x1D5, + 0x000, 0x000, 0x000, 0x000, 0x071, 0x1E0, 0x000, 0x1C9, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x005, 0x0A0, 0x000, 0x0A3, 0x052, 0x2F2, 0x000, 0x1E9, 0x000, 0x000, 0x000, 0x000, + 0x17B, 0x1D8, 0x000, 0x1DB, 0x05A, 0x1DE, 0x000, 0x2F1, 0x070, 0x1C8, 0x000, 0x1E1, + 0x000, 0x000, 0x000, 0x000, 0x1E5, 0x1D4, 0x000, 0x1CD, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x05D, 0x1E6, 0x000, 0x1D7, 0x17E, 0x1DC, 0x000, 0x1CB, 0x000, 0x000, 0x000, 0x000, + 0x1EB, 0x1CE, 0x000, 0x1E3, +}; + +static const uint8_t huff_spec_b24_bits[] = { + 1, 4, 0, 4, 5, 7, 0, 7, 0, 0, 0, 0, 5, 7, 0, 7, + 5, 9, 0, 7, 8, 10, 0, 9, 0, 0, 0, 0, 7, 10, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 7, 0, 9, 7, 9, 0, 10, 0, 0, 0, 0, 8, 9, 0, 10, + 5, 9, 0, 8, 9, 10, 0, 10, 0, 0, 0, 0, 7, 10, 0, 10, + 7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 8, 0, 9, 7, 10, 0, 10, 0, 0, 0, 0, 9, 10, 0, 10, + 7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 10, 0, 10, 10, 10, 0, 10, 0, 0, 0, 0, 10, 10, 0, 10, +}; + +static const uint16_t huff_spec_b24_codes[] = { + 0x001, 0x000, 0x000, 0x001, 0x00A, 0x01C, 0x000, 0x033, 0x000, 0x000, 0x000, 0x000, + 0x00B, 0x032, 0x000, 0x01D, 0x008, 0x0D8, 0x000, 0x031, 0x06E, 0x0FA, 0x000, 0x0D7, + 0x000, 0x000, 0x000, 0x000, 0x011, 0x0F4, 0x000, 0x0D5, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x009, 0x030, 0x000, 0x0D9, 0x010, 0x0D4, 0x000, 0x0F5, 0x000, 0x000, 0x000, 0x000, + 0x06F, 0x0D6, 0x000, 0x0FB, 0x00E, 0x0DA, 0x000, 0x025, 0x0D2, 0x0D4, 0x000, 0x0DB, + 0x000, 0x000, 0x000, 0x000, 0x017, 0x0FE, 0x000, 0x0FD, 0x014, 0x0DC, 0x000, 0x0F9, + 0x0F2, 0x0D6, 0x000, 0x09B, 0x000, 0x000, 0x000, 0x000, 0x1A3, 0x09C, 0x000, 0x0D3, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x019, 0x0F6, 0x000, 0x0D9, 0x0F0, 0x09E, 0x000, 0x0D1, + 0x000, 0x000, 0x000, 0x000, 0x1A1, 0x0DE, 0x000, 0x099, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x00F, 0x024, 0x000, 0x0DB, 0x016, 0x0FC, 0x000, 0x0FF, 0x000, 0x000, 0x000, 0x000, + 0x0D3, 0x0DA, 0x000, 0x0D5, 0x018, 0x0D8, 0x000, 0x0F7, 0x1A0, 0x098, 0x000, 0x0DF, + 0x000, 0x000, 0x000, 0x000, 0x0F1, 0x0D0, 0x000, 0x09F, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x015, 0x0F8, 0x000, 0x0DD, 0x1A2, 0x0D2, 0x000, 0x09D, 0x000, 0x000, 0x000, 0x000, + 0x0F3, 0x09A, 0x000, 0x0D7 +}; + +static const uint8_t huff_spec_b32_bits[] = { + 2, 4, 5, 6, 0, 6, 5, 4, 5, 6, 6, 7, 0, 6, 5, 6, + 5, 6, 7, 7, 0, 8, 7, 6, 6, 7, 8, 9, 0, 9, 8, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 0, 9, 8, 7, + 5, 6, 7, 8, 0, 7, 7, 6, 5, 6, 5, 6, 0, 7, 6, 6, +}; + +static const uint16_t huff_spec_b32_codes[] = { + 0x001, 0x002, 0x01E, 0x02A, 0x000, 0x02B, 0x01F, 0x003, 0x016, 0x020, 0x03A, 0x064, + 0x000, 0x005, 0x001, 0x023, 0x01A, 0x026, 0x070, 0x00C, 0x000, 0x0CF, 0x073, 0x031, + 0x024, 0x00E, 0x0CC, 0x146, 0x000, 0x145, 0x0A1, 0x053, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x025, 0x052, 0x0A0, 0x144, 0x000, 0x147, 0x0CD, 0x00F, + 0x01B, 0x030, 0x072, 0x0CE, 0x000, 0x00D, 0x071, 0x027, 0x017, 0x022, 0x000, 0x004, + 0x000, 0x065, 0x03B, 0x021, +}; + +static const uint8_t huff_spec_b33_bits[] = { + 2, 4, 5, 7, 0, 7, 5, 4, 4, 5, 6, 8, 0, 7, 6, 5, + 5, 6, 7, 9, 0, 8, 7, 6, 7, 8, 9, 10, 0, 10, 9, 8, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 0, 10, 9, 8, + 5, 6, 7, 8, 0, 9, 7, 6, 4, 5, 6, 7, 0, 8, 6, 5, +}; + +static const uint16_t huff_spec_b33_codes[] = { + 0x003, 0x008, 0x014, 0x05E, 0x000, 0x05F, 0x015, 0x009, 0x004, 0x002, 0x01C, 0x0BA, + 0x000, 0x011, 0x01F, 0x001, 0x00C, 0x00C, 0x014, 0x166, 0x000, 0x02D, 0x013, 0x00F, + 0x05A, 0x0B0, 0x05E, 0x0B8, 0x000, 0x0BB, 0x165, 0x0B9, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x05B, 0x0B8, 0x164, 0x0BA, 0x000, 0x0B9, 0x05F, 0x0B1, + 0x00D, 0x00E, 0x012, 0x02C, 0x000, 0x167, 0x015, 0x00D, 0x005, 0x000, 0x01E, 0x010, + 0x000, 0x0BB, 0x01D, 0x003 +}; + +static const uint8_t huff_spec_b34_bits[] = { + 1, 4, 6, 8, 0, 8, 6, 4, 4, 6, 7, 9, 0, 8, 7, 6, + 6, 7, 8, 10, 0, 10, 8, 7, 8, 9, 10, 10, 0, 10, 10, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, 10, 0, 10, 10, 9, + 6, 7, 8, 10, 0, 10, 8, 7, 4, 6, 7, 8, 0, 9, 7, 6, +}; + +static const uint16_t huff_spec_b34_codes[] = { + 0x000, 0x00A, 0x038, 0x0EE, 0x000, 0x0EF, 0x039, 0x00B, 0x008, 0x03C, 0x06E, 0x1D8, + 0x000, 0x0C1, 0x075, 0x03F, 0x032, 0x068, 0x0C4, 0x358, 0x000, 0x30F, 0x0C7, 0x06D, + 0x0D4, 0x1AE, 0x30C, 0x308, 0x000, 0x30B, 0x35B, 0x1DB, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x0D5, 0x1DA, 0x35A, 0x30A, 0x000, 0x309, 0x30D, 0x1AF, + 0x033, 0x06C, 0x0C6, 0x30E, 0x000, 0x359, 0x0C5, 0x069, 0x009, 0x03E, 0x074, 0x0C0, + 0x000, 0x1D9, 0x06F, 0x03D, +}; + +static const uint8_t huff_spec_b42_bits[] = { + 4, 5, 6, 8, 6, 7, 8, 8, 0, 8, 8, 7, 6, 8, 6, 5, + 5, 6, 7, 8, 7, 7, 8, 9, 0, 8, 8, 7, 7, 8, 7, 6, + 7, 7, 8, 9, 7, 8, 9, 9, 0, 9, 9, 8, 7, 9, 8, 7, + 8, 9, 9, 10, 8, 8, 9, 10, 0, 10, 9, 8, 8, 10, 9, 8, + 6, 7, 8, 8, 9, 9, 10, 10, 0, 10, 10, 9, 9, 8, 8, 7, + 7, 7, 8, 9, 9, 10, 10, 10, 0, 10, 10, 10, 9, 9, 8, 7, + 8, 8, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 8, + 8, 9, 9, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 9, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 9, 9, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 9, 9, + 8, 8, 9, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 9, 8, + 7, 7, 8, 9, 9, 10, 10, 10, 0, 10, 10, 10, 9, 9, 8, 7, + 6, 7, 8, 8, 9, 9, 10, 10, 0, 10, 10, 9, 9, 8, 8, 7, + 8, 8, 9, 10, 8, 8, 9, 10, 0, 10, 9, 8, 8, 10, 9, 9, + 7, 7, 8, 9, 7, 8, 9, 9, 0, 9, 9, 8, 7, 9, 8, 7, + 5, 6, 7, 8, 7, 7, 8, 8, 0, 9, 8, 7, 7, 8, 7, 6, +}; + +static const uint16_t huff_spec_b42_codes[] = { + 0x00E, 0x018, 0x010, 0x0F0, 0x024, 0x05A, 0x0F6, 0x078, 0x000, 0x079, 0x0F7, 0x05B, + 0x025, 0x0F1, 0x011, 0x019, 0x00C, 0x014, 0x01C, 0x036, 0x05C, 0x012, 0x09E, 0x1E4, + 0x000, 0x00B, 0x0A9, 0x03B, 0x05F, 0x071, 0x019, 0x017, 0x06E, 0x000, 0x03E, 0x114, + 0x002, 0x0B0, 0x1AA, 0x07A, 0x000, 0x099, 0x1E7, 0x0B3, 0x00B, 0x131, 0x07F, 0x00D, + 0x0D8, 0x1FE, 0x112, 0x22E, 0x086, 0x010, 0x134, 0x35C, 0x000, 0x35F, 0x133, 0x013, + 0x081, 0x22D, 0x119, 0x07B, 0x00A, 0x050, 0x0F8, 0x04E, 0x1B4, 0x154, 0x3EC, 0x0D2, + 0x000, 0x0D7, 0x3D7, 0x137, 0x1FD, 0x073, 0x0FD, 0x057, 0x052, 0x010, 0x08E, 0x1E8, + 0x11A, 0x3EE, 0x0F2, 0x03C, 0x000, 0x03F, 0x0F1, 0x3D5, 0x111, 0x1F5, 0x09D, 0x025, + 0x0D2, 0x082, 0x1A0, 0x0F8, 0x36E, 0x0D4, 0x072, 0x03A, 0x000, 0x027, 0x071, 0x07D, + 0x36D, 0x0FB, 0x1AD, 0x085, 0x00C, 0x1A8, 0x03C, 0x346, 0x0D0, 0x076, 0x024, 0x020, + 0x000, 0x023, 0x039, 0x075, 0x07F, 0x345, 0x09B, 0x157, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x00D, 0x156, 0x09A, 0x344, 0x07E, 0x074, 0x038, 0x022, 0x000, 0x021, 0x025, 0x077, + 0x0D1, 0x347, 0x03D, 0x1A9, 0x0D3, 0x084, 0x1AC, 0x0FA, 0x36C, 0x07C, 0x070, 0x026, + 0x000, 0x03B, 0x073, 0x0D5, 0x36F, 0x0F9, 0x1A1, 0x083, 0x053, 0x024, 0x09C, 0x1F4, + 0x110, 0x3D4, 0x0F0, 0x03E, 0x000, 0x03D, 0x0F3, 0x3EF, 0x11B, 0x1E9, 0x08F, 0x011, + 0x00B, 0x056, 0x0FC, 0x072, 0x1FC, 0x136, 0x3D6, 0x0D6, 0x000, 0x0D3, 0x3ED, 0x155, + 0x1B5, 0x04F, 0x0F9, 0x051, 0x0D9, 0x07A, 0x118, 0x22C, 0x080, 0x012, 0x132, 0x35E, + 0x000, 0x35D, 0x135, 0x011, 0x087, 0x22F, 0x113, 0x1FF, 0x06F, 0x00C, 0x07E, 0x130, + 0x00A, 0x0B2, 0x1E6, 0x098, 0x000, 0x07B, 0x1AB, 0x0B1, 0x003, 0x115, 0x03F, 0x001, + 0x00D, 0x016, 0x018, 0x070, 0x05E, 0x03A, 0x0A8, 0x00A, 0x000, 0x1E5, 0x09F, 0x013, + 0x05D, 0x037, 0x01D, 0x015, +}; + +static const uint8_t huff_spec_b43_bits[] = { + 2, 5, 6, 7, 7, 8, 8, 9, 0, 9, 8, 8, 7, 7, 6, 5, + 5, 6, 7, 8, 7, 8, 9, 10, 0, 10, 9, 8, 7, 8, 7, 6, + 6, 7, 8, 9, 8, 9, 10, 10, 0, 10, 10, 9, 8, 9, 8, 7, + 7, 8, 9, 10, 9, 9, 10, 10, 0, 10, 10, 10, 9, 10, 9, 8, + 7, 8, 8, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 8, 7, + 8, 8, 9, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 9, 8, + 9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9, + 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, + 9, 9, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 9, + 8, 8, 9, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 9, 8, + 7, 7, 8, 9, 10, 10, 10, 10, 0, 10, 10, 10, 10, 9, 8, 8, + 7, 8, 9, 10, 9, 10, 10, 10, 0, 10, 10, 9, 9, 10, 9, 8, + 6, 7, 8, 9, 8, 9, 10, 10, 0, 10, 10, 9, 8, 9, 8, 7, + 5, 6, 7, 8, 7, 8, 9, 10, 0, 10, 9, 8, 7, 8, 7, 6, +}; + +static const uint16_t huff_spec_b43_codes[] = { + 0x001, 0x01E, 0x022, 0x018, 0x064, 0x0EC, 0x008, 0x100, 0x000, 0x101, 0x009, 0x0ED, + 0x065, 0x019, 0x023, 0x01F, 0x01A, 0x030, 0x056, 0x09A, 0x00A, 0x090, 0x12C, 0x0A6, + 0x000, 0x0A9, 0x12F, 0x093, 0x00F, 0x09F, 0x059, 0x039, 0x00E, 0x054, 0x0BC, 0x19E, + 0x082, 0x176, 0x0AC, 0x088, 0x000, 0x08B, 0x0AF, 0x19D, 0x095, 0x1D1, 0x0BF, 0x051, + 0x002, 0x098, 0x1D4, 0x0B8, 0x170, 0x046, 0x090, 0x060, 0x000, 0x067, 0x095, 0x0BD, + 0x173, 0x0B5, 0x1D3, 0x09D, 0x052, 0x0EE, 0x034, 0x174, 0x0BA, 0x09C, 0x080, 0x044, + 0x000, 0x047, 0x06D, 0x099, 0x0BF, 0x16F, 0x085, 0x001, 0x0CC, 0x036, 0x16C, 0x0B0, + 0x09A, 0x084, 0x04E, 0x03E, 0x000, 0x037, 0x04B, 0x06B, 0x0A1, 0x0B3, 0x16B, 0x087, + 0x1D6, 0x102, 0x0A4, 0x092, 0x068, 0x04C, 0x034, 0x030, 0x000, 0x02D, 0x03D, 0x049, + 0x083, 0x097, 0x0AB, 0x169, 0x0B6, 0x09E, 0x06E, 0x064, 0x040, 0x038, 0x02E, 0x02A, + 0x000, 0x029, 0x033, 0x03B, 0x043, 0x063, 0x087, 0x0A3, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x0B7, 0x0A2, 0x086, 0x062, 0x042, 0x03A, 0x032, 0x028, 0x000, 0x02B, 0x02F, 0x039, + 0x041, 0x065, 0x06F, 0x09F, 0x1D7, 0x168, 0x0AA, 0x096, 0x082, 0x048, 0x03C, 0x02C, + 0x000, 0x031, 0x035, 0x04D, 0x069, 0x093, 0x0A5, 0x103, 0x0CD, 0x086, 0x16A, 0x0B2, + 0x0A0, 0x06A, 0x04A, 0x036, 0x000, 0x03F, 0x04F, 0x085, 0x09B, 0x0B1, 0x16D, 0x037, + 0x053, 0x000, 0x084, 0x16E, 0x0BE, 0x098, 0x06C, 0x046, 0x000, 0x045, 0x081, 0x09D, + 0x0BB, 0x175, 0x035, 0x0EF, 0x003, 0x09C, 0x1D2, 0x0B4, 0x172, 0x0BC, 0x094, 0x066, + 0x000, 0x061, 0x091, 0x047, 0x171, 0x0B9, 0x1D5, 0x099, 0x00F, 0x050, 0x0BE, 0x1D0, + 0x094, 0x19C, 0x0AE, 0x08A, 0x000, 0x089, 0x0AD, 0x177, 0x083, 0x19F, 0x0BD, 0x055, + 0x01B, 0x038, 0x058, 0x09E, 0x00E, 0x092, 0x12E, 0x0A8, 0x000, 0x0A7, 0x12D, 0x091, + 0x00B, 0x09B, 0x057, 0x031, +}; + +static const uint8_t huff_spec_b44_bits[] = { + 2, 4, 6, 7, 7, 8, 10, 10, 0, 10, 10, 8, 7, 7, 6, 4, + 5, 5, 7, 8, 8, 10, 10, 10, 0, 10, 10, 10, 8, 8, 7, 5, + 6, 7, 8, 9, 9, 10, 10, 10, 0, 10, 10, 10, 10, 9, 8, 7, + 8, 8, 9, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 8, + 8, 8, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 8, + 9, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, + 9, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, + 8, 8, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 8, + 8, 8, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 9, 8, + 6, 7, 8, 9, 10, 10, 10, 10, 0, 10, 10, 10, 9, 9, 8, 7, + 5, 5, 7, 8, 8, 10, 10, 10, 0, 10, 10, 10, 8, 8, 7, 5, +}; + +static const uint16_t huff_spec_b44_codes[] = { + 0x002, 0x002, 0x030, 0x000, 0x002, 0x00C, 0x1D2, 0x1AE, 0x000, 0x1AF, 0x1D3, 0x00D, + 0x003, 0x001, 0x031, 0x003, 0x01E, 0x002, 0x070, 0x0C8, 0x07E, 0x1E8, 0x1C0, 0x176, + 0x000, 0x17F, 0x1C3, 0x1EB, 0x0CF, 0x0D3, 0x073, 0x009, 0x018, 0x06A, 0x0EC, 0x1DE, + 0x1A2, 0x1CA, 0x1AA, 0x164, 0x000, 0x16D, 0x1AD, 0x1D1, 0x1EF, 0x1DD, 0x0EB, 0x06D, + 0x0E8, 0x0CA, 0x1BE, 0x1CE, 0x1DA, 0x1B6, 0x170, 0x154, 0x000, 0x153, 0x173, 0x1B1, + 0x1D7, 0x1D5, 0x343, 0x0CD, 0x0DC, 0x078, 0x340, 0x1CC, 0x1BA, 0x1A8, 0x156, 0x148, + 0x000, 0x145, 0x15F, 0x1A1, 0x1BD, 0x1D9, 0x1ED, 0x07D, 0x1BC, 0x1DC, 0x1C4, 0x1B2, + 0x17C, 0x15A, 0x14A, 0x03A, 0x000, 0x039, 0x147, 0x16B, 0x17B, 0x1B5, 0x1C9, 0x1DF, + 0x1C6, 0x1B8, 0x1A2, 0x168, 0x160, 0x14C, 0x02E, 0x024, 0x000, 0x027, 0x03D, 0x151, + 0x15D, 0x16F, 0x1A7, 0x1BF, 0x1A4, 0x174, 0x162, 0x14E, 0x140, 0x02C, 0x02A, 0x022, + 0x000, 0x021, 0x029, 0x03F, 0x143, 0x159, 0x167, 0x179, 0x000, 0x000, 0x000, 0x000, + 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, + 0x1A5, 0x178, 0x166, 0x158, 0x142, 0x03E, 0x028, 0x020, 0x000, 0x023, 0x02B, 0x02D, + 0x141, 0x14F, 0x163, 0x175, 0x1C7, 0x1BE, 0x1A6, 0x16E, 0x15C, 0x150, 0x03C, 0x026, + 0x000, 0x025, 0x02F, 0x14D, 0x161, 0x169, 0x1A3, 0x1B9, 0x1BD, 0x1DE, 0x1C8, 0x1B4, + 0x17A, 0x16A, 0x146, 0x038, 0x000, 0x03B, 0x14B, 0x15B, 0x17D, 0x1B3, 0x1C5, 0x1DD, + 0x0DD, 0x07C, 0x1EC, 0x1D8, 0x1BC, 0x1A0, 0x15E, 0x144, 0x000, 0x149, 0x157, 0x1A9, + 0x1BB, 0x1CD, 0x341, 0x079, 0x0E9, 0x0CC, 0x342, 0x1D4, 0x1D6, 0x1B0, 0x172, 0x152, + 0x000, 0x155, 0x171, 0x1B7, 0x1DB, 0x1CF, 0x1BF, 0x0CB, 0x019, 0x06C, 0x0EA, 0x1DC, + 0x1EE, 0x1D0, 0x1AC, 0x16C, 0x000, 0x165, 0x1AB, 0x1CB, 0x1A3, 0x1DF, 0x0ED, 0x06B, + 0x01F, 0x008, 0x072, 0x0D2, 0x0CE, 0x1EA, 0x1C2, 0x17E, 0x000, 0x177, 0x1C1, 0x1E9, + 0x07F, 0x0C9, 0x071, 0x003, +}; + +static const uint8_t huff_spec_b52_bits[] = { + 3, 4, 4, 4, 5, 5, 6, 6, 5, 5, 5, 6, 6, 6, 7, 7, + 0, 7, 7, 6, 6, 6, 5, 5, 5, 6, 6, 5, 5, 4, 4, 4, +}; + +static const uint16_t huff_spec_b52_codes[] = { + 0x06, 0x0E, 0x06, 0x00, 0x0A, 0x04, 0x2C, 0x12, 0x14, 0x10, 0x06, 0x2E, 0x24, 0x10, 0x4E, 0x4C, + 0x00, 0x4D, 0x4F, 0x11, 0x25, 0x2F, 0x07, 0x11, 0x15, 0x13, 0x2D, 0x05, 0x0B, 0x01, 0x07, 0x0F, +}; + +static const uint8_t huff_spec_b53_bits[] = { + 2, 3, 4, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 8, 8, + 0, 8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 4, 3, +}; + +static const uint16_t huff_spec_b53_codes[] = { + 0x02, 0x00, 0x06, 0x1C, 0x18, 0x3E, 0x16, 0x10, 0x3C, 0x36, 0x14, 0x6A, 0x26, 0x24, 0xD2, 0xD0, + 0x00, 0xD1, 0xD3, 0x25, 0x27, 0x6B, 0x15, 0x37, 0x3D, 0x11, 0x17, 0x3F, 0x19, 0x1D, 0x07, 0x01, +}; + +static const uint8_t huff_spec_b54_bits[] = { + 2, 3, 4, 4, 5, 6, 6, 7, 6, 6, 7, 8, 8, 8, 9, 9, + 0, 9, 9, 8, 8, 8, 7, 6, 6, 7, 6, 6, 5, 4, 4, 3, +}; + +static const uint16_t huff_spec_b54_codes[] = { + 0x003, 0x002, 0x008, 0x000, 0x014, 0x02E, 0x00E, 0x05A, 0x00A, 0x008, 0x01A, 0x0B2, + 0x032, 0x030, 0x162, 0x160, 0x000, 0x161, 0x163, 0x031, 0x033, 0x0B3, 0x01B, 0x009, + 0x00B, 0x05B, 0x00F, 0x02F, 0x015, 0x001, 0x009, 0x003, +}; + +static const uint8_t huff_spec_b62_bits[] = { + 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, + 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, + 0, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, + 6, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, +}; + +static const uint16_t huff_spec_b62_codes[] = { + 0x0D, 0x06, 0x1C, 0x14, 0x0A, 0x04, 0x3E, 0x2E, 0x22, 0x0E, 0x06, 0x00, 0x5A, 0x4E, 0x40, 0x20, + 0x30, 0x32, 0x24, 0x12, 0x0C, 0x02, 0x78, 0x58, 0x42, 0x22, 0x0A, 0x08, 0xF6, 0xF4, 0x9A, 0x98, + 0x00, 0x99, 0x9B, 0xF5, 0xF7, 0x09, 0x0B, 0x23, 0x43, 0x59, 0x79, 0x03, 0x0D, 0x13, 0x25, 0x33, + 0x31, 0x21, 0x41, 0x4F, 0x5B, 0x01, 0x07, 0x0F, 0x23, 0x2F, 0x3F, 0x05, 0x0B, 0x15, 0x1D, 0x07, +}; + +static const uint8_t huff_spec_b63_bits[] = { + 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, + 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, + 0, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 7, 6, + 6, 8, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, +}; + +static const uint16_t huff_spec_b63_codes[] = { + 0x006, 0x00E, 0x004, 0x014, 0x010, 0x006, 0x000, 0x026, 0x01C, 0x018, 0x004, 0x05C, + 0x04A, 0x03C, 0x016, 0x0BC, 0x006, 0x008, 0x058, 0x03E, 0x036, 0x014, 0x0B6, 0x0B4, + 0x090, 0x068, 0x17E, 0x17C, 0x126, 0x124, 0x0D6, 0x0D4, 0x000, 0x0D5, 0x0D7, 0x125, + 0x127, 0x17D, 0x17F, 0x069, 0x091, 0x0B5, 0x0B7, 0x015, 0x037, 0x03F, 0x059, 0x009, + 0x007, 0x0BD, 0x017, 0x03D, 0x04B, 0x05D, 0x005, 0x019, 0x01D, 0x027, 0x001, 0x007, + 0x011, 0x015, 0x005, 0x00F, +}; + +static const uint8_t huff_spec_b64_bits[] = { + 3, 3, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, + 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, + 0, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 8, 8, 8, 7, 7, + 7, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 3, +}; + +static const uint16_t huff_spec_b64_codes[] = { + 0x007, 0x000, 0x008, 0x01A, 0x014, 0x00C, 0x032, 0x02E, 0x01E, 0x014, 0x062, 0x05A, + 0x03A, 0x026, 0x020, 0x0B2, 0x038, 0x02C, 0x022, 0x0C0, 0x05E, 0x04A, 0x186, 0x184, + 0x160, 0x0BA, 0x092, 0x090, 0x2C6, 0x2C4, 0x172, 0x170, 0x000, 0x171, 0x173, 0x2C5, + 0x2C7, 0x091, 0x093, 0x0BB, 0x161, 0x185, 0x187, 0x04B, 0x05F, 0x0C1, 0x023, 0x02D, + 0x039, 0x0B3, 0x021, 0x027, 0x03B, 0x05B, 0x063, 0x015, 0x01F, 0x02F, 0x033, 0x00D, + 0x015, 0x01B, 0x009, 0x001, +}; + +static const uint8_t huff_spec_b72_bits[] = { + 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, +}; + +static const uint16_t huff_spec_b72_codes[] = { + 0x01E, 0x016, 0x00C, 0x000, 0x038, 0x032, 0x028, 0x022, 0x01C, 0x012, 0x00E, 0x006, + 0x076, 0x06C, 0x060, 0x04E, 0x03E, 0x02A, 0x022, 0x01A, 0x012, 0x00A, 0x0FC, 0x0DC, + 0x0C6, 0x0A8, 0x094, 0x086, 0x058, 0x042, 0x040, 0x02A, 0x068, 0x07C, 0x06A, 0x056, + 0x048, 0x040, 0x02E, 0x028, 0x016, 0x010, 0x008, 0x0EA, 0x0DE, 0x0AA, 0x09A, 0x096, + 0x07A, 0x078, 0x05A, 0x032, 0x030, 0x028, 0x1FE, 0x1FC, 0x1D2, 0x1D0, 0x18A, 0x188, + 0x132, 0x130, 0x10A, 0x108, 0x000, 0x109, 0x10B, 0x131, 0x133, 0x189, 0x18B, 0x1D1, + 0x1D3, 0x1FD, 0x1FF, 0x029, 0x031, 0x033, 0x05B, 0x079, 0x07B, 0x097, 0x09B, 0x0AB, + 0x0DF, 0x0EB, 0x009, 0x011, 0x017, 0x029, 0x02F, 0x041, 0x049, 0x057, 0x06B, 0x07D, + 0x069, 0x02B, 0x041, 0x043, 0x059, 0x087, 0x095, 0x0A9, 0x0C7, 0x0DD, 0x0FD, 0x00B, + 0x013, 0x01B, 0x023, 0x02B, 0x03F, 0x04F, 0x061, 0x06D, 0x077, 0x007, 0x00F, 0x013, + 0x01D, 0x023, 0x029, 0x033, 0x039, 0x001, 0x00D, 0x017, +}; + +static const uint8_t huff_spec_b73_bits[] = { + 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, + 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 7, + 8, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 4, +}; + +static const uint16_t huff_spec_b73_codes[] = { + 0x000, 0x006, 0x018, 0x010, 0x004, 0x03A, 0x034, 0x02A, 0x026, 0x014, 0x010, 0x07E, + 0x072, 0x06E, 0x05C, 0x052, 0x04A, 0x02C, 0x024, 0x018, 0x0F4, 0x0E0, 0x0DA, 0x0B6, + 0x0B2, 0x0A0, 0x05E, 0x04E, 0x038, 0x034, 0x1E6, 0x1B2, 0x0FA, 0x01E, 0x0F8, 0x0F0, + 0x0BE, 0x0B4, 0x0A2, 0x090, 0x04C, 0x03A, 0x1EE, 0x1E4, 0x1C6, 0x1B0, 0x178, 0x162, + 0x126, 0x124, 0x0B8, 0x06C, 0x3DA, 0x3D8, 0x38A, 0x388, 0x2F6, 0x2F4, 0x2C2, 0x2C0, + 0x176, 0x174, 0x0DC, 0x0DE, 0x000, 0x0DF, 0x0DD, 0x175, 0x177, 0x2C1, 0x2C3, 0x2F5, + 0x2F7, 0x389, 0x38B, 0x3D9, 0x3DB, 0x06D, 0x0B9, 0x125, 0x127, 0x163, 0x179, 0x1B1, + 0x1C7, 0x1E5, 0x1EF, 0x03B, 0x04D, 0x091, 0x0A3, 0x0B5, 0x0BF, 0x0F1, 0x0F9, 0x01F, + 0x0FB, 0x1B3, 0x1E7, 0x035, 0x039, 0x04F, 0x05F, 0x0A1, 0x0B3, 0x0B7, 0x0DB, 0x0E1, + 0x0F5, 0x019, 0x025, 0x02D, 0x04B, 0x053, 0x05D, 0x06F, 0x073, 0x07F, 0x011, 0x015, + 0x027, 0x02B, 0x035, 0x03B, 0x005, 0x011, 0x019, 0x007, +}; + +static const uint8_t huff_spec_b74_bits[] = { + 3, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, + 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, + 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, + 8, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, + 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, +}; + +static const uint16_t huff_spec_b74_codes[] = { + 0x001, 0x008, 0x01E, 0x018, 0x00C, 0x002, 0x03A, 0x034, 0x02C, 0x01E, 0x016, 0x012, + 0x072, 0x06E, 0x05E, 0x056, 0x050, 0x038, 0x022, 0x004, 0x0E2, 0x0DA, 0x0BA, 0x0A8, + 0x076, 0x054, 0x050, 0x002, 0x000, 0x1C0, 0x1B0, 0x156, 0x0A4, 0x0A6, 0x074, 0x052, + 0x004, 0x1C2, 0x1B2, 0x170, 0x154, 0x0AE, 0x0AC, 0x086, 0x2E6, 0x2E4, 0x10A, 0x108, + 0x106, 0x104, 0x102, 0x100, 0x03E, 0x03A, 0x03C, 0x038, 0x036, 0x034, 0x032, 0x030, + 0x01E, 0x01A, 0x01C, 0x018, 0x000, 0x019, 0x01D, 0x01B, 0x01F, 0x031, 0x033, 0x035, + 0x037, 0x039, 0x03D, 0x03B, 0x03F, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x2E5, + 0x2E7, 0x087, 0x0AD, 0x0AF, 0x155, 0x171, 0x1B3, 0x1C3, 0x005, 0x053, 0x075, 0x0A7, + 0x0A5, 0x157, 0x1B1, 0x1C1, 0x001, 0x003, 0x051, 0x055, 0x077, 0x0A9, 0x0BB, 0x0DB, + 0x0E3, 0x005, 0x023, 0x039, 0x051, 0x057, 0x05F, 0x06F, 0x073, 0x013, 0x017, 0x01F, + 0x02D, 0x035, 0x03B, 0x003, 0x00D, 0x019, 0x01F, 0x009, +}; + +static const HuffmanCodebook at9_huffman_coeffs[][8][4] = { + { + { { 0 } }, + { { 0 } }, + { + { huff_spec_a21_bits, huff_spec_a21_codes, 16, 2, 1, 2, 3, }, + { huff_spec_a22_bits, huff_spec_a22_codes, 256, 4, 2, 2, 8, }, + { huff_spec_a23_bits, huff_spec_a23_codes, 256, 4, 2, 2, 9, }, + { huff_spec_a24_bits, huff_spec_a24_codes, 256, 4, 2, 2, 10, }, + }, + { + { huff_spec_a31_bits, huff_spec_a31_codes, 64, 2, 1, 3, 7, }, + { huff_spec_a32_bits, huff_spec_a32_codes, 64, 2, 1, 3, 7, }, + { huff_spec_a33_bits, huff_spec_a33_codes, 64, 2, 1, 3, 8, }, + { huff_spec_a34_bits, huff_spec_a34_codes, 64, 2, 1, 3, 10, }, + }, + { + { huff_spec_a41_bits, huff_spec_a41_codes, 256, 2, 1, 4, 9, }, + { huff_spec_a42_bits, huff_spec_a42_codes, 256, 2, 1, 4, 10, }, + { huff_spec_a43_bits, huff_spec_a43_codes, 256, 2, 1, 4, 10, }, + { huff_spec_a44_bits, huff_spec_a44_codes, 256, 2, 1, 4, 10, }, + }, + { + { huff_spec_a51_bits, huff_spec_a51_codes, 32, 1, 0, 5, 6, }, + { huff_spec_a52_bits, huff_spec_a52_codes, 32, 1, 0, 5, 6, }, + { huff_spec_a53_bits, huff_spec_a53_codes, 32, 1, 0, 5, 7, }, + { huff_spec_a54_bits, huff_spec_a54_codes, 32, 1, 0, 5, 8, }, + }, + { + { huff_spec_a61_bits, huff_spec_a61_codes, 64, 1, 0, 6, 7, }, + { huff_spec_a62_bits, huff_spec_a62_codes, 64, 1, 0, 6, 7, }, + { huff_spec_a63_bits, huff_spec_a63_codes, 64, 1, 0, 6, 8, }, + { huff_spec_a64_bits, huff_spec_a64_codes, 64, 1, 0, 6, 9, }, + }, + { + { huff_spec_a71_bits, huff_spec_a71_codes, 128, 1, 0, 7, 8, }, + { huff_spec_a72_bits, huff_spec_a72_codes, 128, 1, 0, 7, 8, }, + { huff_spec_a73_bits, huff_spec_a73_codes, 128, 1, 0, 7, 9, }, + { huff_spec_a74_bits, huff_spec_a74_codes, 128, 1, 0, 7, 10, }, + }, + }, + { + { { 0 } }, + { { 0 } }, + { + { 0 }, + { huff_spec_b22_bits, huff_spec_b22_codes, 256, 4, 2, 2, 10, }, + { huff_spec_b23_bits, huff_spec_b23_codes, 256, 4, 2, 2, 10, }, + { huff_spec_b24_bits, huff_spec_b24_codes, 256, 4, 2, 2, 10, }, + }, + { + { 0 }, + { huff_spec_b32_bits, huff_spec_b32_codes, 64, 2, 1, 3, 9, }, + { huff_spec_b33_bits, huff_spec_b33_codes, 64, 2, 1, 3, 10, }, + { huff_spec_b34_bits, huff_spec_b34_codes, 64, 2, 1, 3, 10, }, + }, + { + { 0 }, + { huff_spec_b42_bits, huff_spec_b42_codes, 256, 2, 1, 4, 10, }, + { huff_spec_b43_bits, huff_spec_b43_codes, 256, 2, 1, 4, 10, }, + { huff_spec_b44_bits, huff_spec_b44_codes, 256, 2, 1, 4, 10, }, + }, + { + { 0 }, + { huff_spec_b52_bits, huff_spec_b52_codes, 32, 1, 0, 5, 7, }, + { huff_spec_b53_bits, huff_spec_b53_codes, 32, 1, 0, 5, 8, }, + { huff_spec_b54_bits, huff_spec_b54_codes, 32, 1, 0, 5, 9, }, + }, + { + { 0 }, + { huff_spec_b62_bits, huff_spec_b62_codes, 64, 1, 0, 6, 8, }, + { huff_spec_b63_bits, huff_spec_b63_codes, 64, 1, 0, 6, 9, }, + { huff_spec_b64_bits, huff_spec_b64_codes, 64, 1, 0, 6, 10, }, + }, + { + { 0 }, + { huff_spec_b72_bits, huff_spec_b72_codes, 128, 1, 0, 7, 9, }, + { huff_spec_b73_bits, huff_spec_b73_codes, 128, 1, 0, 7, 10, }, + { huff_spec_b74_bits, huff_spec_b74_codes, 128, 1, 0, 7, 10, }, + }, + }, +}; + +#endif /* AVCODEC_ATRAC9TAB_H */ diff --git a/chromium/third_party/ffmpeg/libavcodec/av1.h b/chromium/third_party/ffmpeg/libavcodec/av1.h new file mode 100644 index 00000000000..c989b69974c --- /dev/null +++ b/chromium/third_party/ffmpeg/libavcodec/av1.h @@ -0,0 +1,42 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * AV1 common definitions + */ + +#ifndef AVCODEC_AV1_H +#define AVCODEC_AV1_H + +// OBU types (section 6.2.2). +typedef enum { + // 0 reserved. + AV1_OBU_SEQUENCE_HEADER = 1, + AV1_OBU_TEMPORAL_DELIMITER = 2, + AV1_OBU_FRAME_HEADER = 3, + AV1_OBU_TILE_GROUP = 4, + AV1_OBU_METADATA = 5, + AV1_OBU_FRAME = 6, + AV1_OBU_REDUNDANT_FRAME_HEADER = 7, + AV1_OBU_TILE_LIST = 8, + // 9-14 reserved. + AV1_OBU_PADDING = 15, +} AV1_OBU_Type; + +#endif /* AVCODEC_AV1_H */ diff --git a/chromium/third_party/ffmpeg/libavcodec/av1_parse.c b/chromium/third_party/ffmpeg/libavcodec/av1_parse.c new file mode 100644 index 00000000000..48feb9fb8a3 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavcodec/av1_parse.c @@ -0,0 +1,103 @@ +/* + * AV1 common parsing code + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "libavutil/mem.h" + +#include "av1_parse.h" +#include "bytestream.h" + +int ff_av1_extract_obu(AV1OBU *obu, const uint8_t *buf, int length, void *logctx) +{ + int64_t obu_size; + int start_pos, type, temporal_id, spatial_id; + + int ret = parse_obu_header(buf, length, &obu_size, &start_pos, + &type, &temporal_id, &spatial_id); + if (ret < 0) + return ret; + + if (obu_size > INT_MAX / 8 || obu_size < 0) + return AVERROR(ERANGE); + + obu->type = type; + obu->temporal_id = temporal_id; + obu->spatial_id = spatial_id; + + length = obu_size + start_pos; + + obu->data = buf + start_pos; + obu->size = obu_size; + obu->raw_data = buf; + obu->raw_size = length; + + ret = init_get_bits(&obu->gb, obu->data, obu->size * 8); + if (ret < 0) + return ret; + + av_log(logctx, AV_LOG_DEBUG, + "obu_type: %d, temporal_id: %d, spatial_id: %d, payload size: %d\n", + obu->type, obu->temporal_id, obu->spatial_id, obu->size); + + return length; +} + +int ff_av1_packet_split(AV1Packet *pkt, const uint8_t *buf, int length, void *logctx) +{ + GetByteContext bc; + int consumed; + + bytestream2_init(&bc, buf, length); + pkt->nb_obus = 0; + + while (bytestream2_get_bytes_left(&bc) > 0) { + AV1OBU *obu; + + if (pkt->obus_allocated < pkt->nb_obus + 1) { + int new_size = pkt->obus_allocated + 1; + AV1OBU *tmp = av_realloc_array(pkt->obus, new_size, sizeof(*tmp)); + if (!tmp) + return AVERROR(ENOMEM); + + pkt->obus = tmp; + memset(pkt->obus + pkt->obus_allocated, 0, + (new_size - pkt->obus_allocated) * sizeof(*tmp)); + pkt->obus_allocated = new_size; + } + obu = &pkt->obus[pkt->nb_obus]; + + consumed = ff_av1_extract_obu(obu, bc.buffer, bytestream2_get_bytes_left(&bc), logctx); + if (consumed < 0) + return consumed; + + pkt->nb_obus++; + + bytestream2_skip(&bc, consumed); + } + + return 0; +} + +void ff_av1_packet_uninit(AV1Packet *pkt) +{ + av_freep(&pkt->obus); + pkt->obus_allocated = 0; +} diff --git a/chromium/third_party/ffmpeg/libavcodec/av1_parse.h b/chromium/third_party/ffmpeg/libavcodec/av1_parse.h new file mode 100644 index 00000000000..84fc71c925d --- /dev/null +++ b/chromium/third_party/ffmpeg/libavcodec/av1_parse.h @@ -0,0 +1,126 @@ +/* + * AV1 common parsing code + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_AV1_PARSE_H +#define AVCODEC_AV1_PARSE_H + +#include <stdint.h> + +#include "avcodec.h" +#include "get_bits.h" + +typedef struct AV1OBU { + /** Size of payload */ + int size; + const uint8_t *data; + + /** Size of entire OBU, including header */ + int raw_size; + const uint8_t *raw_data; + + /** GetBitContext initialized to the start of the payload */ + GetBitContext gb; + + int type; + + int temporal_id; + int spatial_id; +} AV1OBU; + +/** An input packet split into OBUs */ +typedef struct AV1Packet { + AV1OBU *obus; + int nb_obus; + int obus_allocated; +} AV1Packet; + +/** + * Extract an OBU from a raw bitstream. + * + * @note This function does not copy or store any bistream data. All + * the pointers in the AV1OBU structure will be valid as long + * as the input buffer also is. + */ +int ff_av1_extract_obu(AV1OBU *obu, const uint8_t *buf, int length, + void *logctx); + +/** + * Split an input packet into OBUs. + * + * @note This function does not copy or store any bistream data. All + * the pointers in the AV1Packet structure will be valid as + * long as the input buffer also is. + */ +int ff_av1_packet_split(AV1Packet *pkt, const uint8_t *buf, int length, + void *logctx); + +/** + * Free all the allocated memory in the packet. + */ +void ff_av1_packet_uninit(AV1Packet *pkt); + +static inline int64_t leb128(GetBitContext *gb) { + int64_t ret = 0; + int i; + + for (i = 0; i < 8; i++) { + int byte = get_bits(gb, 8); + ret |= (int64_t)(byte & 0x7f) << (i * 7); + if (!(byte & 0x80)) + break; + } + return ret; +} + +static inline int parse_obu_header(const uint8_t *buf, int buf_size, + int64_t *obu_size, int *start_pos, int *type, + int *temporal_id, int *spatial_id) +{ + GetBitContext gb; + int ret, extension_flag, has_size_flag; + + ret = init_get_bits8(&gb, buf, FFMIN(buf_size, 2 + 8)); // OBU header fields + max leb128 length + if (ret < 0) + return ret; + + if (get_bits1(&gb) != 0) // obu_forbidden_bit + return AVERROR_INVALIDDATA; + + *type = get_bits(&gb, 4); + extension_flag = get_bits1(&gb); + has_size_flag = get_bits1(&gb); + skip_bits1(&gb); // obu_reserved_1bit + + if (extension_flag) { + *temporal_id = get_bits(&gb, 3); + *spatial_id = get_bits(&gb, 2); + skip_bits(&gb, 3); // extension_header_reserved_3bits + } else { + *temporal_id = *spatial_id = 0; + } + + *obu_size = has_size_flag ? leb128(&gb) + : buf_size - 1 - extension_flag; + *start_pos = get_bits_count(&gb) / 8; + + return 0; +} + +#endif /* AVCODEC_AV1_PARSE_H */ diff --git a/chromium/third_party/ffmpeg/libavcodec/avcodec.h b/chromium/third_party/ffmpeg/libavcodec/avcodec.h index c90166deb67..f85af3f15d7 100644 --- a/chromium/third_party/ffmpeg/libavcodec/avcodec.h +++ b/chromium/third_party/ffmpeg/libavcodec/avcodec.h @@ -637,6 +637,7 @@ enum AVCodecID { AV_CODEC_ID_APTX, AV_CODEC_ID_APTX_HD, AV_CODEC_ID_SBC, + AV_CODEC_ID_ATRAC9, /* subtitle codecs */ AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs. diff --git a/chromium/third_party/ffmpeg/libavcodec/bink.c b/chromium/third_party/ffmpeg/libavcodec/bink.c index c4cf617a8bc..9c17dedcba9 100644 --- a/chromium/third_party/ffmpeg/libavcodec/bink.c +++ b/chromium/third_party/ffmpeg/libavcodec/bink.c @@ -371,11 +371,19 @@ static const uint8_t bink_rlelens[4] = { 4, 8, 12, 32 }; static int read_block_types(AVCodecContext *avctx, GetBitContext *gb, Bundle *b) { + BinkContext * const c = avctx->priv_data; int t, v; int last = 0; const uint8_t *dec_end; CHECK_READ_VAL(gb, b, t); + if (c->version == 'k') { + t ^= 0xBBu; + if (t == 0) { + b->cur_dec = NULL; + return 0; + } + } dec_end = b->cur_dec + t; if (dec_end > b->data_end) { av_log(avctx, AV_LOG_ERROR, "Too many block type values\n"); @@ -994,6 +1002,17 @@ static int bink_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, int bw = is_chroma ? (c->avctx->width + 15) >> 4 : (c->avctx->width + 7) >> 3; int bh = is_chroma ? (c->avctx->height + 15) >> 4 : (c->avctx->height + 7) >> 3; int width = c->avctx->width >> is_chroma; + int height = c->avctx->height >> is_chroma; + + if (c->version == 'k' && get_bits1(gb)) { + int fill = get_bits(gb, 8); + + dst = frame->data[plane_idx]; + + for (i = 0; i < height; i++) + memset(dst + i * stride, fill, width); + goto end; + } init_lengths(c, FFMAX(width, 8), bw); for (i = 0; i < BINK_NB_SRC; i++) @@ -1190,6 +1209,8 @@ static int bink_decode_plane(BinkContext *c, AVFrame *frame, GetBitContext *gb, } } } + +end: if (get_bits_count(gb) & 0x1F) //next plane data starts at 32-bit boundary skip_bits_long(gb, 32 - (get_bits_count(gb) & 0x1F)); @@ -1322,6 +1343,7 @@ static av_cold int decode_init(AVCodecContext *avctx) return ret; avctx->pix_fmt = c->has_alpha ? AV_PIX_FMT_YUVA420P : AV_PIX_FMT_YUV420P; + avctx->color_range = c->version == 'k' ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG; ff_blockdsp_init(&c->bdsp, avctx); ff_hpeldsp_init(&c->hdsp, avctx->flags); diff --git a/chromium/third_party/ffmpeg/libavcodec/cdgraphics.c b/chromium/third_party/ffmpeg/libavcodec/cdgraphics.c index 87ad5e79f44..be85e542887 100644 --- a/chromium/third_party/ffmpeg/libavcodec/cdgraphics.c +++ b/chromium/third_party/ffmpeg/libavcodec/cdgraphics.c @@ -69,6 +69,7 @@ typedef struct CDGraphicsContext { int hscroll; int vscroll; int transparency; + int cleared; } CDGraphicsContext; static av_cold int cdg_decode_init(AVCodecContext *avctx) @@ -287,9 +288,10 @@ static int cdg_decode_frame(AVCodecContext *avctx, if ((ret = ff_reget_buffer(avctx, cc->frame)) < 0) return ret; - if (!avctx->frame_number) { + if (!cc->cleared) { memset(cc->frame->data[0], 0, cc->frame->linesize[0] * avctx->height); memset(cc->frame->data[1], 0, AVPALETTE_SIZE); + cc->cleared = 1; } command = bytestream2_get_byte(&gb); diff --git a/chromium/third_party/ffmpeg/libavcodec/cfhd.c b/chromium/third_party/ffmpeg/libavcodec/cfhd.c index 051d2103557..76838f08699 100644 --- a/chromium/third_party/ffmpeg/libavcodec/cfhd.c +++ b/chromium/third_party/ffmpeg/libavcodec/cfhd.c @@ -79,7 +79,7 @@ static void init_peak_table_defaults(CFHDContext *s) { s->peak.level = 0; s->peak.offset = 0; - s->peak.base = NULL; + memset(&s->peak.base, 0, sizeof(s->peak.base)); } static void init_frame_defaults(CFHDContext *s) @@ -133,7 +133,7 @@ static inline void peak_table(int16_t *band, Peak *peak, int length) int i; for (i = 0; i < length; i++) if (abs(band[i]) > peak->level) - band[i] = *(peak->base++); + band[i] = bytestream2_get_le16(&peak->base); } static inline void process_alpha(int16_t *alpha, int width) @@ -537,16 +537,16 @@ static int cfhd_decode(AVCodecContext *avctx, void *data, int *got_frame, } else if (tag == -75) { s->peak.offset &= ~0xffff; s->peak.offset |= (data & 0xffff); - s->peak.base = (int16_t *) gb.buffer; + s->peak.base = gb; s->peak.level = 0; } else if (tag == -76) { s->peak.offset &= 0xffff; - s->peak.offset |= (data & 0xffff)<<16; - s->peak.base = (int16_t *) gb.buffer; + s->peak.offset |= (data & 0xffffU)<<16; + s->peak.base = gb; s->peak.level = 0; } else if (tag == -74 && s->peak.offset) { s->peak.level = data; - s->peak.base += s->peak.offset / 2 - 2; + bytestream2_seek(&s->peak.base, s->peak.offset - 4, SEEK_CUR); } else av_log(avctx, AV_LOG_DEBUG, "Unknown tag %i data %x\n", tag, data); diff --git a/chromium/third_party/ffmpeg/libavcodec/cfhd.h b/chromium/third_party/ffmpeg/libavcodec/cfhd.h index 7cd251fca71..4f2c82d8bc2 100644 --- a/chromium/third_party/ffmpeg/libavcodec/cfhd.h +++ b/chromium/third_party/ffmpeg/libavcodec/cfhd.h @@ -26,6 +26,7 @@ #include "libavutil/avassert.h" #include "avcodec.h" +#include "bytestream.h" #include "get_bits.h" #include "vlc.h" @@ -71,7 +72,7 @@ typedef struct Plane { typedef struct Peak { int level; int offset; - const int16_t *base; + GetByteContext base; } Peak; typedef struct CFHDContext { diff --git a/chromium/third_party/ffmpeg/libavcodec/codec_desc.c b/chromium/third_party/ffmpeg/libavcodec/codec_desc.c index 36e9a9bbc7a..a126c974e18 100644 --- a/chromium/third_party/ffmpeg/libavcodec/codec_desc.c +++ b/chromium/third_party/ffmpeg/libavcodec/codec_desc.c @@ -2878,6 +2878,13 @@ static const AVCodecDescriptor codec_descriptors[] = { .long_name = NULL_IF_CONFIG_SMALL("SBC (low-complexity subband codec)"), .props = AV_CODEC_PROP_LOSSY, }, + { + .id = AV_CODEC_ID_ATRAC9, + .type = AVMEDIA_TYPE_AUDIO, + .name = "atrac9", + .long_name = NULL_IF_CONFIG_SMALL("ATRAC9 (Adaptive TRansform Acoustic Coding 9)"), + .props = AV_CODEC_PROP_LOSSY, + }, /* subtitle codecs */ { diff --git a/chromium/third_party/ffmpeg/libavcodec/cscd.c b/chromium/third_party/ffmpeg/libavcodec/cscd.c index 35c4ee08c35..5eb511a5659 100644 --- a/chromium/third_party/ffmpeg/libavcodec/cscd.c +++ b/chromium/third_party/ffmpeg/libavcodec/cscd.c @@ -81,7 +81,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, switch ((buf[0] >> 1) & 7) { case 0: { // lzo compression int outlen = c->decomp_size, inlen = buf_size - 2; - if (av_lzo1x_decode(c->decomp_buf, &outlen, &buf[2], &inlen)) { + if (av_lzo1x_decode(c->decomp_buf, &outlen, &buf[2], &inlen) || outlen) { av_log(avctx, AV_LOG_ERROR, "error during lzo decompression\n"); return AVERROR_INVALIDDATA; } diff --git a/chromium/third_party/ffmpeg/libavcodec/decode.c b/chromium/third_party/ffmpeg/libavcodec/decode.c index 421a8f1a357..db364ca700a 100644 --- a/chromium/third_party/ffmpeg/libavcodec/decode.c +++ b/chromium/third_party/ffmpeg/libavcodec/decode.c @@ -36,6 +36,7 @@ #include "libavutil/imgutils.h" #include "libavutil/internal.h" #include "libavutil/intmath.h" +#include "libavutil/opt.h" #include "avcodec.h" #include "bytestream.h" @@ -195,27 +196,33 @@ static int bsfs_init(AVCodecContext *avctx) while (bsfs_str && *bsfs_str) { AVBSFContext **tmp; const AVBitStreamFilter *filter; - char *bsf; + char *bsf, *bsf_options_str, *bsf_name; bsf = av_get_token(&bsfs_str, ","); if (!bsf) { ret = AVERROR(ENOMEM); goto fail; } + bsf_name = av_strtok(bsf, "=", &bsf_options_str); + if (!bsf_name) { + av_freep(&bsf); + ret = AVERROR(ENOMEM); + goto fail; + } - filter = av_bsf_get_by_name(bsf); + filter = av_bsf_get_by_name(bsf_name); if (!filter) { av_log(avctx, AV_LOG_ERROR, "A non-existing bitstream filter %s " "requested by a decoder. This is a bug, please report it.\n", - bsf); - ret = AVERROR_BUG; + bsf_name); av_freep(&bsf); + ret = AVERROR_BUG; goto fail; } - av_freep(&bsf); tmp = av_realloc_array(s->bsfs, s->nb_bsfs + 1, sizeof(*s->bsfs)); if (!tmp) { + av_freep(&bsf); ret = AVERROR(ENOMEM); goto fail; } @@ -223,8 +230,10 @@ static int bsfs_init(AVCodecContext *avctx) s->nb_bsfs++; ret = av_bsf_alloc(filter, &s->bsfs[s->nb_bsfs - 1]); - if (ret < 0) + if (ret < 0) { + av_freep(&bsf); goto fail; + } if (s->nb_bsfs == 1) { /* We do not currently have an API for passing the input timebase into decoders, @@ -238,12 +247,38 @@ static int bsfs_init(AVCodecContext *avctx) ret = avcodec_parameters_copy(s->bsfs[s->nb_bsfs - 1]->par_in, s->bsfs[s->nb_bsfs - 2]->par_out); } - if (ret < 0) + if (ret < 0) { + av_freep(&bsf); goto fail; + } + + if (bsf_options_str && filter->priv_class) { + const AVOption *opt = av_opt_next(s->bsfs[s->nb_bsfs - 1]->priv_data, NULL); + const char * shorthand[2] = {NULL}; + + if (opt) + shorthand[0] = opt->name; + + ret = av_opt_set_from_string(s->bsfs[s->nb_bsfs - 1]->priv_data, bsf_options_str, shorthand, "=", ":"); + if (ret < 0) { + if (ret != AVERROR(ENOMEM)) { + av_log(avctx, AV_LOG_ERROR, "Invalid options for bitstream filter %s " + "requested by the decoder. This is a bug, please report it.\n", + bsf_name); + ret = AVERROR_BUG; + } + av_freep(&bsf); + goto fail; + } + } + av_freep(&bsf); ret = av_bsf_init(s->bsfs[s->nb_bsfs - 1]); if (ret < 0) goto fail; + + if (*bsfs_str) + bsfs_str++; } return 0; @@ -1837,7 +1872,7 @@ static int get_buffer_internal(AVCodecContext *avctx, AVFrame *frame, int flags) int ret; if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { - if ((ret = av_image_check_size2(avctx->width, avctx->height, avctx->max_pixels, AV_PIX_FMT_NONE, 0, avctx)) < 0 || avctx->pix_fmt<0) { + if ((ret = av_image_check_size2(FFALIGN(avctx->width, STRIDE_ALIGN), avctx->height, avctx->max_pixels, AV_PIX_FMT_NONE, 0, avctx)) < 0 || avctx->pix_fmt<0) { av_log(avctx, AV_LOG_ERROR, "video_get_buffer: image parameters invalid\n"); return AVERROR(EINVAL); } diff --git a/chromium/third_party/ffmpeg/libavcodec/dirac_dwt_template.c b/chromium/third_party/ffmpeg/libavcodec/dirac_dwt_template.c index 8c25c1f8228..2369c8d15b5 100644 --- a/chromium/third_party/ffmpeg/libavcodec/dirac_dwt_template.c +++ b/chromium/third_party/ffmpeg/libavcodec/dirac_dwt_template.c @@ -57,8 +57,8 @@ static av_always_inline void RENAME(interleave)(TYPE *dst, TYPE *src0, TYPE *src { int i; for (i = 0; i < w2; i++) { - dst[2*i ] = (src0[i] + add) >> shift; - dst[2*i+1] = (src1[i] + add) >> shift; + dst[2*i ] = ((int)(src0[i] + (unsigned)add)) >> shift; + dst[2*i+1] = ((int)(src1[i] + (unsigned)add)) >> shift; } } diff --git a/chromium/third_party/ffmpeg/libavcodec/dpx.c b/chromium/third_party/ffmpeg/libavcodec/dpx.c index fb388b6e523..cf23bb6ba1f 100644 --- a/chromium/third_party/ffmpeg/libavcodec/dpx.c +++ b/chromium/third_party/ffmpeg/libavcodec/dpx.c @@ -51,7 +51,7 @@ static unsigned int read32(const uint8_t **ptr, int is_big) } static uint16_t read10in32(const uint8_t **ptr, uint32_t * lbuf, - int * n_datum, int is_big) + int * n_datum, int is_big, int shift) { if (*n_datum) (*n_datum)--; @@ -60,7 +60,7 @@ static uint16_t read10in32(const uint8_t **ptr, uint32_t * lbuf, *n_datum = 2; } - *lbuf = (*lbuf << 10) | (*lbuf >> 22); + *lbuf = *lbuf << 10 | *lbuf >> shift & 0x3FFFFF; return *lbuf & 0x3FF; } @@ -170,10 +170,6 @@ static int decode_frame(AVCodecContext *avctx, packing = read16(&buf, endian); encoding = read16(&buf, endian); - if (packing > 1) { - avpriv_report_missing_feature(avctx, "Packing %d", packing); - return AVERROR_PATCHWELCOME; - } if (encoding) { avpriv_report_missing_feature(avctx, "Encoding %d", encoding); return AVERROR_PATCHWELCOME; @@ -232,19 +228,6 @@ static int decode_frame(AVCodecContext *avctx, stride = (avctx->width * elements + 2) / 3 * 4; break; case 12: - if (!packing) { - int tested = 0; - if (descriptor == 50 && endian && (avctx->width%8) == 0) { // Little endian and widths not a multiple of 8 need tests - tested = 1; - } - if (descriptor == 51 && endian && (avctx->width%2) == 0) { // Little endian and widths not a multiple of 2 need tests - tested = 1; - } - if (!tested) { - av_log(avctx, AV_LOG_ERROR, "Packing to 16bit required\n"); - return -1; - } - } stride = avctx->width * elements; if (packing) { stride *= 2; @@ -377,17 +360,18 @@ static int decode_frame(AVCodecContext *avctx, (uint16_t*)ptr[1], (uint16_t*)ptr[2], (uint16_t*)ptr[3]}; + int shift = packing == 1 ? 22 : 20; for (y = 0; y < avctx->width; y++) { *dst[2]++ = read10in32(&buf, &rgbBuffer, - &n_datum, endian); + &n_datum, endian, shift); *dst[0]++ = read10in32(&buf, &rgbBuffer, - &n_datum, endian); + &n_datum, endian, shift); *dst[1]++ = read10in32(&buf, &rgbBuffer, - &n_datum, endian); + &n_datum, endian, shift); if (elements == 4) *dst[3]++ = read10in32(&buf, &rgbBuffer, - &n_datum, endian); + &n_datum, endian, shift); } n_datum = 0; for (i = 0; i < elements; i++) @@ -400,28 +384,31 @@ static int decode_frame(AVCodecContext *avctx, (uint16_t*)ptr[1], (uint16_t*)ptr[2], (uint16_t*)ptr[3]}; + int shift = packing == 1 ? 4 : 0; for (y = 0; y < avctx->width; y++) { if (packing) { - if (elements >= 3) - *dst[2]++ = read16(&buf, endian) >> 4; - *dst[0] = read16(&buf, endian) >> 4; - dst[0]++; - if (elements >= 2) - *dst[1]++ = read16(&buf, endian) >> 4; - if (elements == 4) - *dst[3]++ = read16(&buf, endian) >> 4; + if (elements >= 3) + *dst[2]++ = read16(&buf, endian) >> shift & 0xFFF; + *dst[0]++ = read16(&buf, endian) >> shift & 0xFFF; + if (elements >= 2) + *dst[1]++ = read16(&buf, endian) >> shift & 0xFFF; + if (elements == 4) + *dst[3]++ = read16(&buf, endian) >> shift & 0xFFF; } else { - *dst[2]++ = read12in32(&buf, &rgbBuffer, - &n_datum, endian); + if (elements >= 3) + *dst[2]++ = read12in32(&buf, &rgbBuffer, + &n_datum, endian); *dst[0]++ = read12in32(&buf, &rgbBuffer, &n_datum, endian); - *dst[1]++ = read12in32(&buf, &rgbBuffer, - &n_datum, endian); + if (elements >= 2) + *dst[1]++ = read12in32(&buf, &rgbBuffer, + &n_datum, endian); if (elements == 4) *dst[3]++ = read12in32(&buf, &rgbBuffer, &n_datum, endian); } } + n_datum = 0; for (i = 0; i < elements; i++) ptr[i] += p->linesize[i]; // Jump to next aligned position diff --git a/chromium/third_party/ffmpeg/libavcodec/dvbsub_parser.c b/chromium/third_party/ffmpeg/libavcodec/dvbsub_parser.c index e77b9655cca..8ced3c4c340 100644 --- a/chromium/third_party/ffmpeg/libavcodec/dvbsub_parser.c +++ b/chromium/third_party/ffmpeg/libavcodec/dvbsub_parser.c @@ -57,6 +57,7 @@ static int dvbsub_parse(AVCodecParserContext *s, DVBSubParseContext *pc = s->priv_data; uint8_t *p, *p_end; int i, len, buf_pos = 0; + int out_size = 0; ff_dlog(avctx, "DVB parse packet pts=%"PRIx64", lpts=%"PRIx64", cpts=%"PRIx64":\n", s->pts, s->last_pts, s->cur_frame_pts[s->cur_frame_start_index]); @@ -71,8 +72,8 @@ static int dvbsub_parse(AVCodecParserContext *s, if (i % 16 != 0) ff_dlog(avctx, "\n"); - *poutbuf = NULL; - *poutbuf_size = 0; + *poutbuf = buf; + *poutbuf_size = buf_size; s->fetch_timestamp = 1; @@ -89,7 +90,7 @@ static int dvbsub_parse(AVCodecParserContext *s, if (buf_size < 2 || buf[0] != 0x20 || buf[1] != 0x00) { ff_dlog(avctx, "Bad packet header\n"); - return -1; + return buf_size; } buf_pos = 2; @@ -113,9 +114,9 @@ static int dvbsub_parse(AVCodecParserContext *s, } if (buf_size - buf_pos + pc->packet_index > PARSE_BUF_SIZE) - return -1; + return buf_size; -/* if not currently in a packet, discard data */ +/* if not currently in a packet, pass data */ if (pc->in_packet == 0) return buf_size; @@ -135,7 +136,7 @@ static int dvbsub_parse(AVCodecParserContext *s, if (len + 6 <= p_end - p) { - *poutbuf_size += len + 6; + out_size += len + 6; p += len + 6; } else @@ -159,9 +160,10 @@ static int dvbsub_parse(AVCodecParserContext *s, } } - if (*poutbuf_size > 0) + if (out_size > 0) { *poutbuf = pc->packet_buf; + *poutbuf_size = out_size; pc->packet_start = *poutbuf_size; } diff --git a/chromium/third_party/ffmpeg/libavcodec/dvbsubdec.c b/chromium/third_party/ffmpeg/libavcodec/dvbsubdec.c index a657b1d3d0f..b59e8366570 100644 --- a/chromium/third_party/ffmpeg/libavcodec/dvbsubdec.c +++ b/chromium/third_party/ffmpeg/libavcodec/dvbsubdec.c @@ -127,6 +127,7 @@ typedef struct DVBSubContext { int compute_edt; /**< if 1 end display time calculated using pts if 0 (Default) calculated using time out */ int compute_clut; + int clut_count2[257][256]; int substream; int64_t prev_start; DVBSubRegion *region_list; @@ -650,13 +651,17 @@ static int dvbsub_read_8bit_string(AVCodecContext *avctx, return pixels_read; } -static void compute_default_clut(uint8_t *clut, AVSubtitleRect *rect, int w, int h) +static void compute_default_clut(DVBSubContext *ctx, uint8_t *clut, AVSubtitleRect *rect, int w, int h) { uint8_t list[256] = {0}; uint8_t list_inv[256]; int counttab[256] = {0}; + int (*counttab2)[256] = ctx->clut_count2; int count, i, x, y; ptrdiff_t stride = rect->linesize[0]; + + memset(ctx->clut_count2, 0 , sizeof(ctx->clut_count2)); + #define V(x,y) rect->data[0][(x) + (y)*stride] for (y = 0; y<h; y++) { for (x = 0; x<w; x++) { @@ -666,31 +671,32 @@ static void compute_default_clut(uint8_t *clut, AVSubtitleRect *rect, int w, int int vt = y ? V(x,y-1) + 1 : 0; int vb = y+1<h ? V(x,y+1) + 1 : 0; counttab[v-1] += !!((v!=vl) + (v!=vr) + (v!=vt) + (v!=vb)); + counttab2[vl][v-1] ++; + counttab2[vr][v-1] ++; + counttab2[vt][v-1] ++; + counttab2[vb][v-1] ++; } } #define L(x,y) list[d[(x) + (y)*stride]] for (i = 0; i<256; i++) { - int scoretab[256] = {0}; + counttab2[i+1][i] = 0; + } + for (i = 0; i<256; i++) { int bestscore = 0; int bestv = 0; - for (y = 0; y<h; y++) { - for (x = 0; x<w; x++) { - uint8_t *d = &rect->data[0][x + y*stride]; - int v = *d; - int l_m = list[v]; - int l_l = x ? L(-1, 0) : 1; - int l_r = x+1<w ? L( 1, 0) : 1; - int l_t = y ? L( 0,-1) : 1; - int l_b = y+1<h ? L( 0, 1) : 1; - if (l_m) - continue; - scoretab[v] += l_l + l_r + l_t + l_b; - } - } + for (x = 0; x < 256; x++) { - if (scoretab[x]) { - int score = 1024LL*scoretab[x] / counttab[x]; + int scorev = 0; + if (list[x]) + continue; + scorev += counttab2[0][x]; + for (y = 0; y < 256; y++) { + scorev += list[y] * counttab2[y+1][x]; + } + + if (scorev) { + int score = 1024LL*scorev / counttab[x]; if (score > bestscore) { bestscore = score; bestv = x; @@ -819,7 +825,7 @@ static int save_subtitle_set(AVCodecContext *avctx, AVSubtitle *sub, int *got_ou if ((clut == &default_clut && ctx->compute_clut == -1) || ctx->compute_clut == 1) { if (!region->has_computed_clut) { - compute_default_clut(region->computed_clut, rect, rect->w, rect->h); + compute_default_clut(ctx, region->computed_clut, rect, rect->w, rect->h); region->has_computed_clut = 1; } diff --git a/chromium/third_party/ffmpeg/libavcodec/dvdsub_parser.c b/chromium/third_party/ffmpeg/libavcodec/dvdsub_parser.c index 32a945ed653..698ccb6987c 100644 --- a/chromium/third_party/ffmpeg/libavcodec/dvdsub_parser.c +++ b/chromium/third_party/ffmpeg/libavcodec/dvdsub_parser.c @@ -44,6 +44,9 @@ static int dvdsub_parse(AVCodecParserContext *s, { DVDSubParseContext *pc = s->priv_data; + *poutbuf = buf; + *poutbuf_size = buf_size; + if (pc->packet_index == 0) { if (buf_size < 2 || AV_RB16(buf) && buf_size < 6) { if (buf_size) @@ -54,7 +57,11 @@ static int dvdsub_parse(AVCodecParserContext *s, if (pc->packet_len == 0) /* HD-DVD subpicture packet */ pc->packet_len = AV_RB32(buf+2); av_freep(&pc->packet); - pc->packet = av_malloc(pc->packet_len); + if ((unsigned)pc->packet_len > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) { + av_log(avctx, AV_LOG_ERROR, "packet length %d is invalid\n", pc->packet_len); + return buf_size; + } + pc->packet = av_malloc(pc->packet_len + AV_INPUT_BUFFER_PADDING_SIZE); } if (pc->packet) { if (pc->packet_index + buf_size <= pc->packet_len) { diff --git a/chromium/third_party/ffmpeg/libavcodec/dvdsubdec.c b/chromium/third_party/ffmpeg/libavcodec/dvdsubdec.c index e18113c20c0..f1ac9e353e3 100644 --- a/chromium/third_party/ffmpeg/libavcodec/dvdsubdec.c +++ b/chromium/third_party/ffmpeg/libavcodec/dvdsubdec.c @@ -42,6 +42,7 @@ typedef struct DVDSubContext uint8_t buf[0x10000]; int buf_size; int forced_subs_only; + uint8_t used_color[256]; #ifdef DEBUG int sub_id; #endif @@ -100,7 +101,7 @@ static int decode_run_8bit(GetBitContext *gb, int *color) return len; } -static int decode_rle(uint8_t *bitmap, int linesize, int w, int h, +static int decode_rle(uint8_t *bitmap, int linesize, int w, int h, uint8_t used_color[256], const uint8_t *buf, int start, int buf_size, int is_8bit) { GetBitContext gb; @@ -129,6 +130,7 @@ static int decode_rle(uint8_t *bitmap, int linesize, int w, int h, len = decode_run_2bit(&gb, &color); len = FFMIN(len, w - x); memset(d + x, color, len); + used_color[color] = 1; x += len; if (x >= w) { y++; @@ -370,7 +372,7 @@ static int decode_dvd_subtitles(DVDSubContext *ctx, AVSubtitle *sub_header, h = 0; if (w > 0 && h > 1) { reset_rects(sub_header); - + memset(ctx->used_color, 0, sizeof(ctx->used_color)); sub_header->rects = av_mallocz(sizeof(*sub_header->rects)); if (!sub_header->rects) goto fail; @@ -381,10 +383,10 @@ static int decode_dvd_subtitles(DVDSubContext *ctx, AVSubtitle *sub_header, bitmap = sub_header->rects[0]->data[0] = av_malloc(w * h); if (!bitmap) goto fail; - if (decode_rle(bitmap, w * 2, w, (h + 1) / 2, + if (decode_rle(bitmap, w * 2, w, (h + 1) / 2, ctx->used_color, buf, offset1, buf_size, is_8bit) < 0) goto fail; - if (decode_rle(bitmap + w, w * 2, w, h / 2, + if (decode_rle(bitmap + w, w * 2, w, h / 2, ctx->used_color, buf, offset2, buf_size, is_8bit) < 0) goto fail; sub_header->rects[0]->data[1] = av_mallocz(AVPALETTE_SIZE); @@ -448,19 +450,24 @@ static int is_transp(const uint8_t *buf, int pitch, int n, } /* return 0 if empty rectangle, 1 if non empty */ -static int find_smallest_bounding_rectangle(AVSubtitle *s) +static int find_smallest_bounding_rectangle(DVDSubContext *ctx, AVSubtitle *s) { uint8_t transp_color[256] = { 0 }; int y1, y2, x1, x2, y, w, h, i; uint8_t *bitmap; + int transparent = 1; if (s->num_rects == 0 || !s->rects || s->rects[0]->w <= 0 || s->rects[0]->h <= 0) return 0; for(i = 0; i < s->rects[0]->nb_colors; i++) { - if ((((uint32_t *)s->rects[0]->data[1])[i] >> 24) == 0) + if ((((uint32_t *)s->rects[0]->data[1])[i] >> 24) == 0) { transp_color[i] = 1; + } else if (ctx->used_color[i]) + transparent = 0; } + if (transparent) + return 0; y1 = 0; while (y1 < s->rects[0]->h && is_transp(s->rects[0]->data[0] + y1 * s->rects[0]->linesize[0], 1, s->rects[0]->w, transp_color)) @@ -595,7 +602,7 @@ static int dvdsub_decode(AVCodecContext *avctx, return buf_size; } - if (!is_menu && find_smallest_bounding_rectangle(sub) == 0) + if (!is_menu && find_smallest_bounding_rectangle(ctx, sub) == 0) goto no_subtitle; if (ctx->forced_subs_only && !(sub->rects[0]->flags & AV_SUBTITLE_FLAG_FORCED)) diff --git a/chromium/third_party/ffmpeg/libavcodec/dvdsubenc.c b/chromium/third_party/ffmpeg/libavcodec/dvdsubenc.c index 26afdc666b4..ff95ed20026 100644 --- a/chromium/third_party/ffmpeg/libavcodec/dvdsubenc.c +++ b/chromium/third_party/ffmpeg/libavcodec/dvdsubenc.c @@ -438,7 +438,7 @@ static int dvdsub_init(AVCodecContext *avctx) av_assert0(sizeof(dvdc->global_palette) == sizeof(default_palette)); memcpy(dvdc->global_palette, default_palette, sizeof(dvdc->global_palette)); - av_bprint_init(&extradata, 0, 1); + av_bprint_init(&extradata, 0, AV_BPRINT_SIZE_AUTOMATIC); if (avctx->width && avctx->height) av_bprintf(&extradata, "size: %dx%d\n", avctx->width, avctx->height); av_bprintf(&extradata, "palette:"); diff --git a/chromium/third_party/ffmpeg/libavcodec/error_resilience.c b/chromium/third_party/ffmpeg/libavcodec/error_resilience.c index 339042e2069..1abae53f41d 100644 --- a/chromium/third_party/ffmpeg/libavcodec/error_resilience.c +++ b/chromium/third_party/ffmpeg/libavcodec/error_resilience.c @@ -814,8 +814,7 @@ static int er_supported(ERContext *s) { if(s->avctx->hwaccel && s->avctx->hwaccel->decode_slice || !s->cur_pic.f || - s->cur_pic.field_picture || - s->avctx->profile == FF_PROFILE_MPEG4_SIMPLE_STUDIO + s->cur_pic.field_picture ) return 0; return 1; diff --git a/chromium/third_party/ffmpeg/libavcodec/escape124.c b/chromium/third_party/ffmpeg/libavcodec/escape124.c index eb051eba54a..cffd3e12b1a 100644 --- a/chromium/third_party/ffmpeg/libavcodec/escape124.c +++ b/chromium/third_party/ffmpeg/libavcodec/escape124.c @@ -221,7 +221,11 @@ static int escape124_decode_frame(AVCodecContext *avctx, // This call also guards the potential depth reads for the // codebook unpacking. - if (get_bits_left(&gb) < 64) + // Check if the amount we will read minimally is available on input. + // The 64 represent the immediately next 2 frame_* elements read, the 23/4320 + // represent a lower bound of the space needed for skipped superblocks. Non + // skipped SBs need more space. + if (get_bits_left(&gb) < 64 + s->num_superblocks * 23LL / 4320) return -1; frame_flags = get_bits_long(&gb, 32); diff --git a/chromium/third_party/ffmpeg/libavcodec/extract_extradata_bsf.c b/chromium/third_party/ffmpeg/libavcodec/extract_extradata_bsf.c index 082b3e749bc..6deb6634f38 100644 --- a/chromium/third_party/ffmpeg/libavcodec/extract_extradata_bsf.c +++ b/chromium/third_party/ffmpeg/libavcodec/extract_extradata_bsf.c @@ -24,6 +24,8 @@ #include "libavutil/opt.h" #include "avcodec.h" +#include "av1.h" +#include "av1_parse.h" #include "bsf.h" #include "h2645_parse.h" #include "h264.h" @@ -36,6 +38,9 @@ typedef struct ExtractExtradataContext { int (*extract)(AVBSFContext *ctx, AVPacket *pkt, uint8_t **data, int *size); + /* AV1 specifc fields */ + AV1Packet av1_pkt; + /* H264/HEVC specifc fields */ H2645Packet h2645_pkt; @@ -52,6 +57,80 @@ static int val_in_array(const int *arr, int len, int val) return 0; } +static int extract_extradata_av1(AVBSFContext *ctx, AVPacket *pkt, + uint8_t **data, int *size) +{ + static const int extradata_obu_types[] = { + AV1_OBU_SEQUENCE_HEADER, AV1_OBU_METADATA, + }; + ExtractExtradataContext *s = ctx->priv_data; + + int extradata_size = 0, filtered_size = 0; + int nb_extradata_obu_types = FF_ARRAY_ELEMS(extradata_obu_types); + int i, has_seq = 0, ret = 0; + + ret = ff_av1_packet_split(&s->av1_pkt, pkt->data, pkt->size, ctx); + if (ret < 0) + return ret; + + for (i = 0; i < s->av1_pkt.nb_obus; i++) { + AV1OBU *obu = &s->av1_pkt.obus[i]; + if (val_in_array(extradata_obu_types, nb_extradata_obu_types, obu->type)) { + extradata_size += obu->raw_size; + if (obu->type == AV1_OBU_SEQUENCE_HEADER) + has_seq = 1; + } else if (s->remove) { + filtered_size += obu->raw_size; + } + } + + if (extradata_size && has_seq) { + AVBufferRef *filtered_buf; + uint8_t *extradata, *filtered_data; + + if (s->remove) { + filtered_buf = av_buffer_alloc(filtered_size + AV_INPUT_BUFFER_PADDING_SIZE); + if (!filtered_buf) { + return AVERROR(ENOMEM); + } + memset(filtered_buf->data + filtered_size, 0, AV_INPUT_BUFFER_PADDING_SIZE); + + filtered_data = filtered_buf->data; + } + + extradata = av_malloc(extradata_size + AV_INPUT_BUFFER_PADDING_SIZE); + if (!extradata) { + av_buffer_unref(&filtered_buf); + return AVERROR(ENOMEM); + } + memset(extradata + extradata_size, 0, AV_INPUT_BUFFER_PADDING_SIZE); + + *data = extradata; + *size = extradata_size; + + for (i = 0; i < s->av1_pkt.nb_obus; i++) { + AV1OBU *obu = &s->av1_pkt.obus[i]; + if (val_in_array(extradata_obu_types, nb_extradata_obu_types, + obu->type)) { + memcpy(extradata, obu->raw_data, obu->raw_size); + extradata += obu->raw_size; + } else if (s->remove) { + memcpy(filtered_data, obu->raw_data, obu->raw_size); + filtered_data += obu->raw_size; + } + } + + if (s->remove) { + av_buffer_unref(&pkt->buf); + pkt->buf = filtered_buf; + pkt->data = filtered_buf->data; + pkt->size = filtered_size; + } + } + + return 0; +} + static int extract_extradata_h2645(AVBSFContext *ctx, AVPacket *pkt, uint8_t **data, int *size) { @@ -251,6 +330,7 @@ static const struct { int (*extract)(AVBSFContext *ctx, AVPacket *pkt, uint8_t **data, int *size); } extract_tab[] = { + { AV_CODEC_ID_AV1, extract_extradata_av1 }, { AV_CODEC_ID_CAVS, extract_extradata_mpeg4 }, { AV_CODEC_ID_H264, extract_extradata_h2645 }, { AV_CODEC_ID_HEVC, extract_extradata_h2645 }, @@ -311,10 +391,12 @@ fail: static void extract_extradata_close(AVBSFContext *ctx) { ExtractExtradataContext *s = ctx->priv_data; + ff_av1_packet_uninit(&s->av1_pkt); ff_h2645_packet_uninit(&s->h2645_pkt); } static const enum AVCodecID codec_ids[] = { + AV_CODEC_ID_AV1, AV_CODEC_ID_CAVS, AV_CODEC_ID_H264, AV_CODEC_ID_HEVC, diff --git a/chromium/third_party/ffmpeg/libavcodec/fft_template.c b/chromium/third_party/ffmpeg/libavcodec/fft_template.c index 6c77854e411..762c014bc8b 100644 --- a/chromium/third_party/ffmpeg/libavcodec/fft_template.c +++ b/chromium/third_party/ffmpeg/libavcodec/fft_template.c @@ -523,9 +523,11 @@ static void name(FFTComplex *z, const FFTSample *wre, unsigned int n)\ } PASS(pass) +#if !CONFIG_SMALL #undef BUTTERFLIES #define BUTTERFLIES BUTTERFLIES_BIG PASS(pass_big) +#endif #define DECL_FFT(n,n2,n4)\ static void fft##n(FFTComplex *z)\ diff --git a/chromium/third_party/ffmpeg/libavcodec/ffv1dec.c b/chromium/third_party/ffmpeg/libavcodec/ffv1dec.c index 7658a516850..261e0cf70c2 100644 --- a/chromium/third_party/ffmpeg/libavcodec/ffv1dec.c +++ b/chromium/third_party/ffmpeg/libavcodec/ffv1dec.c @@ -546,8 +546,14 @@ static int read_header(FFV1Context *f) f->ac = get_symbol(c, state, 0); if (f->ac == AC_RANGE_CUSTOM_TAB) { - for (i = 1; i < 256; i++) - f->state_transition[i] = get_symbol(c, state, 1) + c->one_state[i]; + for (i = 1; i < 256; i++) { + int st = get_symbol(c, state, 1) + c->one_state[i]; + if (st < 1 || st > 255) { + av_log(f->avctx, AV_LOG_ERROR, "invalid state transition %d\n", st); + return AVERROR_INVALIDDATA; + } + f->state_transition[i] = st; + } } colorspace = get_symbol(c, state, 0); //YUV cs type diff --git a/chromium/third_party/ffmpeg/libavcodec/ffv1enc.c b/chromium/third_party/ffmpeg/libavcodec/ffv1enc.c index e6f4422fa1c..f5eb0feb4ec 100644 --- a/chromium/third_party/ffmpeg/libavcodec/ffv1enc.c +++ b/chromium/third_party/ffmpeg/libavcodec/ffv1enc.c @@ -123,7 +123,7 @@ static const uint8_t ver2_state[256] = { 40, 40, 41, 79, 43, 44, 45, 45, 48, 48, 64, 50, 51, 52, 88, 52, 53, 74, 55, 57, 58, 58, 74, 60, 101, 61, 62, 84, 66, 66, 68, 69, 87, 82, 71, 97, 73, 73, 82, 75, 111, 77, 94, 78, 87, 81, 83, 97, - 85, 83, 94, 86, 99, 89, 90, 99, 111, 92, 93, 134, 95, 98, 105, 98, + 85, 83, 94, 86, 99, 89, 90, 99, 111, 92, 93, 134, 95, 98, 105, 98, 105, 110, 102, 108, 102, 118, 103, 106, 106, 113, 109, 112, 114, 112, 116, 125, 115, 116, 117, 117, 126, 119, 125, 121, 121, 123, 145, 124, 126, 131, 127, 129, 165, 130, 132, 138, 133, 135, 145, 136, 137, 139, 146, 141, 143, 142, 144, 148, diff --git a/chromium/third_party/ffmpeg/libavcodec/h263dec.c b/chromium/third_party/ffmpeg/libavcodec/h263dec.c index d38a664497d..248e548e046 100644 --- a/chromium/third_party/ffmpeg/libavcodec/h263dec.c +++ b/chromium/third_party/ffmpeg/libavcodec/h263dec.c @@ -47,7 +47,7 @@ static enum AVPixelFormat h263_get_format(AVCodecContext *avctx) { /* MPEG-4 Studio Profile only, not supported by hardware */ if (avctx->bits_per_raw_sample > 8) { - av_assert1(avctx->profile == FF_PROFILE_MPEG4_SIMPLE_STUDIO); + av_assert1(((MpegEncContext *)avctx->priv_data)->studio_profile); return avctx->pix_fmt; } @@ -668,7 +668,8 @@ retry: av_assert1(s->bitstream_buffer_size == 0); frame_end: - ff_er_frame_end(&s->er); + if (!s->studio_profile) + ff_er_frame_end(&s->er); if (avctx->hwaccel) { ret = avctx->hwaccel->end_frame(avctx); diff --git a/chromium/third_party/ffmpeg/libavcodec/h264_parser.c b/chromium/third_party/ffmpeg/libavcodec/h264_parser.c index 006d9120255..8e269f6218c 100644 --- a/chromium/third_party/ffmpeg/libavcodec/h264_parser.c +++ b/chromium/third_party/ffmpeg/libavcodec/h264_parser.c @@ -119,20 +119,23 @@ static int h264_find_frame_end(H264ParseContext *p, const uint8_t *buf, } state = 7; } else { + unsigned int mb, last_mb = p->parse_last_mb; + GetBitContext gb; p->parse_history[p->parse_history_count++] = buf[i]; - if (p->parse_history_count > 5) { - unsigned int mb, last_mb = p->parse_last_mb; - GetBitContext gb; - init_get_bits(&gb, p->parse_history, 8*p->parse_history_count); - p->parse_history_count = 0; - mb= get_ue_golomb_long(&gb); + init_get_bits(&gb, p->parse_history, 8*p->parse_history_count); + mb= get_ue_golomb_long(&gb); + if (get_bits_left(&gb) > 0 || p->parse_history_count > 5) { p->parse_last_mb = mb; if (pc->frame_start_found) { - if (mb <= last_mb) + if (mb <= last_mb) { + i -= p->parse_history_count - 1; + p->parse_history_count = 0; goto found; + } } else pc->frame_start_found = 1; + p->parse_history_count = 0; state = 7; } } @@ -147,7 +150,7 @@ found: pc->frame_start_found = 0; if (p->is_avc) return next_avc; - return i - (state & 5) - 5 * (state > 7); + return i - (state & 5); } static int scan_mmco_reset(AVCodecParserContext *s, GetBitContext *gb, diff --git a/chromium/third_party/ffmpeg/libavcodec/h264_slice.c b/chromium/third_party/ffmpeg/libavcodec/h264_slice.c index d71ddbe9ba4..ede9a1a6ea7 100644 --- a/chromium/third_party/ffmpeg/libavcodec/h264_slice.c +++ b/chromium/third_party/ffmpeg/libavcodec/h264_slice.c @@ -1407,6 +1407,11 @@ static int h264_field_start(H264Context *h, const H264SliceContext *sl, sps = h->ps.sps; + if (sps && sps->bitstream_restriction_flag && + h->avctx->has_b_frames < sps->num_reorder_frames) { + h->avctx->has_b_frames = sps->num_reorder_frames; + } + last_pic_droppable = h->droppable; last_pic_structure = h->picture_structure; h->droppable = (nal->ref_idc == 0); diff --git a/chromium/third_party/ffmpeg/libavcodec/hevc_ps.c b/chromium/third_party/ffmpeg/libavcodec/hevc_ps.c index bca3abb0211..fbd9fbfd09c 100644 --- a/chromium/third_party/ffmpeg/libavcodec/hevc_ps.c +++ b/chromium/third_party/ffmpeg/libavcodec/hevc_ps.c @@ -1094,11 +1094,9 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, decode_vui(gb, avctx, apply_defdispwin, sps); if (get_bits1(gb)) { // sps_extension_flag - int sps_extension_flag[1]; - for (i = 0; i < 1; i++) - sps_extension_flag[i] = get_bits1(gb); + int sps_range_extension_flag = get_bits1(gb); skip_bits(gb, 7); //sps_extension_7bits = get_bits(gb, 7); - if (sps_extension_flag[0]) { + if (sps_range_extension_flag) { int extended_precision_processing_flag; int cabac_bypass_alignment_enabled_flag; @@ -1681,7 +1679,7 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx, if (get_bits1(gb)) { // pps_extension_present_flag int pps_range_extensions_flag = get_bits1(gb); - /* int pps_extension_7bits = */ get_bits(gb, 7); + skip_bits(gb, 7); // pps_extension_7bits if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_REXT && pps_range_extensions_flag) { if ((ret = pps_range_extensions(gb, avctx, pps, sps)) < 0) goto err; diff --git a/chromium/third_party/ffmpeg/libavcodec/indeo4.c b/chromium/third_party/ffmpeg/libavcodec/indeo4.c index 7dff9db8771..15ad6f8afc6 100644 --- a/chromium/third_party/ffmpeg/libavcodec/indeo4.c +++ b/chromium/third_party/ffmpeg/libavcodec/indeo4.c @@ -492,6 +492,11 @@ static int decode_mb_info(IVI45DecContext *ctx, IVIBandDesc *band, mb->b_mv_x = mb->b_mv_y = 0; + if (get_bits_left(&ctx->gb) < 1) { + av_log(avctx, AV_LOG_ERROR, "Insufficient input for mb info\n"); + return AVERROR_INVALIDDATA; + } + if (get_bits1(&ctx->gb)) { if (ctx->frame_type == IVI4_FRAMETYPE_INTRA) { av_log(avctx, AV_LOG_ERROR, "Empty macroblock in an INTRA picture!\n"); diff --git a/chromium/third_party/ffmpeg/libavcodec/internal.h b/chromium/third_party/ffmpeg/libavcodec/internal.h index bb92873d7b8..0c2133f0925 100644 --- a/chromium/third_party/ffmpeg/libavcodec/internal.h +++ b/chromium/third_party/ffmpeg/libavcodec/internal.h @@ -83,7 +83,7 @@ #define FF_QSCALE_TYPE_H264 2 #define FF_QSCALE_TYPE_VP56 3 -#define FF_SANE_NB_CHANNELS 64U +#define FF_SANE_NB_CHANNELS 256U #define FF_SIGNBIT(x) ((x) >> CHAR_BIT * sizeof(x) - 1) diff --git a/chromium/third_party/ffmpeg/libavcodec/jpeg2000dec.c b/chromium/third_party/ffmpeg/libavcodec/jpeg2000dec.c index 66f11bb2b25..96dab8e1766 100644 --- a/chromium/third_party/ffmpeg/libavcodec/jpeg2000dec.c +++ b/chromium/third_party/ffmpeg/libavcodec/jpeg2000dec.c @@ -343,7 +343,10 @@ static int get_siz(Jpeg2000DecoderContext *s) s->numXtiles = ff_jpeg2000_ceildiv(s->width - s->tile_offset_x, s->tile_width); s->numYtiles = ff_jpeg2000_ceildiv(s->height - s->tile_offset_y, s->tile_height); - if (s->numXtiles * (uint64_t)s->numYtiles > INT_MAX/sizeof(*s->tile)) { + // There must be at least a SOT and SOD per tile, their minimum size is 14 + if (s->numXtiles * (uint64_t)s->numYtiles > INT_MAX/sizeof(*s->tile) || + s->numXtiles * s->numYtiles * 14LL > bytestream2_size(&s->g) + ) { s->numXtiles = s->numYtiles = 0; return AVERROR(EINVAL); } @@ -1251,10 +1254,10 @@ static int jpeg2000_decode_packets_po_iteration(Jpeg2000DecoderContext *s, Jpeg2 if (reslevelno >= codsty->nreslevels) continue; - if (yc % (1 << (rlevel->log2_prec_height + reducedresno)) && y != tile->coord[1][0]) //FIXME this is a subset of the check + if (yc % (1LL << (rlevel->log2_prec_height + reducedresno)) && y != tile->coord[1][0]) //FIXME this is a subset of the check continue; - if (xc % (1 << (rlevel->log2_prec_width + reducedresno)) && x != tile->coord[0][0]) //FIXME this is a subset of the check + if (xc % (1LL << (rlevel->log2_prec_width + reducedresno)) && x != tile->coord[0][0]) //FIXME this is a subset of the check continue; // check if a precinct exists @@ -1322,10 +1325,10 @@ static int jpeg2000_decode_packets_po_iteration(Jpeg2000DecoderContext *s, Jpeg2 uint8_t reducedresno = codsty->nreslevels - 1 -reslevelno; // ==> N_L - r Jpeg2000ResLevel *rlevel = comp->reslevel + reslevelno; - if (yc % (1 << (rlevel->log2_prec_height + reducedresno)) && y != tile->coord[1][0]) //FIXME this is a subset of the check + if (yc % (1LL << (rlevel->log2_prec_height + reducedresno)) && y != tile->coord[1][0]) //FIXME this is a subset of the check continue; - if (xc % (1 << (rlevel->log2_prec_width + reducedresno)) && x != tile->coord[0][0]) //FIXME this is a subset of the check + if (xc % (1LL << (rlevel->log2_prec_width + reducedresno)) && x != tile->coord[0][0]) //FIXME this is a subset of the check continue; // check if a precinct exists diff --git a/chromium/third_party/ffmpeg/libavcodec/lagarith.c b/chromium/third_party/ffmpeg/libavcodec/lagarith.c index 0f4aa89486e..510a6ff2d6a 100644 --- a/chromium/third_party/ffmpeg/libavcodec/lagarith.c +++ b/chromium/third_party/ffmpeg/libavcodec/lagarith.c @@ -141,6 +141,7 @@ static int lag_read_prob_header(lag_rac *rac, GetBitContext *gb) unsigned prob, cumulative_target; unsigned cumul_prob = 0; unsigned scaled_cumul_prob = 0; + int nnz = 0; rac->prob[0] = 0; rac->prob[257] = UINT_MAX; @@ -164,6 +165,8 @@ static int lag_read_prob_header(lag_rac *rac, GetBitContext *gb) prob = 256 - i; for (j = 0; j < prob; j++) rac->prob[++i] = 0; + }else { + nnz++; } } @@ -172,6 +175,10 @@ static int lag_read_prob_header(lag_rac *rac, GetBitContext *gb) return -1; } + if (nnz == 1 && (show_bits_long(gb, 32) & 0xFFFFFF)) { + return AVERROR_INVALIDDATA; + } + /* Scale probabilities so cumulative probability is an even power of 2. */ scale_factor = av_log2(cumul_prob); @@ -534,7 +541,7 @@ static int lag_decode_frame(AVCodecContext *avctx, LagarithContext *l = avctx->priv_data; ThreadFrame frame = { .f = data }; AVFrame *const p = data; - uint8_t frametype = 0; + uint8_t frametype; uint32_t offset_gu = 0, offset_bv = 0, offset_ry = 9; uint32_t offs[4]; uint8_t *srcs[4], *dst; diff --git a/chromium/third_party/ffmpeg/libavcodec/libaomenc.c b/chromium/third_party/ffmpeg/libavcodec/libaomenc.c index 41b05dc1c05..0b75dc139ce 100644 --- a/chromium/third_party/ffmpeg/libavcodec/libaomenc.c +++ b/chromium/third_party/ffmpeg/libavcodec/libaomenc.c @@ -55,6 +55,7 @@ struct FrameListData { typedef struct AOMEncoderContext { AVClass *class; + AVBSFContext *bsf; struct aom_codec_ctx encoder; struct aom_image rawimg; struct aom_fixed_buf twopass_stats; @@ -202,6 +203,7 @@ static av_cold int aom_free(AVCodecContext *avctx) av_freep(&ctx->twopass_stats.buf); av_freep(&avctx->stats_out); free_frame_list(ctx->coded_frame_list); + av_bsf_free(&ctx->bsf); return 0; } @@ -463,6 +465,28 @@ static av_cold int aom_init(AVCodecContext *avctx, if (!cpb_props) return AVERROR(ENOMEM); + if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { + const AVBitStreamFilter *filter = av_bsf_get_by_name("extract_extradata"); + int ret; + + if (!filter) { + av_log(avctx, AV_LOG_ERROR, "extract_extradata bitstream filter " + "not found. This is a bug, please report it.\n"); + return AVERROR_BUG; + } + ret = av_bsf_alloc(filter, &ctx->bsf); + if (ret < 0) + return ret; + + ret = avcodec_parameters_from_context(ctx->bsf->par_in, avctx); + if (ret < 0) + return ret; + + ret = av_bsf_init(ctx->bsf); + if (ret < 0) + return ret; + } + if (enccfg.rc_end_usage == AOM_CBR || enccfg.g_pass != AOM_RC_ONE_PASS) { cpb_props->max_bitrate = avctx->rc_max_rate; @@ -494,6 +518,7 @@ static inline void cx_pktcpy(struct FrameListData *dst, static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, AVPacket *pkt) { + AOMContext *ctx = avctx->priv_data; int ret = ff_alloc_packet2(avctx, pkt, cx_frame->sz, 0); if (ret < 0) { av_log(avctx, AV_LOG_ERROR, @@ -505,6 +530,22 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, if (!!(cx_frame->flags & AOM_FRAME_IS_KEY)) pkt->flags |= AV_PKT_FLAG_KEY; + + if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { + ret = av_bsf_send_packet(ctx->bsf, pkt); + if (ret < 0) { + av_log(avctx, AV_LOG_ERROR, "extract_extradata filter " + "failed to send input packet\n"); + return ret; + } + ret = av_bsf_receive_packet(ctx->bsf, pkt); + + if (ret < 0) { + av_log(avctx, AV_LOG_ERROR, "extract_extradata filter " + "failed to receive output packet\n"); + return ret; + } + } return pkt->size; } diff --git a/chromium/third_party/ffmpeg/libavcodec/libopenjpegdec.c b/chromium/third_party/ffmpeg/libavcodec/libopenjpegdec.c index 5e66cd99cc3..344c5ba5a38 100644 --- a/chromium/third_party/ffmpeg/libavcodec/libopenjpegdec.c +++ b/chromium/third_party/ffmpeg/libavcodec/libopenjpegdec.c @@ -45,6 +45,7 @@ AV_PIX_FMT_RGB48, AV_PIX_FMT_RGBA64 #define GRAY_PIXEL_FORMATS AV_PIX_FMT_GRAY8, AV_PIX_FMT_YA8, \ + AV_PIX_FMT_GRAY10, AV_PIX_FMT_GRAY12, AV_PIX_FMT_GRAY14, \ AV_PIX_FMT_GRAY16, AV_PIX_FMT_YA16 #define YUV_PIXEL_FORMATS AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUVA420P, \ diff --git a/chromium/third_party/ffmpeg/libavcodec/libopenjpegenc.c b/chromium/third_party/ffmpeg/libavcodec/libopenjpegenc.c index 7c7d0aa6b2a..199800898e4 100644 --- a/chromium/third_party/ffmpeg/libavcodec/libopenjpegenc.c +++ b/chromium/third_party/ffmpeg/libavcodec/libopenjpegenc.c @@ -189,6 +189,9 @@ static opj_image_t *mj2_create_image(AVCodecContext *avctx, opj_cparameters_t *p switch (avctx->pix_fmt) { case AV_PIX_FMT_GRAY8: case AV_PIX_FMT_YA8: + case AV_PIX_FMT_GRAY10: + case AV_PIX_FMT_GRAY12: + case AV_PIX_FMT_GRAY14: case AV_PIX_FMT_GRAY16: case AV_PIX_FMT_YA16: color_space = OPJ_CLRSPC_GRAY; @@ -612,6 +615,9 @@ static int libopenjpeg_encode_frame(AVCodecContext *avctx, AVPacket *pkt, case AV_PIX_FMT_YUVA444P: cpyresult = libopenjpeg_copy_unpacked8(avctx, frame, image); break; + case AV_PIX_FMT_GRAY10: + case AV_PIX_FMT_GRAY12: + case AV_PIX_FMT_GRAY14: case AV_PIX_FMT_GRAY16: case AV_PIX_FMT_YUV420P9: case AV_PIX_FMT_YUV422P9: @@ -763,6 +769,7 @@ AVCodec ff_libopenjpeg_encoder = { AV_PIX_FMT_RGBA64, AV_PIX_FMT_GBR24P, AV_PIX_FMT_GBRP9, AV_PIX_FMT_GBRP10, AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRP14, AV_PIX_FMT_GBRP16, AV_PIX_FMT_GRAY8, AV_PIX_FMT_YA8, AV_PIX_FMT_GRAY16, AV_PIX_FMT_YA16, + AV_PIX_FMT_GRAY10, AV_PIX_FMT_GRAY12, AV_PIX_FMT_GRAY14, AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUVA420P, AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVA422P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUVA444P, diff --git a/chromium/third_party/ffmpeg/libavcodec/libx265.c b/chromium/third_party/ffmpeg/libavcodec/libx265.c index bb457dfe5a5..27c90b323fe 100644 --- a/chromium/third_party/ffmpeg/libavcodec/libx265.c +++ b/chromium/third_party/ffmpeg/libavcodec/libx265.c @@ -205,6 +205,9 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx) ctx->params->rc.rateControlMode = X265_RC_ABR; } + ctx->params->rc.vbvBufferSize = avctx->rc_buffer_size / 1000; + ctx->params->rc.vbvMaxBitrate = avctx->rc_max_rate / 1000; + if (!(avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER)) ctx->params->bRepeatHeaders = 1; @@ -233,6 +236,11 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx) } } + if (ctx->params->rc.vbvBufferSize && avctx->rc_initial_buffer_occupancy > 1000 && + ctx->params->rc.vbvBufferInit == 0.9) { + ctx->params->rc.vbvBufferInit = (float)avctx->rc_initial_buffer_occupancy / 1000; + } + if (ctx->profile) { if (ctx->api->param_apply_profile(ctx->params, ctx->profile) < 0) { int i; diff --git a/chromium/third_party/ffmpeg/libavcodec/libzvbi-teletextdec.c b/chromium/third_party/ffmpeg/libavcodec/libzvbi-teletextdec.c index ccded23e7ca..809547545bd 100644 --- a/chromium/third_party/ffmpeg/libavcodec/libzvbi-teletextdec.c +++ b/chromium/third_party/ffmpeg/libavcodec/libzvbi-teletextdec.c @@ -74,6 +74,8 @@ typedef struct TeletextContext int readorder; uint8_t subtitle_map[2048]; + int last_pgno; + int last_p5; } TeletextContext; static int chop_spaces_utf8(const unsigned char* t, int len) @@ -372,6 +374,17 @@ static int slice_to_vbi_lines(TeletextContext *ctx, uint8_t* buf, int size) int pgno = ((pmag & 7) << 8) + page; // Check for disabled NEWSFLASH flag and enabled SUBTITLE and SUPRESS_HEADER flags ctx->subtitle_map[pgno] = (!(flags1 & 0x40) && flags1 & 0x80 && flags2 & 0x01); + // Propagate ERASE_PAGE flag for repeated page headers to work around a libzvbi bug + if (ctx->subtitle_map[pgno] && pgno == ctx->last_pgno) { + int last_byte9 = vbi_unham8(ctx->last_p5); + if (last_byte9 >= 0 && last_byte9 & 0x8) { + int byte9 = vbi_unham8(p[5]); + if (byte9 >= 0) + p[5] = vbi_ham8(byte9 | 0x8); + } + } + ctx->last_pgno = pgno; + ctx->last_p5 = p[5]; } } lines++; @@ -494,6 +507,7 @@ static int teletext_init_decoder(AVCodecContext *avctx) ctx->vbi = NULL; ctx->pts = AV_NOPTS_VALUE; + ctx->last_pgno = -1; if (ctx->opacity == -1) ctx->opacity = ctx->transparent_bg ? 0 : 255; @@ -514,6 +528,7 @@ static int teletext_close_decoder(AVCodecContext *avctx) vbi_decoder_delete(ctx->vbi); ctx->vbi = NULL; ctx->pts = AV_NOPTS_VALUE; + ctx->last_pgno = -1; memset(ctx->subtitle_map, 0, sizeof(ctx->subtitle_map)); if (!(avctx->flags2 & AV_CODEC_FLAG2_RO_FLUSH_NOOP)) ctx->readorder = 0; diff --git a/chromium/third_party/ffmpeg/libavcodec/magicyuv.c b/chromium/third_party/ffmpeg/libavcodec/magicyuv.c index 9c6e1ba1b14..1a129c26198 100644 --- a/chromium/third_party/ffmpeg/libavcodec/magicyuv.c +++ b/chromium/third_party/ffmpeg/libavcodec/magicyuv.c @@ -240,6 +240,8 @@ static int magy_decode_slice10(AVCodecContext *avctx, void *tdata, dst = (uint16_t *)p->data[i] + j * sheight * stride; if (flags & 1) { + if (get_bits_left(&gb) < bps * width * height) + return AVERROR_INVALIDDATA; for (k = 0; k < height; k++) { for (x = 0; x < width; x++) dst[x] = get_bits(&gb, bps); @@ -368,6 +370,8 @@ static int magy_decode_slice(AVCodecContext *avctx, void *tdata, dst = p->data[i] + j * sheight * stride; if (flags & 1) { + if (get_bits_left(&gb) < 8* width * height) + return AVERROR_INVALIDDATA; for (k = 0; k < height; k++) { for (x = 0; x < width; x++) dst[x] = get_bits(&gb, 8); diff --git a/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.c b/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.c index 40a2ee67781..887865a281d 100644 --- a/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.c +++ b/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.c @@ -443,6 +443,8 @@ static int mediacodec_dec_flush_codec(AVCodecContext *avctx, MediaCodecDecContex FFAMediaCodec *codec = s->codec; int status; + s->output_buffer_count = 0; + s->draining = 0; s->flushing = 0; s->eos = 0; @@ -670,7 +672,10 @@ int ff_mediacodec_dec_receive(AVCodecContext *avctx, MediaCodecDecContext *s, /* If the codec is flushing or need to be flushed, block for a fair * amount of time to ensure we got a frame */ output_dequeue_timeout_us = OUTPUT_DEQUEUE_BLOCK_TIMEOUT_US; - } else if (!wait) { + } else if (s->output_buffer_count == 0 || !wait) { + /* If the codec hasn't produced any frames, do not block so we + * can push data to it as fast as possible, and get the first + * frame */ output_dequeue_timeout_us = 0; } @@ -704,6 +709,7 @@ int ff_mediacodec_dec_receive(AVCodecContext *avctx, MediaCodecDecContext *s, } } + s->output_buffer_count++; return 0; } else { status = ff_AMediaCodec_releaseOutputBuffer(codec, index, 0); diff --git a/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.h b/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.h index d280236b8ee..0b21129fee4 100644 --- a/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.h +++ b/chromium/third_party/ffmpeg/libavcodec/mediacodecdec_common.h @@ -64,6 +64,7 @@ typedef struct MediaCodecDecContext { int display_width; int display_height; + uint64_t output_buffer_count; ssize_t current_input_buffer; bool delay_flush; diff --git a/chromium/third_party/ffmpeg/libavcodec/mips/vc1dsp_mips.h b/chromium/third_party/ffmpeg/libavcodec/mips/vc1dsp_mips.h index b9b07e1ce37..0db85fac94f 100644 --- a/chromium/third_party/ffmpeg/libavcodec/mips/vc1dsp_mips.h +++ b/chromium/third_party/ffmpeg/libavcodec/mips/vc1dsp_mips.h @@ -169,7 +169,7 @@ void ff_vc1_inv_trans_8x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *blo void ff_vc1_v_overlap_mmi(uint8_t *src, int stride); void ff_vc1_h_overlap_mmi(uint8_t *src, int stride); void ff_vc1_v_s_overlap_mmi(int16_t *top, int16_t *bottom); -void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right); +void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right, int left_stride, int right_stride, int flags); void ff_vc1_v_loop_filter4_mmi(uint8_t *src, int stride, int pq); void ff_vc1_h_loop_filter4_mmi(uint8_t *src, int stride, int pq); diff --git a/chromium/third_party/ffmpeg/libavcodec/mips/vc1dsp_mmi.c b/chromium/third_party/ffmpeg/libavcodec/mips/vc1dsp_mmi.c index 01e7f9f32c2..ec2fdca9873 100644 --- a/chromium/third_party/ffmpeg/libavcodec/mips/vc1dsp_mmi.c +++ b/chromium/third_party/ffmpeg/libavcodec/mips/vc1dsp_mmi.c @@ -1019,12 +1019,13 @@ void ff_vc1_h_overlap_mmi(uint8_t *src, int stride) } } -void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right) +void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right, int left_stride, int right_stride, int flags) { int i; int a, b, c, d; int d1, d2; - int rnd1 = 4, rnd2 = 3; + int rnd1 = flags & 2 ? 3 : 4; + int rnd2 = 7 - rnd1; for (i = 0; i < 8; i++) { a = left[6]; b = left[7]; @@ -1038,10 +1039,12 @@ void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right) right[0] = ((c << 3) + d2 + rnd1) >> 3; right[1] = ((d << 3) + d1 + rnd2) >> 3; - right += 8; - left += 8; - rnd2 = 7 - rnd2; - rnd1 = 7 - rnd1; + right += right_stride; + left += left_stride; + if (flags & 1) { + rnd2 = 7 - rnd2; + rnd1 = 7 - rnd1; + } } } diff --git a/chromium/third_party/ffmpeg/libavcodec/mjpegdec.c b/chromium/third_party/ffmpeg/libavcodec/mjpegdec.c index d1dca84d369..5e784d980c0 100644 --- a/chromium/third_party/ffmpeg/libavcodec/mjpegdec.c +++ b/chromium/third_party/ffmpeg/libavcodec/mjpegdec.c @@ -626,6 +626,10 @@ unk_pixfmt: avpriv_report_missing_feature(s->avctx, "Lowres for weird subsampling"); return AVERROR_PATCHWELCOME; } + if ((AV_RB32(s->upscale_h) || AV_RB32(s->upscale_v)) && s->progressive && s->avctx->pix_fmt == AV_PIX_FMT_GBRP) { + avpriv_report_missing_feature(s->avctx, "progressive for weird subsampling"); + return AVERROR_PATCHWELCOME; + } if (s->ls) { memset(s->upscale_h, 0, sizeof(s->upscale_h)); memset(s->upscale_v, 0, sizeof(s->upscale_v)); @@ -1055,6 +1059,11 @@ static int ljpeg_decode_rgb_scan(MJpegDecodeContext *s, int nb_components, int p for (mb_x = 0; mb_x < s->mb_width; mb_x++) { int modified_predictor = predictor; + if (get_bits_left(&s->gb) < 1) { + av_log(s->avctx, AV_LOG_ERROR, "bitstream end in rgb_scan\n"); + return AVERROR_INVALIDDATA; + } + if (s->restart_interval && !s->restart_count){ s->restart_count = s->restart_interval; resync_mb_x = mb_x; diff --git a/chromium/third_party/ffmpeg/libavcodec/mpeg4videodec.c b/chromium/third_party/ffmpeg/libavcodec/mpeg4videodec.c index b2c3cdfdc4c..6355a862952 100644 --- a/chromium/third_party/ffmpeg/libavcodec/mpeg4videodec.c +++ b/chromium/third_party/ffmpeg/libavcodec/mpeg4videodec.c @@ -1978,15 +1978,15 @@ static int mpeg4_decode_gop_header(MpegEncContext *s, GetBitContext *gb) return 0; } -static int mpeg4_decode_profile_level(MpegEncContext *s, GetBitContext *gb) +static int mpeg4_decode_profile_level(MpegEncContext *s, GetBitContext *gb, int *profile, int *level) { - s->avctx->profile = get_bits(gb, 4); - s->avctx->level = get_bits(gb, 4); + *profile = get_bits(gb, 4); + *level = get_bits(gb, 4); // for Simple profile, level 0 - if (s->avctx->profile == 0 && s->avctx->level == 8) { - s->avctx->level = 0; + if (*profile == 0 && *level == 8) { + *level = 0; } return 0; @@ -2865,11 +2865,13 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb) return 0; } -static void read_quant_matrix_ext(MpegEncContext *s, GetBitContext *gb) +static int read_quant_matrix_ext(MpegEncContext *s, GetBitContext *gb) { int i, j, v; if (get_bits1(gb)) { + if (get_bits_left(gb) < 64*8) + return AVERROR_INVALIDDATA; /* intra_quantiser_matrix */ for (i = 0; i < 64; i++) { v = get_bits(gb, 8); @@ -2880,6 +2882,8 @@ static void read_quant_matrix_ext(MpegEncContext *s, GetBitContext *gb) } if (get_bits1(gb)) { + if (get_bits_left(gb) < 64*8) + return AVERROR_INVALIDDATA; /* non_intra_quantiser_matrix */ for (i = 0; i < 64; i++) { get_bits(gb, 8); @@ -2887,6 +2891,8 @@ static void read_quant_matrix_ext(MpegEncContext *s, GetBitContext *gb) } if (get_bits1(gb)) { + if (get_bits_left(gb) < 64*8) + return AVERROR_INVALIDDATA; /* chroma_intra_quantiser_matrix */ for (i = 0; i < 64; i++) { v = get_bits(gb, 8); @@ -2896,6 +2902,8 @@ static void read_quant_matrix_ext(MpegEncContext *s, GetBitContext *gb) } if (get_bits1(gb)) { + if (get_bits_left(gb) < 64*8) + return AVERROR_INVALIDDATA; /* chroma_non_intra_quantiser_matrix */ for (i = 0; i < 64; i++) { get_bits(gb, 8); @@ -2903,6 +2911,7 @@ static void read_quant_matrix_ext(MpegEncContext *s, GetBitContext *gb) } next_start_code_studio(gb); + return 0; } static void extension_and_user_data(MpegEncContext *s, GetBitContext *gb, int id) @@ -3107,6 +3116,12 @@ int ff_mpeg4_decode_picture_header(Mpeg4DecContext *ctx, GetBitContext *gb) /* search next start code */ align_get_bits(gb); + // If we have not switched to studio profile than we also did not switch bps + // that means something else (like a previous instance) outside set bps which + // would be inconsistant with the currect state, thus reset it + if (!s->studio_profile && s->avctx->bits_per_raw_sample != 8) + s->avctx->bits_per_raw_sample = 0; + if (s->codec_tag == AV_RL32("WV1F") && show_bits(gb, 24) == 0x575630) { skip_bits(gb, 24); if (get_bits(gb, 8) == 0xF0) @@ -3203,13 +3218,19 @@ int ff_mpeg4_decode_picture_header(Mpeg4DecContext *ctx, GetBitContext *gb) } else if (startcode == GOP_STARTCODE) { mpeg4_decode_gop_header(s, gb); } else if (startcode == VOS_STARTCODE) { - mpeg4_decode_profile_level(s, gb); - if (s->avctx->profile == FF_PROFILE_MPEG4_SIMPLE_STUDIO && - (s->avctx->level > 0 && s->avctx->level < 9)) { + int profile, level; + mpeg4_decode_profile_level(s, gb, &profile, &level); + if (profile == FF_PROFILE_MPEG4_SIMPLE_STUDIO && + (level > 0 && level < 9)) { s->studio_profile = 1; next_start_code_studio(gb); extension_and_user_data(s, gb, 0); + } else if (s->studio_profile) { + avpriv_request_sample(s->avctx, "Mixes studio and non studio profile\n"); + return AVERROR_PATCHWELCOME; } + s->avctx->profile = profile; + s->avctx->level = level; } else if (startcode == VISUAL_OBJ_STARTCODE) { if (s->studio_profile) { if ((ret = decode_studiovisualobject(ctx, gb)) < 0) diff --git a/chromium/third_party/ffmpeg/libavcodec/mpegaudiodecheader.h b/chromium/third_party/ffmpeg/libavcodec/mpegaudiodecheader.h index 1cb9216461a..1da2a4cb6f9 100644 --- a/chromium/third_party/ffmpeg/libavcodec/mpegaudiodecheader.h +++ b/chromium/third_party/ffmpeg/libavcodec/mpegaudiodecheader.h @@ -62,6 +62,9 @@ static inline int ff_mpa_check_header(uint32_t header){ /* header */ if ((header & 0xffe00000) != 0xffe00000) return -1; + /* version check */ + if ((header & (3<<19)) == 1<<19) + return -1; /* layer check */ if ((header & (3<<17)) == 0) return -1; diff --git a/chromium/third_party/ffmpeg/libavcodec/nvenc.c b/chromium/third_party/ffmpeg/libavcodec/nvenc.c index b4186c0bec6..cfa7268a5eb 100644 --- a/chromium/third_party/ffmpeg/libavcodec/nvenc.c +++ b/chromium/third_party/ffmpeg/libavcodec/nvenc.c @@ -2051,8 +2051,16 @@ int ff_nvenc_send_frame(AVCodecContext *avctx, const AVFrame *frame) if ((!ctx->cu_context && !ctx->d3d11_device) || !ctx->nvencoder) return AVERROR(EINVAL); - if (ctx->encoder_flushing) - return AVERROR_EOF; + if (ctx->encoder_flushing) { + if (avctx->internal->draining) + return AVERROR_EOF; + + ctx->encoder_flushing = 0; + ctx->first_packet_output = 0; + ctx->initial_pts[0] = AV_NOPTS_VALUE; + ctx->initial_pts[1] = AV_NOPTS_VALUE; + av_fifo_reset(ctx->timestamp_list); + } if (frame) { in_surf = get_free_frame(ctx); diff --git a/chromium/third_party/ffmpeg/libavcodec/parser.c b/chromium/third_party/ffmpeg/libavcodec/parser.c index f43b197d5ea..0a994a3f30b 100644 --- a/chromium/third_party/ffmpeg/libavcodec/parser.c +++ b/chromium/third_party/ffmpeg/libavcodec/parser.c @@ -27,95 +27,10 @@ #include "libavutil/avassert.h" #include "libavutil/internal.h" #include "libavutil/mem.h" -#include "libavutil/thread.h" #include "internal.h" #include "parser.h" -/* Parsers */ -extern AVCodecParser ff_aac_parser; -extern AVCodecParser ff_aac_latm_parser; -extern AVCodecParser ff_ac3_parser; -extern AVCodecParser ff_adx_parser; -extern AVCodecParser ff_bmp_parser; -extern AVCodecParser ff_cavsvideo_parser; -extern AVCodecParser ff_cook_parser; -extern AVCodecParser ff_dca_parser; -extern AVCodecParser ff_dirac_parser; -extern AVCodecParser ff_dnxhd_parser; -extern AVCodecParser ff_dpx_parser; -extern AVCodecParser ff_dvaudio_parser; -extern AVCodecParser ff_dvbsub_parser; -extern AVCodecParser ff_dvdsub_parser; -extern AVCodecParser ff_dvd_nav_parser; -extern AVCodecParser ff_flac_parser; -extern AVCodecParser ff_g729_parser; -extern AVCodecParser ff_gsm_parser; -extern AVCodecParser ff_h261_parser; -extern AVCodecParser ff_h263_parser; -extern AVCodecParser ff_h264_parser; -extern AVCodecParser ff_hevc_parser; -extern AVCodecParser ff_mjpeg_parser; -extern AVCodecParser ff_mlp_parser; -extern AVCodecParser ff_mpeg4video_parser; -extern AVCodecParser ff_mpegaudio_parser; -extern AVCodecParser ff_mpegvideo_parser; -extern AVCodecParser ff_opus_parser; -extern AVCodecParser ff_png_parser; -extern AVCodecParser ff_pnm_parser; -extern AVCodecParser ff_rv30_parser; -extern AVCodecParser ff_rv40_parser; -extern AVCodecParser ff_sbc_parser; -extern AVCodecParser ff_sipr_parser; -extern AVCodecParser ff_tak_parser; -extern AVCodecParser ff_vc1_parser; -extern AVCodecParser ff_vorbis_parser; -extern AVCodecParser ff_vp3_parser; -extern AVCodecParser ff_vp8_parser; -extern AVCodecParser ff_vp9_parser; -extern AVCodecParser ff_xma_parser; - -#include "libavcodec/parser_list.c" - -static AVOnce av_parser_next_init = AV_ONCE_INIT; - -static void av_parser_init_next(void) -{ - AVCodecParser *prev = NULL, *p; - int i = 0; - while ((p = (AVCodecParser*)parser_list[i++])) { - if (prev) - prev->next = p; - prev = p; - } -} - -AVCodecParser *av_parser_next(const AVCodecParser *p) -{ - ff_thread_once(&av_parser_next_init, av_parser_init_next); - - if (p) - return p->next; - else - return (AVCodecParser*)parser_list[0]; -} - -const AVCodecParser *av_parser_iterate(void **opaque) -{ - uintptr_t i = (uintptr_t)*opaque; - const AVCodecParser *p = parser_list[i]; - - if (p) - *opaque = (void*)(i + 1); - - return p; -} - -void av_register_codec_parser(AVCodecParser *parser) -{ - ff_thread_once(&av_parser_next_init, av_parser_init_next); -} - AVCodecParserContext *av_parser_init(int codec_id) { AVCodecParserContext *s = NULL; diff --git a/chromium/third_party/ffmpeg/libavcodec/parsers.c b/chromium/third_party/ffmpeg/libavcodec/parsers.c new file mode 100644 index 00000000000..f2886ff45fc --- /dev/null +++ b/chromium/third_party/ffmpeg/libavcodec/parsers.c @@ -0,0 +1,106 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <stdint.h> + +#include "libavutil/thread.h" + +#include "avcodec.h" + +extern AVCodecParser ff_aac_parser; +extern AVCodecParser ff_aac_latm_parser; +extern AVCodecParser ff_ac3_parser; +extern AVCodecParser ff_adx_parser; +extern AVCodecParser ff_bmp_parser; +extern AVCodecParser ff_cavsvideo_parser; +extern AVCodecParser ff_cook_parser; +extern AVCodecParser ff_dca_parser; +extern AVCodecParser ff_dirac_parser; +extern AVCodecParser ff_dnxhd_parser; +extern AVCodecParser ff_dpx_parser; +extern AVCodecParser ff_dvaudio_parser; +extern AVCodecParser ff_dvbsub_parser; +extern AVCodecParser ff_dvdsub_parser; +extern AVCodecParser ff_dvd_nav_parser; +extern AVCodecParser ff_flac_parser; +extern AVCodecParser ff_g729_parser; +extern AVCodecParser ff_gsm_parser; +extern AVCodecParser ff_h261_parser; +extern AVCodecParser ff_h263_parser; +extern AVCodecParser ff_h264_parser; +extern AVCodecParser ff_hevc_parser; +extern AVCodecParser ff_mjpeg_parser; +extern AVCodecParser ff_mlp_parser; +extern AVCodecParser ff_mpeg4video_parser; +extern AVCodecParser ff_mpegaudio_parser; +extern AVCodecParser ff_mpegvideo_parser; +extern AVCodecParser ff_opus_parser; +extern AVCodecParser ff_png_parser; +extern AVCodecParser ff_pnm_parser; +extern AVCodecParser ff_rv30_parser; +extern AVCodecParser ff_rv40_parser; +extern AVCodecParser ff_sbc_parser; +extern AVCodecParser ff_sipr_parser; +extern AVCodecParser ff_tak_parser; +extern AVCodecParser ff_vc1_parser; +extern AVCodecParser ff_vorbis_parser; +extern AVCodecParser ff_vp3_parser; +extern AVCodecParser ff_vp8_parser; +extern AVCodecParser ff_vp9_parser; +extern AVCodecParser ff_xma_parser; + +#include "libavcodec/parser_list.c" + +static AVOnce av_parser_next_init = AV_ONCE_INIT; + +static void av_parser_init_next(void) +{ + AVCodecParser *prev = NULL, *p; + int i = 0; + while ((p = (AVCodecParser*)parser_list[i++])) { + if (prev) + prev->next = p; + prev = p; + } +} + +AVCodecParser *av_parser_next(const AVCodecParser *p) +{ + ff_thread_once(&av_parser_next_init, av_parser_init_next); + + if (p) + return p->next; + else + return (AVCodecParser*)parser_list[0]; +} + +const AVCodecParser *av_parser_iterate(void **opaque) +{ + uintptr_t i = (uintptr_t)*opaque; + const AVCodecParser *p = parser_list[i]; + + if (p) + *opaque = (void*)(i + 1); + + return p; +} + +void av_register_codec_parser(AVCodecParser *parser) +{ + ff_thread_once(&av_parser_next_init, av_parser_init_next); +} diff --git a/chromium/third_party/ffmpeg/libavcodec/pngdec.c b/chromium/third_party/ffmpeg/libavcodec/pngdec.c index f93f200bb15..01144680f20 100644 --- a/chromium/third_party/ffmpeg/libavcodec/pngdec.c +++ b/chromium/third_party/ffmpeg/libavcodec/pngdec.c @@ -446,7 +446,7 @@ static int decode_zbuf(AVBPrint *bp, const uint8_t *data, return AVERROR_EXTERNAL; zstream.next_in = (unsigned char *)data; zstream.avail_in = data_end - data; - av_bprint_init(bp, 0, -1); + av_bprint_init(bp, 0, AV_BPRINT_SIZE_UNLIMITED); while (zstream.avail_in > 0) { av_bprint_get_buffer(bp, 2, &buf, &buf_size); @@ -1315,7 +1315,7 @@ static int decode_frame_common(AVCodecContext *avctx, PNGDecContext *s, char *gamma_str; int num = bytestream2_get_be32(&s->gb); - av_bprint_init(&bp, 0, -1); + av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED); av_bprintf(&bp, "%i/%i", num, 100000); ret = av_bprint_finalize(&bp, &gamma_str); if (ret < 0) diff --git a/chromium/third_party/ffmpeg/libavcodec/ppc/hevcdsp.c b/chromium/third_party/ffmpeg/libavcodec/ppc/hevcdsp.c index 4b1037d792d..dcae43305a6 100644 --- a/chromium/third_party/ffmpeg/libavcodec/ppc/hevcdsp.c +++ b/chromium/third_party/ffmpeg/libavcodec/ppc/hevcdsp.c @@ -41,8 +41,9 @@ static const vec_u8 mask[2] = { { 0x04, 0x05, 0x0C, 0x0D, 0x14, 0x15, 0x1C, 0x1D, 0x06, 0x07, 0x0E, 0x0F, 0x16, 0x17, 0x1E, 0x1F }, }; -static void transform4x4(vec_s16 src_01, vec_s16 src_23, vec_s32 res[4], - const int shift, int16_t *coeffs) +static av_always_inline void transform4x4(vec_s16 src_01, vec_s16 src_23, + vec_s32 res[4], const int shift, + int16_t *coeffs) { vec_s16 src_02, src_13; vec_s32 zero = vec_splat_s32(0); @@ -67,7 +68,8 @@ static void transform4x4(vec_s16 src_01, vec_s16 src_23, vec_s32 res[4], res[3] = vec_sub(e0, o0); } -static void scale(vec_s32 res[4], vec_s16 res_packed[2], int shift) +static av_always_inline void scale(vec_s32 res[4], vec_s16 res_packed[2], + const int shift) { int i; vec_u32 v_shift = vec_splat_u32(shift); diff --git a/chromium/third_party/ffmpeg/libavcodec/qsv.c b/chromium/third_party/ffmpeg/libavcodec/qsv.c index 3ff4f2c0925..bb0d79588c4 100644 --- a/chromium/third_party/ffmpeg/libavcodec/qsv.c +++ b/chromium/third_party/ffmpeg/libavcodec/qsv.c @@ -198,7 +198,7 @@ int ff_qsv_find_surface_idx(QSVFramesContext *ctx, QSVFrame *frame) enum AVPictureType ff_qsv_map_pictype(int mfx_pic_type) { - enum AVPictureType type = AV_PICTURE_TYPE_NONE; + enum AVPictureType type; switch (mfx_pic_type & 0x7) { case MFX_FRAMETYPE_I: if (mfx_pic_type & MFX_FRAMETYPE_S) @@ -215,6 +215,9 @@ enum AVPictureType ff_qsv_map_pictype(int mfx_pic_type) else type = AV_PICTURE_TYPE_P; break; + case MFX_FRAMETYPE_UNKNOWN: + type = AV_PICTURE_TYPE_NONE; + break; default: av_assert0(0); } diff --git a/chromium/third_party/ffmpeg/libavcodec/qsvenc.h b/chromium/third_party/ffmpeg/libavcodec/qsvenc.h index d48272224c3..bb175c5df81 100644 --- a/chromium/third_party/ffmpeg/libavcodec/qsvenc.h +++ b/chromium/third_party/ffmpeg/libavcodec/qsvenc.h @@ -45,7 +45,7 @@ #define QSV_HAVE_LA_DS QSV_VERSION_ATLEAST(1, 8) #define QSV_HAVE_LA_HRD QSV_VERSION_ATLEAST(1, 11) -#if defined(_WIN32) +#if defined(_WIN32) || defined(__CYGWIN__) #define QSV_HAVE_AVBR QSV_VERSION_ATLEAST(1, 3) #define QSV_HAVE_ICQ QSV_VERSION_ATLEAST(1, 8) #define QSV_HAVE_VCM QSV_VERSION_ATLEAST(1, 8) diff --git a/chromium/third_party/ffmpeg/libavcodec/ra144.c b/chromium/third_party/ffmpeg/libavcodec/ra144.c index c077b7b3279..cf8127c2368 100644 --- a/chromium/third_party/ffmpeg/libavcodec/ra144.c +++ b/chromium/third_party/ffmpeg/libavcodec/ra144.c @@ -1569,11 +1569,11 @@ int ff_eval_refl(int *refl, const int16_t *coefs, AVCodecContext *avctx) b = 0x1000000 / b; for (j=0; j <= i; j++) { #if CONFIG_FTRAPV - int a = bp2[j] - ((refl[i+1] * bp2[i-j]) >> 12); + int a = bp2[j] - ((int)(refl[i+1] * (unsigned)bp2[i-j]) >> 12); if((int)(a*(unsigned)b) != a*(int64_t)b) return 1; #endif - bp1[j] = (int)((bp2[j] - ((refl[i+1] * bp2[i-j]) >> 12)) * (unsigned)b) >> 12; + bp1[j] = (int)((bp2[j] - ((int)(refl[i+1] * (unsigned)bp2[i-j]) >> 12)) * (unsigned)b) >> 12; } if ((unsigned) bp1[i] + 0x1000 > 0x1fff) diff --git a/chromium/third_party/ffmpeg/libavcodec/shorten.c b/chromium/third_party/ffmpeg/libavcodec/shorten.c index 18a12d0b973..0f491090fdc 100644 --- a/chromium/third_party/ffmpeg/libavcodec/shorten.c +++ b/chromium/third_party/ffmpeg/libavcodec/shorten.c @@ -177,7 +177,7 @@ static void fix_bitshift(ShortenContext *s, int32_t *buffer) buffer[i] = 0; } else if (s->bitshift != 0) { for (i = 0; i < s->blocksize; i++) - buffer[i] *= 1 << s->bitshift; + buffer[i] *= 1U << s->bitshift; } } @@ -682,7 +682,7 @@ static int shorten_decode_frame(AVCodecContext *avctx, void *data, else { int32_t sum = (s->version < 2) ? 0 : s->nmean / 2; for (i = 0; i < s->nmean; i++) - sum += s->offset[channel][i]; + sum += (unsigned)s->offset[channel][i]; coffset = sum / s->nmean; if (s->version >= 2) coffset = s->bitshift == 0 ? coffset : coffset >> s->bitshift - 1 >> 1; diff --git a/chromium/third_party/ffmpeg/libavcodec/truemotion2.c b/chromium/third_party/ffmpeg/libavcodec/truemotion2.c index b689efdb993..58a577f53c7 100644 --- a/chromium/third_party/ffmpeg/libavcodec/truemotion2.c +++ b/chromium/third_party/ffmpeg/libavcodec/truemotion2.c @@ -377,6 +377,10 @@ static int tm2_read_stream(TM2Context *ctx, const uint8_t *buf, int stream_id, i } } } else { + if (len < 0) { + ret = AVERROR_INVALIDDATA; + goto end; + } for (i = 0; i < toks; i++) { ctx->tokens[stream_id][i] = codes.recode[0]; if (stream_id <= TM2_MOT && ctx->tokens[stream_id][i] >= TM2_DELTAS) { diff --git a/chromium/third_party/ffmpeg/libavcodec/tscc.c b/chromium/third_party/ffmpeg/libavcodec/tscc.c index cb86b584c1d..31e7caeeebe 100644 --- a/chromium/third_party/ffmpeg/libavcodec/tscc.c +++ b/chromium/third_party/ffmpeg/libavcodec/tscc.c @@ -69,9 +69,19 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, CamtasiaContext * const c = avctx->priv_data; AVFrame *frame = c->frame; int ret; + int palette_has_changed = 0; - if ((ret = ff_reget_buffer(avctx, frame)) < 0) - return ret; + if (c->avctx->pix_fmt == AV_PIX_FMT_PAL8) { + int size; + const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, &size); + + if (pal && size == AVPALETTE_SIZE) { + palette_has_changed = 1; + memcpy(c->pal, pal, AVPALETTE_SIZE); + } else if (pal) { + av_log(avctx, AV_LOG_ERROR, "Palette size %d is wrong\n", size); + } + } ret = inflateReset(&c->zstream); if (ret != Z_OK) { @@ -84,11 +94,17 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, c->zstream.avail_out = c->decomp_size; ret = inflate(&c->zstream, Z_FINISH); // Z_DATA_ERROR means empty picture + if (ret == Z_DATA_ERROR && !palette_has_changed) { + return buf_size; + } + if ((ret != Z_OK) && (ret != Z_STREAM_END) && (ret != Z_DATA_ERROR)) { av_log(avctx, AV_LOG_ERROR, "Inflate error: %d\n", ret); return AVERROR_UNKNOWN; } + if ((ret = ff_reget_buffer(avctx, frame)) < 0) + return ret; if (ret != Z_DATA_ERROR) { bytestream2_init(&c->gb, c->decomp_buf, @@ -98,15 +114,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, /* make the palette available on the way out */ if (c->avctx->pix_fmt == AV_PIX_FMT_PAL8) { - int size; - const uint8_t *pal = av_packet_get_side_data(avpkt, AV_PKT_DATA_PALETTE, &size); - - if (pal && size == AVPALETTE_SIZE) { - frame->palette_has_changed = 1; - memcpy(c->pal, pal, AVPALETTE_SIZE); - } else if (pal) { - av_log(avctx, AV_LOG_ERROR, "Palette size %d is wrong\n", size); - } + frame->palette_has_changed = palette_has_changed; memcpy(frame->data[1], c->pal, AVPALETTE_SIZE); } diff --git a/chromium/third_party/ffmpeg/libavcodec/utils.c b/chromium/third_party/ffmpeg/libavcodec/utils.c index 59d41ccbb64..4f9a2b76efa 100644 --- a/chromium/third_party/ffmpeg/libavcodec/utils.c +++ b/chromium/third_party/ffmpeg/libavcodec/utils.c @@ -674,6 +674,7 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code av_freep(&avctx->subtitle_header); if (avctx->channels > FF_SANE_NB_CHANNELS) { + av_log(avctx, AV_LOG_ERROR, "Too many channels: %d\n", avctx->channels); ret = AVERROR(EINVAL); goto free_and_end; } @@ -1536,6 +1537,7 @@ static int get_audio_frame_duration(enum AVCodecID id, int sr, int ch, int ba, case AV_CODEC_ID_GSM_MS: return 320; case AV_CODEC_ID_MP1: return 384; case AV_CODEC_ID_ATRAC1: return 512; + case AV_CODEC_ID_ATRAC9: case AV_CODEC_ID_ATRAC3: return 1024 * framecount; case AV_CODEC_ID_ATRAC3P: return 2048; case AV_CODEC_ID_MP2: diff --git a/chromium/third_party/ffmpeg/libavcodec/v4l2_m2m_dec.c b/chromium/third_party/ffmpeg/libavcodec/v4l2_m2m_dec.c index 598dc107810..710e40efd81 100644 --- a/chromium/third_party/ffmpeg/libavcodec/v4l2_m2m_dec.c +++ b/chromium/third_party/ffmpeg/libavcodec/v4l2_m2m_dec.c @@ -149,11 +149,14 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame) if (avpkt.size) { ret = v4l2_try_start(avctx); - if (ret) + if (ret) { + av_packet_unref(&avpkt); return 0; + } } dequeue: + av_packet_unref(&avpkt); return ff_v4l2_context_dequeue_frame(capture, frame); } diff --git a/chromium/third_party/ffmpeg/libavcodec/vaapi_vc1.c b/chromium/third_party/ffmpeg/libavcodec/vaapi_vc1.c index bdb5e24cc59..921ca6391b6 100644 --- a/chromium/third_party/ffmpeg/libavcodec/vaapi_vc1.c +++ b/chromium/third_party/ffmpeg/libavcodec/vaapi_vc1.c @@ -467,6 +467,7 @@ static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, const MpegEncContext *s = &v->s; VAAPIDecodePicture *pic = s->current_picture_ptr->hwaccel_picture_private; VASliceParameterBufferVC1 slice_param; + int mb_height; int err; /* Current bit buffer is beyond any marker for VC-1, so skip it */ @@ -475,12 +476,17 @@ static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, size -= 4; } + if (v->fcm == ILACE_FIELD) + mb_height = avctx->coded_height + 31 >> 5; + else + mb_height = avctx->coded_height + 15 >> 4; + slice_param = (VASliceParameterBufferVC1) { .slice_data_size = size, .slice_data_offset = 0, .slice_data_flag = VA_SLICE_DATA_FLAG_ALL, .macroblock_offset = get_bits_count(&s->gb), - .slice_vertical_position = s->mb_y, + .slice_vertical_position = s->mb_y % mb_height, }; err = ff_vaapi_decode_make_slice_buffer(avctx, pic, diff --git a/chromium/third_party/ffmpeg/libavcodec/vc1.h b/chromium/third_party/ffmpeg/libavcodec/vc1.h index 1d283f85895..69f6ca9e4d7 100644 --- a/chromium/third_party/ffmpeg/libavcodec/vc1.h +++ b/chromium/third_party/ffmpeg/libavcodec/vc1.h @@ -422,7 +422,6 @@ void ff_vc1_init_transposed_scantables(VC1Context *v); int ff_vc1_decode_end(AVCodecContext *avctx); void ff_vc1_decode_blocks(VC1Context *v); -void ff_vc1_loop_filter_iblk(VC1Context *v, int pq); void ff_vc1_i_overlap_filter(VC1Context *v); void ff_vc1_p_overlap_filter(VC1Context *v); void ff_vc1_i_loop_filter(VC1Context *v); diff --git a/chromium/third_party/ffmpeg/libavcodec/vc1_block.c b/chromium/third_party/ffmpeg/libavcodec/vc1_block.c index 0160095c6cf..86320db959a 100644 --- a/chromium/third_party/ffmpeg/libavcodec/vc1_block.c +++ b/chromium/third_party/ffmpeg/libavcodec/vc1_block.c @@ -45,6 +45,9 @@ static const uint8_t offset_table[2][9] = { { 0, 1, 3, 7, 15, 31, 63, 127, 255 }, }; +// mapping table for internal block representation +static const int block_map[6] = {0, 2, 1, 3, 4, 5}; + /***********************************************************************/ /** * @name VC-1 Bitplane decoding @@ -66,7 +69,7 @@ static inline void init_block_index(VC1Context *v) /** @} */ //Bitplane group -static void vc1_put_signed_blocks_clamped(VC1Context *v) +static void vc1_put_blocks_clamped(VC1Context *v, int put_signed) { MpegEncContext *s = &v->s; uint8_t *dest; @@ -85,20 +88,30 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v) if (i > 3 ? v->mb_type[0][s->block_index[i] - s->block_wrap[i] - 1] : v->mb_type[0][s->block_index[i] - 2 * s->block_wrap[i] - 2]) { dest = s->dest[0] + ((i & 2) - 4) * 4 * s->linesize + ((i & 1) - 2) * 8; - s->idsp.put_signed_pixels_clamped(v->block[v->topleft_blk_idx][i], - i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize - 8 : dest, - i > 3 ? s->uvlinesize : s->linesize); + if (put_signed) + s->idsp.put_signed_pixels_clamped(v->block[v->topleft_blk_idx][block_map[i]], + i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize - 8 : dest, + i > 3 ? s->uvlinesize : s->linesize); + else + s->idsp.put_pixels_clamped(v->block[v->topleft_blk_idx][block_map[i]], + i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize - 8 : dest, + i > 3 ? s->uvlinesize : s->linesize); } } } - if (s->mb_x == s->mb_width - 1) { + if (s->mb_x == v->end_mb_x - 1) { for (i = 0; i < block_count; i++) { if (i > 3 ? v->mb_type[0][s->block_index[i] - s->block_wrap[i]] : v->mb_type[0][s->block_index[i] - 2 * s->block_wrap[i]]) { dest = s->dest[0] + ((i & 2) - 4) * 4 * s->linesize + (i & 1) * 8; - s->idsp.put_signed_pixels_clamped(v->block[v->top_blk_idx][i], - i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize : dest, - i > 3 ? s->uvlinesize : s->linesize); + if (put_signed) + s->idsp.put_signed_pixels_clamped(v->block[v->top_blk_idx][block_map[i]], + i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize : dest, + i > 3 ? s->uvlinesize : s->linesize); + else + s->idsp.put_pixels_clamped(v->block[v->top_blk_idx][block_map[i]], + i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize : dest, + i > 3 ? s->uvlinesize : s->linesize); } } } @@ -114,13 +127,18 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v) dest = s->dest[0] + ((i & 2) >> 1) * s->linesize + ((i & 1) - 2) * 8; else dest = s->dest[0] + (i & 2) * 4 * s->linesize + ((i & 1) - 2) * 8; - s->idsp.put_signed_pixels_clamped(v->block[v->left_blk_idx][i], - i > 3 ? s->dest[i - 3] - 8 : dest, - i > 3 ? s->uvlinesize : s->linesize << fieldtx); + if (put_signed) + s->idsp.put_signed_pixels_clamped(v->block[v->left_blk_idx][block_map[i]], + i > 3 ? s->dest[i - 3] - 8 : dest, + i > 3 ? s->uvlinesize : s->linesize << fieldtx); + else + s->idsp.put_pixels_clamped(v->block[v->left_blk_idx][block_map[i]], + i > 3 ? s->dest[i - 3] - 8 : dest, + i > 3 ? s->uvlinesize : s->linesize << fieldtx); } } } - if (s->mb_x == s->mb_width - 1) { + if (s->mb_x == v->end_mb_x - 1) { if (v->fcm == ILACE_FRAME) fieldtx = v->fieldtx_plane[s->mb_y * s->mb_stride + s->mb_x]; for (i = 0; i < block_count; i++) { @@ -129,9 +147,14 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v) dest = s->dest[0] + ((i & 2) >> 1) * s->linesize + (i & 1) * 8; else dest = s->dest[0] + (i & 2) * 4 * s->linesize + (i & 1) * 8; - s->idsp.put_signed_pixels_clamped(v->block[v->cur_blk_idx][i], - i > 3 ? s->dest[i - 3] : dest, - i > 3 ? s->uvlinesize : s->linesize << fieldtx); + if (put_signed) + s->idsp.put_signed_pixels_clamped(v->block[v->cur_blk_idx][block_map[i]], + i > 3 ? s->dest[i - 3] : dest, + i > 3 ? s->uvlinesize : s->linesize << fieldtx); + else + s->idsp.put_pixels_clamped(v->block[v->cur_blk_idx][block_map[i]], + i > 3 ? s->dest[i - 3] : dest, + i > 3 ? s->uvlinesize : s->linesize << fieldtx); } } } @@ -184,7 +207,7 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v) if ((edges&8) && \ s->mb_y == ((s->mb_height >> v->field_mode) - 1)) \ mquant = -v->altpq; \ - if (!mquant || mquant > 31) { \ + if (!mquant || mquant > 31 || mquant < -31) { \ av_log(v->s.avctx, AV_LOG_ERROR, \ "Overriding invalid mquant %d\n", mquant); \ mquant = 1; \ @@ -1328,18 +1351,18 @@ static int vc1_decode_p_mb(VC1Context *v) if (i == 1 || i == 3 || s->mb_x) v->c_avail = v->mb_type[0][s->block_index[i] - 1]; - vc1_decode_intra_block(v, v->block[v->cur_blk_idx][i], i, val, mquant, + vc1_decode_intra_block(v, v->block[v->cur_blk_idx][block_map[i]], i, val, mquant, (i & 4) ? v->codingset2 : v->codingset); if (CONFIG_GRAY && (i > 3) && (s->avctx->flags & AV_CODEC_FLAG_GRAY)) continue; - v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][i]); + v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[i]]); if (v->rangeredfrm) for (j = 0; j < 64; j++) - v->block[v->cur_blk_idx][i][j] <<= 1; + v->block[v->cur_blk_idx][block_map[i]][j] <<= 1; block_cbp |= 0xF << (i << 2); block_intra |= 1 << i; } else if (val) { - pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][i], i, mquant, ttmb, first_block, + pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][block_map[i]], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : s->linesize, CONFIG_GRAY && (i & 4) && (s->avctx->flags & AV_CODEC_FLAG_GRAY), &block_tt); block_cbp |= pat << (i << 2); @@ -1429,18 +1452,18 @@ static int vc1_decode_p_mb(VC1Context *v) if (i == 1 || i == 3 || s->mb_x) v->c_avail = v->mb_type[0][s->block_index[i] - 1]; - vc1_decode_intra_block(v, v->block[v->cur_blk_idx][i], i, is_coded[i], mquant, + vc1_decode_intra_block(v, v->block[v->cur_blk_idx][block_map[i]], i, is_coded[i], mquant, (i & 4) ? v->codingset2 : v->codingset); if (CONFIG_GRAY && (i > 3) && (s->avctx->flags & AV_CODEC_FLAG_GRAY)) continue; - v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][i]); + v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[i]]); if (v->rangeredfrm) for (j = 0; j < 64; j++) - v->block[v->cur_blk_idx][i][j] <<= 1; + v->block[v->cur_blk_idx][block_map[i]][j] <<= 1; block_cbp |= 0xF << (i << 2); block_intra |= 1 << i; } else if (is_coded[i]) { - pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][i], i, mquant, ttmb, + pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][block_map[i]], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : s->linesize, CONFIG_GRAY && (i & 4) && (s->avctx->flags & AV_CODEC_FLAG_GRAY), @@ -1469,7 +1492,7 @@ static int vc1_decode_p_mb(VC1Context *v) end: if (v->overlap && v->pq >= 9) ff_vc1_p_overlap_filter(v); - vc1_put_signed_blocks_clamped(v); + vc1_put_blocks_clamped(v, 1); v->cbp[s->mb_x] = block_cbp; v->ttblk[s->mb_x] = block_tt; @@ -1571,11 +1594,11 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) if (i == 1 || i == 3 || s->mb_x) v->c_avail = v->mb_type[0][s->block_index[i] - 1]; - vc1_decode_intra_block(v, v->block[v->cur_blk_idx][i], i, val, mquant, + vc1_decode_intra_block(v, v->block[v->cur_blk_idx][block_map[i]], i, val, mquant, (i & 4) ? v->codingset2 : v->codingset); if (CONFIG_GRAY && (i > 3) && (s->avctx->flags & AV_CODEC_FLAG_GRAY)) continue; - v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][i]); + v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[i]]); if (i < 4) off = (fieldtx) ? ((i & 1) * 8) + ((i & 2) >> 1) * s->linesize : (i & 1) * 8 + 4 * (i & 2) * s->linesize; else @@ -1651,7 +1674,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) else off = (i & 4) ? 0 : ((i & 1) * 8 + ((i > 1) * s->linesize)); if (val) { - pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][i], i, mquant, ttmb, + pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][block_map[i]], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : (s->linesize << fieldtx), CONFIG_GRAY && (i & 4) && (s->avctx->flags & AV_CODEC_FLAG_GRAY), &block_tt); @@ -1680,7 +1703,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) } if (v->overlap && v->pq >= 9) ff_vc1_p_overlap_filter(v); - vc1_put_signed_blocks_clamped(v); + vc1_put_blocks_clamped(v, 1); v->cbp[s->mb_x] = block_cbp; v->ttblk[s->mb_x] = block_tt; @@ -1737,11 +1760,11 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) if (i == 1 || i == 3 || s->mb_x) v->c_avail = v->mb_type[0][s->block_index[i] - 1]; - vc1_decode_intra_block(v, v->block[v->cur_blk_idx][i], i, val, mquant, + vc1_decode_intra_block(v, v->block[v->cur_blk_idx][block_map[i]], i, val, mquant, (i & 4) ? v->codingset2 : v->codingset); if (CONFIG_GRAY && (i > 3) && (s->avctx->flags & AV_CODEC_FLAG_GRAY)) continue; - v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][i]); + v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[i]]); off = (i & 4) ? 0 : ((i & 1) * 8 + (i & 2) * 4 * s->linesize); block_cbp |= 0xf << (i << 2); } @@ -1786,7 +1809,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) val = ((cbp >> (5 - i)) & 1); off = (i & 4) ? 0 : (i & 1) * 8 + (i & 2) * 4 * s->linesize; if (val) { - pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][i], i, mquant, ttmb, + pat = vc1_decode_p_block(v, v->block[v->cur_blk_idx][block_map[i]], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : s->linesize, CONFIG_GRAY && (i & 4) && (s->avctx->flags & AV_CODEC_FLAG_GRAY), @@ -1800,7 +1823,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) } if (v->overlap && v->pq >= 9) ff_vc1_p_overlap_filter(v); - vc1_put_signed_blocks_clamped(v); + vc1_put_blocks_clamped(v, 1); v->cbp[s->mb_x] = block_cbp; v->ttblk[s->mb_x] = block_tt; @@ -2517,30 +2540,27 @@ static void vc1_decode_i_blocks(VC1Context *v) s->mb_x = s->mb_y = 0; s->mb_intra = 1; s->first_slice_line = 1; - for (s->mb_y = 0; s->mb_y < s->end_mb_y; s->mb_y++) { + for (s->mb_y = s->start_mb_y; s->mb_y < s->end_mb_y; s->mb_y++) { s->mb_x = 0; init_block_index(v); for (; s->mb_x < v->end_mb_x; s->mb_x++) { - uint8_t *dst[6]; ff_update_block_index(s); - dst[0] = s->dest[0]; - dst[1] = dst[0] + 8; - dst[2] = s->dest[0] + s->linesize * 8; - dst[3] = dst[2] + 8; - dst[4] = s->dest[1]; - dst[5] = s->dest[2]; - s->bdsp.clear_blocks(s->block[0]); + s->bdsp.clear_blocks(v->block[v->cur_blk_idx][0]); mb_pos = s->mb_x + s->mb_y * s->mb_width; s->current_picture.mb_type[mb_pos] = MB_TYPE_INTRA; s->current_picture.qscale_table[mb_pos] = v->pq; - s->current_picture.motion_val[1][s->block_index[0]][0] = 0; - s->current_picture.motion_val[1][s->block_index[0]][1] = 0; + for (int i = 0; i < 4; i++) { + s->current_picture.motion_val[1][s->block_index[i]][0] = 0; + s->current_picture.motion_val[1][s->block_index[i]][1] = 0; + } // do actual MB decoding and displaying cbp = get_vlc2(&v->s.gb, ff_msmp4_mb_i_vlc.table, MB_INTRA_VLC_BITS, 2); v->s.ac_pred = get_bits1(&v->s.gb); for (k = 0; k < 6; k++) { + v->mb_type[0][s->block_index[k]] = 1; + val = ((cbp >> (5 - k)) & 1); if (k < 4) { @@ -2550,52 +2570,30 @@ static void vc1_decode_i_blocks(VC1Context *v) } cbp |= val << (5 - k); - vc1_decode_i_block(v, s->block[k], k, val, (k < 4) ? v->codingset : v->codingset2); + vc1_decode_i_block(v, v->block[v->cur_blk_idx][block_map[k]], k, val, (k < 4) ? v->codingset : v->codingset2); if (CONFIG_GRAY && k > 3 && (s->avctx->flags & AV_CODEC_FLAG_GRAY)) continue; - v->vc1dsp.vc1_inv_trans_8x8(s->block[k]); - if (v->pq >= 9 && v->overlap) { - if (v->rangeredfrm) + v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[k]]); + } + + if (v->overlap && v->pq >= 9) { + ff_vc1_i_overlap_filter(v); + if (v->rangeredfrm) + for (k = 0; k < 6; k++) for (j = 0; j < 64; j++) - s->block[k][j] <<= 1; - s->idsp.put_signed_pixels_clamped(s->block[k], dst[k], - k & 4 ? s->uvlinesize - : s->linesize); - } else { - if (v->rangeredfrm) + v->block[v->cur_blk_idx][block_map[k]][j] <<= 1; + vc1_put_blocks_clamped(v, 1); + } else { + if (v->rangeredfrm) + for (k = 0; k < 6; k++) for (j = 0; j < 64; j++) - s->block[k][j] = (s->block[k][j] - 64) << 1; - s->idsp.put_pixels_clamped(s->block[k], dst[k], - k & 4 ? s->uvlinesize - : s->linesize); - } + v->block[v->cur_blk_idx][block_map[k]][j] = (v->block[v->cur_blk_idx][block_map[k]][j] - 64) << 1; + vc1_put_blocks_clamped(v, 0); } - if (v->pq >= 9 && v->overlap) { - if (s->mb_x) { - v->vc1dsp.vc1_h_overlap(s->dest[0], s->linesize); - v->vc1dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize, s->linesize); - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - v->vc1dsp.vc1_h_overlap(s->dest[1], s->uvlinesize); - v->vc1dsp.vc1_h_overlap(s->dest[2], s->uvlinesize); - } - } - v->vc1dsp.vc1_h_overlap(s->dest[0] + 8, s->linesize); - v->vc1dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize); - if (!s->first_slice_line) { - v->vc1dsp.vc1_v_overlap(s->dest[0], s->linesize); - v->vc1dsp.vc1_v_overlap(s->dest[0] + 8, s->linesize); - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - v->vc1dsp.vc1_v_overlap(s->dest[1], s->uvlinesize); - v->vc1dsp.vc1_v_overlap(s->dest[2], s->uvlinesize); - } - } - v->vc1dsp.vc1_v_overlap(s->dest[0] + 8 * s->linesize, s->linesize); - v->vc1dsp.vc1_v_overlap(s->dest[0] + 8 * s->linesize + 8, s->linesize); - } if (v->s.loop_filter) - ff_vc1_loop_filter_iblk(v, v->pq); + ff_vc1_i_loop_filter(v); if (get_bits_count(&s->gb) > v->bits) { ff_er_add_slice(&s->er, 0, 0, s->mb_x, s->mb_y, ER_MB_ERROR); @@ -2603,6 +2601,11 @@ static void vc1_decode_i_blocks(VC1Context *v) get_bits_count(&s->gb), v->bits); return; } + + v->topleft_blk_idx = (v->topleft_blk_idx + 1) % (v->end_mb_x + 2); + v->top_blk_idx = (v->top_blk_idx + 1) % (v->end_mb_x + 2); + v->left_blk_idx = (v->left_blk_idx + 1) % (v->end_mb_x + 2); + v->cur_blk_idx = (v->cur_blk_idx + 1) % (v->end_mb_x + 2); } if (!v->s.loop_filter) ff_mpeg_draw_horiz_band(s, s->mb_y * 16, 16); @@ -2672,10 +2675,9 @@ static void vc1_decode_i_blocks_adv(VC1Context *v) s->mb_x = 0; init_block_index(v); for (;s->mb_x < s->mb_width; s->mb_x++) { - int16_t (*block)[64] = v->block[v->cur_blk_idx]; mquant = v->pq; ff_update_block_index(s); - s->bdsp.clear_blocks(block[0]); + s->bdsp.clear_blocks(v->block[v->cur_blk_idx][0]); mb_pos = s->mb_x + s->mb_y * s->mb_stride; s->current_picture.mb_type[mb_pos + v->mb_off] = MB_TYPE_INTRA; for (int i = 0; i < 4; i++) { @@ -2717,17 +2719,17 @@ static void vc1_decode_i_blocks_adv(VC1Context *v) v->a_avail = !s->first_slice_line || (k == 2 || k == 3); v->c_avail = !!s->mb_x || (k == 1 || k == 3); - vc1_decode_i_block_adv(v, block[k], k, val, + vc1_decode_i_block_adv(v, v->block[v->cur_blk_idx][block_map[k]], k, val, (k < 4) ? v->codingset : v->codingset2, mquant); if (CONFIG_GRAY && k > 3 && (s->avctx->flags & AV_CODEC_FLAG_GRAY)) continue; - v->vc1dsp.vc1_inv_trans_8x8(block[k]); + v->vc1dsp.vc1_inv_trans_8x8(v->block[v->cur_blk_idx][block_map[k]]); } - if (v->overlap && v->condover != CONDOVER_NONE) + if (v->overlap && (v->pq >= 9 || v->condover != CONDOVER_NONE)) ff_vc1_i_overlap_filter(v); - vc1_put_signed_blocks_clamped(v); + vc1_put_blocks_clamped(v, 1); if (v->s.loop_filter) ff_vc1_i_loop_filter(v); diff --git a/chromium/third_party/ffmpeg/libavcodec/vc1_loopfilter.c b/chromium/third_party/ffmpeg/libavcodec/vc1_loopfilter.c index 4c0de7c0255..d43fa5b3aea 100644 --- a/chromium/third_party/ffmpeg/libavcodec/vc1_loopfilter.c +++ b/chromium/third_party/ffmpeg/libavcodec/vc1_loopfilter.c @@ -31,59 +31,74 @@ #include "vc1.h" #include "vc1dsp.h" -void ff_vc1_loop_filter_iblk(VC1Context *v, int pq) +static av_always_inline void vc1_h_overlap_filter(VC1Context *v, int16_t (*left_block)[64], + int16_t (*right_block)[64], int left_fieldtx, + int right_fieldtx, int block_num) { - MpegEncContext *s = &v->s; - int j; - if (!s->first_slice_line) { - v->vc1dsp.vc1_v_loop_filter16(s->dest[0], s->linesize, pq); - if (s->mb_x) - v->vc1dsp.vc1_h_loop_filter16(s->dest[0] - 16 * s->linesize, s->linesize, pq); - v->vc1dsp.vc1_h_loop_filter16(s->dest[0] - 16 * s->linesize + 8, s->linesize, pq); - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) - for (j = 0; j < 2; j++) { - v->vc1dsp.vc1_v_loop_filter8(s->dest[j + 1], s->uvlinesize, pq); - if (s->mb_x) - v->vc1dsp.vc1_h_loop_filter8(s->dest[j + 1] - 8 * s->uvlinesize, s->uvlinesize, pq); - } - } - v->vc1dsp.vc1_v_loop_filter16(s->dest[0] + 8 * s->linesize, s->linesize, pq); + switch (block_num) { + case 0: + v->vc1dsp.vc1_h_s_overlap(left_block[2], + right_block[0], + left_fieldtx ^ right_fieldtx ? 16 - 8 * left_fieldtx : 8, + left_fieldtx ^ right_fieldtx ? 16 - 8 * right_fieldtx : 8, + left_fieldtx || right_fieldtx ? 0 : 1); + break; - if (s->mb_y == s->end_mb_y - 1) { - if (s->mb_x) { - v->vc1dsp.vc1_h_loop_filter16(s->dest[0], s->linesize, pq); - if (!CONFIG_GRAY || !(s->avctx->flags & AV_CODEC_FLAG_GRAY)) { - v->vc1dsp.vc1_h_loop_filter8(s->dest[1], s->uvlinesize, pq); - v->vc1dsp.vc1_h_loop_filter8(s->dest[2], s->uvlinesize, pq); - } - } - v->vc1dsp.vc1_h_loop_filter16(s->dest[0] + 8, s->linesize, pq); - } -} + case 1: + v->vc1dsp.vc1_h_s_overlap(right_block[0], + right_block[2], + 8, + 8, + right_fieldtx ? 0 : 1); + break; -static av_always_inline void vc1_h_overlap_filter(VC1Context *v, int16_t (*left_block)[64], - int16_t (*right_block)[64], int block_num) -{ - if (left_block != right_block || (block_num & 5) == 1) { - if (block_num > 3) - v->vc1dsp.vc1_h_s_overlap(left_block[block_num], right_block[block_num]); - else if (block_num & 1) - v->vc1dsp.vc1_h_s_overlap(right_block[block_num - 1], right_block[block_num]); - else - v->vc1dsp.vc1_h_s_overlap(left_block[block_num + 1], right_block[block_num]); + case 2: + v->vc1dsp.vc1_h_s_overlap(!left_fieldtx && right_fieldtx ? left_block[2] + 8 : left_block[3], + left_fieldtx && !right_fieldtx ? right_block[0] + 8 : right_block[1], + left_fieldtx ^ right_fieldtx ? 16 - 8 * left_fieldtx : 8, + left_fieldtx ^ right_fieldtx ? 16 - 8 * right_fieldtx : 8, + left_fieldtx || right_fieldtx ? 2 : 1); + break; + + case 3: + v->vc1dsp.vc1_h_s_overlap(right_block[1], + right_block[3], + 8, + 8, + right_fieldtx ? 2 : 1); + break; + + case 4: + case 5: + v->vc1dsp.vc1_h_s_overlap(left_block[block_num], right_block[block_num], 8, 8, 1); + break; } } static av_always_inline void vc1_v_overlap_filter(VC1Context *v, int16_t (*top_block)[64], int16_t (*bottom_block)[64], int block_num) { - if (top_block != bottom_block || block_num & 2) { - if (block_num > 3) - v->vc1dsp.vc1_v_s_overlap(top_block[block_num], bottom_block[block_num]); - else if (block_num & 2) - v->vc1dsp.vc1_v_s_overlap(bottom_block[block_num - 2], bottom_block[block_num]); - else - v->vc1dsp.vc1_v_s_overlap(top_block[block_num + 2], bottom_block[block_num]); + switch (block_num) { + case 0: + v->vc1dsp.vc1_v_s_overlap(top_block[1], bottom_block[0]); + break; + + case 1: + v->vc1dsp.vc1_v_s_overlap(top_block[3], bottom_block[2]); + break; + + case 2: + v->vc1dsp.vc1_v_s_overlap(bottom_block[0], bottom_block[1]); + break; + + case 3: + v->vc1dsp.vc1_v_s_overlap(bottom_block[2], bottom_block[3]); + break; + + case 4: + case 5: + v->vc1dsp.vc1_v_s_overlap(top_block[block_num], bottom_block[block_num]); + break; } } @@ -108,22 +123,38 @@ void ff_vc1_i_overlap_filter(VC1Context *v) * borders. Therefore, the H overlap trails by one MB col and the * V overlap trails by one MB row. This is reflected in the time at which * we run the put_pixels loop, i.e. delayed by one row and one column. */ - for (i = 0; i < block_count; i++) - if (v->pq >= 9 || v->condover == CONDOVER_ALL || - (v->over_flags_plane[mb_pos] && ((i & 5) == 1 || (s->mb_x && v->over_flags_plane[mb_pos - 1])))) - vc1_h_overlap_filter(v, s->mb_x ? left_blk : cur_blk, cur_blk, i); + for (i = 0; i < block_count; i++) { + if (s->mb_x == 0 && (i & 5) != 1) + continue; + + if (v->pq >= 9 || (v->profile == PROFILE_ADVANCED && + (v->condover == CONDOVER_ALL || + (v->over_flags_plane[mb_pos] && + ((i & 5) == 1 || v->over_flags_plane[mb_pos - 1]))))) + vc1_h_overlap_filter(v, + s->mb_x ? left_blk : cur_blk, cur_blk, + v->fcm == ILACE_FRAME && s->mb_x && v->fieldtx_plane[mb_pos - 1], + v->fcm == ILACE_FRAME && v->fieldtx_plane[mb_pos], + i); + } if (v->fcm != ILACE_FRAME) for (i = 0; i < block_count; i++) { - if (s->mb_x && (v->pq >= 9 || v->condover == CONDOVER_ALL || - (v->over_flags_plane[mb_pos - 1] && - ((i & 2) || (!s->first_slice_line && v->over_flags_plane[mb_pos - 1 - s->mb_stride]))))) + if (s->first_slice_line && !(i & 2)) + continue; + + if (s->mb_x && + (v->pq >= 9 || (v->profile == PROFILE_ADVANCED && + (v->condover == CONDOVER_ALL || + (v->over_flags_plane[mb_pos - 1] && + ((i & 2) || v->over_flags_plane[mb_pos - 1 - s->mb_stride])))))) vc1_v_overlap_filter(v, s->first_slice_line ? left_blk : topleft_blk, left_blk, i); - if (s->mb_x == s->mb_width - 1) - if (v->pq >= 9 || v->condover == CONDOVER_ALL || - (v->over_flags_plane[mb_pos] && - ((i & 2) || (!s->first_slice_line && v->over_flags_plane[mb_pos - s->mb_stride])))) - vc1_v_overlap_filter(v, s->first_slice_line ? cur_blk : top_blk, cur_blk, i); + if (s->mb_x == s->mb_width - 1 && + (v->pq >= 9 || (v->profile == PROFILE_ADVANCED && + (v->condover == CONDOVER_ALL || + (v->over_flags_plane[mb_pos] && + ((i & 2) || v->over_flags_plane[mb_pos - s->mb_stride])))))) + vc1_v_overlap_filter(v, s->first_slice_line ? cur_blk : top_blk, cur_blk, i); } } @@ -132,6 +163,7 @@ void ff_vc1_p_overlap_filter(VC1Context *v) MpegEncContext *s = &v->s; int16_t (*topleft_blk)[64], (*top_blk)[64], (*left_blk)[64], (*cur_blk)[64]; int block_count = CONFIG_GRAY && (s->avctx->flags & AV_CODEC_FLAG_GRAY) ? 4 : 6; + int mb_pos = s->mb_x + s->mb_y * s->mb_stride; int i; topleft_blk = v->block[v->topleft_blk_idx]; @@ -139,18 +171,29 @@ void ff_vc1_p_overlap_filter(VC1Context *v) left_blk = v->block[v->left_blk_idx]; cur_blk = v->block[v->cur_blk_idx]; - for (i = 0; i < block_count; i++) - if (v->mb_type[0][s->block_index[i]] && (s->mb_x == 0 || v->mb_type[0][s->block_index[i] - 1])) - vc1_h_overlap_filter(v, s->mb_x ? left_blk : cur_blk, cur_blk, i); + for (i = 0; i < block_count; i++) { + if (s->mb_x == 0 && (i & 5) != 1) + continue; + + if (v->mb_type[0][s->block_index[i]] && v->mb_type[0][s->block_index[i] - 1]) + vc1_h_overlap_filter(v, + s->mb_x ? left_blk : cur_blk, cur_blk, + v->fcm == ILACE_FRAME && s->mb_x && v->fieldtx_plane[mb_pos - 1], + v->fcm == ILACE_FRAME && v->fieldtx_plane[mb_pos], + i); + } if (v->fcm != ILACE_FRAME) for (i = 0; i < block_count; i++) { - if (s->mb_x && v->mb_type[0][s->block_index[i] - 1] && - (s->first_slice_line || v->mb_type[0][s->block_index[i] - s->block_wrap[i] - 1])) + if (s->first_slice_line && !(i & 2)) + continue; + + if (s->mb_x && v->mb_type[0][s->block_index[i] - 2 + (i > 3)] && + v->mb_type[0][s->block_index[i] - s->block_wrap[i] - 2 + (i > 3)]) vc1_v_overlap_filter(v, s->first_slice_line ? left_blk : topleft_blk, left_blk, i); if (s->mb_x == s->mb_width - 1) if (v->mb_type[0][s->block_index[i]] && - (s->first_slice_line || v->mb_type[0][s->block_index[i] - s->block_wrap[i]])) + v->mb_type[0][s->block_index[i] - s->block_wrap[i]]) vc1_v_overlap_filter(v, s->first_slice_line ? cur_blk : top_blk, cur_blk, i); } } @@ -250,7 +293,7 @@ void ff_vc1_i_loop_filter(VC1Context *v) for (i = 0; i < block_count; i++) vc1_i_v_loop_filter(v, i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize - 8 : dest, flags, fieldtx, i); } - if (s->mb_x == s->mb_width - 1) { + if (s->mb_x == v->end_mb_x - 1) { dest += 16; fieldtx = v->fieldtx_plane[mb_pos - s->mb_stride]; for (i = 0; i < block_count; i++) @@ -265,7 +308,7 @@ void ff_vc1_i_loop_filter(VC1Context *v) for (i = 0; i < block_count; i++) vc1_i_v_loop_filter(v, i > 3 ? s->dest[i - 3] - 8 : dest, flags, fieldtx, i); } - if (s->mb_x == s->mb_width - 1) { + if (s->mb_x == v->end_mb_x - 1) { dest += 16; fieldtx = v->fieldtx_plane[mb_pos]; for (i = 0; i < block_count; i++) @@ -280,7 +323,7 @@ void ff_vc1_i_loop_filter(VC1Context *v) for (i = 0; i < block_count; i++) vc1_i_h_loop_filter(v, i > 3 ? s->dest[i - 3] - 16 * s->uvlinesize - 8 : dest, flags, i); } - if (s->mb_x == s->mb_width - 1) { + if (s->mb_x == v->end_mb_x - 1) { dest += 16; flags = s->mb_x == 0 ? LEFT_EDGE | RIGHT_EDGE : RIGHT_EDGE; for (i = 0; i < block_count; i++) @@ -295,7 +338,7 @@ void ff_vc1_i_loop_filter(VC1Context *v) for (i = 0; i < block_count; i++) vc1_i_h_loop_filter(v, i > 3 ? s->dest[i - 3] - 8 * s->uvlinesize - 8 : dest, flags, i); } - if (s->mb_x == s->mb_width - 1) { + if (s->mb_x == v->end_mb_x - 1) { flags = s->mb_x == 0 ? LEFT_EDGE | RIGHT_EDGE : RIGHT_EDGE; dest += 16; for (i = 0; i < block_count; i++) @@ -308,7 +351,7 @@ void ff_vc1_i_loop_filter(VC1Context *v) for (i = 0; i < block_count; i++) vc1_i_h_loop_filter(v, i > 3 ? s->dest[i - 3] - 8 : dest, flags, i); } - if (s->mb_x == s->mb_width - 1) { + if (s->mb_x == v->end_mb_x - 1) { dest += 16; flags = s->mb_x == 0 ? LEFT_EDGE | RIGHT_EDGE : RIGHT_EDGE; for (i = 0; i < block_count; i++) diff --git a/chromium/third_party/ffmpeg/libavcodec/vc1dec.c b/chromium/third_party/ffmpeg/libavcodec/vc1dec.c index 4f7b20a4a45..9519864c558 100644 --- a/chromium/third_party/ffmpeg/libavcodec/vc1dec.c +++ b/chromium/third_party/ffmpeg/libavcodec/vc1dec.c @@ -698,9 +698,7 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, slices[n_slices].buf); init_get_bits(&slices[n_slices].gb, slices[n_slices].buf, buf_size3 << 3); - /* assuming that the field marker is at the exact middle, - hope it's correct */ - slices[n_slices].mby_start = s->mb_height + 1 >> 1; + slices[n_slices].mby_start = avctx->coded_height + 31 >> 5; slices[n_slices].rawbuf = start; slices[n_slices].raw_size = size + 4; n_slices1 = n_slices - 1; // index of the last slice of the first field @@ -903,13 +901,41 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, s->picture_structure = PICT_BOTTOM_FIELD - v->tff; if ((ret = avctx->hwaccel->start_frame(avctx, buf_start, buf_start_second_field - buf_start)) < 0) goto err; - if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start, buf_start_second_field - buf_start)) < 0) - goto err; + + if (n_slices1 == -1) { + // no slices, decode the field as-is + if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start, buf_start_second_field - buf_start)) < 0) + goto err; + } else { + if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start, slices[0].rawbuf - buf_start)) < 0) + goto err; + + for (i = 0 ; i < n_slices1 + 1; i++) { + s->gb = slices[i].gb; + s->mb_y = slices[i].mby_start; + + v->pic_header_flag = get_bits1(&s->gb); + if (v->pic_header_flag) { + if (ff_vc1_parse_frame_header_adv(v, &s->gb) < 0) { + av_log(v->s.avctx, AV_LOG_ERROR, "Slice header damaged\n"); + ret = AVERROR_INVALIDDATA; + if (avctx->err_recognition & AV_EF_EXPLODE) + goto err; + continue; + } + } + + if ((ret = avctx->hwaccel->decode_slice(avctx, slices[i].rawbuf, slices[i].raw_size)) < 0) + goto err; + } + } + if ((ret = avctx->hwaccel->end_frame(avctx)) < 0) goto err; // decode second field s->gb = slices[n_slices1 + 1].gb; + s->mb_y = slices[n_slices1 + 1].mby_start; s->picture_structure = PICT_TOP_FIELD + v->tff; v->second_field = 1; v->pic_header_flag = 0; @@ -922,8 +948,35 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, if ((ret = avctx->hwaccel->start_frame(avctx, buf_start_second_field, (buf + buf_size) - buf_start_second_field)) < 0) goto err; - if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start_second_field, (buf + buf_size) - buf_start_second_field)) < 0) - goto err; + + if (n_slices - n_slices1 == 2) { + // no slices, decode the field as-is + if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start_second_field, (buf + buf_size) - buf_start_second_field)) < 0) + goto err; + } else { + if ((ret = avctx->hwaccel->decode_slice(avctx, buf_start_second_field, slices[n_slices1 + 2].rawbuf - buf_start_second_field)) < 0) + goto err; + + for (i = n_slices1 + 2; i < n_slices; i++) { + s->gb = slices[i].gb; + s->mb_y = slices[i].mby_start; + + v->pic_header_flag = get_bits1(&s->gb); + if (v->pic_header_flag) { + if (ff_vc1_parse_frame_header_adv(v, &s->gb) < 0) { + av_log(v->s.avctx, AV_LOG_ERROR, "Slice header damaged\n"); + ret = AVERROR_INVALIDDATA; + if (avctx->err_recognition & AV_EF_EXPLODE) + goto err; + continue; + } + } + + if ((ret = avctx->hwaccel->decode_slice(avctx, slices[i].rawbuf, slices[i].raw_size)) < 0) + goto err; + } + } + if ((ret = avctx->hwaccel->end_frame(avctx)) < 0) goto err; } else { @@ -1035,7 +1088,9 @@ static int vc1_decode_frame(AVCodecContext *avctx, void *data, av_log(v->s.avctx, AV_LOG_ERROR, "end mb y %d %d invalid\n", s->end_mb_y, s->start_mb_y); continue; } - if (!v->p_frame_skipped && s->pict_type != AV_PICTURE_TYPE_I && !v->cbpcy_vlc) { + if (((s->pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) || + (s->pict_type == AV_PICTURE_TYPE_B && !v->bi_type)) && + !v->cbpcy_vlc) { av_log(v->s.avctx, AV_LOG_ERROR, "missing cbpcy_vlc\n"); continue; } diff --git a/chromium/third_party/ffmpeg/libavcodec/vc1dsp.c b/chromium/third_party/ffmpeg/libavcodec/vc1dsp.c index 9239a4a1f5b..778b811f1ae 100644 --- a/chromium/third_party/ffmpeg/libavcodec/vc1dsp.c +++ b/chromium/third_party/ffmpeg/libavcodec/vc1dsp.c @@ -107,12 +107,13 @@ static void vc1_v_s_overlap_c(int16_t *top, int16_t *bottom) } } -static void vc1_h_s_overlap_c(int16_t *left, int16_t *right) +static void vc1_h_s_overlap_c(int16_t *left, int16_t *right, int left_stride, int right_stride, int flags) { int i; int a, b, c, d; int d1, d2; - int rnd1 = 4, rnd2 = 3; + int rnd1 = flags & 2 ? 3 : 4; + int rnd2 = 7 - rnd1; for (i = 0; i < 8; i++) { a = left[6]; b = left[7]; @@ -126,10 +127,12 @@ static void vc1_h_s_overlap_c(int16_t *left, int16_t *right) right[0] = ((c << 3) + d2 + rnd1) >> 3; right[1] = ((d << 3) + d1 + rnd2) >> 3; - right += 8; - left += 8; - rnd2 = 7 - rnd2; - rnd1 = 7 - rnd1; + right += right_stride; + left += left_stride; + if (flags & 1) { + rnd2 = 7 - rnd2; + rnd1 = 7 - rnd1; + } } } diff --git a/chromium/third_party/ffmpeg/libavcodec/vc1dsp.h b/chromium/third_party/ffmpeg/libavcodec/vc1dsp.h index 16b3528a75c..75db62b1b42 100644 --- a/chromium/third_party/ffmpeg/libavcodec/vc1dsp.h +++ b/chromium/third_party/ffmpeg/libavcodec/vc1dsp.h @@ -45,7 +45,7 @@ typedef struct VC1DSPContext { void (*vc1_v_overlap)(uint8_t *src, int stride); void (*vc1_h_overlap)(uint8_t *src, int stride); void (*vc1_v_s_overlap)(int16_t *top, int16_t *bottom); - void (*vc1_h_s_overlap)(int16_t *left, int16_t *right); + void (*vc1_h_s_overlap)(int16_t *left, int16_t *right, int left_stride, int right_stride, int flags); void (*vc1_v_loop_filter4)(uint8_t *src, int stride, int pq); void (*vc1_h_loop_filter4)(uint8_t *src, int stride, int pq); void (*vc1_v_loop_filter8)(uint8_t *src, int stride, int pq); diff --git a/chromium/third_party/ffmpeg/libavcodec/version.h b/chromium/third_party/ffmpeg/libavcodec/version.h index 5e71b488165..72e70945f7f 100644 --- a/chromium/third_party/ffmpeg/libavcodec/version.h +++ b/chromium/third_party/ffmpeg/libavcodec/version.h @@ -28,8 +28,8 @@ #include "libavutil/version.h" #define LIBAVCODEC_VERSION_MAJOR 58 -#define LIBAVCODEC_VERSION_MINOR 20 -#define LIBAVCODEC_VERSION_MICRO 101 +#define LIBAVCODEC_VERSION_MINOR 21 +#define LIBAVCODEC_VERSION_MICRO 106 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ diff --git a/chromium/third_party/ffmpeg/libavcodec/videotoolboxenc.c b/chromium/third_party/ffmpeg/libavcodec/videotoolboxenc.c index 7796a685c25..f311149e40b 100644 --- a/chromium/third_party/ffmpeg/libavcodec/videotoolboxenc.c +++ b/chromium/third_party/ffmpeg/libavcodec/videotoolboxenc.c @@ -1017,7 +1017,7 @@ static int vtenc_create_encoder(AVCodecContext *avctx, return AVERROR_EXTERNAL; } - if (vtctx->codec_id == AV_CODEC_ID_H264) { + if (vtctx->codec_id == AV_CODEC_ID_H264 && max_rate > 0) { // kVTCompressionPropertyKey_DataRateLimits is not available for HEVC bytes_per_second_value = max_rate >> 3; bytes_per_second = CFNumberCreate(kCFAllocatorDefault, @@ -1058,7 +1058,10 @@ static int vtenc_create_encoder(AVCodecContext *avctx, av_log(avctx, AV_LOG_ERROR, "Error setting max bitrate property: %d\n", status); return AVERROR_EXTERNAL; } + } + if (vtctx->codec_id == AV_CODEC_ID_H264) { + // kVTCompressionPropertyKey_ProfileLevel is not available for HEVC if (profile_level) { status = VTSessionSetProperty(vtctx->session, kVTCompressionPropertyKey_ProfileLevel, @@ -1262,19 +1265,16 @@ static int vtenc_create_encoder(AVCodecContext *avctx, return 0; } -static av_cold int vtenc_init(AVCodecContext *avctx) +static int vtenc_configure_encoder(AVCodecContext *avctx) { CFMutableDictionaryRef enc_info; CFMutableDictionaryRef pixel_buffer_info; CMVideoCodecType codec_type; VTEncContext *vtctx = avctx->priv_data; CFStringRef profile_level; - CFBooleanRef has_b_frames_cfbool; CFNumberRef gamma_level = NULL; int status; - pthread_once(&once_ctrl, loadVTEncSymbols); - codec_type = get_cm_codec_type(avctx->codec_id); if (!codec_type) { av_log(avctx, AV_LOG_ERROR, "Error: no mapping for AVCodecID %d\n", avctx->codec_id); @@ -1304,8 +1304,6 @@ static av_cold int vtenc_init(AVCodecContext *avctx) if (!get_vt_hevc_profile_level(avctx, &profile_level)) return AVERROR(EINVAL); } - vtctx->session = NULL; - enc_info = CFDictionaryCreateMutable( kCFAllocatorDefault, 20, @@ -1335,8 +1333,6 @@ static av_cold int vtenc_init(AVCodecContext *avctx) pixel_buffer_info = NULL; } - pthread_mutex_init(&vtctx->lock, NULL); - pthread_cond_init(&vtctx->cv_sample_sent, NULL); vtctx->dts_delta = vtctx->has_b_frames ? -1 : 0; get_cv_transfer_function(avctx, &vtctx->transfer_function, &gamma_level); @@ -1363,8 +1359,32 @@ static av_cold int vtenc_init(AVCodecContext *avctx) pixel_buffer_info, &vtctx->session); - if (status < 0) - goto init_cleanup; +init_cleanup: + if (gamma_level) + CFRelease(gamma_level); + + if (pixel_buffer_info) + CFRelease(pixel_buffer_info); + + CFRelease(enc_info); + + return status; +} + +static av_cold int vtenc_init(AVCodecContext *avctx) +{ + VTEncContext *vtctx = avctx->priv_data; + CFBooleanRef has_b_frames_cfbool; + int status; + + pthread_once(&once_ctrl, loadVTEncSymbols); + + pthread_mutex_init(&vtctx->lock, NULL); + pthread_cond_init(&vtctx->cv_sample_sent, NULL); + + vtctx->session = NULL; + status = vtenc_configure_encoder(avctx); + if (status) return status; status = VTSessionCopyProperty(vtctx->session, kVTCompressionPropertyKey_AllowFrameReordering, @@ -1378,16 +1398,7 @@ static av_cold int vtenc_init(AVCodecContext *avctx) } avctx->has_b_frames = vtctx->has_b_frames; -init_cleanup: - if (gamma_level) - CFRelease(gamma_level); - - if (pixel_buffer_info) - CFRelease(pixel_buffer_info); - - CFRelease(enc_info); - - return status; + return 0; } static void vtenc_get_frame_info(CMSampleBufferRef buffer, bool *is_key_frame) @@ -2167,8 +2178,27 @@ static int create_cv_pixel_buffer(AVCodecContext *avctx, #if TARGET_OS_IPHONE pix_buf_pool = VTCompressionSessionGetPixelBufferPool(vtctx->session); if (!pix_buf_pool) { - av_log(avctx, AV_LOG_ERROR, "Could not get pixel buffer pool.\n"); - return AVERROR_EXTERNAL; + /* On iOS, the VT session is invalidated when the APP switches from + * foreground to background and vice versa. Fetch the actual error code + * of the VT session to detect that case and restart the VT session + * accordingly. */ + OSStatus vtstatus; + + vtstatus = VTCompressionSessionPrepareToEncodeFrames(vtctx->session); + if (vtstatus == kVTInvalidSessionErr) { + CFRelease(vtctx->session); + vtctx->session = NULL; + status = vtenc_configure_encoder(avctx); + if (status == 0) + pix_buf_pool = VTCompressionSessionGetPixelBufferPool(vtctx->session); + } + if (!pix_buf_pool) { + av_log(avctx, AV_LOG_ERROR, "Could not get pixel buffer pool.\n"); + return AVERROR_EXTERNAL; + } + else + av_log(avctx, AV_LOG_WARNING, "VT session restarted because of a " + "kVTInvalidSessionErr error.\n"); } status = CVPixelBufferPoolCreatePixelBuffer(NULL, @@ -2473,13 +2503,14 @@ static av_cold int vtenc_close(AVCodecContext *avctx) { VTEncContext *vtctx = avctx->priv_data; + pthread_cond_destroy(&vtctx->cv_sample_sent); + pthread_mutex_destroy(&vtctx->lock); + if(!vtctx->session) return 0; VTCompressionSessionCompleteFrames(vtctx->session, kCMTimeIndefinite); clear_frame_queue(vtctx); - pthread_cond_destroy(&vtctx->cv_sample_sent); - pthread_mutex_destroy(&vtctx->lock); CFRelease(vtctx->session); vtctx->session = NULL; diff --git a/chromium/third_party/ffmpeg/libavcodec/vp8.c b/chromium/third_party/ffmpeg/libavcodec/vp8.c index 62b9f8bc2da..3adfeac3d94 100644 --- a/chromium/third_party/ffmpeg/libavcodec/vp8.c +++ b/chromium/third_party/ffmpeg/libavcodec/vp8.c @@ -492,9 +492,11 @@ static void fade(uint8_t *dst, ptrdiff_t dst_linesize, { int i, j; for (j = 0; j < height; j++) { + const uint8_t *src2 = src + j * src_linesize; + uint8_t *dst2 = dst + j * dst_linesize; for (i = 0; i < width; i++) { - uint8_t y = src[j * src_linesize + i]; - dst[j * dst_linesize + i] = av_clip_uint8(y + ((y * beta) >> 8) + alpha); + uint8_t y = src2[i]; + dst2[i] = av_clip_uint8(y + ((y * beta) >> 8) + alpha); } } } diff --git a/chromium/third_party/ffmpeg/libavcodec/vp8_parser.c b/chromium/third_party/ffmpeg/libavcodec/vp8_parser.c index 609f5077d1a..7ce35e7535c 100644 --- a/chromium/third_party/ffmpeg/libavcodec/vp8_parser.c +++ b/chromium/third_party/ffmpeg/libavcodec/vp8_parser.c @@ -28,6 +28,9 @@ static int parse(AVCodecParserContext *s, unsigned int frame_type; unsigned int profile; + *poutbuf = buf; + *poutbuf_size = buf_size; + if (buf_size < 3) return buf_size; @@ -67,8 +70,6 @@ static int parse(AVCodecParserContext *s, s->coded_height = FFALIGN(height, 16); } - *poutbuf = buf; - *poutbuf_size = buf_size; return buf_size; } diff --git a/chromium/third_party/ffmpeg/libavdevice/decklink_common.cpp b/chromium/third_party/ffmpeg/libavdevice/decklink_common.cpp index d8cced7c740..aab9d85b940 100644 --- a/chromium/third_party/ffmpeg/libavdevice/decklink_common.cpp +++ b/chromium/third_party/ffmpeg/libavdevice/decklink_common.cpp @@ -77,36 +77,6 @@ static IDeckLinkIterator *decklink_create_iterator(AVFormatContext *avctx) return iter; } -#ifdef _WIN32 -static char *dup_wchar_to_utf8(wchar_t *w) -{ - char *s = NULL; - int l = WideCharToMultiByte(CP_UTF8, 0, w, -1, 0, 0, 0, 0); - s = (char *) av_malloc(l); - if (s) - WideCharToMultiByte(CP_UTF8, 0, w, -1, s, l, 0, 0); - return s; -} -#define DECKLINK_STR OLECHAR * -#define DECKLINK_STRDUP dup_wchar_to_utf8 -#define DECKLINK_FREE(s) SysFreeString(s) -#elif defined(__APPLE__) -static char *dup_cfstring_to_utf8(CFStringRef w) -{ - char s[256]; - CFStringGetCString(w, s, 255, kCFStringEncodingUTF8); - return av_strdup(s); -} -#define DECKLINK_STR const __CFString * -#define DECKLINK_STRDUP dup_cfstring_to_utf8 -#define DECKLINK_FREE(s) CFRelease(s) -#else -#define DECKLINK_STR const char * -#define DECKLINK_STRDUP av_strdup -/* free() is needed for a string returned by the DeckLink SDL. */ -#define DECKLINK_FREE(s) free((void *) s) -#endif - HRESULT ff_decklink_get_display_name(IDeckLink *This, const char **displayName) { DECKLINK_STR tmpDisplayName; diff --git a/chromium/third_party/ffmpeg/libavdevice/decklink_common.h b/chromium/third_party/ffmpeg/libavdevice/decklink_common.h index 57ee7d1d689..96b001c2d88 100644 --- a/chromium/third_party/ffmpeg/libavdevice/decklink_common.h +++ b/chromium/third_party/ffmpeg/libavdevice/decklink_common.h @@ -34,6 +34,36 @@ #define DECKLINK_BOOL bool #endif +#ifdef _WIN32 +static char *dup_wchar_to_utf8(wchar_t *w) +{ + char *s = NULL; + int l = WideCharToMultiByte(CP_UTF8, 0, w, -1, 0, 0, 0, 0); + s = (char *) av_malloc(l); + if (s) + WideCharToMultiByte(CP_UTF8, 0, w, -1, s, l, 0, 0); + return s; +} +#define DECKLINK_STR OLECHAR * +#define DECKLINK_STRDUP dup_wchar_to_utf8 +#define DECKLINK_FREE(s) SysFreeString(s) +#elif defined(__APPLE__) +static char *dup_cfstring_to_utf8(CFStringRef w) +{ + char s[256]; + CFStringGetCString(w, s, 255, kCFStringEncodingUTF8); + return av_strdup(s); +} +#define DECKLINK_STR const __CFString * +#define DECKLINK_STRDUP dup_cfstring_to_utf8 +#define DECKLINK_FREE(s) CFRelease(s) +#else +#define DECKLINK_STR const char * +#define DECKLINK_STRDUP av_strdup +/* free() is needed for a string returned by the DeckLink SDL. */ +#define DECKLINK_FREE(s) free((void *) s) +#endif + class decklink_output_callback; class decklink_input_callback; @@ -56,7 +86,6 @@ struct decklink_ctx { IDeckLinkConfiguration *cfg; IDeckLinkAttributes *attr; decklink_output_callback *output_callback; - decklink_input_callback *input_callback; /* DeckLink mode information */ BMDTimeValue bmd_tb_den; @@ -64,6 +93,7 @@ struct decklink_ctx { BMDDisplayMode bmd_mode; BMDVideoConnection video_input; BMDAudioConnection audio_input; + BMDTimecodeFormat tc_format; int bmd_width; int bmd_height; int bmd_field_dominance; @@ -140,6 +170,17 @@ static const BMDVideoConnection decklink_video_connection_map[] = { bmdVideoConnectionSVideo, }; +static const BMDTimecodeFormat decklink_timecode_format_map[] = { + (BMDTimecodeFormat)0, + bmdTimecodeRP188VITC1, + bmdTimecodeRP188VITC2, + bmdTimecodeRP188LTC, + bmdTimecodeRP188Any, + bmdTimecodeVITC, + bmdTimecodeVITCField2, + bmdTimecodeSerial, +}; + HRESULT ff_decklink_get_display_name(IDeckLink *This, const char **displayName); int ff_decklink_set_configs(AVFormatContext *avctx, decklink_direction_t direction); int ff_decklink_set_format(AVFormatContext *avctx, int width, int height, int tb_num, int tb_den, enum AVFieldOrder field_order, decklink_direction_t direction = DIRECTION_OUT, int num = 0); diff --git a/chromium/third_party/ffmpeg/libavdevice/decklink_common_c.h b/chromium/third_party/ffmpeg/libavdevice/decklink_common_c.h index 08e9f9bbd5e..32a5d70ee19 100644 --- a/chromium/third_party/ffmpeg/libavdevice/decklink_common_c.h +++ b/chromium/third_party/ffmpeg/libavdevice/decklink_common_c.h @@ -50,6 +50,7 @@ struct decklink_cctx { DecklinkPtsSource video_pts_source; int audio_input; int video_input; + int tc_format; int draw_bars; char *format_code; int raw_format; diff --git a/chromium/third_party/ffmpeg/libavdevice/decklink_dec.cpp b/chromium/third_party/ffmpeg/libavdevice/decklink_dec.cpp index 510637676c5..7fabef231c7 100644 --- a/chromium/third_party/ffmpeg/libavdevice/decklink_dec.cpp +++ b/chromium/third_party/ffmpeg/libavdevice/decklink_dec.cpp @@ -21,6 +21,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include <atomic> +using std::atomic; + /* Include internal.h first to avoid conflict between winsock.h (used by * DeckLink headers) and winsock2.h (used by libavformat) in MSVC++ builds */ extern "C" { @@ -98,6 +101,44 @@ static VANCLineNumber vanc_line_numbers[] = { {bmdModeUnknown, 0, -1, -1, -1} }; +class decklink_allocator : public IDeckLinkMemoryAllocator +{ +public: + decklink_allocator(): _refs(1) { } + virtual ~decklink_allocator() { } + + // IDeckLinkMemoryAllocator methods + virtual HRESULT STDMETHODCALLTYPE AllocateBuffer(unsigned int bufferSize, void* *allocatedBuffer) + { + void *buf = av_malloc(bufferSize + AV_INPUT_BUFFER_PADDING_SIZE); + if (!buf) + return E_OUTOFMEMORY; + *allocatedBuffer = buf; + return S_OK; + } + virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(void* buffer) + { + av_free(buffer); + return S_OK; + } + virtual HRESULT STDMETHODCALLTYPE Commit() { return S_OK; } + virtual HRESULT STDMETHODCALLTYPE Decommit() { return S_OK; } + + // IUnknown methods + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) { return E_NOINTERFACE; } + virtual ULONG STDMETHODCALLTYPE AddRef(void) { return ++_refs; } + virtual ULONG STDMETHODCALLTYPE Release(void) + { + int ret = --_refs; + if (!ret) + delete this; + return ret; + } + +private: + std::atomic<int> _refs; +}; + extern "C" { static void decklink_object_free(void *opaque, uint8_t *data) { @@ -555,8 +596,7 @@ public: virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(IDeckLinkVideoInputFrame*, IDeckLinkAudioInputPacket*); private: - ULONG m_refCount; - pthread_mutex_t m_mutex; + std::atomic<int> _refs; AVFormatContext *avctx; decklink_ctx *ctx; int no_video; @@ -564,42 +604,30 @@ private: int64_t initial_audio_pts; }; -decklink_input_callback::decklink_input_callback(AVFormatContext *_avctx) : m_refCount(0) +decklink_input_callback::decklink_input_callback(AVFormatContext *_avctx) : _refs(1) { avctx = _avctx; decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data; ctx = (struct decklink_ctx *)cctx->ctx; no_video = 0; initial_audio_pts = initial_video_pts = AV_NOPTS_VALUE; - pthread_mutex_init(&m_mutex, NULL); } decklink_input_callback::~decklink_input_callback() { - pthread_mutex_destroy(&m_mutex); } ULONG decklink_input_callback::AddRef(void) { - pthread_mutex_lock(&m_mutex); - m_refCount++; - pthread_mutex_unlock(&m_mutex); - - return (ULONG)m_refCount; + return ++_refs; } ULONG decklink_input_callback::Release(void) { - pthread_mutex_lock(&m_mutex); - m_refCount--; - pthread_mutex_unlock(&m_mutex); - - if (m_refCount == 0) { + int ret = --_refs; + if (!ret) delete this; - return 0; - } - - return (ULONG)m_refCount; + return ret; } static int64_t get_pkt_pts(IDeckLinkVideoInputFrame *videoFrame, @@ -724,6 +752,35 @@ HRESULT decklink_input_callback::VideoInputFrameArrived( "- Frames dropped %u\n", ctx->frameCount, ++ctx->dropped); } no_video = 0; + + // Handle Timecode (if requested) + if (ctx->tc_format) { + IDeckLinkTimecode *timecode; + if (videoFrame->GetTimecode(ctx->tc_format, &timecode) == S_OK) { + const char *tc = NULL; + DECKLINK_STR decklink_tc; + if (timecode->GetString(&decklink_tc) == S_OK) { + tc = DECKLINK_STRDUP(decklink_tc); + DECKLINK_FREE(decklink_tc); + } + timecode->Release(); + if (tc) { + AVDictionary* metadata_dict = NULL; + int metadata_len; + uint8_t* packed_metadata; + if (av_dict_set(&metadata_dict, "timecode", tc, AV_DICT_DONT_STRDUP_VAL) >= 0) { + packed_metadata = av_packet_pack_dictionary(metadata_dict, &metadata_len); + av_dict_free(&metadata_dict); + if (packed_metadata) { + if (av_packet_add_side_data(&pkt, AV_PKT_DATA_STRINGS_METADATA, packed_metadata, metadata_len) < 0) + av_freep(&packed_metadata); + } + } + } + } else { + av_log(avctx, AV_LOG_DEBUG, "Unable to find timecode.\n"); + } + } } pkt.pts = get_pkt_pts(videoFrame, audioFrame, wallclock, abs_wallclock, ctx->video_pts_source, ctx->video_st->time_base, &initial_video_pts, cctx->copyts); @@ -924,6 +981,8 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx) { struct decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data; struct decklink_ctx *ctx; + class decklink_allocator *allocator; + class decklink_input_callback *input_callback; AVStream *st; HRESULT result; char fname[1024]; @@ -939,6 +998,8 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx) ctx->teletext_lines = cctx->teletext_lines; ctx->preroll = cctx->preroll; ctx->duplex_mode = cctx->duplex_mode; + if (cctx->tc_format > 0 && (unsigned int)cctx->tc_format < FF_ARRAY_ELEMS(decklink_timecode_format_map)) + ctx->tc_format = decklink_timecode_format_map[cctx->tc_format]; if (cctx->video_input > 0 && (unsigned int)cctx->video_input < FF_ARRAY_ELEMS(decklink_video_connection_map)) ctx->video_input = decklink_video_connection_map[cctx->video_input]; if (cctx->audio_input > 0 && (unsigned int)cctx->audio_input < FF_ARRAY_ELEMS(decklink_audio_connection_map)) @@ -1014,8 +1075,21 @@ av_cold int ff_decklink_read_header(AVFormatContext *avctx) goto error; } - ctx->input_callback = new decklink_input_callback(avctx); - ctx->dli->SetCallback(ctx->input_callback); + input_callback = new decklink_input_callback(avctx); + ret = (ctx->dli->SetCallback(input_callback) == S_OK ? 0 : AVERROR_EXTERNAL); + input_callback->Release(); + if (ret < 0) { + av_log(avctx, AV_LOG_ERROR, "Cannot set input callback\n"); + goto error; + } + + allocator = new decklink_allocator(); + ret = (ctx->dli->SetVideoInputFrameMemoryAllocator(allocator) == S_OK ? 0 : AVERROR_EXTERNAL); + allocator->Release(); + if (ret < 0) { + av_log(avctx, AV_LOG_ERROR, "Cannot set custom memory allocator\n"); + goto error; + } if (mode_num == 0 && !cctx->format_code) { if (decklink_autodetect(cctx) < 0) { @@ -1179,6 +1253,15 @@ int ff_decklink_read_packet(AVFormatContext *avctx, AVPacket *pkt) avpacket_queue_get(&ctx->queue, pkt, 1); + if (ctx->tc_format && !(av_dict_get(ctx->video_st->metadata, "timecode", NULL, 0))) { + int size; + const uint8_t *side_metadata = av_packet_get_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA, &size); + if (side_metadata) { + if (av_packet_unpack_dictionary(side_metadata, size, &ctx->video_st->metadata) < 0) + av_log(avctx, AV_LOG_ERROR, "Unable to set timecode\n"); + } + } + return 0; } diff --git a/chromium/third_party/ffmpeg/libavdevice/decklink_dec_c.c b/chromium/third_party/ffmpeg/libavdevice/decklink_dec_c.c index 47018dc681a..6ab3819375b 100644 --- a/chromium/third_party/ffmpeg/libavdevice/decklink_dec_c.c +++ b/chromium/third_party/ffmpeg/libavdevice/decklink_dec_c.c @@ -48,6 +48,15 @@ static const AVOption options[] = { { "unset", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0}, 0, 0, DEC, "duplex_mode"}, { "half", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 1}, 0, 0, DEC, "duplex_mode"}, { "full", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 2}, 0, 0, DEC, "duplex_mode"}, + { "timecode_format", "timecode format", OFFSET(tc_format), AV_OPT_TYPE_INT, { .i64 = 0}, 0, 7, DEC, "tc_format"}, + { "none", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0}, 0, 0, DEC, "tc_format"}, + { "rp188vitc", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 1}, 0, 0, DEC, "tc_format"}, + { "rp188vitc2", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 2}, 0, 0, DEC, "tc_format"}, + { "rp188ltc", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 3}, 0, 0, DEC, "tc_format"}, + { "rp188any", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 4}, 0, 0, DEC, "tc_format"}, + { "vitc", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 5}, 0, 0, DEC, "tc_format"}, + { "vitc2", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 6}, 0, 0, DEC, "tc_format"}, + { "serial", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 7}, 0, 0, DEC, "tc_format"}, { "video_input", "video input", OFFSET(video_input), AV_OPT_TYPE_INT, { .i64 = 0}, 0, 6, DEC, "video_input"}, { "unset", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0}, 0, 0, DEC, "video_input"}, { "sdi", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 1}, 0, 0, DEC, "video_input"}, diff --git a/chromium/third_party/ffmpeg/libavdevice/v4l2enc.c b/chromium/third_party/ffmpeg/libavdevice/v4l2enc.c index 85200d0a363..1c36f81f90b 100644 --- a/chromium/third_party/ffmpeg/libavdevice/v4l2enc.c +++ b/chromium/third_party/ffmpeg/libavdevice/v4l2enc.c @@ -106,7 +106,7 @@ static const AVClass v4l2_class = { }; AVOutputFormat ff_v4l2_muxer = { - .name = "v4l2", + .name = "video4linux2,v4l2", .long_name = NULL_IF_CONFIG_SMALL("Video4Linux2 output device"), .priv_data_size = sizeof(V4L2Context), .audio_codec = AV_CODEC_ID_NONE, diff --git a/chromium/third_party/ffmpeg/libavdevice/version.h b/chromium/third_party/ffmpeg/libavdevice/version.h index 38d3d6ac78e..99041492887 100644 --- a/chromium/third_party/ffmpeg/libavdevice/version.h +++ b/chromium/third_party/ffmpeg/libavdevice/version.h @@ -29,7 +29,7 @@ #define LIBAVDEVICE_VERSION_MAJOR 58 #define LIBAVDEVICE_VERSION_MINOR 4 -#define LIBAVDEVICE_VERSION_MICRO 100 +#define LIBAVDEVICE_VERSION_MICRO 101 #define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \ LIBAVDEVICE_VERSION_MINOR, \ diff --git a/chromium/third_party/ffmpeg/libavfilter/Makefile b/chromium/third_party/ffmpeg/libavfilter/Makefile index 5b4be4966c9..86b04e3efba 100644 --- a/chromium/third_party/ffmpeg/libavfilter/Makefile +++ b/chromium/third_party/ffmpeg/libavfilter/Makefile @@ -149,14 +149,16 @@ OBJS-$(CONFIG_ASS_FILTER) += vf_subtitles.o OBJS-$(CONFIG_ATADENOISE_FILTER) += vf_atadenoise.o OBJS-$(CONFIG_AVGBLUR_FILTER) += vf_avgblur.o OBJS-$(CONFIG_AVGBLUR_OPENCL_FILTER) += vf_avgblur_opencl.o opencl.o \ - opencl/avgblur.o + opencl/avgblur.o boxblur.o OBJS-$(CONFIG_BBOX_FILTER) += bbox.o vf_bbox.o OBJS-$(CONFIG_BENCH_FILTER) += f_bench.o OBJS-$(CONFIG_BITPLANENOISE_FILTER) += vf_bitplanenoise.o OBJS-$(CONFIG_BLACKDETECT_FILTER) += vf_blackdetect.o OBJS-$(CONFIG_BLACKFRAME_FILTER) += vf_blackframe.o OBJS-$(CONFIG_BLEND_FILTER) += vf_blend.o framesync.o -OBJS-$(CONFIG_BOXBLUR_FILTER) += vf_boxblur.o +OBJS-$(CONFIG_BOXBLUR_FILTER) += vf_boxblur.o boxblur.o +OBJS-$(CONFIG_BOXBLUR_OPENCL_FILTER) += vf_avgblur_opencl.o opencl.o \ + opencl/avgblur.o boxblur.o OBJS-$(CONFIG_BWDIF_FILTER) += vf_bwdif.o OBJS-$(CONFIG_CHROMAKEY_FILTER) += vf_chromakey.o OBJS-$(CONFIG_CIESCOPE_FILTER) += vf_ciescope.o @@ -166,10 +168,10 @@ OBJS-$(CONFIG_COLORCHANNELMIXER_FILTER) += vf_colorchannelmixer.o OBJS-$(CONFIG_COLORKEY_FILTER) += vf_colorkey.o OBJS-$(CONFIG_COLORLEVELS_FILTER) += vf_colorlevels.o OBJS-$(CONFIG_COLORMATRIX_FILTER) += vf_colormatrix.o -OBJS-$(CONFIG_COLORSPACE_FILTER) += vf_colorspace.o colorspacedsp.o +OBJS-$(CONFIG_COLORSPACE_FILTER) += vf_colorspace.o colorspace.o colorspacedsp.o OBJS-$(CONFIG_CONVOLUTION_FILTER) += vf_convolution.o OBJS-$(CONFIG_CONVOLUTION_OPENCL_FILTER) += vf_convolution_opencl.o opencl.o \ - opencl/convolution.o + opencl/convolution.o OBJS-$(CONFIG_CONVOLVE_FILTER) += vf_convolve.o framesync.o OBJS-$(CONFIG_COPY_FILTER) += vf_copy.o OBJS-$(CONFIG_COREIMAGE_FILTER) += vf_coreimage.o @@ -226,6 +228,7 @@ OBJS-$(CONFIG_FSPP_FILTER) += vf_fspp.o OBJS-$(CONFIG_GBLUR_FILTER) += vf_gblur.o OBJS-$(CONFIG_GEQ_FILTER) += vf_geq.o OBJS-$(CONFIG_GRADFUN_FILTER) += vf_gradfun.o +OBJS-$(CONFIG_GREYEDGE_FILTER) += vf_colorconstancy.o OBJS-$(CONFIG_HALDCLUT_FILTER) += vf_lut3d.o framesync.o OBJS-$(CONFIG_HFLIP_FILTER) += vf_hflip.o OBJS-$(CONFIG_HISTEQ_FILTER) += vf_histeq.o @@ -246,6 +249,7 @@ OBJS-$(CONFIG_INTERLACE_FILTER) += vf_tinterlace.o OBJS-$(CONFIG_INTERLEAVE_FILTER) += f_interleave.o OBJS-$(CONFIG_KERNDEINT_FILTER) += vf_kerndeint.o OBJS-$(CONFIG_LENSCORRECTION_FILTER) += vf_lenscorrection.o +OBJS-$(CONFIG_LENSFUN_FILTER) += vf_lensfun.o OBJS-$(CONFIG_LIBVMAF_FILTER) += vf_libvmaf.o framesync.o OBJS-$(CONFIG_LIMITER_FILTER) += vf_limiter.o OBJS-$(CONFIG_LOOP_FILTER) += f_loop.o @@ -292,6 +296,8 @@ OBJS-$(CONFIG_PP_FILTER) += vf_pp.o OBJS-$(CONFIG_PP7_FILTER) += vf_pp7.o OBJS-$(CONFIG_PREMULTIPLY_FILTER) += vf_premultiply.o framesync.o OBJS-$(CONFIG_PREWITT_FILTER) += vf_convolution.o +OBJS-$(CONFIG_PREWITT_OPENCL_FILTER) += vf_convolution_opencl.o opencl.o \ + opencl/convolution.o OBJS-$(CONFIG_PROCAMP_VAAPI_FILTER) += vf_procamp_vaapi.o vaapi_vpp.o OBJS-$(CONFIG_PROGRAM_OPENCL_FILTER) += vf_program_opencl.o opencl.o framesync.o OBJS-$(CONFIG_PSEUDOCOLOR_FILTER) += vf_pseudocolor.o @@ -308,6 +314,8 @@ OBJS-$(CONFIG_REMOVELOGO_FILTER) += bbox.o lswsutils.o lavfutils.o v OBJS-$(CONFIG_REPEATFIELDS_FILTER) += vf_repeatfields.o OBJS-$(CONFIG_REVERSE_FILTER) += f_reverse.o OBJS-$(CONFIG_ROBERTS_FILTER) += vf_convolution.o +OBJS-$(CONFIG_ROBERTS_OPENCL_FILTER) += vf_convolution_opencl.o opencl.o \ + opencl/convolution.o OBJS-$(CONFIG_ROTATE_FILTER) += vf_rotate.o OBJS-$(CONFIG_SAB_FILTER) += vf_sab.o OBJS-$(CONFIG_SCALE_FILTER) += vf_scale.o scale.o @@ -336,9 +344,11 @@ OBJS-$(CONFIG_SIGNALSTATS_FILTER) += vf_signalstats.o OBJS-$(CONFIG_SIGNATURE_FILTER) += vf_signature.o OBJS-$(CONFIG_SMARTBLUR_FILTER) += vf_smartblur.o OBJS-$(CONFIG_SOBEL_FILTER) += vf_convolution.o +OBJS-$(CONFIG_SOBEL_OPENCL_FILTER) += vf_convolution_opencl.o opencl.o \ + opencl/convolution.o OBJS-$(CONFIG_SPLIT_FILTER) += split.o OBJS-$(CONFIG_SPP_FILTER) += vf_spp.o -OBJS-$(CONFIG_SRCNN_FILTER) += vf_srcnn.o +OBJS-$(CONFIG_SR_FILTER) += vf_sr.o OBJS-$(CONFIG_SSIM_FILTER) += vf_ssim.o framesync.o OBJS-$(CONFIG_STEREO3D_FILTER) += vf_stereo3d.o OBJS-$(CONFIG_STREAMSELECT_FILTER) += f_streamselect.o framesync.o @@ -356,6 +366,8 @@ OBJS-$(CONFIG_TINTERLACE_FILTER) += vf_tinterlace.o OBJS-$(CONFIG_TLUT2_FILTER) += vf_lut2.o framesync.o OBJS-$(CONFIG_TMIX_FILTER) += vf_mix.o framesync.o OBJS-$(CONFIG_TONEMAP_FILTER) += vf_tonemap.o +OBJS-$(CONFIG_TONEMAP_OPENCL_FILTER) += vf_tonemap_opencl.o colorspace.o opencl.o \ + opencl/tonemap.o opencl/colorspace_common.o OBJS-$(CONFIG_TRANSPOSE_FILTER) += vf_transpose.o OBJS-$(CONFIG_TRIM_FILTER) += trim.o OBJS-$(CONFIG_UNPREMULTIPLY_FILTER) += vf_premultiply.o framesync.o diff --git a/chromium/third_party/ffmpeg/libavfilter/af_afir.c b/chromium/third_party/ffmpeg/libavfilter/af_afir.c index 75de14729da..a4a7160de17 100644 --- a/chromium/third_party/ffmpeg/libavfilter/af_afir.c +++ b/chromium/third_party/ffmpeg/libavfilter/af_afir.c @@ -191,7 +191,7 @@ static void drawtext(AVFrame *pic, int x, int y, const char *txt, uint32_t color static void draw_line(AVFrame *out, int x0, int y0, int x1, int y1, uint32_t color) { - int dx = FFABS(x1-x0), sx = x0 < x1 ? 1 : -1; + int dx = FFABS(x1-x0); int dy = FFABS(y1-y0), sy = y0 < y1 ? 1 : -1; int err = (dx>dy ? dx : -dy) / 2, e2; @@ -205,7 +205,7 @@ static void draw_line(AVFrame *out, int x0, int y0, int x1, int y1, uint32_t col if (e2 >-dx) { err -= dy; - x0 += sx; + x0--; } if (e2 < dy) { diff --git a/chromium/third_party/ffmpeg/libavfilter/af_aiir.c b/chromium/third_party/ffmpeg/libavfilter/af_aiir.c index 65c82011374..9a4769c25f8 100644 --- a/chromium/third_party/ffmpeg/libavfilter/af_aiir.c +++ b/chromium/third_party/ffmpeg/libavfilter/af_aiir.c @@ -686,7 +686,7 @@ static void drawtext(AVFrame *pic, int x, int y, const char *txt, uint32_t color static void draw_line(AVFrame *out, int x0, int y0, int x1, int y1, uint32_t color) { - int dx = FFABS(x1-x0), sx = x0 < x1 ? 1 : -1; + int dx = FFABS(x1-x0); int dy = FFABS(y1-y0), sy = y0 < y1 ? 1 : -1; int err = (dx>dy ? dx : -dy) / 2, e2; @@ -700,7 +700,7 @@ static void draw_line(AVFrame *out, int x0, int y0, int x1, int y1, uint32_t col if (e2 >-dx) { err -= dy; - x0 += sx; + x0--; } if (e2 < dy) { diff --git a/chromium/third_party/ffmpeg/libavfilter/af_amerge.c b/chromium/third_party/ffmpeg/libavfilter/af_amerge.c index 9bed8e71279..3961c90701d 100644 --- a/chromium/third_party/ffmpeg/libavfilter/af_amerge.c +++ b/chromium/third_party/ffmpeg/libavfilter/af_amerge.c @@ -166,7 +166,7 @@ static int config_output(AVFilterLink *outlink) outlink->sample_rate = ctx->inputs[0]->sample_rate; outlink->time_base = ctx->inputs[0]->time_base; - av_bprint_init(&bp, 0, 1); + av_bprint_init(&bp, 0, AV_BPRINT_SIZE_AUTOMATIC); for (i = 0; i < s->nb_inputs; i++) { av_bprintf(&bp, "%sin%d:", i ? " + " : "", i); av_bprint_channel_layout(&bp, -1, ctx->inputs[i]->channel_layout); diff --git a/chromium/third_party/ffmpeg/libavfilter/af_atempo.c b/chromium/third_party/ffmpeg/libavfilter/af_atempo.c index 8b214bccd7b..52f15f2769b 100644 --- a/chromium/third_party/ffmpeg/libavfilter/af_atempo.c +++ b/chromium/third_party/ffmpeg/libavfilter/af_atempo.c @@ -153,7 +153,7 @@ typedef struct ATempoContext { static const AVOption atempo_options[] = { { "tempo", "set tempo scale factor", - OFFSET(tempo), AV_OPT_TYPE_DOUBLE, { .dbl = 1.0 }, 0.5, 2.0, + OFFSET(tempo), AV_OPT_TYPE_DOUBLE, { .dbl = 1.0 }, 0.5, 100.0, AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_FILTERING_PARAM }, { NULL } }; @@ -439,8 +439,8 @@ static int yae_load_data(ATempoContext *atempo, return 0; } - // samples are not expected to be skipped: - av_assert0(read_size <= atempo->ring); + // samples are not expected to be skipped, unless tempo is greater than 2: + av_assert0(read_size <= atempo->ring || atempo->tempo > 2.0); while (atempo->position[0] < stop_here && src < src_end) { int src_samples = (src_end - src) / atempo->stride; diff --git a/chromium/third_party/ffmpeg/libavfilter/allfilters.c b/chromium/third_party/ffmpeg/libavfilter/allfilters.c index f2d27d24241..2d19929bdc8 100644 --- a/chromium/third_party/ffmpeg/libavfilter/allfilters.c +++ b/chromium/third_party/ffmpeg/libavfilter/allfilters.c @@ -148,6 +148,7 @@ extern AVFilter ff_vf_blackdetect; extern AVFilter ff_vf_blackframe; extern AVFilter ff_vf_blend; extern AVFilter ff_vf_boxblur; +extern AVFilter ff_vf_boxblur_opencl; extern AVFilter ff_vf_bwdif; extern AVFilter ff_vf_chromakey; extern AVFilter ff_vf_ciescope; @@ -216,6 +217,7 @@ extern AVFilter ff_vf_fspp; extern AVFilter ff_vf_gblur; extern AVFilter ff_vf_geq; extern AVFilter ff_vf_gradfun; +extern AVFilter ff_vf_greyedge; extern AVFilter ff_vf_haldclut; extern AVFilter ff_vf_hflip; extern AVFilter ff_vf_histeq; @@ -236,6 +238,7 @@ extern AVFilter ff_vf_interlace; extern AVFilter ff_vf_interleave; extern AVFilter ff_vf_kerndeint; extern AVFilter ff_vf_lenscorrection; +extern AVFilter ff_vf_lensfun; extern AVFilter ff_vf_libvmaf; extern AVFilter ff_vf_limiter; extern AVFilter ff_vf_loop; @@ -281,6 +284,7 @@ extern AVFilter ff_vf_pp; extern AVFilter ff_vf_pp7; extern AVFilter ff_vf_premultiply; extern AVFilter ff_vf_prewitt; +extern AVFilter ff_vf_prewitt_opencl; extern AVFilter ff_vf_procamp_vaapi; extern AVFilter ff_vf_program_opencl; extern AVFilter ff_vf_pseudocolor; @@ -297,6 +301,7 @@ extern AVFilter ff_vf_removelogo; extern AVFilter ff_vf_repeatfields; extern AVFilter ff_vf_reverse; extern AVFilter ff_vf_roberts; +extern AVFilter ff_vf_roberts_opencl; extern AVFilter ff_vf_rotate; extern AVFilter ff_vf_sab; extern AVFilter ff_vf_scale; @@ -325,9 +330,10 @@ extern AVFilter ff_vf_signalstats; extern AVFilter ff_vf_signature; extern AVFilter ff_vf_smartblur; extern AVFilter ff_vf_sobel; +extern AVFilter ff_vf_sobel_opencl; extern AVFilter ff_vf_split; extern AVFilter ff_vf_spp; -extern AVFilter ff_vf_srcnn; +extern AVFilter ff_vf_sr; extern AVFilter ff_vf_ssim; extern AVFilter ff_vf_stereo3d; extern AVFilter ff_vf_streamselect; @@ -345,6 +351,7 @@ extern AVFilter ff_vf_tinterlace; extern AVFilter ff_vf_tlut2; extern AVFilter ff_vf_tmix; extern AVFilter ff_vf_tonemap; +extern AVFilter ff_vf_tonemap_opencl; extern AVFilter ff_vf_transpose; extern AVFilter ff_vf_trim; extern AVFilter ff_vf_unpremultiply; diff --git a/chromium/third_party/ffmpeg/libavfilter/boxblur.c b/chromium/third_party/ffmpeg/libavfilter/boxblur.c new file mode 100644 index 00000000000..4534b456d97 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/boxblur.c @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at> + * Copyright (c) 2011 Stefano Sabatini + * Copyright (c) 2018 Danil Iashchenko + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "boxblur.h" + +static const char *const var_names[] = { + "w", + "h", + "cw", + "ch", + "hsub", + "vsub", + NULL +}; + +enum var_name { + VAR_W, + VAR_H, + VAR_CW, + VAR_CH, + VAR_HSUB, + VAR_VSUB, + VARS_NB +}; + + +int ff_boxblur_eval_filter_params(AVFilterLink *inlink, + FilterParam *luma_param, + FilterParam *chroma_param, + FilterParam *alpha_param) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format); + AVFilterContext *ctx = inlink->dst; + int w = inlink->w, h = inlink->h; + int cw, ch; + double var_values[VARS_NB], res; + char *expr; + int ret; + + if (!luma_param->radius_expr) { + av_log(ctx, AV_LOG_ERROR, "Luma radius expression is not set.\n"); + return AVERROR(EINVAL); + } + + /* fill missing params */ + if (!chroma_param->radius_expr) { + chroma_param->radius_expr = av_strdup(luma_param->radius_expr); + if (!chroma_param->radius_expr) + return AVERROR(ENOMEM); + } + if (chroma_param->power < 0) + chroma_param->power = luma_param->power; + + if (!alpha_param->radius_expr) { + alpha_param->radius_expr = av_strdup(luma_param->radius_expr); + if (!alpha_param->radius_expr) + return AVERROR(ENOMEM); + } + if (alpha_param->power < 0) + alpha_param->power = luma_param->power; + + var_values[VAR_W] = inlink->w; + var_values[VAR_H] = inlink->h; + var_values[VAR_CW] = cw = w>>(desc->log2_chroma_w); + var_values[VAR_CH] = ch = h>>(desc->log2_chroma_h); + var_values[VAR_HSUB] = 1<<(desc->log2_chroma_w); + var_values[VAR_VSUB] = 1<<(desc->log2_chroma_h); + +#define EVAL_RADIUS_EXPR(comp) \ + expr = comp->radius_expr; \ + ret = av_expr_parse_and_eval(&res, expr, var_names, var_values, \ + NULL, NULL, NULL, NULL, NULL, 0, ctx); \ + comp->radius = res; \ + if (ret < 0) { \ + av_log(NULL, AV_LOG_ERROR, \ + "Error when evaluating " #comp " radius expression '%s'\n", expr); \ + return ret; \ + } + + EVAL_RADIUS_EXPR(luma_param); + EVAL_RADIUS_EXPR(chroma_param); + EVAL_RADIUS_EXPR(alpha_param); + + av_log(ctx, AV_LOG_VERBOSE, + "luma_radius:%d luma_power:%d " + "chroma_radius:%d chroma_power:%d " + "alpha_radius:%d alpha_power:%d " + "w:%d chroma_w:%d h:%d chroma_h:%d\n", + luma_param ->radius, luma_param ->power, + chroma_param->radius, chroma_param->power, + alpha_param ->radius, alpha_param ->power, + w, cw, h, ch); + + +#define CHECK_RADIUS_VAL(w_, h_, comp) \ + if (comp->radius < 0 || \ + 2*comp->radius > FFMIN(w_, h_)) { \ + av_log(ctx, AV_LOG_ERROR, \ + "Invalid " #comp " radius value %d, must be >= 0 and <= %d\n", \ + comp->radius, FFMIN(w_, h_)/2); \ + return AVERROR(EINVAL); \ + } + CHECK_RADIUS_VAL(w, h, luma_param); + CHECK_RADIUS_VAL(cw, ch, chroma_param); + CHECK_RADIUS_VAL(w, h, alpha_param); + + return 0; +} diff --git a/chromium/third_party/ffmpeg/libavfilter/boxblur.h b/chromium/third_party/ffmpeg/libavfilter/boxblur.h new file mode 100644 index 00000000000..5694722a9d9 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/boxblur.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at> + * Copyright (c) 2011 Stefano Sabatini + * Copyright (c) 2018 Danil Iashchenko + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFILTER_BOXBLUR_H +#define AVFILTER_BOXBLUR_H + +#include "libavutil/eval.h" +#include "libavutil/pixdesc.h" +#include "libavutil/mem.h" + +#include "avfilter.h" + +typedef struct FilterParam { + int radius; + int power; + char *radius_expr; +} FilterParam; + +#define Y 0 +#define U 1 +#define V 2 +#define A 3 + +int ff_boxblur_eval_filter_params(AVFilterLink *inlink, + FilterParam *luma_param, + FilterParam *chroma_param, + FilterParam *alpha_param); + +#endif // AVFILTER_BOXBLUR_H diff --git a/chromium/third_party/ffmpeg/libavfilter/colorspace.c b/chromium/third_party/ffmpeg/libavfilter/colorspace.c new file mode 100644 index 00000000000..45da1dd1244 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/colorspace.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2016 Ronald S. Bultje <rsbultje@gmail.com> + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "colorspace.h" + + +void ff_matrix_invert_3x3(const double in[3][3], double out[3][3]) +{ + double m00 = in[0][0], m01 = in[0][1], m02 = in[0][2], + m10 = in[1][0], m11 = in[1][1], m12 = in[1][2], + m20 = in[2][0], m21 = in[2][1], m22 = in[2][2]; + int i, j; + double det; + + out[0][0] = (m11 * m22 - m21 * m12); + out[0][1] = -(m01 * m22 - m21 * m02); + out[0][2] = (m01 * m12 - m11 * m02); + out[1][0] = -(m10 * m22 - m20 * m12); + out[1][1] = (m00 * m22 - m20 * m02); + out[1][2] = -(m00 * m12 - m10 * m02); + out[2][0] = (m10 * m21 - m20 * m11); + out[2][1] = -(m00 * m21 - m20 * m01); + out[2][2] = (m00 * m11 - m10 * m01); + + det = m00 * out[0][0] + m10 * out[0][1] + m20 * out[0][2]; + det = 1.0 / det; + + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) + out[i][j] *= det; + } +} + +void ff_matrix_mul_3x3(double dst[3][3], + const double src1[3][3], const double src2[3][3]) +{ + int m, n; + + for (m = 0; m < 3; m++) + for (n = 0; n < 3; n++) + dst[m][n] = src2[m][0] * src1[0][n] + + src2[m][1] * src1[1][n] + + src2[m][2] * src1[2][n]; +} +/* + * see e.g. http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html + */ +void ff_fill_rgb2xyz_table(const struct PrimaryCoefficients *coeffs, + const struct WhitepointCoefficients *wp, + double rgb2xyz[3][3]) +{ + double i[3][3], sr, sg, sb, zw; + + rgb2xyz[0][0] = coeffs->xr / coeffs->yr; + rgb2xyz[0][1] = coeffs->xg / coeffs->yg; + rgb2xyz[0][2] = coeffs->xb / coeffs->yb; + rgb2xyz[1][0] = rgb2xyz[1][1] = rgb2xyz[1][2] = 1.0; + rgb2xyz[2][0] = (1.0 - coeffs->xr - coeffs->yr) / coeffs->yr; + rgb2xyz[2][1] = (1.0 - coeffs->xg - coeffs->yg) / coeffs->yg; + rgb2xyz[2][2] = (1.0 - coeffs->xb - coeffs->yb) / coeffs->yb; + ff_matrix_invert_3x3(rgb2xyz, i); + zw = 1.0 - wp->xw - wp->yw; + sr = i[0][0] * wp->xw + i[0][1] * wp->yw + i[0][2] * zw; + sg = i[1][0] * wp->xw + i[1][1] * wp->yw + i[1][2] * zw; + sb = i[2][0] * wp->xw + i[2][1] * wp->yw + i[2][2] * zw; + rgb2xyz[0][0] *= sr; + rgb2xyz[0][1] *= sg; + rgb2xyz[0][2] *= sb; + rgb2xyz[1][0] *= sr; + rgb2xyz[1][1] *= sg; + rgb2xyz[1][2] *= sb; + rgb2xyz[2][0] *= sr; + rgb2xyz[2][1] *= sg; + rgb2xyz[2][2] *= sb; +} diff --git a/chromium/third_party/ffmpeg/libavfilter/colorspace.h b/chromium/third_party/ffmpeg/libavfilter/colorspace.h new file mode 100644 index 00000000000..9d45ee23660 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/colorspace.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2016 Ronald S. Bultje <rsbultje@gmail.com> + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFILTER_COLORSPACE_H +#define AVFILTER_COLORSPACE_H + +#include "libavutil/common.h" + +struct LumaCoefficients { + double cr, cg, cb; +}; + +struct PrimaryCoefficients { + double xr, yr, xg, yg, xb, yb; +}; + +struct WhitepointCoefficients { + double xw, yw; +}; + +void ff_matrix_invert_3x3(const double in[3][3], double out[3][3]); +void ff_matrix_mul_3x3(double dst[3][3], + const double src1[3][3], const double src2[3][3]); +void ff_fill_rgb2xyz_table(const struct PrimaryCoefficients *coeffs, + const struct WhitepointCoefficients *wp, + double rgb2xyz[3][3]); +#endif diff --git a/chromium/third_party/ffmpeg/libavfilter/dnn_backend_native.c b/chromium/third_party/ffmpeg/libavfilter/dnn_backend_native.c index 6e80dd36637..02b174a0548 100644 --- a/chromium/third_party/ffmpeg/libavfilter/dnn_backend_native.c +++ b/chromium/third_party/ffmpeg/libavfilter/dnn_backend_native.c @@ -25,9 +25,12 @@ #include "dnn_backend_native.h" #include "dnn_srcnn.h" +#include "dnn_espcn.h" #include "libavformat/avio.h" -typedef enum {INPUT, CONV} LayerType; +typedef enum {INPUT, CONV, DEPTH_TO_SPACE} LayerType; + +typedef enum {RELU, TANH, SIGMOID} ActivationFunc; typedef struct Layer{ LayerType type; @@ -37,6 +40,7 @@ typedef struct Layer{ typedef struct ConvolutionalParams{ int32_t input_num, output_num, kernel_size; + ActivationFunc activation; float* kernel; float* biases; } ConvolutionalParams; @@ -45,17 +49,22 @@ typedef struct InputParams{ int height, width, channels; } InputParams; +typedef struct DepthToSpaceParams{ + int block_size; +} DepthToSpaceParams; + // Represents simple feed-forward convolutional network. typedef struct ConvolutionalNetwork{ Layer* layers; int32_t layers_num; } ConvolutionalNetwork; -static DNNReturnType set_input_output_native(void* model, const DNNData* input, const DNNData* output) +static DNNReturnType set_input_output_native(void* model, DNNData* input, DNNData* output) { ConvolutionalNetwork* network = (ConvolutionalNetwork*)model; InputParams* input_params; ConvolutionalParams* conv_params; + DepthToSpaceParams* depth_to_space_params; int cur_width, cur_height, cur_channels; int32_t layer; @@ -63,11 +72,17 @@ static DNNReturnType set_input_output_native(void* model, const DNNData* input, return DNN_ERROR; } else{ - network->layers[0].output = input->data; input_params = (InputParams*)network->layers[0].params; input_params->width = cur_width = input->width; input_params->height = cur_height = input->height; input_params->channels = cur_channels = input->channels; + if (input->data){ + av_freep(&input->data); + } + network->layers[0].output = input->data = av_malloc(cur_height * cur_width * cur_channels * sizeof(float)); + if (!network->layers[0].output){ + return DNN_ERROR; + } } for (layer = 1; layer < network->layers_num; ++layer){ @@ -78,32 +93,40 @@ static DNNReturnType set_input_output_native(void* model, const DNNData* input, return DNN_ERROR; } cur_channels = conv_params->output_num; - if (layer < network->layers_num - 1){ - if (!network->layers[layer].output){ - av_freep(&network->layers[layer].output); - } - network->layers[layer].output = av_malloc(cur_height * cur_width * cur_channels * sizeof(float)); - if (!network->layers[layer].output){ - return DNN_ERROR; - } - } - else{ - network->layers[layer].output = output->data; - if (output->width != cur_width || output->height != cur_height || output->channels != cur_channels){ - return DNN_ERROR; - } + break; + case DEPTH_TO_SPACE: + depth_to_space_params = (DepthToSpaceParams*)network->layers[layer].params; + if (cur_channels % (depth_to_space_params->block_size * depth_to_space_params->block_size) != 0){ + return DNN_ERROR; } + cur_channels = cur_channels / (depth_to_space_params->block_size * depth_to_space_params->block_size); + cur_height *= depth_to_space_params->block_size; + cur_width *= depth_to_space_params->block_size; break; default: return DNN_ERROR; } + if (network->layers[layer].output){ + av_freep(&network->layers[layer].output); + } + network->layers[layer].output = av_malloc(cur_height * cur_width * cur_channels * sizeof(float)); + if (!network->layers[layer].output){ + return DNN_ERROR; + } } + output->data = network->layers[network->layers_num - 1].output; + output->height = cur_height; + output->width = cur_width; + output->channels = cur_channels; + return DNN_SUCCESS; } // Loads model and its parameters that are stored in a binary file with following structure: -// layers_num,conv_input_num,conv_output_num,conv_kernel_size,conv_kernel,conv_biases,conv_input_num... +// layers_num,layer_type,layer_parameterss,layer_type,layer_parameters... +// For CONV layer: activation_function, input_num, output_num, kernel_size, kernel, biases +// For DEPTH_TO_SPACE layer: block_size DNNModel* ff_dnn_load_model_native(const char* model_filename) { DNNModel* model = NULL; @@ -111,7 +134,9 @@ DNNModel* ff_dnn_load_model_native(const char* model_filename) AVIOContext* model_file_context; int file_size, dnn_size, kernel_size, i; int32_t layer; + LayerType layer_type; ConvolutionalParams* conv_params; + DepthToSpaceParams* depth_to_space_params; model = av_malloc(sizeof(DNNModel)); if (!model){ @@ -156,39 +181,62 @@ DNNModel* ff_dnn_load_model_native(const char* model_filename) } for (layer = 1; layer < network->layers_num; ++layer){ - conv_params = av_malloc(sizeof(ConvolutionalParams)); - if (!conv_params){ - avio_closep(&model_file_context); - ff_dnn_free_model_native(&model); - return NULL; - } - conv_params->input_num = (int32_t)avio_rl32(model_file_context); - conv_params->output_num = (int32_t)avio_rl32(model_file_context); - conv_params->kernel_size = (int32_t)avio_rl32(model_file_context); - kernel_size = conv_params->input_num * conv_params->output_num * - conv_params->kernel_size * conv_params->kernel_size; - dnn_size += 12 + (kernel_size + conv_params->output_num << 2); - if (dnn_size > file_size || conv_params->input_num <= 0 || - conv_params->output_num <= 0 || conv_params->kernel_size <= 0){ - avio_closep(&model_file_context); - ff_dnn_free_model_native(&model); - return NULL; - } - conv_params->kernel = av_malloc(kernel_size * sizeof(float)); - conv_params->biases = av_malloc(conv_params->output_num * sizeof(float)); - if (!conv_params->kernel || !conv_params->biases){ + layer_type = (int32_t)avio_rl32(model_file_context); + dnn_size += 4; + switch (layer_type){ + case CONV: + conv_params = av_malloc(sizeof(ConvolutionalParams)); + if (!conv_params){ + avio_closep(&model_file_context); + ff_dnn_free_model_native(&model); + return NULL; + } + conv_params->activation = (int32_t)avio_rl32(model_file_context); + conv_params->input_num = (int32_t)avio_rl32(model_file_context); + conv_params->output_num = (int32_t)avio_rl32(model_file_context); + conv_params->kernel_size = (int32_t)avio_rl32(model_file_context); + kernel_size = conv_params->input_num * conv_params->output_num * + conv_params->kernel_size * conv_params->kernel_size; + dnn_size += 16 + (kernel_size + conv_params->output_num << 2); + if (dnn_size > file_size || conv_params->input_num <= 0 || + conv_params->output_num <= 0 || conv_params->kernel_size <= 0){ + avio_closep(&model_file_context); + ff_dnn_free_model_native(&model); + return NULL; + } + conv_params->kernel = av_malloc(kernel_size * sizeof(float)); + conv_params->biases = av_malloc(conv_params->output_num * sizeof(float)); + if (!conv_params->kernel || !conv_params->biases){ + avio_closep(&model_file_context); + ff_dnn_free_model_native(&model); + return NULL; + } + for (i = 0; i < kernel_size; ++i){ + conv_params->kernel[i] = av_int2float(avio_rl32(model_file_context)); + } + for (i = 0; i < conv_params->output_num; ++i){ + conv_params->biases[i] = av_int2float(avio_rl32(model_file_context)); + } + network->layers[layer].type = CONV; + network->layers[layer].params = conv_params; + break; + case DEPTH_TO_SPACE: + depth_to_space_params = av_malloc(sizeof(DepthToSpaceParams)); + if (!depth_to_space_params){ + avio_closep(&model_file_context); + ff_dnn_free_model_native(&model); + return NULL; + } + depth_to_space_params->block_size = (int32_t)avio_rl32(model_file_context); + dnn_size += 4; + network->layers[layer].type = DEPTH_TO_SPACE; + network->layers[layer].params = depth_to_space_params; + break; + default: avio_closep(&model_file_context); ff_dnn_free_model_native(&model); return NULL; } - for (i = 0; i < kernel_size; ++i){ - conv_params->kernel[i] = av_int2float(avio_rl32(model_file_context)); - } - for (i = 0; i < conv_params->output_num; ++i){ - conv_params->biases[i] = av_int2float(avio_rl32(model_file_context)); - } - network->layers[layer].type = CONV; - network->layers[layer].params = conv_params; } avio_closep(&model_file_context); @@ -203,7 +251,8 @@ DNNModel* ff_dnn_load_model_native(const char* model_filename) return model; } -static int set_up_conv_layer(Layer* layer, const float* kernel, const float* biases, int32_t input_num, int32_t output_num, int32_t size) +static int set_up_conv_layer(Layer* layer, const float* kernel, const float* biases, ActivationFunc activation, + int32_t input_num, int32_t output_num, int32_t size) { ConvolutionalParams* conv_params; int kernel_size; @@ -212,6 +261,7 @@ static int set_up_conv_layer(Layer* layer, const float* kernel, const float* bia if (!conv_params){ return DNN_ERROR; } + conv_params->activation = activation; conv_params->input_num = input_num; conv_params->output_num = output_num; conv_params->kernel_size = size; @@ -236,6 +286,7 @@ DNNModel* ff_dnn_load_default_model_native(DNNDefaultModel model_type) { DNNModel* model = NULL; ConvolutionalNetwork* network = NULL; + DepthToSpaceParams* depth_to_space_params; int32_t layer; model = av_malloc(sizeof(DNNModel)); @@ -253,45 +304,68 @@ DNNModel* ff_dnn_load_default_model_native(DNNDefaultModel model_type) switch (model_type){ case DNN_SRCNN: network->layers_num = 4; + break; + case DNN_ESPCN: + network->layers_num = 5; + break; + default: + av_freep(&network); + av_freep(&model); + return NULL; + } - network->layers = av_malloc(network->layers_num * sizeof(Layer)); - if (!network->layers){ - av_freep(&network); - av_freep(&model); - return NULL; - } + network->layers = av_malloc(network->layers_num * sizeof(Layer)); + if (!network->layers){ + av_freep(&network); + av_freep(&model); + return NULL; + } - for (layer = 0; layer < network->layers_num; ++layer){ - network->layers[layer].output = NULL; - network->layers[layer].params = NULL; + for (layer = 0; layer < network->layers_num; ++layer){ + network->layers[layer].output = NULL; + network->layers[layer].params = NULL; + } + network->layers[0].type = INPUT; + network->layers[0].params = av_malloc(sizeof(InputParams)); + if (!network->layers[0].params){ + ff_dnn_free_model_native(&model); + return NULL; + } + + switch (model_type){ + case DNN_SRCNN: + if (set_up_conv_layer(network->layers + 1, srcnn_conv1_kernel, srcnn_conv1_biases, RELU, 1, 64, 9) != DNN_SUCCESS || + set_up_conv_layer(network->layers + 2, srcnn_conv2_kernel, srcnn_conv2_biases, RELU, 64, 32, 1) != DNN_SUCCESS || + set_up_conv_layer(network->layers + 3, srcnn_conv3_kernel, srcnn_conv3_biases, RELU, 32, 1, 5) != DNN_SUCCESS){ + ff_dnn_free_model_native(&model); + return NULL; } - network->layers[0].type = INPUT; - network->layers[0].params = av_malloc(sizeof(InputParams)); - if (!network->layers[0].params){ + break; + case DNN_ESPCN: + if (set_up_conv_layer(network->layers + 1, espcn_conv1_kernel, espcn_conv1_biases, TANH, 1, 64, 5) != DNN_SUCCESS || + set_up_conv_layer(network->layers + 2, espcn_conv2_kernel, espcn_conv2_biases, TANH, 64, 32, 3) != DNN_SUCCESS || + set_up_conv_layer(network->layers + 3, espcn_conv3_kernel, espcn_conv3_biases, SIGMOID, 32, 4, 3) != DNN_SUCCESS){ ff_dnn_free_model_native(&model); return NULL; } - - if (set_up_conv_layer(network->layers + 1, conv1_kernel, conv1_biases, 1, 64, 9) != DNN_SUCCESS || - set_up_conv_layer(network->layers + 2, conv2_kernel, conv2_biases, 64, 32, 1) != DNN_SUCCESS || - set_up_conv_layer(network->layers + 3, conv3_kernel, conv3_biases, 32, 1, 5) != DNN_SUCCESS){ + network->layers[4].type = DEPTH_TO_SPACE; + depth_to_space_params = av_malloc(sizeof(DepthToSpaceParams)); + if (!depth_to_space_params){ ff_dnn_free_model_native(&model); return NULL; } + depth_to_space_params->block_size = 2; + network->layers[4].params = depth_to_space_params; + } - model->set_input_output = &set_input_output_native; + model->set_input_output = &set_input_output_native; - return model; - default: - av_freep(&network); - av_freep(&model); - return NULL; - } + return model; } #define CLAMP_TO_EDGE(x, w) ((x) < 0 ? 0 : ((x) >= (w) ? (w - 1) : (x))) -static void convolve(const float* input, float* output, const ConvolutionalParams* conv_params, int32_t width, int32_t height) +static void convolve(const float* input, float* output, const ConvolutionalParams* conv_params, int width, int height) { int y, x, n_filter, ch, kernel_y, kernel_x; int radius = conv_params->kernel_size >> 1; @@ -313,19 +387,53 @@ static void convolve(const float* input, float* output, const ConvolutionalParam } } } - output[n_filter] = FFMAX(output[n_filter], 0.0); + switch (conv_params->activation){ + case RELU: + output[n_filter] = FFMAX(output[n_filter], 0.0); + break; + case TANH: + output[n_filter] = 2.0f / (1.0f + exp(-2.0f * output[n_filter])) - 1.0f; + break; + case SIGMOID: + output[n_filter] = 1.0f / (1.0f + exp(-output[n_filter])); + } } output += conv_params->output_num; } } } +static void depth_to_space(const float* input, float* output, int block_size, int width, int height, int channels) +{ + int y, x, by, bx, ch; + int new_channels = channels / (block_size * block_size); + int output_linesize = width * channels; + int by_linesize = output_linesize / block_size; + int x_linesize = new_channels * block_size; + + for (y = 0; y < height; ++y){ + for (x = 0; x < width; ++x){ + for (by = 0; by < block_size; ++by){ + for (bx = 0; bx < block_size; ++bx){ + for (ch = 0; ch < new_channels; ++ch){ + output[by * by_linesize + x * x_linesize + bx * new_channels + ch] = input[ch]; + } + input += new_channels; + } + } + } + output += output_linesize; + } +} + DNNReturnType ff_dnn_execute_model_native(const DNNModel* model) { ConvolutionalNetwork* network = (ConvolutionalNetwork*)model->model; - InputParams* input_params; - int cur_width, cur_height; + int cur_width, cur_height, cur_channels; int32_t layer; + InputParams* input_params; + ConvolutionalParams* conv_params; + DepthToSpaceParams* depth_to_space_params; if (network->layers_num <= 0 || network->layers[0].type != INPUT || !network->layers[0].output){ return DNN_ERROR; @@ -334,6 +442,7 @@ DNNReturnType ff_dnn_execute_model_native(const DNNModel* model) input_params = (InputParams*)network->layers[0].params; cur_width = input_params->width; cur_height = input_params->height; + cur_channels = input_params->channels; } for (layer = 1; layer < network->layers_num; ++layer){ @@ -342,7 +451,17 @@ DNNReturnType ff_dnn_execute_model_native(const DNNModel* model) } switch (network->layers[layer].type){ case CONV: - convolve(network->layers[layer - 1].output, network->layers[layer].output, (ConvolutionalParams*)network->layers[layer].params, cur_width, cur_height); + conv_params = (ConvolutionalParams*)network->layers[layer].params; + convolve(network->layers[layer - 1].output, network->layers[layer].output, conv_params, cur_width, cur_height); + cur_channels = conv_params->output_num; + break; + case DEPTH_TO_SPACE: + depth_to_space_params = (DepthToSpaceParams*)network->layers[layer].params; + depth_to_space(network->layers[layer - 1].output, network->layers[layer].output, + depth_to_space_params->block_size, cur_width, cur_height, cur_channels); + cur_height *= depth_to_space_params->block_size; + cur_width *= depth_to_space_params->block_size; + cur_channels /= depth_to_space_params->block_size * depth_to_space_params->block_size; break; case INPUT: return DNN_ERROR; @@ -362,19 +481,13 @@ void ff_dnn_free_model_native(DNNModel** model) { network = (ConvolutionalNetwork*)(*model)->model; for (layer = 0; layer < network->layers_num; ++layer){ - switch (network->layers[layer].type){ - case CONV: - if (layer < network->layers_num - 1){ - av_freep(&network->layers[layer].output); - } + av_freep(&network->layers[layer].output); + if (network->layers[layer].type == CONV){ conv_params = (ConvolutionalParams*)network->layers[layer].params; av_freep(&conv_params->kernel); av_freep(&conv_params->biases); - av_freep(&conv_params); - break; - case INPUT: - av_freep(&network->layers[layer].params); } + av_freep(&network->layers[layer].params); } av_freep(network); av_freep(model); diff --git a/chromium/third_party/ffmpeg/libavfilter/dnn_backend_tf.c b/chromium/third_party/ffmpeg/libavfilter/dnn_backend_tf.c index e46b1ad1402..302ff9e4e11 100644 --- a/chromium/third_party/ffmpeg/libavfilter/dnn_backend_tf.c +++ b/chromium/third_party/ffmpeg/libavfilter/dnn_backend_tf.c @@ -25,6 +25,7 @@ #include "dnn_backend_tf.h" #include "dnn_srcnn.h" +#include "dnn_espcn.h" #include "libavformat/avio.h" #include <tensorflow/c/c_api.h> @@ -35,9 +36,7 @@ typedef struct TFModel{ TF_Status* status; TF_Output input, output; TF_Tensor* input_tensor; - TF_Tensor* output_tensor; - const DNNData* input_data; - const DNNData* output_data; + DNNData* output_data; } TFModel; static void free_buffer(void* data, size_t length) @@ -78,13 +77,13 @@ static TF_Buffer* read_graph(const char* model_filename) return graph_buf; } -static DNNReturnType set_input_output_tf(void* model, const DNNData* input, const DNNData* output) +static DNNReturnType set_input_output_tf(void* model, DNNData* input, DNNData* output) { TFModel* tf_model = (TFModel*)model; int64_t input_dims[] = {1, input->height, input->width, input->channels}; - int64_t output_dims[] = {1, output->height, output->width, output->channels}; TF_SessionOptions* sess_opts; const TF_Operation* init_op = TF_GraphOperationByName(tf_model->graph, "init"); + TF_Tensor* output_tensor; // Input operation should be named 'x' tf_model->input.oper = TF_GraphOperationByName(tf_model->graph, "x"); @@ -100,6 +99,7 @@ static DNNReturnType set_input_output_tf(void* model, const DNNData* input, cons if (!tf_model->input_tensor){ return DNN_ERROR; } + input->data = (float*)TF_TensorData(tf_model->input_tensor); // Output operation should be named 'y' tf_model->output.oper = TF_GraphOperationByName(tf_model->graph, "y"); @@ -107,17 +107,6 @@ static DNNReturnType set_input_output_tf(void* model, const DNNData* input, cons return DNN_ERROR; } tf_model->output.index = 0; - if (tf_model->output_tensor){ - TF_DeleteTensor(tf_model->output_tensor); - } - tf_model->output_tensor = TF_AllocateTensor(TF_FLOAT, output_dims, 4, - output_dims[1] * output_dims[2] * output_dims[3] * sizeof(float)); - if (!tf_model->output_tensor){ - return DNN_ERROR; - } - - tf_model->input_data = input; - tf_model->output_data = output; if (tf_model->session){ TF_CloseSession(tf_model->session, tf_model->status); @@ -144,6 +133,26 @@ static DNNReturnType set_input_output_tf(void* model, const DNNData* input, cons } } + // Execute network to get output height, width and number of channels + TF_SessionRun(tf_model->session, NULL, + &tf_model->input, &tf_model->input_tensor, 1, + &tf_model->output, &output_tensor, 1, + NULL, 0, NULL, tf_model->status); + if (TF_GetCode(tf_model->status) != TF_OK){ + return DNN_ERROR; + } + else{ + output->height = TF_Dim(output_tensor, 1); + output->width = TF_Dim(output_tensor, 2); + output->channels = TF_Dim(output_tensor, 3); + output->data = av_malloc(output->height * output->width * output->channels * sizeof(float)); + if (!output->data){ + return DNN_ERROR; + } + tf_model->output_data = output; + TF_DeleteTensor(output_tensor); + } + return DNN_SUCCESS; } @@ -166,7 +175,7 @@ DNNModel* ff_dnn_load_model_tf(const char* model_filename) } tf_model->session = NULL; tf_model->input_tensor = NULL; - tf_model->output_tensor = NULL; + tf_model->output_data = NULL; graph_def = read_graph(model_filename); if (!graph_def){ @@ -215,6 +224,17 @@ DNNModel* ff_dnn_load_default_model_tf(DNNDefaultModel model_type) graph_def->length = srcnn_tf_size; graph_def->data_deallocator = free_buffer; break; + case DNN_ESPCN: + graph_data = av_malloc(espcn_tf_size); + if (!graph_data){ + TF_DeleteBuffer(graph_def); + return NULL; + } + memcpy(graph_data, espcn_tf_model, espcn_tf_size); + graph_def->data = (void*)graph_data; + graph_def->length = espcn_tf_size; + graph_def->data_deallocator = free_buffer; + break; default: TF_DeleteBuffer(graph_def); return NULL; @@ -234,7 +254,7 @@ DNNModel* ff_dnn_load_default_model_tf(DNNDefaultModel model_type) } tf_model->session = NULL; tf_model->input_tensor = NULL; - tf_model->output_tensor = NULL; + tf_model->output_data = NULL; tf_model->graph = TF_NewGraph(); tf_model->status = TF_NewStatus(); @@ -259,23 +279,21 @@ DNNModel* ff_dnn_load_default_model_tf(DNNDefaultModel model_type) DNNReturnType ff_dnn_execute_model_tf(const DNNModel* model) { TFModel* tf_model = (TFModel*)model->model; - - memcpy(TF_TensorData(tf_model->input_tensor), tf_model->input_data->data, - tf_model->input_data->height * tf_model->input_data->width * - tf_model->input_data->channels * sizeof(float)); + TF_Tensor* output_tensor; TF_SessionRun(tf_model->session, NULL, &tf_model->input, &tf_model->input_tensor, 1, - &tf_model->output, &tf_model->output_tensor, 1, + &tf_model->output, &output_tensor, 1, NULL, 0, NULL, tf_model->status); if (TF_GetCode(tf_model->status) != TF_OK){ return DNN_ERROR; } else{ - memcpy(tf_model->output_data->data, TF_TensorData(tf_model->output_tensor), - tf_model->output_data->height * tf_model->output_data->width * - tf_model->output_data->channels * sizeof(float)); + memcpy(tf_model->output_data->data, TF_TensorData(output_tensor), + tf_model->output_data->height * tf_model->output_data->width * + tf_model->output_data->channels * sizeof(float)); + TF_DeleteTensor(output_tensor); return DNN_SUCCESS; } @@ -300,9 +318,7 @@ void ff_dnn_free_model_tf(DNNModel** model) if (tf_model->input_tensor){ TF_DeleteTensor(tf_model->input_tensor); } - if (tf_model->output_tensor){ - TF_DeleteTensor(tf_model->output_tensor); - } + av_freep(&tf_model->output_data->data); av_freep(&tf_model); av_freep(model); } diff --git a/chromium/third_party/ffmpeg/libavfilter/dnn_espcn.h b/chromium/third_party/ffmpeg/libavfilter/dnn_espcn.h new file mode 100644 index 00000000000..0bd3132ba65 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/dnn_espcn.h @@ -0,0 +1,12637 @@ +/* + * Copyright (c) 2018 Sergey Lavrushkin + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Default cnn weights for x2 upsampling with espcn model. + */ + +#ifndef AVFILTER_DNN_ESPCN_H +#define AVFILTER_DNN_ESPCN_H + + +static const float espcn_conv1_kernel[] = { + -0.033651225f, 0.08141546f, -0.028117338f, 0.1370229f, + 0.21719787f, 0.0018106321f, -0.21415733f, 0.08370989f, + 0.04526427f, 0.13084698f, -0.016193666f, 0.048420854f, + -0.043297544f, -0.010689146f, -0.15213025f, 0.12779328f, + -0.12508103f, -0.03025096f, 0.050621416f, 0.06129373f, + -0.31008086f, 0.090241484f, 0.11289834f, 0.024204707f, + -0.15997766f, -0.4491874f, 1.7992994f, -2.2776546f, + 0.92356527f, -0.22333145f, -0.3484276f, -0.30224112f, + 2.6481814f, -3.5702555f, 1.6448367f, 0.821054f, + -2.194776f, 2.9794505f, -0.74629736f, -0.71420956f, + -0.19285335f, 0.45863184f, -1.3390704f, 1.9217515f, + -0.9752292f, 0.17233354f, -0.42186308f, 0.0067120134f, + 0.15278922f, 0.25349525f, 0.04239441f, 0.32368666f, + -0.32882598f, -0.09148329f, 0.13972661f, -0.33373186f, + 1.3149962f, -1.3097465f, -1.0351702f, 0.5667829f, + 0.28915232f, -0.12594104f, 0.19577143f, -0.010226973f, + 0.27975535f, 0.08592676f, -0.3827023f, 0.28327408f, + 0.2345602f, -0.28909206f, -0.01707916f, 0.02990479f, + 0.029567802f, 0.16850159f, 0.03417645f, -0.089996934f, + 0.059985105f, -0.15995955f, -0.17444675f, -0.059467997f, + 0.08160676f, 0.26426318f, 1.01275f, 0.8737046f, + 0.10697361f, 0.37341496f, 0.34371883f, 2.3972206f, + 0.3797688f, 0.32201457f, -0.15579607f, 0.004243462f, + -0.9925481f, -0.08061044f, -0.06980977f, 0.004541201f, + 0.04380443f, 0.35560706f, -0.00929085f, 0.09188179f, + 0.0667816f, -0.13034518f, 0.14290251f, -0.104175836f, + 0.0013874007f, -0.21087192f, 0.33723673f, -0.81895316f, + 0.2068736f, -0.024198757f, 0.20320402f, -0.9201378f, + -22.43354f, -0.55837536f, -0.18251857f, -0.06481952f, + 0.13386513f, -0.92357135f, 0.12469517f, 0.07433132f, + -0.019609528f, 0.020879095f, -0.037496805f, -0.020767067f, + -0.023763046f, 0.014306224f, -0.21043892f, 0.16374084f, + 0.060567956f, -0.13136876f, -0.24900316f, 0.35642996f, + -0.39053982f, 0.006153686f, 0.10833906f, -0.109700225f, + 0.16616625f, 0.0967383f, 0.26237366f, -0.18988574f, + 0.23701477f, -0.4337045f, 0.1442159f, -0.3304001f, + 0.12143453f, 0.069193594f, 0.1799313f, -0.05647911f, + -0.017935714f, 0.043117225f, 0.06470898f, -0.004627622f, + -0.019676162f, 0.012499647f, 0.016022062f, 0.042290222f, + -0.02982633f, -0.037106734f, 0.039087374f, 0.00029811377f, + -0.15740614f, 0.13884911f, -0.06417996f, -0.102875255f, + 0.17561884f, -0.046311516f, -0.10099872f, 0.17903659f, + -0.055862334f, 0.059019238f, 0.11083021f, -0.015236638f, + -0.06907288f, 0.09691499f, -0.22299959f, 0.010823794f, + 0.010635834f, -0.0023554056f, -0.012515517f, 0.029083649f, + -0.0041044154f, 0.039968647f, -0.036370832f, -0.056957614f, + 0.06255996f, 0.035850722f, -0.055701878f, 0.06230328f, + -0.080863565f, 0.035210107f, 0.015096615f, -0.04939917f, + 0.011800731f, 0.07148536f, -0.047290847f, -0.06091541f, + 0.113620274f, -0.080722176f, 0.056476723f, -0.066667825f, + -0.14979011f, 0.15063208f, -0.11805492f, -0.138875f, + 0.14232866f, -0.03414186f, 0.47239187f, 0.009407899f, + 0.01444684f, -0.10259039f, -0.07597026f, 0.12913887f, + -0.67652786f, 0.49300277f, -0.15496327f, 0.11434867f, + 0.0086330585f, 0.0016397188f, -0.093785115f, 0.12697084f, + 0.09329895f, -0.098265454f, 0.015779398f, 0.024828607f, + -0.20260698f, -0.0043203263f, 0.008699304f, -0.0068465173f, + 0.002962457f, 0.007240551f, 0.006284914f, -0.018137073f, + -0.009959204f, 0.041471813f, -0.018904453f, -0.042574976f, + 0.024426522f, 0.018850524f, -0.035666943f, 0.012505667f, + -0.014740345f, 0.0039879885f, 0.015514583f, 0.0046489495f, + -0.007373316f, 0.039615016f, -0.04171012f, -0.0011046156f, + -0.013045653f, 0.027342325f, 0.034585696f, -0.025510559f, + -0.0030336082f, 0.000485477f, -0.007296067f, -0.027812503f, + 0.025867466f, -0.011391817f, 0.018295178f, -0.00917634f, + -0.040564276f, 0.018141888f, -0.00067481253f, -0.022856772f, + 0.02692952f, 0.015732365f, -0.027582686f, 0.0110019455f, + -0.01288451f, -0.0003018919f, 0.019714799f, 0.01728935f, + -0.002913521f, 0.008114081f, 0.0027821003f, 0.4531545f, + 0.053950854f, -0.6977125f, 0.2064479f, -0.109914035f, + 0.1841823f, -0.13620034f, 0.27128533f, -0.0609876f, + 0.003371579f, 0.1930245f, 2.4499261f, -4.972192f, + 1.2972376f, -0.14015496f, 0.2681309f, 4.5717506f, + -4.222891f, 0.28777757f, -0.47991228f, 0.030688927f, + 0.24025695f, -0.010329718f, 0.22207767f, -0.106166996f, + -0.005659934f, -0.012544079f, -0.01702093f, -0.000517936f, + 0.012638107f, -0.0033698415f, 0.007970288f, -0.011309287f, + 0.022607557f, -0.01640778f, -0.014023224f, -0.008556073f, + 0.04318879f, -0.03346796f, 0.014410724f, -0.00046621874f, + 0.007378614f, -0.0073061357f, 0.0042915936f, -0.004515676f, + 0.024914468f, -0.008171752f, -0.0017248475f, -0.0059723468f, + 0.010641572f, -0.25384668f, 0.16646713f, 0.06976762f, + 0.132991f, -0.11862378f, 0.3204264f, -0.2161517f, + -0.15423734f, -0.1217866f, 0.04545744f, -0.18977062f, + 0.03121648f, 0.28215134f, -0.05836171f, 0.19382347f, + 0.06683978f, 0.07896366f, -0.26435596f, 0.019489296f, + 0.008891515f, 0.08911816f, -0.08334369f, 0.07251963f, + -0.02495827f, -0.17624144f, -0.0600965f, -0.11753576f, + 0.15228821f, -0.15012947f, -0.102076195f, 0.07920336f, + 0.35360602f, -0.43018606f, -0.015259097f, 0.25731575f, + -0.027296295f, -0.40447804f, -0.2375002f, -0.25029674f, + 0.15262108f, 0.297686f, 0.13268502f, -0.44820413f, + -0.37434947f, 0.1261727f, 0.15368667f, -0.37884322f, + 0.21143666f, 0.004934576f, 0.03484901f, -0.0062802057f, + 0.011079838f, 0.013925544f, -0.07367002f, -0.00024836176f, + -0.020962216f, 0.042730514f, -0.03942212f, 0.08173478f, + -0.06545684f, 0.04225348f, -0.033619102f, 0.122894906f, + -0.09198154f, 0.005074649f, 0.020633776f, 0.0038829045f, + -0.12776504f, 0.1464373f, -0.040253535f, -0.034283984f, + -0.05876475f, 0.06889128f, -0.09487612f, 0.12700228f, + -0.015016703f, 0.02545879f, -0.009468004f, -0.00097389973f, + 0.0061884173f, 0.018115327f, -0.03235417f, 0.010192787f, + 0.010647744f, -0.006882341f, 0.00641248f, 0.0062712007f, + -0.016744254f, 0.0058270027f, -0.012694194f, -0.022825575f, + 0.018078726f, 0.013505268f, -0.02376646f, 0.022100678f, + 0.022399256f, -0.024491498f, 0.003643337f, 0.0073666316f, + -0.011214707f, 0.042343896f, 1.1964284f, 1.1262068f, + -0.0125066f, 0.13206916f, -1.3212638f, -1.72202f, + -1.7712481f, 0.39054653f, 0.115705706f, 1.4770936f, + 0.9925719f, 0.77947533f, -0.68878996f, -1.4571657f, + -0.3137554f, -0.3995305f, 0.097454146f, 1.0607964f, + 1.258041f, 0.017379453f, 0.030014992f, -0.09101157f, + -0.73976797f, -0.21007289f, -0.058368642f, 0.08423641f, + -0.06387555f, -0.18031077f, -0.024950154f, -0.42568955f, + 0.22135833f, -0.02566547f, 0.26769084f, -0.011800038f, + -0.025906863f, -0.66306657f, -0.37567604f, -0.28611735f, + 0.43021184f, 0.09991237f, 0.79288036f, 0.5373436f, + 0.7736879f, 0.025644226f, 0.34796628f, -0.3276089f, + -0.26382548f, -0.44874048f, -0.25642022f, 0.032270946f, + -0.022875438f, 0.57005584f, -0.103805095f, -0.027593944f, + -0.10354166f, 0.8457833f, -1.3360838f, 0.42011598f, + 0.11129376f, 0.18282677f, -0.7165381f, -3.611883f, + 0.48547474f, 0.1206109f, 0.0791582f, 0.5717829f, + 1.4082952f, -0.13747625f, 0.028161597f, -0.05371877f, + 0.026620565f, -0.27406257f, 0.06475868f, 0.10684791f, + 0.07656841f, 0.11414447f, -0.18679783f, 0.3174631f, + -0.3324665f, -0.054792285f, 0.015518165f, 0.2820419f, + -0.3405606f, 0.11497142f, -0.034227278f, -0.15895344f, + -0.027250698f, 0.26229578f, -0.029106213f, 0.07658948f, + 0.055758134f, -0.04704797f, -0.09523118f, -0.01786842f, + -0.24532066f, -0.10276325f, 0.04712425f, -0.0014071283f, + 0.26272595f, -0.12238576f, 0.04811111f, 0.04746326f, + 0.06720963f, -0.045621894f, 0.037144933f, -0.057428807f, + 0.0074382615f, -0.006663423f, 0.008955534f, -0.0017526702f, + 0.068258256f, -0.014245306f, 0.012218727f, -0.06978347f, + 0.0045066467f, -0.05709926f, -0.028024383f, 0.1313973f, + -0.08620281f, 0.0014925577f, -0.04540824f, 0.009461808f, + -0.085372925f, 0.15996909f, -0.032260284f, -0.067303635f, + -0.009071448f, 0.05536098f, 0.046731256f, 0.005596734f, + 0.050206613f, 0.0077225636f, -0.10998435f, 0.013611023f, + 0.065691985f, -0.050880555f, 0.090820104f, 0.048506916f, + -0.123054065f, -0.027516266f, -0.075243846f, -0.13243125f, + 0.13891536f, 0.048725024f, -0.037174966f, 0.16769321f, + 0.050089728f, -0.12838423f, 0.002787225f, 0.07988778f, + -0.0053280047f, -0.056187253f, -0.011433725f, 0.016641367f, + 0.08536485f, -0.06201575f, 0.0035803248f, 0.028980076f, + -0.048863932f, -0.11342622f, 0.13643155f, -0.08830679f, + -0.02103459f, 0.09369883f, -0.006806451f, -0.012497092f, + 0.094690606f, -0.050089475f, -0.013550645f, -0.0060583195f, + -0.040357545f, -0.007459913f, 0.058476903f, -0.070549786f, + 0.0007626135f, -0.012492823f, -0.00510646f, 0.013715168f, + -0.009291373f, 0.008988795f, 0.013655029f, 0.027690958f, + -0.05720208f, 0.013017537f, 0.040551037f, -0.0059102485f, + -0.047496248f, 0.07378406f, -0.03411246f, 0.032498203f, + 0.0007936657f, -0.031725146f, -0.0489591f, 0.04632291f, + -0.06077211f, 0.019726476f, 0.032194573f, 0.02347913f, + -0.030544575f, -0.0039228355f, 0.01824424f, -0.025985759f, + -0.04485126f, 0.034144726f, 0.0048262817f, -0.016245268f, + 0.03092239f, 0.05255696f, -0.0527505f, 0.036376152f, + 0.010774665f, -0.04255956f, -0.019309435f, 0.03162172f, + -0.05954396f, 0.047493123f, 0.0021444375f, -0.031325057f, + 0.041758582f, 0.03128625f, -0.08789106f, 0.042219453f, + 0.018610658f, -0.02827738f, 0.035746276f, -0.9474874f, + 2.0469842f, -1.321167f, 0.2543833f, -1.2119492f, + 4.2701416f, -3.0788984f, -0.22463766f, 0.4665166f, + 1.4026526f, -1.1010966f, -2.6380749f, 2.6244087f, + -0.7884985f, 0.29131767f, -1.738198f, 2.2840524f, + -0.9478553f, 0.23109299f, -0.27683294f, 0.32805127f, + -0.3203711f, 0.261952f, 0.050106455f, 0.04158691f, + -0.023125503f, -0.03719599f, -0.056111246f, 0.05282794f, + -0.021825556f, 0.006073163f, -0.018821497f, 0.12478096f, + -0.07695036f, -0.025720906f, 0.029763224f, 0.053414855f, + -0.113284856f, 0.0674048f, -0.055122614f, 0.0593638f, + 0.035032593f, -0.04542647f, 0.0038384513f, 0.081376925f, + -0.09966911f, -0.040397853f, 0.049806096f, 0.0008625808f, + 0.009346304f, -0.016910354f, -0.0061955294f, 0.00075164373f, + 0.017360615f, 0.014771159f, 0.020654095f, -0.0060036047f, + -0.024364313f, -0.0064911875f, -0.0035039433f, -0.017624265f, + 0.011326905f, 0.034578107f, -0.031880025f, 0.01818495f, + -0.0018683636f, -0.013890168f, 0.00048885506f, -0.0049361764f, + -0.029021565f, 0.043846432f, -0.0085247345f, 0.006515423f, + -0.0072788447f, -0.22348252f, -0.32035953f, -0.17488877f, + -0.12534964f, 0.05155121f, -0.25779155f, 0.17713468f, + 0.4386189f, -0.04552404f, -0.12387897f, 0.50271976f, + 0.2873703f, 0.2634686f, 0.04795615f, -0.008180651f, + -0.22767483f, 0.18837523f, 0.4473208f, 0.047504447f, + -0.03341417f, -0.025862379f, -0.034787036f, -0.11211656f, + 0.09060133f, 0.14062718f, -0.11936079f, -0.15965782f, + 0.31821185f, 0.5182185f, -0.3406504f, 0.2403372f, + -1.7994181f, -6.015933f, -0.22330882f, -0.023098761f, + -0.0795721f, 2.4078753f, 1.8562393f, 0.22230634f, + 0.0073212096f, -0.3555047f, 0.59674025f, 2.190251f, + -0.62903965f, 0.2844899f, 0.41804186f, -0.5471097f, + 0.47739178f, -0.261793f, 0.17756975f, 0.049934085f, + 0.007851809f, -0.0122786295f, -0.013898886f, -0.0041208738f, + -0.041106824f, -0.030471098f, 0.078186445f, 0.0620147f, + -0.09604734f, 0.0030226242f, 0.053262204f, -0.05892392f, + -0.01313975f, 0.088094994f, -0.029207155f, -0.073151454f, + 0.027125567f, 0.0018934088f, 0.096658505f, -0.014958196f, + 0.036345955f, -0.007185197f, -0.017472142f, -0.1481408f, + -0.041528292f, 0.07346612f, -0.074839324f, 0.07964649f, + -0.025005175f, -0.11541149f, 0.2657465f, -0.2514277f, + 0.10952359f, -0.09074946f, -0.030426346f, -0.12749483f, + 0.43572408f, -0.37397367f, 0.06997134f, -0.19125696f, + 0.5404963f, 1.1268033f, 0.50891066f, -0.107599825f, + -0.049365554f, 0.3013349f, 0.111512065f, -0.22275999f, + 0.114790834f, 0.16869746f, -0.14016086f, -0.06494082f, + 0.113072425f, 0.048676368f, -0.10187943f, 0.23833296f, + 0.14212827f, -0.20158547f, -0.093053155f, -0.19645469f, + -0.045022108f, -0.3578435f, -0.47786415f, -0.19165401f, + -0.17586553f, 0.2630432f, -0.69676906f, -0.1683862f, + -0.10343814f, 0.0747168f, -0.058464624f, 0.6414457f, + -0.031557675f, 0.32135972f, -0.28340906f, 0.58322585f, + 0.79386425f, -1.3579369f, 0.2213669f, 0.7535923f, + 0.35874626f, -4.081564f, 2.105799f, 0.03394105f, + -0.58708084f, -3.105196f, 5.0317016f, -0.5260426f, + -0.17504211f, -0.55119985f, 2.7276595f, -1.9475206f, + -0.02522392f, -0.1247523f, 0.40392175f, -0.80572325f, + 0.4562317f, 0.09129194f, 0.07239832f, -0.004039087f, + -0.024027368f, -0.015137804f, -0.0054662786f, 0.011786941f, + 0.004253954f, 0.027057769f, 0.00018785706f, -0.0088780485f, + -0.008575791f, 0.021962967f, -0.0003256301f, 0.0013863654f, + -0.013673512f, -0.013595973f, 0.039284207f, -0.019664254f, + -0.0053340485f, 0.00075133645f, -0.014103194f, -0.046577062f, + 0.037992567f, -0.0065952917f, 0.023269163f, 0.01705902f, + 0.017225321f, -0.02343812f, 0.0051621622f, -0.0005592662f, + -0.0147186285f, 0.00040271418f, 0.027110096f, -0.02702271f, + 0.013710606f, -0.006311487f, -0.0060713515f, -0.010298143f, + 0.03591056f, -0.025406174f, 0.0048258547f, 0.021302823f, + -0.013482781f, 0.006497144f, 0.005626027f, -0.024558544f, + -0.017322414f, 0.012411624f, -0.024183042f, 0.014873674f, + 0.026183153f, -0.008383793f, 0.0124931205f, 0.012457213f, + 0.012045159f, -0.019694531f, -0.0066898805f, 0.0019155081f, + 0.019189619f, -0.04763183f, 0.023620982f, 0.035946153f, + -0.013889654f, -0.026330067f, 0.016713306f, 0.017396243f, + 0.014167993f, -0.018667273f, -0.0176273f, 0.021136532f, + 0.0036439386f, -0.0375102f, 0.02710138f, 0.002033066f, + 0.009265898f, -0.039189693f, -0.025981946f, -0.004615037f, + 0.0032535857f, 0.018461222f, 0.0074792383f, -0.0017322749f, + 0.008931792f, 0.005375118f, -0.0319608f, 0.004013289f, + 0.009399282f, 0.0026269008f, -0.005500013f, -0.0083868615f, + 0.010927849f, 0.023633521f, -0.05956806f, -0.013574904f, + 0.061837375f, -0.0026012722f, -0.027987529f, 0.06258813f, + 0.0054814643f, -0.021918664f, -0.023040216f, -0.45757416f, + 1.4565207f, 0.43907982f, -1.3033811f, -0.024905257f, + 0.32251948f, -3.835781f, 3.3216836f, 2.440432f, + -0.5298869f, -0.28021938f, 2.749278f, -6.4149313f, + 0.6562477f, 0.95437104f, 0.14401948f, -0.5539441f, + 3.2380984f, -2.1034584f, 0.017148938f, 0.011923728f, + 0.13322712f, -1.0862578f, 0.92730755f, -0.26725858f, + -0.24397932f, 0.074425526f, 0.1117935f, 0.13240293f, + 0.41784397f, 0.7404742f, 1.0318282f, 1.4331021f, + 0.7335343f, -0.43346286f, -0.7830092f, -1.9374405f, + -2.4191442f, -1.3617048f, -0.24706343f, -0.03342432f, + 1.5173944f, 1.8612181f, 0.6315033f, -0.11890764f, + 0.19086017f, -0.7222582f, -0.7190146f, -0.14755085f, + 0.3167361f, -0.039976545f, 0.1307512f, -0.14481206f, + 0.0029141766f, -0.023563737f, 0.22623633f, -0.26986006f, + 0.033467237f, 0.3039329f, 0.09788029f, -0.23093647f, + 0.04797184f, -0.5435371f, 0.28225297f, -0.12393708f, + 0.06615679f, 0.21791485f, 0.23950522f, -0.38103038f, + 0.057797447f, 0.012778321f, 0.18788584f, -0.23953205f, + 0.003463926f, 0.1519535f, -0.025784193f, 0.022954147f, + 0.021384975f, 0.031615477f, -0.024224572f, 0.013137536f, + -0.015687706f, 0.024815697f, -0.05859628f, 0.031555064f, + -0.0019542053f, 0.0120559605f, -0.027779348f, 0.04989342f, + -0.018062575f, 0.011863047f, -0.009080397f, -0.032487895f, + 0.023245774f, 0.0034800111f, -0.012821287f, -0.004105503f, + 0.0097069405f, -0.0123393545f, -0.01738414f, -0.24763492f, + 0.22560623f, -0.33906525f, 0.17742047f, 0.29261616f, + 0.23450398f, 0.08458583f, 0.31558466f, -0.34477365f, + -0.036315188f, -0.63012654f, 1.020803f, -6.822575f, + 4.672898f, 0.907094f, 0.0921175f, 0.42199847f, + -2.4781747f, 2.6292892f, -0.20802575f, -0.040282898f, + -0.16429797f, 0.158319f, -0.21606922f, 0.17297447f, + 0.10854483f, -0.21564475f, 0.10645375f, -0.0852769f, + -0.123929694f, -0.070597954f, 0.1399093f, -0.21883014f, + 0.25562203f, 0.015535234f, 0.008046734f, 0.20049386f, + -0.10580072f, -0.288465f, 0.12385275f, -0.13853587f, + 0.14443761f, -0.11708488f, 0.16184115f, 0.32197487f, + -0.14791423f, 0.16313978f, 0.049589388f, -0.09173289f, + -0.12055817f, -0.03492332f, 0.0457395f, -0.027245864f, + 0.08227852f, -0.03637111f, 0.019504743f, -0.05241149f, + 0.08827175f, -0.09138424f, 0.049888045f, 0.03992102f, + -0.013001513f, -0.06494804f, 0.10308159f, -0.058084413f, + 0.0041539194f, 0.03151993f, -0.06009176f, 0.010160405f, + 0.0142107215f, -0.0069897706f, -0.03624838f, 0.08260462f, + -0.07326148f, -0.0082091065f, 0.05924571f, -0.07805568f, + 0.0003147011f, -0.024013342f, 0.003571202f, -0.0687727f, + 0.085256286f, -0.028858652f, 0.008514979f, -0.01370254f, + -0.02649602f, -0.049568724f, 0.072079524f, -0.019674798f, + 0.01081535f, 0.02266942f, -0.006238329f, -0.017271083f, + -0.016328055f, 0.005945148f, 0.010414125f, 0.0649988f, + -0.011186836f, 0.0031077736f, 0.01488379f, 0.10748715f, + -0.06637495f, -0.040573314f, -0.0037701947f, 0.08946786f, + 0.020519216f, 0.18580866f, -0.11058605f, -0.10992421f, + 0.009827032f, 0.0054510324f, 0.048547767f, 0.16061442f, + -0.05525848f, -0.13149387f, 0.011624945f, -0.11132381f, + -0.029880086f, 0.14393318f, 0.035286944f, -0.098463364f, + 0.038993724f, -0.06352473f, -0.06792619f, 0.098394215f, + -0.06928554f, 0.058781754f, -0.059582964f, -0.017070632f, + -0.0157639f, 0.1672481f, -0.20033248f, 0.08431539f, + 0.18242975f, 0.14837542f, -0.17650276f, -0.046665296f, + -0.1051493f, -0.50624675f, -0.10856225f, -0.16793527f, + -0.07197735f, 0.28330138f, -0.39458862f, 0.023908805f, + 0.053147294f, -0.061758015f, -0.27711603f, 0.04967058f, + 0.068010144f, -0.29855344f, 0.07553203f, 0.00070996344f, + 0.0021598968f, -0.34284872f, 0.3667866f, -1.7976327f, + -3.8050454f, -0.27751672f, 0.06710288f, -0.11527652f, + 2.0488567f, 3.8449504f, -0.019417979f, 0.25272283f, + -0.7124749f, 0.6854457f, 1.2635205f, -0.6528006f, + 0.20464845f, 0.11308838f, -0.2125412f, -0.4034266f, + -0.008234763f, -0.02797744f, 0.041370988f, -0.09540984f, + -0.001699344f, -0.019013003f, 0.0010383653f, -0.016509417f, + 0.28561717f, -0.024256004f, 0.24378292f, -0.02724916f, + -0.020548128f, -0.1074765f, 2.074155f, -0.3262673f, + 0.024195021f, 0.3360093f, -0.068875425f, -9.405202f, + 1.627166f, -0.37471554f, -0.14033297f, 0.011253595f, + 0.33248034f, -0.101982914f, 0.038908735f, -0.08949174f, + 0.020867223f, 0.04687899f, -0.060135193f, 0.05768169f, + -0.015182229f, 0.0089645665f, -0.0532681f, 0.0694109f, + -0.029092036f, 0.052889585f, -0.043014023f, 0.08994548f, + -0.074426785f, -0.018725326f, -0.021360457f, 0.01875993f, + 0.0013528034f, 0.034160204f, -0.038930826f, 0.009579829f, + 0.009250521f, -0.09578013f, 0.04048143f, 0.078915566f, + -0.13183434f, 0.40188128f, -0.03411511f, 0.07047681f, + -0.10000601f, -0.0060591656f, 0.65625215f, 0.31422958f, + 0.18896863f, 0.17151128f, 0.34385997f, 0.030188305f, + -0.16014273f, -0.42167395f, -0.018569563f, -0.28614002f, + 0.029776182f, 0.049304806f, -0.22978953f, 0.09140162f, + 0.022890963f, 0.11712325f, 0.17694704f, -0.21161927f, + 0.07646972f, -0.01295703f, 0.009571042f, -0.106058836f, + 0.15918256f, -0.06587445f, 0.08662464f, -0.19923525f, + 0.34388235f, -0.9267652f, -0.09304384f, -0.30417427f, + 0.7931898f, -1.7338952f, 9.8180275f, 0.55701333f, + 0.064932264f, -0.17937589f, 0.115376815f, -0.09499582f, + -0.2485727f, -0.0046541383f, 0.028371822f, 0.03606203f, + 0.0067365323f, 0.11616945f, 0.043863643f, -0.14730981f, + 0.27774972f, 0.060969193f, -0.11612988f, -0.28526798f, + 0.471017f, -0.6997008f, 0.12838572f, -0.055129312f, + 0.2856449f, -1.4332232f, 1.3067651f, -0.24192092f, + 0.2081171f, -0.53965205f, -6.1775684f, -0.98148304f, + 0.17084767f, -0.17830072f, -0.04059373f, 0.3728461f, + 0.20867456f, 0.1925686f, -0.057526354f, 0.14585286f, + -0.853003f, 0.3680343f, -0.14916426f, 0.13524614f, + -0.11169913f, 0.86978984f, 0.13307375f, 0.16287537f, + -0.006425193f, 0.14676112f, -2.3489091f, 0.8756857f, + -0.20259936f, 0.16589902f, -0.5012086f, 5.3331738f, + 2.7984626f, -0.9493607f, 0.033240914f, 0.4609847f, + -1.6910734f, -5.0659533f, 0.72995746f, -0.51399076f, + -0.065757565f, -0.05140033f, -0.11702281f, 0.074511275f, + 0.071474716f, 0.10055807f, -0.0506172f, 0.044049654f, + 0.0014753543f, -0.060616218f, -0.03317927f, 0.17350663f, + -0.041833654f, -0.09485293f, 0.07951459f, 0.14834303f, + -0.14340387f, 0.101668894f, 0.122225344f, -0.2774673f, + -0.08121955f, 0.14949931f, -0.11217966f, -0.1307467f, + 0.20548299f, 0.013154022f, -0.013632002f, 0.011080129f, + -0.023512319f, 0.0034349402f, -0.024646418f, 0.047568355f, + -0.025344204f, -0.0053444174f, 0.0009639232f, 0.016193729f, + -0.027206594f, 0.018514376f, -0.016472122f, 0.011601346f, + 0.024698649f, -0.029349223f, 0.0025446075f, 0.002941529f, + 0.004151751f, -0.04827001f, 0.054990288f, -0.024588568f, + 0.03452298f, -0.009801387f, -0.026963536f, 0.024885468f, + 0.0077325925f, -0.12784983f, -0.0004727017f, 0.0524453f, + -0.0024653298f, -0.16912785f, 0.39179403f, 0.068885565f, + -0.11209827f, 1.1931618f, 0.04712435f, -2.251133f, + 0.04459844f, -0.20346907f, 1.195541f, -0.2519252f, + -1.2471386f, -0.1414118f, 0.07511332f, -0.23009096f, + 0.2610551f, 0.29286104f, 0.11769671f, -0.023729652f, + 0.019181583f, -0.028368853f, -0.011860269f, 0.032248575f, + 0.05148718f, -0.047919888f, 0.013449175f, 0.01674022f, + -0.038879845f, -0.049415056f, 0.045062315f, -0.0224045f, + 0.0051458273f, 0.026753867f, -0.020444315f, -0.009118943f, + 0.037824873f, -0.021686908f, 0.0063562766f, -0.0038951882f, + 0.008729107f, 0.0036430436f, 0.026570326f, -0.019414574f, + 0.047252927f, 0.24848075f, 0.049518216f, -0.2768678f, + 0.009328891f, -0.19252661f, -0.3930677f, -0.007572138f, + 0.11327027f, 0.09987962f, 0.18214096f, 2.3384292f, + -0.545856f, -0.8609355f, -0.08785435f, 0.19772369f, + 1.0370896f, -0.34821796f, -1.0101713f, -0.164299f, + -0.06544462f, -0.24169508f, 0.18837783f, 0.20615467f, + 0.046311665f, 0.21245573f, -0.16856518f, 0.15108292f, + -0.27393705f, 0.015365598f, -0.3854066f, 1.1974015f, + -0.8171824f, 0.38396147f, 0.057925183f, -0.18901315f, + -0.8586682f, 2.095654f, -0.84733313f, 0.029171998f, + 0.25229037f, -0.7818646f, -1.3056161f, 1.2940466f, + -0.134979f, 0.1756112f, 0.059034463f, 0.0018894798f, + -0.4029903f, 0.1728906f, -0.0034107924f, -0.35439357f, + 0.19148839f, 0.03786663f, -0.00047731365f, -0.019054921f, + 0.6592522f, 0.2706359f, 0.09047983f, -0.026447074f, + 0.049455334f, 0.09238018f, -0.0045684935f, -0.368926f, + -0.06521345f, 0.06581056f, -0.22142394f, -0.54163706f, + 0.26768303f, -0.0740894f, -0.03496943f, -0.052972406f, + 0.10855165f, -0.11435824f, 0.041386828f, -0.102326035f, + 0.0018735762f, 0.07658435f, -0.07127314f, 0.028028022f, + 0.116911955f, -0.033302654f, 0.04568431f, 0.082488224f, + -0.21965177f, -0.07413175f, -0.13298523f, -0.04259496f, + 0.10826996f, 0.17827633f, 0.14145942f, 0.111332774f, + -0.13057046f, -0.006932171f, 0.027994003f, -0.068751104f, + 0.0040345634f, -0.0039512743f, -0.08156678f, -0.023819147f +}; + +static const float espcn_conv1_biases[] = { + -0.018524863f, -0.02344122f, -0.059815478f, -0.13828179f, + -0.5407016f, 0.06077186f, 0.011967307f, 1.6737873e-05f, + 0.044080056f, 7.559907e-05f, -0.0023202975f, 0.036452256f, + -0.0011971687f, 0.037468974f, 0.5938281f, -0.0019778858f, + -0.0029633807f, 0.032908075f, -0.082847565f, 0.5534438f, + 0.0010720869f, 0.008382872f, -0.0005540301f, 0.007542251f, + -0.00054567686f, 0.002956358f, 0.046740323f, 0.00097470934f, + -0.0008472085f, -0.44804764f, 0.38280413f, 0.030789707f, + -0.722147f, 0.46606433f, -0.03505152f, -0.0014596627f, + 0.0030858433f, 0.0030317134f, 0.0025776294f, 0.0231461f, + 0.01756983f, -0.07762163f, 0.0032662358f, 0.046537727f, + -0.044725697f, -0.002968841f, 0.0005652894f, -0.0059821554f, + 0.6851272f, -0.092141666f, -0.29181793f, 0.00046312233f, + -0.54941076f, 0.034235522f, 0.11732721f, 0.027588358f, + 0.0060634925f, 0.004350643f, 0.46479496f, 0.0037383304f, + -0.2703324f, 0.026774203f, 0.017801644f, 0.04200875f +}; + +static const float espcn_conv2_kernel[] = { + -0.046674103f, 0.26428235f, -0.46103826f, 0.52712137f, + -0.33590984f, -0.17109194f, -0.0686052f, -0.07092914f, + -0.33207268f, -0.022449905f, -0.064986974f, -0.32484075f, + -0.0554371f, -0.59975314f, 0.11422833f, 0.068143204f, + -0.0018858669f, 0.3688631f, 0.041308302f, -0.037440863f, + -0.11112171f, 0.18021569f, 0.07213223f, 0.059388958f, + 0.09809465f, -0.07924326f, 0.036813457f, -0.25266457f, + 0.049585357f, -0.325183f, 0.659209f, 0.08045369f, + 0.7181868f, -0.25441548f, 0.05403617f, -0.033545442f, + -0.07890143f, 0.06283723f, -0.0036670712f, 0.060813967f, + 0.49117467f, 0.08548931f, 0.1397057f, 0.23137523f, + 0.23626906f, 0.15435082f, -0.0881616f, -0.08931251f, + 0.6407793f, -0.711827f, -0.09148442f, -0.010182393f, + -0.22424959f, 0.22931574f, -0.11653139f, -0.035417557f, + 0.09172038f, -0.06217888f, -0.13925147f, 0.027134137f, + -0.71670324f, 0.35419685f, -0.12383344f, 0.16469592f, + 0.5541678f, -0.34323946f, -0.060989752f, 0.46205896f, + -0.26838145f, -1.1341122f, -0.019517051f, 0.20830911f, + 0.4519294f, -0.008591234f, 0.0035951894f, -0.0696347f, + 0.04464795f, 0.16277248f, -0.7174859f, 0.07877335f, + -0.014362606f, -0.24790181f, -0.28197056f, -0.7512798f, + 0.38359404f, -0.18325178f, -0.020694658f, -0.24196818f, + -0.13549626f, 0.11022808f, -0.057731092f, 0.2660348f, + -0.08914909f, 0.97424257f, 1.0067362f, 0.23840818f, + 1.3499018f, -0.2948939f, -0.18948932f, 0.084086366f, + 0.13916422f, -0.053409252f, 0.034651592f, 0.6136519f, + 0.521036f, 0.053577263f, -0.21486463f, 0.081501134f, + -0.32000288f, -0.17460087f, 0.09788475f, 0.24676149f, + 0.19157162f, -0.40596998f, 0.45726103f, 0.050311435f, + -0.6772082f, -0.15382625f, 0.090584226f, -0.17078221f, + 0.5261085f, 0.1265592f, 1.0355614f, -0.11936747f, + -0.7620874f, 0.14844258f, 0.6093218f, -0.56291664f, + 0.037501205f, 0.12485749f, 0.14178781f, 0.08348596f, + -0.30096284f, 1.1994859f, 0.19401193f, -0.12891848f, + 0.17503682f, 0.020317312f, 0.06757912f, 0.7639953f, + -0.01018983f, 0.47289777f, 0.5996521f, -0.21656662f, + 0.03760899f, -0.58895385f, -0.56364167f, -0.3800838f, + -0.32080677f, -0.016804136f, -0.047808167f, 0.2457111f, + 0.048505846f, -0.0066461437f, 0.19492339f, -0.044978056f, + 0.03597572f, 0.973317f, 0.80091244f, -0.19597733f, + 0.7849349f, -0.4328205f, 0.54092515f, -0.1000266f, + -0.09305786f, 0.017513275f, -0.043898217f, -0.0011413264f, + 0.2741364f, -0.24002706f, 0.10263537f, -0.3157341f, + -0.1817245f, 0.06316719f, -0.045441207f, -0.19999616f, + 0.59036136f, -0.929242f, -0.2259878f, -0.115269065f, + -0.6086586f, -0.2443034f, 0.18262775f, -0.09070053f, + -0.68831503f, -0.096460946f, 0.64405525f, 0.112335846f, + 0.0651215f, 0.99067503f, 0.27747253f, 0.37193787f, + 0.04985451f, -0.23573603f, 0.421118f, 0.431377f, + -0.20965208f, 0.26304242f, 0.2524355f, 0.027636467f, + 0.14990109f, 0.040952217f, 0.07939775f, 0.3484388f, + 0.025526477f, -0.25410444f, -0.14516917f, -0.060723733f, + 0.02533456f, -0.13899088f, -0.771202f, 0.19927137f, + -0.16109027f, -0.0879771f, -0.030220356f, 0.17516586f, + -0.06494486f, 0.08522494f, 0.3226843f, 0.17873856f, + 0.015208139f, -0.77031285f, 0.43173358f, 0.082899325f, + -0.23150858f, -0.3546863f, 0.12339482f, 0.040335365f, + 0.08092755f, -0.037309915f, 0.05912349f, 0.26949504f, + 0.5846339f, -1.9282948f, -0.083857276f, 0.041776888f, + 0.5534651f, -0.16246532f, 0.0333914f, 0.10689656f, + -0.33218884f, -0.191305f, -0.110735744f, -0.060104877f, + 0.4205079f, -0.5120307f, 0.3012935f, 0.0059898547f, + -0.5201543f, 0.07413049f, -0.12935893f, 0.06917478f, + 1.1134965f, -0.63113445f, 0.295582f, -0.08106212f, + -0.76212734f, -0.0033916542f, -0.0082135135f, 0.41783637f, + -0.16403818f, 0.3409297f, -0.23072788f, -0.02182988f, + 0.15994272f, -0.025851693f, -0.086990654f, 0.36421558f, + -0.022342218f, -0.08575764f, -0.17176214f, -0.05879204f, + 7.2425564e-07f, -0.7348249f, -0.008461221f, 0.316571f, + 0.2553959f, 0.05026763f, 0.22897281f, -0.12187772f, + 0.04273273f, -0.11774693f, -0.31411144f, -0.23734225f, + 0.023199726f, -0.71966887f, 0.390865f, -0.26477832f, + -0.26728633f, 0.22609584f, 0.14667323f, -0.15086149f, + -0.15804252f, 0.007859211f, -0.071217954f, -0.2024186f, + -0.17261346f, 1.1517165f, 0.16905463f, 0.527085f, + -0.79107165f, 0.20309469f, -0.027971271f, 0.028042238f, + -0.37720725f, 1.1990021f, 0.2861834f, 0.027881658f, + -0.07594778f, -0.755004f, 0.37583643f, 0.20889725f, + 0.40248895f, -0.15868257f, -0.29324895f, 0.0073413285f, + -0.03221651f, 0.04222086f, -0.56599194f, 0.1316574f, + 0.32267398f, -0.30811018f, 0.009511509f, 0.37700927f, + -0.1761917f, -0.65478015f, -0.031077266f, -0.0012360336f, + -1.4888004f, 0.0027788912f, 0.014060073f, -0.10431362f, + 0.008857338f, 0.12252177f, 0.12191871f, 0.13308547f, + -0.031593915f, -0.21598554f, 0.44040915f, 0.6425841f, + -0.08555652f, 0.0565315f, -0.2560663f, -0.059711326f, + -0.026588634f, -0.002182128f, -0.5897357f, 0.102076136f, + -0.03339101f, -0.79707164f, 0.25357902f, 0.029758122f, + -0.20302856f, 0.053880017f, -0.24216141f, 0.14256707f, + 0.11925629f, 0.0009726241f, 0.020042723f, -0.22397634f, + 0.60491306f, -0.0799372f, -0.1188527f, 0.15720364f, + -0.10922401f, -0.10785788f, 0.023474775f, -0.07532779f, + 0.11522492f, -0.014375704f, -0.09244887f, 0.10161737f, + 0.7234623f, 0.08744806f, 0.03538458f, 0.2193847f, + 0.19487795f, 0.10907811f, -0.32664987f, -0.09264603f, + -0.17754139f, -0.26980463f, -0.10870375f, -0.08479278f, + -0.49118847f, 0.120683394f, 0.7132835f, 0.45244792f, + 0.21157178f, -1.3531632f, -0.02591179f, 0.008506874f, + 1.0093842f, 0.02687048f, -0.0182936f, -0.05349838f, + 0.025951784f, 0.525051f, 0.18124938f, 0.055352695f, + -0.015539851f, 0.01359462f, 0.1669847f, -0.329349f, + 0.42093417f, -0.06888676f, -0.14403322f, -0.07013914f, + -0.045789f, 0.0077280467f, 0.20861097f, 0.034761835f, + -0.06872854f, 0.27268225f, -0.1248414f, -0.0984672f, + 0.024131464f, 0.2819358f, -0.52894294f, -0.048365857f, + -0.018785186f, -0.014475937f, -0.063025676f, -0.0016713755f, + 0.44439432f, 0.5860615f, 0.0017755321f, 0.071490906f, + 0.01665473f, 0.01043939f, -0.0049000867f, -0.19566949f, + 0.25060382f, -0.1115756f, 0.008380983f, -0.051830936f, + 0.078110285f, -0.35945877f, -0.11642675f, 0.001180824f, + 0.0578475f, -0.020864224f, 0.16781266f, -0.0017521876f, + -0.62528956f, 0.1562274f, -0.46741173f, 0.012773457f, + -0.42958456f, 0.35419467f, 0.7802642f, 0.7651227f, + 0.15311906f, 1.5961279f, 0.110667616f, -0.072065115f, + 0.7206966f, -0.04193095f, 0.0711928f, -0.0019790665f, + -0.023330979f, -0.6372553f, 0.4749518f, -0.007703528f, + -0.0118237855f, 0.39432898f, 0.19798014f, -0.037313983f, + -0.39190286f, 0.069940664f, -0.11332594f, 0.25451034f, + 0.10828647f, -0.036833063f, -0.20823239f, -0.0051089395f, + 0.10366354f, -0.27613324f, -0.08230586f, 0.30575338f, + -0.058297206f, 0.09497224f, -0.2009728f, 0.14842197f, + 0.08278775f, 0.051755365f, 0.106069684f, -0.30312496f, + -0.6279082f, 0.67748356f, -0.04157887f, 0.05925659f, + 0.6019529f, -0.048674017f, 0.023168415f, -0.0117832f, + 0.10957296f, -0.55471784f, 0.3902961f, 0.004402121f, + -0.26879898f, -0.1613903f, -0.0736826f, 0.05158686f, + -0.40968376f, 0.062633745f, 0.1909543f, 0.051297225f, + -0.5385568f, 0.20263128f, -0.24177232f, 0.12465008f, + 0.9497351f, 0.0942599f, -0.37810448f, 0.42079917f, + 0.27641112f, -0.13552265f, -0.15447186f, 0.05729938f, + -0.9949809f, -0.011660784f, -0.080264896f, 0.21001951f, + 0.009583477f, 0.26658905f, 0.110737085f, -0.010538512f, + 0.0073930826f, -0.10350395f, 0.2690889f, -0.06732192f, + -0.06597211f, -0.0026426371f, 0.32086986f, -0.23931707f, + -0.024190666f, 0.033044633f, 0.017585613f, -0.047808494f, + -0.02701819f, 0.66567475f, -0.15553795f, -0.16383912f, + 0.11520975f, -0.25181836f, 0.13908514f, -0.09092483f, + -0.073647134f, -0.020011587f, -0.03323974f, 0.36156735f, + 0.19554496f, -0.2779971f, 0.05498606f, 0.09546568f, + -0.102127574f, 0.07539362f, -0.027212327f, 0.2002329f, + 0.07217274f, -0.31443796f, -0.1112432f, 0.044234317f, + 0.010144093f, 0.04564201f, -0.24525721f, -0.10580795f, + 0.32514638f, -0.035346646f, 0.2633613f, -0.057136223f, + 0.32189956f, -0.7063134f, 0.2205946f, -0.121362925f, + -0.11235741f, 0.093478404f, 0.3236306f, -0.15380429f, + -0.11459577f, 0.24943016f, 0.06301527f, 0.07359773f, + -0.30425563f, -0.009721266f, 0.011319024f, -0.05684832f, + 0.002824362f, 0.014445753f, 0.28266156f, -0.026186015f, + -4.9471604e-05f, -0.038714428f, -0.08657151f, 0.09283593f, + 0.200015f, -0.08817101f, 0.07703519f, 0.0026806525f, + 0.010412304f, -0.054159623f, -0.0775633f, 0.042284265f, + 0.0073298747f, 0.21470556f, 0.05467484f, 0.019926656f, + -0.047757216f, 0.1965818f, -0.060126822f, -0.018734982f, + 0.003734466f, 0.010669374f, 0.0101004215f, -0.079241745f, + -0.122091696f, 0.46603644f, -0.002449234f, -0.0029658272f, + 0.2260892f, -0.0968824f, 0.027408192f, -0.008983596f, + 0.41098675f, -0.09793973f, 0.07739444f, 0.062839866f, + 0.2109761f, -0.13808833f, 0.014332022f, 0.13062069f, + 0.14733574f, 0.026309716f, -0.25325757f, 0.025179707f, + 0.18055823f, -0.21977347f, 0.28260782f, 0.12728982f, + -0.4268119f, 0.16071615f, 0.49010542f, 0.39210045f, + -0.23921739f, -0.34988824f, 0.020909507f, -0.031102689f, + 0.39786085f, 0.04060349f, -0.012260492f, 0.07701521f, + 0.0032373392f, -0.3211925f, -0.3098456f, 0.110261254f, + 0.02880115f, 0.023276372f, -0.23179927f, -0.09671852f, + -0.17803997f, 0.16418648f, 0.009986631f, 0.028437436f, + -0.0696619f, 0.070268594f, -0.23809299f, -0.1210799f, + -0.06263444f, 0.1687488f, -0.1022174f, 0.16335264f, + -0.14669034f, 0.22479394f, 0.039738588f, 0.0025826024f, + -0.034533355f, -0.006438025f, 0.07587747f, 0.03283625f, + -0.065498665f, 0.26191965f, 0.006896614f, 0.014701348f, + 0.019605692f, 0.12325369f, -0.11641243f, -0.0036758208f, + -0.25055993f, 0.010461836f, -0.14595032f, -0.058902275f, + -0.16618772f, 0.44314942f, -0.101349875f, -0.016435022f, + -0.021817617f, -0.06827429f, -0.006538524f, -0.015117204f, + 0.10537151f, 0.14787868f, 0.51321185f, -0.26809156f, + 0.018769728f, 0.04534671f, 0.09445704f, 0.34622777f, + -0.06110584f, -0.036286496f, -0.20022584f, 0.008659418f, + 0.3038453f, -0.03234285f, 0.01122692f, -0.054838225f, + -0.017392907f, 0.016833223f, 0.49745992f, -0.06170047f, + -0.04826097f, -0.0050241635f, -0.57363427f, -0.1872473f, + 0.17139418f, 0.03429791f, -0.024473784f, -0.10805081f, + 0.028670384f, -0.073548235f, -0.06016784f, -0.0066841184f, + 0.05512082f, -0.6844955f, -0.21495752f, -0.3565604f, + -0.6392911f, 0.26932484f, 0.19190924f, 0.022291541f, + 0.04126848f, -0.0017807592f, -0.036653258f, 0.057726976f, + 0.17616573f, -0.72685295f, -0.0030662578f, -0.04362823f, + 0.28530198f, -0.06680635f, 0.098419f, 0.015014377f, + -0.13731647f, 0.14593858f, -0.16181391f, 0.13406125f, + 0.61669034f, 0.09283103f, -0.07495512f, -0.38249707f, + 0.007854118f, 0.072650045f, -0.49352726f, -0.034318488f, + 0.48840395f, -0.5911552f, 0.27560255f, -0.00076505897f, + 0.2525632f, 0.023079759f, -0.13862175f, -0.0050264117f, + -0.21578434f, -0.39153072f, 0.007889652f, 0.04991312f, + 0.124499984f, 0.02582332f, -0.013385625f, 0.07202608f, + 0.018049205f, 0.21069467f, 0.17125195f, -0.013168845f, + 0.015675973f, -0.3299053f, 0.18481588f, 0.09117244f, + 0.13362707f, -0.03578448f, -0.11294014f, 0.06735854f, + -0.04726264f, 0.18058431f, 0.013282449f, 0.10362096f, + -0.008768287f, 0.01906196f, -0.09233572f, 0.0027316224f, + -0.32418412f, -0.68946844f, 0.1328566f, 0.083345614f, + 0.07215056f, -0.056430474f, -0.030177787f, 0.025497515f, + -0.3069073f, -0.39930156f, -0.042785905f, 0.025616985f, + 0.29878968f, 0.033854682f, -0.013890017f, 0.00052144343f, + 0.3604786f, -0.13097762f, 0.04974513f, -0.1508374f, + -0.6819763f, -0.3551178f, -0.16612557f, 0.101316705f, + -0.62778705f, -0.022399968f, -0.43390587f, -0.014289895f, + 0.42192006f, 0.35321176f, -0.2627384f, -0.13136947f, + -0.1605258f, 0.005829208f, -0.3298086f, -0.31155488f, + 0.12568021f, 0.2695432f, -0.09579615f, -0.07985796f, + 0.4477858f, -0.05365754f, 0.03691468f, 0.14316183f, + -0.0390769f, 0.3263752f, -0.57568514f, -0.16314152f, + -0.05244232f, -0.21125014f, 0.1894712f, -0.03354973f, + -0.72243994f, -0.16907904f, 0.09877965f, -0.019296408f, + 0.1657333f, -0.20240118f, -0.042492058f, -0.16696197f, + 0.0933027f, -0.081449956f, -0.16955544f, -0.12059676f, + -0.32353896f, -0.14886564f, 0.10017824f, -0.06872203f, + -0.0687338f, 0.06287452f, -0.03823187f, -0.13179168f, + -0.02977857f, -0.7214259f, 0.04764241f, -0.16904181f, + 0.22611506f, -0.07867074f, 0.11607085f, 0.25687262f, + -0.158813f, 0.2170912f, 0.022958746f, 0.12211839f, + -0.38955256f, -0.16881509f, -0.6662008f, -0.07782999f, + 0.63337785f, 0.084912784f, -0.1898102f, -0.016330302f, + -0.0057496307f, -0.22735956f, 0.15386534f, 0.15679047f, + 0.43130034f, -0.0499025f, -0.11292001f, -0.104975134f, + 0.1517253f, 0.3488109f, 0.0832407f, 0.01959845f, + -0.36043146f, 0.013733767f, -0.048483185f, -0.077942096f, + 0.018922301f, -0.055467468f, -0.17980838f, 0.15051974f, + 0.03501007f, 0.024140948f, 0.378899f, 0.58339345f, + 0.3902328f, 0.13922966f, 0.08787596f, -0.0680227f, + -0.07662555f, 0.062245425f, -0.24619436f, 0.06520207f, + -0.059733838f, 0.18075316f, -0.4185296f, 0.18009084f, + -0.61645687f, -0.120788425f, 0.19870868f, -0.025232071f, + -0.018999962f, 0.019278869f, 0.07256909f, -0.07902122f, + -0.7232183f, 0.9824709f, 0.023246713f, -0.075314395f, + -0.1722031f, 0.10662969f, -0.10377831f, -0.19552313f, + -0.0019716343f, -0.33209836f, 0.22475685f, -0.030774042f, + 0.24270383f, -0.20828041f, -0.11887029f, -0.068650484f, + -0.21299605f, -0.067906f, -0.6986742f, 0.032572027f, + 0.11754704f, 0.27241483f, -0.21527997f, 0.2525498f, + 0.0735313f, 0.07372777f, -0.05048918f, -0.31742972f, + -0.03269987f, -0.13490497f, -0.03511707f, -0.003701831f, + 0.024309402f, -0.03652601f, -0.019658307f, 0.064287804f, + -0.044906896f, 0.18838996f, 0.5800624f, 0.0489327f, + -0.013741884f, -0.1463824f, 0.41280955f, -0.39657968f, + -0.22094302f, 0.021620726f, 0.06754212f, 0.01914351f, + 0.057791635f, -0.08462072f, 0.10943695f, -0.15771161f, + 0.020891378f, -0.14356568f, 0.07099027f, 0.0072890325f, + 0.30583042f, -0.054003328f, -0.20160842f, -0.05109723f, + -0.073696665f, 0.07079835f, 0.050535556f, -0.1386965f, + 0.13956863f, -0.033268258f, 0.051163133f, -0.3299929f, + 0.14722784f, 0.04479772f, -0.034851987f, 0.09152712f, + -0.013576469f, 0.08212124f, 0.04366362f, 0.052677043f, + 0.12854135f, -0.20400403f, 0.13585025f, 0.021291919f, + 0.6106778f, 0.03280244f, 0.6618558f, 0.010743958f, + -0.47789448f, -0.23268737f, 0.29747304f, -0.0043874676f, + 0.030395813f, -0.01416444f, -0.11479771f, -0.14839633f, + 0.1327711f, 0.39874923f, 0.07290827f, 0.08768036f, + 0.19624479f, 0.028556399f, 0.008063483f, -0.039568193f, + 0.047924913f, -0.41591546f, -0.5199549f, 0.012532293f, + 0.0031062674f, 0.041904118f, 0.14968546f, -0.2954595f, + 0.5711544f, -0.018007848f, -0.1187696f, 0.006382767f, + -0.07623751f, 0.11004023f, -0.29377073f, 0.2967224f, + -0.0042043244f, 0.49871373f, -0.11996741f, -0.04853217f, + 0.2742492f, -0.18625423f, 0.10374811f, 0.10584355f, + 0.11635925f, -0.09287576f, -0.083618164f, -0.27217832f, + -0.37832612f, 0.96235126f, -0.07846141f, 0.07666849f, + -0.7282468f, -0.049017057f, 0.015335578f, -0.1913724f, + -0.8404892f, 0.35348907f, 0.0007533626f, -0.03490046f, + -0.12864292f, -0.23313756f, 0.014800447f, 0.07538264f, + -0.4744575f, 0.0019865024f, 0.011663446f, 0.029772537f, + -0.2382581f, 0.057398744f, -0.29506052f, 0.06907142f, + -0.029674232f, -0.20632058f, 0.08927787f, -0.4543019f, + 0.07989503f, -0.46033293f, 0.073787555f, -0.12172886f, + -0.7607957f, 0.02232548f, 0.0105672935f, 0.0673091f, + -0.00069879065f, 0.047686838f, -0.019173758f, -0.03846056f, + 0.024762023f, -0.10737568f, 0.09315246f, -0.9336785f, + -0.18223964f, -0.033037316f, -0.09616871f, 0.09074901f, + 0.01160752f, 0.00023968855f, 0.23658048f, -0.03555241f, + -0.036499016f, 0.9244435f, -0.30398262f, 0.20839591f, + 0.5949766f, 0.29482245f, 0.25750014f, -0.053599373f, + -0.03293568f, -0.0057265395f, -0.026553756f, -0.27830595f, + 0.17080984f, -0.8018825f, 0.01221246f, -0.2835773f, + -0.09898585f, -0.0070701726f, -0.008414906f, 0.08213352f, + -0.19505978f, 0.5015525f, 0.80230016f, -0.08646765f, + 0.63567483f, -1.0642571f, 0.5182278f, -0.096828446f, + -0.05344551f, -0.056020953f, -0.05707235f, -0.018617336f, + -0.5230437f, 0.34005353f, -0.4557868f, -0.14439894f, + 0.38480377f, -1.3235939f, 1.8052317f, -0.72057134f, + 0.9126798f, 0.3676458f, -0.0080114575f, -0.11595554f, + -0.103040844f, 0.035603534f, -0.015758205f, 0.07999699f, + -0.006971836f, 1.6570647f, 0.2554021f, -0.21877348f, + 0.0020116605f, 0.11209725f, 0.8904091f, -1.1218871f, + 1.4163808f, 0.14892934f, 0.006312167f, -0.065382436f, + 0.023434175f, 0.043887693f, -0.43947184f, -0.066447034f, + -0.05484326f, 0.0056940434f, 0.32978708f, -0.22046088f, + -0.9243625f, -0.26284355f, -0.4704563f, 0.11848836f, + 0.048912488f, -0.010977471f, 0.07930389f, -0.04216015f, + 0.4962294f, -0.42514783f, -0.034328513f, 0.28654203f, + -0.061215926f, 0.15865158f, -0.05742608f, -0.35354927f, + 0.5760551f, -0.32362577f, -0.7639785f, -0.24093197f, + 0.8416991f, 0.8121987f, -0.51095843f, 0.23165523f, + 0.07161821f, 0.02869675f, 0.8572826f, 0.030069608f, + -0.04059496f, 0.121984705f, -0.8305223f, 0.19240989f, + -0.9800724f, 1.2104095f, -2.3459392f, 0.821266f, + 0.8199659f, 1.1952082f, -0.11307323f, 0.15900673f, + 0.37324476f, -0.00901551f, -0.0063961255f, 0.3436898f, + -0.019784855f, -1.5781275f, 0.55635923f, -0.088165246f, + -0.089846924f, 0.48113683f, -1.2748227f, -0.30893058f, + -1.0148634f, 0.144896f, 0.33884206f, -0.055583563f, + -0.04183638f, -0.22956437f, 0.5929827f, -0.17173627f, + 0.08415828f, 0.08928949f, -1.3766861f, -0.66887f, + -0.33084556f, 0.015637277f, 0.17392366f, -0.124815434f, + -0.034929127f, 0.08000754f, 0.06421893f, -0.2598851f, + -0.13899769f, 0.13867772f, 0.04168338f, 0.49056658f, + 1.0300015f, -0.030438267f, 0.11001292f, 0.62731254f, + 0.05973872f, 0.979931f, -0.8919011f, 0.28131783f, + -0.09346065f, -0.5158018f, 0.22534059f, 0.53414f, + -1.30939f, -0.010872453f, -0.61851317f, -0.04308007f, + 0.30164596f, -0.28872985f, 0.6384374f, -0.05910474f, + 0.5832805f, -0.7048056f, 0.33323365f, -1.1084536f, + 0.70449936f, -1.8504816f, 0.008978661f, -0.19915931f, + -0.9858322f, 0.10512383f, -0.025395656f, 1.3993329f, + -0.028837258f, 1.8859462f, -0.28787547f, 0.14018701f, + 0.030354962f, -0.011389586f, 0.48661262f, -0.69561386f, + 1.3474137f, -0.16131014f, -0.2688697f, -0.28446344f, + -0.09610444f, 0.1720655f, 0.27081022f, 0.22686748f, + -0.18199518f, 0.661283f, 0.91053754f, 0.30152312f, + 0.02319523f, -0.4257972f, 0.37422857f, 0.039165173f, + 0.04694271f, -0.20457137f, -0.17133068f, 0.048189476f, + 0.43752974f, -1.027162f, -0.086497605f, -0.010030861f, + -0.38085717f, -0.030893505f, 0.0038837674f, -0.32170814f, + 0.20521568f, -0.6564224f, -0.456026f, -0.20190556f, + -0.45532295f, 1.0338401f, 0.17268077f, -0.018443432f, + 0.47271976f, -0.0029546216f, 0.2591139f, -0.027547639f, + -0.34917423f, 0.7324974f, -1.4116933f, 0.26277366f, + 0.003953574f, -0.08849687f, 0.5799557f, 0.02265028f, + 0.9956517f, 0.20597336f, 0.0243701f, -0.065926135f, + -0.26063347f, 0.005145106f, -0.040647544f, -0.5246113f, + -0.032949716f, -0.3842233f, 0.2490879f, -0.12214436f, + 0.00092013256f, 0.05368562f, 0.4980927f, -0.3821752f, + -0.9746551f, -0.09184542f, -0.02170654f, -0.25944722f, + -0.07797552f, -0.1731825f, -1.1407802f, -0.06579885f, + 0.048637766f, -0.10273871f, 0.7226834f, 0.1051687f, + -0.675876f, -0.23160712f, 0.13932365f, -0.3109556f, + -0.16254301f, 0.004054364f, -0.101571485f, 0.34141943f, + 0.5158648f, -0.18641707f, 0.1514879f, -0.54648817f, + -0.46785563f, -0.048889644f, 0.03416854f, 0.11833223f, + 0.4963859f, -0.033280317f, -0.5098967f, 0.3247369f, + -0.059735235f, 0.95467275f, 1.1799345f, 0.08239173f, + 0.37549368f, -0.10384936f, -0.19131805f, -0.05227246f, + 0.93128794f, 0.1769598f, 0.26859936f, 0.04983612f, + 0.19740231f, 0.29193434f, 0.31630036f, 0.4617379f, + 0.900637f, -0.500469f, -0.07832846f, -0.16936824f, + 0.48466104f, -0.041119654f, -0.08462446f, -0.68950397f, + 0.04631842f, 0.54778326f, 0.1338306f, 0.4341834f, + 0.14371982f, -0.34779876f, -0.24549949f, -0.89762527f, + 0.38836622f, -0.10706622f, -0.1931988f, -0.11792283f, + 0.0035790345f, 0.33384633f, 1.3935994f, 0.3070505f, + -0.16708173f, -0.20717686f, -1.1201156f, 0.7722406f, + -0.08369808f, 0.24140514f, -0.8074505f, 0.21041206f, + 0.07052478f, -0.0992914f, -0.08230787f, -0.20418759f, + -0.14002877f, 0.51368827f, -0.06314002f, 0.6684959f, + -0.2723895f, 0.072143145f, -0.121543154f, -0.9446662f, + 0.7801356f, 0.7813523f, -0.60231173f, -0.041328736f, + 0.5023119f, 0.19410098f, -0.17512462f, -0.03537046f, + 0.13634318f, 0.023312362f, 0.3242475f, -0.0042878226f, + -0.33574507f, 0.16946486f, 0.4183852f, 0.51513636f, + 0.14975318f, -1.3054739f, -0.746688f, -0.8801606f, + 0.5497791f, 0.048051637f, 0.3759283f, 0.31506863f, + 0.2502755f, -0.054758083f, 0.10454956f, 0.1691291f, + 0.042567298f, -1.5660353f, -0.31068772f, -0.28079906f, + -0.024366086f, 0.28031284f, -1.0634004f, 0.2108564f, + -0.41109252f, 0.06184334f, 0.38427737f, 0.44320226f, + 0.03957711f, 0.004129623f, -0.31172767f, -0.15918258f, + 0.1326007f, 0.44373193f, 0.78900695f, -0.1760957f, + -0.16458939f, 0.48684084f, 0.24407406f, -0.30311462f, + -0.16764544f, 0.26463488f, 0.30706203f, 0.22452609f, + 0.03442557f, -0.19601104f, 0.0807709f, 0.33969784f, + 0.37965566f, -0.07889159f, 0.039907616f, 1.0991075f, + -0.4089549f, -0.31498322f, 0.16044329f, 0.15731367f, + -0.7579591f, 0.6460394f, 0.0046346104f, 0.0472538f, + -0.52719986f, -0.07572972f, 0.66765577f, 0.094688304f, + 0.22829652f, 0.02697642f, 1.3646461f, -1.0294485f, + 0.32645002f, 0.985207f, -0.48907226f, 0.24017715f, + 0.7846768f, -0.3893203f, 0.041490614f, 0.17593683f, + 0.22703595f, -0.023705255f, 0.052981924f, -0.28682443f, + 0.05020945f, -0.37853613f, -0.036045365f, 0.20786847f, + 0.034319263f, 0.058425084f, 0.17980011f, 1.0989101f, + -0.36878836f, -0.058031064f, 0.01689887f, 0.35156643f, + 0.054320306f, 0.12823732f, -0.7314487f, 0.12663695f, + -0.008609773f, -0.28736416f, 0.8887259f, 0.22080967f, + -0.49281853f, -0.71532553f, 0.3902669f, 0.16677961f, + 0.11729585f, -0.005339085f, 0.015549244f, -0.7530055f, + -0.18213952f, 0.86832607f, -0.10606119f, -1.0991435f, + 0.24169695f, -0.09348218f, 0.011970132f, -0.1062844f, + -0.60076994f, 0.14488591f, -0.37456793f, -0.1606147f, + -0.522324f, 0.18760403f, 0.27903914f, -0.4969156f, + -0.352278f, 0.04724763f, -1.2687259f, 0.025117675f, + 1.1559798f, -0.87893057f, 0.087309524f, -0.08584089f, + -0.020828197f, -0.045017093f, 1.212271f, 0.45598748f, + 0.89593214f, 0.42855322f, -0.05613323f, -0.09234977f, + -0.11786892f, 0.059708573f, 0.097749226f, -0.13230008f, + -0.052386533f, 0.4205756f, -0.6480817f, -0.2275672f, + -0.08140867f, -0.31374398f, 0.3735192f, -0.62694097f, + 0.73815274f, 0.08312054f, -0.0924495f, 0.021514803f, + 0.053884946f, -0.10900521f, -0.41072857f, -0.21020694f, + 0.041961685f, 0.06188188f, -0.5475027f, -0.3411637f, + -0.39764288f, 0.5900751f, 0.37223083f, -0.1108904f, + -0.07866411f, 0.008883312f, -0.012757348f, 0.2694886f, + 0.6689537f, -0.3504275f, 0.03389823f, 0.031843357f, + -0.5419896f, 0.022275751f, 0.009060438f, 0.3633925f, + -0.43923414f, 0.7864955f, -0.118183985f, -0.15515181f, + 0.21635044f, 0.49661508f, -0.4722201f, 0.5163968f, + 0.9700302f, -0.044228435f, 0.6457148f, 0.0017951588f, + -0.49664235f, 0.050343726f, -0.19076023f, -0.30561933f, + -0.23653527f, 0.45331326f, -0.41963464f, -1.1247996f, + 0.22692493f, 0.59337515f, -0.2237175f, -0.01918548f, + -0.44020566f, -0.027704136f, -0.04253981f, -0.3823013f, + -0.02502749f, -0.46320587f, 0.16625318f, 0.15970246f, + -0.007429975f, -0.1683428f, 0.76946366f, -1.2303258f, + -0.95331824f, 0.052714635f, -0.17677064f, -0.09253482f, + 0.021721262f, -0.15922648f, 1.1512754f, 0.0031821122f, + 0.030584762f, 0.21514477f, -0.4230814f, -0.00014326212f, + 0.1688291f, -0.5380872f, -0.15794986f, 0.28297946f, + 0.13241048f, -0.075477324f, -0.11189966f, -0.49272132f, + -0.20409596f, 0.6171119f, -0.01777885f, 0.028663076f, + 0.30929625f, 0.025719853f, -0.03694918f, -0.56768686f, + 0.1775044f, -0.2769967f, -0.5732568f, 0.07951842f, + 0.06743672f, -0.013239328f, 0.9011393f, -0.18373159f, + 0.11558731f, 0.123553514f, 0.0044899555f, -0.013636768f, + 0.23078315f, 0.34557414f, -0.7334669f, 0.5137294f, + 0.011534466f, -0.21156578f, 0.7697923f, 0.15463492f, + -0.5901611f, 0.028582644f, 0.017852113f, -0.07857407f, + -0.4777054f, 0.06458535f, 0.06914719f, -0.06420497f, + 0.046576172f, 0.73274297f, -0.5026898f, 0.13529554f, + -0.00941928f, 0.25313148f, -0.37075043f, -0.2733768f, + 0.065498896f, 0.038754348f, -0.015358937f, 0.094372556f, + -0.08542737f, 0.06419397f, 0.20445304f, 0.18457255f, + -0.07349663f, 0.23186208f, -0.17375587f, 0.1813076f, + 1.2848791f, 0.9271832f, 0.39130297f, 0.0104423165f, + 0.031900086f, -0.10575629f, -0.071113825f, -0.2813745f, + -0.63900816f, -0.3010183f, -0.078159384f, -0.3896904f, + 0.3688795f, -0.119128644f, 0.077123255f, -0.047321837f, + -0.7008967f, 0.17933623f, 0.11333183f, 0.011499413f, + 0.607434f, 0.69931144f, 0.17165236f, -0.1361541f, + 0.5183956f, -0.008188635f, 0.24646443f, -0.008420727f, + -0.71537113f, -0.74191815f, 0.43494743f, 0.5137038f, + -0.1907198f, 0.109988324f, -0.3980153f, -0.44217053f, + -0.39546895f, 0.3968704f, 0.014194501f, 0.0490976f, + -0.10890121f, -0.047488034f, -0.08533077f, -0.38523468f, + -0.063952215f, -0.36171728f, 1.3895638f, -0.18317534f, + 0.004864246f, -0.10929064f, -0.09027185f, 0.6888102f, + -0.644277f, 0.08041566f, -0.076905385f, 0.05812857f, + 0.07392323f, -0.12644598f, 0.026674818f, -0.18673258f, + 0.09689631f, -0.2628735f, -0.25706333f, -0.39390376f, + -0.4951419f, -0.94046056f, 0.017409422f, -0.099073075f, + -0.11927845f, 0.14758973f, 0.062230386f, -0.8272258f, + -0.85650516f, -0.5034178f, 0.14160982f, -0.35882106f, + -0.12686756f, 0.0969981f, -0.17357199f, -0.1016007f, + -0.30692658f, 0.73137844f, 0.51190776f, 0.094313726f, + 0.68952423f, -0.33750173f, 0.4584838f, 0.00045639463f, + -0.22498818f, -0.03972586f, -0.30972204f, 0.06765716f, + 1.0040592f, 1.2720892f, -0.12680252f, -0.16533485f, + -0.9031853f, 0.025274767f, 0.4374573f, -0.0017714903f, + 0.27475032f, -0.30898345f, -0.17943485f, -0.093494624f, + 0.33200723f, -0.003868301f, 0.006973397f, -0.46648303f, + 0.060371667f, -0.37320092f, 0.15722525f, 0.2487535f, + 0.0042585013f, 0.31561005f, -0.1151895f, -0.5503925f, + 0.62729096f, -0.019816924f, 0.14519577f, -0.23005262f, + 0.0049698725f, 0.13356787f, 0.07876236f, 0.11001108f, + -0.028032063f, -1.3307017f, -0.06598647f, 0.2910977f, + -0.008249967f, -0.09258802f, -0.61329556f, 0.13149554f, + 0.087250404f, -0.07198767f, -0.0064592697f, -0.0738384f, + 0.19079113f, -1.068451f, -0.09496136f, -0.000341748f, + 0.90756285f, -0.008928536f, 0.12384436f, 0.22698209f, + 0.4866184f, 0.041644946f, -0.15970235f, 0.02174098f, + 0.4970642f, -0.24010655f, -0.26073715f, 1.0649153f, + -0.46890327f, 0.053935613f, -0.79150695f, -0.055312715f, + -0.17689951f, 0.28245515f, -0.054626778f, -0.06193034f, + -0.0028709057f, -0.036895722f, -0.57166326f, 0.38450122f, + -0.099760406f, -0.06808836f, 0.20637059f, 0.014000514f, + -0.21060416f, -0.026943302f, -0.008706633f, 0.16452776f, + 0.008026457f, -0.29122934f, 0.8303414f, -0.12333763f, + 0.009050507f, 0.70525366f, 0.62096506f, 0.4900359f, + 0.9831365f, -0.05575002f, -0.06924361f, 0.095837f, + 0.06918361f, -0.008072401f, -0.10670196f, -0.01943345f, + -0.0072479197f, -0.29566485f, 0.12579326f, -0.14184883f, + -1.0289804f, -0.70995533f, -0.15975907f, -0.029099256f, + -0.03375278f, 0.061063007f, 0.020239409f, -0.823185f, + -0.48817238f, 0.95726126f, 0.05110191f, 0.9522512f, + -0.39398512f, 0.07514176f, -0.02450375f, 0.16414882f, + -0.3778163f, -0.14328916f, -0.23608033f, -0.098305546f, + -1.2154307f, 0.03519007f, -0.06572301f, 0.0031483087f, + -0.32979482f, -0.023844222f, -0.25152838f, 0.06280502f, + -0.5603487f, 0.22348763f, -0.22049682f, -0.5489126f, + 0.050499804f, -0.22933632f, 1.2048659f, 0.085301846f, + 0.53779286f, -0.04541708f, -0.42714235f, -0.114994355f, + 0.077430025f, 0.0019177721f, -0.022488091f, 0.4067963f, + 0.025118781f, -0.37767127f, -0.5273275f, 0.3877572f, + -0.08213132f, 1.6665092f, -0.3122936f, 0.2684743f, + -0.885766f, 0.18616807f, 0.3564835f, -0.14651437f, + -0.011919897f, -0.03195618f, 0.1152242f, -0.051294573f, + 0.082694925f, 0.25671086f, -0.0695763f, 0.06358117f, + 0.74922425f, 0.36549798f, 0.3604688f, 0.19808912f, + 0.11861682f, -0.11772792f, 0.023446508f, 0.19055665f, + 0.09591083f, 0.39769763f, -0.10193978f, 0.6399084f, + -0.118168056f, -0.025860926f, 0.09197376f, 0.25056756f, + -0.8823866f, -0.1034859f, -0.1393422f, 0.12775324f, + -1.0833702f, 0.55493206f, -0.55619854f, 0.10329987f, + 0.57847714f, 0.060047545f, 0.6049074f, -0.12549861f, + -0.022799013f, -0.73334527f, 0.7079563f, 0.3016133f, + -0.2209651f, 0.17532831f, -0.65859646f, 0.011872502f, + -0.044833202f, 0.05802466f, 0.49906757f, 0.14276251f, + 0.9737522f, -0.0036204476f, 0.0028946085f, -0.056772333f, + -0.038172066f, 0.6197196f, -0.01639909f, -0.38761434f, + 0.072124764f, 0.06785335f, -0.6001445f, 0.9029481f, + 0.48170623f, -0.24380372f, -0.22275232f, 0.14893897f, + -0.024422985f, 0.087934524f, 0.95391107f, 0.011719784f, + -0.10277132f, 1.573545f, -0.027059387f, 0.3247061f, + 0.99540097f, 1.443773f, 0.05386302f, -0.23261318f, + -0.12469175f, 0.13316385f, 0.016029045f, -0.0063711936f, + 0.01762945f, 0.36611274f, 0.08972508f, 0.30712077f, + -0.26090217f, 0.0031268331f, -0.11014641f, -0.5720738f, + -0.5639281f, 0.019921884f, 0.51711327f, -0.16300824f, + -0.13510548f, 0.17063567f, 0.38829276f, -0.29442516f, + 0.084774755f, -0.05248659f, -0.5395793f, 0.12503177f, + 0.5452999f, 0.55447555f, -0.45326382f, 0.3414917f, + 0.2836259f, 0.02962363f, -0.592555f, -0.03465222f, + -0.025140282f, 0.20495126f, 0.06391735f, 0.15052867f, + 0.21320514f, 0.039794207f, 0.030232532f, -0.14236775f, + 0.013585668f, 0.1326012f, 0.41451913f, 0.07357894f, + -0.014308767f, 0.6170127f, -0.372488f, -0.05951878f, + -0.6931575f, 0.02011225f, -0.08121963f, -0.078647174f, + -0.106735334f, -0.041893844f, 0.4213713f, 0.021669546f, + -0.036483373f, -1.3079649f, -0.19947098f, 0.24933967f, + 0.43800384f, 0.9655616f, 0.2552877f, -0.0019412349f, + 0.03308606f, 0.006003238f, 0.07148713f, 0.22389409f, + 0.2680311f, 0.49049807f, -0.030111598f, -0.072276965f, + -0.67143995f, -0.13021722f, 0.0038304636f, -0.084877305f, + 0.3546851f, 0.0014745921f, 0.009995153f, 0.15942898f, + 0.7030296f, -0.06200087f, 0.16187207f, -0.0014681758f, + 0.34708276f, 0.042232294f, -0.42565167f, 0.04119306f, + 0.5375523f, -0.64575267f, -0.07403678f, -0.2334629f, + 0.6109085f, -0.87409884f, 0.7713701f, -0.4826039f, + -0.30480117f, 0.30053002f, 0.1462264f, -0.12091676f, + -0.1582895f, 0.0046089278f, 0.004810011f, 0.113557115f, + -0.039927945f, -0.35131967f, 0.051165875f, -0.39044905f, + 0.091032326f, -0.25981817f, 0.22634125f, -0.14027756f, + 0.049981806f, -0.0467415f, -0.14341736f, 0.23024786f, + 0.09546332f, 0.12248355f, -0.7858108f, 0.063256726f, + 0.016779812f, 0.37885863f, 0.35680738f, -0.27929777f, + -0.40441898f, 0.13013232f, -0.34245622f, -0.039367046f, + -0.06399504f, -0.043711066f, -0.11576525f, 0.67227155f, + 0.3619514f, -0.07882113f, 0.004442097f, -0.40862623f, + -0.19893081f, 0.111571774f, -0.10046477f, -0.016046414f, + -0.16379161f, -0.29523376f, 0.063762076f, -0.20367733f, + 0.20983404f, -0.35274857f, 0.10470164f, -0.18603796f, + -0.86547214f, -0.10827245f, -0.8721894f, 0.050294425f, + 0.25122395f, 0.194495f, -0.19602104f, -0.2963323f, + 0.3040308f, 1.2060019f, -0.4322342f, 0.29893824f, + 0.53474873f, -0.47262055f, -0.30938658f, 0.04530289f, + -0.63986933f, -0.023553003f, 0.0028545316f, 0.0059051644f, + 0.017317161f, 0.33975446f, -0.22744276f, 0.2041872f, + -0.08495383f, -0.13449326f, 0.15414521f, 0.24521166f, + -0.09439226f, 0.060709234f, 0.13547389f, -0.22402775f, + -0.036962923f, -0.19246994f, 0.34138623f, -0.121779226f, + 0.03968929f, -0.8482405f, 0.22754039f, -0.28667283f, + -0.44498968f, -0.60010904f, -0.3601931f, 0.061218426f, + 0.069286086f, -0.0030529562f, 0.029059855f, 0.377279f, + 0.105468936f, -0.35330158f, 0.018554715f, -0.13633803f, + 0.7281722f, -0.0046950183f, 0.123859f, 0.03714201f, + -0.04469041f, -0.111670636f, -0.32531464f, 0.09333545f, + 0.47098127f, 0.2274033f, -0.17244692f, 0.25584722f, + 0.34795192f, 0.081313774f, 1.0746405f, -0.13414536f, + -0.3979964f, -1.0879383f, 0.36208192f, 0.15792575f, + 0.122745596f, -0.023249758f, 0.05964052f, -0.0060077743f, + 0.021397233f, -0.42065015f, -0.13975693f, -0.037741337f, + -0.063053966f, 0.025943968f, -0.011683591f, -0.008706891f, + 0.007145784f, 0.26263484f, 0.31879652f, 0.014681194f, + 0.00654473f, 0.08251991f, 0.28295973f, -0.039998922f, + -0.21669704f, 0.1660612f, 0.07474764f, -0.15964223f, + -0.025208466f, -0.054200947f, -0.026033727f, -0.078104705f, + -0.022985185f, -0.01506758f, 0.0026671444f, -0.083349444f, + -0.006899891f, 0.45605922f, -0.07585411f, -0.03942136f, + -0.013859746f, -0.011474223f, 0.0064103715f, 0.0122716725f, + 0.101682894f, 0.1016815f, 0.024777308f, 0.01471872f, + 0.34514418f, 0.046117976f, -0.03203467f, 0.05374025f, + 0.05236815f, -0.005288516f, 0.039844617f, 0.05726062f, + -0.28553554f, -0.12280083f, -0.010398416f, -0.051934347f, + 0.05713223f, -0.02810472f, 0.04347635f, -0.005164778f, + 0.012373663f, 0.2718315f, 0.48957554f, -0.013845285f, + -0.06987528f, -0.035763822f, 0.03597708f, -0.022896944f, + 0.0068812207f, -0.14976381f, 0.07771851f, 0.078737654f, + 0.53912544f, -0.013667609f, 0.009509036f, -0.0058935652f, + -0.013410584f, -0.36920217f, 0.20532338f, 0.05188507f, + -0.013276654f, -0.0022585627f, -0.34951398f, -0.22259676f, + 0.1721818f, -0.022042798f, -0.06965093f, 0.04736011f, + -0.018319689f, -0.016166708f, 0.04395636f, 0.027602723f, + -0.009085259f, -0.1230529f, 0.05030763f, -0.009185757f, + -0.00024862285f, 0.5558705f, -0.078649014f, 0.0034227618f, + 0.014880684f, 0.011291685f, -0.0037412557f, 0.11232719f, + 0.10180813f, -0.1452423f, -0.020468978f, 0.0028362588f, + -0.34611276f, -0.061698016f, 0.02405149f, 0.06947595f, + -0.17364088f, -0.07227603f, -0.064481646f, 0.037099563f, + -0.16279651f, -0.04401294f, -0.044543244f, -0.038924396f, + 0.019953627f, 0.025663488f, 0.007677187f, -0.016340453f, + 0.0077102105f, 0.09823559f, 0.20692164f, -0.17961378f, + -0.18084644f, 1.9230658e-05f, 0.05647889f, 0.014703978f, + 0.010008401f, -0.1121624f, -0.017601665f, -0.07639821f, + 0.19516668f, 0.005743868f, -0.008852902f, 0.0305475f, + -0.0029133484f, 0.09002025f, -0.01992898f, -0.014376694f, + 0.01167537f, -0.026024926f, -0.2789509f, -0.032265384f, + 0.113168105f, -0.05364941f, -0.1574542f, 0.09376676f, + 0.020710552f, 0.06075086f, 0.008636697f, 0.072762854f, + 0.000179895f, 0.3456567f, 0.025678432f, -0.074387185f, + 0.026792154f, -0.25800395f, 0.07881812f, 0.046434067f, + 0.012625898f, -0.028284889f, -0.02491126f, 0.023944272f, + 0.009710916f, 0.16511695f, -0.031247023f, 0.0018563486f, + 0.15395331f, -0.0076460512f, -0.020389149f, 0.049093336f, + 0.10382156f, -0.035351314f, 0.009565356f, -0.06323532f, + -0.29214263f, -0.0023359917f, -0.17818227f, -0.009895879f, + -0.046099875f, 0.0024482138f, 0.06532132f, 0.010954204f, + -0.07110699f, 0.02198267f, -0.088628165f, -0.09141581f, + 0.0760771f, 0.027118789f, 0.15048158f, -0.11901542f, + -0.37259945f, 0.19362882f, -0.030802073f, -0.13634822f, + -0.35675076f, 0.01467977f, 0.029831393f, -0.07370825f, + -0.002126716f, 0.31909248f, 0.24852262f, -0.10933074f, + 0.011671194f, -0.071767226f, 0.06898677f, 0.06327687f, + 0.22762035f, -0.077095106f, -0.08108688f, 0.03255345f, + 0.055702865f, 0.107977f, -0.0034886738f, 0.037626922f, + -0.0030516917f, -0.21344364f, -0.014818139f, 0.05246243f, + -0.035879076f, 0.22751032f, 0.04005838f, 0.0073741595f, + -0.009191947f, -0.029188117f, -0.05811093f, 0.040719096f, + 0.048099697f, 0.3855574f, -0.0060555036f, 0.042787604f, + -0.55800605f, 0.009897925f, 0.019569527f, -0.2915962f, + -1.0781194f, 0.03292253f, -0.018410714f, -0.07187909f, + -0.19825383f, -0.067948304f, 0.22056298f, 0.04947223f, + -0.105174944f, 0.0024802985f, -0.08754306f, 0.004542315f, + 0.3870724f, 0.29234722f, -0.0047889245f, 0.30710196f, + 0.53463006f, -0.11273465f, -0.12457816f, -0.0010187149f, + 0.19961236f, 0.36136612f, -0.15468979f, 0.04062258f, + -0.16186167f, -0.024962962f, -0.024773614f, -0.0114295585f, + 0.01684022f, 0.36041167f, -0.21948388f, 0.1915662f, + -0.0047973706f, -0.43040618f, 0.05966985f, -0.00027674646f, + -0.41713512f, 0.07617185f, 0.27380827f, -0.09441982f, + -0.0040086485f, -0.028672814f, 0.24157865f, -0.09339134f, + 0.012112252f, 0.2147801f, 0.020150393f, 0.066439584f, + 0.07170433f, -0.3875427f, -0.33050987f, -0.0102263875f, + 0.0044189366f, 0.042367075f, 0.026449542f, 0.051484115f, + 0.115683354f, -0.6007919f, 0.007763368f, 0.016719684f, + -0.401863f, 0.06625697f, 0.04040015f, 0.012912467f, + 0.12198498f, 0.11934922f, -0.11683646f, 0.072028115f, + 0.17331858f, 0.008202952f, 0.0717959f, 0.060011692f, + 0.10465313f, -0.0033135333f, -0.26371318f, -0.045101274f, + 0.15265273f, -1.0523217f, 0.13903184f, 0.25599927f, + 0.6859134f, -0.039007068f, -0.21193312f, 0.021606816f, + 0.04495826f, 0.4505658f, 0.24516907f, 0.07692408f, + 0.07059295f, 0.022104615f, 0.043220505f, 0.04952006f, + 0.0057651624f, -0.06064482f, 0.07827498f, -0.04013409f, + 0.0035875516f, -0.09289838f, -0.21662554f, 0.13522758f, + 0.024368195f, -0.024605986f, 0.05762151f, 0.051305596f, + -0.037394065f, -0.07724804f, 0.15341327f, 0.0049413475f, + -0.011528657f, 0.21325362f, -0.03920411f, 0.06890001f, + 0.111433074f, 0.50785357f, -0.021456238f, -0.050302096f, + -0.01242706f, 0.006727743f, 0.045685824f, -0.058312602f, + -0.002096912f, 0.9976318f, 0.013712047f, -0.010744051f, + 0.2977653f, -0.0652747f, 0.018005906f, 0.12224006f, + -0.6974484f, 0.05781479f, 0.025902355f, 1.8219562e-05f, + 0.3851496f, -0.028707527f, -0.4370785f, 0.0078269f, + -0.0039666896f, -0.008514037f, -0.30792361f, 0.062474824f, + 0.022263365f, -0.15652551f, 0.4308204f, -0.32283765f, + -0.08207422f, -0.0149213085f, -0.113489695f, 0.3649257f, + -0.12870748f, -0.22169471f, 0.28754982f, 0.090529054f, + -0.8036505f, 0.011512394f, 0.002014808f, -0.04100507f, + -0.005321597f, -0.1538057f, -0.25856143f, -0.03328444f, + 0.0028614898f, -0.060954306f, -0.027022852f, 0.12675719f, + -0.47103256f, -0.06039225f, -0.064616665f, 0.090020925f, + -0.073906496f, -0.032930996f, -0.078331895f, 0.007586858f, + -0.0403489f, 0.008083122f, 0.004606347f, 0.14762938f, + -0.13229391f, -0.0061374195f, 0.123903476f, -0.071201965f, + -0.03049885f, 0.03565021f, 0.04874859f, 0.054224003f, + 0.05604062f, -0.36935982f, 0.029095598f, 0.054800812f, + 0.55237657f, -0.041265935f, -0.011401279f, -0.037793204f, + 0.22366779f, -0.05610134f, 0.07530306f, -0.058228277f, + -0.3007927f, -0.730336f, -0.018644769f, -0.032974146f, + -0.16306789f, -0.011114965f, -0.09814073f, 0.03074098f, + 0.101149805f, 0.18346871f, -0.09223584f, -0.07340539f, + 0.042115815f, -0.25919664f, 0.49065873f, -0.3355628f, + 0.53187764f, -0.18840909f, -0.04954688f, -0.0322028f, + 0.5673649f, -0.02246416f, -0.015110285f, 0.11297663f, + -0.019531759f, -0.5835388f, 0.37239715f, -0.07871147f, + -0.018180532f, -0.27714783f, 0.15716344f, 0.098184004f, + 0.5965115f, 0.0115454225f, -0.0670172f, -0.03500153f, + 0.03706175f, -0.028436407f, -0.1787384f, -0.014865955f, + 0.046985667f, -0.12098046f, -0.060189165f, 0.0084932f, + -0.4346995f, -0.3784685f, -0.24981418f, 0.06690141f, + 0.013306233f, -0.017288689f, 0.020521985f, 0.023114365f, + 0.06277476f, 0.35805202f, 0.010422373f, 0.15102747f, + -0.64899176f, 0.013621945f, -0.022411961f, -0.022985032f, + -0.18592435f, 0.062330272f, -0.1652348f, -0.0128571f, + 0.35203636f, 0.12488081f, -0.06318143f, 0.09027019f, + 0.13472773f, 0.023164527f, 0.18613821f, -0.009319499f, + -0.038857754f, -0.029000249f, -0.19398957f, -0.006111455f, + -0.46944344f, 0.23341255f, 0.20324652f, 0.12675916f, + -0.5746145f, -0.14199808f, -0.09824572f, -0.008092041f, + -0.3465434f, 0.009044275f, -0.012658588f, 0.047024917f, + -0.0037835673f, 0.24975556f, -0.0648421f, -0.010510368f, + 0.0068081594f, -0.0723137f, 0.09379738f, 0.024135822f, + -0.41425082f, -0.020039983f, -0.0030550014f, -0.023276012f, + 0.006437845f, 0.061165266f, 0.16174817f, 0.040744834f, + -0.017515454f, -0.14204875f, -0.078848176f, -0.06925204f, + -0.0096742865f, 0.34718427f, -0.0794156f, -0.015814563f, + -0.0040620295f, -0.0060547697f, -0.058024988f, -0.100885436f, + -0.0576821f, -0.8391736f, -0.010777437f, -0.04822471f, + 0.36427936f, 0.04062056f, -0.02326814f, 0.07189806f, + 0.5600841f, 0.012207458f, -0.041943595f, 0.02435949f, + 0.38076973f, -0.122602865f, -0.052952226f, 0.06980154f, + -0.055258133f, -0.013687773f, -0.0856235f, -0.04374016f, + 0.09650116f, 0.29755f, -0.47976774f, 0.15719572f, + -0.32557812f, -0.025206277f, -0.031276036f, 0.057823833f, + -0.09089346f, 0.503004f, -0.006529944f, -0.025876073f, + -0.30078557f, -0.05259635f, 0.0032635273f, -0.046257973f, + -0.02316766f, -0.26077843f, 0.7320577f, -0.043850385f, + -0.033227257f, -0.05506104f, -0.24302953f, 0.058208752f, + 0.4221944f, -0.1568565f, -0.124339305f, 0.020135615f, + 0.11952597f, -0.047492266f, 0.03294807f, 0.043000266f, + 0.06636332f, 0.13762432f, 0.07293039f, 0.027872035f, + 0.26005533f, 0.34660113f, 0.051574808f, -0.02278254f, + 0.021317443f, 0.062619954f, -0.033112284f, 0.033078555f, + -0.07754032f, 0.30340594f, 0.04229149f, 0.1011f, + -0.93605536f, -0.0279014f, 0.065664195f, -0.07469741f, + 0.2900185f, -0.064222895f, -0.1184728f, 0.04473821f, + 0.37162083f, 0.3866583f, 0.17402013f, -0.011172565f, + 0.14724825f, 0.06985764f, -0.3215314f, -0.016214777f, + 0.10370639f, 0.06478165f, -0.3076502f, 0.06566887f, + 0.052055914f, 0.09171187f, -0.15219733f, 0.20973541f, + -0.09710595f, -0.20841539f, 0.006604662f, 0.0014135013f, + -0.1204219f, 0.07645794f, 0.009907881f, 0.15408614f, + 0.042608973f, 0.27650645f, 0.64020914f, 0.06414246f, + 0.0021227524f, 0.017464157f, 0.42234883f, 0.39741832f, + -0.18801786f, 0.08781363f, 0.019875262f, -0.034119435f, + -0.12910372f, 0.029834492f, 0.04959784f, -0.035403237f, + -0.09575419f, 0.07616226f, -0.029487915f, -0.06529359f, + 0.2640056f, 0.25360247f, -0.024585385f, 0.03528128f, + -0.03912399f, -0.09157948f, 0.028441116f, -0.09878465f, + -0.090702064f, -0.03699577f, -0.03778671f, -0.03099707f, + 0.8253499f, 0.014648578f, -0.023807703f, 0.12276291f, + 0.13683261f, 0.012393276f, -0.09710647f, -0.060594097f, + 0.3637277f, -0.12072426f, 0.13245226f, -0.0012597025f, + -0.1445149f, -0.035735946f, 0.13486508f, 0.002902589f, + -0.06783004f, -0.29527253f, -0.16234896f, -0.23000294f, + 0.10789907f, -0.024862438f, -0.020582909f, -0.03781267f, + -0.07737101f, 0.16471127f, -0.012005016f, 0.013442521f, + 0.008695317f, -0.036061253f, -0.00826367f, 0.04339891f, + -0.01615247f, 0.07068644f, 0.23048232f, -0.011837257f, + 0.0035089764f, 0.08488863f, -0.12142084f, 0.08498186f, + 0.16516931f, 0.047290962f, 0.13265212f, 0.00070049835f, + 0.026418207f, -0.023809984f, -0.1454881f, -0.024720045f, + 0.0011072542f, -0.3594184f, 0.080107115f, -0.0060178605f, + -0.22351952f, 0.29620695f, 0.072012f, -0.010723271f, + 0.05960017f, 0.052636843f, 0.009037887f, -0.019138843f, + 0.059447788f, -1.2984676f, -0.023149392f, 0.0020327843f, + -0.3092342f, -0.018714866f, -0.011115168f, -0.120765574f, + 0.25836888f, -0.00012626717f, -0.15590277f, 0.024720296f, + 0.23155403f, 0.06540557f, -0.1272455f, -0.16563734f, + 0.19736916f, -0.010581099f, 0.2613023f, 0.022265833f, + -0.22763121f, -0.06104306f, 0.34168476f, 0.050627157f, + 0.4505934f, -0.099938266f, -0.03717385f, 0.21582119f, + -0.1390078f, -0.568788f, 0.0003142876f, 0.10037417f, + -0.5478204f, 0.0006657814f, -0.006297763f, -0.05546984f, + -0.0012908723f, -0.036351852f, 0.4743353f, -0.033152323f, + 0.014712085f, 0.03156526f, 0.100179374f, 0.055466257f, + -0.41749266f, -0.0006258779f, 0.051372074f, -0.04356899f, + -0.034612022f, 0.052254967f, -0.17012389f, -0.0916247f, + -0.01833241f, 0.07664711f, 0.021573605f, -0.16185318f, + 0.11990656f, -0.17991622f, -0.0058188783f, 0.028227264f, + -0.02108333f, -0.025127675f, 0.0013046649f, 0.08473401f, + -0.04146249f, -0.17261878f, 0.0026823373f, 0.0020854294f, + 0.4964213f, 0.009009839f, -0.049275625f, 0.11792902f, + 0.7545057f, -0.0014132108f, 0.0017040063f, -0.034621894f, + 0.13339141f, 0.080961965f, 0.12928864f, 0.022553094f, + -0.2431439f, 0.01122458f, -0.21582563f, -0.014350744f, + -0.101545714f, 0.09464467f, 0.4213868f, -0.26705825f, + 0.3142573f, 0.16381992f, -0.5199926f, 0.24028027f, + -0.04669982f, 0.08559798f, -0.061597414f, -0.09440083f, + 0.9962914f, -0.050030354f, 0.007972445f, 0.09041357f, + -0.020699596f, -0.4460657f, 0.38913694f, -0.033420682f, + 0.030246839f, -0.1478609f, 0.17612411f, -0.19901018f, + -0.11187573f, 0.0064607407f, 0.043710582f, -0.017643603f, + 0.08217184f, -0.010799988f, 0.20924352f, -0.07070071f, + -0.012005384f, -0.232373f, -0.039940335f, 0.17365238f, + -0.08512493f, -0.17155096f, -0.017029807f, -0.070312835f, + -0.0077718394f, 0.06367218f, 0.04827339f, 0.05517328f, + -0.015714867f, 1.6968807f, 0.005945503f, -0.16341135f, + 0.34020543f, 0.06193833f, 0.030435894f, -0.246971f, + 0.3649049f, -0.044227373f, 0.002531635f, -0.013681736f, + 0.04537735f, 0.25078866f, -0.013089379f, -0.07847082f, + 0.2725609f, -0.032453157f, 0.10069641f, -0.017454598f, + -0.23776634f, -0.06519283f, 0.3604512f, 0.29404774f, + -0.1860629f, -0.15837754f, 0.1678824f, 0.11049545f, + -0.12812108f, 0.06320874f, 0.046848863f, 0.011675171f, + 0.46090773f, 0.08568206f, 0.022939675f, -0.047999207f, + 0.044190213f, 0.1562978f, 0.18320628f, 0.042696822f, + -0.0122516155f, 0.03984359f, 0.3708256f, -0.05280428f, + -0.24732433f, 0.04335415f, -0.1441837f, 0.02553387f, + -0.107694f, -0.010430678f, -0.16044798f, 0.16159347f, + 0.050026465f, -0.09185798f, 0.09541704f, -0.17227614f, + 0.04096726f, 0.2918169f, 0.12662955f, 0.06157122f, + 0.00766281f, -0.10749638f, -0.055704527f, 0.011385054f, + -0.12360373f, 0.47784868f, -0.011855966f, 0.016330717f, + -0.32877898f, -0.09110654f, 0.019638339f, 0.12672323f, + 0.6350247f, -0.13409394f, -0.0077276397f, 0.06470689f, + 0.057473924f, 0.04303109f, -0.071611926f, 0.010568346f, + -0.49587503f, -0.013963412f, 0.20460561f, 0.016110955f, + -0.49089178f, -0.18241288f, 0.50063574f, -0.23849785f, + -0.5559127f, 0.15898034f, 0.10989115f, 0.26470658f, + -0.01013526f, -0.14694701f, 0.004489279f, 0.05518631f, + 0.59108365f, -0.018291691f, -0.022436239f, -0.04088917f, + -0.014791668f, 0.043376062f, 0.16307668f, 0.01621932f, + 0.0014469766f, 0.024469662f, -0.4269077f, -0.021166233f, + 0.13428153f, -0.024848392f, 0.098018676f, 0.06379463f, + 0.016683204f, 0.038179494f, 0.031783354f, -0.068717234f, + -0.021776298f, -0.16822582f, -0.016150437f, 0.1575426f, + 0.15831402f, -0.09662214f, 0.03142256f, 0.007203998f, + -0.017188448f, 0.019085184f, 0.03745755f, -0.011074834f, + 0.03154437f, -0.9384747f, -0.008694909f, 0.14019527f, + -0.17755365f, 0.02073978f, -0.009033487f, -0.08590541f, + -0.024985446f, -0.004093996f, -0.0555781f, -0.09240104f, + 0.096564405f, 0.04066303f, -0.02180789f, -0.011132781f, + 0.20420696f, 0.016700292f, 0.06600887f, 0.047187306f, + -0.02076854f, -0.10503244f, 0.25983134f, 0.21840551f, + -0.32094398f, -0.22290188f, 1.3253807f, 0.21109791f, + -0.12927043f, 0.6002755f, -0.02089594f, -0.04530725f, + -0.26657403f, 0.032572705f, -0.0100231785f, 0.0708596f, + 0.016187856f, 0.06518296f, 0.3124852f, 0.04887191f, + 0.0028617901f, -0.18666886f, 0.33269957f, -0.1486844f, + -0.026365757f, 0.020988049f, -0.070677474f, -0.049858164f, + -0.026587864f, -0.04254433f, -0.06510276f, 0.12760377f, + 0.018921414f, 0.0241072f, 0.026844785f, -0.18613553f, + 0.030758139f, -0.12250028f, -0.06085466f, 0.002041224f, + -0.0040272647f, -0.018028907f, -0.02785293f, -0.0003521555f, + 0.04775339f, -0.13988225f, -0.0074934945f, -0.033019263f, + 0.05393138f, -0.0065512727f, -0.020261116f, 0.34755322f, + -0.0826358f, -0.07664628f, -0.035839662f, 0.11785819f, + -0.39461428f, -0.020319091f, 0.15030818f, 0.026512649f, + 0.020197595f, -0.035953954f, 0.14853695f, -0.021812294f, + 0.034613147f, 0.08945376f, -0.6558053f, -0.086705655f, + 0.5482094f, 0.09420661f, -0.41676843f, 0.18717943f, + -0.06599932f, -0.56404626f, 0.08016426f, 0.0022197575f, + -0.55039716f, -0.040793415f, -0.0033396971f, -0.057141583f, + -0.037149508f, 0.2288959f, -0.27006677f, -0.07031288f, + -0.010639694f, 0.1348306f, -0.27025464f, 0.0350023f, + 0.18043233f, -0.035161678f, -0.006259741f, 0.05518103f, + 0.059558228f, 0.009182596f, 0.16845869f, -0.06543876f, + -0.005743551f, -0.39416245f, 0.051597416f, 0.29309905f, + 0.2938438f, -0.12118317f, -0.09471063f, -0.041920774f, + -0.017126005f, 0.05937604f, -0.0035281763f, 0.051468264f, + 0.14270054f, 0.314545f, 0.050796427f, 0.01318194f, + 0.026985608f, 0.035868287f, -0.010469121f, -0.20876093f, + 0.19532305f, -0.11193005f, -0.033861104f, -0.04603516f, + -0.5406827f, 0.05589666f, 0.12279087f, -0.062117785f, + 0.064747244f, 0.020509433f, 0.18989821f, -0.020537527f, + -0.13105239f, 0.40663588f, -0.49826884f, 0.28956646f, + 0.11852532f, -0.008768637f, 0.12434393f, 0.07745619f, + -0.25814423f, -0.21222427f, 0.031258166f, 0.0936614f, + -0.16795568f, -0.013915899f, -0.009237131f, -0.14146775f, + -0.0053123357f, -0.1724265f, 0.4498832f, 0.088921905f, + -0.02978067f, 0.15217888f, -0.027520508f, 0.45357004f, + -0.10618351f, -0.030982222f, 0.21715567f, 0.031807195f, + -0.01295293f, 0.036520135f, -0.24912667f, -0.019910524f, + 0.0038579437f, 0.24646096f, 0.28012592f, 0.03368078f, + -0.5565983f, 0.51061636f, -0.11653568f, 0.0014985758f, + 0.005183618f, 0.035225887f, 0.04912012f, 0.008105491f, + 0.08615647f, -0.5306345f, 0.037945177f, -0.051057752f, + -0.14211199f, 0.03392412f, 0.00955998f, 0.09550955f, + 0.8438336f, -0.2000249f, -0.16793129f, -0.15834059f, + 0.31784794f, -0.13549541f, -0.13413745f, -0.13789186f, + -0.07404421f, -0.0030583162f, 0.18645717f, -0.02157021f, + -0.23156567f, 0.12528023f, -0.36199448f, 0.13630316f, + -0.29662046f, -0.042305652f, -0.041692164f, 0.78332245f, + 0.5519626f, -0.18252647f, 0.071336195f, -0.00848383f, + 1.157797f, -0.013821907f, -0.0013586188f, 0.028939672f, + -0.027687328f, 0.0063339844f, 0.004091473f, -0.09063307f, + 0.00632893f, 0.15733698f, 0.3493178f, -0.25026032f, + -0.0034256906f, 0.050312445f, -0.147148f, -0.0881166f, + -0.007202018f, -0.13021193f, -0.025345795f, -0.060363498f, + -0.0006999539f, 0.20776735f, 0.3032111f, 0.11623544f, + -0.69132f, 0.53010947f, 0.22696061f, -0.05980183f, + -0.017476153f, 0.05784042f, 0.02024059f, 0.23029178f, + 0.1592716f, 0.9744706f, 0.033727378f, 0.13462971f, + 0.8414614f, 0.021116294f, -0.06382785f, 0.065849826f, + -0.77772236f, -0.19354285f, -0.27205253f, 0.16655819f, + -0.10706955f, 0.14090586f, -0.38847712f, 0.12206957f, + 0.35087126f, 0.018223556f, 0.3136521f, -0.03264866f, + -0.3567076f, -0.44174466f, -0.07327421f, -0.3194473f, + 0.26565498f, 0.08493378f, 0.1815766f, -0.050739054f, + -0.006088156f, 0.62182546f, -0.1324985f, -0.015060115f, + -0.2704989f, 0.010778689f, -0.04824534f, 0.1863299f, + -0.012366902f, 0.34537584f, -0.098318584f, 0.008446686f, + 0.009445607f, -0.15584385f, -0.10578944f, 0.29444432f, + 0.29439884f, 0.07082676f, -0.10432846f, 0.010126514f, + 0.0017580178f, 0.04894156f, 0.26864323f, 0.027731542f, + 0.0059990394f, 0.707689f, 0.29888585f, -0.30692703f, + -0.8469116f, -0.102942206f, 0.18854266f, 0.012301113f, + 0.0010491202f, -0.03331774f, -0.08706221f, 0.08740603f, + 0.0955695f, -0.16193433f, 0.005223475f, -0.1990943f, + -0.8894871f, 0.033053547f, -0.040720437f, -0.065822065f, + -0.5876164f, -0.17938851f, -0.19499122f, 0.034504343f, + -0.31082174f, 0.21002105f, 0.862039f, 0.09694486f, + -0.18736582f, -0.025657762f, 0.69445026f, 0.014717754f, + -0.31640813f, 0.35605222f, 0.44484234f, 0.05328263f, + 0.09238249f, 0.052132193f, -0.112957545f, -0.11773104f, + -0.18811426f, -0.3145211f, 0.066282585f, -0.06161545f, + -0.2813783f, -0.035825755f, 0.0059607932f, 0.09537578f, + -0.019212376f, 0.11432891f, -0.567658f, -0.22745577f, + 0.029270148f, -0.016042752f, -0.2594051f, 0.50624305f, + -0.58418965f, -0.10651836f, -0.1637567f, -0.015315814f, + 0.0588222f, -0.04203804f, -0.041002106f, 0.018817345f, + 0.04828644f, 0.07711505f, 0.2028236f, -0.027219575f, + 0.006651426f, -0.07122145f, 0.10931341f, -0.04741802f, + -0.04517081f, 0.011814542f, -0.058562458f, 0.30043077f, + 0.0045898105f, -1.247423f, 0.01993139f, 0.04923846f, + 0.09225936f, -0.0076849363f, 0.033185232f, 0.014304266f, + -0.32597095f, -0.24056308f, -0.4302366f, 0.027474685f, + 0.33784932f, -0.25509351f, -0.07386988f, 0.0009167738f, + -0.025437754f, -0.011713006f, -0.45412412f, -0.010687997f, + -0.11613874f, -0.44881666f, 0.36019912f, -0.53250206f, + -0.33889312f, -0.08592707f, 0.20946439f, -0.6469393f, + 1.3412784f, 0.98912567f, -0.17357755f, 0.010404901f, + 0.2610597f, 0.042112194f, 0.012550799f, 0.12288203f, + 0.04733653f, -0.022040712f, -0.8768243f, 0.04770738f, + -0.021695994f, -0.26047653f, 0.3360094f, 0.83632076f, + -0.5843266f, 0.11429735f, 0.20336463f, -0.027897196f, + -0.04340598f, 0.0045455345f, -0.13173796f, 0.021218495f, + 0.038775317f, -0.70786935f, 0.10970416f, -0.3964646f, + -0.6698416f, -0.74631226f, -0.022808863f, 0.09282145f, + 0.033445846f, -0.08638097f, 0.006325947f, 0.09503295f, + -0.12388054f, 1.2569854f, -0.032677203f, 0.039192438f, + -0.081253186f, -0.0063980995f, 0.042938855f, 0.11410096f, + -0.8556671f, 0.08471816f, -1.0939487f, -0.0015663431f, + 0.40989372f, 0.28875715f, 0.44352886f, 0.09570113f, + -0.24494693f, -0.00047116613f, -0.38672355f, 0.015685908f, + 0.021278007f, -0.05797214f, 0.248303f, 0.19521719f, + 0.21587986f, -0.032871958f, 0.23008576f, 0.21658199f, + 0.036328245f, -0.65275747f, 0.09201603f, -0.025679493f, + -0.92910904f, 0.021719676f, 0.017177375f, 0.11324695f, + 0.0019247402f, 0.1931846f, 0.26181838f, 0.15844508f, + 0.006795032f, -0.1397643f, 0.36483163f, 0.39365822f, + 0.25713363f, 0.009902011f, 0.06490622f, 0.026342573f, + -0.025484337f, 0.086205035f, 0.081517436f, 0.034151442f, + -0.03846542f, -0.5591753f, 0.19074638f, 0.37698093f, + -0.35173395f, -0.14325054f, -0.43869096f, -0.012883601f, + 0.0003646689f, 0.0005373159f, 0.04653338f, -0.2087285f, + 0.1517989f, 0.5849099f, -0.019995308f, -0.04342486f, + -0.3800216f, -0.04007773f, -0.017589476f, -0.024634568f, + -0.3007563f, -0.07154129f, -0.66669667f, -0.026372897f, + -0.07946254f, 0.10177972f, 0.57474524f, 0.13744383f, + -0.020430623f, -0.013584707f, 0.20537062f, 0.022211624f, + -0.29795107f, 0.57223755f, 0.40009263f, 0.02226658f, + -0.2592108f, 0.14876151f, 0.11749052f, -0.16314484f, + 0.20280161f, 0.006032111f, -0.03182481f, 0.020385504f, + 0.4547294f, -0.00067187694f, -0.00047066624f, 0.01710547f, + 0.019836666f, -0.3942362f, -0.27419925f, 0.16821904f, + 0.020117465f, 0.11511876f, -0.2989714f, 0.17499676f, + 0.03683763f, 0.071633406f, -0.0116829015f, 0.041034427f, + -0.042387735f, 0.05416612f, -0.028176492f, 0.055913016f, + -0.039090794f, -0.031751484f, 0.043870702f, 0.069372185f, + -0.044216078f, 0.25293872f, -0.21532717f, 0.08034303f, + 0.057374652f, -0.03360632f, 0.018842429f, 0.02339191f, + 0.22562718f, -0.110148266f, -0.09025615f, 0.083832495f, + -0.6814998f, -0.043790318f, -0.028982282f, -0.07111136f, + -0.32567313f, -0.17241213f, -0.10683052f, 0.087502144f, + 0.21527664f, 0.24548475f, -0.030854417f, -0.053382125f, + 0.031977348f, 0.014782147f, -0.10670295f, 0.033852994f, + -0.1459858f, -0.13896927f, 0.27521753f, 0.3008577f, + -0.00495376f, -0.16059792f, 0.16307618f, 0.21685287f, + -0.61044633f, -0.07893876f, 0.11888328f, -0.0031266974f, + 1.0226511f, 0.010532688f, -0.0017604034f, 0.029042348f, + -0.0072924756f, 0.11147201f, -0.53256595f, -0.09118909f, + 0.022319429f, 0.10464078f, -0.18329267f, -0.13050462f, + 0.7702663f, -0.1693563f, -0.022166427f, 0.07016212f, + 0.044789918f, 0.026921215f, -0.02136535f, -0.02220865f, + -0.028176108f, -0.27761915f, -0.14966705f, 0.26814744f, + 0.0009852799f, -0.3761102f, 0.20915465f, -0.08442129f, + -0.062150948f, 0.045717623f, 0.003777402f, 0.038754888f, + 0.059325796f, -0.16252041f, 0.03597849f, 0.06308502f, + 0.22493652f, 0.027579049f, -0.005237538f, -0.096212916f, + -0.89336103f, 0.027431075f, -0.122828946f, -0.13869385f, + 0.5627581f, -0.15386991f, 0.08273721f, 0.020299176f, + 0.26121685f, -0.036961734f, -0.09159009f, -0.0065585165f, + 0.12537676f, 0.9271213f, -0.6220157f, -0.04897373f, + 0.39619008f, 0.23855439f, 0.058847707f, -0.33573025f, + 0.46605334f, -0.24963109f, -0.031057974f, -0.010540132f, + -0.8415916f, -0.04024044f, 0.00966706f, 0.12419478f, + -0.0058646696f, -0.23757398f, -0.41728008f, -0.069746286f, + -0.03358186f, -0.00062127726f, -0.10666955f, 0.15589106f, + -0.24706149f, -0.009485509f, -0.041538034f, -0.045254838f, + 0.026312774f, -0.108302064f, -0.035514828f, -0.066233486f, + 0.046382982f, -0.23588641f, 0.21240862f, -0.13298047f, + 0.0248457f, -0.10445664f, 0.11140641f, 0.011270957f, + 0.034872487f, 0.01649418f, -0.0036853012f, 0.17490314f, + 0.1678751f, -0.3716033f, 0.026665797f, -0.044029504f, + 0.7772889f, 0.0023240603f, 0.057570536f, 0.046537273f, + 0.13628264f, -0.18902957f, -0.018479101f, -0.011631737f, + 0.23185553f, 0.1081962f, 0.36724073f, -0.06552928f, + -0.05650017f, 0.04774381f, 0.25038117f, -0.042514794f, + -0.22574246f, -0.13346156f, 0.02845881f, 0.17410947f, + 0.22936969f, 0.17620188f, 0.067600325f, 0.0030360508f, + 0.3268615f, -0.52369916f, 0.08915494f, 0.06427315f, + 0.39043638f, -0.018521318f, 0.057131533f, -0.07570644f, + 0.0036933094f, -0.25552914f, -0.10401826f, 0.041841213f, + -0.014064093f, 0.13153663f, -0.3454686f, 0.37251392f, + -0.23542805f, -0.07628868f, 0.104988895f, 0.049341604f, + 0.035529785f, -0.008858327f, 0.08275809f, -0.021811401f, + 0.022132693f, -0.18535553f, 0.16394103f, 0.33726618f, + 0.19844896f, -0.17665263f, -0.23559888f, -0.014556714f, + 0.0003120631f, 0.07498165f, 0.100801386f, 0.07612374f, + 0.2992786f, -0.23902327f, 0.032176636f, 0.062765434f, + -0.12262402f, -0.05442703f, 0.050505683f, 0.08462673f, + -1.005098f, -0.09576724f, -0.3426198f, -0.091025956f, + -0.5771428f, 0.35568854f, 0.08626219f, -0.18329568f, + 0.11742489f, 0.035681877f, 0.33898255f, 0.032164276f, + -0.25718907f, -0.13858943f, -0.28573808f, -0.06678913f, + 0.45643952f, -0.21273966f, 0.43967947f, 0.08054984f, + 0.31061658f, 0.68906015f, -0.017907469f, -0.011936705f, + 0.09260689f, -0.0112935435f, -0.02189103f, -0.11663802f, + -0.009062794f, 0.15958257f, -0.039317656f, -0.010145959f, + 0.026877046f, 0.051645327f, -0.16980416f, 0.14157431f, + 0.1474802f, 0.04295442f, 0.06527326f, -0.017324176f, + -0.009905686f, 0.030748947f, -0.09558075f, -0.070968255f, + 0.018401915f, 0.80165607f, 0.122926466f, 0.25822958f, + -0.72091407f, -0.05542566f, 0.19142759f, -0.037400495f, + -0.0238747f, 0.0064023393f, 0.015868204f, 0.29082495f, + -0.44885957f, -0.31282708f, 0.035882644f, 0.28870863f, + -0.1096725f, 0.046567664f, -0.01161674f, -0.17263249f, + 0.5539731f, -0.2342244f, 0.43993622f, -0.0048013153f, + 0.6652232f, 0.17508973f, 0.20863988f, 0.16243176f, + 0.3806719f, -0.041598745f, -0.08722463f, -0.043245174f, + 0.29451475f, -0.6195349f, -0.54613787f, 0.38905495f, + -0.043412592f, 0.004236888f, -0.087759f, -0.1446047f, + 0.071273044f, -0.049761783f, 0.07637648f, 0.01059585f, + -0.41659486f, 0.049164988f, 0.011550085f, 0.22424212f, + -0.003531024f, 0.44469815f, -0.07692905f, -0.18907495f, + 0.04021252f, -0.124431f, -0.31692645f, 0.3395272f, + -0.57f, 0.017487545f, 0.069038056f, -0.03853888f, + -0.033286426f, -0.042966012f, -0.12214694f, 0.020038705f, + -0.028179219f, 0.5399588f, 0.14501129f, -0.3917562f, + 0.016344398f, -0.00990786f, 0.2155424f, -0.026089415f, + -0.05131228f, -0.07352741f, -0.043778695f, -0.1325945f, + 0.42158386f, -0.67442745f, -0.020427667f, 0.13565063f, + 0.33162832f, 0.0012163438f, -0.041980434f, 0.3636853f, + -0.7230121f, 0.49388927f, -0.29381794f, -0.007604252f, + 0.13511637f, 0.4773932f, 0.3324641f, 0.1835974f, + -0.31441116f, -0.032478973f, 0.3942554f, -0.007932511f, + -0.08890948f, 0.107833296f, 0.20649594f, -0.5684454f, + -0.29307878f, -0.086037025f, -0.013281219f, 0.82943964f, + 0.18731272f, 0.25497746f, 0.013346805f, 0.020685153f, + -0.15456566f, 0.0105447555f, -0.036924396f, -0.1005466f, + 0.012906812f, -0.5280445f, -0.0016189297f, -0.023146085f, + -0.014931947f, 0.22531757f, 0.079528995f, 0.06374672f, + 0.1296904f, -0.00073160656f, -0.10149896f, 0.014485047f, + -0.071863964f, 0.09176066f, -0.10931992f, 0.03932805f, + -0.0977619f, -0.15047143f, -0.04500513f, -0.16941734f, + 0.18606679f, -0.11894519f, -0.043379117f, -0.022682969f, + 0.022454033f, -0.010527903f, -0.062385708f, -0.019106092f, + -0.07213428f, 0.43419898f, -0.041982163f, 0.6397257f, + -0.11815067f, 0.011928541f, -0.006531338f, -0.27260253f, + -0.24041978f, 0.052634884f, -0.3643897f, -0.0047262814f, + 0.014945299f, 0.5813199f, -0.17253157f, 0.12743056f, + -0.061101172f, 0.0074953795f, -0.34209558f, 0.022589909f, + 0.44966438f, 0.100797266f, -0.022014013f, 0.25905046f, + 0.06902805f, 0.021564743f, -0.18663956f, 0.6367871f, + 0.29003713f, -0.674708f, -0.06774329f, -0.048219208f, + -0.49098435f, -0.034687947f, 0.01923444f, 0.02095966f, + -0.005836902f, 0.7948249f, -0.0842702f, -0.08918305f, + -0.02325932f, 0.04209146f, 0.35533595f, 0.5198777f, + 0.45032522f, 0.07888036f, -0.102695f, 0.019459605f, + 0.08534065f, -0.24472979f, 0.12978923f, -0.095717825f, + 0.11017068f, -0.048223853f, 0.23623946f, -0.37323537f, + -0.31851578f, 0.2686812f, -0.20795651f, 0.06830536f, + 0.02349102f, 0.00573066f, 0.020593688f, 0.058699735f, + 0.24667074f, 0.17571232f, 0.044653032f, -0.15012974f, + 0.39808533f, 0.008311069f, -0.025979772f, 0.16514137f, + 0.8305683f, -0.64841545f, -0.55192965f, 0.06625568f, + 0.48111862f, -0.7015787f, 0.023364529f, -0.22348699f, + -0.3404254f, 0.03051598f, 0.0065084216f, 0.036130283f, + 0.18230277f, 0.483092f, 0.0009305059f, -0.127765f, + -0.36474282f, 0.044793185f, 0.25659785f, -0.85763323f, + 1.5366247f, 0.2644848f, -0.07362883f, -0.04186747f, + 1.0594175f, 0.03275445f, -0.013780058f, 0.15233655f, + 0.047960434f, -0.14714673f, -0.3933198f, 0.3577442f, + -0.023192307f, 0.4428786f, 0.2835252f, 0.5301036f, + -0.22270343f, -0.08161046f, -0.025183653f, 0.015731769f, + -0.05137898f, 0.17142735f, 0.26345387f, 0.12880464f, + -0.048090328f, -0.46618962f, 0.30238044f, 0.4531658f, + -0.16957764f, -0.06053899f, -0.31837076f, -0.007267955f, + 0.04130769f, -0.015860017f, -0.024970386f, 0.1524498f, + 0.006058198f, 0.6656209f, -0.06617986f, -0.19131757f, + 0.24887747f, -0.049312517f, 0.10004203f, -0.277589f, + -0.65401125f, -0.19473633f, -0.9113562f, 0.06115199f, + -0.17261072f, 0.84006685f, -0.121453226f, 0.19903862f, + 0.16710092f, -0.013668652f, 0.4919797f, 0.009538132f, + -0.1765377f, -0.87966114f, 0.75603515f, 0.63786834f, + -0.4890102f, 0.09024147f, -0.49216408f, 0.34319547f, + -0.03748496f, 0.2844274f, -0.055820383f, -0.018910786f, + -0.47316018f, 0.027159473f, -0.0015595072f, -0.05848484f, + -0.0043871147f, 0.014843196f, -0.5576527f, -0.061048936f, + -0.010926638f, -0.017103001f, 0.073355824f, 0.11364982f, + 0.40648457f, 0.089511864f, 0.018196944f, -0.009719684f, + -0.0033473438f, -0.10635423f, -0.008665999f, -0.031194502f, + 0.083477184f, 0.26968095f, 0.023737183f, -0.13744204f, + -0.4552492f, 0.21010791f, 0.19128709f, 0.01873323f, + 0.01688111f, -0.017703427f, 0.0008041437f, 0.13601552f, + 0.0016484823f, 0.30315563f, 0.02613551f, 0.16090663f, + -0.030294351f, 0.017977277f, -0.031563003f, 0.21813187f, + -0.97064453f, -0.39274338f, -0.36937815f, 0.06337369f, + 0.20140369f, -0.07688678f, -0.0874117f, 0.053947408f, + 0.023859704f, -0.0037192174f, -0.109473236f, 0.012301533f, + -0.21287039f, 0.01183521f, -0.05521193f, -0.15150349f, + 0.7804167f, 0.03211174f, 0.36134484f, -0.27137122f, + 0.14282028f, -0.5590106f, -0.08142644f, -0.008310814f, + -0.86863595f, 0.017671607f, -0.016452007f, 0.081589065f, + 0.013112264f, -0.19787666f, 0.06871894f, 0.16310373f, + 0.0082781315f, 0.077229254f, 0.057579923f, 0.53476876f, + -0.50599885f, -0.022023031f, 0.0674841f, -0.08158614f, + -0.043155223f, 0.13290566f, 0.08755242f, 0.10628849f, + -0.059445526f, 0.4896675f, 0.47385138f, 0.16862209f, + -0.654722f, -0.0702916f, 0.07645583f, 0.0039563235f, + -0.0006895396f, -0.025875246f, -0.02551556f, 0.033223286f, + 0.08023618f, -0.19663534f, -0.05161338f, 0.16279069f, + -0.02353438f, -0.05649287f, 0.042154144f, -0.22116804f, + -0.5493369f, -0.012885321f, -0.4290355f, 0.021760533f, + -0.08620179f, 0.15946838f, 0.46834463f, -0.15297343f, + 0.3145751f, -0.0061155055f, 0.08577265f, -0.04766195f, + 0.078998335f, -0.07067734f, 0.24745202f, -0.017346485f, + -0.19352303f, -0.2520126f, -0.32175937f, -1.4275908f, + -0.14337152f, 0.23346762f, 0.14730537f, 0.0425929f, + 0.33631057f, -0.058409102f, 0.011276796f, 0.09230782f, + -0.033471983f, -0.2890876f, 0.06976417f, -0.20246817f, + 0.009330633f, 0.04105449f, -0.074560426f, 0.28785655f, + 0.4103466f, -0.05750621f, -0.109004214f, 0.043102942f, + 0.07257342f, -0.012095279f, 0.33297747f, -0.04947148f, + -0.012233982f, 0.033638142f, 0.19295745f, -0.13758214f, + -0.55198425f, -0.21365921f, -0.12630017f, 0.013434851f, + -0.038892295f, 0.05204016f, 0.027290525f, -0.15109755f, + 0.22796856f, -0.22873002f, 0.024816118f, 0.0289489f, + -0.47334185f, 0.056030314f, -0.063053794f, 0.0362013f, + -0.5029221f, -0.48016286f, 0.061240233f, -0.08146244f, + 0.21179256f, 0.46225935f, 0.52381355f, 0.058351606f, + -0.37134218f, 0.02625377f, 0.3866318f, 0.0040462995f, + -0.19907764f, 0.71972704f, -0.5918457f, -0.37511754f, + 0.046958555f, -0.00795217f, 0.084929734f, -0.33136168f, + -0.18664934f, 0.60329723f, 0.036578458f, -0.07262497f, + 0.3348232f, -0.018120091f, -0.005484366f, -0.00023680656f, + -0.028130755f, -0.03672947f, 0.49235132f, -0.12011919f, + 0.019190365f, -0.123743474f, -0.2434968f, -0.14785671f, + 0.32744068f, -0.031418875f, -0.12512773f, -0.004361576f, + -0.02764993f, 0.073661335f, 0.16708335f, 0.03623089f, + -0.025966672f, 0.30047205f, 0.08888296f, -0.094894804f, + -1.5834224f, 0.08205288f, 0.031214884f, -0.0062426245f, + -0.04294083f, -0.027985485f, -0.06325915f, 0.01859677f, + -0.1481761f, 0.5914115f, -0.038193382f, 0.059578147f, + -0.5226914f, -0.03637427f, 0.016522275f, -0.04458439f, + 0.043283924f, -0.10276937f, -0.22023201f, 0.046929125f, + 0.15331015f, 0.0120208515f, 0.20940527f, -0.0800796f, + -0.3795871f, 0.017431835f, -0.13013846f, 0.03484933f, + 0.1780011f, 0.017745595f, -0.29626766f, 0.029942866f, + 0.060134716f, -0.1690237f, -0.06039639f, 0.5244154f, + -0.54444563f, -0.7541919f, -0.23236229f, -0.0013490866f, + -0.24924527f, 0.038365014f, 0.0016835652f, 0.088289954f, + 0.08682464f, 0.33666182f, 0.30617023f, 0.2502856f, + -0.032564186f, -0.03885029f, 0.087206066f, 0.19737758f, + 0.13030598f, 0.013643295f, 0.098957874f, -0.010740124f, + 0.021665929f, -0.004110285f, 0.16968878f, 0.09474842f, + 0.088216275f, 0.03472267f, 0.0572002f, 0.018179152f, + -0.3660645f, 0.10066672f, 0.111787915f, 0.08885337f, + 0.127436f, -0.03341967f, 0.016290486f, -0.12890325f, + -0.050830465f, 0.23464587f, -0.009213082f, -0.06698607f, + 0.5340659f, -0.028670147f, 0.08878314f, 0.12110591f, + -0.74465215f, -0.016775083f, 0.0830122f, 0.07588653f, + 0.20552325f, -0.079603784f, 0.28701195f, -0.094550185f, + 0.4462886f, 0.016070347f, -0.25341165f, -0.020802705f, + 0.2045294f, -0.27662006f, 0.16943765f, -0.017099109f, + -0.012498425f, -0.099444635f, 0.23859431f, -0.3116982f, + -0.19525592f, 0.57000214f, 0.12733993f, 0.013377657f, + -0.34565854f, -0.07617742f, 0.039116003f, 0.095476985f, + -0.057025675f, -0.5551101f, 0.0008359335f, -0.14448968f, + -0.011802895f, 0.11243062f, -0.02708867f, 0.026433667f, + 0.07029156f, -0.03932089f, 0.029222589f, -0.014484901f, + 0.0942324f, -0.0645073f, -0.008201193f, -0.10758639f, + -0.03895392f, -0.27066565f, -0.03978721f, -0.015404543f, + -0.123197906f, 0.14577259f, 0.014633773f, -0.033829264f, + -0.0729945f, 0.09266467f, 0.07942404f, 0.045261104f, + -0.045010816f, -0.72302586f, 0.04641043f, 0.035600748f, + -0.36553094f, 0.010212504f, -0.01874108f, -0.094297335f, + -0.011950521f, 0.05174975f, 0.38115364f, -0.081445605f, + 0.56712794f, -0.0273933f, -0.12522876f, -0.102524236f, + 0.051251423f, 0.008560305f, 0.12721303f, -0.01501615f, + -0.3134637f, 0.23410809f, -0.35356948f, -0.076237045f, + 0.07532924f, -0.2543858f, -0.08953331f, 0.28298575f, + -0.67822546f, -0.19605784f, -0.00040034886f, 0.03377207f, + -0.3244273f, 0.076887935f, -0.0031415098f, -0.026203072f, + 0.06114121f, 0.12934591f, -0.18036221f, 0.20044728f, + -0.018890137f, -0.076783344f, 0.35894194f, -0.08519139f, + -0.5968317f, -0.051250257f, -0.03335682f, 0.056775995f, + -0.052668575f, 0.027960762f, -0.16029587f, 0.14646685f, + 0.021189246f, 0.30602f, -0.024237612f, 0.17238942f, + -0.02535149f, 0.40570334f, -0.16872574f, -0.032685556f, + 0.10576039f, -0.031292856f, -0.032116853f, -0.1274958f, + -0.049427565f, -0.016589422f, -0.008634191f, 0.119050205f, + 0.4538047f, -0.10678557f, 0.034908395f, -0.04868304f, + 0.6317103f, 0.14865556f, 0.15276472f, 0.14084363f, + -0.074254274f, -0.29509506f, 0.17455897f, 0.046691537f, + 0.26368138f, 0.012134378f, 0.1417353f, 0.048108295f, + 0.26337174f, -0.10801f, 0.37282753f, 0.06214309f, + 0.25008425f, 0.07237914f, 0.5441749f, -0.8143705f, + 3.1289325f, -0.10898528f, 0.13255146f, -0.041030224f, + 0.82024235f, -0.08911287f, -0.030705048f, -0.08759854f, + -0.11755292f, -0.404859f, -0.030228045f, -0.22471292f, + 0.046450045f, 0.14744236f, -0.14992478f, -0.34435952f, + -0.09539792f, 0.12632135f, -0.16422857f, 0.047926806f, + 0.0653455f, 0.13477859f, -0.08599001f, -0.13614237f, + -0.13895808f, -0.3804102f, -0.19316438f, -0.03989734f, + -0.26453134f, 0.2934892f, 0.13574418f, 0.052071057f, + -0.13670684f, 0.09225589f, 0.009710848f, -0.16645727f, + -0.20319332f, 1.0774497f, -0.003572775f, -0.113467194f, + 0.26572236f, 0.18882933f, -0.17270754f, -0.12443586f, + -0.11660728f, 0.050811537f, 0.49429113f, -0.23169905f, + -0.057536453f, 0.49462944f, -0.1929606f, -0.07053407f, + -0.43732926f, -0.0023687347f, -0.30202565f, 0.019683283f, + 0.16953656f, -0.035359364f, 0.504751f, -0.22690165f, + -0.22509475f, 0.16265473f, -0.13980593f, 0.33133647f, + -0.15810409f, 0.05096706f, -0.15817043f, 0.07085683f, + -0.18253325f, 0.043052915f, 0.013496894f, -0.002042419f, + 0.052521724f, 0.005597016f, 0.18483852f, 0.13273999f, + -0.022929324f, -0.027957864f, 0.6336833f, -0.15709129f, + -0.13911708f, -0.011641924f, 0.20418194f, -0.12626246f, + -0.052139185f, -0.13107255f, 0.1325044f, -0.0063156392f, + 0.08213353f, -0.11698009f, -0.021798193f, -0.1463752f, + 0.05610362f, 0.38684577f, -0.026259948f, -0.019492688f, + 0.039011803f, -0.06476454f, 0.023027338f, -0.0076490473f, + -0.12644784f, -0.28757587f, 0.008700332f, -0.03332097f, + -0.068714246f, -0.10109945f, 0.095954575f, 0.33882505f, + -0.021078972f, -0.086355485f, 0.3332086f, 0.14147246f, + -0.15233393f, -0.24182335f, -0.20449567f, -0.009896452f, + 0.1442465f, 0.00593068f, 0.23867443f, -0.033336148f, + -0.5927796f, -0.14561982f, 0.16735008f, 0.26224318f, + -0.062496826f, 0.10654827f, -0.2669016f, 0.08942968f, + -0.31045234f, -0.060299207f, 0.053721543f, 0.095657304f, + 0.059911497f, -0.055541772f, 0.008931067f, -0.03475533f, + -0.045143377f, 0.36022022f, -0.05413728f, -0.14925934f, + -0.04986164f, -0.012353947f, -0.022059653f, -0.17668697f, + 0.27870777f, 0.0882822f, 0.12042381f, -0.065641254f, + 0.037420895f, -0.09778328f, 0.048127275f, -0.14856833f, + 0.016820913f, 0.24049033f, 0.02046954f, 0.0010473416f, + 0.069257595f, 0.00047073318f, 0.016502276f, 0.037171345f, + -0.027423626f, 0.08094469f, 0.12718323f, 0.023004819f, + -0.16268742f, -0.6555945f, 0.044455487f, -0.0048457757f, + -0.71461165f, 0.08670137f, 0.031607274f, 0.12936504f, + -0.13414384f, -0.121445306f, -0.03849295f, -0.11991031f, + -0.11503438f, 0.14935283f, 0.005869697f, 0.05855875f, + -0.13566682f, 0.05460486f, 0.26950622f, -0.023725431f, + -0.18094462f, -0.3288954f, 0.12835228f, -0.13918604f, + -0.25894257f, 0.24866861f, 0.19797443f, -0.3185861f, + -0.4538392f, 0.5364495f, 0.1551317f, 0.027166666f, + 0.68717986f, 0.024286747f, -0.007673651f, -0.042770237f, + 0.06102508f, -0.008748829f, 0.27833f, 0.12717918f, + 0.0074475827f, 0.013339506f, -0.16084987f, -0.33334672f, + -0.32459357f, -0.1697055f, 0.041840397f, -0.010056051f, + -0.08152204f, -0.038750067f, -0.109198496f, 0.10881584f, + 0.045977276f, -0.12367964f, 0.124936715f, 0.08947771f, + 0.15773907f, -0.10558413f, -0.08890653f, -0.12667038f, + 0.068530135f, -0.04798422f, -0.048571695f, 0.01556262f, + 0.28346398f, 0.06926974f, 0.018841807f, 0.0030591383f, + 0.61999774f, -0.16714922f, 0.04571468f, -0.0375588f, + -0.38012975f, 0.04752168f, 0.24807456f, 0.11863758f, + 0.37977052f, 0.088591434f, 0.018503375f, -0.07567685f, + 0.23532447f, -0.039010324f, -0.035268024f, -0.0189523f, + 0.048457853f, 0.07053109f, -0.42127016f, 0.29783103f, + 0.3053074f, 0.07399842f, 0.028126173f, 0.07503575f, + -0.46638048f, -0.6546268f, -0.06600755f, -0.12437929f, + -0.49663895f, 0.060916252f, -0.02334744f, 0.058156233f, + -0.017588122f, 0.1656786f, -0.16074547f, -0.068136305f, + 0.03314569f, 0.022328204f, -0.38845664f, 0.014804293f, + 0.20837206f, 0.09142284f, -0.1729515f, 0.1111258f, + -0.011469835f, 0.11911899f, -0.013932823f, 0.044445902f, + -0.09061177f, -0.108313695f, 0.05736543f, 0.049318824f, + 0.11082676f, -0.26152828f, -0.06357221f, 0.027943734f, + -0.05265921f, -0.032501657f, -0.07874157f, 0.1301029f, + 0.05559554f, -0.4085352f, -0.053924914f, -0.011387347f, + 0.27955183f, 0.124695465f, -0.10201531f, -0.16433685f, + 0.26747915f, -0.028152391f, 0.050380062f, -0.043049768f, + -0.02695814f, -0.026684057f, -0.06567921f, -0.05649221f, + -0.13940194f, -0.04109829f, 0.15169705f, 0.039074518f, + -0.040536705f, 0.38604438f, -0.076797076f, -0.11732102f, + 0.0034472034f, 0.014767471f, -0.3028846f, 0.09768299f, + -0.0999262f, 0.17279045f, -0.034152165f, -0.049370043f, + -0.29809505f, 0.05703701f, 0.03032144f, -0.16540793f, + 0.020043517f, 0.15464152f, 0.28926808f, -0.116804f, + 0.012878732f, -0.013723545f, -0.30570906f, 0.27432027f, + -0.1076496f, 0.004620526f, -0.090173654f, -0.024317898f, + -0.028670887f, 0.02080704f, -0.13115174f, 0.12980433f, + -0.016059363f, -0.3273988f, -0.20746604f, -0.10846393f, + 0.31477135f, -0.28824368f, -0.12544271f, 0.019616343f, + 0.030158808f, -0.065645956f, -0.07012343f, 0.23492855f, + -0.14928174f, 0.11859912f, -0.0512264f, -0.07842575f, + -0.016628962f, -0.0866912f, -0.0017562689f, 0.104286484f, + -0.17881766f, 0.04438131f, 0.00041794876f, 0.047009986f, + -0.051640607f, 0.004794025f, 0.07535653f, 0.1760129f, + 0.30157992f, -0.006644459f, -0.4864636f, -0.0049463087f, + 0.99981844f, 0.28017938f, 0.75015306f, -0.14620423f, + -0.7552411f, -0.14169565f, 0.88875294f, -0.0941533f, + -0.08771065f, 0.43264768f, -0.122643076f, -0.09946617f, + 0.24199682f, -0.06140546f, -0.075821154f, 0.132936f, + -0.05300541f, -0.1692222f, -0.32285467f, 0.16175646f, + 0.03990491f, -0.101796366f, 0.38788354f, -0.29432398f, + 0.3256876f, 0.023721058f, -0.017262757f, -0.049910165f, + 0.13743377f, 0.05250017f, 0.10302956f, -0.11867779f, + -0.01379607f, 0.65658563f, 0.2100528f, 0.14688495f, + 0.0012197153f, -1.019185f, -0.14964792f, -0.038188186f, + -0.04742091f, 0.06629005f, -0.055753727f, -0.04108325f, + 0.22405358f, 0.011693555f, 0.08351808f, -0.33285096f, + -0.1951514f, 0.18591835f, -0.07038352f, -0.41515526f, + 0.30644387f, 0.049732972f, 0.3501388f, -0.022745403f, + -0.44249812f, -0.17230783f, -0.18343619f, -0.48554075f, + -0.23056608f, -0.0497684f, 0.96615046f, -0.07450887f, + -0.30091044f, 0.21988298f, -0.1506008f, 0.61223596f, + 0.72351396f, -0.097042955f, -0.33462253f, -0.018057587f, + -0.27511418f, -0.23605423f, 0.053683765f, 0.12331371f, + 0.21337709f, 0.029036937f, 0.022526568f, -0.37294808f, + 0.034949794f, 0.21139902f, 0.76709783f, 0.008708063f, + -0.0740423f, -0.03529479f, -0.15194175f, -0.20387207f, + 0.054805573f, 0.023803893f, 0.09044283f, -0.009814897f, + -0.09347209f, -0.049156636f, 0.05606229f, 0.02499574f, + 0.045593146f, -0.64147115f, -0.08693846f, -0.16407625f, + -1.084042f, 0.85156024f, -0.35090068f, 0.10846088f, + 0.07913209f, -0.042319633f, 0.10668899f, 0.11463623f, + -0.0060765613f, 0.07862882f, -0.04391885f, -0.1169007f, + 0.04778016f, -0.13680944f, 0.08439027f, 0.5112891f, + -0.67963f, 0.0788026f, -0.06853963f, -0.004015502f, + 0.6819649f, 0.043306787f, 0.5397161f, 0.01562569f, + -0.79884213f, 0.08728057f, -0.7448577f, 0.026940936f, + -0.13321185f, -0.17912558f, -0.5128764f, -0.43889427f, + -0.45211416f, 0.25975546f, 0.71248746f, 0.09770223f, + -0.2614239f, -0.062976666f, 0.20463154f, 0.08805496f, + -0.5721739f, 0.017308708f, 0.0033507457f, 0.08538488f, + 0.01429926f, 0.23876584f, 0.17768128f, -0.0128559675f, + 0.017313773f, 0.15463735f, -0.16352974f, 0.6664047f, + 0.06061898f, 0.0046455986f, -0.18221022f, 0.05612446f, + -0.04426987f, -0.0044677393f, -0.49401823f, 0.0016286043f, + -0.04487959f, -0.34221268f, -0.022586875f, -0.030973095f, + 0.9117753f, -0.39437345f, 0.0794164f, -0.063622266f, + 0.009567414f, 0.05309906f, 0.027914999f, -0.21267201f, + -0.12880978f, -0.016684208f, 0.046442125f, 0.60035485f, + 0.037381038f, -0.044626553f, -0.023690557f, -0.16113326f, + 0.40192193f, -0.01627222f, 0.17380966f, 0.017046373f, + -0.7455078f, 0.19435745f, -0.37134346f, 0.16180801f, + -0.4121857f, 0.0009583997f, 0.046015784f, 0.047346722f, + 0.6995106f, 0.24398062f, 0.3396209f, -0.087725356f, + 0.046205908f, -0.1834136f, -0.08497787f, -0.32232353f, + 0.32160932f, 0.20456788f, -0.115891576f, -0.11224769f, + -0.29491124f, 0.02852774f, 0.032337524f, -0.13349879f, + -0.008897463f, 0.14181061f, 0.046290573f, -0.06423909f, + -0.0017573552f, 0.11556453f, 0.42326537f, -1.0129623f, + 0.327276f, 0.16455577f, -0.019055968f, 0.1239059f, + 0.042649545f, 0.0158976f, -0.014213948f, 0.043385267f, + 0.025418913f, 0.6764359f, 0.22983883f, -0.17702171f, + -0.044895127f, -0.45830607f, -0.8805565f, 0.12511049f, + 0.015667526f, -0.08904732f, -0.036180258f, -0.29310372f, + 0.2272924f, -0.6137482f, -0.055396058f, -0.13917828f, + 0.11204444f, -0.0044645346f, -0.07424917f, 0.2642075f, + -0.722629f, 0.44809127f, -0.0389556f, -0.049124334f, + -0.4352247f, 0.5971468f, 0.54822046f, -0.49104947f, + -0.057140257f, -0.0074143913f, 1.3554336f, 0.051689424f, + -0.21423684f, 1.4018453f, -0.44288862f, -0.15157351f, + -0.088252254f, 0.48783636f, -0.3792479f, 0.4844827f, + -0.7680109f, -0.8833314f, -0.037443038f, 0.0466122f, + 0.24388036f, -0.108721785f, -0.04240605f, -0.71150804f, + -0.051696185f, -0.38899156f, 0.44967824f, 0.09061686f, + 0.0393883f, -0.36576313f, -0.24985735f, 0.3085152f, + -0.51230776f, -0.326061f, 0.13631403f, -0.103667766f, + 0.12420115f, 0.10082946f, -0.3511401f, -0.08513718f, + -0.028246501f, -0.16485122f, -0.3624337f, 0.6240003f, + -0.17765431f, -0.082381465f, -0.16676894f, -0.1571694f, + -0.09075203f, 0.1672078f, 0.01877637f, -0.36397508f, + 0.20642075f, -0.034401774f, 0.07654029f, -0.35307553f, + 0.12972488f, 0.099575624f, 0.045926373f, -0.3592577f, + 0.299326f, 0.16800542f, 0.24225566f, -0.059390683f, + 1.4563966f, -0.52309936f, -0.1426611f, 0.2470431f, + 1.2995605f, 0.0045726653f, -0.64037806f, -0.039845392f, + -0.05576914f, -0.4580847f, -0.89426905f, 0.45873097f, + 0.5476584f, 0.03214348f, -0.16344343f, -0.49475554f, + 0.80090976f, 0.2918706f, -0.18096869f, 0.02128342f, + 0.56787f, -0.04792103f, -0.007883926f, 0.20527421f, + -0.017115528f, -0.47968748f, 0.2517807f, 0.066902354f, + -0.032381605f, 0.15585391f, -0.0065275826f, -0.35530648f, + 0.2252194f, 0.03590487f, 0.2681693f, -0.11395158f, + 0.041178916f, -0.041076913f, 0.3082287f, -0.111502446f, + 0.055950325f, -0.068336345f, -0.2574055f, 0.013378321f, + -0.03507163f, 0.39285472f, 0.52666324f, 0.056973044f, + -0.0400084f, 0.008564027f, 0.064295426f, 0.23629187f, + -0.44162133f, -0.016122507f, 0.0010388065f, 0.11486115f, + 0.23823747f, 0.08200071f, 0.03733934f, 0.24824956f, + 1.1843475f, -0.13962187f, -0.39082828f, 0.048489172f, + -1.0222741f, 0.7573068f, 0.25776228f, 0.10316356f, + 0.28093833f, 0.026721075f, 1.2355736f, -0.04676423f, + -1.0405042f, -0.11024771f, -0.26873586f, 0.21673316f, + -0.14101687f, -0.18625113f, 0.16181695f, 0.23847565f, + -0.15598075f, -0.046676226f, 0.2827923f, 0.045970574f, + -0.15885073f, 0.028700503f, 0.033175338f, -0.00829675f, + 0.02687276f, -0.056945253f, -0.82501096f, -0.07021997f, + -0.008664024f, 0.13186662f, -0.021913992f, 0.45170218f, + 0.43144658f, -0.121759124f, -0.046265624f, 0.004949928f, + -0.09009411f, -0.04252105f, 0.11162812f, 0.012462616f, + -0.050592136f, 0.5804562f, 0.20878513f, 0.17177077f, + -0.45137408f, 0.26755846f, 0.8317351f, -0.12686104f, + -0.0036340342f, 0.022593478f, 0.033594113f, 0.12184944f, + -0.16756459f, 0.3928308f, 0.005338583f, -0.22811142f, + -0.30418447f, -0.037207115f, 0.06782122f, -0.17265911f, + -0.13230719f, 0.23851812f, 0.13234794f, -0.1154366f, + -0.068542235f, -0.4627919f, 0.32979357f, -0.036392566f, + 0.13473643f, -0.019162534f, -0.6430242f, -0.0016206398f, + 1.0857452f, -0.3621882f, -0.040646385f, -0.37797552f, + 0.2018547f, 0.18339004f, -0.41834205f, 0.35873428f, + 0.22345021f, 0.0530302f, -0.056131415f, -0.06505803f, + -0.4047926f, 0.07171706f, 0.0116211865f, -0.1098756f, + 0.03693342f, 0.31639275f, -0.13731891f, -0.02894667f, + 0.014420687f, -0.17089212f, 0.248678f, 0.15520826f, + -0.54199296f, 0.22214583f, -0.15422465f, 0.09702469f, + -0.10166528f, -0.04396382f, -0.28055897f, 0.1022914f, + 0.011325716f, 0.53971857f, 0.09255881f, -0.49870223f, + 0.35438457f, -0.5769723f, -0.30997258f, 0.07104318f, + 0.037779607f, -0.12866892f, -0.08570112f, 0.53977764f, + 0.10496306f, -0.25952613f, -0.06947783f, -0.0047552804f, + 0.0898693f, -0.07720403f, -0.067478836f, -0.021315409f, + 0.18945248f, -0.16317979f, 0.23232383f, 0.16493674f, + 0.4163322f, 0.0781759f, -0.4258002f, -0.012804674f, + -0.6245893f, -0.034604143f, -0.039183505f, 0.056304f, + -0.3235779f, -0.42885864f, 0.7650688f, -0.1114653f, + 0.6291103f, -0.050434288f, -0.23134397f, 0.009165003f, + 0.44632873f, -0.23773855f, -0.08732656f, 0.014459259f, + -0.18376805f, 0.008373621f, -0.07309256f, -0.106509104f, + 0.015056879f, -0.5893809f, -0.18251958f, 0.01755584f, + 0.011032683f, 0.13843608f, 0.7800908f, 0.36020896f, + 0.46289355f, 0.05201512f, 0.088167086f, -0.15388323f, + -0.02694291f, 0.015415665f, -0.12438771f, -0.024108835f, + 0.013043372f, -0.43957457f, 0.088509075f, 0.04309229f, + -0.07133356f, -0.95177376f, -0.2678068f, -0.05476798f, + -0.00685724f, 0.011513751f, -0.008440102f, 0.10776503f, + 1.0321267f, 0.1582699f, 0.050195847f, 0.1634615f, + -0.28570443f, 0.092233464f, -0.017145531f, 0.110260025f, + 0.28161857f, -0.12653746f, 0.07268945f, 0.09704572f, + -0.39868522f, -1.5608557f, 0.0807589f, 0.32353407f, + -0.18021089f, -0.03440525f, -0.8311514f, -0.032484684f, + 0.32842445f, 0.40008506f, 0.08982196f, -0.22198847f, + 0.1434313f, -0.046729002f, 0.48380226f, 0.66356933f, + 0.6976522f, -0.5714509f, 0.14379509f, 0.056072246f, + 0.27770153f, 0.0070501477f, 0.068167016f, 0.11607486f, + -0.0006700506f, 0.042464823f, -0.054199215f, 0.062650755f, + -0.03125403f, 0.013899791f, -0.35028034f, -0.3558799f, + -0.28724313f, -0.04899593f, 0.011317216f, 0.11541869f, + -0.02140986f, -0.0026176153f, -0.0059981435f, 0.069355555f, + -0.042553082f, 0.73822194f, 0.3262634f, 0.09248582f, + 0.29421788f, -0.5798051f, -0.2926421f, 0.0841797f, + 0.033948235f, -0.025039556f, 0.051565994f, 0.6059614f, + 0.07723704f, -0.0329513f, -0.05262545f, -0.102209665f, + 0.6267219f, -0.12537308f, 0.05970058f, 0.20255937f, + 0.41567078f, -0.80001247f, -0.6900568f, -0.10799171f, + -0.511725f, 0.049079668f, -0.12900902f, 0.04779727f, + 0.20864587f, 0.050453838f, 0.30489194f, -0.0016741492f, + 0.042291842f, -0.64010245f, 0.60374117f, -0.077798545f, + 0.07687081f, 0.16316062f, -0.3074694f, -0.18669386f, + 0.25767046f, 0.36188442f, -0.059293363f, -0.057139933f, + 0.020630894f, -0.013469758f, -0.019203695f, -0.16148488f, + -0.027446723f, 0.27997342f, 0.31766203f, -0.1404325f, + 0.0410099f, -0.2533441f, -1.1809363f, -0.10958472f, + 0.116347745f, 0.013567234f, -0.11159709f, 0.04819467f, + 0.05900707f, -0.007352562f, -0.014661481f, -0.061657015f, + 0.029473506f, 1.1943647f, 0.11530376f, -0.17227276f, + 0.40300205f, -0.986822f, 0.1879279f, -0.037415467f, + -0.026573367f, 0.025214637f, -0.053723242f, 0.03885142f, + -0.0070074173f, 0.11223131f, 0.032808132f, -0.1442565f, + -0.19912496f, 0.07817793f, -0.09777844f, -0.27950895f, + 0.8410246f, -0.30614904f, -0.0061865887f, -0.0071548456f, + -1.1758162f, 0.022818647f, 0.24017975f, 0.14344482f, + 0.0834544f, -0.03341387f, 0.12318782f, 0.026952153f, + -0.02427485f, 1.1132215f, 0.12281676f, 0.46952203f, + -0.04627051f, -0.11297218f, 0.7735109f, -0.24203792f, + -0.21309038f, 0.008705652f, 0.1622859f, -0.040875368f, + -0.5313615f, 0.05556046f, 0.043643165f, 0.15254527f, + 0.0076187965f, 0.55094856f, 0.0032890595f, -0.002367721f, + 0.036769032f, -0.9257932f, 0.0025219414f, -0.09497687f, + -0.4652572f, 0.046699304f, -0.129029f, 0.24149823f, + -0.045130238f, 0.06813913f, 0.027863413f, 0.11110108f, + -0.030894818f, -0.014818717f, -0.09947935f, 0.10741259f, + 0.13476871f, 0.35457763f, 0.6867406f, -0.0061841975f, + -0.011990315f, -0.017120712f, 0.0018497618f, 0.097620666f, + -0.8202574f, -1.1433727f, -0.005732898f, -0.06723482f, + 0.17461577f, -0.08072869f, -0.083160795f, -0.17691754f, + -0.21602936f, 0.051062748f, -0.10313058f, -0.022493767f, + 1.1036471f, 1.1305901f, -0.026133608f, -0.010434488f, + -0.21055792f, -0.037988577f, 0.12376131f, 0.14323397f, + -0.17366052f, -0.20061208f, -0.3302822f, 0.32439324f, + 0.0031347799f, 0.7850242f, -1.3354675f, 0.0005811474f, + -0.72887814f, 0.18275303f, -0.24607456f, 0.005753311f, + -0.7319752f, -0.08385432f, -0.06753906f, -0.035555843f, + -0.039811388f, -0.3767015f, -0.076315135f, -0.07321679f, + -0.042882103f, -0.5356063f, 0.39188573f, 1.10181f, + 0.9717924f, -0.050963774f, 0.116258524f, -0.3170713f, + 0.105097726f, -0.078811236f, -0.006035284f, -0.19858313f, + 0.04085725f, 0.16094492f, -0.32044485f, -0.12763774f, + 0.3173443f, 0.978693f, 0.29491243f, -0.053569093f, + -0.029439753f, 0.050673287f, -0.002950207f, -1.1268907f, + -0.1814021f, -0.06784573f, 0.079573624f, -0.1103384f, + -0.2972119f, 0.15926753f, 0.04600996f, 0.17779268f, + -0.15466182f, 0.2439738f, 0.11229599f, -0.05396734f, + 0.20770589f, -0.1592725f, 0.0072727804f, -0.14122207f, + 0.16747157f, 0.026307067f, 0.34724113f, -0.12883927f, + -0.32976663f, -0.4784437f, -0.38176396f, -0.042456377f, + -0.17982274f, -0.3263336f, 1.2804618f, 0.0672359f, + -0.20580126f, 0.0050948747f, 0.021570781f, 0.04576525f, + 0.14364547f, 0.03591371f, 0.028750364f, 0.011304305f, + 0.026089223f, 0.07115567f, 0.50790364f, 0.1289591f, + -7.538129e-05f, -0.17464624f, 1.1031022f, 0.5880171f, + -0.54630625f, 0.07950734f, 0.018629998f, 0.06347779f, + -0.08137025f, -0.022692818f, -1.27228f, 0.05427399f, + 0.003013075f, -0.7753348f, -0.019878622f, -0.005978487f, + -0.22193187f, 0.73336524f, 0.032962702f, 0.052645594f, + 0.038553942f, -0.04428346f, 0.001628849f, -0.21992552f, + -0.27922797f, 0.113163665f, -0.057953272f, 0.077588394f, + -0.47884265f, -0.10492611f, 0.023605864f, 0.14198686f, + -0.60365f, 0.15271837f, -0.034451663f, 0.09869482f, + 0.09592742f, -0.021369549f, 0.21813178f, 0.009439557f, + -0.07610781f, 0.010436077f, -0.32621768f, -0.027276881f, + 0.13276872f, -0.14211676f, -0.53679705f, -0.56170017f, + -0.39770064f, 0.2034383f, -0.31893313f, -0.059384283f, + 0.07372254f, -0.118807755f, -0.022499843f, 0.02138475f, + 0.42912447f, -0.009667081f, 0.012234381f, -0.029710962f, + 0.014417958f, -0.2906427f, 0.2570921f, 0.0918705f, + -0.06424748f, 0.20960762f, 0.13979726f, -0.12340614f, + 0.24078718f, 0.069526605f, -0.009723069f, -0.117215894f, + -0.036689237f, -0.10497276f, -0.10562419f, -0.08054766f, + -0.016451294f, -0.066775054f, -0.10471317f, -0.15725246f, + 0.21348801f, 0.08220628f, -0.3099748f, -0.012443495f, + 0.027471306f, 0.031791907f, 0.02677954f, -0.29549146f, + -0.18081899f, 1.0454957f, 0.012804411f, -0.16972886f, + 0.1852477f, 0.021314248f, 0.07389345f, -0.042197887f, + 0.09627866f, 0.43722162f, -0.026418352f, 0.019084796f, + -0.03412653f, -0.36761016f, -0.050523378f, -0.024823833f, + 0.006965418f, 0.05093384f, 0.10571677f, -0.09560457f, + 0.02385254f, -0.31666005f, 0.38788697f, -0.1767426f, + 0.4421854f, 0.42247447f, 0.09079974f, -0.002550792f, + 0.25771818f, 0.51293385f, 0.04060248f, -0.024710149f, + 0.60944444f, 0.007235594f, 0.0133967055f, 0.0066959034f, + -0.017091477f, -0.022553185f, 0.34642157f, 0.014992752f, + 0.03232206f, 0.44279772f, -0.81803626f, -0.49028736f, + -0.34415767f, -0.012991667f, -0.053332772f, 0.11375271f, + 0.019600764f, 0.13227576f, 0.38333622f, 0.07751584f, + 0.0056394325f, -0.60639817f, -0.17243211f, 0.1657753f, + -0.50583124f, -0.03649593f, 0.18073754f, 0.051965218f, + 0.0063883816f, -0.046350554f, 0.0074547655f, 0.4233464f, + 0.071552955f, -0.0372205f, -0.082861f, 0.118820414f, + 0.8847104f, -0.089769505f, -0.05605843f, -0.05030289f, + 0.25012562f, 0.1962773f, -0.17559469f, 0.022449434f, + -0.09728449f, 0.11843631f, 0.09195262f, 0.0048188637f, + -0.39914495f, -0.0022937097f, 0.009196685f, 0.11434106f, + -0.25181392f, 0.15550734f, 0.16759759f, 0.07037398f, + -0.4151557f, -0.55648756f, -0.5252056f, -0.025239188f, + -0.18091466f, -0.29778737f, 0.07765983f, -0.025024122f, + -0.1486579f, -0.018841209f, -0.012327863f, 0.032643806f, + 0.017856779f, 0.24027725f, -0.5038195f, -0.108413145f, + 0.017078506f, 0.025562868f, -0.74949616f, -0.30621454f, + -0.096019186f, -0.13243535f, 0.06764826f, 0.0040682447f, + 0.023817088f, -0.011803489f, 0.047801204f, 0.036649786f, + 0.005638798f, 1.1893104f, -0.15909116f, 0.058457773f, + -0.19311047f, -0.024304366f, 0.1253302f, -0.041249488f, + -0.036928393f, 0.022007238f, -0.023162698f, 0.0140922405f, + -0.19516999f, -0.21980476f, 0.03217672f, 0.057192955f, + -0.5846498f, 0.06265048f, 0.033024542f, -0.055355337f, + -0.089094445f, 0.49381608f, -0.07266042f, -0.046155013f, + -0.05647059f, -0.07905684f, 0.02371609f, 0.15074208f, + 0.3374095f, -0.03365276f, -0.09693421f, -0.00866088f, + 0.29189178f, 0.21956061f, -0.0018090261f, 0.18579072f, + -0.00567612f, 0.020380676f, 0.04264509f, -0.0291697f, + -0.07688213f, -0.4056838f, -0.059556324f, 0.01163347f, + -0.25637966f, -0.0018530907f, -0.015948305f, -0.012957463f, + 0.0009555749f, 0.263704f, -0.061690062f, 0.008336223f, + -0.010992762f, 0.022603294f, 0.03266455f, 0.07193524f, + -0.1565636f, -0.0056134355f, 0.032574214f, -0.042046014f, + 0.03552414f, -0.040826626f, -0.031631753f, -0.054056376f, + 0.0035004085f, -0.033404734f, -0.013030556f, -0.040594816f, + 0.005856872f, -0.18011747f, 0.02185375f, 0.011506203f, + -0.006550561f, 0.028001865f, 0.006267785f, -0.010179458f, + -0.00021979935f, -0.15015735f, 0.01564783f, 0.012559334f, + 0.35509235f, -0.042553835f, 0.017584192f, -0.041904543f, + -0.37242705f, 0.014638534f, 0.12258163f, -0.015398692f, + -0.09282839f, -0.098346874f, 0.07173432f, 0.014877965f, + -0.035603583f, 0.03248589f, 0.036383968f, -0.010253986f, + 0.072864816f, 0.1544448f, 0.21713263f, 0.0513127f, + 0.053371716f, -0.025605045f, 0.020002762f, -0.0035021324f, + 0.10945562f, 0.34046754f, 0.05610926f, 0.007739632f, + 0.25483266f, -0.004919215f, 0.011722813f, -0.01185588f, + 0.0071812407f, -0.35035092f, -0.199691f, 0.050863247f, + 0.0037099887f, -0.07624686f, 0.023245746f, -0.10927406f, + 0.06387228f, 0.012235366f, -0.07051909f, 0.0035110123f, + -0.044049196f, 0.06724817f, 0.0887703f, 0.002739086f, + -0.03936518f, 0.14276603f, 0.026522987f, 0.10007684f, + 0.24641593f, 0.06179833f, -0.08179211f, -0.008371142f, + 0.0061716726f, -0.020302314f, 0.006387707f, 0.028108684f, + 0.039199162f, 0.17813778f, -0.028087312f, -0.005437027f, + -0.29374814f, 0.035192713f, -0.0038719552f, -0.21371336f, + -0.18716288f, -0.0059998464f, 0.044470888f, 0.06616218f, + -0.010356968f, -0.0157583f, 0.15716474f, 0.013291099f, + -0.0399417f, -0.0060877493f, -0.0529055f, -0.008940092f, + 0.021424714f, -0.18112889f, -0.19215365f, 0.090093695f, + -0.065919116f, -0.025406588f, -0.057953708f, 0.01085119f, + 0.09008777f, -0.1427311f, 0.032077298f, 0.007878163f, + 0.14274172f, 0.0015238108f, 0.0027622178f, 0.030093087f, + 0.0061876876f, 0.1606966f, -0.027860422f, -0.078456014f, + -0.010638592f, 0.016971648f, -0.13165618f, 0.0869493f, + 0.060358085f, -0.038722765f, 0.054401074f, 0.02063669f, + 0.00044111305f, -0.07282876f, 0.0021042319f, -0.0049562375f, + 0.021399016f, 0.013015557f, -0.0067407843f, -0.03715167f, + 0.024515964f, 0.12294532f, 0.03299622f, -0.031252883f, + 0.0057252473f, 0.019837135f, 0.021760704f, -0.009635009f, + 0.0067916503f, 0.4775284f, 0.018747173f, 0.0039202846f, + 0.23521702f, -0.003757172f, 0.024565082f, 0.089966215f, + -0.14797732f, 0.005122042f, 0.049538136f, -0.053671554f, + 0.06552874f, 0.0068669445f, 0.13403544f, 0.002203662f, + 0.034464814f, -0.009853258f, -0.034477677f, 0.022904877f, + -0.024977747f, 0.044089023f, -0.15747781f, -0.044312984f, + -0.046824772f, 0.053417217f, -0.13504808f, 0.06862784f, + 0.032085754f, 0.2927457f, 0.08689808f, 0.017087124f, + 0.5035299f, 0.00075250823f, 0.001001657f, -0.015898747f, + -0.0058109593f, -0.13477407f, -0.26842594f, -0.056808073f, + 0.010101589f, 0.04392939f, -0.044679046f, 0.0016418663f, + 0.21171609f, -0.07709093f, 0.036335133f, 0.069893934f, + -0.041565932f, 0.06567494f, 0.010762502f, 0.009041383f, + -0.013450415f, -0.06483575f, 0.000611196f, 0.019024193f, + 0.05183647f, -0.15539657f, 0.04999349f, -0.049802296f, + 0.0059563345f, -0.00862811f, 0.0062819663f, 0.026432453f, + 0.0046448587f, 0.09484473f, -0.024152175f, 0.0029530919f, + -0.30653492f, 0.011487342f, -0.02740724f, 0.016938843f, + -0.38705912f, -0.023733681f, 0.08587131f, -0.07057287f, + -0.09987141f, -0.041638277f, -0.015748398f, -0.011953839f, + -0.023850376f, -0.010638727f, 0.019983346f, 0.034045566f, + -0.034286886f, -0.018681895f, -0.11811369f, 0.02329307f, + -0.14991036f, -0.11635875f, 0.12554833f, 0.050517257f, + -0.013545688f, 0.010023286f, -0.14217165f, -0.020149386f, + -0.84776783f, 0.014956831f, 0.0080571575f, 0.022529349f, + 0.016131734f, 0.34766576f, -0.28717834f, 0.022886729f, + 0.007505809f, -0.07459979f, 0.049174964f, 0.03531444f, + -0.24115752f, 0.13978042f, 0.009610393f, -0.06797086f, + 0.0038652082f, -0.10778967f, -0.105480544f, 0.016254485f, + 0.040416807f, 0.19715598f, 0.011716862f, -0.20091647f, + -0.1284719f, -0.06655969f, -0.06372599f, 0.061530914f, + 0.0071623293f, -0.00055192213f, -0.010003944f, 0.01270999f, + 0.016268587f, -0.93084055f, 0.034755267f, 0.050923683f, + -0.32863027f, -0.011222176f, 0.03084846f, 0.2580128f, + -0.03598173f, 0.0020916131f, 0.024662836f, 0.099588156f, + -0.04340161f, -0.07580104f, -0.039105278f, 0.012617511f, + -0.0107284095f, -0.021715388f, 0.054205354f, 0.007086662f, + 0.0038897693f, 0.08667516f, -0.25350285f, -0.18199834f, + 0.17164823f, 0.05056857f, 0.06219424f, 0.04042452f, + -0.005915836f, 0.09847343f, -0.019558081f, -0.033958144f, + -0.12838013f, -0.009667054f, -0.012631435f, 0.010164979f, + -0.023161767f, -0.025709983f, -0.09592506f, 0.025374291f, + -0.0023960243f, 0.0049725426f, -0.062229663f, -0.013622516f, + -0.1894946f, -0.041507922f, -0.05449907f, -0.016084326f, + 0.03572615f, 0.09910037f, 0.07112183f, 0.038772523f, + -0.014430125f, 0.034653023f, -0.007824785f, 0.086341396f, + -0.050112672f, 0.005704569f, 0.023171974f, 0.019399222f, + -0.029673908f, -0.020681363f, -0.023864439f, -0.024737187f, + -0.016021706f, 0.071903735f, -0.027813716f, -0.014238086f, + 0.40620986f, 0.004378562f, -0.036933623f, -0.19499314f, + -0.19671758f, -0.026845016f, 0.06062793f, -0.011533537f, + 0.041228235f, -0.015324207f, -0.061375067f, 0.0063267536f, + 0.0831155f, 0.02641968f, 0.04628357f, -0.038645204f, + -0.019350575f, 0.16452208f, -0.1296833f, -0.0035525183f, + 0.09798307f, -0.008281434f, 0.058930982f, 0.0104753515f, + 0.022615723f, 0.049554665f, -0.014036251f, -0.028590485f, + -0.12403653f, 9.973729e-05f, 0.016919682f, -0.0030448653f, + -0.00047174798f, 0.010548523f, 0.0011307914f, 0.032206226f, + -0.0005255651f, -0.0140659185f, -0.04454255f, 0.018292774f, + -0.35233966f, 0.0720653f, -0.06981871f, -0.02320934f, + 0.008021986f, -0.020587703f, 0.0031995457f, 0.029775469f, + 0.018949479f, -0.025305906f, -0.0039514718f, 0.004114255f, + 0.010616475f, -0.0045592557f, -0.0013737231f, 0.0222724f, + 0.009040806f, -0.023175644f, -0.0062583582f, -0.0051744464f, + -0.0029323208f, 0.28508502f, 0.010471018f, 0.0074592414f, + 0.32417703f, -0.0010951336f, 0.026325412f, -0.05362879f, + 0.0047209887f, 0.0036806585f, 0.018787121f, 0.0737881f, + -0.15814061f, -0.030890506f, -0.003131501f, -0.0022139882f, + -0.05091044f, -0.008630115f, -0.007888855f, 0.003442951f, + 0.020002233f, 0.0067732157f, -0.11338125f, 0.005323204f, + 0.08581953f, -0.009921819f, -0.04381854f, 0.09075186f, + 0.10942189f, -0.34535143f, 0.06996103f, 0.03290983f, + 0.010956424f, -0.0010596734f, -0.031531554f, 0.003105094f, + 0.005063345f, -0.17817424f, -0.22467782f, -0.03204558f, + -0.017063458f, -0.0026263276f, -0.023680711f, 0.011354492f, + 0.44365758f, -0.12522253f, 0.070168614f, 0.018304965f, + 0.013072655f, 0.053862855f, 0.0005638514f, 0.009838059f, + -0.027930208f, 0.032304984f, 0.012665151f, 0.15305941f, + -0.030275881f, -0.018956136f, -0.010045999f, -0.034550734f, + -0.022409191f, 0.027200961f, 0.0054792017f, 0.003778217f, + 0.012645259f, 0.23581214f, -0.022396132f, -0.014785858f, + -0.28864443f, -0.008141695f, -0.03284804f, -0.06595806f, + 0.015881326f, -0.024915846f, -0.00304274f, -0.07632511f, + 0.17882277f, 0.044341143f, -0.014664787f, -0.011593968f, + 0.15344416f, 0.033612058f, 0.021555474f, -0.017107775f, + -0.011054691f, 0.0011349912f, 0.303926f, 0.061851196f, + -0.15269431f, 0.0032798336f, -0.121348344f, 0.001092943f, + -0.023978744f, 0.14557548f, -0.02470892f, 0.0044718287f, + 0.41307703f, 0.0033234789f, 0.021349842f, -0.0102277575f, + -0.0066920356f, -0.07728025f, -0.051625866f, 0.026070217f, + 0.019166565f, 0.0044421325f, 0.101282105f, -0.013429677f, + 0.08875241f, 0.078264f, 0.0015468599f, 0.031788677f, + -0.015426687f, -0.039233655f, 0.033676635f, -0.044884443f, + 0.006063944f, 0.0063460567f, 0.004738851f, -0.07623809f, + 0.0244224f, 0.0076898863f, -0.008901629f, 0.006741368f, + 0.024192093f, -0.0022971707f, -0.0014673377f, 0.0056687687f, + 0.01718644f, -0.15620369f, 0.024293305f, 0.002468455f, + -0.090813704f, 0.0105410395f, 0.0061275014f, 0.17454107f, + -0.17297937f, -0.0010996477f, 0.005457069f, -0.0019706106f, + 0.34954715f, 0.015803825f, -0.0016383039f, 0.0006059791f, + -0.08080886f, -0.03188785f, -0.03773466f, 0.013930498f, + 0.0041984706f, -0.019331759f, 0.34472698f, 0.024788488f, + -0.45220193f, 0.14947395f, -0.19914968f, 0.05058733f, + 0.45231745f, 0.307535f, 0.18695685f, 0.05449232f, + 0.7468154f, 0.005301876f, 0.00060457323f, -0.009375542f, + 0.011811123f, -0.2551802f, -0.278663f, -0.08959385f, + -0.00011646221f, 0.009912444f, -0.054518335f, 0.20310403f, + -0.23558189f, -0.019198375f, -0.04581132f, 0.05966815f, + -0.03464186f, -0.028622596f, -0.12805519f, 0.031357545f, + -0.00197938f, 0.021992022f, -0.010068638f, 0.18228695f, + 0.5865127f, 0.5902966f, -0.14120702f, -0.044860706f, + 0.009164457f, 0.010502482f, 0.024185726f, -0.047843434f, + 0.09928605f, 0.20336407f, 0.0065986295f, -0.0069224765f, + -0.11245211f, -0.06320447f, -0.007929063f, -0.118977375f, + 0.22941498f, 0.038356006f, 0.04292408f, 0.061910745f, + -0.042775534f, -0.16959195f, -0.33885884f, -0.12708695f, + 0.31509194f, -0.014119303f, 0.47984788f, 0.0150506515f, + -0.13480484f, 0.32461107f, -0.05585692f, -0.061477523f, + 0.30642f, 0.087106705f, 0.26704928f, -0.11288326f, + -0.47421393f, -0.8101298f, -0.081758f, -0.072706245f, + 0.021745177f, -0.008093714f, -0.054871846f, 0.02556656f, + -0.03333295f, 0.5797312f, 0.45006835f, -0.03948023f, + 0.03255908f, 0.049287707f, -0.1341574f, 0.00011251075f, + -0.35776132f, 0.01983484f, -0.07977612f, -0.0027979834f, + 0.056354087f, 0.11608664f, -0.20534642f, -0.0010519463f, + -0.021072723f, 0.04771979f, 0.054410912f, -0.09463495f, + -0.42456836f, 0.33545256f, 0.19486724f, 0.018713055f, + -0.04076286f, -0.003794818f, -0.062340584f, 0.047369145f, + -0.046406377f, -0.73264265f, 0.016914468f, 0.067707114f, + -0.37393793f, 0.07569465f, -0.11171308f, -0.17289065f, + 0.83746016f, -0.10645006f, -0.1937567f, -0.007290418f, + 0.47579965f, -0.030583022f, 0.70912206f, -0.34115985f, + -0.452551f, -0.02578769f, -0.059905548f, -0.0034691796f, + 0.67249674f, 0.49157077f, 0.27046028f, -0.0012706895f, + 0.39706445f, -0.061415277f, -0.1805578f, 0.08519831f, + -0.14749447f, 0.3719679f, 0.061611068f, 0.14352605f, + -0.17005554f, -0.04762322f, 0.020197773f, 0.15962957f, + 0.004129819f, 0.110997856f, -0.5061546f, 0.055705737f, + -0.04881541f, -0.093093395f, -0.46858948f, -0.20287752f, + 0.25041476f, -0.06348368f, 0.09201104f, -0.043143705f, + 0.0014043635f, -0.13019611f, 0.3011483f, -0.09239494f, + 0.018448504f, 0.5684851f, -0.018370045f, 0.06784864f, + 0.0025318447f, -0.5006786f, -0.04040604f, 0.022323987f, + 0.016484573f, 0.08926376f, 0.11377909f, -0.002378205f, + 0.087868266f, 0.54906315f, 0.023805037f, 0.04610458f, + 0.74115825f, -0.021394717f, 0.079446144f, -0.03220998f, + -0.1579376f, -0.012103196f, 0.14047645f, -0.00077831314f, + 0.14080758f, 0.041212182f, -0.31953326f, -0.1020078f, + 0.07745427f, 0.06125377f, 0.17040183f, -0.03504357f, + 0.16761252f, -0.72247595f, -0.6339841f, 0.1532478f, + -0.2338267f, 0.45150554f, -0.12576324f, -0.20093478f, + 1.0931097f, 0.61932135f, -0.28032804f, 0.021793928f, + -0.5253992f, -0.005789213f, 0.004304131f, 0.30505374f, + 0.021590505f, 0.3440854f, -0.62649685f, 0.11617569f, + -0.013185922f, -0.027045783f, -0.007095236f, -0.14827463f, + 0.0108237155f, 0.024570612f, 0.056700196f, -0.07623475f, + 0.011249786f, -0.0027090502f, 0.20066391f, 0.028957421f, + 0.05160271f, -0.39510512f, 0.17797232f, -0.4235669f, + 0.35414436f, 0.6315781f, -0.14519107f, 0.12545316f, + 0.061256804f, -0.031163996f, -0.031036584f, -0.33284935f, + -0.23789349f, 0.3166083f, -0.03079719f, 0.61405706f, + 0.46851912f, -0.0027350972f, 0.045408517f, 0.22341715f, + -0.7025126f, -0.0143541265f, -0.07626247f, 0.040324207f, + -0.9787096f, 0.6445741f, 0.0003554572f, 0.041044477f, + -0.049420357f, 0.044494707f, 0.74750704f, -0.03410113f, + -0.68521583f, -1.2920746f, 0.3397416f, 0.4949668f, + -0.27882546f, -0.500325f, -0.7711389f, 0.36217138f, + -0.8036728f, -0.04443311f, 0.274405f, 0.06707561f, + -0.42382774f, 0.00037353905f, 0.023876393f, -0.5172676f, + 0.008296521f, 0.23045799f, 0.05775504f, -0.044884942f, + -0.03690841f, -0.038526874f, 0.14315693f, -0.082612395f, + -0.3818327f, -0.05078566f, -0.032710463f, 0.078875974f, + -0.032195233f, -0.08243017f, -0.42445147f, -0.023793837f, + -0.004710217f, 0.07448841f, -0.19398776f, 0.24503613f, + -0.16447985f, -0.07955079f, -0.22366536f, -0.026827868f, + 0.040315364f, 0.027041987f, 0.057714712f, 0.065006115f, + 0.3130295f, -0.06848712f, 0.0041630296f, 0.23587859f, + -0.5835058f, -0.06282187f, 0.049075652f, -0.11972826f, + 1.1947248f, 0.20820859f, 0.08056946f, -0.04987984f, + 0.5693832f, -0.53360325f, 0.3204968f, 0.17758386f, + 0.53367114f, 0.023540791f, 0.469496f, 0.032339863f, + 1.4685633f, 0.8728024f, -1.1092385f, -0.18477716f, + -0.1581551f, -0.102229774f, 0.075021654f, -0.090654f, + 0.3611262f, -0.116716646f, -0.26650375f, -0.096424684f, + 0.06348933f, 0.010788836f, -0.04287214f, -0.19317327f, + -0.017482338f, -0.27952254f, -1.121102f, -0.124078356f, + 0.04040894f, -0.21911283f, 0.8253955f, -0.5890444f, + 0.37080204f, 0.07764547f, -0.037794326f, -0.046032928f, + 0.052668553f, 0.055812236f, 0.49010286f, -3.310662e-05f, + 0.0076864045f, 0.74085546f, -0.041559204f, -0.39161035f, + -0.58791286f, -0.15664375f, 0.035808783f, -0.013080904f, + -0.055683583f, -0.052564967f, -0.10708312f, 0.04539099f, + -0.027515065f, -0.34756786f, 0.0017699746f, 0.073102206f, + -0.1191684f, 0.081200525f, -0.07173282f, 0.055535197f, + -0.63321406f, -0.04404459f, -0.2591691f, 0.06658637f, + 0.42295995f, 0.14122894f, 0.218099f, -0.06582625f, + -0.0025378242f, -0.052111674f, 0.5289339f, -0.0077431574f, + -0.18122287f, -0.104757585f, 0.19629937f, -0.12425286f, + -0.0794086f, -0.8059683f, 1.5266526f, -0.13134679f, + 0.5146484f, -0.6986573f, 0.022236273f, -0.0765613f, + 0.43782115f, -0.0035108766f, -0.0048253345f, 0.060420476f, + -0.018270632f, -0.21025382f, -0.0033497142f, 0.0055812155f, + 0.011383401f, 0.20445086f, 0.005982581f, -0.24187629f, + 0.29305393f, 0.010874558f, 0.040686388f, 0.0018136705f, + 0.024211995f, 0.044437416f, 0.44765642f, -0.066894144f, + -0.03570513f, -0.19286998f, -0.16658501f, 0.22415465f, + -0.30361563f, 0.43627664f, 0.5593426f, -0.06765293f, + -0.047125947f, 0.022991676f, 0.015075948f, 0.29007944f, + -0.26076025f, 0.38632432f, 0.023924567f, -0.026022548f, + -0.2733225f, 0.084838726f, -0.03783559f, -0.0022348843f, + -0.18900734f, -0.047850315f, -0.24439423f, -0.117931865f, + -0.5667611f, 0.40825143f, 0.094415665f, 0.032550175f, + -0.03769112f, -0.027265364f, 0.13491207f, 0.009219045f, + -0.32581246f, 0.78253406f, 0.0072019175f, -0.44408596f, + 0.38582748f, 0.51509213f, -0.9955528f, 0.41150975f, + -0.26480502f, 0.5523108f, -0.016718084f, 0.083740905f, + -0.18946652f, -0.026730381f, 0.023628063f, 0.09836291f, + -0.0012447059f, -0.31103963f, 0.32614088f, -0.05751651f, + 0.0066124476f, -0.19457893f, -0.38222617f, 0.34347403f, + 0.34664524f, -0.12296304f, 0.048483275f, -0.004156736f, + 0.00048917654f, -0.022506725f, -0.48878378f, 0.026991459f, + 0.034606665f, -0.31782606f, 0.03027697f, -0.06325372f, + 0.55799377f, -0.17549506f, -0.03969402f, 0.0065896967f, + 0.0096964f, 0.013051222f, -0.0038383764f, 0.59535265f, + 0.19893545f, -0.7459611f, -0.010245937f, 0.011423197f, + 0.051792055f, -0.061423812f, 0.0657828f, 0.08963424f, + 0.4226404f, -0.26171407f, 0.13412096f, 0.015486171f, + -0.35170552f, -0.43007705f, 0.2183486f, -0.002179827f, + -0.41781113f, 0.035132926f, -0.039434556f, 0.0015006236f, + 0.2524316f, -0.24290913f, 1.1634433f, 0.18487506f, + 0.2571358f, -0.12236421f, -0.26183337f, 0.011371261f, + -0.11148632f, -0.21993929f, 0.08534355f, -0.11579422f, + -0.2520431f, 0.079916246f, 0.039592057f, 0.02231113f, + 0.03773247f, -0.3336001f, -0.5354118f, 0.18182154f, + 0.009884592f, -0.15324311f, 0.16957234f, -0.32140625f, + -0.37285075f, 0.11781533f, -0.025382157f, 0.023167634f, + -0.08292072f, 0.052592542f, -0.11559183f, 0.110062525f, + -0.04697676f, 0.31203339f, 0.12806831f, 0.17480068f, + -0.0017740313f, -0.37260225f, 0.24548182f, -0.0059376787f, + 0.0036247468f, -0.08650502f, -0.002404253f, -0.090129256f, + 0.20922919f, 0.7320347f, -0.047454674f, 0.055736233f, + 0.39612523f, -0.042146403f, -0.0002637387f, 0.09244144f, + 0.017734272f, -0.03823813f, 0.081503436f, 0.024781417f, + -0.26404244f, 0.1334824f, -0.1421645f, -0.043473173f, + 0.09377615f, -0.048060566f, 0.1707996f, 0.022374857f, + 0.16295244f, 0.28385273f, -0.66984105f, -0.05015574f, + 0.22389053f, -0.13734607f, -0.15747337f, -0.6637099f, + 0.7206216f, -3.138374f, 0.029891022f, 0.0752392f, + 1.3070042f, -0.020028612f, -0.08745897f, 0.27597058f, + -0.012678856f, 0.22749618f, -2.3780613f, -0.536868f, + 0.070358984f, -0.15508926f, 0.4973335f, 0.18607429f, + -0.23396483f, 0.100453384f, 0.067314886f, -0.22448477f, + 0.08626255f, 0.037529603f, -0.096314326f, -0.010581871f, + -0.04972954f, -0.03707146f, 0.16650747f, 0.47901756f, + -0.542862f, -1.236857f, -0.055962075f, -0.003888439f, + -0.024277158f, 0.19567178f, 0.21301255f, 0.16156055f, + 0.13667148f, -0.9053972f, 0.05600779f, -0.21580747f, + 1.0681137f, 0.006361232f, -0.2219184f, -0.8004356f, + -2.4513438f, -0.30358508f, 0.8267529f, 0.5003286f, + -0.663368f, -0.787549f, 0.106533356f, 0.14948037f, + 0.7995701f, 0.03615474f, -0.35960606f, -0.015281261f, + -0.36424363f, 1.5995886f, 1.3438933f, 1.400068f, + -0.3487258f, 0.048075765f, 0.015090559f, -0.5790207f, + 0.73556614f, 0.79415494f, 0.0073322887f, 0.046557408f, + -1.3916597f, -0.0077953376f, 0.07148394f, -0.011501959f, + 0.06101088f, -1.4388821f, -2.1196046f, 0.06352835f, + -0.043062612f, 0.13851614f, 0.98034036f, 0.12592493f, + 0.8088711f, -0.36068577f, -0.15351102f, -0.14356032f, + -0.085236035f, -0.3849479f, 0.34537077f, -0.0929807f, + -0.14225172f, 1.3732797f, 0.0055265515f, -0.52197886f, + 0.19934891f, -0.8380097f, -0.450629f, -0.013441974f, + 0.18577771f, 0.07158137f, -0.14453445f, 0.09107841f, + -0.2583558f, -0.57765836f, 0.008265185f, 0.010930802f, + -0.7828551f, -0.0066148913f, 0.26187778f, -0.24912539f, + -1.4704354f, -0.18226704f, 0.7208842f, -0.114222415f, + 0.3909993f, -0.5449017f, 0.6549673f, 0.3539618f, + -0.12195909f, 0.07330595f, -0.67608404f, -0.16200049f, + 0.48640198f, -1.1142286f, -0.91614f, -0.5532902f, + -0.45218736f, 0.075442195f, -0.04321772f, -0.27054387f, + 0.6462776f, -1.6695153f, 0.15929388f, -0.100080855f, + -0.12010841f, 0.024381911f, 0.021408891f, -0.5675343f, + 0.019554513f, -1.0877758f, -1.6394866f, 0.17300533f, + -0.071373135f, -0.17877528f, 0.7200237f, 0.44418076f, + 0.6106202f, 0.20339262f, -0.08846367f, 0.4067122f, + -0.09128622f, 0.336954f, -0.23141332f, 0.08444276f, + 0.04369042f, 0.80040026f, 0.13132666f, 0.076031424f, + -0.058822785f, -0.011748329f, 0.24071199f, -0.04165669f, + -0.07103659f, -0.19796681f, -0.00912646f, -0.013013971f, + -0.14145403f, 3.472657f, -0.14159986f, 0.13971323f, + 1.7781036f, -0.066303276f, -0.05172241f, 0.17451182f, + -1.7127792f, -0.36262813f, 0.86617047f, -0.25103962f, + 0.38260418f, 0.035693936f, 0.6849227f, 0.028220315f, + -0.113287054f, -0.104008f, -0.19310202f, 0.3294345f, + 0.50546545f, -3.0319412f, -1.0215677f, -0.31584617f, + -0.42006326f, 0.29012358f, 0.088823766f, -0.6933782f, + 0.7000759f, 1.1243936f, 0.015427601f, 0.077351846f, + 1.1563785f, 0.051477455f, -0.097561434f, 0.25993517f, + -0.018249234f, 0.6094974f, -2.2257514f, 0.36699665f, + -0.03704152f, -0.2611046f, -0.33816817f, -0.5716546f, + 0.45085844f, 0.14176416f, -0.06302244f, 0.2939286f, + -0.011920825f, -0.015451084f, 0.006329529f, -0.17259376f, + 0.25296092f, -0.22052316f, -0.18100151f, -0.20531793f, + -0.4661353f, -1.5207559f, -0.13608164f, 0.076009735f, + 0.10766584f, -0.19856018f, -0.023311563f, 0.2055868f, + 0.41001981f, 1.9160402f, 0.1577737f, -0.27081254f, + -1.3003488f, 0.010100828f, 0.05088708f, 0.6013172f, + -2.5256317f, -0.027962795f, 0.10714269f, -0.40266645f, + -0.5396719f, -0.7119652f, 0.026352169f, 0.027178233f, + -0.9963539f, -0.09527765f, -0.27781507f, 0.0081354575f, + 0.09835296f, 0.6415964f, -2.2598293f, -0.81216925f, + 1.0699753f, -0.078823425f, 0.18826857f, -0.7117542f, + 0.6557605f, 0.24866953f, -0.040626995f, 0.029231759f, + -3.0776188f, 0.06599183f, 0.06818529f, -0.28233188f, + -0.01437949f, 3.118936f, -2.490698f, -0.2683305f, + 0.028490875f, -0.3606954f, -0.68084157f, -1.224983f, + -0.26643944f, -0.0014212747f, -0.48891452f, -0.13449098f, + -0.045035183f, 0.19612063f, -0.23376924f, 0.14774418f, + 0.02381023f, 1.481373f, -0.08303105f, -0.63720334f, + 0.025448054f, -0.8134629f, -0.6656834f, 0.067432046f, + -0.19730079f, -0.21566303f, -0.16997957f, 0.21131705f, + -0.3850567f, -3.442833f, -0.1544855f, -0.08608996f, + -1.3780968f, -0.06811533f, -0.06439128f, 0.032106824f, + -1.6697227f, 0.102882795f, 0.62736714f, -0.00060694345f, + 0.6178254f, -0.74741787f, 0.49361372f, -0.18661974f, + -0.7280215f, 0.074027225f, -0.34280598f, 0.12782158f, + 0.58391523f, 1.2265183f, -1.5358815f, 0.10781169f, + -0.12536457f, 0.094469f, 1.2717342f, -0.6029201f, + 0.7211618f, 1.2827342f, -0.2840544f, -0.08319884f, + 0.13626672f, -0.06552533f, 0.051130492f, 0.10825572f, + -0.067300856f, -0.31467018f, -2.0462968f, 0.093868814f, + 0.09774448f, 0.12099748f, -1.3477509f, -0.1641842f, + -1.1786668f, 0.02895135f, 0.3624354f, -0.23077281f, + 0.15096617f, -0.35827124f, -0.11426438f, 0.0008160445f, + -0.03674243f, 1.5341216f, -0.10921591f, 0.16292152f, + -0.30937624f, -0.39187402f, 0.07664255f, -0.05451978f, + -0.049754884f, 0.3123679f, 0.122134075f, 0.47517195f, + 0.28160754f, -2.4241798f, 0.16283186f, 0.24749781f, + 0.93546635f, 0.15905815f, -0.080132216f, 0.19870831f, + -1.7816308f, 0.062275752f, 0.2515954f, 0.24378203f, + 1.3708265f, 0.13342163f, 0.67319465f, -0.07494598f, + 0.51911443f, -0.027217144f, -0.36578706f, -0.3503582f, + 0.79649013f, -0.863577f, -0.29503977f, -0.24048707f, + 1.2632045f, 0.2949514f, -0.89925426f, -0.70016855f, + 0.6438547f, 1.0435234f, -0.03318465f, -0.18149798f, + 0.4500104f, -0.07732166f, 0.10550376f, -0.009010874f, + -0.05772338f, -0.24767299f, -1.708832f, 0.14646833f, + -0.024244582f, 0.33701798f, 0.3683226f, -0.012532506f, + -1.280528f, -0.14123878f, 0.17278609f, 0.010586052f, + -0.0064225425f, -0.015580575f, -0.020730855f, 0.044294875f, + -0.14307733f, -0.030278757f, 0.0106102405f, 0.19671111f, + -0.5090846f, -0.8823536f, 0.3809096f, -0.13821152f, + -0.13580023f, 0.054843273f, -0.07058955f, -0.4289064f, + 0.122114934f, 3.994804f, -0.1287395f, -0.066757105f, + 0.27761206f, 0.04545973f, 0.057591826f, 0.025989009f, + -1.2499288f, 0.3092441f, 0.12840557f, -0.23231143f, + 0.46293604f, -0.5574421f, -0.10426868f, 0.015318704f, + 0.3586066f, 0.049294103f, 0.16747698f, 0.08918863f, + -0.33297426f, 0.12540466f, 0.71974814f, -0.2767863f, + 0.5774481f, -0.33703074f, -1.7478395f, -0.70002365f, + 0.66684115f, -1.8991829f, -0.120267004f, -0.03203251f, + -1.5770898f, -0.02731893f, -0.12795281f, -0.043089993f, + 0.06693157f, -0.6044688f, -1.5287853f, 0.2854961f, + -0.0130404f, -0.20327944f, 0.31060484f, 0.09903505f, + 0.71644914f, 0.28224096f, 0.58636004f, 0.07666001f, + 0.022350924f, 0.18644091f, 0.30857235f, 0.03739508f, + -0.023293156f, 1.2021918f, -0.39784288f, 0.9492267f, + -0.4207769f, -0.085432634f, 0.38090068f, -0.023528604f, + 0.03339643f, 0.15943193f, 0.29549536f, -0.41054988f, + -0.70393777f, -0.9076402f, 0.09248379f, 0.20416202f, + -0.6273847f, 0.14556538f, -0.04301699f, 0.10562668f, + -0.8308185f, 0.2786767f, -0.14323515f, 0.21396069f, + 1.4221971f, -0.10348704f, -0.16741365f, 0.012232638f, + 0.9922194f, -0.13177288f, 0.0074368403f, -0.0843264f, + 0.17363591f, -0.7351738f, 2.4042604f, 0.26243794f, + -1.5133488f, -0.4319088f, 0.91841173f, -0.6934489f, + 0.6603527f, 1.7651863f, 0.2083864f, 0.1740634f, + 3.2529988f, 0.074305974f, -0.011098359f, -0.08558275f, + 0.011381227f, -0.42504674f, -0.40552473f, -0.28137693f, + -0.018733967f, -0.17007585f, -0.08708563f, 0.73898435f, + 0.75657946f, -0.22764799f, -0.44612792f, -0.013810128f, + -0.025151573f, 0.046898093f, -0.12127531f, -0.024467738f, + 0.037831374f, 0.40149042f, -0.041519415f, -0.51071954f, + -0.2131668f, 0.28569722f, 0.041257445f, 0.12810066f, + 0.13030936f, -0.17206761f, -0.20697242f, 0.03637584f, + -0.28287098f, -0.62302417f, -0.04811549f, -0.026914218f, + 0.43702564f, -0.24947797f, 0.07498906f, 0.01855732f, + -0.99441314f, 0.037472714f, 0.091808386f, 0.088816024f, + 1.6051543f, -0.18487455f, 0.17807771f, -0.027198223f, + -0.6081093f, 0.1280042f, 0.19758998f, 0.081751555f, + 0.29025862f, 1.3689679f, 2.2010455f, 0.50351876f, + -0.56805086f, 0.6868483f, 0.018484794f, -0.25166756f, + 0.5178451f, -0.8191264f, 0.21646371f, 0.07398129f, + 0.8233567f, -0.04700296f, 0.053926725f, 0.3241767f, + -0.011893485f, -0.12814745f, 0.9293794f, -0.35984835f, + -0.10048252f, -0.034821212f, -0.14927147f, -0.6913095f, + -0.060046103f, 0.009055992f, -0.05138817f, -0.009904832f, + 0.053329777f, -0.3484759f, -0.3637937f, -0.15216051f, + 0.12343143f, 0.4739836f, -0.45291483f, -0.25611585f, + 1.1645213f, 0.48181102f, -0.33135274f, 0.08962773f, + 0.058824982f, 0.09759314f, 0.1602447f, -0.048616447f, + 0.0026524456f, 0.026149524f, 0.08063145f, -0.5397718f, + 1.130619f, -0.062453184f, 0.03043503f, 0.6764219f, + 0.12996499f, 0.35598928f, 1.0214875f, -0.08286545f, + -0.32140902f, -0.64646894f, -0.9192166f, -0.19675389f, + -0.20816249f, 0.12094417f, 0.83038855f, 0.040472616f, + -1.1546422f, 0.33575502f, -0.123878516f, -0.9461496f, + 0.22840111f, 0.26599124f, -0.6454213f, -0.23141746f, + -0.43278772f, -0.06431176f, 0.02251353f, 0.016633404f, + 0.2696694f, 0.03171349f, -0.071024545f, -0.44721723f, + -0.0069136224f, 0.6095054f, 0.21640472f, 0.27504373f, + 0.050236173f, 0.34425974f, 0.040034823f, -0.7664536f, + -0.089224905f, -0.06260295f, 0.06915265f, 0.02611945f, + -0.062707976f, 0.25897172f, -0.5012089f, 0.08714761f, + -0.1249194f, -0.78140455f, 0.19862825f, 0.09921352f, + 0.60372525f, 0.19738483f, 0.3576384f, -0.066255264f, + -0.04942334f, -0.06758308f, -0.08433084f, 0.7480919f, + 0.16084835f, -0.30447128f, -0.029000735f, -0.39414275f, + -0.62667173f, 0.025857547f, -0.046513982f, -0.5294097f, + 0.003610732f, -0.6614713f, -0.45146546f, -0.01962424f, + 0.15305099f, 0.35707578f, 0.358832f, 0.15476747f, + -0.7855444f, -0.04834645f, -0.047482267f, -0.022191845f, + -0.21584919f, -0.026527166f, -0.18538806f, 0.65778667f, + 0.45915815f, 0.24068522f, 0.09735833f, 0.32144198f, + -0.5148212f, -0.20329265f, -0.21305743f, -0.038573135f, + -0.2580221f, -0.0053025046f, -0.05823244f, 0.33704412f, + 0.011559053f, -0.5552253f, -0.22294201f, -0.16735277f, + -0.019952001f, -0.11234408f, -0.35840952f, 0.5706929f, + -0.82963395f, 0.21267168f, 0.048299484f, 0.019513018f, + 0.006992919f, -0.15372565f, 0.7150243f, -0.057692815f, + 0.13161859f, 0.03880464f, -0.25607142f, 0.19635355f, + 0.1867153f, -0.56717294f, 0.16030815f, 0.04456527f, + 0.069668636f, 0.033446815f, 0.009491457f, -0.117378846f, + -0.714596f, -0.53603554f, 0.028626608f, -0.15134947f, + 0.4808012f, 0.040582456f, -0.05739852f, 0.49495506f, + 1.0677891f, 0.30102593f, 1.0579073f, 0.22917692f, + -0.22097889f, -0.6688818f, -0.5814805f, 0.28676182f, + 0.6093196f, 0.010710879f, -0.545087f, -0.053633295f, + -0.13076247f, -0.10739103f, -1.495819f, -0.2558163f, + 0.61814344f, -0.03212029f, 0.5525962f, 0.2502801f, + 0.047313236f, 0.85763067f, -0.26318002f, -0.014826797f, + 0.5206881f, -0.042022496f, -0.086525105f, 0.49980205f, + 0.0175797f, -0.24004382f, 0.33231485f, 0.5783012f, + 0.05795362f, 0.04891496f, -0.17090285f, -1.9655055f, + 0.31873953f, -0.16524148f, 0.21916507f, -0.21876226f, + -0.0649778f, 0.34528556f, 1.1894419f, 0.051362447f, + -0.15586834f, -0.21497062f, -0.248149f, 0.3645591f, + 0.44915935f, 0.33894384f, 0.21886584f, -0.20304506f, + -0.06388826f, 0.022984408f, -0.15796745f, 0.24145937f, + -0.23992106f, 0.9264137f, -0.057434045f, -0.43004736f, + 0.38602713f, 0.07975841f, 0.093768686f, -0.8370612f, + 0.8105638f, 0.07317635f, -0.08138709f, 0.15414299f, + -0.2937234f, -0.35726994f, 0.24778852f, -0.17320655f, + 0.067653924f, -0.054358087f, 0.5216462f, -0.16992176f, + -0.6153211f, -0.5790937f, -0.34225786f, 1.3431834f, + -0.8010804f, 0.714597f, -2.1890743f, 0.03144886f, + -1.017997f, -0.38656035f, 0.24507956f, 0.055609494f, + -0.30924934f, -0.022972396f, 0.0641576f, -0.41595793f, + 0.0069109923f, 0.03137881f, 0.3785164f, -0.3793897f, + -0.073783234f, 0.22386506f, -0.33861807f, 1.2755635f, + -0.05203881f, 0.00292523f, -0.33150455f, 0.25445488f, + 0.101446606f, -0.3099271f, -0.60294443f, -0.044041246f, + 0.16135181f, 0.115302764f, 0.54238844f, -0.13784114f, + 0.11232662f, 0.24142735f, -0.12416114f, 0.17266525f, + 0.09809393f, 0.08045278f, 0.15328987f, -0.4122191f, + 0.3243597f, 0.4475137f, 0.004723937f, -0.72768235f, + -0.81093585f, -0.12253731f, -0.0060676383f, 0.6262357f, + 0.74479216f, -0.4711722f, 0.20137186f, -0.079153165f, + 0.6570728f, -0.22056496f, 0.3396905f, -0.018599225f, + 0.78190595f, 0.10064968f, -1.6705557f, 0.16504082f, + 0.40398303f, 0.505614f, -0.3575167f, -0.92525154f, + 0.10675124f, 0.02618272f, 1.3302847f, 0.59947807f, + -0.42213485f, 0.20019583f, 0.12616533f, -0.0014319767f, + -0.5947862f, -0.04434022f, 0.029637037f, 0.39270127f, + -0.00943125f, 0.77107954f, -0.3828545f, 0.22018059f, + 0.021079589f, -0.11528159f, -0.25555158f, 2.3047516f, + 0.7826171f, -0.21800567f, 0.18347448f, -0.017834809f, + 0.032490347f, 0.27262333f, -1.126425f, 0.06802309f, + -0.11970925f, 0.029396703f, -0.3367476f, 0.1627649f, + 1.0937095f, -0.7450075f, -0.39045283f, -0.11401919f, + -0.14037424f, -0.033947017f, -0.049097773f, -0.29557478f, + -0.39212582f, -0.9606958f, -0.014074319f, -0.24461244f, + 0.06484733f, 0.05572704f, 0.083545126f, -0.517085f, + -0.030424515f, 0.06086714f, 0.42909238f, -0.28486294f, + -0.2975881f, 0.08447704f, -0.20894931f, 0.08260297f, + -0.5724502f, -0.05983229f, 0.0067295637f, 0.057789657f, + -0.4695003f, -1.0889722f, 0.6409395f, 0.33210832f, + 0.52977526f, -0.34765297f, 1.3751161f, 0.5304269f, + -0.28802553f, -0.021176409f, -0.05087054f, -0.02968076f, + -0.17886533f, 0.071068116f, 0.02944161f, 0.10188092f, + 0.013581133f, -0.32026446f, 0.7490296f, -0.1476071f, + 0.026090795f, -0.04170623f, 0.5944182f, -0.8648012f, + 0.13046114f, 0.22465907f, -0.06957326f, 0.10454233f, + -8.8325716e-05f, -0.087050594f, -0.2689922f, 0.045720737f, + 0.06624619f, 0.33366624f, 0.25228924f, -0.14127105f, + 0.09986888f, 0.881628f, -0.68165725f, 0.14215662f, + 0.05061155f, -0.09282207f, 0.036892693f, -0.08971465f, + 0.25297728f, 0.077463314f, -0.015990863f, -0.23746532f, + 0.7387261f, -0.0654029f, -0.0764068f, 0.45528674f, + 0.022185637f, 0.34872606f, 0.1992062f, 0.03139656f, + -0.08627633f, -0.30746934f, 0.23188739f, -0.076083176f, + 0.11922114f, -0.015520711f, 0.08186843f, 0.12280838f, + -0.221685f, 0.78979254f, 0.19180317f, -0.3878793f, + -0.07704138f, 0.15944974f, -1.6675009f, -0.17294239f, + -0.22661543f, 0.68069065f, 0.09777553f, 0.062820904f, + -0.72672385f, -0.014872338f, -6.6725675e-05f, -0.44410634f, + -0.0036810297f, -0.018590529f, 0.47077924f, -0.08547051f, + 0.019930542f, -0.47598898f, 0.28542617f, -0.09325481f, + 0.32685095f, -0.11756625f, 0.068550915f, -0.11365491f, + -0.025962286f, 0.10367459f, 0.3711595f, 0.0044185105f, + -0.0548189f, -0.76761967f, -0.4676612f, 0.12857161f, + 0.38059604f, -0.21738043f, 0.065190814f, -0.144567f, + -0.073746055f, 0.031750932f, -0.04905759f, -0.63222045f, + -0.11986384f, 0.42894027f, 0.027066799f, 0.25756273f, + -0.4937802f, 0.048938975f, 0.031800315f, -0.32098404f, + 1.1716292f, 0.11770725f, -0.19811691f, 0.051665097f, + 0.025545869f, 0.21628201f, -0.07571791f, -0.06289385f, + -0.3291766f, -0.03355177f, -0.16366003f, -0.081356145f, + 0.8879404f, -0.37343362f, 0.46355867f, 0.107743904f, + 0.037501194f, -1.1912102f, 0.2332135f, 0.70231396f, + -0.46097973f, -0.30182952f, -0.20570482f, -0.12750234f, + 0.22276825f, 0.053669676f, 0.0004994437f, 0.15191904f, + 0.010077989f, -0.32419097f, -0.792856f, 0.099561684f, + 0.0022321194f, 0.022852095f, 0.4623885f, 0.26727253f, + -0.08839095f, 0.16984706f, -0.110309534f, -0.060638286f, + -0.042385105f, -0.105828844f, 0.11588386f, -0.04027586f, + 0.011472554f, 0.40586078f, -0.08278271f, -0.43154272f, + 0.06152908f, 0.31474978f, -0.194806f, 0.096471496f, + 0.08374899f, -0.03514442f, 0.030900225f, 0.10930164f, + -0.05305447f, -0.113288336f, -0.015190452f, 0.12251784f, + -0.56663156f, 0.00024986628f, -0.04280557f, -0.0075804726f, + 0.45411777f, 0.07561088f, 0.022697812f, 0.019937426f, + -0.39276162f, -0.0042814855f, 0.1799343f, 0.07790294f, + 0.24359515f, 0.011988848f, 0.033032067f, -0.025880713f, + 0.32740477f, 0.19800694f, 0.9930736f, 0.0046498734f, + -0.08144545f, 0.45000252f, -0.1752612f, 0.0777825f, + 0.039848667f, 0.07496611f, 0.1366195f, 0.039336402f, + -0.7200011f, 0.014071931f, 0.02805536f, -0.08593571f, + 0.025442956f, 0.21195155f, 0.2943014f, -0.14145945f, + 0.031902034f, 0.06701578f, -0.15541093f, 0.14585553f, + -0.19844595f, -0.0762827f, -0.0778392f, 0.04239378f, + 0.00017331794f, 0.046810336f, -0.1185163f, 0.09027929f, + 0.0030923602f, -0.5675875f, 0.038356505f, -0.021303797f, + -0.1548286f, 0.10159205f, -0.057022955f, 0.009797465f, + 0.01016902f, -0.023618797f, -0.009686916f, -0.091957025f, + 0.047595818f, -0.33859485f, -0.050124638f, 0.39574558f, + 0.048870936f, -0.07482969f, -0.01571247f, -0.038816098f, + 0.871693f, 0.05055662f, -0.3646398f, 0.008136156f, + -0.21874408f, 0.0066301906f, 0.2999392f, 0.0016149172f, + -0.032396562f, -0.0005066284f, -0.035004962f, 0.042746805f, + 0.08932257f, 0.40787223f, 0.8873402f, -0.19866912f, + -0.49907506f, 0.049367882f, 0.1965531f, -0.01731936f, + 0.027497062f, 0.42140207f, 0.08305125f, -0.03750886f, + 0.95163184f, -0.027753478f, -0.028266642f, 0.03958727f, + -0.026754456f, 0.14050893f, -0.677613f, -0.010801574f, + 0.0045798365f, 0.31126082f, 0.8451791f, -0.2659928f, + 0.18991865f, 0.028349819f, 0.048369203f, 0.08037202f, + 0.05341429f, -0.038948745f, -0.10833714f, -0.09295168f, + 0.00025317795f, 0.6503145f, -0.03770296f, -0.01616833f, + 0.16925177f, -0.20777455f, 0.24053578f, -0.0362037f, + -0.049948946f, 0.05919972f, 0.051102493f, -0.2627351f, + 0.21771146f, 0.9638525f, 0.08187135f, 0.10474722f, + 0.01558033f, 0.10364547f, -0.060544737f, -0.1457784f, + -0.26914272f, -0.013310844f, 0.35311794f, -0.13178441f, + -0.20966193f, -0.062155448f, -0.31310937f, -0.20253913f, + -0.28265554f, -0.037305705f, 1.5579423f, 0.023288349f, + 0.27960593f, 0.5111091f, -0.06132355f, -0.005935514f, + 0.076548636f, -0.045001615f, -0.15424874f, 0.07019104f, + -0.46766964f, -0.4779722f, -0.22410434f, 0.011469652f, + -0.31428808f, -0.009578606f, -0.022401297f, -0.3735517f, + 0.013041666f, -0.15561701f, 0.94245774f, 0.066726334f, + -0.022774f, -0.05040531f, -0.120768756f, -0.20952855f, + 0.12164926f, 0.024567109f, 0.07349459f, -0.15985866f, + -0.041918058f, 0.026721723f, 0.46146005f, 0.020871911f, + 0.029864311f, 0.22259721f, -0.0092858365f, -0.08266159f, + -0.5489859f, -0.47581235f, -0.3610905f, 0.044857003f, + 0.03903643f, -0.02977169f, -0.023170874f, 0.024986472f, + -0.007826428f, -0.13744602f, -0.030091923f, -0.24476108f, + -0.3117934f, -0.042328887f, 0.05813109f, 0.13658789f, + -0.36246407f, -0.19608098f, -0.21679878f, 0.12634514f, + 0.4615471f, 0.04079364f, 0.8355763f, -0.3161325f, + -0.11086287f, 0.04461166f, -0.43827865f, -0.044105787f, + 0.13911374f, -0.9586746f, -0.12010111f, 0.12598604f, + 0.25528985f, 0.44148815f, 0.2532372f, 0.037707835f, + -0.22623856f, 0.21324797f, -0.07089794f, 0.06865923f, + 0.2420206f, -0.013854856f, -0.028646406f, -0.06626485f, + 0.0064619686f, -0.20817609f, 0.7695574f, 0.21198754f, + -0.04001877f, -0.056933105f, -0.52227134f, 0.32706055f, + -0.15118939f, 0.042199817f, 0.07733195f, -0.09125852f, + -0.05524409f, -0.07953472f, -0.01265925f, -0.07017295f, + -0.016310899f, -0.4659805f, 0.0049836733f, -0.008441579f, + 0.20453092f, 0.30072087f, 0.10932274f, -0.020565579f, + -0.017270429f, 0.049762093f, 0.070773534f, -0.013842427f, + -0.2424094f, -0.21660446f, 0.017875466f, 0.1955454f, + -0.14835694f, 0.01955756f, 0.021649325f, 0.11581203f, + 0.3504403f, 0.07016408f, -0.11817077f, 0.050413284f, + 0.04251333f, 0.14099135f, 0.04939574f, -0.011439442f, + 0.1947704f, 0.0016300456f, 0.042983986f, -0.030659486f, + 0.575975f, -0.3114599f, -0.42801318f, -0.029511334f, + 0.37424067f, -0.6117787f, -0.7511595f, -0.2654566f, + 0.6528452f, -0.43783733f, -0.052537177f, -0.07251026f, + 0.71581745f, 0.039542492f, 0.028468277f, -0.0013578939f, + 0.0026192132f, 0.52800673f, -0.7198216f, -0.1673782f, + 0.0065197228f, -0.12067525f, 0.08465208f, -0.7365325f, + -0.81870526f, -0.047346335f, -0.2751097f, 0.0034850854f, + -0.01906466f, 0.10501717f, -0.16600505f, 0.17017035f, + -0.011267985f, 0.13460365f, 0.022217432f, -0.02590444f, + 0.21303077f, 0.09286849f, 0.5976808f, 0.043297f, + 0.03929925f, -0.09748425f, -0.1769791f, 0.6810458f, + -0.3811842f, 0.9313576f, -0.09311178f, 0.31261903f, + 0.78327787f, -0.09036632f, 0.024962839f, -0.10817148f, + -0.40112275f, -0.28589854f, 0.054542962f, 0.08773311f, + -0.30867502f, 0.45740384f, 0.052251313f, 0.08925956f, + 0.08772373f, 0.029512813f, 1.195059f, -0.012923255f, + 0.43220267f, 0.3147976f, 0.6020298f, 0.18100457f, + 0.31244612f, 0.188036f, 0.4152837f, 0.35523862f, + -0.87271065f, -0.010777392f, 0.08881842f, -0.036664523f, + -0.080190755f, -0.014040985f, -0.020461792f, -0.13827746f, + -0.015935756f, -0.09950514f, -0.020858845f, 0.004920855f, + 0.011477501f, 0.04906598f, 0.46790114f, 0.58110714f, + 0.33177146f, 0.018152865f, -0.00951082f, 0.057226717f, + 0.066246055f, -0.047815528f, -0.9541803f, -0.09264122f, + -0.021261549f, 0.48496038f, -0.08538269f, 0.13958946f, + -0.32246417f, -0.69906473f, 0.46623996f, -0.074570954f, + -0.032730646f, 0.08616909f, 0.038514446f, -0.18126495f, + 0.35198662f, -0.25946158f, 0.06983888f, -0.26328114f, + -0.20488398f, 0.090558656f, -0.05637775f, -0.20968424f, + -0.23382376f, 0.36864328f, 0.08311527f, -0.072663106f, + 0.26031157f, -0.3503402f, 0.0045389193f, -0.06563228f, + 0.4851282f, -0.042695247f, -0.4900866f, 0.011501379f, + 0.562998f, 0.2481706f, -0.3950703f, -0.06884072f, + 0.0823812f, -0.21429951f, 1.1193359f, -0.085300505f, + -0.049596835f, -0.2749794f, -0.069914974f, -0.029349169f, + -0.034084298f, -0.037534066f, -0.015921267f, 0.05027904f, + -0.037166644f, 0.18331198f, 0.24933574f, -0.051819608f, + 0.022866981f, 0.033182368f, -0.22860463f, 0.0800943f, + 0.03176589f, -0.0743759f, 0.07215051f, 0.018190738f, + 0.101414554f, 0.029839646f, -0.0038027568f, -0.04536245f, + 0.035849728f, -0.7128887f, -0.05545402f, 0.009510489f, + 0.10543335f, 0.47377396f, -0.057965666f, 0.033583213f, + -0.020518221f, -0.013835225f, -0.053670328f, -0.004646709f, + 0.1457204f, -0.14785545f, 0.0145564675f, -0.020159261f, + 0.02567913f, 0.06996309f, 0.000113487105f, 0.0049398798f, + 0.61946684f, -0.022109661f, -0.083728686f, -0.05257397f, + -0.08649003f, 0.049364086f, 0.004363764f, 0.06365912f, + -0.13148701f, 0.005670676f, 0.062098484f, -0.04213581f, + -0.0778877f, 0.25250268f, 0.03605116f, 0.085881256f, + -0.53607863f, -0.019799303f, -0.6345343f, 0.09572075f, + 0.34656703f, 0.5723619f, 0.0886463f, 0.07926537f, + 0.4276744f, 0.020085964f, 0.035311732f, -0.042219937f, + 0.041789412f, -0.51259524f, 0.37091804f, 0.08479286f, + -0.010747486f, 0.14164951f, 0.14597265f, -0.4060792f, + 0.81134194f, -0.000275421f, 0.1722264f, 0.020304106f, + -0.05114458f, -0.03802352f, 0.21508722f, -0.017121863f, + -0.009662913f, 0.70292586f, -0.10711065f, 0.049616486f, + 0.23800449f, -0.052506674f, -0.060837578f, -0.04198064f, + 0.010142814f, 0.03373766f, 0.11423663f, -0.007292978f, + 0.0300077f, 0.028677864f, 0.0032152743f, 0.03568886f, + -0.45962086f, -0.03217226f, 0.026694749f, 0.3349748f, + -0.95961785f, -0.0012292906f, 0.13929568f, -0.028391844f, + -0.2391165f, -0.17993444f, 0.10227986f, -0.043884754f, + 0.2257843f, -0.0010832004f, 0.14452751f, 0.027362512f, + -0.34933203f, 0.057860978f, -0.65615594f, -0.25600934f, + 0.12278566f, 0.038426895f, -0.13145491f, 0.19160621f, + -0.11179396f, -0.13360748f, 0.011848545f, -0.016339805f, + -1.4244974f, 0.021068389f, 0.005341398f, 0.06702198f, + -0.0037066936f, -0.039333005f, -0.19027004f, 0.010179922f, + -0.0028981937f, 0.07685986f, -0.11178591f, -0.009574676f, + -0.2429369f, 0.08859648f, -0.069659896f, 0.032874f, + -0.050171494f, 0.0021067262f, -0.20527768f, 0.038712397f, + -0.0048306026f, -0.13994616f, 0.08846664f, -0.02875715f, + -0.07423745f, -0.48714954f, -0.084742054f, 0.04000459f, + 0.027164286f, -0.05524626f, -0.010248742f, 0.08500068f, + 0.10514755f, -0.79183495f, -0.0084920535f, -0.027611095f, + 0.1363658f, -0.03296017f, -0.016201565f, -0.044009157f, + 0.21094036f, -0.15509428f, -0.007822779f, 0.0073626232f, + 0.25479916f, 0.08596463f, -0.0957727f, -0.02049587f, + -0.43579677f, -0.0005007978f, 0.003548094f, 0.01382899f, + -0.01914757f, 0.1895343f, 0.24262342f, 0.17168543f, + 0.009847808f, -0.5261314f, 0.3794997f, 0.5145625f, + -0.06116573f, -0.5698193f, 0.14867938f, 0.13423395f, + 0.61137944f, -0.02967468f, 0.017687893f, -0.41631263f, + 0.0036969197f, -0.520653f, -0.28780672f, -0.1984357f, + -0.009695293f, 0.55061275f, 0.40988764f, 0.54744685f, + -0.11738721f, -0.02157182f, 0.08566557f, 0.10414729f, + 0.025057223f, -0.06437783f, -0.412097f, -0.0042307065f, + 0.09893954f, 0.2875615f, -0.03762128f, 0.15852936f, + -0.1905499f, 0.25901344f, -0.2712739f, 0.03601561f, + 0.004387972f, 0.032269176f, 0.09028176f, -0.24344392f, + 0.578315f, 0.5995628f, 0.01948521f, -0.06656699f, + -0.44860473f, -0.030275544f, 0.0028631205f, 0.12409984f, + -0.30653486f, -0.028968133f, 0.06414857f, -0.053680833f, + 0.27649155f, -0.32420692f, -0.34588304f, -0.12012893f, + 0.6642773f, -0.0021417525f, 0.21634579f, 0.06150053f, + -0.35427606f, 0.36812726f, -0.20247942f, -0.41530645f, + 0.3420178f, -0.4176834f, 0.8878698f, -0.5970141f, + 0.45512876f, 1.4492253f, 0.1722368f, -0.049125254f, + 1.0650928f, 0.08097685f, -0.026237335f, -0.4207098f, + 0.005027489f, -0.04193478f, -0.043561045f, -0.012743689f, + 0.019975206f, -0.16044186f, -0.4483372f, -2.28855f, + 1.2129511f, 0.08362525f, -0.021391185f, 0.014288105f, + -0.086535186f, 0.10276763f, -0.0326646f, 0.033307243f, + -0.12122989f, 0.1601969f, 0.3750691f, -0.25423017f, + -0.5497675f, 0.5791837f, 0.08404447f, -0.06366751f, + 0.014551356f, -0.027809473f, 0.010874697f, 1.0109668f, + 0.1564346f, -0.45842546f, 0.028419739f, 0.44784868f, + -0.31267413f, 0.0060340995f, -0.05775016f, -0.17912991f, + -0.17069522f, -0.49763724f, -0.6009535f, -0.04213809f, + -0.5667009f, 0.78173965f, 0.63236094f, -0.047163267f, + -1.3790908f, -0.030614113f, 0.09831555f, -0.016570905f, + -0.15039837f, -0.56222135f, 0.1209177f, 0.0040850574f, + 0.643309f, 0.37430063f, -0.8213815f, -0.1254193f, + 0.28455067f, -0.87394685f, -0.11946831f, -0.0205662f, + -1.1427615f, -0.024777368f, -0.03410667f, 0.17991698f, + -0.018672744f, 1.0937966f, -0.23827723f, 0.12444517f, + -0.0017131112f, -0.17560297f, -0.25089082f, 0.09696484f, + -1.2969805f, 0.018859835f, -0.03143368f, -0.118405364f, + 0.034291662f, -0.036787283f, 0.24460082f, -0.12537868f, + -0.042896256f, 0.18362634f, 0.0306683f, 0.2335185f, + -0.5465708f, 0.05745756f, -0.4459384f, -0.061183605f, + -0.034782838f, 0.055547994f, -0.036664758f, -0.1426998f, + -0.85535485f, -0.042115655f, 0.013754716f, 0.16788097f, + 1.0865614f, 0.046767868f, -0.015336946f, -0.14634065f, + 0.17659083f, 0.09522337f, -0.07126352f, 0.034097165f, + -0.83545536f, 0.042223338f, -0.27888677f, -0.056111097f, + 0.72079843f, -0.0026155086f, -0.36980224f, -0.022680655f, + -0.23543695f, 0.60747737f, 0.09853932f, 0.5169744f, + -0.20616166f, 0.3630501f, 0.4437663f, -0.18226935f, + 0.48641518f, 0.0735053f, -0.053551715f, 0.015459311f, + -0.7235898f, -0.0578264f, 0.023913f, 0.37927547f, + 0.047405608f, 0.5324787f, -0.62654907f, 0.028373837f, + -0.038460612f, -0.3026755f, -0.4027482f, -0.23406893f, + -0.33507702f, -0.20954898f, 0.15652028f, -0.010712538f, + 0.01711212f, -0.0034597977f, 0.40976873f, 0.007278071f, + 0.045177642f, 0.14301045f, -0.04012602f, -0.05232543f, + -0.8025117f, 0.02132764f, 0.08941675f, 0.05352809f, + -0.017599287f, 0.004846159f, 0.03168245f, 0.019768503f, + -0.24690223f, -0.9910201f, -0.081315175f, 0.43069622f, + 0.13105994f, 0.02795268f, 0.11568813f, -0.05840702f, + -1.028616f, 0.12262573f, -0.7954706f, -0.065387f, + 0.24543488f, 0.4708144f, 0.16503695f, -0.003493587f, + 0.04624817f, 0.033537313f, -0.13927694f, -0.010720684f, + -0.056295592f, -0.09152959f, 0.5566358f, 0.38096347f, + -0.33571973f, 0.5519083f, -0.31118378f, -0.013910142f, + 0.31484014f, -0.3146499f, 0.07225512f, 0.09995701f, + -0.23302361f, -0.020723084f, 0.00447599f, 0.35873586f, + 0.008779534f, -0.21167934f, -0.46931377f, -0.0015569436f, + 0.0069306614f, 0.13568762f, 0.6329485f, 0.47609016f, + -1.017479f, 0.08514554f, -0.054525312f, -0.015685027f, + -0.02551825f, -0.09945909f, 0.012709011f, -0.014438304f, + 0.014892543f, 0.6138525f, 0.24285355f, 0.324777f, + 0.2631906f, -0.046061434f, 0.5822417f, -0.02044724f, + 0.04120801f, 0.029072214f, 0.009368578f, -1.3319585f, + 0.82650673f, 0.75060326f, 0.057633195f, -0.26075315f, + -0.25324252f, -0.008837681f, 0.021120483f, -0.08743953f, + -0.21820296f, 0.28588092f, -0.07246965f, 0.05744877f, + 0.49222636f, -0.15256125f, -0.27819487f, 0.08569978f, + 0.5888137f, 0.004761576f, -0.13969503f, -0.04535663f, + 1.1006471f, 0.14696535f, -0.7222154f, -0.24816453f, + -0.25851348f, -0.19520083f, 0.59072864f, 0.04043634f, + 0.22155058f, -0.18216798f, 0.047094192f, -0.09079342f, + -0.15362072f, 0.045292247f, 0.013311644f, -0.22785743f, + 0.0048120604f, -0.6702232f, 0.27164027f, -0.1300511f, + 0.0075031165f, 0.2357332f, 0.2618415f, -0.2510505f, + 1.2682629f, -0.021749303f, -0.13178375f, 0.061893355f, + -0.04040402f, 0.07121228f, -0.20826876f, 0.13440458f, + -0.021375604f, -0.6405225f, 0.0291113f, -0.28026247f, + 0.64686376f, 0.6986859f, 0.21298127f, -0.053625584f, + -0.035023686f, -0.049800046f, -0.017050091f, -0.13471982f, + -0.26632822f, -0.63169664f, -0.023212554f, -0.18290624f, + -0.87847924f, -0.05548868f, -0.03842725f, 0.12939766f, + -0.53649724f, -0.0198538f, 0.016247164f, -0.013685116f, + 0.4078656f, -0.061889652f, -0.1661327f, 0.04119042f, + -0.48725393f, -0.030756727f, -0.0393449f, 0.072909534f, + 0.31524822f, -0.7435991f, 0.07250814f, -0.36367157f, + -0.13777909f, -0.50330985f, -0.36533332f, -0.22574647f, + 0.33942258f, -0.1205188f, -0.122316636f, -0.1542835f, + 1.2764274f, 0.009208026f, -0.012883828f, -0.31381887f, + -0.0005838401f, -0.5005434f, -0.034416754f, 0.011208452f, + 0.033190683f, 0.64193505f, -0.06387107f, -0.5451846f, + 0.69400233f, 0.049208295f, -0.10842329f, 0.049047656f, + 0.047148947f, -0.01606147f, -0.23653583f, -0.042192724f, + 0.002961032f, -0.33935216f, 0.15133108f, -0.2676888f, + 0.5528071f, 0.55782247f, -0.58090425f, 0.005583649f, + -0.038588822f, -0.016774394f, -0.11061423f, -0.31087685f, + 0.093570895f, 0.9662744f, -0.0011636106f, -0.32283235f, + -0.33830914f, 0.043657377f, -0.08842878f, 0.25152713f, + -0.3390634f, -0.013931634f, 0.017108178f, 0.10159245f, + -0.52931947f, -0.28755113f, -0.35465404f, 0.07202651f, + -0.010871618f, -0.04374995f, -0.49648622f, -0.009184744f, + 0.59283644f, 0.9503989f, -0.70526075f, -0.21888113f, + 0.19994907f, -0.22587712f, -0.27021778f, -0.30130005f, + 0.44768167f, 0.4252455f, -0.20019029f, 0.11665344f, + -1.5746366f, -0.052289493f, -0.010745986f, -0.0034409862f, + 0.012636438f, 0.55377954f, 0.03912772f, -0.032566406f, + -0.0007150571f, -0.076324955f, -0.058061037f, 0.7175767f, + 0.029997677f, -0.020369094f, -0.023034604f, -0.08009664f, + 0.0373871f, 0.027182478f, 0.42394277f, 0.053810295f, + 0.043056875f, -0.7842552f, 0.25498968f, -0.058218997f, + -0.3043738f, -0.063931525f, 0.4486553f, 0.16389361f, + 0.10456862f, -0.022132555f, 0.027993731f, 1.6262962f, + -0.45953575f, -0.1466535f, -0.041071527f, -0.16899912f, + 0.31199768f, -0.027238147f, 0.031063844f, -0.20033169f, + -0.34962478f, -0.5633951f, -0.29469877f, -0.014739486f, + -0.045203693f, -0.021671806f, 0.6919137f, -0.22483699f, + -0.40708676f, 0.054062307f, -0.05197003f, -0.025337625f, + -0.73292476f, -0.24933857f, 0.82847023f, 0.25491473f, + -0.103149645f, 0.3296997f, -0.57859015f, -0.41116172f, + 0.38764971f, 0.13762185f, 0.03478033f, -0.046209205f, + 0.73506415f, 0.01631328f, -0.002025712f, 0.07973871f, + -0.01579648f, -0.14011623f, 0.23126943f, 0.21014656f, + -0.016556315f, -0.53184044f, -0.19866489f, 0.3992862f, + -0.5639805f, 0.040748715f, 0.12185311f, -0.028548738f, + -0.004940064f, 0.010781208f, -0.15731747f, -0.051332895f, + -0.00518912f, 0.20104253f, -0.1829066f, 0.16936184f, + -1.171597f, -0.65006244f, -0.48726544f, -0.04810957f, + -0.033585478f, 0.029386131f, 0.0049733287f, 0.037679423f, + 0.39788154f, 0.31621927f, 0.043903824f, 0.071929984f, + 0.5217289f, 0.015064338f, 0.015279443f, 0.13921888f, + -0.02883947f, 0.71855783f, -0.2109562f, 0.010081428f, + 0.07372295f, 0.07552343f, 0.05230777f, -0.082722954f, + 0.3761182f, 0.015632277f, 0.07442989f, -0.027991854f, + -0.3138945f, -0.3929018f, -0.07415922f, 0.13380954f, + -0.0078057814f, 0.019742513f, 0.016172424f, 0.017375441f, + -0.052661207f, -0.4781233f, -0.054727115f, -0.02118209f, + -0.229847f, -0.0039229733f, 0.0038308224f, -0.011887334f, + -0.0035713979f, 0.22918047f, 0.0775326f, -0.048812997f, + -0.0002771447f, 0.027191475f, 0.052423544f, 0.044309687f, + -0.011567655f, 0.04573382f, -0.0006798016f, -0.0062655336f, + -0.0026455366f, 0.029365595f, -0.031987756f, -0.025443032f, + 0.008478328f, -0.066848956f, -0.014157594f, -0.044244073f, + 0.05221468f, -0.15761097f, 0.020356005f, 0.0061391434f, + 0.014106313f, -0.014540627f, 0.0037104625f, -0.017201824f, + 0.0011053516f, -0.14445814f, 0.0023510815f, 0.00787147f, + 0.29393092f, 0.032393318f, -0.0032046593f, -0.007847573f, + -0.23467864f, 0.012481185f, 0.010948113f, -0.03298336f, + -0.08948784f, 0.007594894f, 0.026183078f, 0.010640864f, + -0.0049760737f, -0.0031692777f, 0.02226733f, 0.007591629f, + 0.09223627f, 0.19171855f, 0.23845881f, 0.078096315f, + 0.0803689f, -0.0066049527f, -0.05647101f, -0.047144923f, + 0.008050752f, 0.40838066f, 0.021131983f, -0.0056757247f, + 0.2058494f, 0.0027337354f, -0.018146334f, -0.010976582f, + -3.3641663e-05f, -0.28797475f, -0.17023762f, 0.08223661f, + 0.014548555f, -0.07619067f, 0.031254116f, -0.042499606f, + -0.0410853f, -0.046029616f, 0.009751654f, 0.012806218f, + 0.011698864f, -0.011414234f, 0.07011464f, 0.0030709608f, + -0.0092857275f, 0.09550094f, 0.0034886636f, 0.07658829f, + 0.15900756f, 0.047673162f, -0.0750839f, -0.021272903f, + -0.020894287f, 0.01958254f, -0.02827355f, 0.02208786f, + 0.026711171f, -0.28134233f, 0.001291069f, -0.009675154f, + -0.29068983f, -0.00798855f, 0.006092804f, -0.038108557f, + -0.091256246f, 0.019281834f, -0.29095393f, 0.026257845f, + 0.1309394f, -0.010564512f, 0.01122478f, 0.018628186f, + -0.0030694103f, -0.011639599f, -0.026464157f, -0.006576357f, + -0.0137291355f, -0.3282288f, -0.31412655f, 0.021462375f, + 0.07361313f, -0.011061627f, -0.04343106f, 0.004366071f, + 0.04880275f, -0.19794904f, 0.008122329f, 0.015943844f, + 0.052147835f, 1.397853e-05f, 0.018740727f, 0.004774532f, + 0.0020803867f, 0.038010113f, 0.011765175f, -0.00074394944f, + -0.004462361f, 0.009734726f, -0.04006569f, 0.034498766f, + 0.08515529f, -0.004778649f, 5.659808e-07f, -0.009094901f, + 0.0025187423f, -0.0027704558f, 0.011113446f, 0.017968861f, + 0.0052414043f, 0.0351474f, -0.008167569f, -0.003334091f, + 0.013070372f, 0.038207587f, 0.025277864f, 0.017965896f, + 0.0063548395f, -0.009195849f, 0.013117058f, -0.008964758f, + -0.0050932416f, 0.55528945f, -0.0044487696f, -0.0010013592f, + 0.20431626f, -0.011959204f, 0.002481012f, 0.015911352f, + -0.20152493f, 0.009970937f, -0.04473091f, -0.007384808f, + 0.036247272f, -0.007880976f, -0.19301462f, 0.006047891f, + 0.024284927f, 0.009477591f, -0.063653596f, 0.0006182951f, + -0.026845317f, 0.016548611f, -0.101348214f, -0.048169345f, + 0.015660312f, 0.031950053f, -0.05867493f, 0.009937294f, + 0.05164086f, 0.1988346f, 0.070667565f, -0.016466783f, + 0.5142037f, 0.015506373f, 0.002062815f, -0.0055541117f, + -0.0024006916f, -0.14113165f, -0.16147952f, 0.032159813f, + 0.0030151126f, 0.025911462f, 0.029074294f, -0.01653342f, + 0.1755527f, -0.036357738f, -0.014033097f, 0.035746846f, + 0.0029733854f, -0.016317012f, 0.01112932f, 0.0031189811f, + -0.021564832f, -0.044499937f, 0.005005789f, 0.11142677f, + 0.043077905f, -0.18040922f, 0.07165663f, -0.023367831f, + -0.027968097f, 0.008608303f, -0.0071139387f, 0.017615711f, + 0.0026985256f, 0.05792996f, 0.0112460125f, -0.0021565093f, + -0.25188747f, -0.015041715f, 0.0045530135f, -0.022716084f, + -0.20556125f, -0.025442574f, 0.018738063f, -0.016900785f, + -0.006068103f, 0.27570358f, -0.042092964f, -0.02577058f, + 0.0030602594f, -0.013339391f, 0.0013522366f, 0.021537406f, + -0.034035444f, -0.003193429f, -0.11484706f, -0.036917094f, + -0.082767345f, -0.06713119f, 0.09249502f, 0.11092656f, + 0.13265409f, -0.011778177f, -0.053474896f, 0.04773392f, + -0.7436733f, -0.011030959f, 0.0025669588f, 0.03686601f, + 0.008572666f, 0.37047702f, -0.07090887f, -0.070549674f, + -0.031963717f, -0.033052254f, -0.007627265f, 0.072491236f, + -0.1277905f, 0.039086353f, 0.04481494f, -0.061706945f, + -0.015030148f, -0.024301423f, -0.078540646f, 0.0069334363f, + 0.029021041f, 0.20176485f, -0.015211222f, -0.14521697f, + -0.05711621f, 0.022002827f, -0.08114605f, 0.02858364f, + 0.035283055f, -0.028423185f, 0.023677899f, 0.030181028f, + 0.036563523f, -0.63772595f, -0.021246273f, 0.028351536f, + -0.30178908f, -0.008489201f, -0.00720574f, 0.08880132f, + -0.12652794f, 0.020220162f, -0.06382559f, 0.014522165f, + -0.021124972f, -0.0022601688f, 0.014533422f, 0.012019225f, + 0.019383505f, 0.03329861f, 0.057719886f, -0.027655464f, + -0.036482707f, -0.09650988f, -0.22755843f, -0.103737235f, + -0.1061986f, 0.055280935f, 0.11512776f, -0.024457429f, + -0.019746944f, 0.0768614f, -0.0035145748f, -0.03087659f, + -0.017005183f, 0.006165983f, -0.005233692f, 0.00896437f, + -0.005052489f, -0.050315905f, -0.09293298f, 0.003728282f, + 0.024696782f, 0.0045733238f, -0.026022436f, 0.0006269679f, + -0.1816113f, 0.027006544f, -0.03422424f, 0.037619673f, + -0.0013818704f, 0.027788023f, 0.025225077f, 0.002407957f, + -0.013550099f, 0.010801919f, -0.014714544f, -0.00040215856f, + 0.03926722f, 0.08828439f, 0.008558555f, -0.009270109f, + -0.004385327f, 0.010233158f, -0.019036032f, -0.030206276f, + -0.033121765f, -0.13951068f, 0.013713388f, -0.013071642f, + 0.35433635f, 0.013762486f, -0.010873466f, -0.0213374f, + 0.005254113f, -0.005535398f, -0.012361244f, 0.013643458f, + 0.091230646f, 0.00091912574f, 0.034441207f, 0.00010668336f, + 0.048458822f, -0.03128664f, 0.01909649f, 0.010139524f, + -0.015756112f, 0.043172717f, -0.087600514f, -0.006707771f, + 0.0788697f, -0.023733482f, -0.07106929f, -0.09264153f, + 0.009167255f, 0.09036573f, 0.0326717f, -0.0015202122f, + -0.08533217f, 0.0073640617f, -0.004058215f, -0.0011605297f, + 0.01386132f, -0.06359304f, 0.056008916f, -0.03057141f, + -0.0023246289f, -0.0074864766f, -0.04017876f, -0.0038305363f, + -0.33230972f, -0.008375357f, 0.0024231453f, 0.0020027861f, + -0.023743609f, 0.003059942f, 0.022246484f, 0.03625221f, + -0.0015598051f, 0.015130484f, -0.0056256033f, -0.050133888f, + 0.014826869f, 0.09293818f, 0.009386748f, -0.01082221f, + 0.006315008f, -0.005312084f, -0.00029892215f, -0.00229708f, + -0.030131938f, 0.26342997f, -0.0152957775f, 0.0012141207f, + 0.35715994f, -0.010755444f, -0.0011738731f, -0.010328856f, + 0.057593875f, 0.008639433f, 0.0038792936f, -0.0056522437f, + -0.13717589f, -0.013227977f, 0.010183696f, 0.0035481777f, + -0.02044172f, 0.008773298f, -0.028279128f, -0.009188993f, + 0.03104827f, -0.0039341585f, 0.042983476f, -0.0277756f, + 0.21703114f, 0.0035122873f, -0.07184546f, 0.102759235f, + -0.027148139f, -0.25413436f, 0.0024625089f, 0.00561767f, + -0.034852516f, -0.010747183f, 0.012776845f, -0.007462028f, + -0.0118268225f, -0.1509328f, -0.04881937f, 0.006288324f, + 0.008702177f, 0.004101342f, 0.02440534f, 0.009749633f, + 0.30794364f, 0.0019058379f, -0.0279524f, -0.0017068943f, + 0.018848538f, -0.012945478f, 0.03892611f, -0.03576354f, + 0.0016191575f, -0.01910429f, 0.01790638f, 0.11121567f, + -0.019189795f, -0.03395928f, -0.013320871f, 0.007923205f, + -0.004614204f, 0.021835346f, 0.016944999f, 0.009357709f, + 0.0020172119f, 0.34877446f, 0.030333728f, -0.0035031175f, + -0.1998395f, 0.009938196f, 0.022008477f, -0.06687329f, + -0.029088462f, -0.00017337677f, -0.0074062604f, 0.027843181f, + 0.07596423f, 0.0009457906f, 0.014091932f, -0.008748461f, + 0.0077689365f, -0.020553576f, 0.01837996f, 0.008025833f, + -0.0035311829f, -0.06502362f, 0.28695494f, 0.14743194f, + -0.14751524f, -0.011262906f, -0.06166913f, -0.04363869f, + 0.05364559f, 0.13614431f, -0.0089710215f, 0.00044184062f, + 0.32402644f, -0.0052708285f, -0.0152359875f, -0.0112769f, + -0.0007417664f, 0.06521429f, -0.12372744f, 0.027686572f, + -0.0117184f, -0.011172566f, 0.05778782f, 0.012171272f, + 0.124548495f, -0.007949408f, 0.010774258f, -0.0131666465f, + 0.0038883104f, 0.002711419f, 0.0055943294f, -0.0094756745f, + -0.00091055874f, -0.009653356f, -0.002916096f, -0.04356369f, + 0.026793452f, 0.0028958032f, -0.01881665f, -0.0032189377f, + -0.006172408f, 0.0002701205f, -0.0022835762f, -0.011573634f, + -0.0073187775f, -0.016342338f, -0.01424531f, -0.0010785601f, + -0.12265341f, 0.004557373f, -0.018967267f, 0.07438131f, + -0.12901184f, 0.0025153654f, -0.0014594496f, -0.019617334f, + 0.22699693f, 0.0065134554f, -0.006703861f, 0.0034494703f, + -0.09282076f, 0.025492774f, -0.014938298f, -0.00860825f, + -0.013677321f, -0.02413302f, 0.3443878f, -0.016550088f, + 0.7370409f, 0.21976984f, 0.041853994f, 0.5457159f, + 0.05494297f, -0.71273977f, -0.15618049f, -0.08607849f, + -0.34837216f, -0.026116956f, -0.027282152f, -0.48484486f, + -0.01972729f, -0.4756282f, -0.7625491f, 0.1974317f, + -0.008518391f, 0.21032718f, 0.3529119f, -0.58088607f, + -0.78457123f, 0.119458534f, 0.17464821f, -0.01248624f, + 0.05795382f, 0.049865842f, 0.2041681f, -0.10759984f, + -0.01563597f, -0.5524628f, 0.76221806f, 0.29417214f, + -1.0110563f, 0.013609915f, -0.18232289f, 0.006193254f, + -0.0007576604f, 0.02664505f, -0.008444347f, 0.07788375f, + 0.8406587f, 0.32788396f, 0.044858735f, 0.12410785f, + 0.5378322f, 0.14373532f, -0.043855127f, -0.18614891f, + 0.34531936f, -0.68530166f, -0.28789997f, -0.08463399f, + -0.65566736f, -0.99668235f, -0.26005903f, -0.19189383f, + 0.29277557f, -0.06944413f, 0.3055539f, -0.09321121f, + -0.6146292f, -0.043432035f, 0.11318668f, 0.30939588f, + 0.36775333f, -0.4715244f, -0.120446056f, 0.021062594f, + 1.205382f, -0.5297925f, 0.19506985f, 0.15144552f, + 0.5552785f, -0.0143052535f, -0.006230928f, -0.24239509f, + 0.001486383f, -0.28595662f, -0.6882348f, -0.06312308f, + -0.020342628f, -0.2291637f, 0.41151556f, -0.6599691f, + 1.0784816f, -0.09360707f, -0.20338158f, -0.11509781f, + -0.07894941f, -0.15031481f, -0.09404559f, 0.040257566f, + 0.004616838f, 0.21255566f, 0.9674317f, -0.011768347f, + 0.18840504f, 0.27666524f, 0.006372471f, 0.047953054f, + -0.010728265f, 0.017533423f, 0.1166005f, 0.6587811f, + 0.22406898f, 0.025338586f, -0.03944574f, -0.042628296f, + -0.5850943f, -0.15973023f, 0.010755617f, 0.31585294f, + -0.43246442f, -0.6066614f, -1.2405294f, 0.24921182f, + -1.2466887f, 0.7401801f, 0.13918546f, -0.29029468f, + 0.37135035f, 0.12756585f, 1.6130141f, 0.060275257f, + -0.85155255f, -0.33253935f, 0.6336804f, -0.81441504f, + -0.18905365f, 0.29859978f, 0.052700102f, 0.18371491f, + -0.23572278f, 1.2365474f, -0.0059242914f, -0.021684501f, + -0.0024338127f, 0.023151318f, 0.023861215f, 0.6414295f, + -0.0107756015f, 0.24430475f, -0.26460126f, -0.21450184f, + 0.030691184f, -0.9183229f, -0.013647338f, -0.06979839f, + -0.49380782f, -0.017276933f, 0.032797486f, 0.12864773f, + 0.038327277f, 0.06514179f, 0.085509636f, 0.0010040601f, + 0.0065498776f, 0.72391725f, 0.92027056f, -0.24296992f, + 0.097144224f, -0.5410544f, 0.6978373f, -0.07658475f, + -0.0070851175f, -0.0059128716f, -0.09708186f, -0.05550283f, + 0.44738656f, -0.29417402f, 0.02657336f, -0.4943723f, + 0.04342458f, 0.09017252f, -0.017559253f, -0.21154761f, + 0.16282438f, -0.97755176f, -0.82661426f, -0.1845149f, + -1.1869662f, -0.010852375f, 0.78427875f, -0.0027530713f, + -0.51421833f, -0.07265414f, 0.75912565f, 0.025225304f, + -0.6499076f, 1.0230305f, -0.3401785f, 0.47835416f, + -0.096426524f, 0.15648079f, 0.14861038f, 0.10011849f, + 0.3102945f, 0.8523988f, 0.18256864f, 0.026489822f, + -0.64302886f, 0.019270737f, 0.05573781f, 0.42643732f, + 0.00809397f, 0.37845564f, -0.1627062f, -0.33784425f, + 0.03001826f, 0.07961383f, -0.9723518f, 0.5377511f, + 0.4330208f, -0.0036892816f, -0.27828068f, 0.13962105f, + 0.013209306f, -0.16687979f, 0.16017999f, 0.09929566f, + 0.095344245f, -0.14031428f, 0.44403052f, -0.44417542f, + 0.44575283f, -0.09336303f, -0.09511803f, 0.11820466f, + 0.07390441f, -0.05140716f, 0.030119361f, 0.43220082f, + 0.87674034f, -1.712979f, -0.00980086f, -0.00025476364f, + -0.39092174f, -0.13213517f, -0.0004488836f, 0.20266174f, + -0.2455436f, -0.26730222f, -0.33604172f, 0.052814744f, + 0.7721085f, 0.5771454f, 0.05258471f, 0.1296466f, + -0.32460204f, 0.05864159f, 0.29164928f, 0.13599122f, + 0.8109872f, -0.33575436f, -0.09037249f, -0.025299827f, + -0.82131195f, 0.106357194f, -0.18223777f, 0.08711271f, + 0.6264812f, 0.39385918f, -0.3640404f, -0.10629906f, + 0.33068985f, -0.006836846f, -0.08355463f, 0.35429785f, + -0.0190048f, 0.017468685f, 0.063729145f, 0.21092674f, + 0.008653142f, -0.723953f, -0.52032936f, -0.5889153f, + -0.7983231f, -0.06594285f, 0.4534988f, -0.16118486f, + 0.033103406f, 0.30102712f, -0.3718333f, -0.077720545f, + -0.07116778f, -0.36530006f, 0.26453966f, 0.05678729f, + -0.02656765f, -0.12273443f, -0.07437828f, -0.2205288f, + -0.12644781f, 0.0096302265f, -0.16005842f, 0.09942739f, + 0.28666392f, 0.73464197f, 0.032734327f, 0.5365079f, + -0.7333569f, 0.20394847f, -0.004946177f, -0.16971895f, + -0.14489444f, 1.4337333f, -0.58747196f, -0.13101f, + 0.23464805f, -0.2090858f, -0.010714871f, 0.10838685f, + 0.121889815f, -0.15656818f, -0.90085685f, -0.1491452f, + 0.079399936f, 0.20478018f, -0.61299366f, 0.3219869f, + 0.69017905f, -0.573174f, 0.88105553f, -0.51098084f, + 0.2839732f, -0.9338436f, 0.09737202f, 0.061114464f, + -1.4474089f, 0.015664741f, 0.04154113f, -0.005590741f, + 0.009578148f, 0.76603526f, 0.27598417f, 0.1584812f, + -0.030440742f, -0.007647062f, 0.4833707f, 0.19734098f, + 0.33204794f, 0.15709585f, -0.19537179f, 0.027727377f, + -0.07390019f, -0.14446525f, -0.64262766f, 0.004115173f, + 0.013965493f, -0.78710556f, 0.371178f, 0.17862314f, + -0.010230953f, -0.02967964f, -0.07554181f, 0.1446332f, + 0.071846634f, -0.017874409f, 0.09863388f, -0.21470304f, + 0.8174611f, -1.359671f, -0.036550608f, 0.2605473f, + 0.025775872f, -0.11712959f, 0.0043917117f, 0.040231273f, + -0.56222993f, -0.32952553f, -0.5860293f, 0.11711925f, + 0.98885465f, 0.44401336f, 0.1912957f, 0.16186453f, + 0.12837292f, 0.09623812f, 0.012914279f, 0.017447041f, + -0.3902695f, -0.7015154f, -0.1670187f, -0.2844426f, + -0.57678306f, 0.130944f, 0.55207556f, -0.4120813f, + 0.2227803f, -1.2753959f, 0.15916531f, 0.10720631f, + 0.8520681f, 0.019271132f, 0.016374182f, -0.067113675f, + 0.044040736f, -0.15258417f, 0.175413f, 0.23085782f, + -0.00784479f, 0.35195833f, -0.06657129f, 0.15608238f, + 0.2903644f, -0.15890138f, 0.01422551f, 3.6155376e-05f, + -0.086418726f, 0.115444414f, 0.34283534f, 0.07201587f, + -0.09144701f, 0.06294239f, -0.17385422f, 0.29746783f, + -0.0041174944f, 0.9545657f, -0.3587797f, -0.099627994f, + -0.03587145f, 0.02555887f, 0.006042229f, 0.017327461f, + 0.5376432f, 0.9401248f, -0.055094562f, 0.14814095f, + -0.24288212f, -0.0398266f, 0.037610736f, -0.14103232f, + 0.1951181f, -0.2586588f, 0.1259387f, -0.052774984f, + 0.6104627f, 0.15300821f, -0.009942706f, 0.007187638f, + -0.039316703f, -0.009981615f, -0.3253851f, -0.026685627f, + -0.4497551f, 0.04969143f, -0.04497608f, -0.19232413f, + -0.6280112f, 0.17320472f, 0.0049350373f, -0.5119433f, + 0.7009196f, 1.2547711f, 0.060407694f, -0.17742929f, + 1.373868f, 0.02210516f, 0.04963606f, 0.043907885f, + -0.028946804f, -0.78293675f, 0.57730246f, -0.099193476f, + -0.005139176f, 0.118006915f, -0.20975055f, 0.2325305f, + -0.3301266f, 0.25981203f, -0.22520976f, 0.24865825f, + 0.04127455f, -0.1536492f, -0.06180238f, 0.010154743f, + 0.08137378f, 0.3501325f, 0.15056124f, 0.0016292988f, + 0.29376718f, 0.06690604f, -0.18972114f, 0.13992737f, + 0.06721675f, -0.05916506f, 0.017599855f, -0.13531733f, + -0.49635127f, 0.749469f, 0.004851781f, 0.079691924f, + 0.84881306f, -0.020977713f, -0.055211425f, 0.2821434f, + -0.51946276f, -0.5657611f, 0.08304703f, -0.04578232f, + 0.07650989f, 0.08796448f, -0.1486227f, 0.008059939f, + -0.36211497f, 0.0073701045f, -0.22072487f, 0.083062865f, + 0.1336751f, 0.4393539f, 0.49447033f, -0.107674204f, + 1.017564f, -0.18160932f, -0.32538083f, -0.8867412f, + 0.4654386f, -0.6171205f, -0.1356557f, 0.070447914f, + -0.6806565f, -0.06385581f, -0.08105891f, 0.19224541f, + -0.015061828f, 0.22266607f, -0.020398807f, -0.097178325f, + 0.006524372f, 0.07665616f, 0.16923898f, -0.18738335f, + 0.27903926f, -0.2145893f, 0.21206288f, -0.21109332f, + 0.05719954f, 0.074653186f, 0.0006055157f, -0.05346313f, + -0.010489333f, 0.9479759f, 0.093053326f, -0.08096564f, + -0.9002712f, -0.35926625f, -0.039251544f, -0.08477608f, + -0.044152535f, 0.06452973f, -0.015974997f, 0.17217024f, + 0.20786014f, 0.4448249f, 0.045225326f, 0.07583153f, + 0.21099012f, 0.05975245f, 0.027918167f, -0.009789194f, + -0.21668072f, -0.3266794f, -0.07853268f, 0.036635544f, + 0.8428246f, 0.24315497f, 0.11222235f, -0.06672066f, + 0.2897849f, 0.010839814f, 0.079621926f, -0.06650276f, + 0.66640353f, 0.31793934f, 0.53107846f, 0.25276315f, + -1.0314702f, -0.19460422f, -0.09489199f, -0.14478776f, + -0.43846875f, -0.5283423f, -0.05859613f, -0.05232465f, + 0.104246214f, 0.09635764f, -0.026412753f, -0.09133365f, + 0.04334463f, 0.010813169f, 0.84202915f, 0.060536698f, + 0.03049121f, -0.19143122f, 0.022696959f, 1.2742474f, + -0.6591722f, 0.1890969f, 0.1556264f, 0.029603846f, + -0.12774724f, 0.11891661f, -0.51016444f, 0.18304925f, + -0.035618834f, -0.092526816f, -0.14290752f, -0.29915187f, + 0.11079907f, 0.19200562f, 0.25691193f, 0.040961053f, + 0.032788474f, -0.13855319f, -0.04088719f, 0.09643746f, + -0.28801113f, -0.5328631f, -0.07329775f, -0.26443198f, + 0.37221664f, -0.009253239f, -0.059853602f, 0.31746075f, + 0.2633619f, 0.26534364f, -0.070109576f, 0.06833996f, + 0.008257315f, -1.2458268f, 0.047516987f, 0.02138565f, + -0.4107217f, -0.10129792f, -0.5451474f, 0.056732874f, + 0.446441f, 0.06943919f, 0.4711551f, -0.34459698f, + 1.1583481f, -0.16762608f, 0.58947223f, 0.3927579f, + -0.050633885f, -0.3251315f, -0.0029146085f, 0.051568832f, + 0.1812147f, -0.040395778f, 0.01849805f, 0.28985307f, + -0.03978191f, 0.73897f, -0.17195508f, -0.07885496f, + -0.0029975162f, 0.47930247f, -0.41002056f, -0.9239777f, + 0.356172f, -0.049186915f, -0.12032332f, -0.07610425f, + 0.036021505f, -0.022196224f, 0.4271711f, 0.0060595586f, + -0.027331632f, -0.43677238f, 0.16248968f, 0.24111597f, + 0.42482492f, -0.3851411f, -1.3643f, -0.06809617f, + -0.03274611f, 0.07961072f, -0.002664774f, 0.26837954f, + 0.5759822f, 0.5968552f, 0.04330689f, -0.106867716f, + -0.12295376f, -0.018749647f, 0.007796518f, -0.3983895f, + 0.33233544f, -0.0509593f, 0.2933523f, 0.031923257f, + -0.10490004f, 0.20415697f, 0.51272297f, 0.3312203f, + 0.49989042f, 0.07058827f, 0.17110246f, -0.05626516f, + -0.21083409f, 0.5410044f, -0.36998302f, 0.35698834f, + -0.6860957f, 0.1177695f, 0.2817654f, 0.6462636f, + 0.13505563f, 0.029112196f, -0.19777651f, -0.023899363f, + -0.8930575f, -0.046861768f, -0.059789658f, 0.15581863f, + -0.05101801f, -1.0463655f, -0.09849543f, -0.009844953f, + -0.018339073f, -0.023216499f, 0.2905773f, 0.13671601f, + -0.1519527f, 0.123234525f, 0.083237015f, -0.044211056f, + 0.061838582f, -0.04877831f, 0.04155708f, -0.10635646f, + 0.09913501f, 1.2400111f, 0.4197746f, -0.334335f, + 0.90251094f, -0.01882254f, 0.622279f, 0.07658976f, + 0.0026994413f, 0.038100753f, -0.015115521f, 0.057918f, + -0.18978429f, -0.5754688f, 0.05699169f, -0.02108283f, + -0.0041081966f, 0.11082881f, -0.036198426f, 0.29460067f, + 0.061936017f, -0.7387069f, -0.28173372f, 0.056153044f, + -0.6650216f, -0.3982168f, -0.99010795f, -0.07112472f, + 0.28529876f, 0.0048533413f, 0.6431435f, 0.016369823f, + -0.37083927f, -0.58621913f, 0.15593578f, -0.098923266f, + 0.3835701f, 0.19458699f, -0.6270994f, 0.055326678f, + -0.5892951f, -0.10250459f, -0.058017947f, -0.0500002f, + 1.0813302f, -0.016622312f, 0.02355821f, 0.0048844987f, + 0.006905939f, -0.013338265f, -1.0197109f, 0.073926926f, + -0.030929698f, 0.52939284f, -0.1336776f, 0.04957343f, + 0.20402181f, -0.040065117f, -0.06234864f, -0.059094917f, + 0.07990316f, -0.109560564f, 0.379377f, -0.12892726f, + 0.05883856f, -0.3029621f, 0.059575167f, 0.11151769f, + 0.79485536f, -0.64154994f, 0.29885545f, -0.020568196f, + 0.015822971f, 0.03479702f, 0.008484442f, 0.23359865f, + 0.4339689f, 0.79100764f, 0.0821293f, 0.46663418f, + 0.08273576f, 0.031012546f, 0.025193207f, -0.17573565f, + 0.29147983f, -0.24529156f, 0.55945474f, 0.023358854f, + -0.2728956f, -0.06776653f, -0.3670159f, 0.03295921f, + 0.44948828f, 0.016795594f, 0.5028866f, -0.042178556f, + -0.4020223f, 0.53188103f, -0.31257254f, 0.21422355f, + 0.3935557f, 0.3400123f, -0.37817818f, -0.120563634f, + -0.4689006f, 0.013835511f, 0.0043251603f, 0.14064293f, + 0.2135006f, -0.075142086f, -0.060730662f, -0.476166f, + -0.008060943f, -0.3600266f, 0.35044354f, 0.1628309f, + -0.029300055f, -0.5274336f, 0.17091957f, 1.2667406f, + 0.084669024f, 0.0024507123f, 0.204444f, -0.014148077f, + 0.03321813f, -0.031326264f, -0.38613653f, -0.1249787f, + 0.029439861f, 0.33227772f, 0.41733068f, 0.24092191f, + 0.71207905f, 0.033660192f, 0.81783754f, 0.074495636f, + 0.046739914f, 0.088574246f, 0.1300375f, -0.61960363f, + -0.39675522f, -0.22519617f, 0.0086545795f, -0.21197566f, + 0.2884501f, 0.0073786094f, 0.002973694f, 0.21082595f, + -0.36077842f, 0.010644188f, 0.53736806f, 0.027492557f, + 0.52925026f, -0.5660192f, 0.07976161f, -0.29637426f, + -0.089748435f, 0.08751818f, -0.24176085f, -0.041299198f, + 0.22127008f, -0.91142184f, 0.23664747f, -0.37168682f, + 0.2244729f, -0.33971626f, 0.07743506f, 0.4744059f, + 0.22304215f, 1.1574953f, 0.10740623f, -0.01647204f, + -0.024691809f, 0.029902752f, 0.0004967777f, -0.24056627f, + 0.03964065f, 0.3492355f, 0.12237721f, -0.030260043f, + -0.009578884f, -0.23527135f, -0.058053013f, 0.0007535268f, + 0.38808f, -0.004984167f, 0.035892427f, 0.03263236f, + -0.035921767f, -0.029049013f, -0.23575243f, 0.014510196f, + -0.03240288f, -1.161839f, -0.45570314f, -0.15499985f, + -0.23469459f, -0.32370627f, -0.23670626f, -0.068712294f, + 0.009225237f, -0.02270937f, 0.017265193f, -0.14709258f, + 0.42192665f, 0.7054413f, -0.0039274464f, -0.031726215f, + 0.059486233f, -0.034832355f, -0.01834301f, -0.088121295f, + 0.30428f, 0.1672203f, -0.007859113f, -0.008235436f, + 0.29746005f, 0.038922336f, 0.13321911f, -0.012839961f, + -0.33659527f, -0.033224475f, 0.2455084f, 0.07280211f, + -0.44840586f, 0.38163394f, 0.1668213f, 0.107182935f, + -0.5690649f, 0.13328189f, -0.090864494f, 0.06257151f, + -0.19618018f, 0.7930288f, 0.18541399f, -0.06353087f, + -0.8127873f, 0.060817927f, 0.058208685f, 0.06388027f, + -0.0063326843f, -0.7794209f, 0.2242176f, -0.03615311f, + 0.032769743f, -0.7447917f, 0.2952349f, 0.20845611f, + 0.37743908f, 0.057241473f, -0.16473332f, -0.0014906168f, + -0.036850706f, 0.027658273f, -0.43748623f, 0.04219507f, + -0.09739661f, -0.17390975f, -0.14041021f, 0.1073052f, + -0.8608927f, -0.3481562f, -0.5879814f, -0.06009895f, + -0.020137617f, -0.040714476f, -0.010179172f, 0.8325032f, + 0.080654f, -0.68897545f, -0.043406148f, 0.06135377f, + -0.31423855f, -0.05678672f, -0.004611709f, 0.10392977f, + -0.29799238f, 0.28376228f, 0.25725293f, 0.013354679f, + 0.7524418f, -0.041514717f, 0.07750995f, -0.14534397f, + -0.2084966f, -0.023471935f, -0.16369154f, -0.010825834f, + -0.16754146f, -0.7818233f, 0.44100496f, -0.20894991f, + 0.51912165f, 0.034028653f, 0.14276005f, 0.49181336f, + -0.16831997f, -0.63280016f, 0.055227194f, 0.047120724f, + 0.05128073f, 0.013323013f, -0.015078525f, 0.18295433f, + -0.03059061f, 0.64679056f, 0.24297364f, -0.08067258f, + 0.024165541f, -0.2762105f, -0.18287578f, 0.31537032f, + -0.43043426f, -0.06245467f, -0.011336931f, 0.17545088f, + -0.05947775f, 0.15721373f, 0.40208974f, 0.06968284f, + -0.025681067f, -0.1476274f, 0.0012969864f, -0.010128546f, + -0.07251881f, 0.017586714f, -0.45845085f, 0.0033184346f, + -0.0425675f, -0.023000922f, -0.02691019f, -0.3913428f, + 0.026115164f, 0.63840586f, -0.014119582f, 0.5065781f, + 0.02331122f, 0.007825207f, -0.028942913f, -0.35412887f, + -0.064343564f, -0.09023654f, -0.22507589f, -0.18645145f, + -0.23687884f, 0.3444332f, -0.7556541f, 0.20568167f, + -0.71224624f, -0.035792105f, 0.89834493f, 0.084351234f, + 0.21622443f, 1.1395546f, -0.3405421f, 0.10579692f, + -0.36842042f, 0.23300497f, -0.09251233f, 0.017425757f, + -0.4776083f, -0.50860006f, -0.00506694f, -0.049970508f, + 0.08510162f, -0.012389474f, 0.06479131f, 0.16046247f, + 0.022882288f, 0.37430558f, 0.063889116f, -0.07180888f, + -0.007117351f, 0.5762777f, 0.28153864f, -0.08458469f, + -0.015691886f, -0.19636166f, -0.11380584f, -0.0514433f, + 0.05619865f, -0.045396272f, 0.4241318f, 0.0467627f, + 0.021351043f, 0.46672842f, -0.0374787f, 0.121876925f, + 0.39811295f, 1.0430447f, 0.8271677f, 0.0014852999f, + 0.0013601307f, -0.031007672f, -0.06378976f, 0.08823172f, + -0.21467008f, -1.0351243f, -0.05469802f, -0.06263135f, + -0.18540896f, -0.03866192f, 0.105857424f, 0.11660512f, + -0.54437745f, -0.40414053f, 0.49238837f, -0.02880411f, + -0.119563304f, -0.06916231f, -0.17999798f, 0.23810087f, + 0.43403852f, 0.030938448f, -0.19581047f, -0.06416222f, + 0.40060848f, -0.5109783f, -0.40700713f, 0.22357987f, + 0.07365835f, -0.13451937f, -0.024111586f, -0.033002455f, + 0.36852574f, 0.1857777f, -0.00914144f, 0.01579696f, + 0.392604f, -0.02773597f, 0.012704645f, -0.028812287f, + 0.016203403f, -0.20124152f, -0.21486133f, 0.02654619f, + -0.035865624f, -0.058766283f, -0.107334286f, -0.36448625f, + 0.14557078f, -0.008536258f, 0.049338624f, -0.038204994f, + 0.011244072f, -0.033780113f, 0.16506694f, -0.020390673f, + 0.038392797f, -0.2322821f, 0.087919466f, 0.11318588f, + 0.16570993f, -0.3386265f, -0.10503774f, 0.015185814f, + 0.021595746f, 0.039245714f, 0.04684769f, 0.12119348f, + 0.13098665f, 0.020718308f, 0.018853672f, 0.0046133967f, + -0.78144586f, 0.0009466915f, 0.016749192f, -0.08631823f, + 0.036451295f, -0.078017354f, -0.24983151f, 0.03899275f, + -0.14362872f, 0.11425662f, 0.24315023f, 0.05293064f, + 0.19647299f, 0.027661774f, -0.17482337f, -0.029206395f, + 0.21463291f, 0.024083214f, 0.008204505f, 0.14180578f, + -0.18499517f, -0.07123965f, -0.21684702f, 0.06702407f, + 0.052598942f, -0.18686822f, 0.07971645f, 0.007258266f, + -0.02677093f, -0.012595187f, -0.019087076f, 0.0924216f, + -0.027972767f, -0.17419529f, 0.10676114f, -0.06976905f, + 0.010642747f, 0.0036010172f, -0.20801206f, 0.05957105f, + -0.009705011f, -0.02004573f, 0.013705871f, 0.03944793f, + 0.019542554f, -0.0011640656f, 0.09961661f, -0.030314127f, + -0.016598757f, 0.4632623f, -0.007916389f, 0.001611903f, + 0.45786276f, 0.05486137f, 0.085380994f, -0.04303254f, + -0.026627004f, 0.032902054f, 0.0068959156f, -0.006989213f, + 0.024187608f, 0.5480803f, 0.029864637f, 0.019170225f, + 0.54142517f, 0.034762193f, 0.0043952335f, 0.12300451f, + -0.0009171313f, 0.024975624f, 0.08321905f, -0.06942961f, + -0.17452133f, -0.03641074f, -0.34778738f, -0.026574342f, + -0.34436762f, -0.025469506f, 0.09237217f, 0.0037632093f, + -0.10520878f, 0.10409247f, -0.019641703f, -0.31777638f, + 0.34614268f, -0.0059153107f, -0.11017002f, 0.03708411f, + 0.0070557958f, 0.21021356f, 0.045497328f, 0.02981299f, + 0.055342067f, 0.004147845f, 0.016786193f, 0.0153238755f, + 0.003542733f, 0.20812456f, 0.34953317f, 0.03227215f, + -0.009476508f, -0.019857109f, 0.0044706324f, -0.055955235f, + 0.004776317f, -0.015303418f, -0.012754145f, -0.017409205f, + -0.030013422f, 0.013797115f, 0.027180683f, 0.03881722f, + -0.020029666f, -0.14721735f, -0.0070128054f, 0.017539624f, + 0.12478119f, 0.043880183f, -0.0023068772f, 0.024605729f, + 0.021797262f, -0.027921626f, -0.009763723f, 0.0020222133f, + 0.027557734f, 0.026287168f, -0.023106497f, -0.0015039981f, + -0.051839154f, -0.026985688f, 0.002151105f, 0.03692945f, + -0.31593338f, 0.03164542f, 0.089390695f, 0.003362087f, + -0.15851644f, -0.031689283f, 0.06296285f, -0.008181843f, + -0.11867603f, 0.012413907f, 0.0214014f, -0.018727198f, + -0.0426638f, 0.20147838f, -0.1028718f, -0.0036374251f, + -0.40647778f, -0.19493577f, 0.3752049f, 0.0807817f, + -0.89991605f, 0.040306605f, -0.095143035f, 0.02054182f, + -0.83123004f, -0.024969922f, -0.04787539f, -0.051592227f, + -0.04328094f, 0.23488046f, -0.16466802f, 0.021117952f, + 0.016180646f, -0.08718111f, 0.026560752f, 0.101075314f, + -0.08311053f, 0.09408546f, -0.0019121995f, -0.019270953f, + 0.005797375f, -0.043516774f, -0.35817727f, -0.112790756f, + -0.016242424f, 0.08382269f, 0.03367453f, -0.16484928f, + 0.010441323f, -0.13785595f, -0.0409201f, 0.043843802f, + -0.025862627f, 0.03240676f, 0.038020674f, -0.0772461f, + -0.023793815f, -0.704274f, 0.03587981f, 0.06052224f, + -0.5352012f, 0.049891483f, -0.036600545f, 0.13559696f, + -0.2484008f, 0.064189464f, 0.0097085945f, 0.007196093f, + 0.102674015f, 0.3840656f, 0.094639376f, 0.013822084f, + -0.2124524f, 0.034151725f, -0.105098024f, -0.0005228716f, + 0.24756269f, 0.1424572f, 0.041731756f, -0.10348538f, + 0.4009097f, 0.1995913f, -0.019967727f, -0.102226436f, + -0.3299374f, 0.09745966f, -0.005326191f, -0.024075637f, + 0.009186021f, 0.021077976f, 0.03551511f, 0.028429003f, + 0.029925289f, 0.2333578f, -0.1411267f, 0.059183564f, + -0.019922223f, -0.07338914f, -0.032708723f, -0.23205642f, + -0.1821223f, -0.03695869f, -0.054379873f, -0.01183018f, + -0.024239486f, 0.023656221f, 0.18712884f, 0.08669921f, + -0.0013952735f, 0.04663786f, -0.009314115f, 0.05152984f, + 0.0011203762f, 0.056692377f, 0.008123729f, 0.021261951f, + 0.05039645f, -0.049110055f, -0.03538058f, -0.12498278f, + 0.06673356f, 0.25414506f, -0.069535375f, -0.0077127228f, + 0.4924165f, -0.08168061f, 0.017388187f, -0.15185893f, + -0.07843938f, -0.012254293f, 0.026495202f, 0.034279007f, + -0.24157973f, -0.006723147f, -0.047224104f, -0.0017746777f, + 0.26144376f, 0.021473698f, 0.025175797f, 0.013687166f, + -0.14409575f, 0.34995544f, -0.23362161f, 0.38284454f, + -0.045443755f, 0.077751145f, -0.15340765f, 0.08372792f, + 0.17760195f, -0.17624249f, -0.0413419f, -0.014397848f, + -0.3317352f, -0.014015485f, -0.01156194f, 0.042882193f, + -0.005091595f, -0.2840449f, 0.11648029f, -0.07208617f, + 0.010208536f, 0.032412097f, 0.08766446f, -0.0053608194f, + -0.07376641f, -0.046934202f, 0.0057727383f, 0.019748792f, + 0.046597198f, 0.0034460435f, 0.024970181f, -0.023231411f, + 0.03546244f, -0.079934224f, 0.015596419f, -0.05053669f, + 0.08569229f, 0.05055774f, 0.029161759f, -0.031442184f, + -0.031035999f, 0.02684163f, -0.00031124122f, 0.015303563f, + 0.0031851882f, -0.24963251f, 0.029159553f, -0.03669849f, + -0.038112562f, 0.036869984f, 0.0111821275f, 0.024697429f, + -0.28817937f, -0.00079438224f, -0.0013917756f, -0.02810756f, + 0.32126507f, -0.086026415f, 0.09272252f, -0.018879123f, + 0.17123716f, -0.015221068f, -0.021860672f, 0.020673323f, + 0.054739896f, -0.0019808845f, 0.2006404f, -0.0354101f, + -0.14840211f, 0.13524641f, -0.029820744f, 0.15596575f, + 0.027866907f, -0.3931937f, 0.009307324f, -0.041856192f, + 0.4195334f, 0.030039292f, 0.020635704f, 0.0041578845f, + -0.0047783013f, -0.09068384f, -0.046916872f, -0.0052404087f, + 0.011654076f, -0.023494227f, -0.18440649f, -0.14656721f, + 0.0954962f, -0.07110997f, 0.024872648f, 0.01761914f, + -0.007899783f, 0.06400377f, -0.031171096f, 0.041772433f, + 0.0059915064f, 0.0729879f, 0.0017729359f, 0.08190929f, + -0.09871103f, -0.38448036f, -0.011405057f, -0.07843767f, + -0.007015773f, -0.032265883f, -0.050212573f, -0.045467086f, + 0.0421407f, 0.35119316f, -0.0101177525f, -0.007317614f, + -0.18281259f, -0.040150918f, 0.011767739f, -0.04453397f, + 0.13973962f, 0.006653113f, -0.0814154f, -0.07221126f, + -0.05463804f, 0.23193192f, -0.006844186f, -0.025843276f, + 0.17486395f, -0.025700431f, -0.10179771f, 0.010653787f, + 0.060017563f, -0.16209632f, 0.11449042f, -0.010502559f, + -0.13768238f, 0.0776874f, 0.12851636f, -0.3487838f, + -0.095491566f, 0.5061131f, 0.004699245f, 0.0395197f, + 0.48971573f, 0.029810946f, 0.003771613f, 0.03669924f, + -0.005258139f, -0.13504106f, 0.055656716f, -0.06813669f, + 0.02257357f, 0.025331886f, 0.053514797f, -0.10512417f, + 0.033107907f, 0.053273875f, -0.014258646f, 0.019819744f, + -0.010751032f, -0.05169088f, -0.039202876f, -0.024584014f, + -0.014301216f, 0.013771403f, 0.027258331f, -0.080075994f, + 0.021337554f, 0.28745618f, -0.040376086f, -0.0049371775f, + -0.0077190027f, -0.010111727f, -0.016531333f, 0.051101536f, + 0.06127352f, 0.1385393f, 0.03917571f, 0.0155003425f, + 0.6983078f, 0.05653165f, -0.028055506f, 0.023805311f, + -0.044585016f, 0.025098668f, -0.0054986244f, 0.010548027f, + 0.26768875f, -0.018874228f, 0.009944058f, 0.020396857f, + -0.08920602f, -0.041310262f, -0.09972779f, -0.028257033f, + 0.10058009f, 0.11810426f, 0.105025135f, -0.08980336f, + -0.017743519f, -0.026065068f, 0.08467908f, 0.15755005f, + 0.032308314f, -0.38266826f, -0.0052567553f, -0.018541567f, + -0.31884855f, -0.0033855608f, 0.015173292f, 0.03492227f, + -0.0052438616f, 0.13969687f, 0.14442259f, 0.081195496f, + -0.005535243f, 0.022085f, 0.1016608f, -0.018690964f, + 0.11192402f, 0.021725414f, -0.02576954f, 0.0027053654f, + -0.0090895435f, 0.016813898f, -0.028822886f, 0.031301152f, + -0.025792776f, -0.3441749f, -0.017700277f, 0.0683383f, + 0.02897161f, 0.07979331f, 0.027515693f, 0.021872973f, + -0.0015342848f, -0.013467164f, -0.004095432f, 0.023451626f, + -0.03141499f, -0.0070645884f, -0.040035065f, -0.0121210655f, + -0.25759777f, -0.035949964f, 0.0055408482f, -0.025981521f, + 0.15752834f, 0.022893222f, -0.009513555f, 0.03193345f, + -0.16268303f, -0.015065128f, 0.002990979f, -0.006749999f, + -0.06762066f, 0.016756933f, -0.063944265f, 0.0035096898f, + 0.012832619f, -0.12583801f, -0.10361163f, 0.016847063f, + -0.30356416f, -0.08753216f, 0.013587182f, -0.04853945f, + 0.09258596f, -0.595734f, 0.07621007f, 0.028226474f, + 0.11653453f, 0.014305161f, -0.03572098f, -0.020092476f, + -5.028066e-05f, 0.39858902f, -0.101363264f, -0.006985386f, + 0.018423608f, 0.113841124f, 0.23526287f, -0.04591773f, + 0.048335053f, 0.12016577f, 0.11604561f, -0.012941354f, + 0.0064596073f, 0.06305918f, -0.0031923028f, -0.011079159f, + -0.031388175f, -0.025233401f, 0.015479208f, 0.07140223f, + 0.12967551f, 0.016608208f, -0.05260178f, 0.02348822f, + -0.023521082f, -0.016804343f, 0.055261917f, 0.01559136f, + 0.07412834f, -0.18553576f, 0.0133041935f, 0.023041157f, + 0.25482047f, 0.011561217f, -0.08013211f, 0.058282018f, + -0.33348078f, -0.011478001f, 0.010176911f, -0.008009487f, + -0.17555265f, -0.13062656f, 0.07229836f, 0.018498091f, + 0.055944096f, -0.023085449f, 0.069280915f, 0.0004632052f, + 0.011609425f, 0.116409354f, 0.14598279f, -0.08717847f, + 0.2751391f, -0.019980943f, 0.076687515f, 0.12250851f, + 0.105521575f, 0.26964226f, 0.014826623f, 0.0038848792f, + 0.20300612f, -0.01974394f, 0.013104314f, 0.03640481f, + -0.011060565f, -0.15902965f, -0.051977277f, -0.014402303f, + 0.0014942972f, -0.029108938f, 0.03186458f, -0.07104802f, + 0.1794606f, -0.12412582f, -0.11993244f, 0.013557721f, + -0.027637169f, -0.056353565f, 0.008563983f, -0.0024211006f, + 0.0042245016f, 0.056154344f, 0.026768204f, -0.13855343f, + 0.6578533f, 0.28550568f, 0.015871359f, -0.063021004f, + -0.012010005f, 0.04769184f, -0.0069994857f, 0.0721509f, + 0.06695942f, 0.46206865f, 0.009513348f, -0.009014894f, + 0.4243439f, -0.027549015f, 0.067517266f, -0.105322264f, + -0.2496721f, -0.017098192f, 0.17967276f, 0.069669254f, + 0.027678309f, -0.037128963f, -0.21654868f, -0.01894588f, + 0.29343575f, 0.045763467f, -0.04359595f, -0.032181073f, + -0.09843235f, 0.005754713f, 0.03123999f, 0.05415099f, + -0.3624584f, 0.034359362f, 0.13360563f, -0.12254925f, + 0.05571077f, 0.2954961f, -0.058760747f, -0.028686538f, + 0.2842881f, 0.034194775f, 0.028363697f, 0.016320467f, + 0.011457651f, 0.3160511f, -0.0070568845f, -0.10483816f, + 0.018886091f, -0.008249834f, -0.23930171f, 0.08655187f, + -0.36937752f, 0.04078214f, -0.10617822f, 0.019064857f, + -0.021203682f, 0.023821276f, -0.020560093f, 0.04778811f, + -0.013517978f, 0.10169968f, 0.04066341f, -0.087617196f, + 0.09730186f, -0.0081164045f, -0.0050847214f, -0.003399725f, + -0.003615481f, -0.034521457f, -0.036007885f, 0.0045111016f, + -0.04123943f, 0.2727132f, -0.027769974f, -0.011584593f, + -0.34363896f, 0.0012007324f, -0.023922365f, -0.08876652f, + -0.2320869f, -0.07147619f, -0.08929906f, -0.01552145f, + 0.12413311f, 0.017039146f, -0.15962934f, -0.03659493f, + -0.24719009f, -0.04124639f, 0.06434402f, 0.07011196f, + -0.005159923f, -0.05547862f, 0.20533228f, 0.099618636f, + -0.022242675f, -0.05411723f, 0.16292173f, -0.18126139f, + -0.64612865f, 0.37352502f, 0.014249969f, -0.00805684f, + -0.03794947f, -0.04549369f, -0.007842923f, -0.0026688413f, + -0.004089527f, -0.25928187f, -0.46536663f, 0.044254128f, + -0.048747506f, -0.12100154f, 0.03916575f, 0.067457505f, + 0.14707415f, -0.11804048f, -0.12616503f, -0.020250162f, + 0.023454564f, -0.095441766f, -0.05238088f, -0.0731991f, + 0.022247234f, 0.0058394084f, -0.016508393f, 0.019025408f, + -0.14768739f, -0.23789543f, 0.16275641f, -0.034816783f, + -0.0027867637f, 0.05477125f, -0.0012464748f, -0.023041869f, + -0.27114633f, 0.09058911f, -0.010423337f, -0.0063181813f, + -0.85314894f, 0.018130133f, 0.07139832f, -0.09873822f, + -0.54078627f, -0.025560029f, -0.044354845f, 0.0461378f, + 0.0011850167f, 0.17343207f, 0.13114093f, -0.06611923f, + -0.02514242f, 0.062003285f, -0.09506236f, -0.0012148271f, + 0.17022438f, 0.04749238f, -0.1834854f, 0.0021111346f, + 0.272188f, 0.2445931f, -0.11142204f, -0.13138093f, + -0.75776154f, 0.090043284f, -0.029486887f, 0.03013433f, + -0.35654384f, 0.043769997f, -0.02869192f, 0.05795309f, + 0.046786115f, 0.008934759f, -0.01887807f, 0.0060589667f, + -0.008114739f, -0.13578036f, 0.07617361f, 0.46362865f, + -0.53107387f, 0.26993725f, 0.16893399f, 0.09077569f, + -0.09036259f, -0.044298053f, 0.07000591f, 0.0508268f, + 0.03454967f, 0.109655276f, -0.105818965f, -0.12510741f, + 0.36164555f, -0.19409722f, -0.07524897f, 0.06711271f, + 0.0709107f, -0.052518334f, 0.030238898f, -0.1931829f, + -0.20503463f, 0.02347714f, 0.010425894f, 0.038153846f, + 0.36493194f, 0.017584099f, -0.0506026f, 0.29149145f, + -0.10596705f, 0.17835453f, -0.020478437f, -0.051014584f, + 0.13846184f, -0.26947403f, -0.19500656f, -0.017489137f, + -0.2949346f, -0.07587699f, 0.23618093f, 0.04182354f, + -0.4050102f, -0.52661484f, -0.2308211f, -0.3059586f, + 0.24937741f, -0.06127778f, 0.33258122f, 0.07749381f, + 0.02627258f, 0.09476639f, -0.0037316438f, -0.032562505f, + -0.048568618f, -0.023910917f, -0.035978306f, 0.032151364f, + -0.013153706f, 0.088596076f, 0.12444852f, 0.09094766f, + -0.010383882f, 0.078128465f, 0.35670263f, 0.100836985f, + 0.35349497f, -0.08701474f, -0.052346155f, -0.045925252f, + 0.033292755f, 0.018800126f, -0.20984133f, 0.060858272f, + -0.031119697f, -0.21258071f, -0.060939927f, 0.04894128f, + -0.04324744f, -0.05154224f, -0.20838645f, 0.011621934f, + -0.015864855f, -0.0037287045f, -0.045410223f, 0.0032781886f, + 0.025742257f, 0.018253684f, -0.01997052f, 0.017051527f, + 0.16060224f, -0.06462539f, 0.010504479f, -0.077153556f, + -0.38457802f, -0.00050445675f, 0.00822544f, 0.15020335f, + 0.17394003f, 0.13057764f, -0.116647564f, 0.10151067f, + 0.497525f, 0.049087044f, -0.12913972f, -0.04222156f, + 0.22111478f, -0.24238032f, 0.2632637f, 0.2995954f, + 0.25682637f, -0.02575642f, 0.04736736f, -0.07932246f, + -0.30815133f, -0.11608425f, 0.047240376f, 0.03908266f, + -0.3646165f, 0.034582447f, 0.06470896f, -0.043189704f, + 0.0055312463f, -0.051425345f, 0.044540774f, -0.119404346f, + 0.04107931f, 0.22014666f, -0.14142561f, -0.26668242f, + -0.35146827f, -0.07677405f, -0.049039807f, 0.08650813f, + -0.008261981f, 0.09837729f, -0.030273343f, 0.103633404f, + -0.023113215f, -0.2162023f, 0.024318997f, 0.081028104f, + 0.08865292f, -0.07532978f, -0.0545915f, 0.028159745f, + 0.06883205f, -0.027615083f, -0.037130035f, -0.08683418f, + 0.1637969f, 0.93737805f, -0.027899763f, -0.047430463f, + 0.25806937f, -0.026074504f, -0.038574032f, -0.11791512f, + -0.025677256f, 0.0006895005f, 0.14205346f, -0.10320031f, + -0.0007170265f, 0.2627601f, 0.033411782f, 0.05582086f, + -0.12341749f, -0.044926137f, 0.15310004f, 0.09496527f, + 0.029041795f, 0.13133906f, -0.18162057f, 0.09876338f, + -0.19665037f, -0.0036508269f, -0.11784524f, 0.13387276f, + -0.914087f, 0.10857751f, -0.07577188f, -0.14254159f, + -0.10765499f, -0.032557987f, 0.00906234f, -0.049553804f, + -0.010589195f, -0.09447344f, -0.019747304f, 0.06705909f, + 0.004527592f, 0.21338157f, -0.14008054f, -0.2245878f, + 0.41321698f, -0.09260768f, 0.06514647f, -0.10633421f, + 0.09903094f, 0.030779937f, 0.18182102f, -0.06943939f, + 0.0053518736f, -0.24508157f, -0.06874588f, 0.15206f, + 0.58584446f, 0.11387102f, 0.2780542f, -0.011037695f, + -0.0837833f, -3.9212746e-06f, -0.015619999f, 0.10774793f, + -0.33020297f, -1.0971227f, -0.010384727f, -0.031747162f, + 0.07639645f, 0.024388716f, 0.06630788f, -0.109696105f, + 0.174175f, -0.06794803f, 0.38085237f, -0.03859811f, + 0.16059998f, -0.33999088f, -0.05029746f, -0.04073743f, + 0.4222312f, 0.027492793f, 0.08537221f, -0.062446814f, + -0.22645412f, 0.05644324f, 0.06631799f, 0.08546292f, + -0.45039618f, -0.10834065f, -0.41716492f, -0.009549151f, + 0.13853107f, -0.25366473f, -0.035752945f, 0.095722385f, + 0.3454757f, -0.0024262394f, -0.024842797f, -0.058163628f, + 0.003748294f, -0.20092212f, -0.1636033f, 0.04170323f, + -0.012188888f, 0.024498971f, -0.22068584f, 0.08202344f, + -0.10583735f, 0.093302906f, 0.13873139f, -0.06824633f, + -0.026937071f, -0.029902417f, -0.006228726f, -0.09269274f, + 0.033455838f, -0.111818865f, 0.101494685f, -0.0943401f, + -0.04984743f, -0.19620828f, 0.06361557f, 0.008574682f, + 0.0064347633f, 0.024299923f, 0.08337907f, 0.10065298f, + 0.020795407f, -0.35476524f, 0.051008116f, 0.03787163f, + -0.28726056f, 0.041256476f, -0.013203858f, 0.19011863f, + -0.014345373f, -0.11963287f, 0.060224358f, 0.001624695f, + 0.027478257f, 0.17466614f, -0.113667026f, -0.0711722f, + -0.47591582f, -0.008747455f, 0.13125208f, -0.04413978f, + -0.03169427f, 0.37471533f, -0.12064751f, -0.2754032f, + 0.16328976f, 0.087605156f, 0.11883878f, -0.2686852f, + 0.14912747f, 0.9129003f, 0.24462488f, -0.019842597f, + -0.3038397f, 0.059876975f, -0.014393491f, 0.3249037f, + 0.03216904f, -0.05964532f, 0.36229244f, 0.030768696f, + 0.026031945f, -0.15866566f, -0.31903645f, -0.69639254f, + -0.7310048f, 0.15564294f, -0.13840768f, 0.23754539f, + -0.098436296f, 0.055268507f, 0.0055405037f, 0.05974476f, + -0.041789416f, 0.73346573f, 0.13617736f, 0.12714507f, + -0.884539f, 1.0091012f, 0.3021098f, -0.0323887f, + -0.009044974f, -0.011013575f, 0.025212489f, 0.25568038f, + -0.01995673f, -0.2970408f, -0.031074863f, 0.091080666f, + -0.36696315f, -0.048830986f, -0.14328952f, -0.008649576f, + 0.21956812f, -0.21225096f, -0.20690781f, 0.09359085f, + -0.106459245f, 1.0114702f, -0.04040631f, -0.37932363f, + 0.3244153f, -0.06164259f, 1.2034312f, 0.113387905f, + -0.79045904f, 0.025537603f, -0.57895124f, -0.25736755f, + 0.33763042f, 0.13629328f, 0.3228019f, -0.2460714f, + -0.34749082f, -0.21221468f, 0.013229358f, 0.007849904f, + -0.09439048f, -0.10041404f, -0.014329191f, 0.342001f, + -0.07612257f, 0.4310619f, 0.004858797f, -0.3741592f, + 0.01888924f, -0.29911962f, 0.52158684f, 0.3568788f, + -0.28992397f, -0.30242366f, 0.028908376f, -0.0120418025f, + 0.21593833f, 0.007795788f, -0.13440005f, -0.056530222f, + 0.07584264f, -0.7728734f, 0.011301854f, -0.0566521f, + 0.5026326f, 0.8227943f, 0.5819271f, 0.018348988f, + -0.03106895f, 0.024701858f, -0.06298925f, -0.4247193f, + -0.62038875f, -0.03146938f, 0.072699495f, 0.5364508f, + 0.024669126f, 0.072877705f, 0.062296472f, -0.08051034f, + 0.048950087f, 0.30924484f, 0.17977136f, -0.23923962f, + 1.4299453f, 0.5247971f, -0.72291213f, 0.2517312f, + -0.7197519f, 0.034028362f, -0.7099122f, 0.034040168f, + 0.34438238f, -0.23541018f, -0.49269953f, 0.13248616f, + 1.0236604f, -0.078801826f, -0.16693637f, 0.17717649f, + -0.23573923f, -0.21141201f, -0.120655395f, 0.06266774f, + -0.8473835f, 0.009083969f, -0.026895434f, 0.22872835f, + 0.04944834f, 0.534406f, -0.99497485f, 0.32725906f, + -0.06416801f, -0.06948683f, 0.37052348f, 0.49556625f, + 0.46178114f, 0.08309768f, 0.094399646f, -0.14811659f, + -0.10934902f, -0.061819624f, 0.037856314f, -0.041314326f, + -0.022453394f, 0.026153205f, -0.3031349f, 0.073152505f, + 0.4636013f, -0.19611353f, 0.55364454f, -0.022579925f, + 0.013198554f, 0.04925085f, 0.08781529f, -0.30285686f, + 0.36973464f, 0.2965862f, -0.003569614f, 0.060436606f, + -1.1341517f, -0.000532439f, 0.04793594f, 0.07216132f, + -0.23346506f, 0.52479935f, 0.1464531f, 0.13617949f, + 2.0384896f, -0.105255336f, -0.59004164f, -0.30562738f, + 0.7177213f, 0.034921072f, 0.3205338f, -0.12601468f, + 1.1533227f, -0.3880056f, 0.043148294f, 0.42079985f, + -0.17193703f, 0.22619446f, 0.049354423f, -0.77775913f, + 0.20467025f, 0.0601003f, -0.1433114f, 0.062041957f, + -0.07125585f, -0.025515977f, 0.055646036f, -0.16891506f, + 0.0066119856f, 0.18186113f, -0.28908655f, -0.07448616f, + -0.06099478f, -0.18463112f, 0.7408452f, 0.10451712f, + 0.59713185f, 0.011808154f, 0.19948347f, -0.1942559f, + 0.024249254f, -0.22222823f, -0.27743322f, -0.10082206f, + 0.1134088f, 0.10513429f, -0.00879327f, -0.18762848f, + 1.1399536f, -0.11029924f, -0.568332f, 0.07769343f, + 0.07679477f, -0.02207139f, 0.05998676f, -0.05264789f, + 0.61781216f, -0.69434506f, 0.023449317f, -1.0300057f, + -0.19697936f, -0.03363423f, 0.16260675f, 0.05975394f, + 0.45895565f, 0.28685907f, 0.76590514f, -0.02224205f, + 0.67116505f, -1.3962969f, -0.040076744f, -0.096626125f, + 0.06635505f, 0.09036792f, -0.45535806f, -0.080383174f, + 1.6122707f, -0.94417936f, 0.74903625f, 0.11030377f, + -0.4834179f, -0.53682107f, -0.6783411f, 0.33747366f, + 0.015411983f, 0.06155854f, 0.31879917f, -0.014756324f, + 0.4072679f, 0.14422415f, 0.02257583f, -0.9620533f, + 0.07302215f, 0.26378122f, -0.16962239f, 0.2761f, + 0.07420674f, -0.43746975f, -0.8725474f, 0.11385393f, + -0.7421569f, 0.039172374f, -0.24595444f, 0.25772554f, + -0.244946f, 0.24299788f, -0.3633344f, 0.29905078f, + -0.18191627f, 0.37074617f, 0.035404265f, 0.24358176f, + 0.27218568f, -0.632723f, -0.5817618f, -0.14074694f, + -0.004385921f, -0.06191797f, -0.106322676f, 0.86034644f, + -0.52116895f, -0.26144f, -0.13420281f, -0.6360968f, + 0.60241f, -0.1591222f, -0.09922482f, -0.25876456f, + 0.14535125f, -0.4541276f, 0.025239097f, 0.1718671f, + -0.53208625f, -0.5524315f, -0.039276343f, -0.30534968f, + 0.34853458f, -0.12443412f, -0.5872484f, 0.10676215f, + -0.34417072f, 1.1670928f, 1.0736312f, 0.07680264f, + 0.4156342f, 0.17537427f, -0.7665346f, -0.29354298f, + -0.0050023734f, -0.04258378f, -0.2387618f, -0.08467183f, + 0.42268723f, -0.08767258f, -0.047283344f, 0.23669867f, + -0.06780925f, -0.54969394f, -0.7190987f, -0.23302172f, + -0.014354179f, 0.30621633f, -0.3051999f, 0.2628563f, + 0.31594953f, 0.058032714f, 0.009820679f, -0.08672767f, + 0.17611031f, -0.04803902f, 1.2603974f, -0.13245155f, + 0.06519573f, 1.0150018f, -0.09415721f, -0.2405925f, + -0.20232332f, -1.3403261f, 0.10783294f, 0.10768811f, + -0.025393436f, 0.023185762f, 0.007885881f, 0.49237794f, + -1.0976028f, 0.13209686f, 0.07731457f, -0.16247457f, + 0.70454973f, 0.15993425f, -0.038257573f, 0.17631641f, + 0.074659236f, -0.11468215f, -0.19480796f, -0.10802724f, + -0.88421184f, 0.021586034f, 0.26105604f, -0.35078818f, + -0.73685634f, 0.023243247f, 0.31929913f, -0.033363067f, + -0.8641895f, 1.2458714f, 0.464125f, -0.490875f, + -0.40288174f, -0.39072502f, 0.8177878f, -0.08288707f, + 0.39277485f, -0.8122168f, 0.047632433f, -0.043179218f, + 0.6118364f, -0.03998651f, -0.03691527f, 0.04290488f, + -0.020977058f, -0.46612176f, 0.25268257f, -0.0069690985f, + 0.032162305f, -0.14446986f, -0.64998484f, 0.10407514f, + -0.022644442f, -0.18548883f, -0.076555066f, -0.052315116f, + 0.040487017f, 0.12418838f, -0.06581944f, 0.043230563f, + -0.053519256f, 0.26218545f, 0.10332675f, 0.28627408f, + -0.7922847f, -0.27413923f, 0.8562489f, -0.09338601f, + -0.07025838f, 0.062687986f, -0.021091377f, 0.38839665f, + -0.5097297f, 0.13570262f, -0.013551081f, 0.2850198f, + 0.43225703f, 0.059338875f, 0.014675641f, -0.292565f, + 0.08382532f, -0.5498127f, -0.011722153f, -0.033808995f, + -1.1456052f, -0.059543375f, -0.041206688f, -0.043054666f, + -0.2792654f, -0.034356803f, -0.30407497f, 0.039788257f, + -0.6693136f, -0.19416061f, 0.08250881f, 0.045018207f, + 0.09005202f, 0.13708596f, -0.7345606f, 0.032880202f, + 0.002773967f, 0.6933291f, -0.15152267f, 0.04124958f, + 0.2909599f, -0.0418392f, 0.044414714f, 0.3499032f, + -0.013567902f, -0.30224213f, 0.36684716f, -0.19976237f, + -0.08472514f, -0.49547845f, 0.5967588f, -0.3181031f, + 0.1909068f, 0.1631685f, 0.20300804f, -0.07398592f, + 0.08431161f, -0.31984255f, 0.30535796f, -0.2113431f, + 0.13565339f, 0.18804315f, -0.08895703f, -0.38672397f, + 0.3049398f, -0.36714885f, -0.5210866f, 0.13866353f, + 0.04745384f, 0.0021649874f, 0.10712952f, -0.26438662f, + 0.86476547f, -0.059409518f, 0.12085741f, 0.44303414f, + -0.031061662f, 0.0629151f, 0.07278105f, 0.3673688f, + 0.64466274f, -0.12810412f, -0.21832849f, -0.11059053f, + -0.9482539f, 0.4439253f, -0.22168507f, 0.40618593f, + -0.14485061f, 0.08350181f, 0.4896635f, -0.10057077f, + 0.11504429f, 0.120011166f, -0.36035705f, -0.4229199f, + -0.7256207f, 0.08285671f, 1.5316836f, 0.034197293f, + -0.14230463f, -0.341547f, 0.07439968f, -0.006914271f, + -0.45269355f, 0.08833469f, 0.011056307f, 0.024695158f, + 0.020084012f, 0.099096335f, 0.25358173f, 0.21398556f, + 0.07607506f, 0.97280204f, 0.013915502f, 0.28505942f, + -0.24482507f, -0.020727087f, -0.059841555f, 0.04802167f, + -0.10898688f, 0.21097082f, -0.38212472f, 0.15113872f, + -0.09283699f, -0.6528816f, -0.34464082f, 0.13450538f, + -0.2791918f, 1.1069067f, -0.5347909f, -0.066618524f, + 0.0010082513f, -0.07331504f, -0.094182f, -0.87208575f, + -0.37903002f, 0.97297215f, -0.109094866f, -0.046955086f, + -0.3483534f, -0.10977503f, -0.074627f, -0.06880349f, + 0.16807042f, -0.030140534f, 0.16189478f, 0.12817997f, + -0.7117143f, 0.009910748f, -0.05670285f, -0.04272981f, + 0.4868581f, -0.055356238f, 0.1437974f, 0.044802204f, + -0.2281682f, -1.0407685f, -1.10449f, 0.38705474f, + 0.55700284f, 0.054319266f, 0.17546584f, 0.09377478f, + 0.0691031f, 0.23006532f, -0.07407986f, 0.05488546f, + -0.40993392f, -0.08562034f, 0.025067156f, 0.085569486f, + -0.028683476f, 0.6317628f, -0.0062414776f, -0.10891703f, + -0.009419099f, -0.0017895151f, 0.15834562f, 0.008589931f, + 0.2575441f, -0.21115077f, 0.05117742f, -0.06665339f, + 0.14363325f, -0.03470979f, 0.038883667f, -0.09196877f, + 0.03184261f, 0.05478398f, -0.17630069f, -0.2573496f, + 0.12929407f, 0.7328931f, -0.14096919f, 0.06852452f, + 0.009680866f, 0.065612614f, 0.006132216f, 0.11632337f, + 0.10733758f, 0.6908586f, 0.009121123f, -0.104479045f, + -0.11740521f, -0.007743931f, 0.09066011f, -0.14430511f, + -0.34796375f, 0.21608111f, 0.09643164f, -0.097871475f, + 0.24798791f, 0.4424827f, -0.18372996f, 0.11532624f, + -0.14374557f, 0.10727805f, 0.095323585f, -0.037243757f, + 0.43360215f, 0.1262697f, -0.3113404f, 0.6261793f, + -0.55364215f, -0.055913005f, 0.13228677f, -0.21232735f, + -0.031071663f, 0.26775345f, -0.123087905f, -0.073548496f, + -0.04535448f, 0.05668471f, -0.039474994f, -0.015760496f, + 0.036642678f, -0.37976912f, 0.014344721f, 0.2764061f, + 0.003396505f, 0.091873795f, 0.027854813f, -0.021595705f, + -0.31558773f, 0.20808417f, -0.0008966157f, -0.046638113f, + -0.080795385f, 0.018209431f, -0.0038698066f, 0.0015695245f, + -0.037309095f, 0.27691674f, -0.24805611f, 0.01720194f, + -0.11822874f, 0.19693965f, -0.09978049f, -0.057651673f, + -0.013316525f, -0.025991902f, 0.023111572f, -0.059525117f, + -0.0031035386f, 0.44304305f, 0.015462055f, 0.09192947f, + 0.2348244f, 0.0653976f, -0.1023137f, -0.04301245f, + 0.25854537f, 0.32081884f, -0.050223034f, 0.081210405f, + 0.7892681f, -0.031089436f, 0.14434892f, -0.47456914f, + -0.12067732f, -0.1015324f, -0.004418794f, -0.009250439f, + -0.826756f, -0.76427954f, -0.0229488f, 0.09885697f, + -0.119204186f, -0.0637855f, 0.07313211f, 0.08560364f, + 0.2364243f, -0.24740186f, 0.15448801f, 0.06837843f, + 0.21489446f, 0.002055058f, 0.033073653f, -0.0029347318f, + -4.752986e-06f, 0.013927263f, 0.30982777f, -0.15801759f, + -0.02159852f, -0.008609173f, -0.79410297f, 0.30346203f, + 0.02432355f, -0.010910378f, -0.01586077f, 0.068648435f, + -0.05253993f, -0.059201702f, 0.01676645f, 0.021701114f, + 0.033603426f, -0.022794653f, -0.10687186f, 0.19401155f, + -0.68274987f, 0.11003813f, -0.11972349f, 0.0011492603f, + 0.022162398f, -0.011306055f, -0.0033036473f, 0.07259998f, + -0.05023286f, 0.2585532f, -0.02207043f, -0.024503613f, + -0.7715357f, -0.06987834f, 0.055681698f, 0.04510221f, + 0.28608975f, 0.08713987f, -0.16077831f, 0.006710155f, + 0.099058144f, -0.05270074f, 0.2631609f, -0.43805116f, + 0.41567963f, 0.036079973f, -0.2217559f, 0.026003951f, + -0.35580215f, 0.07116521f, -0.048763413f, -0.6043493f, + -0.17015582f, 0.18611456f, 0.17093529f, -0.111157656f, + 0.026508765f, 0.05328622f, 0.15068167f, 0.13175355f, + 0.026217207f, -0.021003423f, -0.045217324f, 0.023561416f, + -0.008302405f, -0.7257205f, -0.8346668f, 0.0052150004f, + -0.011936211f, -0.10524216f, 0.24904121f, -0.82284194f, + -0.5026786f, -0.04353961f, -0.06409287f, 0.15775245f, + -0.025749074f, 0.10089261f, 0.3199348f, 0.06713799f, + -0.023585148f, -0.19025435f, 0.062173232f, 0.1630595f, + -1.4069483f, -1.2519909f, 0.1506844f, 0.028279502f, + -0.020037215f, 0.05021318f, 0.031467505f, 0.13518126f, + -0.7949625f, -0.578399f, -0.029812563f, 0.020708252f, + 0.24983078f, -0.023186797f, -0.073338956f, 0.12228809f, + 1.0474988f, 0.026697708f, -0.16211182f, -0.02286698f, + -0.530206f, -0.15098804f, 0.4347541f, 0.12767296f, + -0.11545867f, 0.012850747f, -0.34616202f, 0.053013895f, + -0.6702074f, -0.5078009f, 0.3810539f, -0.71273243f, + 0.03393023f, 0.029582042f, -0.14617716f, -0.3602231f, + 0.36268297f, -0.10584018f, -0.14022973f, -0.14725831f, + 0.10291631f, -0.06593041f, 0.012531861f, 0.012344546f, + -0.049154114f, 0.24117942f, 0.0719334f, -0.17350358f, + 0.003915242f, -0.24474317f, 0.6478302f, -1.5262464f, + -0.12902346f, 0.029557541f, 0.1277067f, -0.09773165f, + 0.14675668f, -0.12938756f, -0.01681068f, -0.14215997f, + 0.064542994f, -0.5424284f, 0.16382688f, -0.079306f, + -1.0596013f, -0.6169577f, -0.70194364f, -0.006419877f, + -0.033150125f, 0.027010096f, 0.038551915f, -0.10990917f, + -0.2600481f, 0.5864274f, 0.07178996f, 0.089369096f, + 0.1686587f, 0.1164526f, 0.022910211f, -0.04381541f, + 0.7413507f, -0.22947909f, 0.001177176f, -0.070519485f, + -0.49329266f, 0.04367826f, -0.5298884f, 1.0154194f, + 0.08257006f, -0.014412054f, -0.33587262f, -0.036987413f, + 1.0232702f, 0.7374638f, -0.37531385f, 0.078159094f, + -0.42453313f, 0.13754259f, 0.3738883f, 0.20979722f, + 0.16062103f, 0.15277098f, -0.15460703f, -0.008163742f, + -0.6952092f, 0.061190665f, 0.014100509f, 0.14679798f, + 0.06300186f, -0.24652582f, 0.43501368f, 0.16905977f, + -0.0028131967f, 0.25045046f, 1.8537064f, -0.38158232f, + 0.2907746f, 0.037067577f, 0.023703957f, -0.17834178f, + -0.110688865f, 0.041320577f, -0.1739947f, 0.097147964f, + -0.038915772f, -1.0525107f, -0.18669376f, -0.18276736f, + -0.10204605f, -0.74495244f, -0.11965212f, -0.019543486f, + 0.0380155f, -0.06872461f, -0.06849624f, -0.04956384f, + 0.27530462f, -0.123560704f, -0.050031234f, -0.05998796f, + -0.5620408f, -0.062972575f, 0.06436391f, -0.05483286f, + 0.6969287f, 0.3106553f, 0.115848355f, 0.17155589f, + -0.33006325f, -0.01731338f, -0.5510372f, 0.28030333f, + 0.08703667f, -0.0038054627f, 0.17232978f, -0.027623452f, + 0.32169512f, -1.5871913f, -0.057548586f, 0.34266344f, + 0.5817186f, -0.038918745f, -0.12682343f, 0.19700053f, + -0.57196194f, -1.0830029f, 0.16090432f, 0.17087045f, + 0.43502557f, 0.0043005156f, 0.007888717f, -0.094669074f, + -0.0018399992f, 0.6866147f, 0.35908246f, -0.103262484f, + -0.028033085f, 1.1970206f, -0.33869582f, 0.92941f, + 0.6957342f, -0.054552928f, -0.043642055f, 0.17129679f, + -0.04842257f, -0.09996442f, -0.50748825f, 0.04595869f, + 0.06974046f, -0.3096483f, 0.18659435f, -0.177076f, + 1.2662702f, 0.55787104f, -0.2942221f, 0.040368367f, + 0.085443534f, -0.031215366f, 0.009762889f, -0.7305549f, + 0.07410768f, -0.16351777f, -0.004754955f, -0.30242857f, + 0.0056068245f, -0.11292729f, -0.0037507468f, 0.24091145f, + 0.12718472f, -0.06633802f, 0.68315405f, 0.007032978f, + 0.02001363f, 0.30205742f, -0.12953602f, 0.040600114f, + 0.051005676f, 0.03815344f, 0.66393584f, 0.037897f, + 0.59683746f, 1.4347484f, 0.56821597f, 0.13473532f, + 0.35953316f, 0.0563827f, -1.129347f, 0.14100431f, + -0.33619714f, 0.33980617f, -0.022705909f, -0.27767184f, + 0.35933244f, 0.109876886f, -0.032753777f, -0.4390094f, + 0.016726546f, 0.091009274f, -0.4375568f, 0.109843165f, + 0.10731138f, 0.6742454f, -0.72505414f, 0.8788859f, + -0.26461828f, 0.00014677049f, -0.25321773f, 0.039589442f, + -0.027948616f, 0.25999793f, -0.09067927f, 0.19287735f, + -0.1386475f, 0.09231071f, 0.63792086f, 0.0456562f, + 1.4802929f, -0.33638597f, 1.5548582f, -0.0755962f, + -0.06542752f, -0.109518394f, -0.21816503f, 0.32451048f, + -0.38606623f, -1.3467056f, -0.05771466f, 0.011806992f, + 0.24214269f, 0.054469414f, -0.12076603f, -0.18438731f, + 0.26150334f, -0.77964354f, 0.66036934f, -0.006907575f, + 0.94310176f, -0.047564626f, -0.12459562f, -0.1288331f, + -0.02310457f, -0.1432274f, -0.5919779f, -0.033097554f, + -0.047399458f, 0.6575466f, 0.47733974f, 0.27609003f, + -0.17208083f, -0.25832102f, -0.44431672f, -0.25788766f, + 0.0647812f, 0.18345042f, 0.065801516f, 0.11088621f, + 0.30694783f, -0.07969917f, 0.013065712f, -0.027408697f, + -0.03675291f, -0.22444597f, -0.26660684f, -0.0423065f, + -0.03671671f, 0.06147494f, -1.0272169f, -0.012600886f, + -0.18622403f, -0.009829057f, 0.17015405f, -0.011638127f, + 0.08327624f, -0.09933968f, 0.61040473f, -0.20746969f, + 0.052961357f, 0.06289247f, 0.15325418f, 0.32770425f, + 0.43237996f, -0.7207486f, -0.3597442f, 0.02313438f, + -0.022957202f, 0.12079732f, 0.17552765f, 0.09537385f, + -0.18647258f, 0.20771635f, 0.07975148f, 0.03185079f, + 0.58540964f, 0.06976464f, 0.040587377f, 0.06018017f, + -0.18940072f, -0.17524518f, 0.03268289f, -0.11436423f, + 0.40239325f, 0.035653744f, 0.35413626f, -0.2379591f, + -0.17466733f, 0.059225168f, 0.053488348f, 0.005287904f, + -0.20015226f, 0.59177816f, -0.24876745f, -0.14199366f, + -0.13058542f, 0.6742349f, -0.9208947f, -0.82893944f, + -0.12967128f, 0.46362147f, 0.0085395835f, -0.011128945f, + -0.041954752f, 0.098719165f, 0.044110432f, -0.116927594f, + 0.026879564f, -0.14542711f, 0.62152386f, 0.04561305f, + -0.052609798f, -0.0057426826f, -0.20440601f, 0.34141743f, + -0.17668298f, 0.16086818f, -0.16761118f, 0.18087144f, + -0.098341435f, -0.17910129f, 0.00588145f, -0.065292574f, + 0.040965915f, 0.14990978f, -0.26601386f, -0.17971718f, + 1.1753075f, 0.6090735f, 0.14474608f, -0.040550165f, + 0.030703275f, -0.005693001f, -0.0060431613f, 0.20193526f, + -0.11487033f, 0.20959593f, 0.05881714f, -0.28643057f, + 0.5993628f, 0.024360266f, -0.04903763f, -0.024807177f, + 0.2558259f, -0.0041167033f, 1.3278406f, -0.00022546915f, + -0.0066788085f, 0.11269115f, -0.6393286f, -0.13057902f, + 0.17305179f, -0.054360848f, 0.7104905f, 0.028987624f, + -0.018385831f, 0.2916586f, 0.07999739f, 0.18517292f, + -0.020511745f, -0.1408964f, 0.37775484f, 0.03706271f, + -0.14997162f, -0.22352493f, -0.095369905f, -0.078609355f, + 0.37362596f, -0.007422314f, 0.01716415f, -0.33643755f, + -0.011640838f, 0.9804831f, -0.8765342f, -0.11526846f, + 0.016241504f, 0.0834439f, 0.24938221f, 0.43530577f, + -0.17967409f, 0.060004942f, -0.18962084f, -0.057849843f, + 0.049205188f, 0.027014751f, -0.3618276f, 0.06463575f, + -0.008790414f, -0.41527075f, 0.33245564f, 0.0635144f, + 0.35435766f, -0.71002597f, 0.45353934f, 0.056404024f, + 0.04984829f, -0.07844404f, -0.10153153f, -0.16910267f, + -0.27426124f, -0.57366544f, -0.03872668f, 0.36981413f, + -0.20567529f, -0.0671241f, 0.038127255f, -0.1908396f, + -0.43794653f, -0.300699f, 0.03810855f, -0.04637313f, + -0.07825446f, -0.66607875f, 0.099506505f, 0.4618191f, + -0.21216582f, -0.012609533f, -0.66332155f, -0.050607603f, + -0.068617776f, 0.54738265f, -0.41726017f, -0.068510786f, + 0.2148451f, -0.27475464f, 0.32930395f, 0.51796204f, + 0.035376858f, 0.5729698f, 0.057437688f, -0.041185137f, + 0.19861127f, -0.0067881914f, -0.0354746f, 0.2985983f, + -0.030902801f, -0.22139318f, 0.33385754f, 0.09889366f, + 0.06312611f, -0.2605545f, -0.8692756f, 0.6506811f, + 0.27332118f, -0.22367969f, -0.15818653f, -0.08020813f, + 0.08442767f, 0.08438274f, 0.25335822f, -0.013252974f, + -0.0707109f, 0.60785663f, 0.059798244f, 0.020673513f, + 0.69145876f, 0.3078428f, 0.086675614f, -0.12633818f, + -0.1143299f, 0.05912017f, -0.060371514f, 0.18596748f, + 0.37670124f, -0.003628737f, 0.079237714f, -0.15343362f, + -0.35025606f, 0.062457837f, -0.030156262f, -0.35673183f, + 0.29073933f, 0.045790825f, 0.64579564f, -0.05976654f, + 0.15903799f, 0.043759156f, -0.29644904f, -0.432136f, + 0.10118945f, -0.011308259f, -0.12030175f, -0.062758f, + 0.084805444f, -0.8083226f, 0.43035427f, -0.18179037f, + 0.40694982f, 0.83693177f, -0.68118596f, -0.048874084f, + -0.41409034f, -0.9658551f, -0.1647207f, -0.060028862f, + 0.46796852f, -0.08843349f, 0.0018470837f, -0.027149493f, + -0.052258525f, 0.11657547f, 0.1357844f, -0.004508176f, + -0.018252524f, -0.3274388f, 0.19633138f, -0.45682177f, + 0.30466136f, -0.2587637f, 0.33736455f, -0.3494535f, + 0.13151664f, 0.14746036f, 0.7392358f, 0.028742446f, + -0.07479255f, -0.32294506f, 0.061178464f, 0.18492086f, + 1.2575277f, 0.52585644f, -0.458295f, 0.084664166f, + 0.005415777f, -0.0665856f, -0.050662316f, 0.05724804f, + -0.096814625f, 1.0459784f, -0.045347326f, -0.5063199f, + 0.60344905f, -0.010746045f, 0.25959834f, 0.03684422f, + 0.3755645f, -0.58493453f, 0.5561573f, -0.13981144f, + -0.2215942f, 0.16491924f, 0.14369565f, -0.5216677f, + 0.265607f, 0.12088327f, 1.1548406f, -0.16280115f, + -0.9972398f, -0.12449365f, -0.24688128f, -0.12873472f, + -0.03333164f, -1.0723888f, -0.017521527f, 0.097760566f, + -0.5475124f, 0.5536252f, 0.18261194f, 0.06514212f, + -0.2336779f, 0.002555238f, -0.0024142095f, -0.24205987f, + 0.038783897f, -0.55545896f, -0.017620027f, 0.1433381f, + 0.014220394f, 0.08684262f, 0.9545443f, -0.41551736f, + 0.20494984f, 0.05409108f, 0.11572054f, 0.063330464f, + -0.06993678f, -0.09732998f, -0.6020154f, -0.044715337f, + 0.03763303f, -0.09459819f, 0.22890855f, 0.18063238f, + 0.42201984f, -0.7593245f, 0.58606285f, -0.14459786f, + -0.048074257f, 0.14058621f, 0.16228783f, -0.005248199f, + -0.17536658f, -0.03920895f, 0.040929627f, 0.3210367f, + -0.51269615f, -0.025370827f, -0.043593645f, 0.20184574f, + -0.76075745f, -0.03160007f, 0.7261296f, 0.18416426f, + -0.38696828f, -0.11348639f, -0.3569068f, 1.190259f, + 0.48452505f, 0.0074393274f, -0.69991297f, 0.01420315f, + 0.8623881f, -0.7378301f, 0.34439692f, -0.15435752f, + 0.032793503f, 0.3598972f, -0.17439131f, 0.2123784f, + -0.43014812f, 0.062233f, 0.15052405f, 0.06728421f, + 0.2762911f, 0.11501471f, 0.004879046f, 0.59562266f, + 0.0379139f, -0.36828464f, 0.11159488f, -0.090248995f, + 0.0014012711f, 0.00839495f, -0.13987511f, 0.90194494f, + -0.7654592f, 0.28434956f, 0.10638739f, 0.27433598f, + -0.2084862f, 0.19358912f, 1.1313139f, 0.13933653f, + -0.05773256f, 0.44830528f, -0.11732113f, 0.073594145f, + -0.0051245736f, -0.34510124f, -0.6829936f, 0.13841322f, + 0.06736955f, -0.13331702f, 0.07526768f, 0.19182876f, + -0.23150502f, 0.86191076f, -0.11696823f, -0.22119623f, + -0.19162506f, -0.0735014f, -0.1773721f, 0.25855657f, + 0.16835546f, -0.19743842f, 0.025447622f, -0.034983907f, + -0.030079162f, -0.26982272f, -0.274046f, -0.4706862f, + -0.8860954f, -0.0883265f, 0.4923665f, 0.12776333f, + -0.6985579f, 0.7035462f, -0.573505f, -0.19217657f, + -0.12275149f, -0.44570956f, 1.1768265f, 0.5517704f, + -0.4743277f, 0.69454f, 0.20293105f, 0.29453084f, + -0.12017214f, -0.031464122f, -0.034596562f, -0.16331851f, + 0.024054134f, -0.15350792f, 0.5104947f, -0.13960429f, + -0.031589217f, 0.23318407f, -0.047485057f, 0.60308546f, + -0.4170153f, 0.053604674f, -0.15115482f, 0.18353412f, + -0.054382622f, -0.10619973f, 0.14280728f, -0.012675893f, + 0.08070296f, -0.20265356f, 0.51052827f, 0.041624393f, + 0.08734615f, 0.30017322f, -0.21919109f, 0.010112398f, + 0.04970472f, 0.1468012f, 0.14246646f, 0.29738256f, + 0.39467713f, -0.5914723f, -0.0011392761f, -0.6534514f, + -0.58961296f, -0.137007f, -0.12877026f, 0.17956233f, + 0.49242783f, -0.5456644f, 0.75918263f, 0.30353123f, + 0.05103957f, -0.7746776f, 0.2718962f, -0.16832887f, + -0.16596973f, 0.06909379f, -0.39522335f, 0.21909793f, + 0.12775636f, -0.49460694f, 0.37282586f, -0.027514068f, + 0.68375903f, -0.3336777f, -0.109146796f, -0.2857266f, + -0.5162939f, -0.5532106f, -0.06643443f, -0.28090572f, + -0.032329313f, 0.048060995f, -0.010584183f, 0.08611912f, + -0.00852446f, 0.43881863f, -0.15162201f, 0.057884566f, + 0.04682708f, -0.43206438f, -0.9950264f, -0.17777479f, + 0.3539261f, 0.059806917f, -0.14065355f, 0.0010142551f, + 0.017586324f, 0.21993496f, -0.3476685f, 0.070004694f, + -0.07171079f, 0.5529898f, 0.19610457f, -0.23854491f, + -0.16113456f, -0.58313465f, -0.66670287f, 0.047221616f, + -0.018200029f, -0.14062363f, -0.16721842f, -0.31761357f, + -0.17364737f, 0.09550011f, -0.016673448f, 1.2703098f, + -0.11997756f, 0.19467974f, -0.06230934f, -0.2797428f, + 0.51019675f, -0.08659786f, 0.24228068f, -0.29557306f, + -0.036805607f, 1.1115487f, -1.4618791f, 0.01937896f, + -0.66293925f, -0.11823256f, 0.012563107f, -0.027988309f, + -0.55198354f, 1.48292f, -0.2487565f, 0.2725445f, + -0.12893778f, 0.56532866f, -0.1898636f, 1.1753992f, + -0.85474813f, -0.74347305f, -0.226513f, 0.07298958f, + -1.0707071f, -0.12918127f, 0.0038514365f, 0.75334466f, + -0.02445111f, -0.13673548f, 0.8408102f, -0.011796719f, + -0.05825908f, 0.40508544f, 1.0070946f, 0.8512222f, + 0.580682f, -0.1543996f, 0.24988945f, -0.22670421f, + 0.14171122f, -0.30923358f, -0.39221507f, -0.19395508f, + 0.12736964f, -0.06346243f, -0.17747009f, -0.12067997f, + 0.12659909f, 0.37409833f, 0.4911539f, -0.032747656f, + -0.015764099f, 0.098963514f, 0.04324998f, 0.061905418f, + -0.17375757f, -0.8400404f, 0.05955598f, -0.22746526f, + 1.1662142f, 0.031076442f, 0.18904184f, 0.19436231f, + -0.041918986f, -0.313535f, -0.018078817f, 0.1301373f, + 0.4379767f, -1.0663239f, 0.23149821f, 0.19537582f, + 0.8177001f, 0.11316294f, 0.5923989f, -0.056942824f, + 0.10361174f, -0.63197005f, 0.11389801f, 0.28767753f, + -0.10785917f, -0.0028997986f, -0.31122452f, -0.048697572f, + 0.10340513f, 0.26811495f, 0.02385071f, 0.028452646f, + -0.49635813f, 0.002379026f, 0.011824669f, -0.12306075f, + -0.0022144208f, -0.4406479f, 0.2132567f, -0.12029822f, + -0.00083951454f, -0.039546967f, -0.41021103f, 0.45510072f, + 0.09671541f, -0.10612592f, -0.20379615f, 0.0033340752f, + -0.0081552705f, -0.053996276f, 0.032100677f, -0.0209379f, + 0.012087565f, -0.06712352f, 0.11062984f, -0.028603734f, + 0.41279152f, -0.0022300908f, 0.18050687f, -0.10287772f, + -0.021507537f, 0.043036792f, -0.04461817f, 0.0030169326f, + -0.1616123f, 0.149089f, 0.029395318f, 0.20086749f, + -0.34108025f, -0.016428098f, 0.057194266f, 0.044825077f, + -0.032594092f, -0.08138203f, 0.067586824f, -0.0007271414f, + 0.2607637f, -0.11909297f, 0.027430708f, -0.1262224f, + 0.091255896f, 0.005778258f, -0.17827f, -0.009833421f, + 0.07353523f, -0.6493434f, -0.1883088f, -0.28835455f, + -0.1078159f, -0.22515795f, 0.42343077f, 0.0073934714f, + -0.07775237f, 0.08020301f, -0.078097485f, -0.105158955f, + 0.35064107f, 0.024206674f, 0.023833247f, 0.21352105f, + 0.010686013f, 0.62904745f, -0.13217805f, 0.1025501f, + 0.0055421595f, 0.09314121f, 0.25391075f, -0.29046878f, + -0.17482565f, 0.030218355f, 0.07240809f, 0.0031198887f, + 0.0025917666f, 0.04565952f, 0.020857586f, 0.06252299f, + -0.022046385f, 0.1490084f, 0.045816485f, 0.10913728f, + 0.499339f, -0.052541234f, -0.16371772f, 0.084730044f, + 0.04129974f, -0.0941789f, -0.0027805853f, -0.18353815f, + 0.16755617f, 0.1028595f, -0.07512991f, 0.114224814f, + 0.3569994f, -0.024968363f, 0.032140683f, -0.22413824f, + -0.50803405f, 0.21814808f, -0.25306115f, -0.029509235f, + -0.08627275f, -0.28849718f, -0.07246629f, -0.1204825f, + -0.0023493909f, 0.014092514f, 0.5053854f, 0.024695236f, + -0.27239412f, -0.15073039f, 0.02492758f, 0.3631751f, + 0.15844767f, -0.04642232f, -0.24611035f, -0.07490449f, + -0.055985406f, -0.040833198f, 0.1283129f, 0.04731968f, + -0.08914244f, 0.0091035245f, 0.023777392f, 0.019496769f, + 0.0051546968f, 0.070326135f, 0.18791635f, 0.0601067f, + -0.0052290894f, -0.18046115f, -0.063175835f, 0.24250478f, + -0.274263f, -0.08791708f, 0.16429912f, 0.005448248f, + -0.022674154f, 0.059742913f, -0.064498246f, -0.0037776513f, + -0.029013874f, -0.25364783f, -0.015377337f, 0.04581958f, + 0.26069716f, -0.21741578f, 0.0053679748f, -0.037854746f, + -0.051705696f, 0.029370528f, -0.010333309f, -0.034810916f, + 0.059809763f, -0.59215397f, 0.016021516f, -0.022767818f, + 0.1166717f, 0.0144192f, 0.026583314f, 0.10907548f, + -0.37963197f, -0.0335569f, -0.0011182226f, -0.088536836f, + 0.032055147f, 0.022710849f, -0.12237235f, -0.11469093f, + -0.21210971f, -0.03257199f, 0.40899962f, -0.04795021f, + -0.008442735f, 0.24859948f, -0.14580902f, -0.17078315f, + 0.20320588f, 0.027104031f, -0.06129194f, -0.02814229f, + -0.17939949f, 0.17422538f, -0.077081814f, -0.06134444f, + -0.11957499f, 0.024762228f, -0.011767404f, -0.21934804f, + 0.0026742625f, -0.37806046f, 0.395741f, 0.35451582f, + 0.03984193f, 0.2990162f, 0.15248322f, 0.63409054f, + -0.049523063f, 0.12907007f, 0.35311309f, 0.09635897f, + -0.05676273f, 0.20821944f, -0.2694863f, 0.01930387f, + -0.06410627f, 0.04208369f, 0.24951501f, 0.19093779f, + 0.3573838f, -0.59520483f, -0.13383949f, 0.088385336f, + -0.009618764f, -0.104598455f, -0.008538134f, 0.04333432f, + 0.19658424f, 0.7447745f, -0.04310788f, 0.2425188f, + -0.45809892f, 0.09552404f, -0.12543613f, -0.11057406f, + 0.5495674f, -0.17238289f, -0.024263157f, -0.13504346f, + 0.31844178f, 0.12674306f, 0.07616537f, 0.12903252f, + -0.053657874f, -0.072559476f, -0.4454876f, 0.011174537f, + 0.22073524f, 0.20383377f, 0.3207662f, 0.5224032f, + -0.15929484f, -0.33845553f, 0.52572143f, 0.019899f, + 0.020405946f, -0.6018185f, 0.18882087f, 0.15045601f, + 0.8992633f, -0.0073720347f, 0.010778583f, 0.41368032f, + 0.002764939f, 0.22914428f, 0.08554652f, -0.24111158f, + 0.0029605469f, 0.039361905f, -0.16735673f, 0.09448692f, + 0.63502353f, -0.28406873f, -0.27785093f, -0.07334996f, + 0.02057091f, -0.034106113f, 0.12507156f, 0.03880981f, + -0.009745902f, -0.049776305f, 0.20766719f, 0.06828406f, + -0.031883493f, 0.023847152f, 0.27061906f, -0.1189462f, + -0.027280282f, 0.122390114f, -0.027198102f, 0.06855315f, + -0.11524947f, 0.43170023f, 0.039990507f, 0.21404813f, + -0.2028136f, -0.10889018f, 0.08720372f, 0.21388337f, + -0.23414706f, -0.1951347f, -0.19234537f, 0.078535706f, + -0.2005093f, -0.37662098f, -0.35234085f, -0.04501241f, + 0.26853657f, 0.042732865f, 0.3904414f, -0.04193134f, + -0.1319489f, 0.020548036f, 0.58164674f, -0.5019735f, + -0.00360139f, 0.008710196f, -0.53809905f, 0.20433472f, + 0.05979546f, 0.5530417f, -0.10963971f, -0.10995569f, + 0.42611244f, -0.021491088f, 0.0223882f, -0.12059418f, + -0.03015182f, -0.0645243f, 0.3055774f, -0.15295373f, + 0.026462812f, 0.025397286f, -0.17185941f, -0.39315516f, + -0.3312435f, 0.18606834f, -0.14801937f, 0.07903748f, + 0.08059581f, -0.1194738f, 0.25239334f, -0.09264395f, + 0.052000247f, -0.03161937f, 0.11563025f, -0.20333059f, + 0.018767746f, -0.21142711f, 0.033453695f, 0.05486646f, + 0.018842708f, -0.049200125f, 0.04289644f, 0.060349777f, + 0.10841093f, -0.52317965f, 0.061054703f, 0.04386135f, + 0.04643112f, 0.11080242f, -0.10327854f, -0.087826066f, + -0.22801481f, -0.13845244f, 0.020444352f, -0.057976514f, + 0.42071402f, -0.1477805f, -0.21667919f, 0.031323623f, + 0.1021433f, -0.019618012f, 0.5704744f, 0.050565466f, + -0.1132876f, 0.38108015f, 0.89559615f, 0.26470417f, + -0.35218224f, 0.07094074f, -0.082870595f, 0.598978f, + -0.29158223f, -0.28026947f, 0.08005068f, 0.052471504f, + -0.62287796f, -0.020048285f, -0.0066040424f, 0.024922827f, + 0.008125545f, 0.42961928f, 0.29208717f, -0.24263906f, + -0.035120066f, -0.0034637484f, -0.41128638f, 0.5402242f, + -0.14740479f, -0.06506991f, -0.1535905f, -0.06305502f, + 0.04291404f, -0.1481976f, 0.13896187f, 0.014012274f, + 0.06013854f, -0.20381388f, 0.048039317f, -0.08725523f, + -0.040391516f, -0.10869383f, 0.03352583f, 0.006260872f, + 0.052461658f, 0.066925496f, 0.06255518f, 0.29096314f, + 0.096500345f, -1.0350126f, -0.005861517f, 0.305941f, + 0.20665193f, -0.08968552f, 0.062319644f, 0.03884756f, + 0.45326132f, -0.38024685f, -0.099675894f, 0.109421074f, + 0.028132925f, 0.1765073f, 0.048257437f, 0.097620904f, + -0.014895345f, 0.06464828f, -0.14183639f, 0.04086546f, + -0.20390834f, -0.12099001f, -0.008877763f, -0.32313755f, + -0.16096477f, -0.342688f, 0.88636404f, 0.17343438f, + -0.1578319f, 0.6337537f, -0.18106265f, -0.028100913f, + 0.15625139f, -0.0024134796f, -0.02507518f, 0.2740408f, + 0.0063930145f, -0.5271774f, 0.5852923f, 0.14737153f, + -0.014328431f, -0.3725874f, 0.054065894f, 0.17558894f, + -0.04583382f, 0.2741302f, 0.2072049f, 0.037100773f, + -0.03203545f, -0.0068311673f, -0.24766918f, -0.06598099f, + 0.009893676f, 0.22915947f, 0.23638669f, -0.22990292f, + -0.043377865f, 0.08146472f, -0.15124626f, 0.04700613f, + -0.004188818f, -0.04849851f, 0.010260099f, 0.16815564f, + -0.2421033f, 0.5608691f, 0.028587138f, 0.03534107f, + 0.04437917f, 0.12895173f, -0.09162607f, 0.06928925f, + -0.38815245f, -0.1275231f, -0.09601173f, -0.01757392f, + -0.45373854f, -0.042529546f, 0.032542404f, 0.1254749f, + -0.18202591f, -0.04533466f, 0.32147184f, -0.0029436506f, + -0.16672648f, 0.1898102f, -0.4047172f, 0.24937452f, + 0.39518636f, 0.2856015f, -0.18719803f, 0.21341841f, + -0.105118945f, -0.73317f, 0.0419687f, 0.038014386f, + -0.44953552f, -0.008781562f, -0.038692217f, -0.07130775f, + -0.0075867875f, 0.15706892f, 0.16502954f, 0.06308957f, + -0.012597183f, 0.14245723f, 0.5343113f, 0.12058092f, + 0.04816337f, -0.10404585f, -0.021507008f, -0.0800524f, + -0.022313768f, 0.05215755f, 0.09795594f, 0.049333427f, + -0.017702665f, 0.10952629f, 0.11397921f, 0.1449078f, + -0.33739704f, -0.078896254f, 0.110511266f, -0.026410189f, + -0.01439752f, 0.031203557f, -0.03112509f, -0.027734976f, + 0.07902446f, 0.12360821f, -0.04552893f, -0.04526376f, + 0.095318325f, -0.100349195f, 0.043086667f, -0.081863455f, + -0.20606963f, -0.18531309f, -0.018263036f, 0.13190107f, + 0.07888813f, -0.01382369f, 0.018464422f, 0.02618622f, + 0.062439315f, 0.027020983f, 0.29469058f, -0.03478768f, + -0.24600734f, 0.08285195f, -0.88827795f, -0.0962262f, + 0.24293824f, 0.07378746f, -0.18225484f, -0.012565531f, + 0.12814565f, -0.13082457f, -0.10122437f, -0.049953904f, + 0.3147195f, -0.043198477f, -0.024817107f, 0.021508185f, + -0.023242656f, -0.55942094f, -0.009363146f, 0.042884603f, + -0.004297196f, -0.01508818f, 0.020276075f, 0.21943416f, + -0.098088406f, -0.034750875f, 0.023339257f, -0.00033176175f, + 0.085179806f, 0.02886756f, -0.019651227f, -0.020029573f, + 0.007351027f, -0.18978223f, 0.12319732f, 0.14344627f, + 0.52407455f, -0.49374008f, -0.01802031f, 0.033477638f, + -0.03393009f, 0.005960792f, -0.024561897f, 0.037639778f, + 0.13082707f, 0.12536314f, 0.0028163525f, 0.008278291f, + 0.24157722f, 0.054332413f, -0.032833345f, 0.13896385f, + 0.12004303f, -0.13897906f, -0.0040197256f, -0.039096486f, + -0.5349053f, 0.03525455f, -0.0031136817f, -0.023776146f, + 0.6855273f, -0.0034104863f, 0.027913604f, -0.012732404f, + -0.10206741f, -0.06776763f, -0.20316778f, -0.09420485f, + -0.2835454f, 0.03141139f, 0.038135894f, 0.028089035f, + 0.1116777f, 0.38514847f, 0.13747084f, 0.08220727f, + 0.27208593f, -0.0029012512f, 0.011849713f, 0.01815216f, + 0.0124553f, 0.31097436f, -0.3655298f, -0.07899617f, + -0.016324779f, 0.110559925f, 0.29151034f, 0.004704325f, + 0.259912f, -0.02812138f, -0.09432197f, 0.008673609f, + -0.023071159f, -0.061535105f, 0.026601654f, -0.0061678486f, + 0.021016214f, -0.106803745f, 0.07087839f, -0.21975054f, + -0.06209465f, -0.22728893f, -0.044092316f, -0.0050268387f, + 0.030731624f, 0.046827227f, 0.05391278f, 0.13944063f, + 0.030861972f, 0.873758f, 0.0042389613f, 0.024148699f, + -0.4684984f, -0.048465192f, 0.03412932f, -0.07405764f, + 0.2723209f, -0.09946223f, -0.167358f, 0.046794392f, + -0.61188716f, 0.045533102f, -0.37822083f, 0.048472974f, + -0.49506643f, 0.046440955f, 0.158569f, -0.006109473f, + -0.20098878f, 0.19239779f, -0.050345175f, -0.25978413f, + 0.16562684f, -0.0070971833f, 0.23336567f, 0.07233002f, + 0.30231535f, -0.26421908f, -0.09739093f, -0.018538348f, + -0.5854403f, 0.003950279f, -0.00095332164f, 0.049794875f, + -0.008842661f, -0.27439782f, 0.2331019f, 0.007902495f, + 0.015512793f, -0.09043787f, 0.0056865923f, 0.11554465f, + -0.008732929f, 0.05358633f, 0.051173653f, -0.022386277f, + 0.004397757f, 0.015978128f, 0.0037322952f, -0.006059263f, + -0.0015184586f, 0.48015764f, 0.16693848f, -0.018343871f, + 0.4673947f, -0.4560093f, 0.02693681f, -0.034233626f, + -0.00915256f, -0.015059712f, -0.035003413f, 0.002898302f, + -0.030599644f, -0.001538352f, 0.013743077f, 0.017058363f, + -0.10197961f, 0.03865407f, -0.02194548f, 0.009667572f, + 0.27016306f, -0.12590827f, -0.13706999f, -0.013613967f, + -0.079895444f, 0.037849758f, -0.24419288f, -0.18340911f, + -0.1932865f, -0.030076161f, 0.042335976f, 0.020296862f, + -0.21950805f, -0.5662344f, 0.37949803f, 0.22107333f, + -0.25802281f, 0.1234263f, -0.6307055f, 0.060795095f, + 0.055129625f, 0.011179638f, 0.13345826f, 0.011835805f, + -0.26108626f, 0.034845825f, 0.019723834f, -0.09686462f, + 0.020925295f, -0.17766403f, 0.29346967f, -0.037207402f, + 0.005625791f, 0.17679776f, -0.47757193f, 0.22783616f, + 0.16516423f, 0.015435609f, -0.02372002f, 0.0536022f, + -0.052801516f, -0.013822196f, -0.11613216f, 0.001530818f, + -0.03145606f, 0.006045487f, 0.009529459f, -0.14042652f, + -0.13323236f, 0.27313554f, 0.1638065f, -0.025276538f, + 0.01514294f, -0.02124888f, 0.023400163f, 0.12592638f, + 0.120837614f, 0.15632197f, -0.027845526f, 0.08471428f, + 0.1802741f, -0.014137118f, 0.00631814f, 0.18426138f, + -0.4357598f, -0.034723498f, -0.11279939f, -0.03967317f, + 1.2227325f, 0.037458267f, -0.49046177f, 0.034628f, + -0.90939826f, -0.016180456f, 0.24080719f, 0.025757542f, + -0.21751052f, -0.10842869f, -0.0021742678f, -0.46703017f, + 0.1448441f, -0.06552447f, 0.34058526f, 0.33884957f, + 0.52796f, -0.20207123f, -0.11037399f, 0.050227724f, + 0.18499212f, -0.038110655f, -0.037496246f, -0.07423208f, + -0.015796147f, 0.7927077f, -0.019978128f, 0.13128003f, + -0.025423305f, -0.08123932f, -0.03515996f, -0.17574602f, + -0.42119622f, 0.0149783855f, 0.17337406f, -0.020909427f, + 0.0035510657f, -0.028585535f, -0.004857342f, -0.04000675f, + 0.020947661f, -0.8371577f, 0.18380268f, 0.12644005f, + -0.47416002f, -0.11229589f, 0.04878847f, 0.055968642f, + -0.0024506734f, 0.027739534f, 0.02975578f, 0.14149982f, + 0.017028997f, -0.930311f, 0.016942346f, 0.1260006f, + -0.31258988f, 0.00079154904f, -0.019085003f, -0.13274002f, + -0.8633556f, 0.13696687f, -0.26458025f, 0.03138964f, + -0.0044467505f, 0.20018221f, 0.44500586f, 0.19915874f, + 0.90545577f, 0.025314143f, 0.15985878f, 0.0029355786f, + -0.22377701f, 0.51731515f, 0.45001996f, 0.63877046f, + -0.37091684f, 0.024431072f, 0.10766028f, -0.27835217f, + 0.07619482f, -0.06065307f, 0.042444598f, -0.053410213f, + -0.2986331f, 0.046403732f, -0.015346399f, 0.13456061f, + 0.03224526f, -0.83799493f, -0.14640379f, 0.009240726f, + -0.004935805f, 0.022839667f, -0.40300173f, 0.29409474f, + -0.0057607866f, 0.010855908f, -0.1474261f, -0.02922972f, + -0.06759966f, 0.089326724f, 0.16961202f, 0.13192524f, + -0.035449278f, 0.0027146998f, -0.0068802205f, 0.043017272f, + 0.15714061f, -0.2815524f, -0.09183252f, -0.022902168f, + 0.03400313f, -0.038457677f, -0.06449285f, 0.014995363f, + 0.07312485f, -0.45351207f, -0.046386093f, -0.061988764f, + 0.4369888f, -0.031724986f, 0.023320282f, -0.038755704f, + -0.5915052f, 0.10639439f, -0.17455791f, 0.07786761f, + 0.33975995f, 0.18869898f, 0.47326547f, 0.061649017f, + -0.14124529f, -0.015207456f, 0.1424136f, -0.019343734f, + 0.17271714f, 0.27857488f, -0.026874544f, -0.24405365f, + 0.31561223f, 0.41891858f, 0.11224997f, -0.11666048f, + 0.50373906f, -0.34512606f, 0.0471324f, -0.03093332f, + 0.10824271f, -0.0068406085f, 0.04778212f, -0.061466023f, + -0.02312108f, 0.075250976f, -0.08324511f, -0.09799827f, + 0.019824369f, 0.13000363f, 0.028013133f, 0.40387544f, + -0.30719697f, -0.11252928f, -0.042437263f, 0.07551188f, + 0.06820186f, -0.0064464705f, 0.07779856f, -0.01744975f, + 0.01821874f, 0.055865876f, 0.053633522f, 0.08511449f, + -0.82246125f, 0.6942819f, -0.10645871f, 0.011099172f, + -0.0026968424f, -0.012094347f, -0.03705987f, 0.049437348f, + 0.087295756f, 0.13788779f, -0.0017246396f, -0.07767527f, + 0.39595684f, -0.006122576f, 0.0012576799f, -0.25704527f, + -0.010118404f, 0.09155252f, -0.38770628f, -0.11880891f, + 0.19410603f, -0.28863358f, -0.2086641f, -0.030381698f, + 0.5018192f, -0.011517371f, -0.21369566f, -0.0003515289f, + 0.19388983f, -0.023768121f, -0.09938848f, 0.43101996f, + -0.14072245f, -0.04065768f, 0.24480632f, -0.2633492f, + 1.4327307f, -0.047750115f, 0.056324914f, 0.03516344f, + 0.93008566f, 0.0150803225f, 0.01168994f, -0.10302992f, + 0.022748979f, -0.6068356f, -0.1422501f, -0.09841886f, + 0.048702933f, 0.0826839f, -0.07321677f, 0.67559403f, + 0.79227316f, -0.10862632f, 0.0060945577f, 0.006695339f, + -0.016319305f, 0.05437101f, -0.37131596f, 0.03014805f, + -0.002062072f, 0.11507918f, 0.2635469f, 0.08383332f, + -0.70387816f, 0.42497152f, 0.10203546f, -0.08018998f, + -0.054603316f, -0.0077110697f, -0.013247804f, -0.11852484f, + -0.09842244f, 0.70757586f, 0.013559294f, 0.120575815f, + -0.46216908f, 0.0029474732f, 0.032966305f, 0.13656545f, + -0.6969706f, -0.13113086f, -0.97098213f, 0.015276256f, + -0.22510596f, 0.4081767f, 0.44420186f, 0.110563464f, + -0.54222864f, -0.037506588f, 0.02831625f, -0.009117393f, + -0.06719863f, 0.31313667f, -0.06647934f, -0.46002543f, + -0.022920491f, 0.09747543f, -0.24225435f, -0.004130935f, + -0.38934442f, 0.66127276f, -0.12695555f, -0.033605516f, + -0.7961417f, -0.0032432426f, 0.008441953f, 0.21257626f, + -0.016288996f, 1.1996956f, 0.3340835f, 0.11949709f, + -0.022864364f, -0.015694587f, 0.57715863f, 0.26424572f, + -0.24560143f, 0.17708732f, 0.063311495f, -0.0708171f, + -0.0007125664f, -0.09685389f, 0.3315758f, -0.091069244f, + 0.01209538f, -0.113875f, -0.030776108f, -0.14427556f, + -0.34731078f, 0.41529083f, -0.21710064f, 0.060870852f, + 0.021573732f, -0.0010071248f, 0.053809386f, -0.0970529f, + 0.16180807f, -0.27731735f, 0.019589525f, -0.095141694f, + -0.044908058f, 0.013511503f, -0.01926103f, 0.048170235f, + -0.28182176f, -0.012095345f, -0.36596087f, 0.006421566f, + -0.06538939f, -0.109421834f, 0.8824174f, 0.06885478f, + 0.18075576f, 0.024379302f, 0.18025628f, -0.019628849f, + -0.22503045f, -0.12696771f, -0.24319525f, 0.17932092f, + 0.14960875f, 0.69117856f, -1.4270625f, -0.32188645f, + -0.03755734f, 0.43231627f, 0.27344498f, 0.033560924f, + 1.1308669f, 0.04170383f, 0.1161249f, 0.10290047f, + 0.0530178f, -0.8195372f, 0.14340809f, 0.10879339f, + -0.043373164f, -0.43373662f, -0.7149809f, 1.1578687f, + 0.15872958f, -0.26095676f, 0.008544403f, 0.14406952f, + -0.1551711f, -0.032760028f, -0.35688782f, 0.13357502f, + -0.0421035f, 0.027032234f, -0.60723954f, 0.20435102f, + -0.90069985f, -0.5856397f, -0.22282559f, -0.08883665f, + 0.050355405f, -0.04439032f, -0.08245036f, -0.788458f, + -0.3155508f, 0.83670884f, -0.108701706f, -0.30785736f, + -0.32631257f, -0.23052703f, 0.22810306f, 0.44281456f, + -0.4705631f, 0.5663604f, 0.18918629f, 0.10590219f, + -0.1455351f, 0.19328198f, -0.2400981f, -0.05998592f, + 0.5623979f, 0.097001106f, -0.40353534f, 0.043848418f, + 0.456702f, -0.43144557f, -0.33785933f, -0.3706261f, + 1.1067008f, 0.40675893f, 0.9274152f, -0.051574074f, + 0.8839249f, -0.74366623f, 0.11890916f, -0.103235565f, + -1.5255792f, 0.024603536f, -0.011608358f, 0.17900163f, + -0.006907739f, 0.84226966f, -0.63275164f, -0.11485185f, + 0.03924578f, 0.51860523f, -0.03599022f, -0.42553434f, + 0.4172557f, 0.049358927f, -0.06416589f, 0.07883076f, + -0.013297642f, 0.25293332f, 0.16869776f, 0.1012792f, + -0.06330224f, -0.63432425f, 0.21824975f, 0.06856262f, + 0.6994193f, 0.7477583f, 0.9774959f, 0.017727677f, + -0.034716215f, -0.042782422f, -0.008052741f, 1.035657f, + -0.067479916f, -0.27132487f, -0.066339836f, -0.18157004f, + 0.26824996f, 0.04687068f, -0.15052707f, 0.018096969f, + 0.8449519f, -0.43005812f, -1.0168953f, -0.07705452f, + 0.36830467f, 0.4051692f, 0.18784933f, -0.35108626f, + -0.38559297f, -0.07720277f, 0.12630236f, 0.11204054f, + -0.91436225f, 0.025883678f, 0.44053805f, -0.213017f, + -0.2928492f, 0.05987633f, -0.8528844f, -0.04857821f, + 0.43391976f, 0.7901487f, -0.4212125f, 0.0023572603f, + 1.3131862f, -0.13587925f, -0.09520163f, 0.11520859f, + -0.00813047f, 0.2944408f, 1.0980585f, 0.29993072f, + -0.022082832f, 0.02778601f, 0.43538338f, -0.24384092f, + -1.2781146f, 0.15771657f, 0.29441354f, -0.13121171f, + 0.14804596f, -0.19173783f, 0.051168624f, -0.20905086f, + 0.16868094f, -0.04476833f, -0.31413016f, 0.022419244f, + -0.8999571f, -0.24091925f, -0.7623511f, 0.09995056f, + 0.021532072f, 0.12541024f, 0.052111857f, -0.6608629f, + 0.3341795f, 0.53531605f, 0.08999461f, -0.2748625f, + 0.0072318274f, 0.1185038f, 0.09254412f, -0.16930209f, + -0.064442664f, 0.85797244f, -0.39353243f, 0.15833013f, + -0.4636985f, -0.6220491f, -0.5400674f, 0.013466545f, + 0.3331856f, 0.07091257f, -0.6538079f, -0.1378507f, + -0.3114638f, 0.2935725f, 0.096345544f, 0.7213372f, + -1.2269837f, -0.017123858f, -0.5396661f, -0.4916296f, + 0.8931927f, 0.35118255f, -0.2009332f, 0.14204225f, + 0.16218036f, -0.12993972f, -0.07924614f, 0.34760293f, + -0.03621517f, -0.4007723f, -0.52079713f, 0.16013288f, + -0.0430677f, -0.41912177f, -0.055401962f, -1.428964f, + -1.3050687f, 0.1899999f, -0.110783175f, -0.048614964f, + 0.17444819f, -0.13499539f, 0.30877525f, -0.2327158f, + 0.083536744f, 0.53665775f, -0.38396963f, -0.16236576f, + 0.9600668f, 0.4541576f, -0.2999582f, 0.17657375f, + 0.04377724f, 0.18074428f, 0.21977979f, 0.5505787f, + -0.103395306f, 0.7129558f, 0.121172756f, 0.13546136f, + -0.47305703f, 0.16746308f, -0.14553757f, -0.04561804f, + 0.48479232f, -0.3328849f, -0.26151845f, -0.2084257f, + 1.1460875f, -0.23668332f, -0.25610262f, -0.089146174f, + -0.77647907f, -0.0037573995f, 0.6741637f, -0.14048773f, + -0.6221517f, -0.26196465f, -0.009807167f, -0.38151476f, + 0.22459498f, -0.07089305f, 0.16412924f, -0.1293459f, + 0.61426514f, -1.0334557f, 0.09514511f, 0.09249334f, + 0.26159707f, 0.009998315f, 0.05313337f, -0.5256522f, + 0.010847101f, 0.3139725f, 0.6804452f, 0.08978289f, + -0.054747127f, 1.0444702f, 0.61659354f, -0.5281457f, + -0.58635783f, -0.16936389f, -0.16106062f, 0.071821086f, + 0.0426613f, 0.0908802f, -0.60721767f, 0.008533055f, + -0.08796371f, 0.24267612f, 0.3807761f, 0.2576938f, + -0.6127855f, 0.39873612f, -0.14775804f, -0.02616993f, + 0.03520407f, 0.009161252f, 0.054843195f, -0.45530772f, + -1.3475534f, 0.11622869f, -0.038118754f, -0.038863886f, + 0.7863937f, -0.0852492f, 0.07670303f, -0.12483307f, + -0.015962662f, 0.3269995f, -0.65947026f, -0.2022227f, + -0.3830443f, 0.26914337f, 0.22080901f, -0.23143372f, + 0.19871393f, 0.03182081f, -0.958576f, -0.006148306f, + 0.44442523f, -0.5235016f, -0.16473155f, -0.00992192f, + 0.22650743f, 0.9199526f, 0.83419585f, 0.07095824f, + 0.501555f, 0.7035568f, 0.14709425f, 0.017904542f, + -0.2677291f, 0.07288853f, -0.008064132f, -0.06682379f, + 0.031798385f, 0.071001664f, -0.6424995f, -0.3486101f, + 0.018727992f, -0.2315688f, -0.5667457f, 0.11074876f, + 1.9332623f, 0.029474514f, -0.16418712f, 0.04541509f, + -0.13292895f, 0.028867874f, -1.3022006f, 0.11640154f, + -0.01920953f, -0.62006533f, -0.5505404f, -0.2844522f, + -0.52363807f, -0.6837555f, 0.093828715f, -0.09230745f, + -0.05048977f, -0.06117303f, 0.01381257f, 0.52368695f, + 1.3251978f, -0.6155247f, -0.007610098f, -0.020798478f, + -0.5805758f, -0.039119244f, -0.086795874f, 0.08291792f, + 0.00070359284f, 0.5588407f, -0.18733822f, 0.062147915f, + 0.6697767f, 0.41353896f, 0.025852386f, 0.26192406f, + 0.30571306f, -0.056476418f, -0.17157991f, 0.16531716f, + 0.2866209f, 0.6697731f, 0.122195944f, -0.113161504f, + -0.37391457f, -0.7987454f, 1.2450209f, 0.49019933f, + 0.6739932f, -0.098775476f, -0.2564851f, -0.15068254f, + -1.5085335f, 0.004130357f, -0.062131178f, -0.33020082f, + -0.047211625f, 0.2771528f, 0.53378135f, -0.15624785f, + 0.05928804f, 0.06584822f, 0.2984388f, -0.9765585f, + 1.2350503f, -0.114633396f, 0.1906955f, -0.21492171f, + -0.011633641f, 0.0014652152f, 0.9080829f, 0.1070575f, + 0.054358974f, -0.022745285f, 0.3059878f, -0.19808389f, + 0.24186097f, 0.39925137f, 0.32213488f, -0.0952274f, + -0.10079685f, -0.040156223f, -0.21259901f, 1.2086188f, + -0.06512963f, -0.667859f, 0.07060303f, -0.23296306f, + -0.12101658f, 0.026949052f, 0.017586801f, -0.1256824f, + 0.06511041f, -0.56615907f, -0.2790471f, 0.23111467f, + -0.7856691f, 0.20491192f, -0.019779375f, -0.30925414f, + 1.0263277f, 0.010791247f, -0.06551615f, -0.012535733f, + -0.2902834f, -0.28435728f, 0.010028781f, 0.9002915f, + -0.29842392f, 0.3985661f, -0.8614803f, -0.27015483f, + 0.51365054f, 0.30395663f, 0.2924699f, 0.117928855f, + 0.86165893f, 0.042812224f, 0.024886062f, 0.2530027f, + 0.03725419f, -0.4264661f, 0.36368707f, -0.11930596f, + 0.032830935f, 0.56772715f, -0.30711728f, -0.3259382f, + -0.21833014f, -0.0056141755f, 0.011979107f, 0.07658037f, + -0.07724514f, -0.02407712f, 0.9055954f, 0.06467618f, + 0.033087723f, -0.1260806f, -0.01599623f, -0.12876435f, + -0.78646404f, -0.6839767f, -0.57551366f, -0.008397286f, + 0.03154252f, -0.032948818f, 0.0078097503f, -1.1159564f, + -0.003287688f, -0.2809574f, -0.07206684f, -0.15683028f, + 0.1586368f, -0.07397658f, -0.036657948f, 0.14605394f, + 0.30563095f, 0.6291867f, -0.058372285f, 0.030757058f, + 0.09309644f, -0.3968637f, -0.10592142f, -0.019093292f, + -0.63136995f, -0.0070336834f, -0.7626018f, 0.06323458f, + 0.6160151f, -0.60578287f, -0.17923558f, -0.721251f, + 0.009235223f, -1.128904f, 0.80081135f, -0.35650787f, + 0.5993158f, -0.81332076f, -0.06447643f, -0.1337139f, + -0.23357612f, 0.021778248f, 0.0043384563f, -0.1377817f, + -0.00035422243f, -0.26804897f, -1.0395012f, 0.1168438f, + -0.0004786811f, -0.83572537f, 0.047964826f, 0.8247533f, + -0.19838925f, 0.08519004f, 0.010267759f, 0.0269608f, + 0.040442836f, 0.00046344128f, -0.22803728f, -0.06039478f, + -0.050429977f, 0.92023444f, 0.07921451f, 0.25079146f, + -0.13455756f, 0.02780637f, 0.04717037f, 0.059798628f, + 0.04714152f, -0.053737387f, -0.0363493f, 0.59416914f, + 0.44908488f, -0.5432389f, 0.004431339f, 0.050673325f, + 0.19572605f, 0.05607985f, 0.019816888f, -0.12899782f, + 0.012221228f, 0.13783246f, -0.14436783f, -0.123618655f, + -0.58057165f, 0.10399899f, 0.28930834f, 0.034274314f, + -0.6180659f, -0.050233517f, 0.33322468f, -0.08538325f, + -0.20860527f, 0.5722944f, 0.20229538f, 0.15640505f, + -0.1951563f, 0.035489276f, 0.00260116f, -0.00523914f, + 0.11714596f, -0.8656974f, -0.035925325f, -0.042809464f, + -0.0925829f, 0.055274587f, 0.029501f, -0.013476584f, + 0.029792221f, 0.06604819f, -0.43852723f, 0.076669626f, + 0.0159574f, 0.07073936f, -0.05419903f, 0.13199222f, + -0.27488518f, 0.11464401f, -0.08425247f, 0.002335409f, + -0.06850166f, 0.028359368f, -0.09814469f, 0.09970061f, + -0.040130116f, -0.06733076f, 0.03023095f, -0.17323971f, + 0.080122925f, -0.51894635f, 0.07574046f, -0.043324634f, + 0.008362967f, -0.03865271f, -0.059855856f, -0.0021307615f, + 0.0449613f, -0.11843732f, -0.0018252633f, 0.07255008f, + -0.013814896f, 0.026467687f, -0.04305411f, 0.14773378f, + -0.6031997f, -0.053566556f, 0.4925311f, 0.04727836f, + -0.41661814f, -0.14085284f, 0.09322934f, 0.054421626f, + 0.3127133f, -0.03891428f, -0.043461114f, 0.011074396f, + 0.0878583f, 0.21976912f, 0.80715466f, -0.25358108f, + -0.14139654f, 0.024900498f, -0.027325245f, -0.20966733f, + 0.2519835f, 0.33201054f, 0.0125616845f, 0.041223172f, + 0.15647507f, -0.029423654f, -0.016578779f, 0.065477505f, + -0.030167408f, -0.693142f, -0.5450196f, -0.015183359f, + -0.021198729f, 0.020915985f, -0.014155954f, -0.13982634f, + -0.3610945f, -0.026683128f, 0.061927788f, 0.0660015f, + 0.0037778665f, 0.15056227f, 0.09819291f, 0.051851742f, + -0.02538399f, 0.29822433f, 0.07628588f, 0.26358724f, + -0.09566724f, 0.018405784f, -0.048937846f, 0.044444215f, + 0.03675848f, 0.020041034f, 0.007537844f, 0.0031798508f, + -0.0019116341f, 0.24465722f, -0.08825009f, 0.07783168f, + -0.38458478f, -0.095040455f, 0.055911794f, -0.23567419f, + -0.03736208f, -0.032930057f, 0.115403764f, -0.12986329f, + 0.33318236f, -0.046051428f, 0.22301817f, 0.10900298f, + 0.014938879f, 0.018196408f, -0.17841704f, 0.014522904f, + 0.26520267f, -0.32917446f, -0.48388118f, -0.10822693f, + -0.17988275f, -0.048920922f, -0.13267308f, 0.10331466f, + 0.07292531f, -0.30687705f, -0.02889184f, -0.07767194f, + 0.6625633f, -0.035950214f, 0.00012263116f, 0.053871058f, + 0.0021171048f, 0.6414839f, 0.008733576f, -0.049900644f, + 0.037345998f, -0.076802395f, 0.16524707f, -0.06647357f, + 0.15391034f, -0.1342831f, -0.018381879f, -0.025339417f, + 0.09712461f, -0.109234326f, 0.0012208272f, -0.08913064f, + 0.036340605f, -0.046410896f, 0.08539788f, -0.18656294f, + -0.17848419f, 0.30998886f, 0.107010104f, 0.02898396f, + -0.077091336f, 0.019933132f, -0.0065363995f, -0.0390339f, + 0.08004317f, 1.0556873f, 0.014977172f, 0.04138566f, + 0.48318702f, 0.036574647f, 0.0049679894f, -0.094602324f, + -0.20561148f, -0.059051894f, -0.02188951f, 0.07656102f, + -0.18845052f, 0.098482706f, 0.1237382f, -0.0017177716f, + 0.40376475f, 0.00602456f, 0.05508343f, -0.0024579966f, + -0.10215995f, 0.255864f, -0.3334859f, 0.29842615f, + 0.19806167f, 0.0041016857f, -0.045689475f, -0.22419053f, + 0.23886828f, 0.60349303f, 0.14400637f, 0.03463518f, + 0.5574547f, -0.076435156f, -0.026638795f, -0.021511849f, + -0.049276665f, 0.22524874f, -0.71765876f, -0.05725931f, + -0.024562858f, -0.012787695f, 0.04351638f, -0.019371534f, + 0.29008928f, -0.042237256f, 0.31514862f, 0.081833325f, + 0.08148545f, 0.09293174f, -0.011612612f, -0.16558166f, + -0.0096260775f, 0.02161549f, -0.0112405205f, 0.27253276f, + 0.31644747f, -0.29599145f, 0.08207675f, 0.050390147f, + -0.056033887f, 0.06361624f, 0.13849421f, 0.14592321f, + 0.15988418f, 0.40676513f, 0.06298408f, 0.087519154f, + -0.54502535f, 0.11638707f, 0.037567124f, 0.010642494f, + -1.0438752f, -0.054054935f, 0.073006086f, -0.28454965f, + -0.18334194f, -0.14479207f, 0.0424794f, 0.0326943f, + -0.59113944f, 0.024888208f, -0.25304464f, -0.015887212f, + -0.10324434f, 0.16133873f, -0.5858591f, 0.14103472f, + 0.12950052f, -0.018725455f, -9.2088165e-05f, -0.16737019f, + 0.06997384f, 0.40152124f, -0.2334527f, 0.05982977f, + -1.9532087f, 0.006999352f, -0.023726063f, 0.11998708f, + 0.04317772f, 0.9577386f, -0.55170596f, 0.09410102f, + -0.035674036f, -0.22209407f, 0.22745277f, 0.11981369f, + 0.00730309f, 0.09632823f, 0.0308403f, -0.26484054f, + -0.030545844f, -0.35663304f, 0.077793136f, -0.16449389f, + 0.107675456f, 0.39692777f, -0.0222415f, -0.4044488f, + -0.027650315f, -0.07484659f, -0.12671652f, -0.060629636f, + 0.0324065f, -0.052854598f, 0.030305514f, 0.058448207f, + -0.032908674f, -2.1542811f, 0.046520453f, -0.18021324f, + -0.09497368f, -0.042631783f, 0.04589941f, 0.29218572f, + -0.33153504f, 0.022215495f, 0.1762381f, 0.19239554f, + 0.3268171f, 0.05581724f, 0.060629424f, 0.018504458f, + 0.27673578f, 0.06248363f, 0.08346411f, -0.052171167f, + -0.022954326f, -0.21938218f, -0.7242596f, 0.17057201f, + 0.4366095f, -0.094539225f, -0.064790055f, -0.28984737f, + 0.21500225f, 0.010604105f, 0.17104705f, 0.044787467f, + 0.23970021f, 0.106481545f, 0.045397718f, -0.065542795f, + 0.013406408f, -0.6831407f, -0.5379205f, -0.12010375f, + 0.015249491f, 0.0020471644f, -0.51495075f, -0.029751332f, + 0.034397732f, 0.10758866f, -0.22559164f, 0.1284714f, + -0.17628571f, 0.19511342f, -0.09805319f, 0.18637644f, + -0.111540265f, 0.3081401f, 0.15439875f, 0.095545106f, + -0.15705565f, 0.058271613f, 0.14238057f, -0.03784558f, + 0.02376647f, -0.103223f, -0.051654853f, 0.012567821f, + 0.06581471f, -0.6616009f, -0.023259278f, 0.06969727f, + 0.91234076f, -0.06734763f, -0.10037533f, -0.049375407f, + -0.31156683f, -0.2306018f, -0.032835282f, 0.030154409f, + 0.12369459f, 0.22675847f, 0.0925969f, 0.053020943f, + -0.31226787f, -0.08654173f, -0.10802298f, 0.055082303f, + -0.11445066f, 0.035009056f, 0.1457155f, -0.32004827f, + 0.20039676f, 0.04127983f, -0.1329818f, -0.09584188f, + 0.049369767f, 0.35064837f, 0.010994265f, -0.029457219f, + -0.54077715f, 0.030342322f, -0.041334983f, 0.008264627f, + 0.018087339f, -0.258081f, -0.2162387f, -0.05608222f, + 0.017091196f, -0.05847839f, -0.007070343f, -0.03867453f, + -0.46562555f, -0.085384905f, -0.25887072f, -0.018860037f, + -0.021268746f, -0.03830116f, 0.09298332f, 0.03462217f, + -0.00408626f, -0.07375606f, 0.0037044873f, 0.09342416f, + -0.19710895f, -0.012752456f, 0.058017038f, -0.073439986f, + 0.05719994f, 0.039297033f, -0.047766402f, -0.032661807f, + 0.19974704f, 1.271454f, -0.017191906f, 0.06850513f, + 0.28166613f, -0.025342416f, -0.08528757f, -0.33707255f, + -0.38227063f, 0.10250798f, 0.004841728f, 0.03742791f, + 0.32143798f, 0.002745668f, 0.06336381f, -0.018980201f, + -0.01793705f, -0.021121351f, -0.085057445f, 0.0048501347f, + 0.07522239f, 0.06463435f, 0.2790059f, 0.120004445f, + 0.08935567f, -0.1848386f, -0.21225686f, -0.17598732f, + 0.12525073f, -0.505394f, -0.04926369f, -0.10178535f, + -0.38714752f, 0.0102235535f, 0.053178445f, 0.04799545f, + -0.036673207f, -0.35414428f, -0.36733472f, 0.04380015f, + 0.0007702168f, -0.14980146f, 0.099212244f, 0.3452338f, + 0.772548f, 0.06750321f, 0.1284594f, 0.0060611637f, + 0.002968111f, 0.065291315f, -0.01730362f, -0.018455656f, + -0.025976017f, 0.14625043f, -0.15938304f, 0.23217082f, + -0.20198384f, -0.08315824f, -0.08546721f, 0.04844779f, + -0.032480776f, -0.028455008f, -0.009889058f, -0.03184275f, + -0.12810597f, -0.42710233f, -0.0109179f, 0.044150945f, + -0.62841445f, 0.068451926f, 0.019271798f, -0.09154203f, + -0.07783349f, 0.11026129f, 0.060383108f, 0.04872122f, + 0.3926573f, 0.012616217f, -0.13129878f, 0.030001648f, + -0.10219046f, -0.031074429f, 0.01756158f, 0.031905703f, + 0.03530113f, -0.27273118f, 0.5581858f, 0.03489273f, + -0.47374326f, 0.04271603f, -0.26016548f, -0.17242143f, + 0.083921425f, 0.16273628f, 0.022070494f, 0.06694596f, + 1.2020682f, -0.062563635f, -0.0021903757f, -0.057330657f, + -0.009245587f, 0.18783298f, -0.19770378f, 0.06958329f, + -0.0042164144f, -0.015784578f, 0.10699134f, 0.018414944f, + -0.22627847f, -0.07095257f, 0.07595459f, -0.0060155685f, + 0.09468074f, -0.06273056f, 0.15193193f, 0.03945303f, + 0.045170616f, 0.25282955f, -0.0070595783f, -0.16088043f, + -0.019908732f, 0.18589222f, 0.084458575f, 0.010455841f, + -0.0152623085f, 0.07215608f, 0.0009366895f, -0.020401377f, + 0.20492242f, 0.44521898f, 0.023138275f, 0.028447064f, + 0.04365213f, -0.018234678f, 0.056997325f, 0.3157128f, + -0.28641942f, 0.04450026f, -0.033620626f, 0.022331519f, + 0.34950668f, 0.022177884f, -0.07992645f, 0.018405449f, + 0.02057319f, 0.048855215f, 0.043158602f, -0.054629926f, + 0.06509705f, 0.2053433f, 0.38571423f, -0.03797933f, + 0.083450645f, -0.2056019f, 0.358288f, -1.0882009f, + 1.044153f, 0.60942477f, 0.52946913f, 0.17119163f, + -1.8241085f, 0.0012870888f, -0.40640578f, -0.8919643f, + -0.045026515f, -0.19109821f, 0.105489105f, 0.1347114f, + 0.32410064f, -0.28438863f, 0.28246036f, 0.4698521f, + -0.024851965f, 0.31705162f, -0.012393425f, 0.3228989f, + -0.38239938f, -0.03573651f, -0.116464615f, 0.14770032f, + 0.18008621f, -0.28077868f, -0.16730845f, 0.7642431f, + 0.05702368f, -0.3618613f, -0.03752008f, 0.1276643f, + 0.585361f, 0.13131131f, 0.34870395f, 0.097988956f, + -0.9440607f, -0.8156008f, 0.542215f, -1.0622357f, + -1.2093229f, -0.028241295f, -0.37565634f, 0.056919876f, + -0.2566839f, 0.3706058f, -1.5781128f, -0.034979932f, + 0.44122815f, 1.5565364f, -1.092863f, -0.26069966f, + -0.39675742f, -0.2280764f, -0.45980212f, -0.06134742f, + -0.6439414f, -0.678432f, -0.6946537f, -0.4837176f, + 0.22989343f, -0.16262585f, -0.10763161f, 1.2735995f, + -2.611971f, 0.32058582f, 0.22926573f, -0.10774189f, + -0.04344231f, 0.24270056f, 0.16497988f, 0.15714072f, + 0.2453246f, 0.12365604f, -0.3913497f, 0.61954415f, + -0.17122683f, -1.4253494f, 0.1127127f, 0.023995692f, + 0.024869462f, -0.29902044f, -0.26263312f, 0.47802868f, + -0.32147306f, 0.077146426f, 0.010293978f, -0.21543998f, + -0.10336599f, -1.2145187f, -0.17670819f, -0.4002358f, + 0.22584915f, -0.21680029f, 0.48625138f, 0.49151638f, + -0.13093252f, -0.26237968f, -0.5278925f, 0.16321336f, + 0.5690105f, -0.5112523f, -0.089270934f, -0.13898171f, + -0.47337592f, -0.3744153f, 0.057539985f, 0.5580325f, + -0.035433862f, 0.6760848f, 0.19995344f, -0.54381245f, + -0.22176597f, -0.12168725f, -0.42341638f, -0.7986522f, + -0.28170484f, 0.22935377f, -0.53817356f, -0.030964233f, + 0.7528043f, 0.24753556f, -0.916136f, -0.42756617f, + -0.7561556f, 0.4255967f, 0.061073612f, -1.4448339f, + 0.57950056f, -0.1127676f, -0.7141033f, -0.25081292f, + -0.8253535f, -0.060443986f, -0.20467696f, -0.04282472f, + -0.07094801f, -0.49331743f, -0.46969727f, -0.19542745f, + -0.0876794f, 0.46404946f, -0.20085783f, 0.5877174f, + 0.82792497f, 0.1019625f, -0.42393664f, -0.32311028f, + 0.2498841f, -0.45480978f, -0.23881118f, -0.27658638f, + 0.07408136f, -1.1649203f, 0.6975732f, 0.94062513f, + 1.1708267f, 0.12317601f, 0.9348379f, -0.4419651f, + -0.014853415f, 0.21758366f, -0.33138883f, 0.39484277f, + 1.1961426f, -0.11841996f, 0.019238638f, -0.1836641f, + 0.47974685f, 0.051553432f, 0.04099308f, 0.37553495f, + -0.04412717f, -0.71599615f, -2.0871377f, 0.23622243f, + 0.6459249f, -0.06223594f, 0.01071146f, 0.031624436f, + 0.6049173f, 0.13436185f, -0.16711712f, -0.23211168f, + -0.17078047f, 0.25401577f, -0.62266016f, 0.15229857f, + 0.47099158f, -0.1020257f, 0.082030706f, 1.9658407f, + -1.0350881f, -0.42723382f, -0.7016447f, 0.04670338f, + -0.19755244f, 0.013301972f, -0.0843772f, -0.3032081f, + -0.088372536f, 0.50299686f, 0.14063622f, -0.21735144f, + 0.047415778f, 0.8248845f, -0.5983825f, -0.3560128f, + 0.40233958f, 0.25023186f, 0.5597686f, 0.048692603f, + 0.029116515f, 0.66833055f, 0.46785906f, 0.3770389f, + -0.15532613f, -0.77030236f, -1.0823834f, -0.103778824f, + 0.21527937f, -0.22081487f, 0.40046063f, -0.16350305f, + 0.18020043f, -0.22445558f, 0.074948095f, 0.2930067f, + 0.87447053f, -0.34310904f, -0.30743968f, -0.10708731f, + 0.53745425f, -0.23701525f, -0.087258264f, 0.12586306f, + 0.17686228f, 0.81247056f, 0.70698035f, -0.019617625f, + -0.30278456f, -0.11351319f, -0.016652435f, -0.6788282f, + -0.037676774f, -0.17413494f, 0.19457111f, 0.21033093f, + -0.6760032f, 0.013517719f, 1.0470651f, 0.6049789f, + 0.6288979f, -0.31071478f, -0.18501133f, 1.4159018f, + -0.6813209f, 0.62685686f, -0.1943052f, -0.43075526f, + 0.11530699f, -0.09271856f, 0.19049548f, -1.0824263f, + -0.24771369f, 0.30014816f, -0.25779402f, -0.558056f, + -0.28753507f, -0.10797906f, -0.6166454f, -0.2680475f, + -0.47127837f, -0.7913265f, -0.37690642f, -0.39561892f, + 0.3623609f, -0.39860597f, 0.0044880705f, -0.32289577f, + 0.0012867454f, 0.35456374f, -0.453609f, -0.07697117f, + 1.2348375f, 0.24440674f, -1.2021745f, -0.117406376f, + -0.5603675f, 0.53386307f, -0.4103858f, -0.23553623f, + 0.3467846f, 0.75063777f, 0.1739982f, -0.5524879f, + 0.08997544f, 0.43330318f, 0.3974208f, -0.8853856f, + 0.059675336f, 0.02051778f, -0.31207734f, 0.11403173f, + -0.20904896f, 0.96798736f, -0.67174447f, 1.4474494f, + 0.7669279f, 0.27112728f, -0.28151667f, -0.4089763f, + 0.35902214f, 0.07160823f, -0.22646423f, 0.04928117f, + -0.1689081f, 0.40036663f, 0.6520693f, -0.0034064364f, + -1.9463657f, -0.6876552f, 0.48765022f, 0.25040662f, + -0.4383839f, -0.019953832f, 0.17643201f, -1.0856259f, + 0.17170754f, -0.29958314f, 0.18900517f, -0.22230405f, + 0.29309648f, 0.61689705f, -0.12724441f, -0.025701733f, + 0.30646983f, 0.3160884f, 0.103363976f, 0.47214168f, + -0.40639544f, 0.16798943f, -0.4056602f, 0.16192232f, + -0.2433146f, 0.3156634f, 0.12446241f, 0.13740478f, + 1.1481255f, -0.40750894f, -0.24632198f, 0.38345858f, + 0.23181187f, -0.12458214f, 0.55260915f, 0.36951035f, + 1.0608115f, 0.065695375f, -0.3929051f, -0.7730389f, + 0.33882374f, -0.16737732f, -0.37586585f, -0.6486304f, + 0.59434557f, 0.5104995f, 0.6835494f, -0.31424f, + 0.44700137f, 1.2851278f, -1.6675832f, 0.623858f, + -1.5100291f, -0.054602467f, -0.333511f, 0.48459032f, + -0.79561335f, -1.4744688f, 0.095201f, -0.12154154f, + -1.1413202f, 0.33304033f, 0.104119875f, 0.82653445f, + 0.5435994f, -0.2459473f, 0.6843038f, 0.03328334f, + 0.040256664f, -0.36663797f, 0.031372923f, 0.5187517f, + -0.33250263f, -0.8999336f, 0.15354332f, 0.06872961f, + -0.3084415f, 0.39192817f, -0.008069584f, 0.467933f, + -0.2598401f, -0.23233555f, -0.30384022f, 0.24552047f, + 0.60668766f, -0.6172334f, 0.08353358f, -0.20711657f, + 0.15435556f, 0.06591085f, -0.47658026f, 0.11396906f, + 0.060872313f, 0.12730353f, -0.4412255f, -0.19491428f, + -0.20736921f, 0.26570243f, 0.07266886f, -0.87864345f, + 0.12027917f, 0.89910346f, 0.004021042f, -0.12597956f, + -0.5005522f, -0.2594626f, 0.27693585f, -0.1975162f, + 0.23649012f, -0.74032015f, 0.66533715f, 0.09813386f, + -0.095797956f, 0.78329504f, 0.03894108f, 0.2600313f, + 0.21491526f, 0.43557665f, 0.07051936f, -0.016994504f, + -0.6179088f, -0.84454274f, -0.14589027f, -0.62441564f, + 0.055187084f, 0.88941365f, -0.1611365f, 1.061542f, + -1.1135242f, -0.047069337f, 0.0027583756f, 0.47472024f, + 0.24089485f, 0.45424578f, -0.17691202f, 0.33808511f, + 0.13184914f, -0.14672372f, 0.5337783f, -0.45010135f, + 0.050212324f, 1.1198629f, -0.09433707f, 0.35054207f, + 0.62961537f, 0.7061329f, 0.075172625f, -0.5544752f, + -0.6751163f, 0.85378224f, 0.06747978f, 0.6898708f, + 0.19000822f, 0.34473783f, 0.2162532f, -0.12841563f, + 0.4758548f, -0.12708929f, -0.5343015f, 0.17163843f, + 0.1667517f, -0.60513604f, 0.068472296f, 0.4653672f, + -0.6883127f, -0.3687341f, -0.14774673f, 0.5040236f, + -0.061768804f, 0.39860982f, -0.2722613f, 0.46524942f, + -0.069615565f, -0.5671665f, -1.1470032f, 0.0029101607f, + -0.234087f, -0.59108937f, -0.57663757f, -0.31406483f, + -0.7290447f, -0.5914177f, -0.17671376f, 0.15291344f, + 0.51567334f, -0.25655967f, -0.0041443133f, 0.32849684f, + 0.6603981f, -0.43965346f, 0.80735177f, -0.4136831f, + 0.40081325f, -0.86360306f, -0.22692303f, -0.10903406f, + -0.32340142f, -0.103011906f, 0.16439182f, 0.04877923f, + 0.1163151f, 0.2787956f, -0.044044726f, 0.678549f, + -0.21955304f, 0.18426646f, -0.4226142f, -0.53545576f, + -0.078463405f, -0.73717284f, 0.36240867f, -0.10807578f, + 0.6848249f, -0.42180544f, -0.39974517f, -0.45373315f, + 0.028324144f, 0.010423883f, -0.40237695f, -0.82905644f, + 0.67499435f, -0.4946653f, 1.0033568f, -0.15230036f, + -0.20820028f, 0.055031896f, 0.06604315f, -0.62878484f, + 0.17516342f, -0.8471482f, 0.12370939f, -0.45752007f, + -0.8929914f, 0.08515097f, 0.20184872f, 0.15763508f, + -0.12390233f, -0.07191736f, -0.18788448f, 0.22214134f, + -0.35155746f, 0.077534735f, -0.24705337f, -0.11001194f, + 0.9777664f, 0.0157249f, 0.2495829f, -0.24164297f, + 0.28684118f, -0.0033102063f, 0.17487507f, 0.23404348f, + 0.83881474f, -0.22542179f, 0.42540705f, -0.052471526f, + -0.22842456f, -0.6482513f, -0.18793747f, -0.03891399f, + -0.385602f, 0.01409772f, -0.025861084f, -0.18257532f, + 0.018620536f, 0.807893f, 0.34302884f, 0.226538f, + 0.008107096f, -0.15362194f, 0.2106726f, 0.15435657f, + -0.063385814f, 0.02306741f, -0.062045667f, -0.030209655f, + -0.019865485f, 0.115513995f, 0.059663016f, 0.10915979f, + 0.032092556f, -0.73745036f, -0.046913434f, -0.013790757f, + -1.0506297f, -0.06347237f, 0.06899522f, 0.06358993f, + -0.005616155f, -0.03868455f, -0.08406336f, 0.2705623f, + -0.15526614f, -1.3583297f, -0.034353364f, -0.04085379f, + -0.4058035f, 0.037089746f, -0.021816822f, -0.033885572f, + -0.05425518f, -0.08090516f, -0.47352013f, 0.08861752f, + -0.12779719f, -0.18638043f, 0.65598935f, 0.4483629f, + 0.16323844f, -0.0013124751f, -1.1546323f, -0.026041446f, + 1.4719104f, 0.27507696f, -0.09853977f, 0.48301107f, + -0.055092975f, -0.0021558306f, -0.123419754f, 0.08789823f, + 0.14127444f, 0.35247764f, 0.027389875f, -0.07424099f, + -0.8194371f, -0.032314245f, 0.054060243f, -0.3511914f, + -0.013870435f, -0.10766958f, -1.2878389f, -0.093141876f, + 0.02230611f, -0.15411167f, -0.15198158f, -0.40860695f, + 0.9804649f, -0.14425975f, -0.0017612803f, 0.044158444f, + 0.12107767f, 0.0085802805f, 0.32524484f, -0.043096177f, + -0.010890007f, 0.8900256f, 0.2169005f, 0.11960884f, + 0.01940146f, -0.10827106f, -0.25649926f, 0.025289278f, + 0.025809389f, -0.003964918f, -0.0026415128f, 0.089264624f, + 0.056359295f, 1.0149777f, 0.007716795f, -0.14280821f, + 0.73995674f, 0.0022680138f, 0.092453845f, -0.12598555f, + 0.5985929f, 0.0146993315f, 0.42985445f, -0.2383876f, + -0.4245343f, 0.27161863f, -0.47457674f, 0.077847086f, + 0.23202552f, 0.023201494f, 1.1420712f, 0.02935379f, + -0.7149181f, -0.103931904f, -0.5160322f, 0.44414338f, + -0.11529765f, 0.12552463f, -0.2438265f, -0.18581007f, + -0.13946258f, 0.4106759f, -0.03332496f, 0.037752327f, + 1.0833697f, 0.022708151f, -0.017032389f, -0.45351762f, + 0.0048614233f, 0.017458208f, 0.72962f, 0.022985749f, + -0.026920151f, -0.1022245f, 0.86617666f, -0.13487138f, + -0.9588706f, 0.123404525f, 0.20865f, -0.10652318f, + -0.022648824f, -0.111448556f, -0.50854766f, -0.17891292f, + 0.022291685f, -1.5728515f, -0.077521846f, -0.17620148f, + 0.66591465f, 0.4299335f, 0.076023795f, -0.09009821f, + -0.028997676f, 0.023018539f, 0.06631375f, -0.012910832f, + -0.0062745526f, -0.55719316f, 0.07566465f, 0.0036650451f, + -0.43298128f, 0.07337934f, -0.029948123f, 0.13891327f, + 0.07493859f, 0.18504022f, 0.2156894f, 0.024617422f, + 0.36001602f, -0.11752038f, 0.009000096f, 0.73129135f, + -0.34217682f, -0.034240283f, 0.002510548f, -0.029349605f, + -0.6221527f, -0.47681558f, 0.085723184f, -0.062252253f, + -0.34489903f, -0.5360168f, -0.22219957f, 0.7506494f, + -0.5696562f, -0.14934765f, 0.19206484f, 0.030275784f, + 0.2029586f, 0.023250317f, -0.035402305f, -0.29095113f, + -0.026049087f, -0.9176904f, 0.3501906f, -0.13431224f, + 0.02409908f, -0.1159863f, -0.35926563f, 0.70488894f, + 0.3380317f, 0.16890015f, -0.074252315f, 0.014093355f, + -0.034493376f, -0.06919091f, -0.49504325f, -0.09868316f, + -0.10538576f, 0.6997738f, -0.47130764f, 0.16635568f, + -0.3032287f, -0.26011097f, 0.42030513f, -0.07309035f, + 0.017553173f, 0.025072267f, 0.06574672f, 0.51846313f, + 0.21806413f, -0.4637822f, 0.050079398f, -0.799587f, + -0.7412161f, 0.060720433f, -0.10816809f, 0.07520536f, + 0.05993971f, -0.008011817f, 0.1401349f, -0.08820212f, + 1.2068778f, -0.23734984f, 0.06474299f, 0.11876477f, + -0.22189152f, -0.05809778f, -0.7315599f, -0.014096887f, + 0.8676675f, 0.8355453f, -0.77931076f, -1.1689545f, + -0.30085576f, 0.7863224f, 0.90634686f, -0.36906686f, + 0.103761524f, -0.12583199f, 0.10524085f, 0.11346452f, + -0.23665114f, 0.0063471887f, 0.028126238f, 0.029605132f, + 0.004013499f, -0.2748748f, -0.21146892f, -0.1833483f, + -0.02952502f, 0.3847396f, -0.46601138f, -0.4294855f, + -0.29386744f, -0.03917718f, -0.15225103f, 0.058285076f, + -0.05847375f, -0.077214465f, 0.7866027f, 0.0015675143f, + 0.02396371f, -0.32072708f, 0.35563022f, -0.21267937f, + -0.1376756f, 0.020231163f, 0.16707434f, -0.041776355f, + -0.031580504f, 0.05055598f, 0.01835352f, 0.026567314f, + 0.10592048f, 0.2901674f, -0.018138314f, -0.23337947f, + 1.2276589f, -0.08656278f, -0.028930152f, 0.15770397f, + -0.2153408f, 0.4930523f, -0.012054784f, 0.11864388f, + -0.03955723f, 0.369444f, 0.036490634f, -0.6854791f, + -0.26746598f, 0.04151133f, -0.03418111f, -0.0021040107f, + -1.1314867f, -1.7973019f, 1.0995361f, -0.4223585f, + 0.123772256f, 0.13284302f, -0.40324798f, -0.23015608f, + 0.022220118f, -0.0521992f, 0.047053993f, -0.1458724f, + 0.61582935f, -0.010940314f, 0.02309852f, 0.5510888f, + -0.025481382f, 0.48858052f, 0.56404006f, 0.18750401f, + 0.08141806f, -0.1330789f, -1.2552463f, 0.014918115f, + -0.3184838f, -0.24319987f, -0.13537595f, 0.12991413f, + 0.043316886f, 0.30099955f, -0.5867024f, 0.20107533f, + -0.100704335f, 0.08381246f, 0.13975249f, 0.4465769f, + 0.8555343f, -0.9800004f, 0.21368428f, 0.029567746f, + -0.030921435f, -0.044012766f, -0.11983341f, 0.081940345f, + 0.05426562f, 0.42579353f, -0.10281679f, 0.08174194f, + -0.5254476f, 0.018183528f, 0.015078943f, -0.47436664f, + 0.71115553f, -0.084686086f, 0.28711307f, -0.16743268f, + -0.88483286f, 0.036369745f, -0.699635f, 0.57981485f, + 0.07395088f, -0.027746355f, 0.38329363f, 0.048160814f, + -0.48856238f, 0.94215345f, -0.08135651f, 0.52295256f, + 0.38380122f, 0.44679645f, -0.9246708f, 0.5382405f, + 0.24365442f, -0.07851298f, -0.07978662f, 0.020387221f, + -1.042572f, -0.017548934f, 0.050063577f, -0.07079492f, + 0.033977587f, -0.033836074f, -0.16570474f, -0.028007824f, + -0.02745118f, 0.16171895f, 0.2863449f, 0.42538014f, + 0.071190715f, -0.106946714f, 0.077149324f, -0.017511066f, + 0.010313906f, -0.02020257f, -0.6086891f, 0.067865364f, + 0.079415396f, 0.7951488f, 0.035485577f, -0.115792215f, + 0.044399977f, 0.15395749f, -0.57748145f, 0.035166442f, + 0.03363195f, -0.0018181932f, 0.0058281934f, -0.060950108f, + 0.23513916f, 0.21932933f, -0.025450082f, 0.039933585f, + 0.020181186f, -0.13528074f, 0.12502548f, -0.012832133f, + -0.15209626f, -0.061354302f, 0.27357903f, 0.11969375f, + 0.9774421f, -0.020659398f, -0.13304351f, 0.03136183f, + -0.024932224f, 0.06778447f, 0.066350095f, 0.0450947f, + 0.1241216f, 0.39478204f, 0.54828393f, 0.7507089f, + -0.091692686f, -0.1510089f, 0.3122869f, -0.17290235f, + -0.28127065f, 0.21823879f, -0.19811906f, -0.10285659f, + 0.5137003f, 0.021810595f, -0.091129825f, -0.025261836f, + -0.017303713f, 0.1304148f, 0.167887f, 0.32487285f, + 0.009758346f, 0.070517704f, 0.89254165f, 0.61171085f, + -0.04351889f, 0.25184458f, 0.18591322f, -0.11174088f, + -0.021932485f, 0.039278604f, 0.41256437f, -0.04473867f, + -0.023695583f, 0.2692141f, 0.39933437f, 0.016640523f, + -0.9400198f, -0.5061974f, -0.24067399f, -0.001671439f, + -0.03806221f, -0.045066215f, -0.0042813146f, -1.324335f, + -0.49878275f, 0.4908444f, 0.03306541f, 0.08721119f, + 0.4191362f, 0.1491101f, -0.0826661f, 0.029075406f, + -0.25978008f, 0.60065776f, -0.14797838f, 0.01900812f, + 0.6658604f, -0.53679836f, 0.09356017f, -0.31625256f, + 0.23897965f, -0.09569908f, -1.2132516f, -0.041036315f, + 1.1960022f, -0.61271214f, -1.0867038f, -0.13655539f, + -0.6903238f, -0.66808784f, 0.25309324f, -0.38216522f, + 0.4631876f, 0.14079663f, 0.1393085f, 0.18622932f, + 0.16191109f, -0.03341815f, 0.021179227f, -0.13082092f, + 0.013947325f, -0.032160155f, 0.08793378f, -0.33516377f, + -0.065987945f, 0.08167207f, -0.23970033f, -0.56101996f, + 0.23441724f, -0.06946498f, -0.05778444f, 0.042477865f, + -0.008582049f, -0.18184909f, 0.28555623f, -0.011663777f, + 0.08027615f, -0.89709777f, -0.117182955f, -0.22450559f, + 0.29070222f, 0.5108636f, -0.20202552f, 0.055749323f, + 0.058570117f, 0.03941668f, 0.04774472f, 0.6013319f, + -0.39078993f, -0.2800138f, 0.012014207f, 0.46593022f, + -0.38271514f, -0.13028522f, 0.0466364f, 0.23257673f, + 0.30463222f, 0.17147174f, -0.081799924f, 0.11164196f, + -0.29176173f, 0.40660155f, 0.013120791f, 0.049147576f, + 0.1348603f, 0.09571338f, 0.22297016f, -0.0048430036f, + -0.29183993f, -0.080149636f, 0.98867273f, -0.42477462f, + 0.14125037f, -0.15236619f, 0.07668971f, 0.07367287f, + 0.16909324f, -0.5872007f, 0.10413014f, -0.036060452f, + 0.3397712f, 0.017834008f, 0.0039518797f, -0.060676493f, + 0.0018474603f, 0.11961344f, -0.20273492f, -0.012329253f, + 0.0047954596f, 0.07282419f, 0.22507744f, -0.14886768f, + 0.11863162f, 0.13861685f, 0.016758215f, 0.02013503f, + 0.0045134695f, 0.011718989f, 0.002748964f, -0.075596265f, + -0.011712068f, 0.07798186f, 0.038924433f, -0.040117968f, + -0.26597247f, -0.26836404f, -0.15031657f, 0.06412936f, + -0.022661095f, -0.045577742f, 0.09630472f, 0.044398304f, + 0.26439965f, -0.59739184f, -0.029713254f, 0.034264956f, + -0.47582313f, -0.007488266f, -0.014151966f, -0.04606333f, + -0.52177995f, -0.05966401f, 0.09785432f, 0.030099412f, + -0.20991123f, -0.03186619f, 0.02653129f, 0.015377654f, + -0.09675592f, 0.021038821f, -0.14438842f, 0.04725056f, + 0.17602092f, 0.22639449f, 0.029015718f, 0.003540292f, + 0.3963309f, 0.03633355f, -0.037667062f, 0.0029432338f, + 0.033039298f, -0.11814088f, 0.063022956f, 0.096477985f, + 0.32327405f, -0.06641153f, -0.002913001f, 0.08236357f, + 0.007286919f, 0.008138094f, -0.32232353f, 0.052288216f, + 0.020100998f, 0.01981959f, -0.2436155f, -0.020917388f, + 0.016201653f, -0.21305093f, 0.16250795f, 0.069503166f, + -0.023492597f, -0.05491178f, -0.03821593f, 0.029247567f, + 0.058607068f, 0.27676147f, 0.05213959f, 0.2575385f, + -0.05693815f, -0.09989158f, 0.13276483f, -0.07997532f, + 0.0038764423f, 0.06716401f, -0.011303134f, 0.09842928f, + -0.051532324f, 0.37682667f, 0.020646878f, -0.0795555f, + 1.3190744f, -0.07176431f, 0.007819862f, 0.0967179f, + -0.4524294f, -0.07631972f, 0.21985193f, 0.045916717f, + -0.15803592f, -0.056865104f, 0.15264519f, -0.09435941f, + 0.20782973f, -0.013020401f, 0.1073965f, -0.035447758f, + -0.23486727f, -0.076234944f, 0.07961807f, 0.010383793f, + -0.31449646f, 0.06376128f, 0.0861105f, 0.030919312f, + -0.13965851f, 0.5403995f, 0.024138385f, -0.06353013f, + 0.46644062f, 0.083194666f, 0.012389875f, -0.016152445f, + -0.006783016f, 0.32259023f, 0.15920673f, -0.19443277f, + 0.009236937f, -0.04102693f, -0.22377977f, 0.022489842f, + -0.3652825f, 0.007646732f, -0.26162547f, -0.0022239091f, + 0.005867499f, 0.10476531f, -0.011349147f, 0.03798596f, + -0.05398975f, 0.03910385f, 0.006285599f, -0.13208169f, + -0.22152805f, 0.099245876f, -0.004322013f, -9.509421e-05f, + -0.042095367f, -0.041017924f, -0.064411856f, -0.0012669074f, + 0.022868663f, 0.9218253f, -0.008126677f, 0.014452345f, + -0.5830466f, 0.06417363f, -0.00021276096f, -0.32459328f, + -0.3337733f, 0.013773942f, 0.10961584f, -0.11622109f, + -0.17915788f, -0.0062717395f, 0.14177714f, -0.024184566f, + -0.016976327f, -0.028730629f, 0.089368805f, 0.025500331f, + -0.12435368f, 0.3821977f, 0.09815966f, 0.2372888f, + -0.2001616f, -0.094151646f, 0.13730365f, -0.23135786f, + 0.17366068f, 0.5909085f, -0.045926567f, -0.040017385f, + -0.6347851f, 0.049142588f, 0.012359564f, -0.07764271f, + 0.013706438f, -0.30569544f, -0.4188995f, -0.032829396f, + -0.027678736f, -0.39007077f, 0.0609978f, 0.42681074f, + 0.027090138f, 0.04412078f, -0.085337415f, 0.008659137f, + -0.026561497f, -0.21243952f, -0.23448537f, 0.08747087f, + 0.066460885f, 0.09411147f, -0.06918915f, 0.09436527f, + -0.28500426f, -0.32312226f, 0.025611084f, -0.05471338f, + 0.0072577796f, 0.00909815f, -0.060006205f, -0.091098145f, + -0.46802494f, -1.2293334f, 0.07917287f, -0.016595934f, + -1.16504f, 0.053803295f, 0.0027831215f, 0.008942599f, + -0.3948617f, 0.043518443f, 0.076131225f, 0.0019365374f, + 0.03792635f, -0.12072798f, 0.16312622f, -0.005161815f, + 0.21799773f, -0.08797399f, -0.36014968f, -0.04138602f, + 0.3432428f, 0.18298411f, -0.49255306f, -0.14481449f, + -0.035866823f, 0.33912277f, -0.58728445f, -0.077401176f, + 0.09390359f, 0.005027801f, 0.009428041f, 0.033340048f, + -0.77751267f, 0.03695808f, 0.010304726f, 0.13201615f, + -0.015504159f, 0.33457273f, -0.26540363f, -0.042766355f, + -0.008469715f, 0.08982861f, 0.2994518f, -0.17007865f, + -0.060060877f, -0.017789882f, 0.0017739394f, -0.02445482f, + -0.00090395124f, 0.14287603f, 0.1677182f, 0.037914626f, + -0.07026462f, -0.10107948f, -0.3544169f, -0.41454762f, + -0.07993743f, -0.18077761f, -0.3115857f, 0.11889164f, + 0.10182317f, -0.07480821f, -0.061138477f, -0.30948734f, + 0.012147854f, 0.67344695f, -0.08709873f, -0.053990893f, + 0.35136977f, -0.019170972f, 0.08478967f, 0.08622846f, + -0.4635361f, 0.51478165f, 0.1544301f, -0.21340562f, + 0.13834846f, -0.016002057f, 0.20692965f, -0.045034662f, + -0.29404634f, 0.04912065f, 0.021004405f, 0.062051933f, + -0.20589022f, -0.42532277f, -0.84776926f, -0.25284198f, + 0.32029763f, -0.048092995f, 0.29214215f, 0.013360718f, + 0.056429777f, -0.08105883f, -0.09573517f, -0.039495274f, + -0.68320733f, -0.08515952f, -0.0009714131f, -0.017794726f, + 0.007969696f, -0.0154107595f, 0.06578462f, 0.22468108f, + 0.010683868f, 0.078772165f, 0.71895224f, 0.08367409f, + 0.40069708f, 0.06394202f, 0.0057395925f, 0.04232173f, + 0.017837223f, -0.07999653f, -0.23450539f, -0.08942668f, + 0.0021339576f, -0.36597013f, -0.08268445f, 0.14542471f, + -0.103312716f, 0.06853057f, -0.19572325f, -0.04905481f, + -0.033108562f, 0.044934466f, 0.056781884f, -0.014311305f, + 0.06620044f, -0.399756f, 0.015141333f, -0.03395024f, + -0.17511815f, -0.026046228f, -0.06587936f, 0.19412749f, + -0.47727558f, 0.030411286f, 0.050053142f, 0.2237644f, + -0.09887422f, 0.07958338f, 0.17883447f, 0.065223f, + 0.1847929f, 0.021962825f, 0.0034403224f, -0.079108335f, + -0.08721893f, -0.4224761f, -0.06399271f, 0.21978581f, + 0.38157937f, -0.09036889f, -0.15084481f, -0.1526548f, + 0.119625084f, -0.13855726f, 0.059266847f, 0.018215675f, + -0.010894182f, -0.07294883f, -0.010505289f, -0.055377163f, + -0.009961642f, 0.28147355f, -0.41619828f, -0.0042752232f, + 0.01989256f, 0.28272712f, 0.07361208f, -0.4894521f, + -0.10971263f, -0.14463621f, 0.123867676f, -0.05232632f, + 0.017162347f, 0.13102657f, -0.06829646f, -0.020931115f, + -0.06570789f, 0.009729908f, -0.011494637f, 0.10395261f, + -0.012305775f, -0.12419146f, 0.06485625f, -0.05503147f, + -0.034246754f, 0.05284914f, 0.013604411f, -0.09160792f, + 0.2508606f, 0.8492047f, -0.03032245f, -0.06467645f, + 0.28363255f, -0.0058166864f, -0.0034620622f, -0.024337957f, + -0.60226053f, -0.058378335f, -0.069567025f, -0.031342335f, + 0.29467267f, -0.10145354f, -0.13428536f, 0.005052874f, + -0.4197696f, 0.026848238f, 0.109865285f, 0.018523974f, + 0.11763328f, 0.1393914f, 0.35343534f, 0.109018154f, + -0.48544922f, 0.1368299f, 0.49552563f, -0.10577518f, + 0.045806605f, 0.31055748f, -0.18309835f, -0.17413588f, + 0.560546f, 0.033812296f, 0.0024860406f, 0.01574145f, + 0.014599452f, -0.40420765f, -0.29772767f, 0.00468128f, + -0.028804325f, 0.2753411f, -0.14398248f, -0.26464728f, + 0.18493845f, 0.28276762f, -0.1376211f, -0.042958207f, + -0.0033873017f, -0.10997798f, 0.077272855f, -0.017184507f, + 0.079803914f, 0.038206805f, 0.094064325f, 0.048848942f, + 0.22124124f, -0.049226128f, 0.16821276f, 0.0005571599f, + -0.047699716f, -0.017951379f, -0.0045715286f, 0.18363976f, + -0.33406708f, -0.78665245f, 0.06721005f, -0.09595573f, + 0.48394442f, 0.055823058f, -0.037521962f, -0.10687211f, + -0.4911064f, -0.017642232f, 0.0067783683f, 0.19611596f, + 0.3397407f, 0.0707443f, 0.124095924f, -0.058695804f, + 0.5562523f, -0.017490463f, 0.031185184f, -0.045185555f, + -0.2909993f, -0.26819518f, 0.49520794f, 0.22235957f, + -0.20119916f, -0.110272154f, -0.22553514f, -0.07978957f, + 0.01880893f, -0.7143089f, 0.06771368f, 0.19614862f, + 0.25629783f, 0.0068488107f, -0.04071218f, 0.017471593f, + -0.0076234974f, -0.37783563f, -0.23673432f, 0.032234915f, + 0.0057667717f, -0.054811515f, -0.33052707f, 0.06486647f, + -0.2461012f, -0.18012646f, 0.14665681f, -0.022205314f, + 0.015025584f, 0.07254283f, -0.05741594f, 0.029579304f, + -0.008596518f, 0.22286049f, 0.091302015f, -0.11564156f, + -0.3172151f, -0.072401375f, -0.020854922f, 0.063183054f, + 0.06481689f, 0.005271729f, 0.019181084f, 0.07117706f, + -0.009447056f, 0.20694615f, -0.030661881f, 0.03192281f, + 0.2319241f, -0.041075595f, 0.023072409f, 0.22021848f, + -0.25272888f, -0.07822297f, 0.0059068017f, -0.12660635f, + 0.1333056f, -0.016372683f, 0.076377876f, -0.06776241f, + -0.2687813f, 0.018672787f, 0.10857218f, 0.033806548f, + -0.12842378f, 0.29520556f, 0.59129524f, -0.43744215f +}; + +static const float espcn_conv2_biases[] = { + 0.33971384f, -0.23245853f, -1.0215325f, -0.2263814f, + 0.09201997f, 0.19144128f, -1.3733093f, -1.7035905f, + -0.6637244f, -0.08333605f, 0.44616115f, -0.076926f, + 0.5801112f, -0.71345073f, 0.33217007f, -0.67426187f, + -0.48569643f, -0.13424309f, -1.1751443f, 0.5630307f, + 0.3653299f, 0.64577675f, 0.2021496f, 0.03874249f, + 0.44926018f, 0.09768973f, -0.9930376f, -0.8841269f, + -0.18398902f, 0.69865096f, -0.16083398f, -0.19168021f +}; + +static const float espcn_conv3_kernel[] = { + -0.007667006f, 0.14104712f, 0.0028554099f, 0.046171032f, + 0.083970614f, -0.08289577f, -0.01414775f, -0.045998544f, + -0.10366155f, -0.051294606f, 0.02127337f, 0.01200112f, + 0.075513035f, 0.03427472f, 0.0009242545f, 0.039481442f, + -0.083404936f, -0.009379502f, -0.00012922293f, 0.08770353f, + -0.019010197f, 0.024323002f, 0.00657334f, 0.020961132f, + 0.033712275f, -0.105017915f, -0.01556234f, -0.09186359f, + -0.029278394f, 0.22117417f, 0.053837106f, -0.09097114f, + 0.088114634f, -0.15915282f, 0.06186595f, 0.0033195168f, + -0.4086313f, -0.17276055f, -0.007333988f, 0.034589782f, + -0.32201302f, 0.07693074f, 0.1128147f, 0.20464584f, + -0.086866386f, 0.30482367f, -0.042256493f, -0.07132304f, + 0.05204476f, 0.2028391f, 0.07791786f, -0.089417934f, + 0.07708711f, 0.22846334f, 0.04748587f, 0.009103156f, + -0.12805448f, 0.12475577f, -0.022960152f, 0.08536493f, + 0.12684518f, 0.1882899f, -0.09544437f, 0.34522983f, + -0.011966817f, 0.16707578f, -0.10880896f, 0.007993297f, + 0.22237432f, 0.0101676f, 0.009014923f, -0.04825716f, + 0.11847947f, -0.06317551f, -0.009806394f, -0.044970516f, + 0.03217826f, -0.04854188f, -0.012694379f, 0.048237607f, + 0.049305733f, -0.04797366f, -0.012059494f, -0.014990728f, + 0.16739103f, 0.29273826f, 0.01097457f, 0.028956668f, + 0.1346423f, 0.10767944f, -0.18557154f, -0.020515647f, + -0.065032914f, 0.106935486f, 0.051395193f, 0.28330383f, + -0.06297702f, -0.17837301f, -0.0659061f, -0.070493214f, + 0.018434696f, -0.23210582f, -0.08075857f, -0.06457634f, + -0.23998463f, -0.009786923f, -0.027664542f, 0.2262627f, + 0.09856223f, 0.36268407f, 0.065591045f, -0.09626932f, + 0.11624542f, 0.23481297f, -0.040730257f, -0.12155378f, + -0.037929635f, 0.008343563f, -0.013552447f, -0.015157376f, + -0.016931925f, -0.083783776f, 0.004607789f, 0.07565792f, + 0.11899113f, 0.24913028f, 0.00016717051f, 0.0129345255f, + -0.14638531f, -0.053604305f, 0.09540138f, -0.026006158f, + 0.12681499f, -0.6076643f, 0.098777324f, 0.115070805f, + -0.5347515f, 0.030514427f, -0.10094133f, 0.62846696f, + -0.033593196f, 0.78771675f, -0.09244786f, -0.008667544f, + -0.16986623f, 0.75780606f, -0.10130211f, 0.065105036f, + 0.29966506f, 0.3343311f, -0.104222424f, -0.0943782f, + -0.044735834f, -0.032489244f, 0.21114482f, -0.20020406f, + 0.41298053f, 0.17389429f, -0.016944211f, 0.17826891f, + -0.04719942f, -0.034800053f, -0.039783645f, -0.010532644f, + -0.039469235f, 0.24107635f, 0.16123307f, -0.09022655f, + 0.13408047f, -0.0282536f, -0.03630475f, 0.0072817653f, + -0.07051867f, -0.076535776f, 0.059039824f, 0.122429736f, + -0.03934417f, 0.045777347f, -0.047231924f, 0.052514616f, + 0.31010264f, 0.016500482f, 0.007496862f, -0.03231565f, + 0.049405616f, -0.08411538f, 0.03045642f, 0.17119631f, + 0.03334349f, 0.11353106f, 0.041074052f, 0.19524741f, + 0.06796808f, 0.17088167f, -0.056979932f, 0.023423648f, + -0.04356131f, 0.12627144f, -0.052736517f, 0.07245402f, + 0.03975933f, -0.008924116f, 0.019371016f, -0.075674504f, + -0.004732546f, -0.04481568f, 0.02436322f, 0.04378296f, + -0.05806777f, -0.096939705f, 0.039061844f, 0.071212545f, + 0.015327552f, -0.004279174f, 0.031178921f, 0.008691702f, + -0.0041847173f, -0.008024591f, -0.00088262715f, 0.045580477f, + -0.03011504f, 0.10775189f, 0.0190155f, 0.012543175f, + 0.12075272f, -0.029315438f, 0.027919387f, 0.046000794f, + -0.15523206f, 0.059069097f, -0.12786487f, 0.027711906f, + 0.15750125f, 0.01187774f, -0.012185285f, -0.007454721f, + -0.05292222f, -0.06527724f, -0.052345403f, -0.03817037f, + 0.16767734f, 0.005784969f, 0.08053919f, 0.002969095f, + -0.06539606f, 0.013479305f, 0.059465107f, 0.05489724f, + 0.018484972f, 0.10821291f, -0.07344093f, 0.022035802f, + -0.08965972f, 0.12242154f, -0.007821743f, 0.037775896f, + 0.021366084f, 0.054953437f, -0.000305967f, 0.0015507822f, + 0.03209467f, -0.035142414f, 0.005562415f, -0.0014824979f, + -0.028283753f, 0.004241433f, 0.04415266f, -0.032739647f, + 0.051402435f, 0.037154127f, 0.02417755f, 0.017741432f, + -0.024376478f, -0.053491775f, 0.01818964f, -0.05982778f, + -0.018173559f, -0.05709102f, -0.002068809f, 0.024851134f, + -0.006637969f, -0.030332753f, -0.058937836f, -0.07575009f, + -0.025087489f, 0.012548911f, -0.0018659293f, 0.009307657f, + 0.006538445f, -0.030516295f, 0.043202642f, 0.0022194071f, + 0.13998812f, 0.01926017f, -0.023256416f, 0.0059284833f, + 0.04276946f, 0.043055464f, 0.011339936f, -0.050337285f, + -0.098842666f, -0.045672577f, -0.019297887f, 0.007744926f, + -0.009274277f, -0.0882981f, 0.006480864f, 0.014436023f, + 0.044652563f, -0.12512758f, -0.0061487798f, 0.0036048207f, + -0.07216942f, 0.18390115f, 0.1189453f, 0.08375072f, + -0.030994987f, 0.15075774f, -0.06697724f, 0.036068875f, + 0.005174052f, 0.15762272f, -0.09359547f, 0.06011978f, + -0.20130202f, -0.2399595f, -0.007247519f, -0.062571146f, + -0.25810865f, -0.10054644f, 0.057966083f, 0.25557914f, + 0.036694355f, 0.30086866f, 0.006560981f, 0.033802185f, + -0.08347327f, 0.28710675f, 0.021880157f, 0.04767934f, + -0.08497335f, 0.5885198f, 0.023092799f, 0.038470116f, + 0.16157758f, 0.010583807f, -0.25718346f, -0.042735994f, + 0.12373039f, 0.16206901f, 0.08336538f, 0.21352498f, + 0.059582815f, -0.032146916f, 0.079257764f, -0.0016167751f, + -0.02205234f, 0.0405716f, 0.015626704f, 0.015071891f, + -0.06631943f, 0.07939527f, 0.05282321f, -0.031827953f, + 0.045815617f, 0.038473863f, 0.012097371f, -0.041949954f, + 0.10436737f, -0.04933808f, 0.03482716f, -0.10212701f, + 0.27047437f, 0.14205115f, 0.041179992f, 0.026404373f, + -0.065594174f, -0.12736672f, -0.0710877f, -0.053915583f, + 0.01613588f, 0.17389613f, -0.044684675f, 0.22719298f, + 0.015502862f, -0.14574938f, 0.085858285f, 0.0026169082f, + 0.0089747105f, -0.11735594f, 0.06839516f, 0.07142809f, + 0.04451523f, 0.06147266f, -0.0012151458f, -0.008291631f, + -0.09026896f, -0.08051338f, -0.102967136f, -0.052975707f, + 0.048517436f, -0.024674408f, 0.016117888f, 0.015603796f, + 0.13993767f, 0.029596603f, -0.024877293f, -0.013130988f, + -0.0232684f, 0.11352275f, -0.024990203f, -0.1607456f, + -0.22931759f, 0.18455116f, -0.02624186f, 0.07006299f, + -0.16019426f, -0.062050693f, -0.07570467f, -0.0948215f, + 0.11911582f, -0.24222155f, 0.20988029f, -0.12547027f, + -0.48145735f, -0.01521843f, -0.10649907f, 0.71631026f, + 0.10028422f, 0.75859886f, 0.12850475f, 0.123134464f, + 0.008657039f, 0.8846148f, -0.13880287f, -0.16307577f, + -0.10221507f, 0.07655262f, -0.03988632f, -0.04268315f, + 0.050553113f, -0.2896542f, 0.08483427f, 0.18624589f, + 0.7549801f, 0.18414652f, 0.034072693f, 0.03786343f, + -0.09295679f, -0.03666787f, -0.009160933f, -0.012920515f, + -0.029413473f, 0.010253004f, -0.0796485f, 0.038094785f, + -0.19285308f, -0.02273603f, -0.059900336f, 0.16111064f, + -0.02963963f, 0.380052f, -0.019736923f, -0.086330734f, + -0.19065458f, 0.16180964f, -0.058330737f, 0.16446571f, + 0.5497785f, 0.2566367f, -0.061442494f, -0.08855255f, + -0.046923388f, -0.0021147097f, 0.17849843f, -0.048363656f, + 0.2680546f, 0.1588858f, -0.015360107f, 0.29298705f, + 0.016426394f, 0.13549931f, 0.04652411f, 0.0071147704f, + 0.010288967f, 0.05908408f, -0.0045378814f, 0.07343509f, + -0.016549721f, -0.014486795f, -0.001113012f, 0.031942274f, + 0.009040558f, 0.032813624f, -0.0424731f, 0.052078795f, + -0.053465404f, -0.00057529495f, 0.011511385f, -0.027211199f, + -0.060380895f, -0.013912639f, 0.00951986f, -0.0074726664f, + 0.021073354f, 0.030663729f, 0.00809332f, -0.013936477f, + 0.05807691f, 0.008006645f, 0.0071268706f, -0.043578595f, + 0.11615272f, 0.06984987f, -0.0028992365f, 0.041572776f, + -0.15604974f, 0.18731527f, -0.15413979f, 0.012749477f, + 0.15030195f, -0.0020730947f, 0.03645586f, -0.10145699f, + -0.040069796f, -0.07289411f, 0.00848367f, 0.001622471f, + 0.088356435f, -0.08887693f, 0.06583668f, 0.13509107f, + 0.062882945f, 0.02901061f, 0.0557863f, 0.042449273f, + 0.0116659785f, 0.038361747f, -0.042015914f, -0.052616213f, + -0.07969802f, 0.08745955f, 0.010646311f, 0.048006814f, + 0.078400664f, 0.018272074f, -0.021945313f, 0.020994332f, + -0.00440785f, -0.058062512f, -0.042612758f, 0.017000763f, + 0.04425118f, 0.023721699f, 0.014297439f, -0.038070936f, + 0.03014516f, -0.037381243f, -0.00404214f, -0.022961603f, + 0.104961f, -0.04902547f, 0.058775403f, -0.09026729f, + -0.101065375f, -0.046076927f, 0.017828949f, 0.048770756f, + 0.0011011219f, 0.024923807f, -0.09660758f, 0.05639419f, + -0.080873094f, 0.1845964f, -0.0069835014f, 0.014266926f, + -0.02855939f, -0.056643132f, -0.0051804986f, -0.03215627f, + 0.019358406f, 0.1768966f, 0.04088005f, 0.0048896256f, + 0.030420236f, 0.012921552f, -0.03283905f, -0.006024614f, + 0.030611534f, -0.028801229f, 0.002574335f, -0.03615586f, + 0.09825823f, 0.0065917578f, -0.035536543f, -0.06725451f, + 0.003755605f, 0.013537556f, -0.011502704f, -0.0051462594f, + -0.017171362f, -0.06360293f, -0.034664832f, -0.04424426f, + 0.042037055f, 0.19522013f, 0.019246215f, -0.021807862f, + -0.13493076f, -0.18108664f, 0.027387377f, -0.057092384f, + -0.360573f, 0.10253678f, 0.063756354f, 0.011502856f, + 0.13754463f, 0.025544228f, -0.105598815f, -0.026410667f, + -0.0008124341f, -0.071404435f, 0.016904969f, 0.023952119f, + -0.09001399f, -0.014638472f, -0.107836954f, 0.038338777f, + -0.05954155f, 0.3937112f, -0.06343964f, -0.098806344f, + -0.040508512f, -0.15359704f, 0.28182873f, 0.08952835f, + -0.09345569f, 0.11638065f, -0.03209807f, 0.30986494f, + -0.026875084f, 0.13687582f, -0.057586435f, 0.0033817207f, + 0.12819554f, -0.013082991f, -0.012207393f, 0.007877484f, + -0.010009816f, -0.05519416f, -0.014998437f, 0.011148795f, + -0.04913968f, 0.029449768f, 0.0018857152f, 0.013820857f, + -0.061610684f, 0.017086286f, -0.014723202f, 0.055658128f, + -0.08936702f, 0.15055695f, -0.019955054f, -0.0051097856f, + 0.055257797f, 0.026368754f, -0.15075234f, -0.058290627f, + 0.015374483f, -0.017010013f, 0.029440638f, 0.17879036f, + 0.055987984f, 0.2014458f, -0.025986856f, 0.037391923f, + 0.020041345f, -0.27366036f, -0.107675634f, 0.044677358f, + -0.26006556f, -0.08148701f, 0.023839803f, 0.18195054f, + 0.10027663f, 0.323401f, 0.012640289f, 0.033895966f, + -0.08169412f, 0.17818142f, 0.01733072f, 0.063214764f, + -0.06319035f, -0.03843456f, 0.044573024f, 0.012283689f, + 0.03905451f, -0.0858922f, 0.0056206034f, -0.054033287f, + 0.074631706f, 0.2270766f, 0.049191162f, -0.080160886f, + 0.20265223f, 0.0034367319f, 0.08326053f, 0.055953957f, + -0.021390092f, -0.75434166f, -0.2119513f, 0.15419082f, + -0.5878938f, 0.09843949f, 0.10501423f, 0.6137734f, + -0.15509549f, 0.7417564f, -0.09229847f, -0.11215972f, + 0.1986837f, 0.7498558f, 0.15741259f, 0.031588957f, + 0.34542522f, 0.3671338f, 0.050357416f, 0.09435209f, + -0.12557067f, 0.23468016f, -0.106572054f, -0.044294365f, + 0.30201787f, 0.09970023f, -0.086082414f, 0.31907186f, + 0.0011450003f, 0.060450554f, -0.094321065f, 0.0017964012f, + 0.1424026f, 0.19942866f, 0.058151063f, -0.09763893f, + 0.14013672f, -0.033729076f, -0.009657222f, -0.037736878f, + 0.06720788f, -0.075642206f, 0.007286674f, 0.11240429f, + 0.0065294695f, -0.030203562f, -0.010721404f, -0.116738304f, + 0.3607275f, 0.12672496f, 0.021615604f, 0.033858713f, + 0.13400987f, 0.06431525f, -0.06691087f, 0.14595011f, + -0.008561604f, 0.14163294f, 0.056257907f, 0.3520392f, + -0.04394999f, -0.0028129697f, -0.08888837f, -0.029985145f, + 0.030372502f, -0.14674705f, -0.070825584f, -0.08322254f, + -0.08497095f, 0.010243157f, -5.5688863e-05f, -0.01099719f, + 0.025146788f, 0.061569728f, 0.062467348f, -0.041845758f, + 0.014052529f, -0.041381437f, -0.005965281f, -0.02505238f, + 0.033743933f, 0.022375392f, -0.018016314f, 0.00055475975f, + -0.022157867f, -0.017465835f, -0.0045483005f, 0.119692154f, + -0.020166207f, 0.24603683f, -0.0071642944f, 0.024200281f, + -0.03257321f, -0.04937859f, 0.07412929f, -0.004714887f, + 0.0010213905f, -0.0576797f, 0.047480553f, 0.011789497f, + -0.2318705f, -0.013216555f, -0.007650194f, 0.21737282f, + -0.0017965994f, 0.37281004f, -0.09982479f, -0.009142261f, + -0.13773903f, 0.23119944f, -0.020788472f, -0.06151848f, + -0.0014226118f, -0.06132002f, -0.032428455f, -0.046841744f, + 0.0078683f, 0.089152165f, 0.03683405f, -0.117846414f, + 0.18142857f, 0.19151904f, -0.008181704f, -0.14283088f, + -0.03691898f, 0.0031022264f, -0.00318654f, -0.014476929f, + -0.02316005f, 0.035108574f, 0.12210266f, -0.038086705f, + 0.026954912f, -0.0056925155f, 0.018069055f, -0.040836975f, + -0.020427013f, -0.043570735f, 0.060326766f, 0.06339755f, + 0.047302492f, -0.026342686f, -0.011594244f, 0.061395485f, + 0.10346414f, -0.03713694f, 0.0102482885f, -0.0016179478f, + -0.0028208077f, -0.10695704f, 0.010509528f, 0.025757857f, + -0.04434847f, 0.13520806f, 0.008622794f, -0.053426582f, + 0.013260353f, -0.19719706f, 0.004430872f, -0.029948913f, + 0.03813006f, 0.0373536f, 0.0008706067f, 0.01047326f, + -0.0045027793f, 0.019326277f, 0.007231656f, 0.008300135f, + -0.020665932f, 0.04975184f, 0.0014273074f, -0.04876815f, + 0.07044493f, -0.01045838f, 0.009101885f, -0.036903173f, + -0.0004744507f, -0.046730164f, 0.0041760514f, -0.01884484f, + 0.0063735796f, 0.06810604f, 0.107551165f, 0.09627486f, + 0.043206997f, 0.06253923f, -0.035905674f, 0.041340932f, + -0.119592205f, 0.094922915f, -0.065469556f, -0.03853879f, + -0.17381419f, 0.23785266f, 0.078358285f, 0.0054959077f, + 0.11458983f, -0.013138738f, -0.103433214f, -0.02233651f, + 0.04934036f, -0.08529042f, 0.03650632f, 0.022829639f, + 0.035568047f, 0.0091951545f, -0.10593388f, -0.08046578f, + 0.002299903f, 0.30750358f, -0.05585595f, -0.014680518f, + 0.030016491f, -0.17937884f, -0.19030805f, -0.11197273f, + -0.046215743f, 0.14573145f, 0.031408813f, 0.061366186f, + -0.07926941f, -0.08302711f, 0.061025552f, -0.015553272f, + -0.06158321f, 0.0143050505f, 0.02111178f, -0.001981786f, + 0.0767764f, 0.009569591f, -0.059213877f, 0.0063453517f, + -0.03622294f, -0.03039037f, 0.00013941481f, 0.009374101f, + -0.13855189f, 0.010991925f, -0.0613927f, 0.11416749f, + -0.11961187f, 0.32238087f, -0.044924937f, -0.08240755f, + -0.008297185f, -0.054251228f, 0.14359601f, 0.06008485f, + -0.018592346f, 0.0648186f, -0.0020248091f, 0.38440135f, + 0.053694524f, 0.13339223f, 0.06800024f, 0.018290306f, + 0.10995106f, -0.12827326f, 0.0123858955f, 0.21950454f, + 0.065632716f, 0.061837338f, 0.020810535f, -0.06626623f, + -0.14532562f, -0.093671024f, -0.06962128f, 0.040431153f, + -0.07160787f, -0.09618397f, 0.039452076f, 0.020019688f, + 0.13571987f, -0.046189487f, -0.015846943f, 0.0063015823f, + -0.09565114f, 0.22451776f, 0.00886037f, -0.02049069f, + -0.24221073f, 0.14828478f, -0.051143408f, 0.0461805f, + 0.09435043f, 0.09374778f, -0.08676505f, 0.066650264f, + -0.060268547f, -0.3259086f, -0.18091676f, -0.11639267f, + -0.5029436f, -0.09627753f, 0.02067597f, 0.7558151f, + 0.0038006685f, 0.70143574f, 0.02178817f, 0.075308986f, + 0.05171592f, 0.937243f, 0.037846364f, 0.12480036f, + -0.16727677f, 0.4041633f, 0.09565084f, 0.04462478f, + 0.18047121f, 0.025510564f, -0.054039463f, 0.14026093f, + 0.7756441f, 0.18320186f, 0.087877594f, 0.21245043f, + 0.128625f, 0.040841434f, 0.031882454f, 0.014652159f, + 0.07336157f, -0.082995646f, -0.08216907f, 0.06895632f, + -0.28883147f, 0.0687547f, 0.08278488f, 0.06376588f, + 0.08406635f, 0.34743282f, 0.01616047f, -0.105779156f, + 0.1468829f, 0.053489823f, 0.10077649f, -0.09239508f, + 0.6348831f, 0.1352438f, 0.02459858f, 0.090068035f, + -0.078240074f, -0.099081255f, -0.12910812f, -0.15346357f, + 0.12719591f, 0.15875258f, -0.06565642f, 0.27934027f, + -0.022967832f, -0.053190503f, 0.09059283f, 0.012006108f, + 0.0011857292f, 0.016293127f, 0.06444683f, -0.050672583f, + 3.5189834e-05f, 0.017987749f, -0.019098926f, 0.008637739f, + -0.024748938f, -0.053841494f, -0.09542447f, -0.014751939f, + 0.025203867f, -0.0032474683f, -0.006368458f, -0.0009960494f, + 0.0013469144f, -0.027301246f, -0.012753308f, -0.012530901f, + 0.016105907f, 0.034088247f, -0.01590232f, -0.13388981f, + -0.0125353085f, 0.09361885f, -0.0057449047f, 0.006084462f, + -0.06271147f, 0.031053199f, -0.04053029f, -0.044474907f, + 0.061547633f, -0.20477249f, 0.081579626f, -0.0585398f, + -0.20271818f, -0.011229073f, 0.03334085f, 0.15171741f, + 0.04966151f, 0.39416173f, 0.08891907f, 0.068318516f, + -0.12359032f, 0.14359109f, -0.023392875f, -0.064946696f, + 0.0454515f, -0.019338306f, -0.036920782f, -0.0061167954f, + 0.008170954f, -0.08232102f, -0.004634325f, 0.0277472f, + 0.112698115f, 0.21048214f, -0.0012042654f, -0.029842526f, + -0.025627753f, -0.014696349f, -0.026032865f, -0.0072196675f, + -0.036066715f, 0.051305927f, -0.045510262f, 0.0124340765f, + -0.05072888f, -0.005966866f, -0.021207381f, 0.0146908695f, + -0.021395259f, 0.051524293f, -0.027837146f, -0.052131847f, + -0.005911164f, 0.016989948f, -0.007660514f, 0.033356547f, + 0.08252214f, -0.021740522f, -0.010158041f, -0.037607312f, + -0.022566633f, 0.032255232f, 0.056726158f, 0.069313794f, + 0.064242706f, 0.17749299f, -0.00038684483f, -0.16919652f +}; + +static const float espcn_conv3_biases[] = { + -0.00073408236f, 0.004423303f, 0.0024515174f, 0.002585888f +}; + +static const unsigned long espcn_tf_size = 87134; + + +static const unsigned char espcn_tf_model[] = { + 0x0A, 0x4C, 0x0A, 0x01, 0x78, 0x12, 0x0B, 0x50, 0x6C, 0x61, 0x63, 0x65, + 0x68, 0x6F, 0x6C, 0x64, 0x65, 0x72, 0x2A, 0x2D, 0x0A, 0x05, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x12, 0x24, 0x3A, 0x22, 0x12, 0x02, 0x08, 0x01, 0x12, + 0x0B, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, + 0x12, 0x0B, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x01, 0x12, 0x02, 0x08, 0x01, 0x2A, 0x0B, 0x0A, 0x05, 0x64, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x02, 0x30, 0x01, 0x0A, 0x56, 0x0A, 0x05, 0x43, 0x6F, + 0x6E, 0x73, 0x74, 0x12, 0x05, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x2A, 0x39, + 0x0A, 0x05, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x12, 0x30, 0x42, 0x2E, 0x08, + 0x03, 0x12, 0x08, 0x12, 0x02, 0x08, 0x04, 0x12, 0x02, 0x08, 0x02, 0x22, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x0B, 0x0A, + 0x05, 0x64, 0x74, 0x79, 0x70, 0x65, 0x12, 0x02, 0x30, 0x03, 0x0A, 0x4F, + 0x0A, 0x09, 0x4D, 0x69, 0x72, 0x72, 0x6F, 0x72, 0x50, 0x61, 0x64, 0x12, + 0x09, 0x4D, 0x69, 0x72, 0x72, 0x6F, 0x72, 0x50, 0x61, 0x64, 0x1A, 0x01, + 0x78, 0x1A, 0x05, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x2A, 0x07, 0x0A, 0x01, + 0x54, 0x12, 0x02, 0x30, 0x01, 0x2A, 0x0F, 0x0A, 0x09, 0x54, 0x70, 0x61, + 0x64, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x12, 0x02, 0x30, 0x03, 0x2A, 0x13, + 0x0A, 0x04, 0x6D, 0x6F, 0x64, 0x65, 0x12, 0x0B, 0x12, 0x09, 0x53, 0x59, + 0x4D, 0x4D, 0x45, 0x54, 0x52, 0x49, 0x43, 0x0A, 0xC4, 0x32, 0x0A, 0x07, + 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x5F, 0x31, 0x12, 0x05, 0x43, 0x6F, 0x6E, + 0x73, 0x74, 0x2A, 0xA4, 0x32, 0x0A, 0x05, 0x76, 0x61, 0x6C, 0x75, 0x65, + 0x12, 0x9A, 0x32, 0x42, 0x97, 0x32, 0x08, 0x01, 0x12, 0x10, 0x12, 0x02, + 0x08, 0x05, 0x12, 0x02, 0x08, 0x05, 0x12, 0x02, 0x08, 0x01, 0x12, 0x02, + 0x08, 0x40, 0x22, 0x80, 0x32, 0xDE, 0xD5, 0x09, 0xBD, 0xE4, 0xFB, 0xE5, + 0xBE, 0xC3, 0xA5, 0x2D, 0x3D, 0x50, 0x50, 0xB8, 0xBD, 0xCB, 0xC4, 0x88, + 0x3D, 0xA7, 0x64, 0x6A, 0x3C, 0x24, 0x86, 0x84, 0x3D, 0x48, 0x56, 0x31, + 0x3C, 0x94, 0x62, 0x19, 0xBE, 0x86, 0x91, 0x8D, 0xBB, 0xBB, 0xA9, 0x0D, + 0x3D, 0xDE, 0x03, 0xE8, 0x3E, 0xF8, 0x76, 0xB9, 0xBB, 0x31, 0xF8, 0x81, + 0xBE, 0xBF, 0x27, 0x76, 0xBD, 0x2F, 0xCA, 0xCD, 0xBB, 0x9E, 0x08, 0x76, + 0xBC, 0xCB, 0x70, 0x2D, 0x3D, 0xF5, 0x13, 0x6F, 0xBD, 0x8A, 0x2E, 0x04, + 0x3D, 0xE6, 0xCF, 0x9C, 0x3D, 0x63, 0xA5, 0xFA, 0xBD, 0x5C, 0x23, 0x04, + 0xBD, 0x34, 0x9C, 0xA3, 0x3D, 0x20, 0xEA, 0x47, 0x3A, 0x21, 0x8B, 0x80, + 0xBB, 0xB0, 0x6A, 0x12, 0x3D, 0x09, 0x57, 0x2A, 0x3D, 0x3E, 0x21, 0x19, + 0x3C, 0x9A, 0xD8, 0x64, 0xBE, 0x6E, 0x73, 0xF4, 0xBD, 0xAF, 0x87, 0x4C, + 0x3D, 0x92, 0x19, 0x2A, 0xBD, 0x07, 0xBF, 0x2C, 0x3E, 0xFE, 0x1A, 0x91, + 0xBE, 0x51, 0x5A, 0x84, 0xBB, 0x1E, 0x1C, 0x8D, 0x3C, 0x2D, 0x5C, 0x09, + 0xBC, 0x17, 0xD8, 0xD4, 0xBC, 0x29, 0x47, 0xEA, 0xBE, 0xB7, 0xD5, 0x79, + 0xBE, 0x72, 0xBE, 0x23, 0xBD, 0x5F, 0x39, 0xD3, 0xBC, 0x02, 0x94, 0x7D, + 0xBE, 0xC0, 0x4C, 0xDE, 0x3D, 0xC1, 0x0B, 0x0F, 0xBD, 0xA1, 0xAB, 0x72, + 0x3D, 0x39, 0x22, 0xDC, 0x3D, 0x94, 0xE5, 0x8D, 0xBD, 0xFF, 0xDB, 0x98, + 0xBE, 0xA0, 0x74, 0x29, 0x3D, 0x72, 0x47, 0xB7, 0xBD, 0x95, 0xFF, 0x06, + 0xBE, 0xB9, 0x49, 0x54, 0xBC, 0x5D, 0xAA, 0x33, 0x3D, 0x74, 0x5A, 0x15, + 0x3E, 0xE7, 0xAB, 0x86, 0xBD, 0xF8, 0x83, 0x57, 0x3C, 0xA2, 0xE2, 0xDC, + 0xBC, 0xB0, 0x64, 0xC2, 0xBC, 0x49, 0x8C, 0x41, 0x3D, 0xFF, 0x8D, 0x59, + 0x3E, 0x9A, 0x87, 0x5F, 0xBB, 0x50, 0x90, 0xD1, 0xBD, 0x26, 0xBD, 0xA6, + 0x3D, 0x71, 0x4F, 0xE6, 0x3F, 0x42, 0xBA, 0xA5, 0x3E, 0xF1, 0xB2, 0x75, + 0x3D, 0x35, 0x79, 0x05, 0xBE, 0x4D, 0x7D, 0x57, 0xBE, 0x4F, 0xA3, 0x97, + 0xBB, 0xEC, 0x41, 0x2E, 0x3C, 0x4C, 0x3F, 0x1A, 0x3E, 0x87, 0x87, 0x0E, + 0x3C, 0x85, 0xFB, 0xD0, 0xBC, 0x92, 0xFB, 0x5C, 0x3D, 0xAE, 0x85, 0x4D, + 0xBC, 0x5C, 0x76, 0x2A, 0x3E, 0x97, 0xB6, 0xF0, 0xBD, 0x35, 0x88, 0x35, + 0x3C, 0xF4, 0x8E, 0xD0, 0x3C, 0x91, 0x24, 0x99, 0x3F, 0x24, 0x84, 0xAC, + 0x3D, 0x45, 0x65, 0xBB, 0xBC, 0x93, 0xC4, 0xE9, 0x3D, 0x28, 0x10, 0x45, + 0x3D, 0x7D, 0xD6, 0x89, 0xBD, 0x8B, 0x96, 0xAE, 0xBB, 0xB3, 0xAE, 0x4C, + 0xBC, 0xF2, 0x74, 0x95, 0x3C, 0x89, 0x8E, 0x72, 0xBF, 0xB2, 0x71, 0xBD, + 0xBC, 0x95, 0x87, 0x8A, 0xBC, 0x2A, 0x06, 0xA4, 0xBE, 0x57, 0x7D, 0x23, + 0xBE, 0xE0, 0xA4, 0x00, 0x3C, 0x68, 0x75, 0x96, 0x3D, 0x54, 0x86, 0x0F, + 0xBE, 0x4A, 0x4E, 0x15, 0x3F, 0x0B, 0xD5, 0xC4, 0xBC, 0x4D, 0x01, 0xC0, + 0xBC, 0xF2, 0xAF, 0x4C, 0x3C, 0xBC, 0x39, 0x97, 0xBB, 0x45, 0x6F, 0xBA, + 0x3F, 0x69, 0x6C, 0x98, 0x3D, 0xA4, 0xE3, 0x05, 0x3E, 0x56, 0x0A, 0xBC, + 0x3C, 0x52, 0x05, 0x67, 0x3E, 0xFA, 0xD1, 0x5C, 0xBE, 0x58, 0x59, 0x3B, + 0x3D, 0xA8, 0xDB, 0x9F, 0xBD, 0x97, 0xEF, 0x87, 0xBD, 0x23, 0xC5, 0x70, + 0x3D, 0x89, 0xB0, 0x9A, 0x3D, 0x3C, 0x66, 0xC3, 0xBD, 0xBD, 0xF1, 0xAA, + 0x3C, 0x62, 0xC3, 0xCD, 0x3E, 0xDC, 0xCF, 0x1C, 0x3C, 0x62, 0xD8, 0x16, + 0xBE, 0x68, 0x5E, 0x5A, 0xBF, 0x27, 0x89, 0x52, 0xBD, 0xC3, 0x58, 0x5F, + 0xBC, 0x9C, 0xDC, 0xCB, 0x3C, 0xB2, 0x22, 0x9D, 0x3C, 0xBD, 0x71, 0x7E, + 0x3E, 0x5A, 0x9C, 0x2C, 0xBE, 0x13, 0x73, 0xB5, 0xBE, 0xC9, 0x92, 0xF5, + 0x3A, 0x55, 0x56, 0xE6, 0xBC, 0x18, 0xC5, 0x11, 0xC0, 0xE1, 0x5B, 0xA8, + 0xBE, 0x70, 0xCC, 0x23, 0xBE, 0x09, 0x55, 0x12, 0x3E, 0xAE, 0xAB, 0x27, + 0x3E, 0xE7, 0x2F, 0xA1, 0xBC, 0x26, 0x5D, 0x1A, 0xBB, 0xC7, 0xC6, 0xF1, + 0xBD, 0xC0, 0x58, 0xE0, 0xBB, 0x80, 0xCF, 0x46, 0xBB, 0x49, 0x9D, 0x32, + 0xBF, 0x7A, 0x6F, 0x8B, 0xBC, 0x53, 0xE2, 0x8E, 0x3D, 0x71, 0xF1, 0x1B, + 0x3E, 0xF7, 0x27, 0x64, 0x3C, 0xB0, 0x1F, 0x1B, 0xBC, 0x8B, 0x27, 0x90, + 0x3F, 0x2F, 0xD1, 0x82, 0xBD, 0x2E, 0xEF, 0x11, 0x3F, 0xEE, 0x47, 0x3F, + 0xBE, 0xD6, 0x68, 0x42, 0x3D, 0x69, 0xA0, 0x14, 0xBC, 0x9B, 0x24, 0x66, + 0xBD, 0x17, 0x54, 0xA7, 0xBB, 0x16, 0xE0, 0xD4, 0xBC, 0xCA, 0x01, 0x03, + 0x40, 0xD3, 0x5A, 0x18, 0xBD, 0xDE, 0x03, 0xCB, 0xBB, 0x0B, 0x16, 0x33, + 0xBE, 0xAA, 0xEC, 0xA2, 0x3E, 0x4E, 0x2C, 0x49, 0xBC, 0x5C, 0x45, 0x99, + 0xBD, 0xB1, 0xFF, 0x84, 0xBD, 0xB0, 0x3A, 0x4B, 0x3F, 0x8D, 0x04, 0x78, + 0xBC, 0x5B, 0x27, 0xA9, 0x3B, 0x57, 0x19, 0x4C, 0x3C, 0x1C, 0x3A, 0x55, + 0x3B, 0x12, 0xCF, 0xE0, 0x3E, 0xFE, 0xF3, 0xE4, 0x3D, 0x9D, 0x49, 0x14, + 0xBE, 0x8B, 0x2F, 0xAF, 0x3C, 0xF6, 0x99, 0xAD, 0xBE, 0x6C, 0x04, 0xDA, + 0x3D, 0xB8, 0x32, 0xDF, 0xBC, 0x77, 0xFE, 0xA4, 0x39, 0x34, 0x30, 0x26, + 0xBD, 0x44, 0x0D, 0x74, 0xBD, 0xD7, 0x1C, 0x3A, 0x3A, 0x86, 0xBC, 0xDE, + 0xBA, 0x2F, 0x04, 0x40, 0x3D, 0x49, 0xBC, 0x0B, 0xBD, 0x60, 0x35, 0xD9, + 0xBD, 0x36, 0x35, 0x8E, 0x3E, 0xFE, 0x6E, 0xBC, 0x3E, 0xA8, 0xA9, 0xEF, + 0xBD, 0x6E, 0x89, 0x35, 0x3C, 0xB0, 0x61, 0xFD, 0x3B, 0xCC, 0x65, 0xE8, + 0xBC, 0x9D, 0xD3, 0x4A, 0x3D, 0x7B, 0xB5, 0x1A, 0x3E, 0x88, 0x15, 0x44, + 0x3E, 0x41, 0xD8, 0x9C, 0x3D, 0xBB, 0x4F, 0x0C, 0x3E, 0xC6, 0x6E, 0x6C, + 0x3F, 0x97, 0x5B, 0xBB, 0xBD, 0x2B, 0xA2, 0x32, 0xBE, 0x24, 0x5A, 0xD5, + 0xBD, 0x1B, 0x16, 0x78, 0x3D, 0x52, 0xCB, 0x4C, 0x3C, 0xE2, 0x0D, 0x4D, + 0xBC, 0x3F, 0x35, 0x0E, 0xBE, 0xC8, 0x25, 0x42, 0x3B, 0x9F, 0x87, 0xFE, + 0x39, 0x14, 0x67, 0x53, 0x3E, 0x19, 0xC6, 0x07, 0xBA, 0xCB, 0x2E, 0x08, + 0x3E, 0x8A, 0xBB, 0x19, 0xBE, 0x4F, 0xE0, 0x96, 0xBD, 0x4E, 0x4D, 0x7F, + 0xBA, 0x7B, 0xE8, 0x4C, 0xBC, 0x63, 0xA3, 0x38, 0xBE, 0xC4, 0x97, 0xD4, + 0xBD, 0x86, 0x8A, 0xA2, 0x3E, 0x34, 0xA5, 0x89, 0x3D, 0x32, 0xC2, 0x62, + 0x3D, 0x85, 0x54, 0x3B, 0xBC, 0x96, 0xB5, 0x60, 0x3C, 0xF4, 0xB5, 0x37, + 0xBD, 0x00, 0x1C, 0xA9, 0xBF, 0xE8, 0xD4, 0x65, 0xBD, 0xF5, 0x09, 0x45, + 0x3A, 0xA8, 0x5B, 0x00, 0xBE, 0xF8, 0xA9, 0x04, 0x3F, 0x27, 0xB8, 0x63, + 0xBC, 0xB3, 0x1D, 0xA3, 0x3D, 0x84, 0x92, 0xE7, 0x3D, 0xE0, 0xD0, 0xAD, + 0xBF, 0x78, 0x1E, 0xB3, 0xBB, 0xB8, 0x9B, 0x12, 0xBA, 0x0F, 0x59, 0x45, + 0x3C, 0xFD, 0x3B, 0x97, 0x3C, 0x31, 0xD5, 0xA6, 0xBF, 0xA2, 0x94, 0x07, + 0x3E, 0xC5, 0xFB, 0x3E, 0x3B, 0x3B, 0x7F, 0x01, 0x3D, 0xB6, 0xAD, 0x35, + 0x3E, 0xA8, 0xA5, 0xAE, 0xBD, 0xA4, 0x81, 0xA8, 0x3D, 0xA1, 0xB7, 0xC4, + 0xBC, 0x5F, 0x15, 0x77, 0xBB, 0xB6, 0xD7, 0x8B, 0xBC, 0x0E, 0x8D, 0x0D, + 0x3B, 0x28, 0xC1, 0x9B, 0xBC, 0x52, 0x50, 0x76, 0xBD, 0x25, 0x56, 0x90, + 0x3D, 0xC1, 0x00, 0x23, 0x3E, 0xD5, 0xBA, 0x79, 0x3D, 0x84, 0xBE, 0x18, + 0xBE, 0x5E, 0x99, 0x98, 0x3D, 0xE8, 0x9C, 0xC0, 0xBC, 0x11, 0xEB, 0x02, + 0xBE, 0x93, 0x51, 0x42, 0xBC, 0x9E, 0xC1, 0x8D, 0xBE, 0x7A, 0x41, 0x8C, + 0xBE, 0x0A, 0x1A, 0x1B, 0x3D, 0xA7, 0xF7, 0x91, 0xBD, 0x1E, 0x69, 0x5E, + 0x3E, 0x00, 0xB1, 0x64, 0xBE, 0x7E, 0x14, 0x0F, 0x3E, 0xB7, 0x94, 0x73, + 0xBD, 0x71, 0xD9, 0xB5, 0x3A, 0x88, 0x85, 0x06, 0xBE, 0xB3, 0x40, 0x83, + 0x3C, 0xD5, 0x40, 0xEE, 0x3C, 0x9B, 0xBE, 0x11, 0x3E, 0x25, 0x42, 0xED, + 0x3B, 0xD9, 0x13, 0xEF, 0xBB, 0x9C, 0x1A, 0xE1, 0xBD, 0x10, 0x10, 0x4F, + 0x3C, 0x06, 0xF1, 0xF2, 0xBD, 0x53, 0x0D, 0xD1, 0xBD, 0x8D, 0x36, 0x82, + 0xB9, 0x35, 0xC8, 0xCA, 0x3B, 0x23, 0x3D, 0x07, 0x3E, 0x44, 0x64, 0xCC, + 0xBC, 0xB2, 0x0C, 0xE2, 0xBC, 0x0D, 0x39, 0xAA, 0xBE, 0x06, 0xDE, 0x3A, + 0xBD, 0x46, 0x69, 0x3F, 0x3D, 0x7A, 0x53, 0x88, 0x3C, 0xD8, 0x3A, 0x18, + 0xBC, 0x57, 0xDB, 0x0B, 0x3D, 0x87, 0x3E, 0x82, 0x3E, 0x1C, 0x62, 0x58, + 0x3D, 0xD9, 0x37, 0x8E, 0x3C, 0x5D, 0x27, 0x53, 0x3D, 0xBB, 0x69, 0xAE, + 0xBE, 0x65, 0x08, 0x87, 0xBB, 0xA7, 0xD7, 0xCC, 0xBC, 0xDF, 0x60, 0x47, + 0x3D, 0x01, 0xAE, 0x62, 0x3E, 0x04, 0x1E, 0x41, 0x3C, 0x67, 0x26, 0x71, + 0xBC, 0x6D, 0x56, 0xA1, 0xBC, 0x66, 0x14, 0xF5, 0x3B, 0x1C, 0x06, 0xCC, + 0xBC, 0xA5, 0xEF, 0xD5, 0x3E, 0xBD, 0x08, 0xC1, 0xBC, 0x9C, 0x72, 0xC6, + 0xBC, 0xC9, 0xD1, 0x95, 0x3E, 0xDA, 0xCE, 0xFD, 0xBD, 0xDF, 0xF9, 0x14, + 0xBD, 0xD4, 0x0A, 0x6A, 0x3B, 0xED, 0x3A, 0xB7, 0x3D, 0x4B, 0x23, 0x81, + 0xBC, 0xDE, 0x89, 0xAF, 0xBE, 0xC2, 0x19, 0x88, 0x3A, 0xA3, 0x43, 0x6C, + 0x3D, 0xF3, 0xCF, 0xCC, 0xBD, 0x2F, 0xE9, 0x86, 0xBD, 0x81, 0xD5, 0xED, + 0xBD, 0xF7, 0x7D, 0x0A, 0x3E, 0x56, 0x61, 0x92, 0x3D, 0xBC, 0x1C, 0x61, + 0x3B, 0xF3, 0xD4, 0xF7, 0xB9, 0x15, 0x17, 0x04, 0x3D, 0x34, 0xD8, 0x18, + 0x3C, 0xFD, 0xBF, 0x7B, 0x3C, 0xF4, 0x3F, 0xFA, 0xB9, 0x06, 0x9B, 0xE5, + 0x3C, 0xBB, 0x52, 0xED, 0x3A, 0x1A, 0x65, 0xB2, 0xBE, 0xE7, 0xDE, 0xAA, + 0xBE, 0x72, 0x21, 0xA7, 0x3D, 0xCF, 0xEE, 0x57, 0xBE, 0xAF, 0xFA, 0x7E, + 0xBE, 0x83, 0x38, 0x2D, 0x3D, 0x55, 0x7E, 0x86, 0xBB, 0x56, 0xD8, 0x0B, + 0xBD, 0xAE, 0xF1, 0xCD, 0x3B, 0x0C, 0xD7, 0xE3, 0xBC, 0x49, 0x9A, 0x3C, + 0x3E, 0x8F, 0xD8, 0x5C, 0xBB, 0xEE, 0x0E, 0xA4, 0x3E, 0x5F, 0x35, 0xA2, + 0x3D, 0xF4, 0xB8, 0xAB, 0xBC, 0x98, 0x66, 0x94, 0x3C, 0x2C, 0x1F, 0xA9, + 0xBF, 0xFB, 0xF3, 0xD9, 0xBE, 0xA6, 0x0D, 0xD4, 0xBD, 0xE0, 0x6D, 0x60, + 0xBD, 0x49, 0x25, 0x18, 0x3D, 0xCF, 0x64, 0xB7, 0x3B, 0xC4, 0xD3, 0xAE, + 0x3D, 0xBD, 0x45, 0x13, 0x3C, 0xC9, 0x25, 0x9E, 0x3B, 0x27, 0x21, 0x9B, + 0xBF, 0x82, 0xCB, 0xB2, 0xBC, 0xBB, 0x02, 0x72, 0x3C, 0x41, 0xFD, 0x83, + 0xBE, 0xF4, 0x1A, 0x76, 0x3E, 0xA1, 0x5F, 0x28, 0xBD, 0xDC, 0x5C, 0xEC, + 0xBD, 0x2A, 0xA6, 0xD0, 0xBD, 0x6D, 0xEB, 0x40, 0x3F, 0xC1, 0x64, 0x8B, + 0x3B, 0x62, 0x23, 0xD3, 0x39, 0xC9, 0x36, 0xDB, 0xBB, 0x80, 0x0D, 0xE3, + 0xBA, 0x46, 0x21, 0xA5, 0x3E, 0xB8, 0x8F, 0x3D, 0x3F, 0x7F, 0xAA, 0x67, + 0x3E, 0xD2, 0x3E, 0x57, 0x3C, 0xD0, 0x21, 0x70, 0x3E, 0xA9, 0x95, 0x90, + 0xBD, 0x69, 0xC8, 0x9F, 0x3C, 0xB4, 0xD8, 0x8C, 0xBD, 0xEA, 0x17, 0xA8, + 0x3C, 0x16, 0x43, 0x2B, 0x3E, 0x74, 0xCB, 0xBB, 0x3E, 0xC2, 0x3E, 0x87, + 0xBC, 0xE2, 0xBE, 0x78, 0xBC, 0xF7, 0x8B, 0xC6, 0xBB, 0x42, 0x68, 0xB1, + 0x3D, 0xA5, 0x0E, 0x92, 0xBE, 0x83, 0xC2, 0xE4, 0xBD, 0x64, 0xF1, 0xCD, + 0x3D, 0x49, 0xE7, 0xC9, 0xBC, 0xE2, 0xD0, 0x56, 0x3D, 0x39, 0xE4, 0x52, + 0x3D, 0xB2, 0x25, 0x45, 0xBE, 0x04, 0x54, 0xC5, 0xBE, 0x11, 0x19, 0x9C, + 0xBC, 0x89, 0x6F, 0xEF, 0x3D, 0x0F, 0x4C, 0x5B, 0xBE, 0x59, 0xBF, 0x9A, + 0xBE, 0xCC, 0x51, 0xA8, 0x3F, 0x81, 0x4D, 0x87, 0x3E, 0x4B, 0xAA, 0xAC, + 0x3E, 0xFD, 0x7D, 0xB6, 0x3E, 0x59, 0x56, 0xF4, 0xBC, 0x2A, 0xB6, 0x23, + 0x3D, 0x59, 0xDD, 0xF1, 0x3E, 0x33, 0x94, 0x94, 0xBC, 0x02, 0xE8, 0xD3, + 0x3C, 0x1A, 0x78, 0x0B, 0xBE, 0xD0, 0x95, 0x02, 0x3C, 0xDF, 0x56, 0x5D, + 0xBE, 0xD9, 0x0B, 0xB5, 0x3E, 0x31, 0x06, 0x2F, 0x3D, 0xCE, 0x85, 0x04, + 0xBD, 0x27, 0x6B, 0xDC, 0xBF, 0xC2, 0xAB, 0x62, 0x3E, 0x41, 0x85, 0x58, + 0x3F, 0xE7, 0x3F, 0x7E, 0x3C, 0x78, 0x3A, 0x6B, 0xBD, 0x73, 0xA5, 0x4D, + 0x3D, 0x3A, 0x04, 0x7E, 0xBD, 0x58, 0xB9, 0x5F, 0x3C, 0xCC, 0x14, 0x85, + 0xBC, 0x00, 0xA5, 0x88, 0x40, 0x62, 0x01, 0xC7, 0x3B, 0xC7, 0x32, 0xA9, + 0x3C, 0xCB, 0x62, 0x35, 0x3E, 0x55, 0x53, 0xE6, 0xBF, 0x86, 0x9E, 0xF9, + 0xBC, 0xED, 0x0F, 0x88, 0x3E, 0x8E, 0x0D, 0x74, 0x3E, 0x97, 0xAD, 0xB7, + 0x3E, 0x41, 0xA8, 0xDD, 0x3C, 0xFE, 0x15, 0xDE, 0x3C, 0xC9, 0x11, 0xFB, + 0x3A, 0xA7, 0x56, 0x12, 0x3C, 0x70, 0x7D, 0x75, 0xC0, 0xF2, 0x12, 0x84, + 0x3F, 0x19, 0x2B, 0x8A, 0xBE, 0x81, 0x83, 0x80, 0xBC, 0x56, 0x3B, 0xAD, + 0x3D, 0x62, 0x44, 0x0F, 0x3E, 0x6E, 0xAD, 0x56, 0xBD, 0xD9, 0x9A, 0xAE, + 0x3D, 0xA0, 0x44, 0x3E, 0x3E, 0xF5, 0x23, 0x4D, 0xBE, 0xD4, 0x18, 0xE6, + 0xBF, 0x6A, 0x3C, 0x92, 0x3E, 0x1E, 0xE0, 0x12, 0x3C, 0x24, 0x00, 0x28, + 0x3F, 0x53, 0x04, 0x4C, 0xBE, 0x24, 0x29, 0xF1, 0x3E, 0x8C, 0xAA, 0x5E, + 0x3F, 0xFB, 0x53, 0x4F, 0xBD, 0x09, 0xD7, 0x42, 0x3D, 0x5F, 0x91, 0x21, + 0xBB, 0xA5, 0x47, 0x44, 0xBD, 0x2B, 0x40, 0xC9, 0xBE, 0x74, 0x44, 0x99, + 0x3F, 0xC1, 0xC4, 0x28, 0x3F, 0x5D, 0x68, 0x08, 0xBD, 0x17, 0x70, 0xAB, + 0x3D, 0xCE, 0x7B, 0x29, 0x40, 0xC6, 0xA5, 0xA7, 0xBF, 0xCB, 0xA1, 0x81, + 0x3F, 0xEA, 0xA6, 0x51, 0xBF, 0xD6, 0xF4, 0xC7, 0xBE, 0x3B, 0xFD, 0x17, + 0xBD, 0x95, 0xF9, 0x14, 0xBD, 0x97, 0x23, 0x1A, 0x3C, 0xEE, 0x2B, 0x23, + 0xBC, 0xBE, 0xA4, 0x3A, 0xBC, 0xE9, 0xE5, 0x8A, 0x3E, 0x96, 0x4A, 0x39, + 0xBC, 0x65, 0xF0, 0x1D, 0xBE, 0x59, 0x41, 0xDC, 0xBE, 0x17, 0x79, 0x21, + 0xBD, 0xA6, 0xFF, 0x26, 0x3C, 0x42, 0xB8, 0xE2, 0xBF, 0x64, 0x40, 0xD2, + 0xBC, 0xCB, 0x04, 0xAB, 0xBF, 0xCC, 0x67, 0x90, 0x3E, 0xA9, 0xBC, 0xF3, + 0x3B, 0x8F, 0x0D, 0xFD, 0x3B, 0xE2, 0xA3, 0x6A, 0x3B, 0x26, 0xD8, 0xE2, + 0x3C, 0xF4, 0x50, 0xFD, 0x3C, 0xAC, 0x0C, 0x45, 0xC0, 0x8A, 0x2F, 0x9A, + 0xBC, 0xE3, 0xB9, 0xC4, 0xBB, 0xA8, 0x92, 0xE0, 0x3E, 0x86, 0x82, 0xC0, + 0xC0, 0x37, 0x20, 0xA0, 0x3D, 0x22, 0xBB, 0x80, 0xBE, 0x13, 0x8A, 0x11, + 0x3E, 0x2C, 0x9C, 0x82, 0xC0, 0x7F, 0xFB, 0x44, 0x39, 0xBB, 0x5E, 0xDD, + 0xBC, 0x8C, 0x33, 0x9D, 0x3C, 0xC2, 0x21, 0xB0, 0x3B, 0x77, 0x96, 0x54, + 0x40, 0xE4, 0x6F, 0xB7, 0x3F, 0xF1, 0x14, 0x09, 0x3D, 0x4A, 0x4A, 0xCB, + 0x3C, 0x50, 0x94, 0xA1, 0x3E, 0x02, 0x15, 0x60, 0xBE, 0xD2, 0xC7, 0xB4, + 0x3D, 0xFB, 0x68, 0xEC, 0xBC, 0xF0, 0x7A, 0xE2, 0xBD, 0x8C, 0xAD, 0xAC, + 0x3D, 0xDD, 0x85, 0x73, 0xC0, 0x87, 0xB4, 0xC6, 0xBC, 0xA7, 0x2F, 0x5A, + 0xBD, 0xB3, 0xE2, 0xA0, 0x3E, 0x59, 0x11, 0xB0, 0x3E, 0x97, 0x1F, 0x33, + 0xBF, 0x7C, 0x44, 0x08, 0x3E, 0x69, 0x6D, 0x34, 0x3D, 0xA6, 0x9E, 0xCF, + 0xBC, 0xDA, 0x2F, 0x2D, 0xBE, 0xEE, 0x59, 0x5C, 0x3C, 0xB3, 0x1F, 0xF8, + 0xBB, 0xDE, 0x32, 0x51, 0xBF, 0xCA, 0x90, 0x8A, 0x3E, 0x79, 0x1F, 0x3B, + 0x3D, 0x07, 0x67, 0x39, 0x3D, 0x11, 0x7F, 0x64, 0xC0, 0x75, 0x80, 0x84, + 0xBF, 0x1B, 0xAB, 0x5F, 0x3F, 0xAC, 0xD6, 0x53, 0x3E, 0xDC, 0xA4, 0xC9, + 0x3B, 0x15, 0x1A, 0x20, 0x3D, 0x63, 0x4C, 0x69, 0xBD, 0x70, 0xB2, 0x6C, + 0x3C, 0x59, 0xDE, 0x29, 0x3D, 0xC5, 0xDF, 0x95, 0x3C, 0x22, 0xCE, 0x79, + 0xBD, 0x7C, 0x33, 0xB9, 0x3C, 0x41, 0x6B, 0xF9, 0xBD, 0x4B, 0x01, 0x7A, + 0xBC, 0x90, 0x64, 0xA7, 0x3D, 0xE0, 0x73, 0x2E, 0x3C, 0xB7, 0xF5, 0xC7, + 0x3E, 0xC6, 0x0E, 0x89, 0x3E, 0x71, 0x19, 0xD7, 0x3E, 0xF5, 0x5D, 0xAE, + 0xBE, 0xD8, 0x58, 0xDA, 0xBB, 0x7A, 0x3F, 0xE1, 0xBD, 0xA0, 0x67, 0xED, + 0x3C, 0xBA, 0x4C, 0x6A, 0xBD, 0xF8, 0x45, 0x57, 0x3D, 0x6A, 0x07, 0x66, + 0xBE, 0x29, 0x8D, 0xFF, 0x3D, 0xAB, 0x97, 0xC7, 0xBC, 0x6A, 0x77, 0x3A, + 0xBD, 0x11, 0xAB, 0x64, 0xBE, 0x20, 0x03, 0x7E, 0x3D, 0xE7, 0x4D, 0xE0, + 0x3D, 0x6C, 0x6C, 0x4E, 0xBE, 0x69, 0xC5, 0x06, 0x40, 0x3C, 0x75, 0x11, + 0xBC, 0x73, 0xA2, 0x60, 0x3C, 0x98, 0x19, 0x43, 0xBD, 0x54, 0xE9, 0x02, + 0xBD, 0x0A, 0x30, 0x1C, 0x40, 0xE7, 0xC8, 0x3B, 0x3F, 0x18, 0x9D, 0x9B, + 0x3E, 0xA7, 0x02, 0x70, 0xBD, 0x2C, 0x86, 0xB0, 0xBE, 0xE4, 0xE0, 0x82, + 0x3E, 0xA9, 0x27, 0xBB, 0xBD, 0x69, 0x82, 0x0B, 0x3C, 0xF2, 0x1F, 0xE1, + 0xBD, 0xDD, 0xCE, 0x3A, 0x3E, 0xAC, 0x16, 0x8E, 0xBE, 0x3B, 0xA2, 0x79, + 0x3E, 0x4D, 0x27, 0x8E, 0x3D, 0xFE, 0x80, 0x41, 0x3E, 0x7C, 0x40, 0x6D, + 0xBF, 0x8C, 0x77, 0x03, 0x3E, 0xCD, 0xC8, 0x26, 0x3E, 0xAD, 0x60, 0xC1, + 0x3A, 0x39, 0x20, 0xAF, 0xBB, 0x3A, 0x99, 0xC8, 0x3E, 0xC9, 0x22, 0x89, + 0x3C, 0x3E, 0xFA, 0xE7, 0x3D, 0x99, 0x96, 0xC4, 0x3E, 0x7D, 0x4D, 0xB9, + 0x3D, 0x96, 0xEF, 0xA8, 0x3D, 0xC0, 0xFC, 0x05, 0x3E, 0x02, 0x8A, 0xD2, + 0x3F, 0xAF, 0x18, 0x11, 0x3F, 0xFB, 0x14, 0xDB, 0x3D, 0x79, 0x3C, 0xC6, + 0xBC, 0xDE, 0xE0, 0xDD, 0x3D, 0x27, 0x4C, 0x9C, 0x39, 0x70, 0x1F, 0x80, + 0x3D, 0xE9, 0x1A, 0xD2, 0xBD, 0x83, 0xDD, 0x9A, 0xBC, 0x5C, 0x58, 0x16, + 0xBC, 0xB6, 0xF5, 0x5C, 0x3B, 0x9C, 0x69, 0x86, 0xBC, 0x95, 0x31, 0x3A, + 0x3D, 0xE4, 0xBE, 0x83, 0x3E, 0x3C, 0x0E, 0x86, 0xBD, 0x43, 0x85, 0xE1, + 0xBB, 0x1D, 0xF7, 0xEC, 0x3D, 0xF2, 0x54, 0x41, 0xBC, 0xFC, 0xED, 0xE3, + 0x3D, 0x23, 0x76, 0xEB, 0x3D, 0x3B, 0xBA, 0x12, 0x3C, 0xC5, 0x00, 0x5F, + 0x3C, 0x8C, 0x25, 0x48, 0xBD, 0x82, 0x47, 0x55, 0x3C, 0xE9, 0x10, 0x58, + 0xBD, 0x44, 0xDB, 0xEE, 0x3E, 0x26, 0x98, 0x9D, 0xBD, 0x07, 0xB4, 0xD4, + 0xBB, 0x42, 0xB4, 0xFD, 0xBD, 0x9D, 0x39, 0xBD, 0xBC, 0x78, 0xB4, 0xC4, + 0xBD, 0xDA, 0xDA, 0xB9, 0xBD, 0xA7, 0x92, 0xBE, 0xBD, 0xC5, 0x05, 0x0B, + 0x3D, 0x79, 0x81, 0x0C, 0xBC, 0x97, 0xD0, 0xCE, 0xBB, 0xCA, 0x80, 0xC1, + 0x3C, 0xE9, 0x81, 0x83, 0x3B, 0xAB, 0xA6, 0x07, 0xBF, 0xD8, 0xEE, 0xDD, + 0xBE, 0x76, 0x75, 0xC8, 0x3D, 0xE2, 0x3F, 0x01, 0x3D, 0x3C, 0xBF, 0x14, + 0xBD, 0x7E, 0x87, 0x7E, 0x3C, 0x68, 0x57, 0x4C, 0x3D, 0x9E, 0x80, 0x60, + 0xBC, 0x8F, 0x01, 0x21, 0x3C, 0xBA, 0xEF, 0x17, 0x3E, 0x3C, 0x6D, 0x89, + 0x3D, 0xA1, 0x39, 0xDF, 0xBC, 0x6C, 0x52, 0xEE, 0xBC, 0xA7, 0xA0, 0x2F, + 0x3E, 0xC5, 0x8D, 0xBE, 0xBD, 0x46, 0xCF, 0x61, 0xBD, 0x6D, 0x8A, 0xD2, + 0xBB, 0xB6, 0x48, 0x78, 0xBD, 0xCA, 0xAF, 0x7C, 0x3A, 0xE0, 0x13, 0x8D, + 0x3D, 0x79, 0x40, 0x1F, 0xBD, 0xB0, 0x8D, 0xCC, 0x3D, 0xF5, 0x42, 0x6D, + 0x3D, 0x89, 0xA7, 0xD8, 0xBC, 0x65, 0xEC, 0x60, 0xBE, 0x94, 0xA8, 0x84, + 0xBC, 0x98, 0x30, 0x52, 0x3F, 0xC6, 0x0B, 0x94, 0x3E, 0x3F, 0x30, 0xBF, + 0x3E, 0xB7, 0x14, 0x50, 0x3E, 0x83, 0xAA, 0xE0, 0xBD, 0x13, 0x2F, 0x21, + 0xBE, 0x35, 0xD8, 0x12, 0x3D, 0x4C, 0x96, 0x9B, 0xBD, 0x19, 0x63, 0x2E, + 0xBD, 0xBA, 0x26, 0x26, 0xBD, 0x37, 0xA8, 0x45, 0x3E, 0xAA, 0xC1, 0x65, + 0xBC, 0x3B, 0x53, 0x42, 0xBE, 0x7B, 0x9C, 0xDF, 0xBC, 0xFC, 0x11, 0x2D, + 0x3D, 0xC8, 0x1F, 0xD2, 0x3B, 0x67, 0x11, 0xBD, 0x3F, 0xA1, 0x3A, 0xD4, + 0xBC, 0xF1, 0x36, 0x3B, 0x3E, 0xE7, 0x31, 0x0C, 0xBD, 0xDA, 0xB9, 0xE5, + 0xBA, 0x85, 0x89, 0x86, 0x3D, 0x02, 0x4C, 0xE8, 0xBD, 0xD8, 0x18, 0x26, + 0x3D, 0x29, 0xFF, 0x14, 0x3D, 0x1F, 0x8A, 0xB3, 0x3F, 0xA6, 0xB4, 0xD2, + 0xBC, 0x6A, 0xA2, 0x65, 0xBB, 0x3E, 0xB2, 0x00, 0x3F, 0xB2, 0xF6, 0xA2, + 0xBD, 0x38, 0x17, 0x46, 0x3B, 0xAC, 0x40, 0xF9, 0xBC, 0x6B, 0x2B, 0x49, + 0xBE, 0xEE, 0x4A, 0x16, 0xBF, 0xAE, 0xEB, 0xB3, 0x3C, 0x30, 0xF2, 0xC6, + 0xBB, 0x46, 0x3C, 0x13, 0x3D, 0x72, 0xFF, 0x19, 0x3C, 0xEA, 0x78, 0x8F, + 0xBE, 0x4A, 0x73, 0x48, 0xBF, 0x9C, 0x7A, 0x6C, 0xBE, 0x20, 0x12, 0x00, + 0xBB, 0xF9, 0x4F, 0x21, 0xBF, 0x73, 0xD6, 0x03, 0x3C, 0x39, 0x84, 0x23, + 0x3D, 0x2E, 0x0E, 0xD9, 0xBC, 0x93, 0x9E, 0xB2, 0x3B, 0x24, 0xBD, 0x34, + 0xBE, 0x19, 0x16, 0xEC, 0xBD, 0x8C, 0x54, 0xA8, 0xBC, 0xC0, 0xA2, 0x58, + 0x3D, 0x6A, 0x0E, 0xB0, 0x3E, 0xBB, 0xBC, 0x9B, 0xBE, 0x0C, 0x40, 0x92, + 0x3E, 0x8C, 0x48, 0x16, 0x3E, 0xFC, 0xE6, 0x07, 0xBD, 0xB6, 0xA8, 0x84, + 0x3C, 0xC7, 0x93, 0xE5, 0xBD, 0x71, 0x67, 0x4A, 0xBD, 0x29, 0x83, 0x3A, + 0x3E, 0xAA, 0x8C, 0x41, 0xBE, 0xAD, 0x91, 0x4A, 0x3D, 0x63, 0xD2, 0x97, + 0xBD, 0xF2, 0x54, 0x46, 0x3D, 0x36, 0x77, 0x0C, 0xC0, 0xB0, 0xF6, 0x00, + 0xBE, 0xEA, 0xFB, 0xAF, 0x3E, 0x27, 0x8E, 0x6B, 0xBF, 0x7C, 0x27, 0x2A, + 0x3E, 0x76, 0x2E, 0x0E, 0x3E, 0xA7, 0x27, 0x64, 0xBD, 0xFB, 0x3C, 0x04, + 0x3E, 0x21, 0x1A, 0xC8, 0x3C, 0x4C, 0x9E, 0x94, 0x3C, 0x97, 0xCB, 0x1C, + 0x40, 0xC5, 0x2E, 0x0C, 0xBC, 0xB4, 0xB9, 0xFF, 0x3C, 0xBF, 0x17, 0xCF, + 0xBE, 0x2F, 0xB4, 0x09, 0xBD, 0xA5, 0x7E, 0xCD, 0x3B, 0x31, 0x19, 0x7E, + 0x3F, 0xBB, 0xBE, 0x29, 0xBF, 0x0A, 0x6F, 0x37, 0xBF, 0xB1, 0xC4, 0x22, + 0xBE, 0xFC, 0xCA, 0x8B, 0x3D, 0x21, 0x68, 0x50, 0xBD, 0xB6, 0xB4, 0x0B, + 0x3E, 0xC2, 0xAA, 0xC1, 0xBB, 0x38, 0x88, 0x30, 0x3C, 0xBC, 0xF0, 0x8C, + 0xBF, 0x01, 0xD2, 0xF3, 0x3C, 0xC3, 0x60, 0x90, 0xBC, 0x33, 0x22, 0x93, + 0x3E, 0xA1, 0x1A, 0x1A, 0x40, 0x78, 0x29, 0x5A, 0x3D, 0x01, 0x8E, 0x02, + 0xBE, 0x1A, 0x69, 0x38, 0xBD, 0x88, 0xBB, 0x46, 0xC0, 0x55, 0xB9, 0xAA, + 0xB9, 0x8B, 0xB9, 0x28, 0xBC, 0x6E, 0x91, 0x63, 0xBC, 0x15, 0x28, 0x2C, + 0x3B, 0x2C, 0xF4, 0x2F, 0x40, 0x0D, 0xFE, 0xF7, 0xBF, 0x1F, 0x7E, 0x44, + 0x3D, 0x5D, 0x86, 0x45, 0x3C, 0xAC, 0xA9, 0x82, 0x3F, 0x43, 0x4E, 0x4D, + 0x3E, 0x4C, 0x04, 0x55, 0xBC, 0x93, 0x08, 0x4B, 0xBD, 0x06, 0xDA, 0x46, + 0x3D, 0x1C, 0x24, 0x3F, 0xBD, 0x78, 0x20, 0x03, 0x40, 0xA4, 0x1C, 0xDC, + 0xBD, 0x79, 0x2F, 0x30, 0xBD, 0x77, 0x4D, 0xF7, 0x3C, 0x7D, 0x0E, 0x4B, + 0x3F, 0xDC, 0x73, 0xB7, 0xBF, 0x87, 0x54, 0x16, 0xC0, 0xB9, 0xAB, 0x31, + 0x3E, 0x5D, 0xE0, 0xDE, 0xBC, 0x87, 0xB9, 0x98, 0x3F, 0x43, 0x93, 0x38, + 0x3D, 0xD3, 0xA8, 0x15, 0x40, 0xAE, 0xD1, 0x5B, 0xBF, 0xD2, 0x31, 0xBD, + 0x3D, 0x48, 0x2D, 0x08, 0xBE, 0xC4, 0x58, 0x31, 0xBD, 0x51, 0xAF, 0x3E, + 0x40, 0x4E, 0x78, 0x48, 0x3E, 0x10, 0x6C, 0x19, 0x40, 0xE4, 0x77, 0xB3, + 0xC1, 0xBB, 0x1E, 0xC6, 0x3D, 0xC8, 0x70, 0x83, 0xBD, 0xB9, 0x31, 0x7F, + 0x3D, 0xEE, 0x30, 0x2D, 0xBF, 0x6A, 0x6C, 0x9A, 0x3C, 0xE7, 0xE5, 0x30, + 0xBA, 0x32, 0x1C, 0x9F, 0xC0, 0xBB, 0xE6, 0x30, 0x3D, 0x24, 0x76, 0x90, + 0x3E, 0x41, 0x33, 0x73, 0xBE, 0x53, 0xB0, 0xFB, 0x3D, 0x3F, 0x2B, 0x89, + 0xBC, 0xB2, 0x8B, 0x47, 0x3F, 0x9C, 0x58, 0xC0, 0xBE, 0x17, 0x29, 0x67, + 0xC0, 0xDB, 0x3C, 0xDF, 0xBC, 0x25, 0x65, 0x69, 0xBC, 0xE4, 0xFF, 0xB9, + 0x3D, 0x31, 0xDA, 0xB4, 0xBD, 0x6D, 0x8B, 0x42, 0xBD, 0xEF, 0x52, 0x2E, + 0xBD, 0x38, 0xD6, 0x28, 0xC0, 0x89, 0xC9, 0x5A, 0x3D, 0x7C, 0x94, 0x39, + 0x3C, 0x5B, 0xE5, 0x86, 0x3E, 0x40, 0x99, 0xED, 0x3F, 0x35, 0x5A, 0x71, + 0xBD, 0x3A, 0x17, 0xDF, 0x3E, 0x43, 0x37, 0xB7, 0xBE, 0xB3, 0x03, 0xA1, + 0x40, 0xB4, 0xB6, 0xB5, 0x3A, 0xF4, 0x16, 0x13, 0x3D, 0x27, 0xB2, 0xD7, + 0xBC, 0x74, 0x39, 0xB4, 0xBB, 0x1E, 0x47, 0xCD, 0xC0, 0x42, 0xD3, 0x1A, + 0xC0, 0x3F, 0x25, 0x0B, 0xBF, 0x84, 0x91, 0xE3, 0xBC, 0x89, 0x52, 0xDA, + 0xC0, 0x0C, 0xAE, 0xD8, 0xBD, 0x7A, 0x03, 0x85, 0xBD, 0x6E, 0x9E, 0x93, + 0x3D, 0x1B, 0x78, 0x24, 0x3E, 0x84, 0x58, 0xD7, 0xBD, 0xAB, 0x13, 0x76, + 0x40, 0xF5, 0xBE, 0x04, 0x40, 0x56, 0x35, 0xB8, 0x3D, 0x75, 0xFC, 0x23, + 0xBE, 0x47, 0xF0, 0xDD, 0xBF, 0x14, 0x44, 0xA7, 0x3F, 0xF0, 0x2C, 0x60, + 0x3F, 0xC4, 0x59, 0x2B, 0xBD, 0x76, 0xAB, 0x97, 0x3C, 0x76, 0x05, 0x41, + 0x3D, 0xA4, 0x89, 0xB7, 0xBC, 0x38, 0xBD, 0x0B, 0xBF, 0x32, 0x1F, 0x06, + 0x40, 0x4D, 0xB3, 0x95, 0xBB, 0x0E, 0x78, 0x2E, 0xBD, 0x87, 0x21, 0x2F, + 0xBC, 0x58, 0x0D, 0x3F, 0xBF, 0x09, 0x8F, 0x27, 0xBC, 0x0E, 0x71, 0xC2, + 0x3E, 0xB0, 0xF1, 0x0E, 0xBF, 0xD7, 0x55, 0x86, 0x3E, 0x43, 0xB0, 0xD2, + 0xBD, 0xCC, 0x9B, 0xA5, 0xBD, 0xDC, 0x6A, 0xFC, 0x3E, 0x80, 0x17, 0x12, + 0xBD, 0x20, 0x3E, 0xBB, 0xBC, 0xE2, 0x0B, 0xA6, 0x3F, 0xB3, 0x15, 0x09, + 0xBD, 0xB0, 0x0C, 0x6F, 0xBD, 0xE5, 0x26, 0x80, 0xBE, 0xD1, 0x60, 0xBC, + 0xBD, 0x71, 0xF0, 0xBE, 0x3B, 0x8A, 0x54, 0x30, 0xBF, 0xF9, 0x7D, 0x92, + 0xBE, 0x25, 0x90, 0xF8, 0x3E, 0xA2, 0x4B, 0x86, 0x3E, 0x0E, 0x31, 0x48, + 0x3C, 0x30, 0xAF, 0x46, 0x3D, 0xBC, 0x50, 0xAC, 0xBC, 0x19, 0x1C, 0x97, + 0x3D, 0xD2, 0x2E, 0x9E, 0xBC, 0x50, 0xF6, 0x27, 0x40, 0xE4, 0x01, 0xE8, + 0xBD, 0xC6, 0xA1, 0x0D, 0x3D, 0xAB, 0x6D, 0x44, 0x3D, 0x46, 0xA4, 0x63, + 0x3E, 0x1B, 0x48, 0x57, 0xBC, 0x7A, 0x79, 0xBF, 0xBE, 0x9C, 0xAA, 0xF4, + 0xBE, 0xBA, 0xAA, 0x06, 0xBF, 0xDE, 0x06, 0x60, 0xBC, 0x9C, 0x20, 0xD0, + 0xBC, 0x58, 0xEA, 0x88, 0x3C, 0x0C, 0x69, 0x09, 0xBC, 0xD9, 0xFF, 0x27, + 0x3F, 0x58, 0x4C, 0xAE, 0xBF, 0x76, 0x83, 0x90, 0x3E, 0x0B, 0x5D, 0x4C, + 0x3D, 0x61, 0x88, 0x95, 0x40, 0xAF, 0xB1, 0x93, 0xBE, 0x71, 0x1C, 0xD3, + 0x3D, 0x0B, 0x2D, 0xA1, 0xBC, 0xB7, 0x56, 0x62, 0xBD, 0x63, 0x99, 0x01, + 0xBF, 0x74, 0x12, 0x9F, 0xBC, 0x82, 0x0C, 0xA7, 0xBE, 0x12, 0x6D, 0x98, + 0xBD, 0xA6, 0xE5, 0xD7, 0xBE, 0xA4, 0x16, 0x1D, 0x41, 0x1E, 0xBA, 0x77, + 0xBE, 0x35, 0x76, 0x4F, 0xBE, 0x41, 0x42, 0xC2, 0xBD, 0x8B, 0xF0, 0x86, + 0xBC, 0x90, 0x12, 0x10, 0xC0, 0x54, 0x9E, 0xA8, 0x3B, 0x45, 0x66, 0x5C, + 0xBF, 0xD3, 0xEA, 0x58, 0xBF, 0xDE, 0xE3, 0xBC, 0xBE, 0xA4, 0xBC, 0xDD, + 0x3D, 0x08, 0xC8, 0x1B, 0xBE, 0x70, 0xD6, 0x36, 0xBF, 0x18, 0x3C, 0x8F, + 0x3E, 0x18, 0xDF, 0xA4, 0x3E, 0x26, 0xE6, 0x3A, 0xBE, 0x68, 0x71, 0x42, + 0xBE, 0x6D, 0xD5, 0x33, 0x3E, 0x79, 0x38, 0x10, 0x3D, 0xB1, 0xAE, 0x1E, + 0xBE, 0x92, 0xE4, 0x4C, 0x3C, 0x4C, 0x9B, 0xDC, 0x3C, 0xC8, 0x84, 0x0F, + 0xBE, 0xF5, 0x1A, 0x6C, 0x3C, 0xA9, 0x79, 0x46, 0x3E, 0xB3, 0x48, 0x1C, + 0x3E, 0x3E, 0x49, 0xA6, 0x3B, 0x4F, 0xFB, 0x4F, 0xBC, 0x68, 0x84, 0xBA, + 0xBF, 0xBA, 0x44, 0xDC, 0x3E, 0xD9, 0x02, 0xF7, 0x3D, 0x27, 0x70, 0xEE, + 0xBC, 0xA3, 0xEA, 0x8E, 0xBD, 0xC5, 0x03, 0xFC, 0xBD, 0x2C, 0xE5, 0xBF, + 0x3D, 0x82, 0xB9, 0x0B, 0xBD, 0xC7, 0x85, 0x01, 0x3D, 0x0A, 0xDB, 0x49, + 0xBF, 0x87, 0x0B, 0x8A, 0x3D, 0xA1, 0x94, 0x02, 0xBD, 0x23, 0x08, 0x06, + 0xBC, 0xC2, 0xE6, 0xEF, 0x3B, 0x26, 0x6B, 0xB4, 0x3D, 0x22, 0x4D, 0x8F, + 0x3D, 0xF3, 0x40, 0x44, 0xBE, 0x3D, 0x3E, 0x33, 0xBE, 0xA5, 0xC1, 0x5E, + 0xBC, 0x34, 0x22, 0x9E, 0x3B, 0x91, 0x82, 0x8E, 0x3C, 0xB9, 0x0A, 0x33, + 0x3C, 0xA9, 0x51, 0x74, 0x3F, 0x32, 0xFE, 0x7C, 0xBE, 0xB9, 0xD2, 0xFD, + 0xBD, 0xF7, 0xF7, 0x93, 0xBC, 0x50, 0x37, 0x68, 0x3F, 0x83, 0xA6, 0xFD, + 0x3D, 0xEC, 0xE9, 0x6D, 0xBD, 0xDE, 0x32, 0x31, 0x3C, 0x54, 0xA6, 0x06, + 0xBE, 0xE3, 0x55, 0xDE, 0xBD, 0xE3, 0x64, 0x81, 0x3E, 0xA3, 0x34, 0xC6, + 0x3C, 0xDB, 0x65, 0x99, 0xBC, 0x32, 0x1F, 0x98, 0xBC, 0x6D, 0x98, 0x0E, + 0x3F, 0xA6, 0x1C, 0x55, 0x3E, 0x6F, 0xE1, 0x29, 0x3E, 0x8C, 0xD8, 0xA2, + 0x3D, 0x92, 0x13, 0x3E, 0x3C, 0xDB, 0xAC, 0x36, 0x3D, 0xED, 0x2A, 0xDB, + 0x3C, 0xFB, 0xEC, 0xB3, 0xBD, 0x1D, 0xFA, 0xEE, 0x3C, 0xA1, 0x8E, 0x85, + 0xBD, 0x12, 0x8E, 0x36, 0x3E, 0x3E, 0xDC, 0x02, 0x3E, 0x59, 0x7B, 0x45, + 0xBE, 0x5F, 0xFA, 0xAF, 0x3D, 0x01, 0x89, 0x1F, 0xBE, 0x19, 0xC0, 0x84, + 0xBD, 0x00, 0xB4, 0x72, 0x3E, 0x25, 0xB1, 0x3D, 0xBD, 0xCB, 0x57, 0x77, + 0x3C, 0xA3, 0x2F, 0xEA, 0x3D, 0x7D, 0x81, 0x71, 0xBC, 0x29, 0xE1, 0x80, + 0x3C, 0x74, 0x48, 0x89, 0x3E, 0xD2, 0x6E, 0xF4, 0xB9, 0x4B, 0xE3, 0x88, + 0x3D, 0x4D, 0x6A, 0x98, 0x3E, 0x2A, 0x08, 0xA9, 0x3C, 0xB3, 0xFC, 0xBA, + 0xBC, 0x8C, 0xA4, 0xA0, 0xBE, 0xDB, 0x9E, 0xCC, 0x3D, 0xB2, 0x1D, 0xA2, + 0x3D, 0xF2, 0xDA, 0x9C, 0x3D, 0x7E, 0xAC, 0x93, 0x3B, 0xCB, 0x69, 0xE1, + 0xBC, 0xA6, 0x08, 0xDF, 0xBB, 0xD6, 0x1C, 0x05, 0x3D, 0x5E, 0xE4, 0x73, + 0xBD, 0x97, 0x27, 0x95, 0x3E, 0x40, 0xC8, 0x61, 0xBD, 0x9B, 0xF8, 0x94, + 0x3C, 0x97, 0x23, 0x69, 0xBE, 0xB6, 0x04, 0xB6, 0xBE, 0xD8, 0x43, 0xEF, + 0xBC, 0xDD, 0xD8, 0x43, 0xBE, 0x18, 0x16, 0x34, 0xBE, 0x6F, 0x1B, 0x0D, + 0xBF, 0x7A, 0xE8, 0x20, 0x3D, 0x42, 0x83, 0xAE, 0x3C, 0xDF, 0x20, 0x68, + 0x3C, 0x16, 0x9B, 0xC1, 0x3C, 0xD8, 0x79, 0x13, 0x3E, 0xF1, 0xE7, 0x08, + 0xBD, 0x36, 0x7D, 0x87, 0x3D, 0x3A, 0x5D, 0x42, 0x3C, 0x1A, 0xA8, 0xBC, + 0x3D, 0x59, 0xDC, 0x0D, 0xBE, 0x9A, 0x1D, 0x88, 0x3B, 0x38, 0xB5, 0xB9, + 0x3C, 0x8E, 0x76, 0x3E, 0x3C, 0x39, 0xF7, 0x2B, 0xBE, 0xC1, 0x64, 0x36, + 0xBF, 0x69, 0x09, 0xAC, 0x3E, 0x20, 0xFC, 0xAE, 0xBC, 0xF2, 0x80, 0x92, + 0xBE, 0x35, 0xFB, 0x84, 0x3D, 0xA3, 0x26, 0x0A, 0xBF, 0x35, 0x4F, 0x00, + 0xBF, 0x3C, 0xE7, 0x17, 0x3E, 0xD2, 0x54, 0xCA, 0x3C, 0x32, 0x5A, 0x50, + 0xBE, 0xD6, 0x7A, 0xA7, 0xBC, 0x14, 0x78, 0x4A, 0x3E, 0x34, 0x2C, 0x81, + 0x3E, 0xB0, 0xC7, 0x86, 0x3D, 0xBD, 0xDA, 0x10, 0x3E, 0x3E, 0x15, 0x00, + 0xBE, 0xCB, 0xD1, 0xEA, 0x3E, 0x8E, 0xF1, 0xC3, 0xBE, 0xBD, 0x0C, 0x8B, + 0x3B, 0xF1, 0x13, 0x09, 0x3E, 0x84, 0x0E, 0xDE, 0xBE, 0x6B, 0xD8, 0xCE, + 0xBD, 0xC9, 0x56, 0x4A, 0xBD, 0xAC, 0x71, 0x0D, 0x3C, 0xAC, 0xAD, 0x82, + 0x3B, 0x16, 0xF5, 0xE1, 0xBC, 0xC8, 0x4B, 0x92, 0x40, 0x4D, 0xC8, 0xF1, + 0x3B, 0xB3, 0xB7, 0xA1, 0x3D, 0x95, 0xDE, 0x07, 0x3E, 0x54, 0x78, 0x7E, + 0x3B, 0xD6, 0x19, 0x94, 0x3C, 0x43, 0x8F, 0xCC, 0xBE, 0x35, 0xFA, 0x4A, + 0x3F, 0x5D, 0x60, 0x12, 0x3F, 0xA4, 0x62, 0x64, 0x3D, 0xEA, 0xE0, 0x69, + 0xBD, 0x72, 0x19, 0x9A, 0xBD, 0x9A, 0xC0, 0x4C, 0xBC, 0x01, 0x0E, 0x50, + 0x3A, 0x26, 0x88, 0x42, 0x3D, 0x46, 0x7D, 0xDE, 0xBF, 0x75, 0x27, 0x73, + 0x3D, 0xE1, 0xE3, 0xF4, 0xBA, 0x70, 0xE5, 0x40, 0x3E, 0xF8, 0xC3, 0x18, + 0x3F, 0x6E, 0xD0, 0x95, 0xBD, 0xF7, 0x5D, 0x0A, 0x3F, 0x99, 0xAD, 0x86, + 0x3E, 0xF9, 0x91, 0x2E, 0x40, 0xEE, 0x16, 0xA1, 0xBC, 0xE2, 0xE6, 0x5C, + 0xBC, 0x1C, 0xEC, 0x98, 0xBC, 0xA3, 0xFD, 0x73, 0xBD, 0x48, 0xCF, 0x0D, + 0xBF, 0xFB, 0x39, 0xC2, 0x3F, 0x12, 0x25, 0x5F, 0x3E, 0xF2, 0xC5, 0x14, + 0xBC, 0x2F, 0x10, 0xD8, 0x3E, 0x74, 0xE7, 0x13, 0x3E, 0x0B, 0x1B, 0x01, + 0x3D, 0xE6, 0x6A, 0xCC, 0xBB, 0xBD, 0xFD, 0xE3, 0xBD, 0xDC, 0x68, 0x93, + 0xBD, 0x5F, 0x79, 0x2F, 0x3F, 0x8F, 0x0E, 0x8D, 0xBD, 0x6D, 0xAE, 0x99, + 0x3C, 0x2E, 0xED, 0xF3, 0x3C, 0x50, 0xAE, 0x37, 0xBE, 0xA4, 0xAE, 0xC5, + 0xC0, 0x5C, 0xA9, 0xAA, 0x40, 0x77, 0xD8, 0x12, 0xBE, 0xC8, 0x6D, 0xF0, + 0xBC, 0x7D, 0x07, 0x99, 0x3F, 0x9E, 0x67, 0x15, 0xBC, 0x5A, 0xBF, 0x84, + 0x3F, 0x47, 0x28, 0x48, 0xBF, 0xF5, 0xBC, 0x62, 0xBE, 0x70, 0x02, 0xE4, + 0x3D, 0xDC, 0xD0, 0xF7, 0xBC, 0xA9, 0x66, 0xAB, 0xBF, 0x4D, 0x09, 0x91, + 0x3E, 0xA2, 0x17, 0x7E, 0xBF, 0x2C, 0x6F, 0x6C, 0xBF, 0x55, 0xAD, 0x13, + 0x3E, 0x5E, 0x55, 0x37, 0x3E, 0xDA, 0x57, 0x41, 0x3C, 0xD5, 0xEB, 0xD6, + 0x3A, 0xE1, 0x30, 0x7E, 0x3C, 0x81, 0x41, 0x34, 0x3C, 0xEC, 0x21, 0x87, + 0xC0, 0x4F, 0x68, 0xEF, 0xBB, 0xAA, 0x59, 0x87, 0xBE, 0x03, 0x7B, 0xE5, + 0xBE, 0xD7, 0xD4, 0x02, 0xBE, 0x33, 0x45, 0x5D, 0x3C, 0x0A, 0x96, 0xC7, + 0x3D, 0x5A, 0x8F, 0x09, 0x3F, 0x04, 0x43, 0xB4, 0x3F, 0x5F, 0xB5, 0x40, + 0xBD, 0x64, 0x93, 0xE5, 0xBC, 0x0F, 0x9C, 0x07, 0xBE, 0x26, 0xED, 0xC1, + 0x3D, 0x3A, 0xF2, 0x01, 0xBD, 0xB1, 0x89, 0x0C, 0x3B, 0xEA, 0x2D, 0x12, + 0x40, 0x56, 0x7E, 0x0F, 0x3D, 0x96, 0x93, 0x63, 0xBC, 0x3B, 0x07, 0xE5, + 0x3E, 0x13, 0x2D, 0x0C, 0x40, 0x70, 0x36, 0xDE, 0x3C, 0x17, 0x3B, 0x90, + 0x3F, 0x75, 0x5F, 0x32, 0xBF, 0x5B, 0x48, 0xF9, 0xBF, 0x3E, 0xC9, 0xAE, + 0xBB, 0xFE, 0xE5, 0xD4, 0x3B, 0x21, 0x67, 0x90, 0xBC, 0x46, 0x69, 0x5E, + 0xBC, 0x01, 0x3D, 0x4F, 0x40, 0x65, 0x3C, 0xEE, 0x3F, 0xDB, 0x40, 0x75, + 0x3E, 0x07, 0x12, 0x05, 0xBD, 0x6A, 0x9A, 0x1E, 0xC0, 0x33, 0xCA, 0xEF, + 0xBD, 0xC7, 0x22, 0x76, 0xBD, 0x16, 0x7C, 0x8D, 0xBC, 0x15, 0xC7, 0xF4, + 0xBC, 0xE1, 0x0C, 0x91, 0x3E, 0x0A, 0xBB, 0xA1, 0x3F, 0xB5, 0x7B, 0x16, + 0xC1, 0x8D, 0x50, 0xB1, 0x3A, 0xD6, 0xF3, 0x49, 0x3D, 0xAE, 0x4A, 0xEC, + 0x3D, 0x79, 0x42, 0x7B, 0xBF, 0x03, 0x1A, 0x33, 0x40, 0xC8, 0x37, 0xD0, + 0x3D, 0x6E, 0xC3, 0x26, 0x3B, 0x57, 0xFC, 0x80, 0xBE, 0x41, 0xEE, 0x1A, + 0x3D, 0xA0, 0x49, 0xB2, 0xBE, 0x6E, 0x1E, 0xA7, 0xBF, 0xBA, 0xA8, 0x0A, + 0xBF, 0x43, 0xB4, 0x05, 0xBE, 0x67, 0x58, 0x4F, 0x3D, 0xF4, 0xFB, 0xF5, + 0x3F, 0x8D, 0x30, 0x70, 0x3E, 0x16, 0x17, 0xA5, 0xBD, 0x2E, 0x60, 0xFF, + 0x3D, 0x34, 0x2A, 0xA9, 0xBE, 0xE7, 0xCF, 0x64, 0xBD, 0xEB, 0x66, 0x92, + 0x3D, 0x69, 0x12, 0xC0, 0xBD, 0x37, 0x56, 0x98, 0x3B, 0x8D, 0x19, 0x53, + 0xBC, 0x95, 0x57, 0x93, 0x3E, 0x7F, 0xA0, 0x8C, 0x3B, 0x04, 0xA8, 0x9F, + 0x3C, 0xBC, 0xAA, 0xBF, 0xBE, 0xA9, 0xF3, 0x15, 0x3E, 0xE1, 0xB1, 0xC2, + 0xBC, 0x2D, 0xC8, 0x87, 0x3F, 0x69, 0x10, 0x46, 0x3F, 0x93, 0xC6, 0x0C, + 0xBE, 0x91, 0x08, 0xC3, 0xBD, 0x04, 0x8D, 0x06, 0x3E, 0xD4, 0x3F, 0x0E, + 0x3E, 0x9F, 0x2A, 0x4D, 0xBD, 0x56, 0x89, 0x48, 0xBD, 0xB4, 0x4E, 0x00, + 0xBD, 0xA5, 0xA6, 0x72, 0xBF, 0x1B, 0x11, 0x3A, 0xBD, 0x82, 0x26, 0x00, + 0x3A, 0x06, 0x94, 0x42, 0x3D, 0xBE, 0x08, 0x21, 0xBF, 0x42, 0x2C, 0xF8, + 0x3A, 0xF8, 0x47, 0x02, 0x3F, 0x6F, 0x6D, 0x2C, 0xBE, 0x65, 0xA2, 0xCE, + 0xBC, 0x56, 0xF5, 0x44, 0x3A, 0x89, 0x5A, 0xB8, 0x3B, 0x85, 0x26, 0xAD, + 0x3C, 0x30, 0x49, 0x7D, 0x3D, 0x10, 0x9F, 0x06, 0xC0, 0x33, 0xAA, 0x21, + 0x3F, 0x6A, 0x16, 0xC3, 0xBE, 0xEC, 0x6D, 0xBE, 0x3C, 0x46, 0x46, 0x28, + 0x40, 0xB0, 0xB9, 0x25, 0x3E, 0xD4, 0x77, 0x26, 0x3C, 0x6A, 0xC2, 0x85, + 0xBC, 0x38, 0x63, 0x13, 0x3E, 0x85, 0x07, 0xCA, 0xBE, 0xF1, 0x1D, 0x27, + 0xBF, 0xFA, 0x46, 0xD0, 0x3F, 0x92, 0xEB, 0x0B, 0x3D, 0xF2, 0x4D, 0x6B, + 0xBE, 0x2B, 0x8D, 0xC2, 0xBD, 0xB1, 0xF2, 0x2E, 0x3E, 0x4E, 0x09, 0x73, + 0xBF, 0x48, 0x51, 0xFA, 0x3D, 0xAB, 0xC6, 0x40, 0x3B, 0x3D, 0xA2, 0x9F, + 0xBF, 0xBE, 0xA8, 0xB1, 0xBC, 0x4B, 0x4D, 0x81, 0xBF, 0x52, 0xA3, 0xA5, + 0x3F, 0xC0, 0x0D, 0x89, 0x3E, 0x44, 0x27, 0xE3, 0xBB, 0x22, 0x0F, 0x7B, + 0x3D, 0x9F, 0xA8, 0x79, 0xBF, 0xE0, 0x03, 0x94, 0xBE, 0x6D, 0xF8, 0x8E, + 0xBD, 0x05, 0x3B, 0x98, 0x3D, 0xAB, 0xB2, 0xF8, 0x3D, 0x28, 0xBE, 0x71, + 0x3D, 0x0C, 0xB4, 0x41, 0xBD, 0xA5, 0x04, 0x02, 0x3E, 0xDC, 0x9B, 0xF1, + 0xBB, 0x3F, 0x47, 0x9E, 0xB9, 0x10, 0xB7, 0xF5, 0xBE, 0x3C, 0xF8, 0x93, + 0xBB, 0xB8, 0xAD, 0x11, 0x3C, 0x6B, 0x33, 0x01, 0x3E, 0xE4, 0xE0, 0x24, + 0xBD, 0x7B, 0x0C, 0xB5, 0x3C, 0x7D, 0x07, 0xA1, 0x3F, 0xD7, 0x13, 0xD2, + 0x3C, 0x26, 0xB3, 0xE6, 0x3C, 0xCB, 0x60, 0x92, 0xBC, 0x19, 0x8B, 0xB0, + 0xBD, 0xE4, 0x93, 0x47, 0x3D, 0x86, 0x03, 0x5E, 0xBC, 0x17, 0xBD, 0x3D, + 0x3D, 0x0C, 0x0B, 0x2B, 0x3D, 0xA4, 0xA3, 0x6C, 0x3E, 0x87, 0x8E, 0x7B, + 0x3B, 0xA6, 0xBF, 0xA1, 0xBB, 0x4C, 0xDD, 0x08, 0xBD, 0xA9, 0xA8, 0x91, + 0x3E, 0xE5, 0xF4, 0xC5, 0x3D, 0x4C, 0x5D, 0xDC, 0xBD, 0x60, 0xD7, 0xD3, + 0xBD, 0x22, 0x7E, 0xFF, 0xBD, 0x15, 0x11, 0x67, 0xBC, 0x00, 0x2F, 0xC9, + 0xBC, 0x25, 0xCF, 0x6E, 0x3B, 0x1B, 0x7A, 0x2A, 0xBB, 0xEE, 0x7B, 0x8C, + 0x3C, 0xD9, 0x85, 0xF3, 0xBD, 0x04, 0xBD, 0x6C, 0x3D, 0xE6, 0x10, 0x64, + 0x3B, 0xB4, 0x04, 0x55, 0xBE, 0xE4, 0xD9, 0xA4, 0x3E, 0x16, 0xD4, 0x68, + 0x3C, 0x84, 0xCF, 0xC2, 0x3B, 0x0B, 0x89, 0x10, 0x3D, 0x66, 0xDC, 0xC3, + 0x3C, 0x5D, 0x8F, 0x51, 0x3E, 0xB7, 0xDA, 0xBF, 0xBE, 0xEE, 0x75, 0x1F, + 0xBD, 0xC6, 0x30, 0xBB, 0x3D, 0xD8, 0x89, 0x7E, 0xBE, 0x77, 0x94, 0x36, + 0xBE, 0xA0, 0x27, 0x08, 0x3D, 0x32, 0x10, 0x8E, 0xBE, 0x69, 0x0B, 0x88, + 0x3B, 0x41, 0xCE, 0x10, 0xBE, 0x50, 0x48, 0xD0, 0x3B, 0xFF, 0x3D, 0x28, + 0xBE, 0xEF, 0x37, 0x0A, 0xBE, 0x2F, 0xBC, 0x97, 0xBD, 0xAE, 0x53, 0xE5, + 0x3C, 0xEB, 0xC2, 0x9E, 0xBE, 0x34, 0x78, 0x30, 0x3E, 0x98, 0xE9, 0x8B, + 0xBC, 0x5B, 0xCE, 0x94, 0x3B, 0x29, 0xA4, 0xA0, 0xBC, 0x5F, 0xB5, 0x8D, + 0x3D, 0xF3, 0xFA, 0xE2, 0x3D, 0x70, 0x82, 0x79, 0xBD, 0x85, 0x13, 0xBF, + 0x3D, 0x5B, 0x43, 0x22, 0x3D, 0xEE, 0x80, 0xA1, 0x3C, 0x58, 0x67, 0xFB, + 0x3C, 0x6D, 0x19, 0xCC, 0x3C, 0x95, 0x83, 0xB6, 0x3D, 0x0A, 0x60, 0x1D, + 0x3E, 0x5D, 0x6D, 0x0C, 0xBD, 0xA5, 0x7E, 0xB7, 0x3C, 0x5B, 0x5F, 0x8E, + 0x3C, 0xA3, 0x28, 0xB2, 0x3E, 0x37, 0x08, 0x5C, 0xBD, 0x57, 0x35, 0x7B, + 0xBE, 0xED, 0xA1, 0xC3, 0x3A, 0xC7, 0x44, 0x18, 0xBD, 0xDE, 0x84, 0xC6, + 0xBB, 0x2D, 0xEC, 0x78, 0xBD, 0x03, 0x26, 0x00, 0x3D, 0x0C, 0xBD, 0x8D, + 0xBE, 0xF2, 0xA8, 0xA6, 0x3D, 0xA2, 0xBE, 0xED, 0xBC, 0x57, 0xDD, 0xD3, + 0xBC, 0x95, 0x09, 0xD6, 0x3E, 0x39, 0x13, 0x75, 0xBC, 0x89, 0x33, 0x4A, + 0xBD, 0x1F, 0x05, 0x99, 0x3D, 0xD5, 0xCE, 0xCE, 0x3E, 0x97, 0xC7, 0x3E, + 0xBD, 0xBC, 0xE7, 0x8D, 0xBC, 0x4C, 0xA4, 0x19, 0xBD, 0x1A, 0x46, 0xE5, + 0xBC, 0xBD, 0x5B, 0x43, 0x3C, 0xD9, 0x70, 0x43, 0x3E, 0x2A, 0x5C, 0x51, + 0x3C, 0x60, 0x10, 0x52, 0xBC, 0xAE, 0xFF, 0x24, 0xBD, 0xD4, 0x76, 0x17, + 0xBE, 0x72, 0x0A, 0xE5, 0xBB, 0x02, 0xA0, 0x2A, 0x3C, 0x29, 0xA7, 0xC9, + 0xBD, 0xFA, 0xB0, 0x59, 0x3D, 0xE1, 0x9A, 0xE7, 0x3D, 0x72, 0xB3, 0x0F, + 0xBE, 0xB7, 0xF4, 0x1C, 0x3C, 0xD4, 0x85, 0xBB, 0x3C, 0xBE, 0x81, 0x98, + 0xBB, 0x9C, 0x45, 0x26, 0xBD, 0x30, 0x06, 0xEC, 0x3E, 0x6F, 0x56, 0xA6, + 0xBD, 0xC6, 0xB6, 0x45, 0xBD, 0x03, 0xD5, 0x99, 0x3D, 0x6A, 0x46, 0x7F, + 0xBB, 0xD4, 0x07, 0x86, 0xBD, 0x6C, 0xD3, 0x33, 0x3E, 0x1B, 0x3C, 0x0F, + 0xBD, 0x61, 0xCD, 0x8C, 0xBD, 0x87, 0xD0, 0xB8, 0x3D, 0x70, 0xFE, 0xD7, + 0xBE, 0xE4, 0xFA, 0xF4, 0x3C, 0x46, 0x6C, 0x33, 0x3D, 0xA3, 0x0A, 0xAB, + 0x3C, 0xE9, 0x3F, 0x38, 0x3E, 0x17, 0xA3, 0x79, 0xBC, 0xBF, 0xB1, 0xE8, + 0x3D, 0x66, 0x3F, 0xC9, 0xBD, 0x3B, 0xD8, 0x2A, 0xBD, 0x65, 0xA2, 0x8D, + 0x3C, 0xEB, 0x05, 0x76, 0x3E, 0xD0, 0xE2, 0x05, 0xBC, 0x19, 0xB0, 0xAA, + 0xBD, 0xBD, 0xF7, 0xC1, 0xBE, 0x4E, 0xB3, 0x70, 0xBD, 0x65, 0xA2, 0xC8, + 0xBC, 0x00, 0xE2, 0xF5, 0x3C, 0x5B, 0xBC, 0xA7, 0xBE, 0x5F, 0x13, 0xDA, + 0x3C, 0x8A, 0x75, 0xD2, 0xBD, 0xFE, 0xFD, 0x39, 0xBD, 0xC5, 0xB7, 0x2B, + 0x3E, 0xF4, 0x4D, 0x25, 0xBD, 0x6B, 0x99, 0xA1, 0x3C, 0x3A, 0x00, 0xB4, + 0xBD, 0x56, 0xF6, 0xA7, 0x3E, 0x51, 0x1F, 0xCC, 0xBD, 0x51, 0x98, 0x33, + 0x3D, 0xDA, 0x7C, 0x0E, 0xBD, 0x62, 0x0F, 0x0C, 0xBF, 0x7F, 0xDF, 0x14, + 0x3D, 0x91, 0x48, 0x9A, 0x3E, 0x9A, 0x78, 0x6F, 0xBD, 0xE1, 0x43, 0x4E, + 0xBF, 0x18, 0x9E, 0x1B, 0x3D, 0x20, 0x5A, 0x4B, 0x3C, 0xB7, 0x03, 0xDE, + 0x3C, 0x35, 0x2E, 0x80, 0x3D, 0xB1, 0x6C, 0x08, 0x3E, 0xEA, 0xE5, 0x38, + 0xBF, 0x25, 0x65, 0x40, 0x3E, 0x75, 0x87, 0x86, 0xBB, 0xBA, 0x3D, 0x28, + 0xBE, 0x1D, 0x0E, 0x27, 0x3E, 0x2E, 0x79, 0x14, 0xBD, 0x17, 0x1E, 0x85, + 0x3D, 0xE2, 0xB7, 0x1F, 0x3D, 0xF9, 0xF5, 0x7C, 0xBD, 0x66, 0xA4, 0x59, + 0xBE, 0x00, 0x61, 0x38, 0x3C, 0x7F, 0x8F, 0x17, 0x3C, 0x51, 0xDE, 0xEF, + 0x3D, 0x06, 0x6C, 0xE8, 0x3C, 0xAF, 0xE5, 0xBE, 0x3E, 0x18, 0x75, 0xD8, + 0xBF, 0x59, 0x16, 0x19, 0x3E, 0x7F, 0x3D, 0x61, 0x3D, 0xF7, 0x9C, 0x6B, + 0xBE, 0x87, 0x04, 0x0F, 0x3C, 0xEA, 0x7E, 0x77, 0xBE, 0x1F, 0xCE, 0x71, + 0x3D, 0x98, 0xF9, 0x58, 0xBD, 0x5F, 0x34, 0x84, 0x3B, 0x3F, 0x37, 0xE7, + 0x3D, 0x73, 0xF0, 0xDB, 0x3B, 0x2D, 0x38, 0xF2, 0x3C, 0x21, 0x12, 0xB6, + 0x3E, 0x40, 0x96, 0x19, 0xBD, 0xA4, 0x56, 0x67, 0xBD, 0x15, 0x76, 0x8D, + 0xBD, 0xAB, 0x51, 0xA5, 0xBD, 0xCC, 0x43, 0x81, 0x3C, 0xC0, 0xC8, 0x90, + 0xBA, 0xC5, 0xF0, 0x3E, 0xBB, 0xFA, 0x3D, 0x29, 0xBC, 0x47, 0x14, 0xE2, + 0xBA, 0x2C, 0x85, 0x94, 0x3D, 0xDA, 0x82, 0x58, 0x3E, 0xDF, 0x16, 0x8D, + 0x3D, 0x0D, 0xC5, 0x6E, 0x3B, 0x46, 0x64, 0xBA, 0xBD, 0x22, 0x14, 0x87, + 0xBE, 0xEE, 0x51, 0x8C, 0xBE, 0x5C, 0x05, 0x41, 0x3D, 0xB3, 0x05, 0x1B, + 0x3C, 0xE3, 0x2A, 0x4D, 0x3D, 0x49, 0x72, 0xF4, 0xBB, 0x75, 0xDE, 0x03, + 0x3D, 0x4E, 0xEE, 0x2C, 0x3D, 0xAE, 0x07, 0xA4, 0xBE, 0x38, 0x78, 0x25, + 0xBD, 0x54, 0xAB, 0x0B, 0xBC, 0x5E, 0x9D, 0xE5, 0xBD, 0xB2, 0x6C, 0xF4, + 0x3E, 0xCD, 0x71, 0xEB, 0xBB, 0x70, 0x60, 0xE4, 0x3D, 0xC9, 0x35, 0x24, + 0x3F, 0x34, 0x97, 0xE9, 0x3E, 0x51, 0x1D, 0xD8, 0xBB, 0x84, 0x1B, 0xC6, + 0xBC, 0x30, 0x3D, 0x05, 0x3B, 0xDB, 0x9D, 0xB3, 0x3B, 0x7F, 0x0A, 0x8B, + 0xBF, 0x57, 0x11, 0x38, 0xBF, 0xE4, 0x47, 0x75, 0xBE, 0xDC, 0x09, 0x1F, + 0x3C, 0x60, 0x1E, 0x22, 0x3E, 0x3E, 0x1E, 0x4B, 0x3D, 0x9C, 0x2C, 0xA9, + 0x3D, 0xFE, 0x48, 0x37, 0xBC, 0x41, 0x19, 0x82, 0xBD, 0x27, 0xE2, 0x8D, + 0xBE, 0xEE, 0x8D, 0xCE, 0xBE, 0xDD, 0x3A, 0xAA, 0x3E, 0x5F, 0x28, 0xC4, + 0xBD, 0x9B, 0x31, 0x35, 0x3E, 0xC7, 0xB5, 0x13, 0x3D, 0xC9, 0xAE, 0x55, + 0x3E, 0x4A, 0x1C, 0xA2, 0xC0, 0x73, 0xBE, 0xE5, 0xBD, 0xF7, 0x6D, 0xC9, + 0xBC, 0x04, 0xA9, 0x85, 0x3E, 0x21, 0xC0, 0x6E, 0x3B, 0x1E, 0xE6, 0x40, + 0x3E, 0x6C, 0xA8, 0xF7, 0x3A, 0x54, 0x50, 0xDE, 0x3D, 0xB1, 0x79, 0x81, + 0xBB, 0xF3, 0x48, 0xC6, 0x3C, 0xC7, 0x74, 0x1C, 0x3E, 0xAE, 0x8B, 0x2C, + 0x3E, 0xA6, 0x38, 0x18, 0xBC, 0xB2, 0x1F, 0xAA, 0xBC, 0xEB, 0xED, 0x92, + 0xBC, 0x5E, 0x7B, 0xC6, 0x3D, 0x23, 0x54, 0x67, 0x3D, 0x5D, 0x65, 0xCB, + 0x3C, 0x6F, 0xBD, 0x55, 0xBC, 0xEC, 0xF0, 0x04, 0x3C, 0x54, 0x68, 0x63, + 0x3E, 0xAD, 0xB3, 0xC3, 0xBB, 0x49, 0x75, 0xCC, 0xBC, 0x39, 0xB2, 0xA1, + 0x3B, 0x69, 0x4E, 0xC2, 0xBD, 0xC9, 0x63, 0xF1, 0x3B, 0x6F, 0x61, 0x3D, + 0xBF, 0x50, 0xC1, 0xE5, 0xBE, 0x33, 0xA0, 0x84, 0x3D, 0x64, 0x6F, 0xB8, + 0xBA, 0x00, 0xD8, 0xAE, 0xBD, 0x28, 0x77, 0x03, 0xBE, 0x7A, 0x85, 0x6F, + 0x3D, 0x4E, 0x57, 0xC0, 0x3C, 0x61, 0x75, 0x98, 0x3C, 0x93, 0x1E, 0x86, + 0x3E, 0x7A, 0x01, 0x4C, 0x3D, 0x54, 0x7F, 0xD5, 0x3B, 0x31, 0x8D, 0xB9, + 0x3D, 0xBB, 0x09, 0x86, 0xBE, 0xBD, 0x21, 0x8F, 0xBC, 0x32, 0x1B, 0x64, + 0xBE, 0x9F, 0x42, 0x01, 0xBD, 0x45, 0xF7, 0xBA, 0x3D, 0xF9, 0x9E, 0xBE, + 0x3C, 0xB6, 0xB0, 0x73, 0x3C, 0xFE, 0xCF, 0x17, 0x3C, 0xC5, 0x8E, 0xB3, + 0xBC, 0x07, 0x64, 0x6D, 0x3F, 0x92, 0x17, 0x17, 0xBE, 0x09, 0x03, 0x63, + 0x3B, 0x01, 0x2B, 0x4A, 0xBC, 0x40, 0x41, 0x5D, 0xBE, 0x74, 0xDE, 0xBB, + 0xBD, 0x1D, 0x0A, 0x96, 0xBD, 0xCA, 0xAB, 0x4B, 0x3B, 0xE3, 0x1C, 0x8B, + 0xBD, 0x61, 0x73, 0x4B, 0x3D, 0x19, 0xEB, 0x06, 0xBC, 0x6B, 0xDC, 0xD0, + 0xBD, 0xDB, 0xCF, 0x25, 0x3D, 0xB9, 0xB2, 0x58, 0xBE, 0x21, 0xBE, 0xDC, + 0x3B, 0xB4, 0x30, 0x45, 0x3E, 0x7E, 0xDE, 0x3A, 0x3F, 0x77, 0xE2, 0x05, + 0xBE, 0xF8, 0x67, 0x0D, 0x3D, 0xE2, 0xF1, 0x95, 0x3E, 0x03, 0xAA, 0xD9, + 0x3C, 0x36, 0x1A, 0x53, 0x3E, 0xBF, 0x54, 0xCE, 0xBE, 0xA7, 0x34, 0xEA, + 0xBD, 0x7C, 0x0C, 0xA7, 0xBD, 0x2F, 0xD1, 0x23, 0xBE, 0x21, 0xCA, 0x81, + 0x3E, 0x9B, 0xFC, 0x0B, 0x3D, 0x85, 0x2C, 0xBC, 0x3D, 0xB8, 0xAA, 0xC2, + 0xBC, 0xB0, 0x9B, 0x30, 0x3D, 0x01, 0x5A, 0x64, 0xBE, 0x24, 0x89, 0x88, + 0xBD, 0x34, 0x78, 0x4F, 0xBE, 0x03, 0xFD, 0xDF, 0x3C, 0xE6, 0x53, 0x36, + 0x3B, 0x15, 0x6E, 0xD9, 0xBD, 0xFD, 0x59, 0x2E, 0x3C, 0xA3, 0x78, 0x34, + 0xBE, 0xD6, 0xBD, 0x0E, 0x3D, 0xE3, 0x0C, 0x02, 0x3E, 0xE4, 0xBD, 0x37, + 0xBC, 0x59, 0x1D, 0x57, 0xBE, 0x83, 0x49, 0x83, 0xBE, 0x14, 0xD3, 0xDA, + 0x3D, 0x04, 0x84, 0x86, 0x3E, 0xF0, 0xCE, 0x23, 0x3E, 0xE0, 0xA9, 0x36, + 0x3B, 0x68, 0x7C, 0x90, 0xBD, 0x9E, 0x38, 0xFA, 0xBC, 0xF7, 0xA5, 0xE7, + 0xBC, 0x6D, 0x3C, 0x4D, 0x3D, 0xD1, 0x1E, 0x62, 0x3A, 0x60, 0x83, 0xEE, + 0xBB, 0x92, 0x00, 0x10, 0x3E, 0xD8, 0xD4, 0x35, 0x3E, 0x39, 0xB2, 0x17, + 0xBE, 0x75, 0x17, 0xEB, 0x3D, 0x43, 0x89, 0xA4, 0x3E, 0x92, 0x45, 0x94, + 0x3D, 0x5C, 0xBF, 0x8B, 0x3C, 0x0D, 0x7E, 0xD6, 0x3C, 0x5F, 0x85, 0x20, + 0xBD, 0xD6, 0xBE, 0xBC, 0xBC, 0x1E, 0xD6, 0x88, 0xBE, 0x3C, 0x2B, 0xA2, + 0x3E, 0xB3, 0x99, 0x1B, 0x3E, 0x2F, 0x69, 0x8E, 0xBC, 0x38, 0x20, 0x31, + 0x3E, 0x34, 0xE7, 0xF6, 0xBD, 0x7D, 0x7F, 0x06, 0xBC, 0x24, 0xDB, 0x73, + 0x3C, 0xE8, 0x82, 0xC9, 0x3D, 0xE7, 0x48, 0x8B, 0x3D, 0xF2, 0x30, 0xE5, + 0xBC, 0xC4, 0x5E, 0x1F, 0x3D, 0x7C, 0x9E, 0xA1, 0x3D, 0x28, 0x9C, 0x9C, + 0x3D, 0x40, 0xEA, 0xED, 0x3D, 0xC1, 0xA0, 0x6B, 0xBD, 0xE6, 0x94, 0x03, + 0xBF, 0x22, 0x6A, 0x52, 0x3E, 0xFF, 0x95, 0x20, 0xBC, 0xF9, 0x0A, 0xF1, + 0x3D, 0x50, 0x0B, 0x9F, 0xBC, 0x4D, 0xB1, 0x3D, 0x3D, 0x3C, 0x0A, 0x31, + 0x3E, 0x3C, 0x85, 0x29, 0x3D, 0x5F, 0x20, 0xC3, 0xBC, 0x2A, 0x0B, 0x0A, + 0x05, 0x64, 0x74, 0x79, 0x70, 0x65, 0x12, 0x02, 0x30, 0x01, 0x0A, 0xB8, + 0x02, 0x0A, 0x07, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x5F, 0x32, 0x12, 0x05, + 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x2A, 0x98, 0x02, 0x0A, 0x05, 0x76, 0x61, + 0x6C, 0x75, 0x65, 0x12, 0x8E, 0x02, 0x42, 0x8B, 0x02, 0x08, 0x01, 0x12, + 0x04, 0x12, 0x02, 0x08, 0x40, 0x22, 0x80, 0x02, 0x74, 0xC1, 0x97, 0xBC, + 0xCD, 0x07, 0xC0, 0xBC, 0x13, 0x01, 0x75, 0xBD, 0xBE, 0x99, 0x0D, 0xBE, + 0x6C, 0x6B, 0x0A, 0xBF, 0xEA, 0xEB, 0x78, 0x3D, 0x86, 0x12, 0x44, 0x3C, + 0x4F, 0x68, 0x8C, 0x37, 0x4A, 0x8D, 0x34, 0x3D, 0xF1, 0x8A, 0x9E, 0x38, + 0x22, 0x10, 0x18, 0xBB, 0xF6, 0x4E, 0x15, 0x3D, 0x51, 0xEA, 0x9C, 0xBA, + 0x11, 0x79, 0x19, 0x3D, 0x1E, 0x05, 0x18, 0x3F, 0x6B, 0x9F, 0x01, 0xBB, + 0x47, 0x35, 0x42, 0xBB, 0x9E, 0xCA, 0x06, 0x3D, 0xFC, 0xAB, 0xA9, 0xBD, + 0x7E, 0xAE, 0x0D, 0x3F, 0x44, 0x85, 0x8C, 0x3A, 0x50, 0x58, 0x09, 0x3C, + 0x55, 0x3C, 0x11, 0xBA, 0xFD, 0x24, 0xF7, 0x3B, 0xC1, 0x0B, 0x0F, 0xBA, + 0x75, 0xBF, 0x41, 0x3B, 0xC8, 0x72, 0x3F, 0x3D, 0xA3, 0x83, 0x7F, 0x3A, + 0x33, 0x17, 0x5E, 0xBA, 0x80, 0x66, 0xE5, 0xBE, 0xE7, 0xFE, 0xC3, 0x3E, + 0xB2, 0x3A, 0xFC, 0x3C, 0xA0, 0xDE, 0x38, 0xBF, 0xFC, 0x9F, 0xEE, 0x3E, + 0x2F, 0x92, 0x0F, 0xBD, 0x27, 0x52, 0xBF, 0xBA, 0xDC, 0x3B, 0x4A, 0x3B, + 0xB6, 0xAF, 0x46, 0x3B, 0x72, 0xED, 0x28, 0x3B, 0xE4, 0x9C, 0xBD, 0x3C, + 0x9B, 0xEE, 0x8F, 0x3C, 0x17, 0xF8, 0x9E, 0xBD, 0x58, 0x0E, 0x56, 0x3B, + 0x58, 0x9E, 0x3E, 0x3D, 0x4B, 0x32, 0x37, 0xBD, 0xE3, 0x90, 0x42, 0xBB, + 0xEE, 0x2F, 0x14, 0x3A, 0xF5, 0x05, 0xC4, 0xBB, 0x7F, 0x64, 0x2F, 0x3F, + 0xC5, 0xB4, 0xBC, 0xBD, 0x29, 0x69, 0x95, 0xBE, 0x3A, 0xCF, 0xF2, 0x39, + 0x2F, 0xA6, 0x0C, 0xBF, 0x8C, 0x3A, 0x0C, 0x3D, 0x40, 0x49, 0xF0, 0x3D, + 0xFB, 0x00, 0xE2, 0x3C, 0x43, 0xB0, 0xC6, 0x3B, 0xD7, 0x8F, 0x8E, 0x3B, + 0x9B, 0xF9, 0xED, 0x3E, 0xC7, 0xFE, 0x74, 0x3B, 0x02, 0x69, 0x8A, 0xBE, + 0x93, 0x55, 0xDB, 0x3C, 0xC1, 0xD4, 0x91, 0x3C, 0x5E, 0x11, 0x2C, 0x3D, + 0x2A, 0x0B, 0x0A, 0x05, 0x64, 0x74, 0x79, 0x70, 0x65, 0x12, 0x02, 0x30, + 0x01, 0x0A, 0xC8, 0xC0, 0x04, 0x0A, 0x07, 0x43, 0x6F, 0x6E, 0x73, 0x74, + 0x5F, 0x33, 0x12, 0x05, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x2A, 0xA7, 0xC0, + 0x04, 0x0A, 0x05, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x12, 0x9C, 0xC0, 0x04, + 0x42, 0x98, 0xC0, 0x04, 0x08, 0x01, 0x12, 0x10, 0x12, 0x02, 0x08, 0x03, + 0x12, 0x02, 0x08, 0x03, 0x12, 0x02, 0x08, 0x40, 0x12, 0x02, 0x08, 0x20, + 0x22, 0x80, 0xC0, 0x04, 0x58, 0x2D, 0x3F, 0xBD, 0xA4, 0x1B, 0xE6, 0xBD, + 0x00, 0x05, 0xC5, 0x3E, 0x0F, 0xFB, 0x3C, 0x3C, 0x0B, 0x62, 0xFB, 0x3D, + 0x2D, 0xB2, 0xA6, 0xBE, 0x67, 0xBD, 0xF2, 0x3D, 0xE3, 0xDF, 0x6A, 0x3E, + 0x9D, 0x57, 0x40, 0x3D, 0x7A, 0xEA, 0x61, 0x3B, 0x5F, 0x0D, 0x21, 0x3F, + 0xBF, 0xFE, 0xB9, 0xBB, 0x03, 0x87, 0xE7, 0xBE, 0x8F, 0x43, 0x65, 0x3E, + 0xC8, 0x6B, 0x11, 0xBF, 0xDF, 0xCC, 0xA6, 0xBD, 0xB3, 0x58, 0x21, 0x3C, + 0xA4, 0xC7, 0xFF, 0xBB, 0xB6, 0xAE, 0x3C, 0x3F, 0x37, 0x07, 0x84, 0xBF, + 0x30, 0xDA, 0x96, 0x3D, 0xC3, 0x6C, 0x9B, 0xBE, 0x6E, 0x35, 0x27, 0x3E, + 0xBD, 0x97, 0x0E, 0x3F, 0x2F, 0xB8, 0x05, 0xBE, 0x45, 0xE5, 0xDC, 0xBD, + 0xCD, 0xC4, 0x78, 0x3E, 0x09, 0x33, 0x19, 0x3E, 0x0E, 0xD7, 0x47, 0xBE, + 0x2C, 0xE8, 0xAA, 0x3D, 0x90, 0xBC, 0x56, 0x3F, 0xF0, 0xA3, 0x10, 0x3E, + 0x04, 0x50, 0x87, 0x3E, 0x9B, 0x71, 0xBF, 0x3D, 0x86, 0x6B, 0xA9, 0xBF, + 0xB3, 0xA4, 0x58, 0xBE, 0x47, 0x76, 0xBE, 0xBC, 0x65, 0x7D, 0xCE, 0xBC, + 0x54, 0xAA, 0x0F, 0xBC, 0x44, 0x6E, 0x34, 0x3E, 0xD2, 0x49, 0x02, 0xBC, + 0x43, 0xF3, 0x71, 0x3C, 0x2F, 0x94, 0x4E, 0xBD, 0x60, 0xF5, 0xA6, 0x3C, + 0xB3, 0x0F, 0x19, 0x3E, 0x73, 0xA4, 0x0C, 0xBE, 0x4A, 0xD5, 0x2F, 0x3F, + 0xBB, 0x66, 0xE6, 0x3E, 0x8C, 0xB0, 0x06, 0xBF, 0x0D, 0xBB, 0xA1, 0x3C, + 0x58, 0x0B, 0x61, 0x3E, 0x54, 0x46, 0x47, 0xBE, 0x72, 0xBF, 0x09, 0xBE, + 0x10, 0x44, 0xB3, 0xBD, 0x55, 0x6A, 0xB3, 0x3D, 0xE1, 0x7D, 0x5E, 0x3D, + 0xA9, 0x9A, 0x2C, 0x3F, 0x8C, 0x0A, 0x3E, 0xBB, 0xE1, 0x1D, 0x97, 0x3D, + 0x14, 0xF1, 0x30, 0x3F, 0x34, 0x5D, 0x11, 0x3D, 0x4E, 0x89, 0x52, 0xBE, + 0xF8, 0xD4, 0x66, 0xBE, 0xE2, 0x05, 0x1C, 0xBE, 0x35, 0x0D, 0xEC, 0xBE, + 0xE9, 0xB2, 0xA5, 0x3E, 0xD5, 0x11, 0xE7, 0x3F, 0x1C, 0x11, 0x45, 0x3F, + 0x9E, 0x49, 0x74, 0x3D, 0x4D, 0x1B, 0x00, 0xBD, 0x08, 0xA8, 0xFE, 0x3D, + 0x0A, 0x72, 0x8A, 0x3D, 0xA4, 0xEF, 0xAD, 0x3D, 0xB1, 0x13, 0x9B, 0xBE, + 0x6F, 0xE5, 0x6C, 0xBE, 0x9E, 0xAC, 0x2E, 0x3D, 0xE5, 0xED, 0x4B, 0xBE, + 0xB3, 0x40, 0x21, 0xBE, 0x6C, 0x6D, 0x97, 0x3C, 0xAC, 0x77, 0x33, 0xBE, + 0xC9, 0x4D, 0xC2, 0x3E, 0x08, 0x7C, 0x84, 0x3C, 0x18, 0x6F, 0x2B, 0x3D, + 0xBB, 0x56, 0xC2, 0xBD, 0xA9, 0x85, 0xC5, 0xBC, 0xC6, 0x9C, 0x5E, 0x3C, + 0xBF, 0x61, 0xF3, 0x3D, 0x51, 0xAD, 0x33, 0x3E, 0xC1, 0xBF, 0x6B, 0xBF, + 0xD2, 0x58, 0x9F, 0xBE, 0x03, 0xA1, 0x3A, 0xBE, 0xFC, 0xA9, 0xB6, 0xBF, + 0x39, 0x78, 0x2A, 0x3B, 0x86, 0x71, 0xB7, 0x3E, 0xF4, 0xCE, 0xD9, 0x3E, + 0x7F, 0x0F, 0x9D, 0x3D, 0x6D, 0xF1, 0x06, 0x3F, 0xDF, 0x7E, 0x1D, 0xBE, + 0x5D, 0x77, 0x38, 0xBF, 0x9E, 0x58, 0x1E, 0x3E, 0xDD, 0xDC, 0xC4, 0xBB, + 0xAF, 0xD8, 0x6C, 0x3D, 0x5A, 0xA1, 0x9E, 0x3D, 0x7B, 0xF8, 0x46, 0x3B, + 0x3D, 0xA8, 0xA9, 0xBE, 0x05, 0x0E, 0xC8, 0x3D, 0xCF, 0x28, 0x16, 0x3C, + 0x4B, 0xF5, 0xEE, 0xBC, 0xA9, 0x34, 0x4F, 0x3D, 0xE4, 0xE8, 0x29, 0xBF, + 0x92, 0xDA, 0x80, 0xBE, 0x6E, 0x4C, 0x9F, 0x3D, 0x5E, 0xBA, 0x03, 0x3F, + 0xF1, 0x56, 0x8E, 0x3C, 0x0A, 0xB4, 0x0B, 0x3F, 0x3E, 0x43, 0x14, 0xBE, + 0x95, 0x2D, 0x07, 0xBD, 0x4D, 0xD1, 0x46, 0xBD, 0x1B, 0x91, 0x89, 0xBE, + 0xFE, 0x0C, 0xC0, 0x3D, 0x60, 0x35, 0x54, 0xBF, 0x1B, 0x77, 0x47, 0xBD, + 0xA8, 0xDF, 0x4D, 0xBC, 0x4D, 0xCE, 0xA4, 0xBE, 0x17, 0xAD, 0xAB, 0xBB, + 0x2B, 0x4A, 0x8B, 0xBF, 0x62, 0xEC, 0x56, 0xBD, 0xCD, 0xE1, 0x96, 0x3D, + 0x60, 0xFC, 0xAB, 0xBE, 0x30, 0xB1, 0xEA, 0xBD, 0x62, 0xA5, 0x69, 0x3F, + 0xCC, 0x14, 0x17, 0xBF, 0x40, 0x49, 0xAF, 0x3C, 0x5A, 0x26, 0xBA, 0xBD, + 0x7B, 0x2B, 0x84, 0xBE, 0x64, 0x5A, 0xA7, 0x3E, 0x01, 0x21, 0x3F, 0xBE, + 0x1C, 0xA6, 0xCC, 0xBD, 0x33, 0x85, 0xE4, 0x3E, 0x61, 0x74, 0x9D, 0xBD, + 0x27, 0x96, 0xE7, 0x3E, 0xA8, 0x7A, 0x38, 0x3F, 0x7F, 0x91, 0x04, 0x3F, + 0x5B, 0x38, 0x23, 0x3D, 0xEB, 0x88, 0x7A, 0xBD, 0x47, 0xB3, 0x57, 0xBD, + 0xE1, 0x0B, 0x61, 0x3D, 0xFA, 0x7E, 0xE0, 0xBE, 0x68, 0xAF, 0xBC, 0x3E, + 0xB5, 0x9D, 0xBD, 0x3D, 0xDF, 0xB4, 0x18, 0x3E, 0xED, 0x85, 0x8D, 0x3D, + 0x8C, 0xC8, 0x04, 0xBE, 0x12, 0xC6, 0xD3, 0x3D, 0x9D, 0x38, 0x03, 0x3E, + 0xBA, 0xD5, 0x19, 0xBD, 0x39, 0xEA, 0xEF, 0x3D, 0xCE, 0xA6, 0x85, 0x3F, + 0x21, 0xE8, 0x69, 0xBE, 0xC7, 0x26, 0x2D, 0x3E, 0xBA, 0x32, 0x2F, 0xBE, + 0x9F, 0x6A, 0x7F, 0x3E, 0x12, 0x3C, 0xBC, 0x3E, 0x26, 0x26, 0xEA, 0x3C, + 0x75, 0x5F, 0xD7, 0xBE, 0xDF, 0xC4, 0x00, 0x3F, 0x52, 0x51, 0x59, 0xBE, + 0x26, 0x11, 0x06, 0xBF, 0xB0, 0x71, 0x1A, 0x3F, 0xFB, 0xEF, 0x30, 0x3E, + 0xBC, 0x71, 0x73, 0xBE, 0xC9, 0xB5, 0xCF, 0xBE, 0x3A, 0x75, 0x9D, 0x3E, + 0x1F, 0xDB, 0x48, 0xC0, 0x45, 0xB2, 0x51, 0xBF, 0xD5, 0x87, 0x99, 0x3D, + 0xAD, 0xDF, 0x11, 0xBF, 0x94, 0xCC, 0xF4, 0xBE, 0x1D, 0x76, 0x36, 0xBF, + 0x71, 0x41, 0x07, 0xBF, 0x82, 0x3C, 0x3E, 0x3E, 0x06, 0x82, 0x18, 0xBF, + 0xD6, 0xB3, 0x69, 0x3F, 0x3E, 0x96, 0x6B, 0x3E, 0xCB, 0x5F, 0xED, 0x3E, + 0x5D, 0x46, 0x89, 0x3E, 0xE0, 0xF6, 0x05, 0xBE, 0x8F, 0x58, 0xDD, 0x3E, + 0x58, 0x9E, 0x5D, 0xBF, 0x43, 0x03, 0x1C, 0x3F, 0xCC, 0xF3, 0x25, 0xBF, + 0xC9, 0x52, 0x16, 0xBF, 0xE2, 0x80, 0x8C, 0xBD, 0x26, 0x0E, 0x81, 0x3D, + 0x7D, 0x42, 0x03, 0xBC, 0x98, 0x3E, 0x92, 0x3C, 0x71, 0x1C, 0x0F, 0xBE, + 0x24, 0xF9, 0xD5, 0xBB, 0x90, 0x08, 0x00, 0x3D, 0xDD, 0x96, 0xB6, 0x3D, + 0x4B, 0xD3, 0x15, 0x3D, 0x24, 0xE3, 0x0B, 0xBD, 0x44, 0xD8, 0xB2, 0xBD, + 0x55, 0xF1, 0x73, 0xBD, 0x9E, 0x71, 0x3F, 0x3E, 0x04, 0xDE, 0xF4, 0x3C, + 0xAA, 0xA8, 0x5D, 0x3E, 0xFB, 0xE5, 0x0B, 0x3E, 0x68, 0x3F, 0x18, 0x3E, + 0x8A, 0x29, 0x60, 0xBD, 0xC7, 0xED, 0x1F, 0xBE, 0x7F, 0x02, 0x70, 0xBD, + 0xFA, 0xC5, 0x15, 0xBC, 0x06, 0x14, 0x9C, 0x3D, 0xF2, 0x7E, 0x7A, 0x3E, + 0x2E, 0xB7, 0x97, 0xBD, 0x9C, 0xE9, 0x0B, 0x3C, 0x90, 0x62, 0xC3, 0x3C, + 0xB9, 0x4E, 0xCF, 0xBD, 0xFB, 0x00, 0x8C, 0x3E, 0x6F, 0x26, 0x13, 0xBD, + 0x4A, 0x8B, 0x07, 0x3F, 0xAE, 0x72, 0x40, 0xBE, 0x2F, 0x42, 0xD5, 0x3D, + 0x4C, 0x43, 0x91, 0xBD, 0x68, 0xBA, 0x96, 0x3D, 0x19, 0x7A, 0xED, 0xBD, + 0x71, 0xEB, 0xA0, 0xBD, 0xA9, 0x96, 0x1A, 0xBD, 0x0F, 0xFA, 0xD3, 0xBC, + 0x8C, 0xD1, 0xBF, 0x3D, 0xA4, 0xA1, 0x83, 0x3D, 0x66, 0xBC, 0x94, 0xBD, + 0x3E, 0x38, 0x4A, 0xBD, 0x87, 0xE6, 0x6C, 0x3C, 0x4F, 0x9A, 0x3E, 0x3C, + 0x57, 0x33, 0x5F, 0x3D, 0x02, 0x17, 0x9A, 0x3D, 0x81, 0x83, 0x97, 0x3D, + 0x35, 0x1F, 0x21, 0x3D, 0xA0, 0x74, 0x09, 0x3E, 0x10, 0x86, 0xAD, 0xBC, + 0xEB, 0x49, 0xB0, 0xBD, 0x5F, 0x52, 0x56, 0xBD, 0xA0, 0x68, 0x81, 0x3C, + 0x35, 0x3B, 0xE7, 0x3C, 0xF1, 0x8C, 0xA2, 0xBC, 0x93, 0xCF, 0x60, 0x3D, + 0x2E, 0x56, 0x36, 0xBC, 0x86, 0x15, 0xE9, 0x3C, 0x77, 0x9C, 0x4C, 0xBD, + 0x2E, 0x77, 0x09, 0x3D, 0xFA, 0x58, 0x2F, 0xBD, 0xDC, 0x4C, 0x2F, 0x3E, + 0x47, 0x64, 0x1F, 0xBD, 0x20, 0xB4, 0x13, 0xBD, 0x6E, 0x05, 0xAA, 0xBE, + 0x65, 0xC7, 0x9B, 0xBE, 0x14, 0x07, 0xD3, 0xBD, 0xCD, 0x95, 0xF4, 0xBE, + 0x70, 0x22, 0x81, 0xBD, 0x91, 0x00, 0x9A, 0xBE, 0x93, 0xFC, 0x2B, 0xBE, + 0x47, 0xE7, 0xC7, 0x3E, 0xF2, 0x6D, 0xAB, 0x3E, 0xEA, 0x9F, 0x98, 0xBE, + 0xB1, 0x2D, 0x3C, 0xBE, 0x32, 0x44, 0x83, 0xBE, 0x4B, 0x2F, 0x3F, 0x3F, + 0xEA, 0x4B, 0xA7, 0x3F, 0x81, 0xC7, 0x52, 0x3F, 0xFE, 0x51, 0x38, 0xBF, + 0x5D, 0x83, 0x1C, 0x3F, 0x03, 0x5D, 0x6B, 0xBE, 0xD6, 0x5D, 0xB2, 0xBE, + 0x0A, 0x7F, 0xD5, 0x3D, 0x64, 0x03, 0xC9, 0x3E, 0xA8, 0xA9, 0xEE, 0x3D, + 0xE1, 0x90, 0x9B, 0xBE, 0xDC, 0xE2, 0xD1, 0xBE, 0xBF, 0xD8, 0x2B, 0xBD, + 0xA7, 0x22, 0xFE, 0xBE, 0xEA, 0x22, 0xA1, 0x3E, 0x3F, 0xC0, 0x90, 0x3F, + 0x1A, 0x9C, 0xBD, 0xBD, 0x63, 0x7C, 0xE9, 0xBF, 0xA0, 0x6D, 0xC5, 0xBE, + 0x7E, 0xF6, 0xAD, 0x3E, 0xDD, 0xE8, 0xB7, 0xBC, 0xF2, 0x45, 0x1F, 0xBC, + 0x03, 0xD5, 0x11, 0x3D, 0x53, 0x45, 0x84, 0x3D, 0x72, 0x88, 0xD4, 0x3C, + 0x45, 0x6F, 0x57, 0xBD, 0x83, 0xFF, 0x63, 0xBC, 0x05, 0xBA, 0x97, 0xBC, + 0x96, 0x70, 0x94, 0xBC, 0xA4, 0x9F, 0x69, 0x3D, 0x83, 0x31, 0x09, 0x3C, + 0x68, 0xE3, 0xF2, 0xBA, 0x5C, 0xBB, 0xAD, 0x3B, 0x0B, 0x13, 0xA4, 0xBC, + 0x2D, 0x86, 0x40, 0xBD, 0xF5, 0x8D, 0x66, 0x3C, 0x51, 0x18, 0xF3, 0xBC, + 0x49, 0x8C, 0x80, 0xBB, 0x3A, 0xF3, 0xD5, 0xBC, 0x28, 0x57, 0xC5, 0x3D, + 0x8C, 0x36, 0xE3, 0xBC, 0x32, 0x60, 0x6A, 0x3C, 0x8F, 0x41, 0x75, 0x3D, + 0xB8, 0x59, 0xAF, 0xBD, 0x46, 0x2D, 0xCA, 0x3D, 0x6F, 0xE9, 0x1B, 0x3B, + 0xE3, 0xF0, 0x30, 0xBD, 0xA3, 0xD1, 0x2A, 0x3D, 0x9B, 0x67, 0x62, 0x3D, + 0x89, 0xB3, 0xA8, 0x3A, 0x20, 0xFA, 0x66, 0x3C, 0xA0, 0x18, 0x92, 0x3C, + 0xE4, 0x17, 0x85, 0xBD, 0x6D, 0x73, 0x39, 0x3C, 0x5A, 0x17, 0x81, 0xBC, + 0x0B, 0x9D, 0x8D, 0x3D, 0x88, 0x6C, 0x3F, 0xBC, 0xE7, 0xE0, 0x55, 0x3B, + 0x56, 0x57, 0x17, 0xBC, 0xC1, 0x02, 0x6A, 0x3D, 0x32, 0xB6, 0xB3, 0xBB, + 0xAB, 0x64, 0xF8, 0x3C, 0x8D, 0xB1, 0x95, 0xBD, 0x05, 0xA6, 0x82, 0xBC, + 0x39, 0x7C, 0x1E, 0x3A, 0xB0, 0x1D, 0xB3, 0xBD, 0x45, 0xE2, 0x5C, 0x3D, + 0x5B, 0xD4, 0xE5, 0x3C, 0x33, 0xE6, 0x90, 0x3C, 0x89, 0x0E, 0x7B, 0x3B, + 0xD2, 0x7E, 0xDF, 0xBC, 0x8F, 0x5F, 0xD8, 0xBC, 0x25, 0x27, 0x50, 0x3C, + 0x2A, 0x50, 0x12, 0xBD, 0xAD, 0xD2, 0x6B, 0xBC, 0xA3, 0x59, 0xCD, 0x3C, + 0x24, 0xAD, 0x34, 0x3D, 0x42, 0xBC, 0x41, 0x3C, 0x3F, 0x4D, 0xCB, 0xBC, + 0xE4, 0xD2, 0xED, 0x3D, 0x15, 0xAC, 0xF1, 0x3C, 0x6B, 0x14, 0xD0, 0xBE, + 0xA0, 0xDA, 0xD3, 0xBC, 0xC5, 0x7E, 0x81, 0x3B, 0x87, 0x51, 0xA6, 0xBE, + 0xC9, 0xD9, 0x68, 0xBD, 0x76, 0xD5, 0xA3, 0x3D, 0xE5, 0x7D, 0x83, 0xBD, + 0x59, 0xA7, 0x0E, 0xBC, 0x00, 0x79, 0x3D, 0xBD, 0xEC, 0xDC, 0x10, 0xBE, + 0xFA, 0x0B, 0x9B, 0xBD, 0x47, 0x4F, 0x78, 0xB9, 0xB2, 0x60, 0x29, 0xBE, + 0x72, 0x21, 0xDA, 0xBD, 0x8A, 0x4B, 0x54, 0xBC, 0xE0, 0x9B, 0x19, 0xBC, + 0x04, 0x4C, 0x8D, 0x3E, 0x7D, 0xFA, 0xA5, 0x3E, 0x10, 0xFF, 0xAF, 0xBD, + 0xEE, 0x26, 0xD5, 0xBE, 0x18, 0xC3, 0x42, 0xBC, 0x96, 0x3D, 0xF8, 0xBE, + 0x23, 0x0D, 0xBB, 0xBD, 0xBF, 0x07, 0xEC, 0xBC, 0xFA, 0x98, 0xA4, 0xBC, + 0xC7, 0x59, 0xA6, 0x3E, 0x0E, 0x3F, 0xAF, 0x3D, 0xBC, 0x77, 0xEF, 0xBD, + 0x46, 0x07, 0xFC, 0xBD, 0xEF, 0x31, 0xB0, 0x3C, 0x7B, 0xBD, 0xD2, 0x3D, + 0xE4, 0xCC, 0x5C, 0xBC, 0xC6, 0x57, 0x64, 0xBF, 0x06, 0xF5, 0x3A, 0xBE, + 0xEA, 0x87, 0x78, 0xBD, 0x03, 0x12, 0x63, 0xBD, 0xEE, 0x18, 0x39, 0x3B, + 0x00, 0x74, 0xE4, 0xBB, 0xA8, 0xC6, 0x3E, 0x3D, 0x2E, 0x27, 0xEA, 0x3B, + 0x1B, 0xCA, 0xBD, 0xBC, 0x1A, 0x13, 0xAE, 0xBB, 0x73, 0x0B, 0x72, 0x3B, + 0x78, 0x72, 0xE6, 0xBC, 0x4D, 0x32, 0xA4, 0x3C, 0x21, 0xB1, 0x76, 0x3C, + 0x8C, 0x7F, 0x7A, 0x3A, 0x71, 0x83, 0x41, 0x3C, 0xFA, 0xBA, 0x4F, 0xBC, + 0xE4, 0xDC, 0x42, 0xBC, 0xBF, 0x6D, 0xD0, 0x3C, 0x05, 0x48, 0x72, 0x3B, + 0x1D, 0x0E, 0x6A, 0xBB, 0x20, 0x9B, 0xA1, 0xBC, 0x24, 0x8A, 0x31, 0x3D, + 0x00, 0xBD, 0x84, 0x3C, 0x73, 0xE4, 0x52, 0xB8, 0xAF, 0xC3, 0x03, 0x3D, + 0x9C, 0xF9, 0xEA, 0xBC, 0x88, 0x32, 0xDC, 0x3C, 0xD1, 0x1F, 0x11, 0xBB, + 0x62, 0x67, 0xBE, 0xBC, 0x31, 0x29, 0x59, 0x3D, 0xD1, 0x0E, 0xF4, 0x3C, + 0xB9, 0x6D, 0x38, 0xBD, 0x18, 0x8A, 0x98, 0x3C, 0x7B, 0x26, 0xF2, 0x3A, + 0x6C, 0x89, 0x19, 0xBF, 0xE1, 0xAD, 0x6C, 0x3C, 0xB2, 0x1A, 0xD4, 0x3F, + 0x0B, 0x95, 0x3B, 0x3F, 0x13, 0x78, 0x86, 0x3E, 0xC0, 0x84, 0x85, 0xBE, + 0x93, 0x90, 0x30, 0xBE, 0xB7, 0xD4, 0x82, 0xBE, 0xA4, 0x71, 0x16, 0xBD, + 0x59, 0x5A, 0x1E, 0x3E, 0xAB, 0xE1, 0x16, 0xBF, 0x36, 0x04, 0x87, 0x3E, + 0xFB, 0xA6, 0x82, 0xBE, 0xC2, 0xF4, 0x68, 0x3E, 0x16, 0x39, 0x03, 0xBE, + 0xD4, 0x09, 0x59, 0x3E, 0x84, 0x49, 0x05, 0xBF, 0x49, 0xAE, 0x6A, 0x3E, + 0x8A, 0x85, 0xF3, 0xBE, 0xB8, 0x29, 0x31, 0x3C, 0x42, 0x12, 0x4E, 0xBE, + 0xDC, 0x13, 0xCC, 0x3E, 0xA7, 0x4E, 0x74, 0xBD, 0x35, 0xBB, 0x21, 0x3F, + 0xD8, 0xEA, 0x14, 0xBE, 0x9A, 0x9C, 0xE1, 0xBE, 0x36, 0x36, 0x0F, 0xBF, + 0x31, 0xCD, 0x51, 0xBF, 0x46, 0x44, 0x87, 0x3D, 0x40, 0xAF, 0x43, 0xBE, + 0x13, 0xD2, 0x4E, 0x3F, 0xE4, 0xF7, 0xF4, 0x3D, 0x8B, 0xF0, 0xE9, 0x3D, + 0x04, 0xB9, 0x90, 0x3E, 0x10, 0xC4, 0x82, 0x3E, 0x47, 0xB0, 0x00, 0xBF, + 0x4C, 0x39, 0xA3, 0x3E, 0x22, 0x68, 0x3B, 0x3F, 0x17, 0x57, 0xE6, 0x3E, + 0x87, 0x07, 0xD5, 0xBD, 0x79, 0x15, 0xFC, 0x3E, 0xF2, 0x1A, 0x94, 0x3E, + 0x6A, 0xE6, 0x3A, 0xBE, 0xB8, 0xAE, 0x7C, 0xBD, 0xEB, 0xAC, 0x8E, 0xBE, + 0x28, 0x32, 0x18, 0xC0, 0xCF, 0xEB, 0x6D, 0x3F, 0xAC, 0xAE, 0x96, 0x3E, + 0x67, 0x5B, 0x93, 0xBE, 0x69, 0xC9, 0x9E, 0x3D, 0x6B, 0x36, 0x43, 0xBF, + 0x39, 0x8F, 0x57, 0x3F, 0x9C, 0x04, 0x5C, 0xBE, 0x8B, 0x97, 0xCF, 0xBD, + 0x65, 0x7E, 0xB9, 0x3E, 0x4F, 0x85, 0xCC, 0xBB, 0x30, 0x1C, 0x1F, 0x3F, + 0xF7, 0x5F, 0x5A, 0x3E, 0xE1, 0x67, 0x19, 0xBC, 0x92, 0xD9, 0x12, 0x3E, + 0xA4, 0x86, 0xE0, 0xBE, 0xAC, 0x0A, 0xD8, 0x3D, 0x7A, 0xA1, 0xAF, 0x3E, + 0xBE, 0x99, 0x4F, 0xBE, 0xAA, 0x8E, 0x8B, 0x3D, 0x0E, 0x84, 0xD6, 0xBC, + 0x28, 0x06, 0x60, 0xBE, 0xEA, 0x8A, 0x0A, 0x3E, 0x64, 0x89, 0x70, 0x3C, + 0x76, 0x9C, 0x33, 0xBD, 0xB0, 0x1C, 0xB6, 0x3D, 0xB1, 0x61, 0x2B, 0x3D, + 0x0D, 0x01, 0xF6, 0xBD, 0xF0, 0x36, 0xEF, 0xBD, 0x44, 0xD1, 0x8F, 0x3C, + 0xA7, 0x94, 0x08, 0x3C, 0xFB, 0x7C, 0xB7, 0xBD, 0x2E, 0x70, 0x09, 0xBF, + 0x0B, 0x3E, 0xB8, 0xBE, 0xBF, 0xDA, 0x10, 0xBE, 0xBA, 0x32, 0x4B, 0xBE, + 0x23, 0xF0, 0x47, 0xBD, 0x89, 0x2B, 0x4A, 0x3E, 0x54, 0xF5, 0x77, 0x3D, + 0x65, 0x77, 0xD9, 0x3C, 0xAA, 0xE5, 0xE4, 0xBB, 0xA2, 0x0E, 0xFC, 0x3C, + 0xE4, 0x0F, 0xDF, 0xBD, 0xC0, 0xD4, 0x3A, 0x3D, 0xEA, 0x5E, 0xF6, 0xBD, + 0xC4, 0xA7, 0x2F, 0x3D, 0x12, 0xCF, 0xDE, 0x3D, 0xF7, 0x04, 0x9D, 0x3D, + 0xC9, 0xF1, 0x09, 0x3E, 0x94, 0xF9, 0x67, 0x3E, 0xA3, 0x00, 0x4A, 0xBC, + 0x31, 0x2F, 0xF7, 0xBA, 0xBB, 0x7F, 0x4F, 0xB8, 0x10, 0xD6, 0x03, 0x3B, + 0x53, 0x53, 0x1A, 0xBC, 0x2D, 0x75, 0xD6, 0x3B, 0x4E, 0x19, 0x08, 0xBD, + 0x97, 0xF6, 0xF3, 0xBC, 0x15, 0x6D, 0x66, 0xBC, 0x1D, 0x35, 0x9D, 0x3C, + 0x51, 0x01, 0x53, 0x3C, 0x6D, 0xC2, 0x34, 0x3C, 0xFC, 0x1A, 0x34, 0xBC, + 0x2C, 0x3D, 0xF4, 0xB8, 0x5F, 0x18, 0x90, 0x3D, 0xC8, 0xC9, 0xCD, 0xBD, + 0xB5, 0xAB, 0x02, 0x3D, 0x02, 0xD9, 0x1E, 0xBC, 0xBB, 0x4D, 0x91, 0xB9, + 0xB9, 0x90, 0x0B, 0xBC, 0xB4, 0xC8, 0xF9, 0x3C, 0xD5, 0xE7, 0x12, 0xBD, + 0x1B, 0xED, 0x96, 0x3C, 0xF2, 0x40, 0xD5, 0x3C, 0x91, 0x52, 0x1A, 0xBC, + 0x5F, 0x7D, 0x57, 0xBD, 0xDE, 0x12, 0x5C, 0xBA, 0x7E, 0xCF, 0x8C, 0xBB, + 0x0F, 0xA8, 0x31, 0xBD, 0x18, 0xB9, 0x82, 0x3C, 0x85, 0xF0, 0xA5, 0x3E, + 0xA0, 0xD3, 0x04, 0x3C, 0x3B, 0x23, 0x9D, 0x3B, 0xA0, 0xDB, 0xBC, 0x3E, + 0x05, 0x93, 0x1E, 0xBD, 0x3E, 0x93, 0xE5, 0x3D, 0x73, 0x9A, 0x81, 0x3E, + 0x33, 0x00, 0xA9, 0x3D, 0xAF, 0x87, 0x61, 0xBD, 0xC8, 0xD4, 0x1B, 0x3E, + 0x8A, 0xB1, 0x06, 0x3E, 0x38, 0x6D, 0xFD, 0xBD, 0xB8, 0xD8, 0x60, 0xBC, + 0x30, 0xC2, 0x0D, 0x3E, 0x8B, 0x2A, 0xB9, 0x3C, 0xCE, 0x67, 0x22, 0x3C, + 0xB8, 0xCF, 0x1E, 0xBE, 0xB0, 0xA0, 0x0E, 0xBD, 0x92, 0x3F, 0x89, 0x3D, + 0xF5, 0xF4, 0x0C, 0x3F, 0xA8, 0xC0, 0xDE, 0x3C, 0x02, 0x60, 0x57, 0x3E, + 0x8C, 0x06, 0x44, 0xBE, 0xEA, 0xB4, 0x70, 0xBD, 0x89, 0x25, 0xE9, 0x3D, + 0x40, 0x79, 0x22, 0xBE, 0x2A, 0x8E, 0xEA, 0xBA, 0x1D, 0x2D, 0xBC, 0xBB, + 0x00, 0xFC, 0x21, 0xBD, 0x6A, 0x34, 0x77, 0xBC, 0xBA, 0x12, 0xDE, 0xBE, + 0xCC, 0xDF, 0x90, 0x3D, 0x63, 0x9B, 0x91, 0xBE, 0x12, 0x4F, 0x1D, 0xBE, + 0xD9, 0x24, 0x95, 0x3D, 0xE5, 0x32, 0x29, 0x3D, 0x67, 0x4C, 0xB1, 0xBD, + 0xDA, 0xF1, 0x63, 0x3F, 0x00, 0xD3, 0xBD, 0xBE, 0x19, 0xE0, 0x90, 0x3E, + 0xBC, 0xDC, 0x78, 0xBE, 0xB0, 0x72, 0xE1, 0xBC, 0x43, 0xE1, 0xB0, 0xBE, + 0x3A, 0x57, 0x79, 0xBE, 0xE6, 0x85, 0x9C, 0xBE, 0x08, 0xB4, 0x47, 0x3F, + 0x43, 0xCB, 0x05, 0x3D, 0x9E, 0x4E, 0x5F, 0xBD, 0x7F, 0xA2, 0xFE, 0x3E, + 0x9F, 0xDA, 0x18, 0xBE, 0x0B, 0x24, 0x1F, 0xBE, 0xCB, 0xDC, 0xD1, 0x3E, + 0x12, 0xBA, 0x56, 0x3D, 0xDE, 0xB0, 0xB4, 0x3E, 0xF9, 0xEE, 0xB9, 0x3C, + 0x14, 0xD2, 0xDB, 0xBD, 0xC0, 0xE8, 0x70, 0x3E, 0xBF, 0x58, 0xA3, 0xBE, + 0x5B, 0x25, 0x22, 0x3E, 0xCF, 0x4F, 0x51, 0xBE, 0x2E, 0x07, 0xD2, 0xBE, + 0x03, 0x1A, 0xA6, 0x3C, 0xFD, 0x08, 0x37, 0xBF, 0xCD, 0xFF, 0x5D, 0xBD, + 0xA5, 0x9E, 0x90, 0x3E, 0x8F, 0xBA, 0x57, 0x3E, 0xB3, 0x7A, 0x66, 0x3E, + 0x97, 0x5B, 0x19, 0xBD, 0xC4, 0x20, 0xBE, 0x3D, 0xFF, 0x99, 0x8F, 0xBF, + 0x0B, 0xF8, 0x8B, 0xBE, 0xE9, 0xD5, 0x23, 0xBD, 0x4D, 0x6C, 0x6E, 0x3D, + 0x55, 0x3A, 0xE8, 0x3E, 0x25, 0xBA, 0xBE, 0x3E, 0xC0, 0x67, 0x17, 0xBE, + 0xB5, 0x73, 0x8C, 0x3E, 0x4F, 0x6D, 0xB8, 0x3E, 0xC8, 0x52, 0x93, 0x3D, + 0x81, 0xFA, 0x4F, 0x3E, 0x42, 0x8A, 0x3E, 0x3E, 0xA9, 0xF9, 0x30, 0xBF, + 0x27, 0x5B, 0x15, 0x3E, 0x7A, 0x25, 0x0C, 0x3F, 0x13, 0x7E, 0x35, 0x3D, + 0xF3, 0xB4, 0x14, 0xBF, 0x8A, 0x1A, 0xA3, 0x3F, 0xF1, 0x9D, 0xBA, 0xBE, + 0x3B, 0x14, 0x3C, 0xBD, 0xC8, 0x46, 0x32, 0xBF, 0xC8, 0xBC, 0x0C, 0x3C, + 0x44, 0xCE, 0xAE, 0x3E, 0xF6, 0x02, 0xE9, 0x3E, 0x59, 0xB3, 0x60, 0x3E, + 0x0B, 0x35, 0x94, 0x3F, 0xF8, 0x28, 0x07, 0x3E, 0x74, 0x90, 0xF0, 0x3E, + 0xA6, 0x0F, 0x1E, 0x3E, 0xC5, 0x70, 0x18, 0xBE, 0xC7, 0x93, 0xE3, 0xBD, + 0xBB, 0xD0, 0x4C, 0x3E, 0xF7, 0x4B, 0xB5, 0x3F, 0x49, 0x24, 0x86, 0x3D, + 0xD4, 0xE5, 0x5D, 0xBE, 0xDD, 0x29, 0xD8, 0x3E, 0xBD, 0x76, 0xD9, 0xBD, + 0x0D, 0x14, 0x71, 0xBE, 0x4E, 0xA6, 0xA7, 0x3E, 0x65, 0x77, 0xDC, 0xBD, + 0x62, 0x00, 0xED, 0x3E, 0x35, 0x52, 0x20, 0xBE, 0x61, 0x3C, 0x71, 0xBE, + 0x7A, 0x94, 0x6F, 0xBE, 0xE7, 0xF2, 0x75, 0xBD, 0x6A, 0x35, 0x4B, 0xBE, + 0xB5, 0x68, 0xF0, 0xBD, 0x43, 0x86, 0x3D, 0xBC, 0xA9, 0xD9, 0x48, 0xBF, + 0x82, 0xBF, 0x28, 0xBF, 0x82, 0x10, 0x15, 0x3E, 0xFA, 0xFA, 0x45, 0x3D, + 0x21, 0x23, 0x3B, 0xBF, 0xD2, 0xDC, 0x83, 0x3E, 0x62, 0xEC, 0x34, 0xBE, + 0xBB, 0x12, 0xC6, 0x3D, 0x93, 0xE2, 0xC8, 0xBD, 0x02, 0x8A, 0x22, 0x3E, + 0xC0, 0xBD, 0x8C, 0xBE, 0x59, 0x96, 0xCB, 0xBC, 0x6C, 0xD0, 0x81, 0xBD, + 0x23, 0xF5, 0xF2, 0x3D, 0x76, 0x8A, 0x38, 0x3E, 0x01, 0x93, 0xB4, 0xBD, + 0xEF, 0x80, 0x18, 0x3E, 0xE1, 0xBC, 0x1E, 0x3D, 0xF2, 0x0B, 0x2A, 0x3E, + 0xFE, 0x9E, 0x20, 0xBE, 0x6E, 0xCE, 0xFD, 0xBC, 0x3D, 0x3D, 0x9C, 0xBD, + 0x14, 0xB1, 0x00, 0xBD, 0xC8, 0x67, 0x97, 0x3B, 0xCE, 0x0D, 0x55, 0x3D, + 0xE9, 0xF0, 0xB7, 0xBB, 0xE9, 0x45, 0x9D, 0xBC, 0x81, 0xBA, 0xCD, 0x3D, + 0x95, 0x5F, 0x14, 0x3C, 0x1B, 0x3A, 0x9C, 0xBD, 0x63, 0xB7, 0xB0, 0xBC, + 0x63, 0x53, 0x3B, 0x3D, 0xAD, 0xA6, 0xF4, 0x3D, 0x9E, 0xA2, 0x41, 0x3E, + 0xA9, 0xDB, 0x0B, 0xBC, 0x79, 0x19, 0xF6, 0x3D, 0xDD, 0x60, 0x1F, 0x3E, + 0xE8, 0x37, 0x58, 0xBE, 0xA1, 0xBA, 0x24, 0x3E, 0x8C, 0x58, 0xD9, 0xBD, + 0xEF, 0x56, 0x0E, 0xBD, 0x20, 0x9C, 0x85, 0xBE, 0x7B, 0xCA, 0xEA, 0x3D, + 0x97, 0x54, 0xA2, 0x3E, 0xDD, 0xF7, 0xBC, 0x3C, 0x93, 0xF1, 0x0D, 0x3E, + 0x10, 0xBA, 0x93, 0x3D, 0xA0, 0xC4, 0x9D, 0x3D, 0x4B, 0xD6, 0xCE, 0x3B, + 0x0D, 0xA4, 0x7B, 0xBC, 0x4A, 0x15, 0x99, 0x3D, 0x9B, 0xA5, 0xFE, 0xBD, + 0x0E, 0x5E, 0x5E, 0x3E, 0x6B, 0x04, 0xD7, 0x3D, 0x7C, 0x21, 0x00, 0xBE, + 0xF7, 0xAC, 0xB8, 0xBD, 0xF2, 0x90, 0xB4, 0x3D, 0x8A, 0x6C, 0x05, 0x3D, + 0xA7, 0xA4, 0x3B, 0xBD, 0x63, 0xDC, 0x89, 0x3D, 0x67, 0x7C, 0x52, 0xBD, + 0x29, 0x6A, 0x9F, 0xBD, 0x6E, 0x71, 0xAF, 0x3D, 0xB7, 0x34, 0x32, 0xBA, + 0xFB, 0xD6, 0x32, 0x3E, 0x87, 0x5C, 0x1F, 0x3E, 0x4C, 0x17, 0x4A, 0x3D, + 0x52, 0xA9, 0xED, 0x3D, 0xBE, 0xBA, 0x0D, 0xBE, 0x6A, 0x9F, 0x51, 0x3D, + 0x44, 0xA2, 0x2B, 0xBE, 0xF0, 0xAF, 0x50, 0xBE, 0xF8, 0x31, 0xBF, 0x3C, + 0xD3, 0xFD, 0x0B, 0x3C, 0x8F, 0x8C, 0xAC, 0xBD, 0xCB, 0x0D, 0x4B, 0xBC, + 0x99, 0x23, 0x7E, 0xBD, 0x86, 0x48, 0x89, 0x3C, 0xD6, 0x41, 0x73, 0x3D, + 0xE3, 0xAD, 0x2F, 0x3B, 0x3A, 0xE7, 0x85, 0xBD, 0x66, 0x46, 0xC1, 0x3D, + 0x41, 0x79, 0x23, 0xBE, 0x72, 0xF3, 0xA4, 0x3C, 0x43, 0x48, 0x02, 0x3D, + 0x6C, 0x1A, 0x4A, 0x3D, 0x8D, 0xEB, 0x8E, 0xBB, 0x54, 0x36, 0xC7, 0xBC, + 0x91, 0x93, 0x1D, 0xBE, 0x71, 0x38, 0x2C, 0xBD, 0x97, 0x66, 0x74, 0x3D, + 0x56, 0xDF, 0x65, 0xBE, 0xE0, 0x47, 0x22, 0xBC, 0x1A, 0xA5, 0x2D, 0x3D, + 0x2D, 0x4B, 0xD5, 0x3D, 0x1B, 0x4F, 0xCD, 0xBB, 0x16, 0x93, 0x4C, 0xBC, + 0xC4, 0x83, 0xF2, 0x3C, 0xD7, 0x7C, 0x1C, 0xBD, 0xF9, 0x07, 0x54, 0xBC, + 0x19, 0x3F, 0x73, 0x3E, 0x93, 0x81, 0x88, 0xBD, 0x5D, 0x36, 0x39, 0x3E, + 0x80, 0x80, 0x5A, 0x3B, 0x4F, 0xF0, 0xAD, 0xB9, 0xF6, 0x86, 0x13, 0x3E, + 0xA9, 0x0D, 0x19, 0x3B, 0x01, 0x53, 0xA5, 0x3E, 0x3D, 0x7A, 0xF7, 0xBC, + 0x38, 0xF2, 0xA4, 0x3C, 0xD9, 0xE5, 0xC8, 0x3D, 0x5E, 0x98, 0x2A, 0x3C, + 0x07, 0xF9, 0xBF, 0x3C, 0x8C, 0xF4, 0xAE, 0xBD, 0xFC, 0x81, 0xCE, 0xBC, + 0x08, 0xCA, 0xF4, 0x3D, 0x87, 0x38, 0x54, 0xBC, 0xAE, 0x87, 0x11, 0x3D, + 0x1B, 0x82, 0xE2, 0xBC, 0x35, 0xDF, 0xEA, 0xBC, 0x61, 0xB7, 0xDC, 0xBC, + 0xC3, 0x81, 0x11, 0x3D, 0x9F, 0xE4, 0x0D, 0xBD, 0x6B, 0xAA, 0xB0, 0x3D, + 0x53, 0x70, 0x5A, 0x3D, 0xAE, 0xBC, 0x35, 0x39, 0xCE, 0x44, 0xCD, 0x3C, + 0xBD, 0x60, 0x2D, 0xBB, 0xFC, 0x60, 0x6D, 0x3D, 0x2C, 0xD0, 0x02, 0xBE, + 0x0E, 0x39, 0x38, 0x3C, 0x1D, 0xAB, 0xD3, 0x3B, 0xF8, 0x98, 0xC9, 0xBD, + 0x98, 0x14, 0x13, 0x3E, 0x3C, 0x67, 0xC9, 0xBD, 0xAF, 0x9D, 0x05, 0xBC, + 0xC0, 0x72, 0xAE, 0x3D, 0x2C, 0xE5, 0x1E, 0xBE, 0x99, 0x4A, 0x8C, 0xBD, + 0xDA, 0xC9, 0xC3, 0xBE, 0xF1, 0xBC, 0xA2, 0xBC, 0xBA, 0xE5, 0x93, 0x3B, + 0x4A, 0x4A, 0xA2, 0xBD, 0x7B, 0xD6, 0x5D, 0xBD, 0x95, 0xC3, 0x33, 0x3D, + 0x21, 0x78, 0x83, 0x3D, 0xD0, 0x01, 0x5E, 0xBD, 0x40, 0x87, 0x42, 0xBD, + 0x23, 0x96, 0x15, 0x3D, 0x84, 0x22, 0x11, 0xBC, 0xC1, 0xDB, 0x96, 0x3D, + 0x87, 0x73, 0xAA, 0x3C, 0xFC, 0x91, 0x7C, 0x3C, 0xD2, 0x39, 0x27, 0xBD, + 0xEF, 0x79, 0xEA, 0xBC, 0xA4, 0xB8, 0x19, 0x3D, 0x6F, 0x6B, 0xB2, 0xBE, + 0x32, 0xBC, 0x3F, 0x3D, 0x86, 0xD8, 0x83, 0xBD, 0x1E, 0x90, 0xF0, 0x3C, + 0x20, 0x40, 0x4C, 0x3D, 0x8D, 0x8A, 0xF3, 0x3D, 0x04, 0x5D, 0x0A, 0xBD, + 0x2C, 0x25, 0x81, 0x3D, 0x3B, 0x61, 0x62, 0x3D, 0xDA, 0x2B, 0x0E, 0xBD, + 0x54, 0x66, 0x37, 0xBE, 0x33, 0x2B, 0x5D, 0xBD, 0xA9, 0x7B, 0xEC, 0x3C, + 0x61, 0x2F, 0x06, 0xBD, 0xE8, 0x51, 0xE8, 0x3C, 0x72, 0x60, 0x12, 0xBD, + 0x9A, 0x92, 0xEC, 0x3D, 0x01, 0x01, 0x40, 0x3C, 0xB5, 0xC9, 0x16, 0x3D, + 0x82, 0xD9, 0x9E, 0xBD, 0x74, 0x02, 0xE1, 0xBE, 0x23, 0x5C, 0x51, 0x3E, + 0xAF, 0x44, 0xD5, 0xBC, 0x8E, 0xF4, 0x06, 0x3D, 0x10, 0x1B, 0x7F, 0xBE, + 0x13, 0x7D, 0xA9, 0x3D, 0xE6, 0x17, 0x2B, 0x3E, 0xA4, 0x4C, 0x06, 0xBE, + 0xFC, 0xBE, 0xFE, 0xBD, 0x4C, 0x90, 0x01, 0xBD, 0xE6, 0x20, 0x03, 0xBE, + 0x72, 0x40, 0xC5, 0xBD, 0x2B, 0x43, 0xBA, 0xBE, 0xAD, 0xB8, 0xF2, 0xBD, + 0x61, 0xFE, 0xD2, 0xBE, 0x98, 0x05, 0x03, 0xBD, 0x71, 0x11, 0x51, 0x3E, + 0x23, 0x9A, 0x02, 0xBF, 0x4F, 0x07, 0x29, 0x3E, 0xF4, 0x35, 0x51, 0xBB, + 0x1D, 0x8D, 0xB5, 0x3B, 0x7B, 0x44, 0x1F, 0x3D, 0x2E, 0xB9, 0xC0, 0x3B, + 0x00, 0x7C, 0x03, 0x3D, 0x9C, 0xFB, 0xA0, 0xBC, 0x00, 0xBA, 0xB6, 0xBE, + 0x15, 0x00, 0xC9, 0xBD, 0x00, 0x85, 0xEE, 0xBD, 0x35, 0x61, 0x74, 0x3D, + 0xF6, 0x27, 0x34, 0x3B, 0x40, 0x5D, 0x81, 0xBE, 0x44, 0x32, 0x2D, 0x3D, + 0x62, 0x15, 0x88, 0xBD, 0x96, 0x00, 0x3D, 0x3E, 0x5C, 0xF5, 0x9F, 0xBD, + 0x0C, 0x21, 0x30, 0x3D, 0x65, 0x1B, 0xA3, 0xBC, 0xD3, 0xAD, 0xB2, 0xBC, + 0xD7, 0x66, 0x14, 0x3D, 0x6D, 0xEB, 0x04, 0x3E, 0xE4, 0x7F, 0xC5, 0xBC, + 0x38, 0x6A, 0x5D, 0xBD, 0xC5, 0x70, 0x00, 0x3D, 0x95, 0x5F, 0x2D, 0xBC, + 0xF7, 0xCF, 0x1B, 0xBE, 0x59, 0xE4, 0xB8, 0x3D, 0xBD, 0xA1, 0x8A, 0xBB, + 0xE8, 0x6D, 0xD0, 0xBC, 0x4E, 0x5D, 0xDC, 0xBD, 0x43, 0x71, 0x3B, 0x3E, + 0x57, 0x0A, 0xA7, 0xBC, 0x5C, 0x85, 0x35, 0xBC, 0xEC, 0xB6, 0x74, 0x3D, + 0x1F, 0x5A, 0xBC, 0xBD, 0x1D, 0xB8, 0x85, 0xBD, 0xF5, 0x85, 0xAB, 0xBC, + 0x0F, 0x15, 0xA4, 0xBC, 0xE4, 0xC7, 0x08, 0x3E, 0xD5, 0x2F, 0xCC, 0x3D, + 0xC1, 0x3E, 0x17, 0x3E, 0x2B, 0x8F, 0xDF, 0x3D, 0x37, 0xD2, 0x9A, 0xBD, + 0x04, 0x1A, 0x4B, 0x3D, 0x72, 0x2F, 0xF0, 0x3B, 0x54, 0xA3, 0x60, 0xBD, + 0x67, 0x85, 0x96, 0xBD, 0x6D, 0x4B, 0xBC, 0xBC, 0x7E, 0xE9, 0x87, 0x3D, + 0x8E, 0xD5, 0x7C, 0x3B, 0x9F, 0x4F, 0xB5, 0x3C, 0x0F, 0xB8, 0xD4, 0xBC, + 0xED, 0x8E, 0x83, 0xBC, 0xDE, 0xB3, 0x55, 0x3C, 0x1C, 0x67, 0x65, 0x3B, + 0x7C, 0xB8, 0x01, 0xBB, 0x34, 0xB1, 0x4B, 0xBD, 0x9E, 0xC9, 0xFC, 0x3D, + 0x32, 0xA9, 0x4A, 0x3B, 0xD0, 0xA0, 0xCA, 0x3D, 0xAF, 0xE8, 0x0A, 0x3C, + 0x01, 0x17, 0x80, 0xBC, 0x0E, 0xE5, 0x11, 0xBD, 0xC4, 0x41, 0x1D, 0x3D, + 0xE3, 0x90, 0x00, 0xBD, 0x61, 0x2B, 0x2B, 0xBD, 0x66, 0x6D, 0x02, 0x3D, + 0xE0, 0xCB, 0x27, 0x3D, 0xEC, 0x0A, 0x46, 0x3C, 0xE2, 0xE0, 0xF0, 0x3B, + 0xB8, 0x74, 0x2C, 0xBD, 0x7A, 0x5F, 0x24, 0xBD, 0x85, 0x68, 0x38, 0x3E, + 0x7C, 0x73, 0x03, 0x3D, 0xF9, 0xE3, 0x3F, 0xBC, 0x63, 0x7E, 0xA6, 0xBE, + 0xC6, 0xDB, 0x5B, 0x3E, 0x19, 0x95, 0xBA, 0x3B, 0x41, 0x6D, 0x6D, 0x3E, + 0x03, 0xDE, 0x76, 0xBC, 0x64, 0xED, 0x0C, 0x3E, 0x43, 0x60, 0x7C, 0x3E, + 0xD7, 0xCD, 0x3D, 0xBE, 0x79, 0xD7, 0x99, 0x3E, 0xD1, 0xA0, 0xA7, 0xBE, + 0xEB, 0x0F, 0xE1, 0xBE, 0x67, 0xD3, 0x08, 0xBD, 0x9D, 0x28, 0xB4, 0x3C, + 0x3E, 0xD8, 0x17, 0xBD, 0xFA, 0xAD, 0xF2, 0x3E, 0x6A, 0x4D, 0x11, 0xBF, + 0x43, 0x3B, 0x93, 0x3E, 0x1B, 0xE8, 0x88, 0xBD, 0x34, 0x6E, 0x0D, 0xBF, + 0xB3, 0x7E, 0xBD, 0xBD, 0x5C, 0xDB, 0x6D, 0xBE, 0x47, 0xB6, 0xCE, 0xBC, + 0x69, 0xC4, 0x3B, 0x3F, 0x2B, 0x65, 0x60, 0x3D, 0xF3, 0x81, 0x19, 0x3E, + 0x0E, 0x78, 0x89, 0xBD, 0x46, 0x56, 0x42, 0xBE, 0xB4, 0x72, 0xDD, 0x3C, + 0xB6, 0xE4, 0x89, 0xBD, 0x39, 0xC2, 0x8F, 0xBE, 0x8C, 0xC9, 0x3C, 0xBF, + 0xF4, 0xB4, 0x9F, 0x3D, 0xEC, 0xC1, 0x28, 0x3F, 0xBA, 0xF2, 0x5F, 0x3D, + 0xDA, 0xD9, 0xA8, 0x3E, 0x0F, 0xED, 0x31, 0xBE, 0x42, 0xCB, 0x2E, 0x3B, + 0x87, 0x5C, 0x95, 0x3D, 0xAA, 0x6C, 0x8F, 0x3E, 0x28, 0xE0, 0x27, 0x3E, + 0x45, 0x08, 0xB6, 0x3D, 0xFA, 0x71, 0x54, 0xBE, 0x3F, 0x44, 0xB5, 0x3D, + 0x1D, 0x7E, 0x55, 0xBC, 0xEE, 0xF6, 0x24, 0xBC, 0xEF, 0x80, 0x2A, 0x3E, + 0x74, 0xE4, 0xE7, 0xBE, 0xB6, 0x1B, 0x1D, 0x3D, 0xC5, 0x18, 0x1A, 0xBD, + 0x41, 0xF5, 0x67, 0xBC, 0xB9, 0x20, 0x43, 0x3F, 0x59, 0x56, 0x12, 0xBE, + 0x1F, 0x0F, 0xB4, 0x3D, 0x81, 0x9C, 0x7D, 0x3C, 0x14, 0x72, 0x0B, 0x3E, + 0x2B, 0x88, 0x34, 0xBE, 0xF8, 0x32, 0x88, 0xBE, 0xE6, 0x91, 0xE2, 0x3D, + 0xE0, 0x4E, 0xFC, 0x3D, 0x0D, 0x74, 0x1B, 0xBF, 0xE6, 0xA6, 0xF7, 0x3C, + 0xE8, 0x52, 0x2B, 0xBE, 0x4D, 0x28, 0x40, 0xBD, 0x3A, 0x6F, 0x1F, 0x3D, + 0xE7, 0xC4, 0xA4, 0x3D, 0x3A, 0x3D, 0xA3, 0x3C, 0x7F, 0xC0, 0x61, 0xBE, + 0xB3, 0xA8, 0x39, 0x3E, 0x1D, 0xB3, 0xAA, 0xBD, 0xE5, 0x53, 0xE4, 0x3C, + 0xDC, 0xF4, 0x09, 0x3D, 0x27, 0xAE, 0xAC, 0x3E, 0x35, 0x58, 0xC2, 0xBD, + 0x56, 0x22, 0xDE, 0xBD, 0x8B, 0x81, 0x30, 0x3D, 0xC0, 0x46, 0x26, 0xBD, + 0x6E, 0xA9, 0x3A, 0x3E, 0xCA, 0x41, 0xF5, 0x3E, 0x9E, 0x21, 0x83, 0xBE, + 0x4D, 0x85, 0xAE, 0xBC, 0x85, 0x55, 0x22, 0x3E, 0x46, 0x39, 0x35, 0xBD, + 0xBB, 0x9D, 0x96, 0x3E, 0x6F, 0x2A, 0x99, 0xBE, 0x00, 0xCE, 0xE7, 0x3D, + 0x55, 0x3B, 0x92, 0x3D, 0x51, 0x32, 0x02, 0x3E, 0x54, 0xC3, 0x83, 0xBE, + 0xC8, 0x07, 0x38, 0xBE, 0x61, 0x52, 0xEA, 0xBC, 0x94, 0xE3, 0x12, 0x3E, + 0x65, 0x41, 0x51, 0x3E, 0xC0, 0x65, 0x31, 0xBE, 0x70, 0xA5, 0x43, 0x3F, + 0xA1, 0xF2, 0x61, 0xBC, 0xBD, 0x52, 0x24, 0xBD, 0x17, 0xDB, 0x37, 0x3F, + 0x12, 0x9D, 0x43, 0xBD, 0x05, 0xA3, 0x6C, 0xBF, 0xEB, 0x76, 0xA4, 0x3F, + 0x7B, 0x18, 0xE2, 0xBB, 0xF9, 0x25, 0x85, 0x3E, 0x3A, 0x7D, 0x0E, 0xBF, + 0x34, 0x36, 0x4B, 0x3E, 0x96, 0xAD, 0xCA, 0xBF, 0xB6, 0x29, 0xA1, 0x3E, + 0x54, 0x17, 0x92, 0xBD, 0x01, 0xEB, 0xBF, 0x3B, 0xB2, 0x25, 0x16, 0x3F, + 0x01, 0xF9, 0x0A, 0xBF, 0x09, 0x0F, 0x95, 0x3F, 0x63, 0x8B, 0x1E, 0xBE, + 0x83, 0x1F, 0x43, 0xBE, 0x0F, 0xDF, 0x55, 0x3D, 0x4B, 0x6A, 0x81, 0xBF, + 0x9F, 0xEA, 0xE2, 0x3D, 0xDD, 0xAF, 0x29, 0x3E, 0xA8, 0xC9, 0x04, 0x3E, + 0x26, 0x71, 0x62, 0xBF, 0xAA, 0x65, 0x04, 0x3E, 0x7A, 0x70, 0x96, 0x3F, + 0x69, 0x59, 0xD3, 0x3E, 0xC0, 0x29, 0x06, 0x3F, 0x44, 0x94, 0x66, 0xBF, + 0x7D, 0x17, 0xA4, 0x3D, 0xAA, 0x91, 0x69, 0x3D, 0x09, 0x7B, 0x86, 0xBF, + 0x8B, 0x2D, 0x88, 0xBE, 0xBF, 0x42, 0x82, 0xBE, 0xBD, 0x4C, 0x49, 0x3E, + 0x6E, 0x93, 0x86, 0xBE, 0xE1, 0x5B, 0x6D, 0x3F, 0x98, 0x80, 0xE9, 0x3E, + 0xB4, 0x75, 0xB1, 0x3E, 0xC1, 0xB7, 0x02, 0x3F, 0x6D, 0xE4, 0x34, 0xBE, + 0x57, 0x0B, 0xA8, 0x3D, 0xAD, 0x94, 0x93, 0xBE, 0x72, 0xA7, 0x73, 0xBF, + 0xB7, 0x70, 0x38, 0xBE, 0xAE, 0x1D, 0x17, 0x3F, 0x55, 0x51, 0x9E, 0xBF, + 0xEF, 0xAF, 0xF6, 0x3E, 0x7E, 0x0F, 0xD0, 0x3D, 0x69, 0x9D, 0x84, 0x3E, + 0xC5, 0x64, 0x21, 0xBE, 0x1F, 0xFC, 0x5E, 0x3C, 0x1F, 0x9D, 0x44, 0x3E, + 0x74, 0x60, 0xAD, 0xBE, 0xF0, 0x0D, 0x88, 0x3C, 0x3A, 0x2A, 0x81, 0x3F, + 0xE2, 0x9E, 0x3B, 0x3F, 0x3E, 0xEC, 0x1B, 0x3F, 0xB7, 0x26, 0x12, 0xBB, + 0x80, 0xCB, 0xFC, 0xBE, 0x7C, 0xEC, 0x15, 0xBF, 0xAB, 0xD9, 0x04, 0xBF, + 0xE2, 0x45, 0xB9, 0xBE, 0xCD, 0xFD, 0x81, 0xBD, 0x03, 0x67, 0x89, 0xBE, + 0x08, 0x55, 0x5D, 0x3D, 0x8B, 0x47, 0x76, 0xBD, 0xA6, 0xDF, 0xF0, 0xBE, + 0xDD, 0x58, 0xC8, 0x3E, 0x66, 0x59, 0x9B, 0xBD, 0x1B, 0x40, 0x53, 0x3D, + 0x42, 0xAA, 0xEE, 0xBD, 0xD5, 0x40, 0x71, 0xBE, 0x5B, 0xB6, 0xFF, 0x3C, + 0x0E, 0x74, 0x00, 0xBE, 0xF9, 0x1D, 0x89, 0xBE, 0xA3, 0x06, 0xB3, 0x3C, + 0x93, 0x98, 0x10, 0xBE, 0x7D, 0x38, 0x65, 0xBD, 0x11, 0xA7, 0xA9, 0xBE, + 0xE7, 0x90, 0x69, 0xBD, 0x6A, 0xE4, 0x8A, 0xBE, 0xA3, 0xC1, 0xA6, 0x3C, + 0xDA, 0xB2, 0x3A, 0xBE, 0xF6, 0x89, 0x83, 0x3E, 0x07, 0x1E, 0xD7, 0xBD, + 0xF7, 0x74, 0x57, 0xBD, 0x23, 0xAE, 0x9A, 0x3E, 0x3A, 0x5A, 0x10, 0xBE, + 0x51, 0x38, 0x14, 0x3E, 0xCB, 0xD6, 0x38, 0x3E, 0x54, 0x9F, 0x93, 0xBC, + 0x64, 0x2C, 0x64, 0xBE, 0xD0, 0x1D, 0x9B, 0x3D, 0xA8, 0xAE, 0x19, 0xBD, + 0x5E, 0x4D, 0x8D, 0x3D, 0x96, 0xEC, 0x19, 0xBE, 0xF2, 0x66, 0x09, 0xBD, + 0x1B, 0x7A, 0x99, 0xBC, 0x06, 0xAA, 0xF2, 0x3D, 0x40, 0x16, 0x2B, 0x3C, + 0x4B, 0x78, 0x21, 0xBD, 0x73, 0xA2, 0xBA, 0xBC, 0xDC, 0x6B, 0xC4, 0x3A, + 0x49, 0x7F, 0x6E, 0xBC, 0xEE, 0x8E, 0xCC, 0xBB, 0x74, 0xB2, 0xA0, 0x3C, + 0x64, 0x54, 0x60, 0xBD, 0x83, 0x84, 0x3C, 0x3C, 0xDC, 0xBF, 0x37, 0xBD, + 0x2E, 0xD5, 0x7E, 0xBB, 0xBE, 0x8E, 0xB7, 0x3D, 0x8C, 0x85, 0x20, 0x3C, + 0x1B, 0x85, 0x13, 0x3D, 0xDE, 0x2A, 0xC9, 0x3B, 0xC8, 0xF0, 0xCA, 0x3B, + 0xC7, 0xC6, 0x27, 0x3D, 0xEC, 0xCD, 0x78, 0x3C, 0x5E, 0x6A, 0xC0, 0x3C, + 0x03, 0xAA, 0x04, 0xBD, 0x95, 0x56, 0x8C, 0x3D, 0xEE, 0x17, 0x26, 0xBD, + 0x8E, 0xB1, 0xD2, 0xBD, 0xD9, 0x1F, 0x09, 0x3D, 0xFD, 0xEF, 0xB5, 0xBD, + 0x2C, 0x75, 0x31, 0xBD, 0x6E, 0xBA, 0x02, 0x3E, 0x70, 0x3B, 0x82, 0x3D, + 0x41, 0x56, 0x83, 0x3D, 0x13, 0x97, 0xA1, 0xBD, 0xF1, 0xBD, 0x74, 0x3B, + 0x76, 0x58, 0x48, 0x3D, 0xAA, 0xA9, 0x02, 0x3D, 0xFD, 0x13, 0x63, 0xBC, + 0xEB, 0xA1, 0xAE, 0x3C, 0x57, 0xDB, 0xA9, 0x3B, 0x66, 0x9C, 0xA3, 0x39, + 0xB9, 0xE2, 0x2F, 0xBD, 0x9B, 0x0F, 0xF7, 0x3C, 0xB3, 0xB2, 0xE0, 0xBB, + 0x17, 0xA6, 0xD6, 0xBB, 0x85, 0x26, 0x16, 0x3C, 0xE4, 0xE0, 0xC6, 0xBC, + 0x77, 0xF2, 0x70, 0x3D, 0xF6, 0x9B, 0x26, 0x3C, 0xFA, 0xC8, 0x8F, 0x3B, + 0x2A, 0x1E, 0x67, 0x3C, 0xBB, 0x9D, 0x46, 0xBA, 0x35, 0x4D, 0x06, 0x3D, + 0x90, 0xE9, 0xB0, 0x3C, 0x49, 0xAF, 0xC0, 0xBC, 0x5F, 0x31, 0x14, 0xBC, + 0x7F, 0x9C, 0x1E, 0x3C, 0x6F, 0x85, 0xFB, 0x3C, 0x93, 0x30, 0xB0, 0xBC, + 0x47, 0xFA, 0x0A, 0xBD, 0x78, 0x41, 0x4E, 0x3D, 0xD3, 0x04, 0x09, 0x3C, + 0x38, 0xDA, 0x15, 0x3F, 0xB9, 0x07, 0xB8, 0xBB, 0xC3, 0xA3, 0xB9, 0xBC, + 0xCE, 0xB0, 0x80, 0x3D, 0x99, 0xCE, 0x2E, 0x3C, 0xDA, 0xDA, 0x33, 0xBC, + 0xC1, 0x96, 0xD8, 0xBD, 0x61, 0xFE, 0x3B, 0xBC, 0xE4, 0x3E, 0x80, 0x3D, + 0x05, 0x49, 0x10, 0x3D, 0xFB, 0x8F, 0x99, 0x3D, 0xD1, 0x41, 0xE5, 0xBC, + 0x63, 0x71, 0x86, 0xBD, 0x2C, 0xA4, 0x3C, 0x3C, 0x2B, 0x64, 0xE5, 0x3C, + 0x9A, 0x12, 0x2C, 0x3C, 0x2F, 0x5E, 0x48, 0x3E, 0xEA, 0xDE, 0xC7, 0x3D, + 0x35, 0x7C, 0xC1, 0xBC, 0xAF, 0x2C, 0x04, 0x3D, 0xCF, 0x3B, 0x6E, 0xBC, + 0xB8, 0x46, 0xDA, 0x3C, 0xE3, 0xE0, 0x0D, 0xBE, 0x1D, 0xC0, 0x20, 0x3D, + 0x43, 0xA9, 0x89, 0xBC, 0x48, 0x72, 0x34, 0xBC, 0xE8, 0x5F, 0x86, 0x3D, + 0x5B, 0x8C, 0xBA, 0xBB, 0x59, 0x47, 0x30, 0x3D, 0xBF, 0x52, 0xC3, 0x3B, + 0xA0, 0xD2, 0x35, 0xBD, 0x4E, 0x52, 0x1E, 0xBD, 0x79, 0x76, 0x06, 0x3E, + 0xB1, 0x73, 0x1E, 0xBD, 0xBA, 0xAF, 0x3A, 0xBD, 0x3F, 0x53, 0x70, 0xBB, + 0x3D, 0x7C, 0x25, 0x3C, 0x14, 0x6A, 0xA2, 0x3D, 0x20, 0xA4, 0x91, 0xBD, + 0x18, 0x0E, 0xD2, 0x3B, 0xBF, 0xA0, 0x07, 0xBD, 0x2E, 0x32, 0x49, 0x3D, + 0xF5, 0x70, 0xCE, 0x3D, 0x03, 0x8E, 0x81, 0xBD, 0xDF, 0x9C, 0x8F, 0xBD, + 0x5B, 0x48, 0x0A, 0xBC, 0xFE, 0x61, 0xCD, 0x3B, 0x25, 0x21, 0xC6, 0x3C, + 0xF6, 0x1F, 0x5A, 0x3E, 0x30, 0x17, 0x24, 0x3E, 0xDF, 0xB5, 0x1E, 0xBC, + 0xA5, 0xE5, 0xB8, 0x3D, 0x3B, 0x2B, 0x73, 0x3B, 0x29, 0x5A, 0x0A, 0xBC, + 0x53, 0x79, 0x27, 0xBD, 0x5D, 0xE3, 0x3F, 0x3D, 0x52, 0x5A, 0x62, 0x3D, + 0x6C, 0x8A, 0xCE, 0x3C, 0xC2, 0xF0, 0xC8, 0x3B, 0xB6, 0x05, 0xC6, 0xBB, + 0x8B, 0xC1, 0x36, 0xBD, 0x08, 0x36, 0xC9, 0xBC, 0xBC, 0xDB, 0xA8, 0xBD, + 0x6A, 0x2B, 0x75, 0xBD, 0x53, 0x89, 0xB2, 0x3E, 0x69, 0x29, 0xAC, 0xBD, + 0x69, 0x3B, 0xC5, 0x3D, 0x11, 0x18, 0x79, 0x3D, 0x7F, 0x49, 0xA2, 0xBD, + 0x1F, 0xB0, 0x2C, 0xBD, 0x52, 0x10, 0x90, 0xBE, 0x20, 0x0F, 0x49, 0x3C, + 0x61, 0x7D, 0x07, 0x3D, 0xE5, 0xCC, 0x04, 0x3C, 0xC3, 0xE6, 0x9B, 0x3D, + 0x41, 0x58, 0x98, 0x3C, 0x1C, 0x91, 0x70, 0x3E, 0xE9, 0xB3, 0xDC, 0x3D, + 0xBE, 0xC7, 0x26, 0xBC, 0x7A, 0xF7, 0x43, 0xBD, 0x21, 0x70, 0x25, 0x3E, + 0x0A, 0x22, 0x47, 0xBD, 0xF7, 0x53, 0xBC, 0xBD, 0x5D, 0x49, 0x79, 0xBE, + 0xD7, 0xEA, 0x8C, 0xBC, 0x84, 0x81, 0x9F, 0x3D, 0x01, 0x81, 0xC5, 0x3D, + 0x4A, 0x34, 0xF8, 0x3D, 0xE7, 0x72, 0x7F, 0x3C, 0x8A, 0xE8, 0x82, 0x3E, + 0xF2, 0x3A, 0xEE, 0x3D, 0x1E, 0xC8, 0x4E, 0x3E, 0xBB, 0xB7, 0x45, 0x3B, + 0x2B, 0x2C, 0x1A, 0x3D, 0x62, 0xD8, 0x49, 0xBF, 0x3F, 0xA4, 0x0B, 0xBB, + 0x6F, 0xAE, 0xC8, 0x3D, 0x24, 0x87, 0x8A, 0x3E, 0xFF, 0xDA, 0x35, 0x3D, + 0x3F, 0x7B, 0xFB, 0x3E, 0x36, 0x0B, 0xFA, 0xBD, 0xC8, 0x11, 0xFE, 0x3E, + 0x0A, 0x96, 0x23, 0xBF, 0x1F, 0x3F, 0xD0, 0x3D, 0x76, 0xCD, 0x9E, 0xBD, + 0xCE, 0x72, 0xB0, 0x3D, 0x0B, 0x3B, 0x99, 0x3E, 0x7A, 0xBB, 0x17, 0xBE, + 0x50, 0xDD, 0x18, 0xBE, 0xBA, 0x1C, 0x84, 0x3F, 0xF0, 0x79, 0x66, 0xB9, + 0x7C, 0x56, 0xCB, 0x3D, 0x9C, 0xF3, 0x0B, 0x3E, 0xA7, 0xD4, 0x2D, 0x3B, + 0xD5, 0xF3, 0x42, 0x3D, 0x74, 0x0C, 0x14, 0x3F, 0x72, 0xE1, 0x90, 0x3A, + 0x69, 0x35, 0x57, 0x3F, 0x32, 0x76, 0x93, 0xBE, 0x5D, 0x21, 0x06, 0x3E, + 0x99, 0xD0, 0x97, 0x3D, 0x4C, 0x7C, 0xA3, 0xBC, 0xCE, 0xD3, 0xDB, 0x3D, + 0x23, 0x41, 0xEB, 0xBD, 0xB2, 0x7D, 0x25, 0xBE, 0x88, 0xF7, 0x05, 0x3E, + 0xE0, 0x8F, 0xA1, 0xBE, 0x57, 0x29, 0x38, 0x3D, 0xF6, 0xAD, 0x71, 0xBF, + 0x16, 0xFE, 0x1E, 0xBE, 0x64, 0x5F, 0x87, 0x3E, 0x05, 0x15, 0xAF, 0x3D, + 0x54, 0x9C, 0xEE, 0x3E, 0xFA, 0xAC, 0xD9, 0xBE, 0x12, 0x1F, 0x9A, 0xBE, + 0x64, 0x3E, 0xD0, 0x3D, 0x06, 0x58, 0x9B, 0x3E, 0xAA, 0xD7, 0x07, 0xBF, + 0x84, 0xC2, 0x74, 0xBE, 0xBE, 0x66, 0x17, 0x3F, 0x18, 0xE4, 0xF2, 0x3D, + 0x81, 0x11, 0x22, 0x3E, 0xD9, 0xC2, 0x19, 0xBE, 0xAC, 0x3E, 0x50, 0x3E, + 0x1C, 0xC8, 0x67, 0xBF, 0x87, 0x37, 0xD6, 0x3C, 0x4E, 0x5C, 0xAD, 0xBE, + 0xF3, 0x7C, 0x19, 0x3F, 0xD6, 0xEC, 0x13, 0xBE, 0x68, 0xE0, 0xA7, 0x3E, + 0xB7, 0x69, 0x08, 0xBF, 0x71, 0xB9, 0xA9, 0x3C, 0x16, 0xFD, 0x3D, 0xBE, + 0xBB, 0x15, 0x98, 0xBE, 0x1C, 0xDC, 0x30, 0x3F, 0x51, 0xA0, 0x56, 0x3E, + 0xC9, 0xAA, 0x18, 0x3E, 0x32, 0x5F, 0x00, 0x3E, 0x8D, 0x32, 0x56, 0x3F, + 0x44, 0x8F, 0xF2, 0xBD, 0x37, 0xCB, 0x50, 0xBF, 0xBF, 0xDD, 0xAD, 0xBF, + 0xAC, 0xEE, 0x18, 0xBF, 0x03, 0x0F, 0x0F, 0x3E, 0x54, 0x83, 0x20, 0xBB, + 0x0E, 0x9C, 0x0C, 0xBD, 0x07, 0x12, 0xA0, 0xBD, 0xC8, 0xF9, 0xCA, 0x3C, + 0xD7, 0x39, 0x2D, 0x3D, 0x67, 0x6C, 0x1B, 0x3D, 0xA6, 0xCB, 0x03, 0x3D, + 0xAA, 0x70, 0x1C, 0xBD, 0xC6, 0xD2, 0x51, 0xBD, 0x29, 0x9A, 0x4D, 0x3D, + 0xE1, 0x2F, 0x80, 0x3C, 0x51, 0x39, 0xD8, 0x3B, 0x6D, 0x68, 0x65, 0x3D, + 0x1A, 0x22, 0xA5, 0x3D, 0x7E, 0x4F, 0x4D, 0xBD, 0x72, 0x9F, 0x9F, 0x3C, + 0x9A, 0x14, 0x1A, 0x3B, 0xCB, 0xBD, 0x37, 0x3D, 0x21, 0x1D, 0x96, 0xBD, + 0x04, 0x73, 0x9A, 0x3C, 0xD5, 0xF9, 0x59, 0x3C, 0xB6, 0x90, 0xFE, 0xBC, + 0xC3, 0x70, 0x15, 0x3C, 0x3E, 0xEA, 0x70, 0x3D, 0x73, 0xCE, 0xF0, 0x3C, + 0x8E, 0x92, 0x38, 0x3B, 0x00, 0x9F, 0xDE, 0xBD, 0xAC, 0x3D, 0xEF, 0xBA, + 0x9A, 0xCE, 0x0A, 0x3F, 0x1D, 0xB6, 0x0C, 0xBD, 0x36, 0x69, 0xF3, 0xBC, + 0xA1, 0xED, 0x6C, 0x3E, 0x53, 0x5E, 0x42, 0xBB, 0xA3, 0xB5, 0x92, 0x3E, + 0x80, 0x85, 0xC7, 0xBE, 0xC9, 0x26, 0x71, 0x3C, 0x84, 0x0D, 0xCF, 0x3D, + 0xEF, 0x21, 0x51, 0xBD, 0x2A, 0x8B, 0x80, 0x3D, 0x37, 0x08, 0x74, 0x3D, + 0xAE, 0x9D, 0xA0, 0xBD, 0x74, 0x62, 0x27, 0x3E, 0xAA, 0xC5, 0x4D, 0x3C, + 0xF1, 0xD5, 0xE2, 0xBB, 0xA2, 0xFC, 0x5C, 0xBE, 0x7C, 0x2E, 0x0A, 0xBF, + 0x2A, 0x9F, 0xCA, 0x3E, 0x46, 0x54, 0x88, 0xBD, 0x57, 0xF7, 0x00, 0x3C, + 0x42, 0x2C, 0xFE, 0x3D, 0xA1, 0x63, 0x87, 0xBE, 0xFA, 0x2B, 0x97, 0x3B, + 0xCF, 0xC0, 0xBC, 0x3C, 0x80, 0x88, 0xBA, 0x3D, 0x1C, 0xF9, 0xD5, 0xBD, + 0x07, 0xA7, 0x92, 0xBE, 0x35, 0xB0, 0x4D, 0x3E, 0xAB, 0xA1, 0x07, 0x3C, + 0x7B, 0x9F, 0x9D, 0xBE, 0x23, 0x95, 0x94, 0x3D, 0x57, 0xF7, 0x87, 0xBF, + 0x4E, 0x56, 0x27, 0xBD, 0x69, 0x59, 0x0C, 0x3D, 0x84, 0xF0, 0x71, 0x3E, + 0xED, 0x83, 0x67, 0x3E, 0x8D, 0xBD, 0x7A, 0xBD, 0xC6, 0xDD, 0xBC, 0x3E, + 0xBD, 0xB6, 0xB0, 0x3E, 0x53, 0xA1, 0x6F, 0xBF, 0xCE, 0x85, 0x11, 0xBE, + 0x4D, 0x22, 0xFB, 0xBD, 0x1B, 0xCF, 0x05, 0xBF, 0x76, 0x39, 0x88, 0xBC, + 0xDA, 0x47, 0x92, 0xBE, 0xAA, 0xCE, 0xB5, 0x3E, 0x4B, 0x4D, 0xE6, 0xBD, + 0xF3, 0xB7, 0x88, 0x3F, 0x20, 0xB8, 0x90, 0x3F, 0xE4, 0x2C, 0x48, 0x3D, + 0x85, 0xAF, 0xE5, 0xBE, 0x1D, 0x7E, 0x96, 0x3E, 0x5F, 0xAF, 0x09, 0x3F, + 0x2E, 0x93, 0xBE, 0x3E, 0xD6, 0x0C, 0x48, 0xBF, 0xD4, 0x77, 0x82, 0x3E, + 0x98, 0xE2, 0xBB, 0xBE, 0x25, 0x72, 0xF0, 0xBD, 0xD7, 0x6F, 0x19, 0x3F, + 0x12, 0xA2, 0xAE, 0xBE, 0x05, 0x60, 0x77, 0x3E, 0x71, 0x12, 0xA7, 0xBE, + 0xE0, 0x57, 0x62, 0xBC, 0x18, 0xCB, 0x9A, 0xBF, 0x7A, 0xC5, 0xCF, 0xBE, + 0x17, 0x9F, 0xF3, 0xBE, 0x24, 0x0E, 0x1E, 0x3E, 0x48, 0x6A, 0xC6, 0xBD, + 0x8F, 0x75, 0x22, 0x3E, 0xB8, 0xF9, 0xF3, 0xBD, 0x34, 0xE6, 0x3C, 0x3D, + 0x7A, 0x91, 0xE4, 0xBC, 0x05, 0xF4, 0x0A, 0x3D, 0xE1, 0xEE, 0x5E, 0xBD, + 0x30, 0xFD, 0x14, 0xBD, 0x28, 0x8B, 0xB1, 0xBD, 0xE6, 0xE4, 0xBC, 0x3D, + 0xEE, 0x4C, 0x2E, 0xBD, 0x58, 0x71, 0x81, 0xBD, 0xE2, 0x71, 0xD0, 0x3B, + 0xE9, 0xCE, 0x7F, 0xBD, 0x4F, 0x40, 0x99, 0xBD, 0x6B, 0x04, 0xF8, 0xBC, + 0xDB, 0xAE, 0x04, 0x3D, 0x5A, 0x2F, 0x13, 0x3E, 0xE6, 0x9A, 0x17, 0xBC, + 0x64, 0x2B, 0x78, 0x3A, 0x42, 0x6B, 0x3D, 0x3C, 0x00, 0x03, 0x48, 0xBD, + 0xCD, 0xC0, 0xFD, 0xBB, 0x2E, 0x8F, 0xC7, 0x3C, 0x38, 0x94, 0x86, 0xBC, + 0xAA, 0x8B, 0x5E, 0x3D, 0x47, 0x0F, 0x6C, 0xBE, 0xC3, 0xD2, 0xD8, 0x3C, + 0x4A, 0x5A, 0xE7, 0xBC, 0x6B, 0xEB, 0x17, 0x3D, 0x21, 0x60, 0xF5, 0xBB, + 0x12, 0x8E, 0xB4, 0xBD, 0x25, 0x87, 0xE0, 0x3C, 0x9C, 0x37, 0x6B, 0xBD, + 0xCC, 0xF2, 0x9D, 0x3D, 0xC9, 0x36, 0x03, 0xBD, 0xF3, 0x7A, 0x86, 0x3D, + 0x76, 0xA1, 0x1C, 0x3C, 0x0C, 0xDF, 0x4E, 0x3D, 0xB9, 0x59, 0x87, 0x3C, + 0x9B, 0x32, 0xE6, 0xBA, 0xC9, 0x74, 0x8C, 0xBC, 0xB9, 0x0C, 0x90, 0x3C, + 0xE7, 0xE8, 0x01, 0xBC, 0x94, 0x3E, 0x63, 0xBE, 0xE2, 0x52, 0xF9, 0x3C, + 0x70, 0xB7, 0x80, 0xBC, 0x31, 0xA3, 0x3B, 0x3B, 0x43, 0x05, 0x52, 0xBB, + 0x6F, 0xA1, 0x33, 0xBD, 0x0D, 0x29, 0x75, 0xBD, 0x9A, 0x35, 0x89, 0x3C, + 0x4E, 0x1C, 0xA4, 0xBD, 0x7D, 0xBA, 0x12, 0xBE, 0x02, 0xAC, 0xB9, 0x3D, + 0xAF, 0xDB, 0x48, 0xBD, 0x89, 0x44, 0x6A, 0x3D, 0x42, 0x7C, 0x06, 0xBD, + 0xD9, 0x93, 0x69, 0x3E, 0x82, 0x59, 0x30, 0xBD, 0x07, 0x56, 0xC0, 0xBE, + 0x31, 0xB9, 0xB2, 0xBC, 0xA6, 0xDD, 0x67, 0xBC, 0x7A, 0xE9, 0xB6, 0xBD, + 0xEF, 0x2F, 0x13, 0xBC, 0x69, 0x04, 0xB5, 0xBE, 0x8B, 0xD4, 0x41, 0xBD, + 0xBD, 0x1E, 0x5C, 0x3D, 0xF5, 0xFA, 0x98, 0xBD, 0x83, 0x9A, 0xC3, 0x3D, + 0xC7, 0x50, 0xAD, 0x3D, 0x1F, 0x9E, 0x36, 0xBD, 0x27, 0x94, 0xD5, 0x3D, + 0x02, 0xD0, 0xE1, 0x3D, 0x19, 0xA4, 0x2B, 0xBD, 0x69, 0xAA, 0xF3, 0xBD, + 0x59, 0xE9, 0x4C, 0xBF, 0xFC, 0x29, 0x2D, 0x3F, 0xA1, 0xFD, 0x1E, 0xBD, + 0x0F, 0x28, 0xFE, 0x3D, 0x1B, 0x93, 0x00, 0xBC, 0xD2, 0x9D, 0x3E, 0xBE, + 0x37, 0x8A, 0xA2, 0x3E, 0x9D, 0xC7, 0xB0, 0xBD, 0x20, 0xB9, 0x6E, 0x3D, + 0xF4, 0xB6, 0x0D, 0xBC, 0xB8, 0xC4, 0x13, 0xBE, 0x6C, 0x38, 0xCB, 0xBC, + 0x80, 0x9A, 0x37, 0x3D, 0x8A, 0x4C, 0x0E, 0x3E, 0x97, 0xB8, 0xE2, 0x3E, + 0x86, 0x47, 0x17, 0x3E, 0xD1, 0x24, 0x69, 0x3D, 0x99, 0xCB, 0x0A, 0xBD, + 0xE7, 0xAC, 0x3C, 0xBD, 0x1D, 0x0A, 0x24, 0x3F, 0xDB, 0x6C, 0xD2, 0x3E, + 0x59, 0x78, 0x13, 0x3F, 0xF7, 0x6D, 0x33, 0xBF, 0xFC, 0x7F, 0x56, 0x3D, + 0x4E, 0x7D, 0x94, 0x3E, 0x7B, 0x05, 0x58, 0x3F, 0x0D, 0xA7, 0x80, 0xBF, + 0x7C, 0x4A, 0x31, 0x3D, 0xFA, 0x1B, 0x37, 0xBE, 0x4F, 0x30, 0x90, 0x3E, + 0xC2, 0xAE, 0xBE, 0xBE, 0xC3, 0xEB, 0x6A, 0x3E, 0xD1, 0xE2, 0x1C, 0xC0, + 0x8B, 0x15, 0x05, 0x3E, 0x46, 0x27, 0x5F, 0x3F, 0x23, 0xF2, 0x9C, 0xBE, + 0x99, 0x4F, 0x70, 0xBE, 0xB3, 0xCD, 0xB0, 0x3E, 0x5F, 0xD7, 0x86, 0x3E, + 0xF4, 0x4D, 0x15, 0x3D, 0xFE, 0xBD, 0xAA, 0xBE, 0x77, 0xD6, 0x60, 0x3E, + 0x4E, 0x28, 0xB2, 0xBE, 0x9D, 0xFB, 0x82, 0x3E, 0x62, 0x81, 0x05, 0xBD, + 0x1F, 0xD9, 0xF5, 0x3D, 0xA6, 0xED, 0xF0, 0xBE, 0x4C, 0x6B, 0x1A, 0xBF, + 0x12, 0x6C, 0x83, 0xBE, 0xAE, 0x3A, 0x5E, 0xBD, 0x5F, 0x93, 0x05, 0xBF, + 0x4B, 0x3A, 0x36, 0xBF, 0xA0, 0x94, 0xC8, 0xBD, 0x47, 0xB2, 0xA5, 0xBE, + 0xEB, 0xA3, 0x37, 0x3E, 0x4A, 0x4B, 0xAD, 0xBB, 0x4B, 0x87, 0x83, 0xBD, + 0x54, 0xD3, 0x4C, 0xBE, 0x9D, 0x21, 0xC4, 0xBD, 0xBF, 0x78, 0xD2, 0xBD, + 0x2D, 0xC9, 0x35, 0x3D, 0x09, 0x93, 0x01, 0xBE, 0x76, 0xD6, 0x6F, 0x3C, + 0x30, 0x1B, 0x1D, 0x3D, 0x81, 0x6F, 0x9B, 0xBE, 0x3A, 0x44, 0xB6, 0x3E, + 0x75, 0x14, 0x4F, 0x3D, 0x94, 0x4E, 0xED, 0xBC, 0xE2, 0x7D, 0x4C, 0x3C, + 0xEE, 0x6F, 0x2F, 0xBF, 0x1F, 0xDB, 0x87, 0x3E, 0x90, 0xC7, 0x9F, 0xBD, + 0x3A, 0x0E, 0x3C, 0xBC, 0x51, 0x58, 0x59, 0xBE, 0x5E, 0x44, 0x5D, 0x3E, + 0x69, 0xE5, 0x86, 0xBB, 0x9F, 0xAB, 0xA6, 0xBD, 0x87, 0x50, 0x0E, 0xBE, + 0xFF, 0xFC, 0x10, 0x3F, 0x9B, 0x68, 0x5B, 0xBD, 0x0B, 0xC0, 0xBD, 0x3E, + 0x9B, 0xB1, 0xA5, 0xBD, 0x40, 0x62, 0x74, 0xBD, 0x2F, 0x5C, 0xBB, 0xBD, + 0xFA, 0x80, 0x9E, 0x3D, 0x18, 0x94, 0x43, 0xBF, 0x85, 0x1A, 0xE8, 0x3D, + 0x1C, 0x34, 0x23, 0x3D, 0xDE, 0xA1, 0xF2, 0xBD, 0x2E, 0xF6, 0x2B, 0xBE, + 0xDD, 0x6B, 0xAF, 0xBE, 0x80, 0x84, 0x61, 0xBE, 0x22, 0x20, 0xDB, 0x39, + 0x35, 0xDE, 0x94, 0x3D, 0x14, 0x0C, 0xFB, 0x3D, 0x29, 0xD1, 0x2F, 0x3D, + 0x14, 0xA6, 0x53, 0x3F, 0x1A, 0xC0, 0x82, 0x3F, 0x11, 0xB2, 0xBA, 0xBE, + 0x53, 0x60, 0x83, 0x3D, 0xB7, 0x5F, 0x33, 0x3C, 0xA0, 0x67, 0x93, 0xBE, + 0x9C, 0x95, 0x8F, 0xBD, 0xD5, 0xD3, 0x7F, 0xBE, 0x0F, 0xBD, 0x26, 0x3C, + 0xA4, 0xDF, 0x53, 0xBE, 0xF4, 0x7D, 0xC5, 0x3D, 0xAE, 0xF6, 0xA9, 0x3F, + 0xF6, 0x6A, 0x8A, 0x3D, 0xE7, 0xB7, 0x83, 0xBB, 0x0D, 0xBA, 0x41, 0x3E, + 0x09, 0x2D, 0xFC, 0x3E, 0x9A, 0xFF, 0xC9, 0xBF, 0x3B, 0x71, 0xF2, 0xBE, + 0xD9, 0x67, 0xC8, 0x3D, 0x0D, 0xD4, 0x26, 0xBC, 0x30, 0xB2, 0x80, 0x3D, + 0xDF, 0xB6, 0x76, 0xBE, 0x09, 0x68, 0x3C, 0x3C, 0x1D, 0x8A, 0x6A, 0x3D, + 0x6A, 0x3F, 0x37, 0x3D, 0x09, 0x24, 0x22, 0xBE, 0xD1, 0x6B, 0xBA, 0xBD, + 0xC1, 0x38, 0x40, 0x3D, 0x8B, 0x8D, 0x40, 0x3D, 0xE8, 0xBF, 0xC6, 0x3D, + 0xCC, 0x4A, 0x7C, 0xBC, 0x1F, 0x96, 0x7D, 0x3D, 0x89, 0x15, 0x00, 0x3F, + 0x5C, 0xB5, 0xA9, 0xBD, 0x83, 0x4D, 0x05, 0x3C, 0x6F, 0xE0, 0x5B, 0xBD, + 0x8F, 0x19, 0x07, 0xBD, 0x96, 0x54, 0xAD, 0xBD, 0xD2, 0xF5, 0x8B, 0x3D, + 0xDD, 0xB6, 0x1F, 0x3D, 0x39, 0x3A, 0x03, 0xBC, 0x8F, 0xAC, 0xBF, 0x3D, + 0xD7, 0x70, 0xC8, 0xBD, 0xEA, 0x6B, 0x6C, 0xB9, 0xA2, 0x9D, 0x3E, 0xBA, + 0xA3, 0x23, 0x20, 0xBD, 0x3F, 0xE3, 0xD8, 0x3D, 0xF4, 0xA6, 0x41, 0x3D, + 0x1E, 0x47, 0x0F, 0xBD, 0x1A, 0x7D, 0xB5, 0x3D, 0x0B, 0x93, 0xF6, 0x3C, + 0xAF, 0xA1, 0x65, 0xBE, 0x1E, 0x0A, 0x58, 0x3E, 0x98, 0x79, 0x57, 0x3F, + 0xCB, 0x80, 0x1B, 0x3F, 0xB7, 0x31, 0x92, 0xBE, 0x16, 0x45, 0xBE, 0x3E, + 0xF7, 0xBC, 0xA2, 0x3E, 0xA1, 0xBF, 0x13, 0xBF, 0x56, 0xFD, 0x1C, 0x3E, + 0x1A, 0x85, 0x53, 0xBD, 0x78, 0x20, 0xCC, 0xBE, 0xD0, 0x1C, 0xBE, 0xBD, + 0x66, 0x35, 0x2F, 0xBD, 0x7C, 0xD2, 0x29, 0xBF, 0xB9, 0x8F, 0xA4, 0xBE, + 0x73, 0xFE, 0x5F, 0xBE, 0x4D, 0x90, 0x8D, 0x3E, 0x67, 0x45, 0xB7, 0xBD, + 0xD1, 0xD9, 0x27, 0xBF, 0xB0, 0x49, 0x07, 0x3C, 0x68, 0x13, 0x13, 0xBE, + 0x13, 0xC4, 0x33, 0xBE, 0x4E, 0x07, 0xDA, 0xBD, 0x8B, 0xF0, 0x7D, 0x3E, + 0xE8, 0xD9, 0xDA, 0xBB, 0xD2, 0x82, 0x85, 0x3E, 0x8E, 0xEF, 0x08, 0xBF, + 0x27, 0x07, 0x15, 0xBE, 0xF9, 0x4E, 0xD5, 0xBE, 0xA8, 0xE8, 0xE1, 0x3E, + 0x44, 0xDD, 0x02, 0xBE, 0xF8, 0xF2, 0x56, 0xBE, 0xBF, 0xD1, 0x6A, 0x3E, + 0x07, 0x67, 0x0D, 0xBE, 0x41, 0xEC, 0x4F, 0x3F, 0x13, 0x06, 0x33, 0x3F, + 0x00, 0x7F, 0xFB, 0xBD, 0x14, 0xF8, 0xC5, 0x3E, 0x4F, 0xBF, 0x0A, 0xBE, + 0xCF, 0x1C, 0xB6, 0x3E, 0x1B, 0xF3, 0x44, 0x3C, 0x32, 0x17, 0x9D, 0x3B, + 0x1F, 0xCA, 0xC7, 0xBF, 0x16, 0x6A, 0xC9, 0xBD, 0x83, 0xA9, 0x2D, 0xBE, + 0xD0, 0x9C, 0x49, 0xBF, 0xFD, 0x7E, 0x25, 0xBF, 0x12, 0x42, 0xD9, 0x3B, + 0x73, 0xFE, 0xA5, 0xBE, 0x97, 0xDE, 0xF8, 0x3B, 0x93, 0x26, 0x7F, 0xBF, + 0x41, 0x77, 0x9F, 0xBF, 0x60, 0xFF, 0xE9, 0x3D, 0xF8, 0xC2, 0x05, 0xBE, + 0xDB, 0x77, 0x81, 0x3F, 0x18, 0x8D, 0xE2, 0x3E, 0x9E, 0xCA, 0xE6, 0x3D, + 0x04, 0xE7, 0xF3, 0xBD, 0x13, 0x67, 0x10, 0x3D, 0xB6, 0xEB, 0x45, 0x3E, + 0xBA, 0x3B, 0x10, 0xBE, 0x96, 0x3C, 0xC7, 0x3F, 0x83, 0xDA, 0x3E, 0xBE, + 0x1F, 0x86, 0x02, 0xBD, 0x02, 0xA8, 0xEE, 0xBD, 0xDB, 0xD0, 0x6A, 0x3C, + 0x2C, 0xCE, 0x02, 0xBF, 0xA3, 0xC5, 0x2F, 0x3E, 0x1E, 0x5E, 0x2A, 0xBC, + 0x55, 0x32, 0x32, 0x3E, 0x54, 0x5B, 0x09, 0xBE, 0x3B, 0xAA, 0xB0, 0x3D, + 0x56, 0x6E, 0x56, 0x3E, 0x86, 0x54, 0x9A, 0x3D, 0xEC, 0x64, 0xA5, 0x3D, + 0x71, 0xE9, 0x92, 0x3D, 0xE8, 0x7E, 0xAD, 0xBE, 0x29, 0x2E, 0xDA, 0x3D, + 0xC7, 0x51, 0x6B, 0xBF, 0xA1, 0x91, 0x99, 0x3E, 0x95, 0x17, 0xB1, 0xBE, + 0xE5, 0x7D, 0xD6, 0x3C, 0x75, 0x26, 0x85, 0xBE, 0x2C, 0xA1, 0x42, 0x3D, + 0x60, 0xFC, 0x78, 0x3E, 0x2A, 0x11, 0x94, 0x3D, 0x16, 0x81, 0x25, 0xBD, + 0xB5, 0x23, 0x3C, 0xBE, 0x0A, 0xAB, 0x23, 0xBF, 0x5D, 0xB6, 0xE0, 0x3C, + 0xE9, 0x0E, 0x4C, 0xBB, 0x47, 0xDC, 0x75, 0xBE, 0x06, 0xEF, 0xBE, 0x3D, + 0xEF, 0xE2, 0x8B, 0xBF, 0xEB, 0xEE, 0x27, 0x3F, 0x26, 0x58, 0xD9, 0x3C, + 0x00, 0x12, 0x11, 0xBD, 0x6E, 0xC1, 0x05, 0x3E, 0x07, 0x37, 0x6D, 0x3E, + 0xFB, 0x6B, 0x0B, 0xBE, 0x1C, 0xB9, 0x54, 0xBD, 0x22, 0x0D, 0x37, 0xBC, + 0x86, 0x33, 0x0D, 0xBE, 0xDD, 0xB1, 0x3B, 0xBE, 0xC6, 0x00, 0xA4, 0xBD, + 0xBA, 0x3C, 0x34, 0x3E, 0x42, 0xA6, 0xA5, 0x3E, 0xB5, 0xC2, 0x73, 0x3C, + 0x15, 0x23, 0x02, 0xBE, 0x62, 0x11, 0x19, 0x3E, 0xDA, 0x79, 0x49, 0xBE, + 0xA1, 0xAB, 0xD3, 0x3A, 0x28, 0x06, 0xF6, 0xBD, 0x05, 0x57, 0x2E, 0x3C, + 0xD1, 0x7F, 0x44, 0xBE, 0xF5, 0x30, 0xAF, 0x3C, 0xCC, 0xCD, 0x58, 0x3D, + 0x4F, 0x89, 0x97, 0x3C, 0xB5, 0x36, 0xC2, 0xBE, 0x2A, 0x30, 0xEC, 0x3D, + 0x82, 0xB6, 0x05, 0xBE, 0x72, 0x40, 0x01, 0xBE, 0x31, 0xC6, 0xC2, 0xBC, + 0xCC, 0xB3, 0x75, 0xBD, 0x36, 0xE9, 0x5E, 0x3D, 0x6D, 0x7A, 0x85, 0xBE, + 0xD2, 0x8F, 0xE5, 0x3E, 0x8E, 0xF2, 0x7B, 0x3C, 0xE5, 0xD7, 0xBB, 0x3D, + 0x2E, 0xDF, 0x16, 0x3E, 0x91, 0xAC, 0x92, 0x3D, 0x93, 0xB5, 0x04, 0x3F, + 0x7C, 0x03, 0x6A, 0x3D, 0x3F, 0xC8, 0x16, 0x3E, 0x7E, 0xA4, 0x97, 0xBD, + 0x76, 0x7C, 0xF0, 0x3D, 0x3E, 0x59, 0xC2, 0xBE, 0xAF, 0x68, 0x9A, 0x3E, + 0x34, 0x89, 0x38, 0xBE, 0x10, 0xD5, 0x11, 0xBD, 0xBB, 0x53, 0xA1, 0x3E, + 0xA0, 0xB0, 0x4C, 0x3F, 0x8C, 0x28, 0x55, 0xBE, 0x42, 0xB2, 0x04, 0xBD, + 0x14, 0x0E, 0x2A, 0x3F, 0x55, 0x0E, 0xA3, 0xBB, 0xAE, 0xE6, 0x95, 0x3E, + 0x1D, 0x4A, 0xD2, 0xBE, 0x37, 0x30, 0x49, 0x3E, 0xA3, 0x25, 0x65, 0x3D, + 0xC3, 0x19, 0xA6, 0x3E, 0x0A, 0x32, 0x13, 0xBE, 0x7D, 0x34, 0x31, 0x3E, + 0x5F, 0xE4, 0xBA, 0x3D, 0xB8, 0x7E, 0x2F, 0x3F, 0x4F, 0xF9, 0x0F, 0x3F, + 0xF5, 0x1B, 0xA0, 0x3E, 0xCA, 0x23, 0xCB, 0xBE, 0xFA, 0x27, 0x27, 0x3E, + 0xF8, 0x27, 0xC6, 0xBD, 0x48, 0xAF, 0x7E, 0xBD, 0x79, 0x87, 0xD7, 0x3C, + 0x72, 0x15, 0xEB, 0x3C, 0xA0, 0x29, 0x06, 0xBC, 0xDF, 0x3B, 0xE6, 0xBC, + 0x86, 0x11, 0x8F, 0x3D, 0x08, 0x6E, 0x48, 0xBB, 0x29, 0x27, 0x12, 0x3D, + 0x35, 0xCD, 0x8E, 0x3C, 0xC3, 0xB9, 0xD9, 0xBB, 0x85, 0xEC, 0x0C, 0xBD, + 0xED, 0x0F, 0x05, 0x3D, 0xA6, 0x54, 0x67, 0xBC, 0xFE, 0x16, 0x14, 0x3D, + 0x94, 0xB1, 0xF7, 0x3D, 0x42, 0xCF, 0x04, 0xBA, 0xA5, 0x5C, 0x0C, 0xBB, + 0xA8, 0xB3, 0x4F, 0xBB, 0xB9, 0x38, 0x8E, 0xBD, 0x49, 0x75, 0xCF, 0xBD, + 0xF2, 0x9A, 0xE2, 0x3C, 0xB2, 0x1D, 0xBD, 0xBC, 0xF1, 0x7C, 0x7C, 0xBD, + 0x98, 0xB4, 0xDB, 0x3D, 0x7B, 0xA9, 0x5E, 0xBD, 0x8B, 0x57, 0xBD, 0x3B, + 0x77, 0x82, 0x5F, 0xBB, 0x84, 0xA8, 0xC6, 0x3D, 0x94, 0x64, 0x1F, 0xBD, + 0xDC, 0x8C, 0x69, 0xBE, 0x5B, 0x07, 0xAC, 0xBA, 0x9B, 0x59, 0xAC, 0x3C, + 0xF0, 0x97, 0x0E, 0xBE, 0xFA, 0xAA, 0x81, 0xBE, 0xDF, 0x76, 0x5B, 0x3F, + 0x2C, 0x61, 0x7C, 0x3E, 0x42, 0x14, 0x32, 0x3D, 0xC3, 0x9F, 0xA4, 0xBE, + 0xA1, 0xEE, 0x3E, 0x3E, 0x1F, 0x8F, 0xAD, 0x3E, 0x04, 0x43, 0x05, 0xBE, + 0xC2, 0x11, 0xF9, 0xBE, 0x57, 0xC6, 0x54, 0xBF, 0x5B, 0x07, 0x15, 0x3D, + 0x9F, 0xAE, 0xF5, 0x3E, 0x49, 0x1E, 0xB8, 0xBE, 0x58, 0x94, 0x54, 0x3F, + 0x5D, 0x61, 0x0F, 0xBD, 0xC0, 0x89, 0x5D, 0x3E, 0xFA, 0x69, 0xB6, 0x3C, + 0x90, 0x71, 0x9C, 0x3E, 0xC8, 0x8E, 0x0B, 0xBF, 0xE6, 0x04, 0x33, 0xBE, + 0x27, 0xE3, 0x8D, 0x3D, 0x09, 0x0A, 0x9A, 0x3F, 0x03, 0x39, 0xC3, 0x3D, + 0xB5, 0xE2, 0x35, 0x3F, 0x69, 0x8C, 0x36, 0xBE, 0x12, 0xAB, 0xE4, 0x3C, + 0x2F, 0x9C, 0xCE, 0xBE, 0x48, 0x04, 0x32, 0xBD, 0x2F, 0x6B, 0xEB, 0xBE, + 0xFE, 0xCA, 0x93, 0xBF, 0x8F, 0xDA, 0x13, 0xBE, 0x69, 0x48, 0xDE, 0x3C, + 0xAC, 0x45, 0xCE, 0x3C, 0x8A, 0x54, 0xF6, 0x3C, 0x17, 0xF7, 0x09, 0xBC, + 0x4C, 0x3D, 0xA9, 0xBB, 0xDA, 0xD4, 0x84, 0xBC, 0x02, 0xB4, 0xB0, 0xBC, + 0xB0, 0xBE, 0x03, 0x3D, 0x2C, 0xBE, 0x0E, 0x3D, 0xA5, 0x14, 0xA2, 0xBB, + 0xA9, 0x0E, 0x05, 0xBD, 0x56, 0x00, 0x28, 0xBC, 0x02, 0x97, 0x76, 0x3C, + 0x41, 0x5E, 0x7A, 0xBC, 0x9D, 0xC6, 0x25, 0x3D, 0x46, 0x17, 0x2F, 0x3D, + 0xFB, 0xE7, 0x7B, 0x3D, 0x33, 0xC3, 0xF8, 0x3B, 0x85, 0xE5, 0xBE, 0xBD, + 0xBB, 0x60, 0x68, 0x3D, 0x40, 0x42, 0xEF, 0xBC, 0x59, 0xDA, 0xF2, 0x39, + 0xEB, 0x37, 0xE8, 0x3D, 0xE9, 0x8C, 0x18, 0xBD, 0x74, 0x77, 0xED, 0x3C, + 0x5B, 0x1C, 0x21, 0xBC, 0x93, 0x9B, 0x50, 0xBC, 0x66, 0x9A, 0x33, 0x3D, + 0x62, 0x71, 0x35, 0x3C, 0x6F, 0x47, 0x7B, 0xBD, 0xDF, 0x54, 0xD5, 0xBC, + 0xCE, 0x89, 0x41, 0x3D, 0xDD, 0x79, 0x37, 0xBF, 0x42, 0xE4, 0x38, 0x3E, + 0xE7, 0x46, 0x26, 0xBD, 0x90, 0x22, 0x37, 0xBF, 0xE7, 0xBA, 0x4A, 0x3C, + 0x04, 0x64, 0xD4, 0x3D, 0x8D, 0x1F, 0x6D, 0xBE, 0x49, 0xAE, 0x83, 0xBE, + 0xEC, 0x45, 0x36, 0x3E, 0x1A, 0xF4, 0x7F, 0x3F, 0x40, 0x27, 0xA8, 0x3E, + 0x26, 0x3A, 0x95, 0x3D, 0x48, 0x0A, 0x0A, 0xBE, 0x24, 0x7E, 0xBA, 0xBE, + 0x51, 0xCB, 0x93, 0xBF, 0xC0, 0xEE, 0xB6, 0x3D, 0xAC, 0x63, 0xB5, 0xBE, + 0x5F, 0xE6, 0xBC, 0x3D, 0x57, 0x58, 0x1D, 0xBF, 0xEA, 0x93, 0xE4, 0x3E, + 0xBB, 0xC8, 0x5B, 0x3E, 0x75, 0x35, 0x3E, 0x3C, 0x86, 0x5B, 0x4A, 0xBF, + 0x1A, 0x01, 0xDE, 0x3E, 0xE2, 0x9D, 0x96, 0xBC, 0xA3, 0x99, 0x96, 0x3D, + 0xB8, 0x08, 0xD1, 0xBD, 0xD8, 0xD4, 0xE9, 0x3E, 0x0D, 0xEF, 0xB3, 0x3D, + 0x58, 0xD9, 0x24, 0xBF, 0x8F, 0x67, 0xBC, 0x3F, 0xD4, 0x3E, 0x34, 0x3E, + 0x4A, 0x59, 0xB5, 0x3E, 0x4C, 0x0C, 0x61, 0xBE, 0x1E, 0xD3, 0xF9, 0x3D, + 0x59, 0xEE, 0x3D, 0xBF, 0x80, 0x2D, 0x8B, 0x3E, 0x3E, 0xAC, 0x84, 0x3D, + 0x76, 0x49, 0x00, 0x3E, 0x63, 0xEA, 0x0D, 0xBE, 0x36, 0x5F, 0x91, 0x3C, + 0xAC, 0x73, 0x8F, 0x3E, 0xF3, 0xD7, 0xCC, 0x3E, 0xC7, 0x26, 0x1E, 0x3E, + 0x6C, 0x33, 0xA6, 0x3E, 0x52, 0xBF, 0xCC, 0x3F, 0x15, 0xE8, 0xAB, 0x3E, + 0xA1, 0xD4, 0xD0, 0x3E, 0x2D, 0x7B, 0xBC, 0x3E, 0xDE, 0x51, 0x44, 0x3E, + 0xCA, 0xE5, 0x31, 0xBD, 0x22, 0x36, 0x8E, 0x3D, 0x29, 0x4A, 0xC5, 0x3C, + 0x07, 0x68, 0xEE, 0x3D, 0x3C, 0x34, 0xD1, 0x3C, 0xD8, 0x4C, 0x01, 0x3E, + 0x47, 0x54, 0x95, 0x3E, 0x5E, 0x3B, 0x26, 0xBF, 0xC1, 0xC9, 0x8A, 0xBD, + 0x6F, 0xE6, 0xDC, 0xBE, 0x28, 0x0B, 0x61, 0x3E, 0xB8, 0xAD, 0x2D, 0xBF, + 0xE3, 0xD6, 0x8C, 0x3E, 0xF5, 0xD3, 0x67, 0x3E, 0x63, 0x9C, 0xFD, 0xBD, + 0xF9, 0xB1, 0x90, 0x3E, 0x1C, 0x9D, 0x54, 0xBF, 0x6E, 0xB1, 0xDE, 0x3E, + 0xA5, 0xA9, 0xFA, 0x3E, 0x54, 0x84, 0x9D, 0xBE, 0x57, 0x57, 0xB9, 0xBE, + 0x43, 0x4C, 0x92, 0xBE, 0x65, 0xB0, 0x97, 0xBE, 0x08, 0x0A, 0x40, 0x3F, + 0x93, 0xF4, 0xB7, 0x3D, 0x04, 0x58, 0x5E, 0x3E, 0x3A, 0xCA, 0x64, 0xBD, + 0xB2, 0x04, 0xAC, 0x3F, 0x05, 0xB4, 0xFD, 0xBD, 0xBA, 0x28, 0x63, 0x3F, + 0xC4, 0x56, 0x4F, 0xBE, 0x8C, 0x2E, 0x74, 0x3E, 0x6B, 0xCE, 0xE7, 0x3D, + 0x3E, 0x3B, 0xF1, 0x3E, 0x30, 0x6C, 0x06, 0x3C, 0x83, 0x7C, 0x15, 0x3E, + 0x26, 0x36, 0x14, 0xBF, 0x02, 0x68, 0x9F, 0xBE, 0xAC, 0xD5, 0xA3, 0x3D, + 0x06, 0xD4, 0x40, 0xBE, 0x37, 0x0B, 0x50, 0xBE, 0xE6, 0xFB, 0xAC, 0xBE, + 0xB0, 0xA1, 0x4E, 0x3F, 0xD3, 0xD4, 0x31, 0xBF, 0x38, 0xCF, 0xC9, 0xBD, + 0x5F, 0xB2, 0xED, 0x3C, 0x0C, 0xA6, 0x28, 0x3E, 0x43, 0x58, 0x02, 0x3E, + 0x19, 0x07, 0x45, 0x3E, 0x18, 0x82, 0x03, 0x3F, 0x56, 0xD7, 0x62, 0xBC, + 0x67, 0x7D, 0x86, 0x3D, 0x0E, 0x93, 0x0B, 0x3E, 0xBD, 0xC8, 0x88, 0xBD, + 0xBE, 0x4A, 0xF5, 0x3C, 0x90, 0xB6, 0x15, 0xBE, 0xF2, 0x50, 0x63, 0xBE, + 0x44, 0x2D, 0x52, 0x3D, 0xDB, 0xCF, 0x7B, 0xBD, 0x6E, 0x35, 0xB3, 0x3F, + 0xDC, 0x36, 0x72, 0xBF, 0xEB, 0x6F, 0x4B, 0xBE, 0x0C, 0xA3, 0xD4, 0xBE, + 0xF6, 0xF0, 0x9F, 0x3D, 0x23, 0x69, 0x9E, 0x3E, 0x04, 0x6F, 0xB0, 0xBE, + 0x89, 0x35, 0x11, 0x3E, 0xA0, 0x8A, 0xB2, 0xBD, 0xAE, 0xC5, 0x83, 0xBE, + 0x49, 0x4D, 0x20, 0x3F, 0xF8, 0x9D, 0x3D, 0x3E, 0x35, 0xA3, 0x93, 0xBE, + 0x79, 0xEE, 0xC0, 0xBD, 0xB4, 0xC2, 0xBD, 0xBE, 0x61, 0xD5, 0x81, 0xBE, + 0xD5, 0xA9, 0xF7, 0xBE, 0x3A, 0x4D, 0xF7, 0x3E, 0x3E, 0x04, 0x68, 0x3B, + 0xF1, 0xDD, 0x0D, 0x3F, 0x17, 0x87, 0xDA, 0xBE, 0x06, 0xE6, 0x7A, 0xBF, + 0x0D, 0x4C, 0x43, 0xBE, 0xC5, 0x1A, 0x8F, 0xBD, 0x95, 0x38, 0x55, 0x3D, + 0xA3, 0xDE, 0x97, 0xBE, 0x71, 0xB2, 0xE9, 0x3E, 0xD2, 0x4F, 0x76, 0x3D, + 0x7B, 0x57, 0x41, 0xBF, 0xA8, 0xDF, 0x12, 0x3E, 0x4D, 0x9C, 0x5A, 0x3D, + 0x15, 0xE3, 0x9C, 0x3E, 0x30, 0x8C, 0xB2, 0xBE, 0xFB, 0xE1, 0x69, 0x3E, + 0xC4, 0x86, 0xFF, 0xBE, 0xF5, 0x1C, 0xAF, 0x3E, 0x73, 0x98, 0xA4, 0x3D, + 0x2A, 0x4A, 0xBC, 0x3E, 0xC0, 0x44, 0x94, 0x3F, 0x60, 0x6F, 0x3D, 0xBE, + 0x08, 0xDF, 0x8C, 0x3E, 0xE5, 0xDD, 0xAC, 0x3E, 0x7E, 0xBB, 0x0D, 0xBF, + 0x3F, 0x08, 0xA8, 0xBC, 0x95, 0xCE, 0xDC, 0xBD, 0xDD, 0x2C, 0x91, 0xBE, + 0x5F, 0xA8, 0x8D, 0x3F, 0x41, 0xCA, 0x10, 0xBE, 0x2F, 0x69, 0x6B, 0x3E, + 0x2C, 0xA9, 0x61, 0xBD, 0xE2, 0xEB, 0xCA, 0x3E, 0x15, 0xBD, 0xAF, 0xBE, + 0xC6, 0x92, 0x24, 0x3E, 0xB3, 0xEE, 0x9A, 0x3F, 0x8F, 0x41, 0xE1, 0x3D, + 0x16, 0x7D, 0x12, 0xBD, 0x6F, 0xD3, 0xBB, 0x3D, 0xB1, 0x48, 0x2D, 0xBD, + 0x6D, 0xD8, 0x59, 0xBE, 0x8C, 0x14, 0x2D, 0xBE, 0xAA, 0x18, 0x11, 0xBE, + 0xE9, 0x66, 0x3F, 0xBD, 0xAC, 0xC1, 0xD1, 0xBC, 0x00, 0x65, 0xB2, 0x3D, + 0x18, 0xEB, 0x44, 0x3D, 0x01, 0x30, 0x88, 0x3E, 0xFA, 0x35, 0x4A, 0x3D, + 0x99, 0xDA, 0xD5, 0xBE, 0x5C, 0x6E, 0xD8, 0xBB, 0xA5, 0x6B, 0xF1, 0xBE, + 0x2C, 0xA6, 0x2B, 0xBE, 0x18, 0xE6, 0x91, 0xBD, 0x13, 0xAF, 0xA3, 0xBC, + 0x77, 0x90, 0x0B, 0x3E, 0x09, 0x05, 0x65, 0xBD, 0x25, 0x47, 0x10, 0xBE, + 0xCE, 0x8F, 0x66, 0xBE, 0x3B, 0xA9, 0x00, 0x3D, 0xB5, 0x42, 0xD0, 0x3E, + 0x21, 0xFC, 0xCB, 0x3C, 0x64, 0x87, 0x26, 0xBE, 0xD6, 0x48, 0x0D, 0xBB, + 0x7D, 0xD2, 0x14, 0x3D, 0x64, 0xD0, 0x79, 0xBD, 0x19, 0xEF, 0xFA, 0x3E, + 0xDE, 0x23, 0x16, 0xC0, 0xA9, 0xC8, 0xCB, 0xBE, 0xB4, 0x5C, 0x13, 0x3D, + 0x9E, 0xD9, 0x1B, 0xBE, 0x67, 0xC5, 0x2A, 0xBD, 0xAB, 0x1D, 0xE1, 0x3E, + 0x34, 0x62, 0x77, 0xBD, 0x50, 0x85, 0x63, 0x3F, 0xEE, 0xB4, 0xF7, 0x3E, + 0xD5, 0xDC, 0xA3, 0x3C, 0xAF, 0xBA, 0x88, 0x3E, 0x64, 0x3E, 0x77, 0x3C, + 0x55, 0x3A, 0x25, 0xBF, 0x37, 0x45, 0x49, 0x3E, 0x6F, 0x4B, 0x63, 0x3F, + 0x25, 0x4E, 0x67, 0xBD, 0x6C, 0xAC, 0xF6, 0xBD, 0xA7, 0xE7, 0x16, 0x3F, + 0x25, 0x0D, 0x5E, 0xBE, 0x58, 0x0E, 0x9D, 0x3D, 0x4A, 0x46, 0xA5, 0x3E, + 0x2F, 0x76, 0x07, 0x3E, 0x15, 0x69, 0xC1, 0x3E, 0xEB, 0xCB, 0xD8, 0x3E, + 0x62, 0x34, 0x1C, 0x3D, 0x15, 0x6B, 0x6D, 0x3F, 0x31, 0xD9, 0xDF, 0xBC, + 0xF6, 0x6D, 0xDC, 0xBD, 0x7F, 0xC3, 0xFC, 0xBD, 0xC7, 0x48, 0x1A, 0xBD, + 0xFE, 0x92, 0xEC, 0x3E, 0x64, 0xC1, 0xC8, 0x3E, 0x7D, 0x3E, 0x52, 0x3F, + 0x2D, 0x64, 0xE2, 0xBE, 0x5F, 0x92, 0xBB, 0xBC, 0xE1, 0xC4, 0x56, 0x3E, + 0xD2, 0x87, 0x48, 0x3F, 0x51, 0xF7, 0xA4, 0x3D, 0x16, 0x40, 0x06, 0x3F, + 0x72, 0xD3, 0xC0, 0xBD, 0xAE, 0xDF, 0x29, 0x3F, 0x08, 0x84, 0x65, 0xBB, + 0x57, 0x2F, 0xE7, 0xBD, 0xB3, 0x3A, 0x14, 0xBF, 0xB3, 0xF8, 0x6C, 0xBE, + 0x55, 0xE1, 0x8D, 0xBC, 0xEB, 0xD5, 0x18, 0xBF, 0x09, 0x1B, 0x41, 0xBD, + 0x76, 0x8B, 0xAC, 0x3C, 0x90, 0x17, 0xC9, 0x3E, 0xEA, 0x43, 0x89, 0x3D, + 0xBE, 0xE5, 0xFA, 0x3D, 0x24, 0xFA, 0x7B, 0xBE, 0x57, 0x6C, 0x59, 0xBE, + 0x11, 0xCF, 0x17, 0x3D, 0xEF, 0x44, 0xF2, 0x3B, 0xFA, 0x1A, 0xE6, 0x3C, + 0x56, 0x3F, 0x53, 0xBD, 0x08, 0xB3, 0x56, 0xBE, 0x4F, 0x05, 0xA3, 0x3F, + 0xFD, 0x03, 0xB4, 0x3D, 0x45, 0xE3, 0x40, 0x3B, 0x4B, 0x69, 0x89, 0xBE, + 0x67, 0xF5, 0x74, 0xBE, 0x49, 0xE9, 0x51, 0x3F, 0xE8, 0x7A, 0xCA, 0xBE, + 0xDD, 0x7B, 0xE1, 0x3B, 0x7C, 0xDF, 0xC6, 0xBD, 0x6C, 0x4D, 0x0D, 0x3F, + 0x23, 0x09, 0x9F, 0x3E, 0xCA, 0x60, 0x0B, 0xBF, 0xA4, 0xA1, 0xB3, 0xBD, + 0x56, 0x99, 0x32, 0x3F, 0x45, 0x2A, 0xE0, 0x3D, 0x2B, 0xCC, 0xF2, 0xBE, + 0x10, 0x4E, 0x3C, 0x3F, 0x5A, 0x96, 0xDD, 0xBE, 0x85, 0x41, 0xE1, 0x3C, + 0xA3, 0x06, 0xE9, 0x3E, 0x4D, 0xE7, 0x03, 0x3C, 0xF5, 0x49, 0x9A, 0x3F, + 0x7A, 0x65, 0x4F, 0xBD, 0xFD, 0x71, 0x57, 0x3D, 0xB2, 0x1B, 0xD8, 0x3D, + 0x51, 0xEA, 0xB1, 0xBE, 0x00, 0x8A, 0xFE, 0xBC, 0x29, 0x92, 0x19, 0xBE, + 0xA2, 0x3C, 0x9F, 0xBD, 0x47, 0xB7, 0xE4, 0x3D, 0xE7, 0x48, 0x62, 0x3F, + 0xFB, 0x03, 0x81, 0x3E, 0x88, 0x2A, 0x27, 0xC0, 0x3F, 0xAA, 0x10, 0x3E, + 0x37, 0x54, 0x07, 0x3D, 0x97, 0x2A, 0x91, 0xBF, 0x8D, 0x24, 0xB3, 0xBE, + 0x95, 0xFC, 0x98, 0x3F, 0x99, 0x32, 0xCB, 0x3E, 0xAF, 0x5B, 0x19, 0xBE, + 0xD8, 0x6A, 0x55, 0xBE, 0x38, 0xE8, 0x3A, 0xBE, 0x3F, 0x66, 0x30, 0x3F, + 0xB8, 0x12, 0x41, 0xBF, 0xFF, 0x83, 0xDD, 0x3E, 0x9B, 0x4A, 0x12, 0xBF, + 0xC3, 0x51, 0xAE, 0x3E, 0xAB, 0x64, 0x4F, 0xBF, 0xBD, 0x4D, 0x4B, 0x3F, + 0xE2, 0xB5, 0x83, 0xBD, 0x03, 0xC2, 0xD7, 0x3E, 0x37, 0x80, 0xB9, 0x3F, + 0x45, 0x17, 0xD1, 0x3E, 0x7B, 0xA0, 0x07, 0xBF, 0xA3, 0x77, 0xA6, 0xBE, + 0x62, 0x5A, 0x3F, 0xBE, 0x8D, 0x0E, 0x8A, 0x3E, 0xCE, 0x4E, 0x59, 0xBE, + 0xFB, 0x16, 0x89, 0x3E, 0xB8, 0xE3, 0x64, 0xBE, 0x7A, 0x41, 0xA4, 0x3D, + 0x2E, 0x32, 0xC5, 0x3E, 0xE9, 0x60, 0x3E, 0xBF, 0x49, 0xFD, 0xA9, 0x3E, + 0xD3, 0x23, 0xA4, 0x3E, 0xF3, 0x77, 0xB4, 0x3E, 0xD8, 0xF3, 0xF1, 0xBD, + 0x39, 0xE2, 0x9F, 0xBC, 0x6A, 0x4A, 0xAB, 0x3C, 0xF0, 0x92, 0xE7, 0xBD, + 0x0D, 0x90, 0x68, 0x3C, 0xE2, 0x2A, 0x9F, 0x3D, 0xEC, 0x6B, 0xD8, 0x3B, + 0xB6, 0x18, 0x92, 0x3D, 0xAF, 0xB2, 0x92, 0xBC, 0x61, 0xF0, 0x6D, 0xBE, + 0x4B, 0x2C, 0xFB, 0xBD, 0x05, 0x3F, 0x13, 0x3E, 0xD3, 0xD2, 0x65, 0x3D, + 0xBD, 0x70, 0xA7, 0xBD, 0xB2, 0x43, 0xF0, 0x3B, 0x4B, 0x6E, 0xB8, 0x3C, + 0xC6, 0x16, 0xAA, 0x3D, 0xD8, 0x5E, 0x30, 0x3E, 0xFB, 0x1C, 0xAD, 0x3C, + 0x64, 0xC0, 0x47, 0x3E, 0x04, 0x03, 0x3F, 0xBB, 0x61, 0x42, 0xA3, 0x3D, + 0x5D, 0xEB, 0x72, 0x3C, 0xF3, 0xBF, 0x58, 0x3C, 0x83, 0x15, 0xFC, 0xBD, + 0x4C, 0x51, 0xC3, 0xBD, 0x93, 0xF1, 0x9F, 0xBD, 0x28, 0xC5, 0x0C, 0x3E, + 0xA5, 0x86, 0xF3, 0x3D, 0x86, 0xCF, 0x4D, 0x3C, 0xA3, 0xC4, 0x6A, 0x3E, + 0xBB, 0x60, 0xE0, 0x3C, 0x2E, 0x12, 0x81, 0x3D, 0xFC, 0x4E, 0x55, 0x3E, + 0x11, 0xCB, 0xFE, 0xBC, 0xA9, 0xD2, 0x22, 0x3E, 0x91, 0x1A, 0x49, 0x3D, + 0x35, 0x41, 0xA1, 0x3D, 0x3C, 0x45, 0xB9, 0x3A, 0xC3, 0xFF, 0x0A, 0xBC, + 0x2B, 0x92, 0x43, 0xBC, 0xD6, 0xD3, 0xB0, 0xBA, 0xEB, 0xB4, 0xCB, 0xBD, + 0x03, 0xAC, 0x65, 0x3D, 0xBD, 0x9C, 0xFD, 0x3B, 0x03, 0xE7, 0x94, 0xBD, + 0xFB, 0xB2, 0x3E, 0x3D, 0xC7, 0x42, 0x88, 0x3C, 0xE4, 0xA2, 0x19, 0xBD, + 0x90, 0x37, 0x49, 0xBD, 0x6E, 0xFB, 0xB9, 0xBB, 0x89, 0x14, 0x1B, 0x3E, + 0xD7, 0x39, 0x53, 0x3D, 0xC0, 0xD6, 0xED, 0x3B, 0x75, 0x99, 0x7E, 0x3B, + 0xE2, 0x9C, 0x00, 0x3C, 0x98, 0xA0, 0x96, 0xBD, 0xF1, 0xFD, 0xA0, 0xBD, + 0x94, 0x5D, 0xD7, 0xBD, 0x49, 0x5C, 0xA8, 0x3D, 0x2B, 0x6D, 0xD3, 0xBD, + 0xA1, 0xD9, 0x28, 0x3D, 0xC8, 0xA7, 0xDC, 0xBD, 0xA9, 0x0B, 0x98, 0xBD, + 0x40, 0x96, 0xC5, 0x3D, 0x4A, 0x63, 0xE7, 0x3E, 0x6B, 0xB4, 0xCB, 0x3E, + 0xF0, 0x19, 0xBF, 0x3E, 0x99, 0x07, 0xDF, 0xBD, 0x20, 0x04, 0x0A, 0x3F, + 0xC2, 0x9F, 0xF6, 0xBD, 0xB1, 0x32, 0x94, 0x3F, 0xAE, 0xA8, 0xBD, 0x3D, + 0x27, 0x3A, 0x7F, 0xBE, 0x04, 0xCE, 0x77, 0x3E, 0xE5, 0x2E, 0x8E, 0x3E, + 0x6D, 0x79, 0x82, 0x3E, 0xF1, 0x22, 0xB2, 0x3C, 0xE8, 0x21, 0xB2, 0xBF, + 0x1C, 0x12, 0x8A, 0x3E, 0x25, 0x9E, 0x73, 0x3F, 0xF6, 0x54, 0x88, 0x3F, + 0x2F, 0xCA, 0x52, 0x3E, 0xBB, 0x26, 0x0E, 0x3F, 0x59, 0x90, 0x39, 0x3E, + 0xB6, 0x4E, 0xDB, 0xBC, 0xD6, 0xE0, 0x4F, 0x3E, 0xCC, 0x4F, 0xC1, 0xBD, + 0x9F, 0xC5, 0x39, 0xBD, 0xE7, 0x4B, 0xBF, 0x3E, 0x3A, 0x87, 0xB3, 0x3E, + 0xD9, 0x4E, 0x8B, 0x3E, 0x2E, 0x46, 0xC3, 0xBF, 0x00, 0x3B, 0x20, 0x3E, + 0x90, 0xF0, 0x31, 0xBD, 0xA1, 0xC6, 0x51, 0xBF, 0x2D, 0x84, 0xA5, 0x3E, + 0x3F, 0xC2, 0x0C, 0xBC, 0xD8, 0x4F, 0x26, 0x3D, 0xCA, 0xB5, 0x13, 0xBC, + 0xD0, 0x82, 0x42, 0xBD, 0x1B, 0xEE, 0x5F, 0xBC, 0xFB, 0x95, 0x9C, 0x3D, + 0x48, 0x75, 0x62, 0xBC, 0x8E, 0x08, 0x39, 0xBC, 0xA2, 0x24, 0x1D, 0x3D, + 0x4B, 0x84, 0x7B, 0xBD, 0xED, 0x04, 0xE7, 0x3B, 0x5E, 0x31, 0xA1, 0xBB, + 0x7F, 0x9B, 0x04, 0xBC, 0x08, 0x70, 0xFF, 0xBB, 0x01, 0xE6, 0x01, 0x3D, + 0x43, 0x5B, 0xE3, 0xBC, 0x31, 0xD7, 0xA5, 0x3D, 0x78, 0x28, 0x33, 0x3B, + 0x95, 0x60, 0x6A, 0xBC, 0x0B, 0x76, 0x25, 0xBD, 0x0B, 0x5C, 0x4E, 0xBC, + 0x0B, 0xBE, 0xA1, 0xBC, 0xE0, 0xA5, 0xCD, 0xBD, 0x3A, 0x2E, 0x68, 0x3D, + 0xE2, 0x36, 0xF3, 0xBB, 0x13, 0x4D, 0xC6, 0x3C, 0xEB, 0x22, 0x3E, 0xBB, + 0x5B, 0x8D, 0xC9, 0x3C, 0xE0, 0x09, 0xF1, 0xBC, 0x7F, 0x86, 0x78, 0x3E, + 0xF1, 0x5B, 0x04, 0xBD, 0xC5, 0x02, 0x88, 0xBD, 0x45, 0x9D, 0x6B, 0x3B, + 0x3B, 0xE0, 0x48, 0xBC, 0x97, 0x96, 0xD1, 0xBB, 0xE6, 0xC1, 0xAE, 0xBD, + 0xCA, 0xCB, 0x1B, 0x3C, 0xAA, 0x54, 0x22, 0x3C, 0xAF, 0x13, 0xB2, 0xBA, + 0xD1, 0x54, 0xB3, 0xBC, 0x13, 0xAB, 0xDC, 0x3A, 0x1F, 0x48, 0x9B, 0xBD, + 0x26, 0x9B, 0x8B, 0x3D, 0x0B, 0x11, 0x40, 0x3C, 0x4D, 0xC1, 0x60, 0xBD, + 0x2C, 0x66, 0x92, 0x3D, 0x51, 0x75, 0x91, 0xBD, 0x72, 0x8F, 0xE7, 0xBC, + 0xAE, 0xEF, 0xD6, 0xBC, 0x9F, 0xA7, 0x94, 0xBC, 0xD0, 0x2C, 0xCC, 0xBB, + 0x39, 0x89, 0x97, 0x3C, 0x80, 0x5C, 0x9C, 0xBC, 0x7A, 0xB3, 0x56, 0x3C, + 0xFC, 0xC4, 0x6A, 0xBC, 0x88, 0xB0, 0x21, 0xBD, 0xD5, 0x9B, 0x8C, 0x3C, + 0xF1, 0x3D, 0xC3, 0x3C, 0x4C, 0x25, 0x42, 0x3C, 0xFB, 0x30, 0x3E, 0xBC, + 0x38, 0xD0, 0x87, 0xBC, 0x7C, 0xF0, 0x28, 0x3E, 0x46, 0x6E, 0x5D, 0x3D, + 0x0C, 0xE8, 0x3E, 0xBB, 0xA3, 0x9C, 0x8E, 0xBD, 0x27, 0xBA, 0x9D, 0x3D, + 0x1C, 0xF8, 0xAF, 0x3E, 0x7B, 0x3D, 0xC5, 0xBE, 0xCF, 0x1E, 0xC1, 0xBB, + 0xC2, 0xC8, 0x1D, 0x3E, 0xE4, 0x12, 0xED, 0x3C, 0xEA, 0xDF, 0xEE, 0xBD, + 0x5D, 0xD1, 0xB4, 0x3D, 0x60, 0x20, 0x08, 0x3E, 0xA8, 0xB8, 0xED, 0x3D, + 0x2A, 0x3F, 0x42, 0xBC, 0xF6, 0x70, 0xD1, 0x3C, 0xB6, 0x72, 0x3C, 0xBC, + 0xA8, 0xF9, 0xE4, 0xBE, 0x43, 0x26, 0x22, 0x3D, 0x46, 0x67, 0xD7, 0xBE, + 0x1F, 0xD7, 0x33, 0xBC, 0x6B, 0x36, 0x78, 0xBE, 0x9F, 0x67, 0x94, 0x3E, + 0x89, 0x47, 0xBD, 0x3D, 0x36, 0x1D, 0x15, 0x3D, 0xC1, 0x1A, 0xAF, 0x3E, + 0x28, 0x1C, 0x81, 0xBC, 0x8B, 0x41, 0xAC, 0xBE, 0x43, 0xA5, 0x5A, 0x3E, + 0xD7, 0xB3, 0x94, 0x3C, 0x34, 0x4C, 0x37, 0x3E, 0x12, 0x19, 0x86, 0x3D, + 0x7F, 0xE9, 0x20, 0x3E, 0x5C, 0xCF, 0xB3, 0xBE, 0x3B, 0xAE, 0xA8, 0x3D, + 0xC5, 0xE0, 0x36, 0x3D, 0x8A, 0x29, 0x54, 0x3B, 0xD9, 0x13, 0xA2, 0xBC, + 0x61, 0xF9, 0x82, 0xBD, 0x11, 0xB8, 0x5B, 0xBC, 0xBF, 0x86, 0x2E, 0x3D, + 0x89, 0xD0, 0xE2, 0xBC, 0x1D, 0x7C, 0x14, 0xBC, 0x1E, 0xD1, 0xB1, 0x3D, + 0x33, 0x1C, 0x59, 0xBD, 0x56, 0xA6, 0x2F, 0xBA, 0x9D, 0x50, 0xEB, 0x3B, + 0x22, 0x88, 0x08, 0xBD, 0x8B, 0xE6, 0x79, 0x3D, 0xAB, 0x8B, 0xE2, 0xBB, + 0x29, 0x2C, 0xDB, 0xBC, 0xA2, 0xBD, 0xA4, 0x3B, 0x76, 0x1A, 0x0D, 0xB8, + 0xBD, 0xD2, 0xC2, 0x3A, 0x5B, 0xF2, 0x22, 0xBD, 0x25, 0x27, 0xE5, 0xBC, + 0x5F, 0x37, 0x35, 0xBC, 0x26, 0xE6, 0x9B, 0xBD, 0xA2, 0x16, 0x16, 0x3D, + 0x37, 0xB9, 0x3E, 0xBC, 0x63, 0x14, 0x2F, 0x3C, 0x51, 0x11, 0x4C, 0x3C, + 0x51, 0x5A, 0xE2, 0xBB, 0xA4, 0x21, 0xF7, 0xBC, 0x5F, 0x36, 0x7B, 0x3E, + 0xD2, 0x40, 0x63, 0xBC, 0x1B, 0xC7, 0xEE, 0x3B, 0xD4, 0xAD, 0x26, 0x3E, + 0x58, 0x73, 0xA4, 0xBE, 0x15, 0x00, 0xCA, 0xBF, 0x02, 0x33, 0xB9, 0xBE, + 0x11, 0x08, 0xBD, 0xBE, 0x41, 0x92, 0x8D, 0x3E, 0x50, 0x8D, 0xCF, 0x3B, + 0x9D, 0x69, 0x23, 0x3E, 0xF0, 0x5E, 0xAC, 0x3E, 0x96, 0x48, 0x2D, 0xBE, + 0x98, 0xEF, 0x2D, 0x3D, 0x32, 0x61, 0xB3, 0xBE, 0x44, 0x69, 0x14, 0x3F, + 0x4A, 0x2D, 0xB8, 0xBF, 0x8C, 0x08, 0x1C, 0x3F, 0x93, 0xE1, 0x0F, 0x3E, + 0xCE, 0xC3, 0x2B, 0xBD, 0x6D, 0x71, 0x93, 0xBE, 0xE8, 0x68, 0x92, 0xBE, + 0x23, 0x2D, 0x3D, 0x3F, 0x40, 0x60, 0x32, 0xBE, 0xAB, 0xD8, 0x22, 0xBE, + 0x25, 0xB4, 0xDC, 0x3E, 0x19, 0x71, 0xC2, 0xBE, 0xF1, 0x00, 0x7B, 0x3F, + 0x41, 0x09, 0x21, 0x3F, 0x08, 0x38, 0x9F, 0x3E, 0xFC, 0x9E, 0x57, 0x3F, + 0xC1, 0x71, 0x31, 0xBF, 0x61, 0x3F, 0xFD, 0x3D, 0xDE, 0x81, 0xDC, 0xBD, + 0xA4, 0x55, 0x05, 0x3C, 0x28, 0xAD, 0x37, 0xBF, 0x15, 0xA4, 0x9E, 0xBE, + 0x8F, 0x6D, 0x0E, 0x3F, 0x3A, 0xDD, 0xB1, 0x3F, 0x4B, 0x40, 0x52, 0x3E, + 0xBF, 0xE4, 0x23, 0x3F, 0xC3, 0x11, 0x86, 0x3B, 0x8D, 0x0B, 0x21, 0xBD, + 0x58, 0xC2, 0x9C, 0x3E, 0x35, 0x4D, 0xA5, 0xBE, 0xFF, 0xFF, 0x5D, 0xBD, + 0xCC, 0x7B, 0x4C, 0xBE, 0x5C, 0x6F, 0xE6, 0x3E, 0x9A, 0xA7, 0x07, 0xC0, + 0x33, 0x99, 0x5D, 0x3E, 0x0C, 0x78, 0x2D, 0xBF, 0x11, 0x6D, 0x32, 0xBD, + 0xC5, 0x52, 0x2E, 0xBE, 0x28, 0x30, 0x30, 0xBF, 0xFE, 0x14, 0x30, 0xBE, + 0x96, 0xA5, 0xDA, 0x3D, 0x20, 0xE6, 0x54, 0xBD, 0x8B, 0x36, 0x9F, 0x3B, + 0x1F, 0x06, 0x6B, 0x3C, 0x8C, 0x64, 0x60, 0xBF, 0xAF, 0x59, 0x07, 0xBE, + 0xB9, 0x26, 0xBB, 0xBE, 0x03, 0xFC, 0x21, 0xBF, 0x68, 0x86, 0x0B, 0xBF, + 0xFD, 0x5E, 0xC8, 0xBE, 0xE8, 0xD7, 0xA4, 0xBF, 0x97, 0x07, 0xA5, 0xBE, + 0xEC, 0x53, 0xA1, 0x3D, 0xA7, 0xD0, 0xE1, 0x3D, 0xFB, 0x8F, 0xB4, 0xBD, + 0x51, 0x92, 0x3B, 0xBE, 0x70, 0x85, 0x54, 0x3D, 0x1F, 0x5D, 0x83, 0x3D, + 0xD5, 0x9D, 0xB9, 0xBD, 0x3D, 0x3B, 0x26, 0xBC, 0x6F, 0x25, 0x80, 0x3E, + 0x7C, 0xA3, 0x25, 0x3E, 0x0A, 0x4F, 0x80, 0x3D, 0xFB, 0x55, 0x50, 0x3D, + 0x06, 0xB6, 0x21, 0xBD, 0x27, 0x1B, 0x82, 0x3D, 0x88, 0xD2, 0x8C, 0x3E, + 0x16, 0xF9, 0x30, 0xBC, 0xE8, 0xCA, 0x50, 0xBC, 0xAB, 0x6B, 0xA8, 0x3D, + 0xAC, 0x46, 0x81, 0xBD, 0xB6, 0x7E, 0xA1, 0xBD, 0x13, 0xE3, 0x8E, 0xBD, + 0xA3, 0xF7, 0x6B, 0xBC, 0xCB, 0x91, 0xBF, 0xBE, 0x1A, 0x85, 0x8D, 0x3E, + 0xDF, 0x11, 0xEC, 0xBD, 0xC9, 0x05, 0xD2, 0x3D, 0xBE, 0xC8, 0xA1, 0xBD, + 0x72, 0x37, 0xEB, 0xBD, 0xA0, 0xC3, 0x78, 0xBC, 0x72, 0x9A, 0x1E, 0x3F, + 0x2B, 0xC1, 0xBE, 0xBD, 0x2B, 0x2C, 0x56, 0x3D, 0x23, 0x51, 0x6B, 0xBC, + 0x64, 0xF0, 0xEB, 0x3C, 0xAA, 0x01, 0xB8, 0xBD, 0x41, 0x64, 0x9F, 0x3B, + 0x53, 0x86, 0x59, 0xBC, 0xE0, 0x1D, 0x0B, 0x3B, 0xEA, 0x62, 0xCF, 0x3B, + 0x40, 0x2D, 0xDC, 0x3C, 0x06, 0x62, 0x05, 0xBD, 0x55, 0x73, 0x23, 0x3D, + 0x3A, 0x04, 0x00, 0xBD, 0x48, 0x23, 0x73, 0x3B, 0xAB, 0x5C, 0x05, 0x3D, + 0x6C, 0x62, 0x30, 0xBD, 0x72, 0xC4, 0x4D, 0x3D, 0x74, 0x12, 0x96, 0x3B, + 0x0B, 0xA3, 0xA3, 0x3C, 0x10, 0x5D, 0x6E, 0x3C, 0x95, 0xA5, 0xA6, 0xBC, + 0xFA, 0x71, 0x44, 0xBB, 0xEB, 0x5E, 0x2E, 0x3C, 0x4B, 0xDC, 0xC3, 0x3A, + 0x9C, 0xBD, 0x9A, 0x3C, 0xE6, 0x97, 0x5E, 0x3B, 0xE7, 0x0C, 0x85, 0x3C, + 0x01, 0x9B, 0xB5, 0x3B, 0x8B, 0xBB, 0x85, 0xBC, 0x2F, 0xC0, 0x20, 0x3D, + 0xF5, 0xA8, 0xAD, 0xBC, 0x16, 0x56, 0x2F, 0xBE, 0x4E, 0xBB, 0xB6, 0x3C, + 0xD9, 0xAA, 0xA4, 0x3C, 0xF9, 0xD9, 0x7D, 0xBE, 0x17, 0xAE, 0xBE, 0x3C, + 0x91, 0x57, 0xF6, 0x3E, 0xC5, 0xD3, 0xDF, 0xBD, 0x65, 0x04, 0x14, 0xBB, + 0xFE, 0x10, 0x8F, 0x3C, 0xF2, 0x1C, 0x21, 0x3E, 0x0D, 0x8A, 0x53, 0x3D, + 0x7B, 0x21, 0x1F, 0xBD, 0x9D, 0x7A, 0xD0, 0xBD, 0xF3, 0xBB, 0x63, 0x3C, + 0x50, 0x27, 0x9C, 0xBD, 0xE8, 0xE1, 0x49, 0x3D, 0x2D, 0xD7, 0x0D, 0x3E, + 0xD0, 0x42, 0xB0, 0x3E, 0x94, 0x5D, 0x9F, 0x3E, 0xDF, 0x4A, 0x24, 0xBE, + 0xDB, 0x09, 0x9C, 0xBD, 0xE4, 0xA9, 0x6A, 0xBE, 0x22, 0x67, 0xF5, 0x3E, + 0x0B, 0xFF, 0x6B, 0x3B, 0xDE, 0x75, 0xEE, 0xBC, 0x35, 0x26, 0x99, 0xBE, + 0x54, 0x28, 0xBC, 0x3D, 0xA3, 0xE4, 0xAA, 0x3D, 0xD2, 0xC0, 0xBE, 0x3D, + 0x3E, 0x6D, 0xE2, 0x3D, 0x50, 0xC3, 0x04, 0x3F, 0x00, 0x58, 0xAB, 0x3C, + 0xD9, 0x71, 0xB6, 0xBF, 0x73, 0xCF, 0x1D, 0xBE, 0xB1, 0x5C, 0xA2, 0x3C, + 0x72, 0x5E, 0x90, 0xBE, 0xCA, 0x5C, 0x6D, 0xBE, 0x64, 0x2D, 0xA3, 0xBF, + 0x73, 0xE0, 0xB8, 0xBD, 0x7F, 0xF3, 0xB2, 0xBE, 0x1B, 0x3E, 0xD8, 0x3E, + 0xC8, 0xD9, 0xB2, 0x3E, 0x24, 0xE1, 0x2D, 0xBE, 0x18, 0x99, 0xB2, 0x3D, + 0xAC, 0x98, 0xC6, 0x3E, 0xF2, 0x57, 0xB3, 0xBE, 0xDD, 0x6D, 0xBE, 0x3C, + 0x8F, 0x60, 0x09, 0xBE, 0x96, 0xF7, 0x7A, 0x3F, 0x8E, 0xFB, 0x23, 0x3D, + 0xA8, 0x5D, 0x58, 0x3F, 0x74, 0x8C, 0xE5, 0xBE, 0x51, 0x04, 0x00, 0x3D, + 0x2B, 0xB2, 0xD2, 0x3E, 0x37, 0xEE, 0xD1, 0xBE, 0x1D, 0x01, 0x55, 0xBE, + 0x6F, 0x84, 0x02, 0x3D, 0xB7, 0x86, 0x05, 0x3F, 0xC7, 0x2F, 0xE4, 0x3C, + 0x0D, 0x5E, 0x7F, 0x3E, 0x97, 0x00, 0x82, 0x3E, 0xD8, 0x40, 0x95, 0x3E, + 0x7B, 0x6A, 0x13, 0xBD, 0x60, 0xEE, 0x67, 0xBC, 0xEB, 0xD5, 0xE6, 0x3D, + 0x0F, 0xA1, 0x1B, 0xBE, 0x57, 0x76, 0x79, 0xBE, 0xDF, 0x53, 0x40, 0xBF, + 0x5C, 0x14, 0xC6, 0xBD, 0x26, 0x2C, 0x9E, 0xBE, 0xDE, 0x55, 0x30, 0x3F, + 0x68, 0xF0, 0x63, 0xBE, 0x6A, 0x7A, 0xCB, 0x3E, 0x1F, 0x22, 0x80, 0xBE, + 0xDB, 0xF8, 0x10, 0x3E, 0x59, 0x1D, 0x4A, 0x3E, 0xA2, 0xB1, 0x96, 0xBE, + 0xE4, 0x35, 0xB6, 0xBE, 0x14, 0xCB, 0xDF, 0xBD, 0xC0, 0xF3, 0xEB, 0x38, + 0x77, 0xF2, 0x00, 0x3E, 0x4E, 0x36, 0x44, 0xBF, 0x35, 0x30, 0x88, 0xBE, + 0x9A, 0x77, 0x12, 0xC0, 0x11, 0x14, 0x2E, 0xBD, 0xBC, 0xF3, 0x28, 0xBF, + 0xCD, 0x89, 0x6C, 0xBF, 0xC6, 0x00, 0x74, 0x3D, 0xA0, 0x81, 0x91, 0xBD, + 0xD1, 0xB8, 0xB6, 0x3E, 0x7A, 0xE9, 0xB0, 0xBC, 0x66, 0xE0, 0xDE, 0x3E, + 0x53, 0xB8, 0x94, 0xBE, 0xBD, 0x26, 0x9A, 0x3B, 0xA3, 0xDF, 0xD9, 0xBE, + 0xA3, 0x2E, 0x0F, 0xBE, 0x9D, 0x92, 0xC4, 0x3C, 0xEE, 0x34, 0xD1, 0xBE, + 0xF1, 0x5A, 0xAB, 0xBC, 0x70, 0x66, 0xC4, 0x3E, 0x1C, 0x50, 0x36, 0xBE, + 0x0B, 0xE7, 0x81, 0xBF, 0x56, 0xEF, 0x24, 0xBF, 0x6D, 0x50, 0x30, 0x3E, + 0xC1, 0x87, 0x40, 0xBE, 0x8D, 0x81, 0x60, 0xBB, 0x0D, 0x05, 0x17, 0x3E, + 0xEE, 0x6E, 0x05, 0x3E, 0x86, 0xC0, 0xA6, 0x3E, 0x88, 0x11, 0x93, 0xBE, + 0x78, 0xCF, 0x82, 0x3D, 0x7E, 0x2C, 0xB7, 0xBE, 0x2D, 0x12, 0x4F, 0x3F, + 0x8C, 0xBB, 0xB6, 0xBD, 0x09, 0x7A, 0x42, 0x3E, 0xFB, 0x41, 0x9B, 0x3F, + 0x0F, 0x49, 0x28, 0xBD, 0xAF, 0x0B, 0x8A, 0x3F, 0x2D, 0x5C, 0xB6, 0x3E, + 0xC4, 0x01, 0x1F, 0xBC, 0x85, 0xC4, 0x37, 0x3E, 0xEA, 0x70, 0x94, 0xBE, + 0xB7, 0x94, 0xA1, 0xBE, 0x7C, 0xFC, 0x37, 0xBE, 0x7F, 0x05, 0x33, 0xBE, + 0x30, 0x13, 0x85, 0x3E, 0x8A, 0xA2, 0xD5, 0x3E, 0x61, 0xE1, 0xB8, 0xBE, + 0x0B, 0xBB, 0xCB, 0x3C, 0xBF, 0xFF, 0x7A, 0x3F, 0x54, 0xB9, 0x84, 0x3C, + 0x5B, 0xA6, 0x3B, 0xBE, 0x80, 0x20, 0x28, 0x3E, 0x9E, 0x5F, 0x14, 0x3E, + 0xF7, 0xB0, 0xA4, 0x3D, 0x19, 0x93, 0xB4, 0xBC, 0xA2, 0xD7, 0xB3, 0x3D, + 0x6C, 0x14, 0x4E, 0x3D, 0xF9, 0xF0, 0x2F, 0x3D, 0x20, 0x88, 0x5F, 0x3C, + 0xAA, 0x52, 0xC2, 0x3C, 0xF5, 0xAF, 0x48, 0xBD, 0xD8, 0x76, 0x48, 0x3C, + 0xAD, 0x7C, 0xA2, 0x3C, 0xCE, 0xAB, 0xB8, 0xBE, 0xFA, 0x35, 0x80, 0xBD, + 0xE1, 0x3D, 0xE8, 0x3C, 0xB7, 0x43, 0xAB, 0x3D, 0x8D, 0x89, 0x3C, 0xBD, + 0x10, 0xB5, 0xBF, 0xBD, 0x38, 0x78, 0x49, 0xBD, 0xF1, 0x36, 0xA4, 0xBC, + 0xAE, 0x35, 0xFE, 0xBD, 0x46, 0xD7, 0x9A, 0xBE, 0x04, 0x14, 0x55, 0x3E, + 0xBE, 0xC7, 0x75, 0x3D, 0x7C, 0x8C, 0xF7, 0x3C, 0xCF, 0x5E, 0xE6, 0xBC, + 0x96, 0x2C, 0x4A, 0x3D, 0x93, 0x96, 0xDA, 0xBC, 0x35, 0x19, 0x99, 0xBE, + 0xD4, 0xB8, 0x13, 0xBE, 0x06, 0x2A, 0x5A, 0xBE, 0xD8, 0x87, 0xA9, 0xBC, + 0xF7, 0x9E, 0x23, 0x3C, 0xB5, 0x7C, 0xAD, 0x3E, 0x92, 0x80, 0x9D, 0xBD, + 0x26, 0xA5, 0x8E, 0xBD, 0x72, 0xD1, 0xA2, 0x3C, 0xF7, 0xAD, 0x16, 0xBE, + 0xFD, 0xAD, 0x85, 0x3D, 0x6D, 0xAA, 0xCA, 0x3D, 0xA0, 0x6A, 0x8D, 0xBC, + 0xD8, 0x6B, 0x39, 0x3C, 0x50, 0x6C, 0x90, 0xBD, 0xAA, 0x61, 0xA3, 0xBD, + 0xFE, 0x31, 0x1D, 0xBE, 0xE8, 0x9F, 0x8D, 0x3D, 0xC9, 0x1E, 0x46, 0x3D, + 0x91, 0x3C, 0xAF, 0xBC, 0x67, 0xC5, 0x1F, 0x3C, 0x43, 0x43, 0x50, 0xBE, + 0x13, 0x6C, 0xF6, 0xBD, 0x97, 0x8E, 0x60, 0x3C, 0x24, 0x9F, 0xF5, 0xBD, + 0x42, 0xD1, 0xEC, 0x3C, 0xDC, 0x0A, 0x6B, 0xBA, 0xF7, 0x2B, 0x42, 0xBE, + 0xB1, 0x4A, 0x94, 0x3D, 0xE1, 0x2B, 0xC1, 0xBD, 0x68, 0x69, 0x83, 0xBD, + 0xFE, 0xA7, 0x7D, 0x3D, 0xD9, 0x77, 0x86, 0xBE, 0xC3, 0xDA, 0xE6, 0xBA, + 0x7C, 0x68, 0x26, 0x3E, 0x82, 0xC6, 0x77, 0xBE, 0xA0, 0xF5, 0xE8, 0x3C, + 0x97, 0xAB, 0x63, 0xBD, 0x39, 0x18, 0x6E, 0x3D, 0xAD, 0xFC, 0x41, 0x3D, + 0xD2, 0xC0, 0x0B, 0xBD, 0x7A, 0x76, 0xB4, 0xBD, 0x6E, 0xEB, 0x8D, 0xBC, + 0x58, 0xF7, 0x2F, 0xBC, 0x9A, 0x6E, 0x4C, 0xBD, 0xA2, 0x60, 0xEC, 0x3D, + 0x03, 0x19, 0x66, 0x3B, 0x5F, 0x5E, 0x37, 0xBB, 0x7A, 0x01, 0x13, 0xBE, + 0x75, 0xF8, 0xD5, 0x3C, 0x16, 0x9A, 0xA4, 0x3D, 0xA8, 0x18, 0x6A, 0x3C, + 0x2C, 0xD1, 0x51, 0x3C, 0x67, 0xB8, 0xEB, 0xBD, 0x8C, 0xDC, 0x9B, 0xBD, + 0x27, 0x94, 0x21, 0x3D, 0x34, 0x21, 0x5E, 0x3C, 0xFB, 0x4A, 0x45, 0xBC, + 0x9B, 0x07, 0x3F, 0xBD, 0xF5, 0xF3, 0x6C, 0xBD, 0x0C, 0x77, 0x4C, 0x3B, + 0xC1, 0x1B, 0x0E, 0x3C, 0x06, 0x72, 0xA1, 0x3D, 0xCB, 0x2B, 0x87, 0x3D, + 0x2D, 0xC0, 0xF4, 0x3E, 0x7C, 0xDF, 0x34, 0x3D, 0xAD, 0x57, 0x8E, 0x3D, + 0x88, 0xBF, 0x0A, 0xBE, 0xE6, 0xAA, 0x8E, 0xBD, 0xA0, 0x5C, 0x2B, 0xBD, + 0x10, 0x65, 0x97, 0x3D, 0x2C, 0x13, 0x96, 0xBC, 0xC4, 0x33, 0x04, 0xBE, + 0xE8, 0xFE, 0xEB, 0xBB, 0x75, 0x4B, 0x22, 0xBC, 0xBF, 0x7C, 0xB1, 0x3C, + 0x70, 0xBB, 0x0C, 0x3E, 0xBB, 0x63, 0xAF, 0xBC, 0xEE, 0x6C, 0x34, 0xBD, + 0x8B, 0xD3, 0x66, 0x3D, 0x3B, 0x90, 0xAE, 0xBD, 0x0A, 0x6D, 0x80, 0xBD, + 0xF1, 0xC8, 0x5A, 0x3D, 0x5C, 0x39, 0xB1, 0xBD, 0x98, 0xAC, 0x3F, 0x3C, + 0x3A, 0xB0, 0xA1, 0xBD, 0x49, 0x8B, 0x13, 0x3D, 0xB5, 0x17, 0xA0, 0x3C, + 0x58, 0x67, 0xE2, 0xBC, 0xF0, 0x1E, 0x5D, 0x3E, 0x0D, 0x78, 0xA5, 0xBD, + 0x61, 0x8B, 0x49, 0x3D, 0xA1, 0xDA, 0x29, 0x3B, 0xBA, 0xFF, 0xBC, 0xBC, + 0x5A, 0xDE, 0x59, 0xBC, 0x15, 0x96, 0x77, 0x3B, 0x1E, 0x98, 0xA4, 0xBE, + 0x92, 0xF7, 0xF7, 0x3D, 0x8C, 0x73, 0xC0, 0xBC, 0x42, 0xBF, 0xE1, 0x3D, + 0xFB, 0xE8, 0x8F, 0x3D, 0xEC, 0x12, 0x6B, 0xBE, 0x0E, 0x7B, 0x01, 0xBE, + 0x0B, 0x70, 0x84, 0xBC, 0x77, 0x67, 0xF4, 0x3C, 0x47, 0x56, 0x05, 0xBE, + 0x37, 0xE5, 0xFB, 0x3C, 0x92, 0xAF, 0x86, 0xBB, 0x6B, 0x0A, 0x57, 0x3D, + 0x4C, 0x8C, 0x2B, 0xBB, 0x69, 0xB9, 0x89, 0x3D, 0xD5, 0xBE, 0xED, 0x3D, + 0xE4, 0x17, 0xC5, 0xBE, 0xF1, 0x97, 0x84, 0x3E, 0xB8, 0x88, 0x1F, 0xBD, + 0xD6, 0x77, 0xD2, 0x3D, 0xC4, 0x02, 0x3B, 0xBC, 0x20, 0xEC, 0x19, 0xBE, + 0xDB, 0xD4, 0xB5, 0xBC, 0x8F, 0x93, 0x98, 0xBA, 0xFF, 0xD2, 0x66, 0xBD, + 0xCF, 0x73, 0xFF, 0x3B, 0xF2, 0x2B, 0x95, 0x3C, 0x0A, 0x4E, 0xDD, 0x3C, + 0x7A, 0x05, 0x3B, 0x3D, 0x3C, 0x0C, 0x7C, 0xBD, 0x7A, 0x80, 0x81, 0x3E, + 0xFF, 0x2C, 0x1A, 0x3E, 0xF2, 0xFE, 0x9D, 0x3D, 0x4E, 0x94, 0x0C, 0x3C, + 0x2D, 0xEB, 0x60, 0xBD, 0x70, 0x77, 0x6C, 0xBD, 0xA6, 0xCE, 0x73, 0xBE, + 0xB7, 0xCD, 0x17, 0x3F, 0x26, 0x85, 0xDA, 0x3C, 0x96, 0x0B, 0x34, 0x3D, + 0x1B, 0x27, 0x4B, 0x3D, 0xFC, 0xA1, 0xCF, 0xBC, 0xD7, 0xBF, 0xC3, 0xBD, + 0xE5, 0xC2, 0x2D, 0x3E, 0x29, 0x01, 0xD3, 0x3D, 0x13, 0x8C, 0xC4, 0xBB, + 0x34, 0xCD, 0xB5, 0x3D, 0x55, 0x46, 0x52, 0xBE, 0x70, 0xD4, 0xB0, 0x3E, + 0x3A, 0x4F, 0x00, 0xBF, 0xDD, 0xDF, 0xDD, 0xBD, 0x51, 0xCB, 0x05, 0xBD, + 0x44, 0x98, 0x8F, 0x3D, 0xF9, 0x9A, 0xC0, 0xBD, 0x2C, 0xB6, 0xDA, 0x3E, + 0xCB, 0x03, 0xCC, 0x3D, 0xF3, 0x4F, 0x0C, 0x3C, 0x2B, 0xA0, 0x09, 0xBE, + 0x95, 0x9C, 0x7D, 0xBB, 0x78, 0x41, 0xB9, 0xBE, 0x87, 0xDD, 0xAA, 0x3C, + 0xB6, 0xEB, 0xD9, 0x3C, 0x1B, 0xBF, 0x2C, 0x3E, 0x5D, 0x19, 0xC9, 0x3D, + 0x13, 0xA8, 0x28, 0x3C, 0x7E, 0x86, 0xA6, 0x3E, 0x4F, 0x88, 0x1C, 0xBD, + 0xB7, 0x35, 0x88, 0x3E, 0xBD, 0xF8, 0xF7, 0xBD, 0xA2, 0xDB, 0x2F, 0xBE, + 0xD3, 0x36, 0x3F, 0xBE, 0x1B, 0x1F, 0xE2, 0x3C, 0xFC, 0x02, 0x11, 0xBD, + 0xB7, 0x3F, 0x77, 0xBD, 0xCE, 0x57, 0x91, 0xBD, 0x76, 0x0B, 0xC2, 0x3D, + 0x57, 0x0D, 0xF3, 0xBD, 0x49, 0x0A, 0x8E, 0x3D, 0x3D, 0x82, 0x33, 0x3B, + 0x76, 0xE1, 0x89, 0xBA, 0xAA, 0x6C, 0xBE, 0xBD, 0x72, 0x7A, 0xB2, 0x3D, + 0x73, 0x5D, 0xBE, 0xBD, 0x2D, 0x6D, 0x08, 0x3D, 0x2C, 0x42, 0x49, 0x3B, + 0x1E, 0xE5, 0x24, 0x3D, 0x43, 0x8F, 0xC6, 0x3B, 0x55, 0x55, 0xF8, 0xBC, + 0x54, 0xAB, 0x1E, 0xBB, 0x3C, 0x8C, 0x67, 0xBD, 0x81, 0xB8, 0xCD, 0x3A, + 0xC0, 0x5F, 0x84, 0x3D, 0x0E, 0x0C, 0x80, 0x3D, 0xAA, 0x1B, 0xCA, 0xBB, + 0x78, 0x6B, 0xCF, 0x3D, 0x7E, 0x62, 0x54, 0x3D, 0x4C, 0x9C, 0x5C, 0xBE, + 0x9E, 0x85, 0x30, 0xBD, 0x98, 0x98, 0xEF, 0x3C, 0xCC, 0x93, 0xB6, 0xBD, + 0x7C, 0x46, 0x80, 0xBD, 0x2D, 0x5B, 0xAC, 0x3D, 0x93, 0x71, 0xC6, 0x3D, + 0x57, 0xDA, 0x14, 0xBC, 0xC6, 0x1A, 0xC4, 0xBD, 0x1C, 0x7D, 0x37, 0xBA, + 0x9D, 0xBF, 0x96, 0x3C, 0xBC, 0xAA, 0xB4, 0x3D, 0xE9, 0x08, 0x62, 0xBC, + 0x24, 0x4C, 0x2E, 0xBD, 0x62, 0x3D, 0x21, 0xBD, 0xB4, 0xA0, 0xAC, 0xBC, + 0x6F, 0xAA, 0x11, 0xBE, 0xBE, 0xD5, 0xFF, 0xBD, 0xF8, 0xBC, 0x84, 0x39, + 0x60, 0x47, 0xF8, 0xBD, 0x2A, 0x23, 0x18, 0xBC, 0xD8, 0x48, 0x97, 0x3B, + 0x96, 0xE6, 0xDF, 0xBC, 0x1E, 0xFA, 0x87, 0xBC, 0xB0, 0x6D, 0x8A, 0x3B, + 0x63, 0x53, 0x9B, 0x3D, 0x6C, 0xD1, 0x18, 0xBD, 0xAB, 0x05, 0x10, 0xBC, + 0x9F, 0x9A, 0xB4, 0xBC, 0x32, 0x2A, 0xAC, 0x3C, 0x9B, 0xA4, 0x81, 0xBD, + 0x16, 0xF2, 0xCF, 0xBC, 0x8C, 0xB1, 0xD3, 0xBD, 0x00, 0x6C, 0x32, 0xBC, + 0xF7, 0x0D, 0x70, 0x3D, 0xF6, 0x67, 0x79, 0x3F, 0x7C, 0xCC, 0x2C, 0x3E, + 0x68, 0xDD, 0xB6, 0x3D, 0x5B, 0x97, 0x86, 0xBE, 0x29, 0x03, 0xFC, 0xBD, + 0xF5, 0xFA, 0x9B, 0x3D, 0xF7, 0xC0, 0x54, 0x3E, 0x55, 0x39, 0x4D, 0x3F, + 0x5C, 0x39, 0x0E, 0x3D, 0xFF, 0x15, 0x28, 0x3F, 0x1D, 0xFC, 0x3C, 0x3F, + 0x42, 0x31, 0x12, 0x3E, 0xD4, 0x75, 0x43, 0x3D, 0xA1, 0xC7, 0xAF, 0x3F, + 0x21, 0x0A, 0x48, 0xBF, 0x03, 0x7B, 0x26, 0x3F, 0xA8, 0x0A, 0x24, 0x3E, + 0xFF, 0x95, 0xC3, 0x3D, 0x31, 0xA8, 0x59, 0x3E, 0xA1, 0xA0, 0xDF, 0xBE, + 0xB7, 0x30, 0xED, 0x3E, 0x19, 0x02, 0x66, 0x3D, 0x08, 0xDB, 0x45, 0xBF, + 0x08, 0xC8, 0x8D, 0x3E, 0x5E, 0x9E, 0xD4, 0xBE, 0xA8, 0x95, 0x18, 0x3E, + 0xEC, 0xBB, 0xDA, 0xBD, 0x13, 0x63, 0x22, 0xBF, 0xDC, 0xB0, 0x98, 0x3E, + 0x59, 0x75, 0x9B, 0xBF, 0xB8, 0xD8, 0x63, 0x3F, 0xAE, 0xB3, 0x8D, 0x3E, + 0xBB, 0xDC, 0x80, 0x3F, 0x5B, 0x57, 0xD1, 0xBD, 0x40, 0x37, 0xB0, 0xBF, + 0xCE, 0x9D, 0x83, 0xBE, 0x60, 0x0F, 0x4E, 0x3D, 0xA4, 0x90, 0xF1, 0xBC, + 0x7C, 0x3E, 0x9B, 0x3E, 0xDF, 0xC0, 0xFB, 0x3D, 0xC2, 0x4A, 0x6A, 0x3D, + 0x15, 0x18, 0x57, 0x3E, 0xFF, 0x0B, 0xA7, 0x3E, 0xBC, 0x46, 0xD9, 0x3C, + 0xFA, 0xDD, 0x5E, 0x3D, 0x13, 0x18, 0xB5, 0x3B, 0x34, 0x65, 0x4B, 0x3E, + 0x6B, 0x6E, 0x1A, 0xBD, 0x0F, 0x09, 0xC0, 0x3E, 0x10, 0xA2, 0x64, 0x3B, + 0x9B, 0xA9, 0x77, 0x3F, 0xB2, 0x63, 0x26, 0x3E, 0xBE, 0xB3, 0x01, 0xBC, + 0xFE, 0x48, 0xDB, 0x3C, 0x69, 0x2B, 0x39, 0x3C, 0x6C, 0x02, 0x7E, 0xBE, + 0xA0, 0x37, 0xAA, 0x3E, 0x11, 0xAA, 0x3B, 0x3D, 0xB0, 0x28, 0x91, 0x3D, + 0xDD, 0x7C, 0x5F, 0x3E, 0xC5, 0x3B, 0x9C, 0x3D, 0xFE, 0xF2, 0x34, 0xBE, + 0x2A, 0x1B, 0x5E, 0x3E, 0x53, 0x90, 0x55, 0x3D, 0x46, 0x21, 0x74, 0x3E, + 0xEA, 0x45, 0x27, 0x3E, 0x10, 0x3B, 0x2B, 0xBF, 0xC1, 0xAD, 0xC9, 0xBE, + 0xDB, 0x7F, 0x16, 0xBC, 0xA5, 0xB8, 0x85, 0xBD, 0xD9, 0x0C, 0xEE, 0x3D, + 0xAB, 0x36, 0x84, 0x3E, 0x72, 0xEC, 0x94, 0x3C, 0x02, 0x69, 0x16, 0x3E, + 0x35, 0x69, 0xBD, 0x3D, 0x16, 0xF5, 0xCC, 0x3D, 0xF8, 0xCF, 0xC1, 0xBD, + 0x68, 0xA0, 0x05, 0xBF, 0x75, 0x30, 0xCB, 0x3D, 0x72, 0x73, 0x84, 0xBC, + 0x75, 0x2A, 0x82, 0xBE, 0x52, 0xDA, 0x9C, 0x3D, 0x06, 0xD0, 0x40, 0xBC, + 0x1B, 0xE7, 0x76, 0x3E, 0x7D, 0x46, 0xD3, 0x3A, 0xF3, 0xE0, 0x0D, 0xBE, + 0x08, 0x0C, 0x68, 0xBD, 0x15, 0xEB, 0x8C, 0x3C, 0xD6, 0x13, 0x82, 0x3D, + 0x5E, 0x83, 0xDF, 0x3D, 0x49, 0x06, 0x61, 0xBE, 0x8F, 0x6A, 0x8C, 0x3D, + 0xE8, 0xF4, 0x86, 0x3E, 0xB5, 0xEB, 0xCC, 0xBE, 0x7B, 0xF5, 0xF4, 0x3D, + 0x16, 0xDC, 0x83, 0x3E, 0x95, 0xC9, 0xAC, 0x3F, 0xFE, 0x35, 0x16, 0xBE, + 0x97, 0x64, 0xA9, 0xBE, 0x3D, 0x83, 0xFD, 0xBE, 0x98, 0x59, 0x82, 0xB9, + 0xBE, 0x2B, 0x87, 0x3E, 0x59, 0xFA, 0x30, 0xBF, 0xD3, 0x8D, 0x38, 0xBF, + 0xCE, 0x6C, 0xBB, 0xBE, 0xDB, 0xDE, 0x9F, 0x3A, 0xBA, 0xA3, 0x96, 0x3E, + 0x75, 0x54, 0x7C, 0x3E, 0x06, 0x61, 0xD9, 0xBE, 0x1F, 0x22, 0x4C, 0x3E, + 0xBD, 0x8D, 0x1A, 0x3F, 0x56, 0x50, 0x2D, 0x3E, 0x90, 0xBD, 0x0C, 0xBF, + 0xE1, 0xD2, 0x22, 0x3E, 0x40, 0xED, 0x40, 0x3E, 0xA7, 0x82, 0xD9, 0x3E, + 0xFD, 0x6C, 0xEA, 0x3E, 0x13, 0x69, 0x28, 0x3F, 0x88, 0xAC, 0x00, 0x3F, + 0xE9, 0x21, 0xF2, 0xBD, 0x5E, 0x6E, 0xB5, 0x3E, 0x5D, 0xA9, 0xFF, 0x3E, + 0xF6, 0x56, 0x7E, 0xBD, 0x25, 0x0D, 0x33, 0x3F, 0x30, 0xED, 0xC3, 0xBD, + 0x00, 0x45, 0x67, 0x3E, 0xD0, 0xEF, 0x9E, 0x3C, 0xFA, 0x37, 0x69, 0xBD, + 0x55, 0xFC, 0x96, 0xBE, 0x62, 0x30, 0x66, 0x3E, 0xBF, 0x19, 0x80, 0x3C, + 0x06, 0xC2, 0x70, 0xBF, 0x87, 0x4D, 0x0E, 0x3F, 0x2F, 0xD8, 0x81, 0x3E, + 0x41, 0xB5, 0x07, 0x3F, 0x04, 0x06, 0x63, 0xBD, 0x5A, 0x2A, 0xCE, 0x3D, + 0xA7, 0x74, 0x82, 0xBF, 0x1B, 0x6E, 0x14, 0xBF, 0x3F, 0x20, 0x7D, 0x3D, + 0x70, 0xC0, 0xAB, 0x3E, 0xCE, 0x87, 0x56, 0xBF, 0x40, 0x1F, 0x4A, 0x3E, + 0xDA, 0xC2, 0x54, 0xBE, 0x62, 0x45, 0x14, 0x3F, 0xEF, 0x44, 0x43, 0x3D, + 0x11, 0xA7, 0x8D, 0x3E, 0x37, 0x31, 0xC5, 0xBE, 0x51, 0xB6, 0x60, 0x3D, + 0xCD, 0x2D, 0x92, 0x3E, 0xA6, 0xA2, 0x52, 0x3F, 0x8C, 0xAA, 0x49, 0x3E, + 0x43, 0xC4, 0x35, 0xBF, 0x7A, 0x35, 0x57, 0xBD, 0x6E, 0xBE, 0x68, 0xBE, + 0x17, 0x6D, 0x3F, 0x3F, 0xBA, 0xC7, 0x96, 0x3C, 0xE5, 0x00, 0x5E, 0xBE, + 0x38, 0xBD, 0xDD, 0xBD, 0xF5, 0x93, 0xCC, 0xBD, 0x7D, 0x09, 0x42, 0xBE, + 0xEE, 0xC4, 0x22, 0x3D, 0x0B, 0x19, 0x32, 0x3E, 0x34, 0x9E, 0x8E, 0x3C, + 0xBC, 0x12, 0xA1, 0xBD, 0x4A, 0x67, 0xC9, 0xBC, 0x5D, 0x68, 0x68, 0x3E, + 0x98, 0x05, 0x44, 0x3E, 0x10, 0xF1, 0xE4, 0x3D, 0x4E, 0x3D, 0x19, 0xBE, + 0x2F, 0xD5, 0x95, 0xBE, 0x9F, 0x82, 0xA7, 0xBD, 0x47, 0x8B, 0x47, 0x3E, + 0xD8, 0xB8, 0xE6, 0xBE, 0x61, 0x1C, 0xB7, 0x3E, 0x03, 0x4F, 0x76, 0x3E, + 0x82, 0x1F, 0xAC, 0x3D, 0x96, 0xC5, 0x99, 0xBD, 0x29, 0xD0, 0xD0, 0x3B, + 0x62, 0xA1, 0xAE, 0xBF, 0x3B, 0xDC, 0xAE, 0x3D, 0xA7, 0x04, 0x82, 0x3C, + 0x2D, 0xF9, 0x14, 0x3F, 0xB7, 0x59, 0xCC, 0xBD, 0x4F, 0x36, 0xE8, 0x3E, + 0x9E, 0xA5, 0x27, 0xBE, 0x25, 0x9A, 0x34, 0xBD, 0x2C, 0x3D, 0x7A, 0x3F, + 0x0D, 0x73, 0x48, 0xBD, 0xF1, 0xF5, 0xF8, 0x3E, 0xDF, 0x53, 0x83, 0xBE, + 0x81, 0xF3, 0x07, 0x3E, 0x79, 0x35, 0xAC, 0x3D, 0xE1, 0x40, 0x29, 0x3B, + 0x3C, 0x9F, 0xFF, 0xBD, 0xD3, 0xE6, 0xCA, 0xBD, 0x6A, 0x50, 0x60, 0x3B, + 0x1A, 0x83, 0x10, 0x3D, 0xC4, 0xF2, 0x74, 0xBD, 0x43, 0x31, 0x19, 0xBD, + 0xC1, 0xF8, 0xB5, 0x3D, 0x37, 0x6B, 0x1C, 0xBD, 0x68, 0x66, 0xAC, 0x3D, + 0x1D, 0x27, 0x09, 0xBC, 0x1F, 0x4C, 0x99, 0x3C, 0xBA, 0x3B, 0x5C, 0xBC, + 0xD7, 0xB0, 0x87, 0xBD, 0x55, 0x4A, 0x14, 0xBD, 0x1D, 0x64, 0x82, 0xBD, + 0x83, 0x44, 0xAE, 0xBC, 0x6C, 0x6A, 0x44, 0x3D, 0x01, 0x76, 0x8B, 0xBD, + 0xE3, 0x42, 0x30, 0xBD, 0x28, 0x11, 0x81, 0xBD, 0x9E, 0x50, 0x96, 0x3C, + 0x29, 0x24, 0x6C, 0xBD, 0xE8, 0x07, 0x67, 0x3D, 0xF2, 0x86, 0xAD, 0x3D, + 0x2E, 0xB8, 0xA4, 0xBB, 0xA2, 0x39, 0x91, 0x3C, 0x23, 0x0B, 0x36, 0x3D, + 0x09, 0xA8, 0xFB, 0x3E, 0x76, 0x2B, 0xCF, 0x3C, 0x1A, 0xCA, 0xA3, 0xBD, + 0x11, 0x81, 0x0E, 0x3E, 0xD9, 0x72, 0x0D, 0xBD, 0xD8, 0x11, 0x0F, 0xBD, + 0x43, 0x48, 0xF4, 0xBD, 0x1D, 0xCE, 0x73, 0x3C, 0x7A, 0x40, 0x20, 0xBD, + 0x26, 0x2A, 0x8F, 0xBC, 0xE0, 0x94, 0xC3, 0xBC, 0x95, 0x7E, 0x02, 0x3E, + 0x6E, 0x3C, 0x42, 0xBD, 0x4E, 0x0D, 0x0B, 0x3D, 0xBE, 0x3B, 0xCA, 0x3B, + 0xF5, 0xF6, 0x26, 0xBD, 0x83, 0x3C, 0x3E, 0x3E, 0x21, 0x70, 0x4A, 0xBD, + 0x44, 0x97, 0x4C, 0xBD, 0xD0, 0x68, 0x6E, 0x3C, 0x7F, 0x2A, 0xAB, 0xBC, + 0x9B, 0xC5, 0x2F, 0xBC, 0xC9, 0x20, 0x06, 0xBD, 0xE0, 0x20, 0xDA, 0xBC, + 0x9D, 0xC5, 0x44, 0xBC, 0x50, 0x84, 0xFE, 0xBC, 0x8E, 0x2D, 0x5A, 0xBC, + 0xB8, 0x2D, 0x4C, 0x3D, 0xEB, 0x29, 0x29, 0x3D, 0xE3, 0xC0, 0xFB, 0x3C, + 0x97, 0x32, 0x0E, 0xBD, 0x0F, 0x90, 0x16, 0x3D, 0x2D, 0x13, 0x06, 0xBE, + 0x36, 0x6E, 0xD3, 0x3C, 0xE9, 0x0B, 0x7E, 0x3B, 0xA9, 0xC3, 0x5A, 0xBD, + 0x11, 0xF6, 0xD2, 0xBB, 0xFE, 0xDA, 0xA3, 0x3D, 0xC3, 0x21, 0x17, 0x3E, + 0xC2, 0x00, 0x39, 0x3C, 0x06, 0x8E, 0xBB, 0xBD, 0x14, 0xEA, 0x6C, 0x3D, + 0xB7, 0xCA, 0xD1, 0x3B, 0x10, 0xE3, 0x08, 0xBD, 0x14, 0xC3, 0x87, 0x3D, + 0xC1, 0x1F, 0xCD, 0xBC, 0x0A, 0x51, 0xA6, 0xBC, 0x7B, 0xB2, 0x78, 0xBB, + 0x41, 0x99, 0x92, 0x3D, 0xFF, 0x68, 0x8A, 0xBD, 0x68, 0x7B, 0x72, 0x3D, + 0xB1, 0xD0, 0xE3, 0xBC, 0x90, 0x6B, 0xA0, 0x3C, 0x41, 0xA2, 0x8F, 0x3C, + 0xF2, 0x0A, 0xA3, 0x3D, 0x4E, 0xC4, 0x06, 0x3D, 0x85, 0x58, 0x43, 0x3D, + 0x8D, 0x5B, 0xCA, 0x3C, 0xF8, 0xEC, 0xD4, 0xBC, 0x45, 0xA7, 0xA0, 0xBD, + 0xDE, 0xE0, 0xC0, 0xBD, 0xE8, 0xCD, 0x3F, 0x3D, 0x9F, 0x3C, 0x2F, 0xBD, + 0x18, 0x2D, 0xA4, 0x3C, 0xA1, 0x56, 0x86, 0xBE, 0x25, 0xEC, 0x81, 0xBB, + 0x49, 0x8D, 0x89, 0x3D, 0xD4, 0xEE, 0x0D, 0x3D, 0xA6, 0x65, 0x9B, 0x3D, + 0x37, 0x85, 0x83, 0x3D, 0x4A, 0xE5, 0x7E, 0x3D, 0xDB, 0x2F, 0x75, 0xBB, + 0x58, 0xFD, 0xE8, 0x3C, 0x98, 0xCF, 0xA5, 0x3C, 0x09, 0xFE, 0x81, 0x3C, + 0xA0, 0x73, 0x85, 0x3C, 0x05, 0x5E, 0x64, 0xBD, 0xDD, 0x36, 0x53, 0x3D, + 0xF8, 0x4F, 0xD1, 0x3B, 0xD7, 0x58, 0x7F, 0xBD, 0xD7, 0x00, 0x14, 0xBE, + 0xA6, 0xB5, 0xAC, 0xBD, 0xD9, 0x50, 0x51, 0x3D, 0xC9, 0x2B, 0x32, 0x3C, + 0xEF, 0x9D, 0xE7, 0xBC, 0x3E, 0xCC, 0xEE, 0x3D, 0x7D, 0xA3, 0x2E, 0xBB, + 0x22, 0xF7, 0xE1, 0x3B, 0xF1, 0x5B, 0xE5, 0xBB, 0x82, 0x00, 0x81, 0xBD, + 0x7B, 0x54, 0xBD, 0x3C, 0xC3, 0xEF, 0xCF, 0xBD, 0x7B, 0x3A, 0x36, 0xBB, + 0xA6, 0xD3, 0x5C, 0x3D, 0xA5, 0xEF, 0x03, 0xBC, 0x05, 0x00, 0xF7, 0x3B, + 0xF6, 0x23, 0x07, 0xBF, 0x3B, 0x1D, 0x2D, 0xBB, 0xC8, 0x30, 0x39, 0xBC, + 0x4A, 0x18, 0x1D, 0x3F, 0x4E, 0x7F, 0x06, 0x3D, 0xA9, 0x0F, 0x85, 0xBE, + 0x12, 0xC5, 0x53, 0xBF, 0xCC, 0x0B, 0xE6, 0x3D, 0x9B, 0x4F, 0xCA, 0xBD, + 0x9C, 0xD1, 0x6B, 0x3E, 0x02, 0xE7, 0x94, 0x3E, 0x37, 0xFF, 0x03, 0xBE, + 0xE9, 0x46, 0x28, 0xBD, 0x49, 0x20, 0x1B, 0x3F, 0x2F, 0x44, 0xE6, 0x3C, + 0x26, 0x06, 0x42, 0x3D, 0x51, 0x87, 0xBA, 0x3D, 0xF3, 0x82, 0x3F, 0x3F, + 0x37, 0x85, 0x86, 0xBE, 0x5C, 0x67, 0x81, 0x3F, 0x9A, 0xF1, 0xB4, 0x3C, + 0xE1, 0xA5, 0x28, 0x3F, 0x0B, 0x69, 0x89, 0x3E, 0xC5, 0x05, 0xE5, 0xBB, + 0xDA, 0xC3, 0x93, 0x3D, 0xCF, 0x74, 0xD9, 0xBE, 0x9C, 0xD0, 0x73, 0xBD, + 0x40, 0x29, 0x2D, 0xBE, 0x6D, 0xF1, 0x3B, 0xBE, 0x86, 0xC9, 0x0E, 0x3E, + 0x69, 0x90, 0x84, 0x3F, 0x0B, 0x65, 0x50, 0x3B, 0x67, 0x21, 0x27, 0x3E, + 0x5F, 0xD0, 0xB6, 0x3D, 0x4A, 0x95, 0xC9, 0x3D, 0x9E, 0x62, 0x05, 0x3F, + 0x2A, 0x24, 0x86, 0xBD, 0x69, 0x55, 0x0E, 0xBE, 0xEC, 0x43, 0x5B, 0xBF, + 0xC8, 0x80, 0xD0, 0x3D, 0x01, 0xC2, 0xB9, 0xBD, 0x18, 0x18, 0x23, 0x3E, + 0xEC, 0xD0, 0xE5, 0xBE, 0x9B, 0x33, 0x50, 0xBD, 0x4D, 0x6E, 0x65, 0x3E, + 0x74, 0x2E, 0x9E, 0x3D, 0x4D, 0x8F, 0x20, 0x3D, 0x9D, 0x14, 0x3E, 0xBD, + 0x36, 0x47, 0x84, 0xBE, 0x6E, 0xB5, 0x24, 0x3E, 0xC1, 0xEF, 0x5E, 0x3E, + 0x64, 0x30, 0x20, 0x3E, 0x63, 0xD1, 0xDA, 0x3C, 0x57, 0x72, 0x65, 0x3E, + 0x92, 0x73, 0x13, 0x3F, 0x17, 0x25, 0xC6, 0x3C, 0x05, 0x22, 0x89, 0x3D, + 0xCC, 0xD1, 0x1E, 0xBF, 0xBD, 0x64, 0x4B, 0xBB, 0xF8, 0x6B, 0x8C, 0xBE, + 0xD8, 0x93, 0x2B, 0x3E, 0x3F, 0xD2, 0xFC, 0x3C, 0xE9, 0x32, 0x8A, 0xBD, + 0xCC, 0x8F, 0xFA, 0xBA, 0xAC, 0xAA, 0x11, 0x3F, 0x01, 0xD9, 0x66, 0x3D, + 0x8F, 0x13, 0x53, 0xBD, 0xD5, 0x73, 0x5B, 0x3D, 0x55, 0x1A, 0x86, 0x3E, + 0x88, 0x01, 0x0E, 0x3E, 0xFD, 0xDF, 0x00, 0xBF, 0x66, 0xBA, 0x14, 0xBE, + 0xE0, 0x88, 0x17, 0xBD, 0xE8, 0x76, 0x79, 0x3F, 0xDF, 0x2A, 0xA0, 0xBE, + 0x02, 0x47, 0x70, 0x3E, 0x53, 0x96, 0x3F, 0x3C, 0xF1, 0xF7, 0x06, 0xBD, + 0xC0, 0x69, 0x36, 0x3E, 0x78, 0x8E, 0x3B, 0xBF, 0x6B, 0xE1, 0x13, 0xBF, + 0xA9, 0xE3, 0x9B, 0xBE, 0x0A, 0xBF, 0x76, 0x3F, 0xBE, 0xB6, 0xEA, 0xBE, + 0x1A, 0x0C, 0x90, 0xBE, 0xDE, 0x92, 0xCF, 0x3C, 0x81, 0xCB, 0x18, 0x3F, + 0xFE, 0x4E, 0x0C, 0x3F, 0x43, 0x94, 0xEC, 0x3E, 0x09, 0xE6, 0x00, 0xBD, + 0x8A, 0xD6, 0xE2, 0x3E, 0xBD, 0xDB, 0x12, 0xBF, 0x00, 0xA8, 0xD2, 0x3D, + 0x9B, 0xAE, 0x5F, 0x3F, 0x18, 0xEB, 0x8A, 0xBE, 0x6C, 0x87, 0x7A, 0x3E, + 0x6E, 0xE1, 0x02, 0xBF, 0xCA, 0xEA, 0x81, 0x3F, 0x6D, 0xEF, 0xC0, 0x3E, + 0x79, 0x05, 0x5C, 0xBE, 0xFE, 0xFC, 0xE1, 0x3B, 0x31, 0xBC, 0x2A, 0x3D, + 0x2A, 0x02, 0x11, 0x3E, 0x8F, 0xAE, 0xA7, 0xBC, 0x3D, 0xC6, 0x1A, 0xBD, + 0xB8, 0x25, 0x0A, 0x3D, 0xAE, 0xF9, 0x12, 0x3D, 0x77, 0xF2, 0x16, 0xBC, + 0x87, 0x0B, 0xAB, 0x3D, 0xC9, 0x8D, 0x57, 0xBD, 0x5D, 0x17, 0xE6, 0xBC, + 0x36, 0x90, 0x8A, 0x3C, 0xB3, 0x6A, 0x07, 0x3C, 0xF3, 0x92, 0xED, 0xBC, + 0x2B, 0xAC, 0xA7, 0x3D, 0x83, 0xD0, 0xE8, 0x3C, 0x16, 0x39, 0xA9, 0x3A, + 0xDB, 0x91, 0x21, 0xBD, 0x91, 0x62, 0x31, 0x3D, 0xAF, 0xA6, 0xF4, 0x3C, + 0xE0, 0xDD, 0x1B, 0x3C, 0x79, 0xE3, 0x94, 0x3D, 0x8F, 0x54, 0x7D, 0x3C, + 0xDE, 0x9F, 0x1E, 0xBD, 0xB6, 0xDD, 0x99, 0xBD, 0xFC, 0xE6, 0x8A, 0x3B, + 0x2E, 0xDD, 0x87, 0xBD, 0x77, 0xBC, 0xB4, 0xBD, 0xAE, 0xD3, 0xB6, 0xBD, + 0x2B, 0xDD, 0xFC, 0x3B, 0xA4, 0x23, 0xA9, 0x3C, 0x11, 0xEA, 0xA6, 0x3D, + 0xEC, 0xDD, 0x70, 0x3C, 0x8B, 0x2B, 0xFB, 0x3E, 0x65, 0xB7, 0xB7, 0xBE, + 0x87, 0xE0, 0x39, 0x3B, 0x91, 0xED, 0xFD, 0xBC, 0x5F, 0xDC, 0x09, 0x3E, + 0x9E, 0xD1, 0x93, 0x3E, 0xFE, 0x2F, 0x89, 0xBD, 0x71, 0x6B, 0xAA, 0xBE, + 0x4D, 0x53, 0xD1, 0xBD, 0x17, 0x29, 0xB2, 0xBB, 0x07, 0xAA, 0x8A, 0x3D, + 0x1B, 0x17, 0x33, 0x3C, 0x14, 0xCD, 0xC9, 0xBE, 0xB6, 0x85, 0xD6, 0x3D, + 0x6C, 0x4C, 0xE5, 0x3E, 0x8A, 0x84, 0x1E, 0xBC, 0x02, 0x9B, 0x2E, 0xBD, + 0x76, 0xDD, 0xDA, 0xBD, 0xE0, 0x0A, 0x9D, 0x3C, 0x35, 0xB3, 0x13, 0xBC, + 0xD7, 0x54, 0x09, 0x3F, 0x85, 0x45, 0xBC, 0x3D, 0x47, 0x58, 0xBD, 0x3E, + 0xB3, 0xEE, 0xE9, 0x3D, 0x7E, 0xD3, 0xC5, 0x3C, 0x7F, 0xED, 0x39, 0xBE, + 0x37, 0x66, 0x9F, 0x3D, 0x39, 0x51, 0x0E, 0xBE, 0x51, 0x3C, 0x12, 0xBE, + 0xFE, 0xED, 0xA2, 0xBD, 0x6B, 0xD7, 0xA3, 0xBE, 0x1E, 0x9C, 0xA0, 0x3C, + 0x17, 0xD7, 0x83, 0x3F, 0x92, 0xE9, 0x01, 0xBE, 0xB1, 0x35, 0xB1, 0xBE, + 0x22, 0x4A, 0x53, 0x3F, 0x04, 0x6A, 0x57, 0x3F, 0xFA, 0x9B, 0xE0, 0xBD, + 0x8B, 0xB8, 0x08, 0x3F, 0xC5, 0xD5, 0x47, 0xBE, 0xD9, 0x70, 0x20, 0x3F, + 0x28, 0x66, 0x96, 0xBE, 0xCB, 0x74, 0xBF, 0xBE, 0x31, 0x69, 0x48, 0xBF, + 0x8F, 0x6D, 0x20, 0xBF, 0xA4, 0x44, 0x7F, 0x3C, 0xD3, 0x16, 0xA0, 0xBE, + 0x4C, 0xD5, 0x94, 0xBE, 0xBD, 0xC8, 0x15, 0xBF, 0x2E, 0xCF, 0xFB, 0xBD, + 0xD7, 0x9A, 0x0A, 0x3F, 0x9B, 0x43, 0xD9, 0x3E, 0xE8, 0x16, 0xCA, 0x3C, + 0xCF, 0x75, 0x70, 0x3E, 0x8B, 0x9C, 0x52, 0xBE, 0xA0, 0xC8, 0xB6, 0x3E, + 0x06, 0xDF, 0xEF, 0xBE, 0x0F, 0x58, 0x89, 0x3E, 0x4C, 0xE8, 0xC4, 0xBE, + 0x54, 0x5E, 0xF2, 0xBE, 0xCE, 0x6D, 0x3D, 0x3F, 0x6E, 0xD7, 0xA8, 0x3F, + 0x92, 0xCA, 0x32, 0xBE, 0x6E, 0x6C, 0xFC, 0x3D, 0xAC, 0x59, 0xF9, 0xBC, + 0xF1, 0xA6, 0xC6, 0x3D, 0x0F, 0xB7, 0x7C, 0xBD, 0x97, 0x00, 0x70, 0x3C, + 0x14, 0xFC, 0xAC, 0x3C, 0xBC, 0xBD, 0x3E, 0x3D, 0xA8, 0xDD, 0xEA, 0xBC, + 0x61, 0x61, 0x3E, 0x3E, 0xCD, 0x61, 0x00, 0xBE, 0x3C, 0x26, 0x10, 0x3D, + 0xCC, 0x05, 0x9B, 0x3D, 0xBB, 0xC1, 0xD8, 0xBB, 0x35, 0xD3, 0xD3, 0x3C, + 0x14, 0x44, 0xD4, 0x3D, 0xB2, 0xB9, 0xC5, 0x3B, 0x68, 0xE2, 0x02, 0xBC, + 0x52, 0x90, 0x23, 0xBE, 0xDC, 0x98, 0x99, 0xBC, 0xCD, 0x62, 0x0E, 0x3D, + 0x79, 0xAE, 0xE1, 0xBC, 0xE8, 0x40, 0x95, 0x3D, 0x2D, 0xEF, 0x85, 0x3D, + 0x5C, 0x78, 0x89, 0xBD, 0x74, 0x8A, 0xCC, 0xBC, 0x70, 0x83, 0x46, 0xBD, + 0x78, 0xFB, 0x3F, 0x3D, 0x92, 0xA4, 0xC2, 0xBD, 0x5D, 0xB3, 0xBF, 0xBE, + 0xF5, 0xA2, 0x14, 0x3B, 0x2B, 0xF9, 0x92, 0xBD, 0xCD, 0x77, 0xC8, 0x3D, + 0xA4, 0x69, 0xEE, 0xBD, 0x74, 0x4E, 0xE1, 0x3D, 0xDB, 0xBC, 0x31, 0xBE, + 0xA1, 0x07, 0xC5, 0x3C, 0x5F, 0x08, 0xC3, 0xBC, 0x2D, 0xB8, 0x82, 0xBD, + 0x24, 0x54, 0x3E, 0xBC, 0xEF, 0xD3, 0xB5, 0x3D, 0x3C, 0x25, 0x90, 0xBD, + 0x98, 0x88, 0x74, 0x3D, 0xA1, 0xC0, 0x7D, 0xBB, 0xD4, 0xC9, 0xE4, 0xBD, + 0xD8, 0x14, 0x86, 0x3E, 0x72, 0x85, 0x3E, 0xBD, 0xC2, 0xFD, 0x77, 0xBD, + 0x6F, 0x8B, 0x6C, 0xBD, 0x25, 0xA6, 0xC7, 0x3B, 0x54, 0x38, 0x30, 0x3C, + 0xEF, 0x79, 0xFF, 0x3B, 0xE4, 0x05, 0x90, 0x3B, 0x7E, 0x46, 0x8A, 0x3D, + 0x96, 0x2A, 0x7F, 0x3D, 0xD8, 0x89, 0xD1, 0xBD, 0x53, 0x2B, 0x1C, 0x3D, + 0xF3, 0xA5, 0x03, 0x3D, 0x30, 0xCB, 0x0B, 0x3D, 0xC5, 0x23, 0x1A, 0xBE, + 0xC4, 0x03, 0x65, 0x3D, 0x0C, 0xAF, 0x6B, 0x3D, 0x71, 0x58, 0xBD, 0x3D, + 0xE1, 0x1E, 0x00, 0x3C, 0x0B, 0xAF, 0x7C, 0x3E, 0x0A, 0xE6, 0x70, 0xBB, + 0x8E, 0x97, 0x20, 0x3F, 0x07, 0x14, 0xD0, 0xBD, 0x68, 0x49, 0x8E, 0x3D, + 0x1F, 0x6B, 0xFB, 0x3D, 0x46, 0xDC, 0x86, 0x3D, 0x92, 0xC6, 0x30, 0xBE, + 0x60, 0x06, 0xF8, 0x3D, 0x3B, 0x8F, 0xD4, 0xBE, 0xB9, 0x6B, 0x4F, 0x3E, + 0xAD, 0xD7, 0x5A, 0xBE, 0x3F, 0x0A, 0x31, 0xBE, 0xBA, 0x1A, 0x7F, 0xBE, + 0x65, 0x87, 0x07, 0xBF, 0xEF, 0x46, 0x15, 0xBE, 0xD5, 0x6D, 0x37, 0xBE, + 0xB8, 0x17, 0x1C, 0xBD, 0x7A, 0xB7, 0xA1, 0x3E, 0xB5, 0xF9, 0xCB, 0xBE, + 0xCA, 0xE9, 0xFB, 0x3D, 0x33, 0xB3, 0xD7, 0xBD, 0x9B, 0xE2, 0xA4, 0xBD, + 0xD3, 0x2D, 0x30, 0xBD, 0x75, 0x6B, 0x43, 0xBE, 0x7F, 0x84, 0x65, 0xBE, + 0x88, 0xAB, 0x97, 0xBD, 0x18, 0x40, 0x94, 0x3C, 0x93, 0x54, 0x71, 0xBE, + 0x38, 0xDB, 0x0E, 0x3F, 0x5B, 0x02, 0x01, 0xBE, 0x09, 0x14, 0xC6, 0x3D, + 0x5A, 0x2B, 0x44, 0x3E, 0x64, 0x49, 0x80, 0xBE, 0x97, 0xB0, 0x74, 0x3D, + 0x7B, 0x25, 0x9D, 0xBE, 0xEA, 0xCE, 0x31, 0xBE, 0xD9, 0x1D, 0x0C, 0x3E, + 0xD0, 0x18, 0x47, 0xBF, 0x2E, 0xD1, 0x0D, 0x3F, 0x86, 0xA1, 0x3E, 0xBF, + 0x36, 0xE6, 0x9C, 0x3E, 0xCD, 0xD2, 0xD4, 0x3E, 0xA0, 0xA7, 0x3F, 0xBE, + 0xCA, 0x63, 0x56, 0x3F, 0x3A, 0x37, 0xBC, 0xBF, 0x08, 0xA2, 0x6C, 0x3B, + 0x13, 0xCD, 0x89, 0xBE, 0xBA, 0xCA, 0x2E, 0xBE, 0x8E, 0xE4, 0xBA, 0xBD, + 0xFA, 0x6B, 0xDD, 0xBE, 0xDF, 0x27, 0xAA, 0x3E, 0xA4, 0x6B, 0x70, 0xBA, + 0x0B, 0xAA, 0x7F, 0xBE, 0xE3, 0x7F, 0x48, 0x3D, 0x0F, 0x60, 0x84, 0x3E, + 0x87, 0x3A, 0xE0, 0xBE, 0x85, 0x0E, 0x02, 0xBF, 0xA5, 0x6D, 0x8B, 0x3E, + 0xC5, 0x4E, 0x58, 0x3F, 0xFB, 0x08, 0x19, 0xBD, 0x19, 0x23, 0x11, 0xBD, + 0x62, 0x3D, 0x19, 0x3F, 0xD4, 0xA4, 0xE7, 0xBE, 0x4C, 0xDB, 0xCF, 0xBE, + 0x1F, 0x68, 0x2B, 0x3C, 0xC2, 0xDC, 0x7A, 0x3F, 0x9E, 0x3B, 0x3B, 0x3F, + 0x75, 0x05, 0x94, 0xBD, 0x2B, 0x0D, 0x4B, 0x3C, 0x19, 0x30, 0x46, 0xBE, + 0x85, 0xD8, 0x6F, 0xBE, 0xE6, 0x6B, 0x89, 0xBC, 0xCD, 0xB4, 0x4B, 0x3D, + 0x9E, 0xCD, 0x4C, 0xBF, 0x5C, 0x9A, 0xC4, 0xBB, 0x7D, 0x02, 0xDA, 0xBD, + 0x36, 0xA4, 0x3A, 0xBE, 0x2F, 0x56, 0x29, 0xBF, 0xBA, 0x15, 0x5A, 0xBC, + 0x4F, 0xCA, 0xFE, 0xBE, 0xF0, 0xF4, 0x9D, 0x3C, 0x29, 0x4E, 0x1B, 0xBF, + 0xB3, 0xBA, 0x50, 0xBD, 0xAE, 0x99, 0xCC, 0x3C, 0x82, 0x11, 0x8C, 0xBC, + 0x57, 0x55, 0x9E, 0x3E, 0x5E, 0x42, 0xA4, 0x3E, 0x38, 0xF5, 0x99, 0xBE, + 0x36, 0x62, 0x5F, 0x3E, 0xDB, 0xB2, 0xCB, 0xBD, 0x94, 0x30, 0xDC, 0xBE, + 0xAB, 0xE1, 0x06, 0xBD, 0xE5, 0x13, 0x2D, 0x3F, 0x77, 0xD5, 0x70, 0x3C, + 0x83, 0x4D, 0x9C, 0xBD, 0x1E, 0x1E, 0xEA, 0x3E, 0x00, 0x74, 0x15, 0xBE, + 0xA1, 0x53, 0x64, 0xBF, 0x63, 0x0C, 0x03, 0x3F, 0xF4, 0x0E, 0x84, 0xBD, + 0xC2, 0xDF, 0xC6, 0xBD, 0x78, 0x4A, 0x8B, 0xBE, 0x52, 0x3F, 0xE1, 0x3E, + 0x4D, 0x02, 0xAA, 0x3D, 0x65, 0x45, 0xB3, 0x3E, 0x90, 0xA7, 0x30, 0xBF, + 0x1B, 0x27, 0x36, 0x3D, 0x28, 0x68, 0x46, 0xBE, 0xDE, 0x8B, 0x38, 0x3F, + 0x7B, 0x26, 0xE7, 0xBE, 0xE0, 0xCB, 0xB4, 0x3E, 0x17, 0xD8, 0x19, 0xBF, + 0xEA, 0xF7, 0x94, 0xBE, 0xAB, 0xC9, 0x9E, 0xBF, 0x46, 0x32, 0x96, 0x3E, + 0xC0, 0x6E, 0xAA, 0x3D, 0x23, 0xFC, 0x37, 0x3E, 0xFC, 0x15, 0x38, 0x3E, + 0xAB, 0xB6, 0x4D, 0xBD, 0xB6, 0x17, 0x1C, 0x3D, 0x3B, 0x91, 0x81, 0xBE, + 0xE5, 0x5F, 0x2B, 0xBE, 0xA0, 0x29, 0x82, 0xBF, 0xCF, 0x58, 0xEC, 0x3D, + 0x98, 0xC0, 0x4C, 0x3E, 0xE2, 0x15, 0xDC, 0x3E, 0xDD, 0x20, 0x61, 0x3E, + 0x5D, 0x13, 0x4E, 0x3D, 0x83, 0x43, 0x71, 0xBD, 0xE4, 0x08, 0x90, 0x3E, + 0x8E, 0x27, 0xC1, 0x3D, 0xB6, 0xF5, 0x17, 0x3D, 0x84, 0x31, 0x78, 0xBD, + 0x3B, 0x8E, 0x2A, 0x3E, 0x5A, 0x54, 0x9D, 0xBB, 0x66, 0x6A, 0x9B, 0x3D, + 0x91, 0x54, 0xBA, 0xBC, 0xC2, 0x2A, 0xDD, 0xBD, 0x09, 0x80, 0x87, 0x3D, + 0x75, 0xE4, 0xEE, 0xBB, 0x71, 0xED, 0xE9, 0xBD, 0x04, 0xC3, 0xA0, 0xBC, + 0x7E, 0xF2, 0x06, 0xBE, 0xFD, 0x98, 0x2C, 0xBD, 0xB1, 0x1A, 0xD7, 0x3C, + 0x62, 0x31, 0x7F, 0x3E, 0xF6, 0xC1, 0x02, 0x3D, 0x1D, 0x31, 0x8E, 0xBD, + 0xC1, 0xAE, 0x8E, 0x3D, 0x3B, 0xFB, 0x74, 0xBE, 0xA4, 0x51, 0xA6, 0x3D, + 0xC0, 0xF1, 0x3D, 0xBD, 0x5A, 0xBD, 0xF1, 0xBC, 0x7A, 0xAB, 0x3F, 0x3D, + 0xC3, 0xCE, 0x9D, 0xBD, 0xE2, 0xFA, 0x04, 0xBE, 0x4B, 0x37, 0x0B, 0xBF, + 0xE1, 0x1B, 0x74, 0xBE, 0x2B, 0x13, 0x3C, 0x3D, 0x84, 0x5D, 0x2D, 0xBF, + 0x1D, 0x2D, 0x2A, 0xBE, 0x4C, 0x68, 0xBF, 0xBD, 0xA9, 0x84, 0x30, 0x3F, + 0x21, 0xB4, 0x26, 0xBE, 0x84, 0x3A, 0xBA, 0x3E, 0x48, 0x47, 0xDB, 0xBD, + 0x11, 0x4C, 0x2A, 0x3F, 0xB0, 0x74, 0x52, 0x3E, 0x1D, 0x8F, 0xE2, 0xBE, + 0x69, 0x00, 0x03, 0xBF, 0x46, 0xB0, 0x29, 0xBC, 0x03, 0x9C, 0xF3, 0x3E, + 0x0F, 0x31, 0xC8, 0x3E, 0x66, 0xB9, 0x1C, 0x3E, 0x9E, 0xB1, 0x56, 0xBE, + 0x4F, 0x13, 0x11, 0xBF, 0xFA, 0x14, 0x06, 0x3E, 0x7F, 0x93, 0x9F, 0xBF, + 0xD5, 0xD5, 0xD6, 0xBD, 0xB8, 0xB5, 0x32, 0xBE, 0x9F, 0xBD, 0xE2, 0x3C, + 0x73, 0x08, 0xB7, 0x3F, 0x79, 0x0D, 0x4A, 0x3F, 0xE0, 0x43, 0xA0, 0xBD, + 0xC4, 0xAF, 0xB0, 0xBD, 0xA3, 0xA4, 0x1C, 0xBF, 0x6E, 0x92, 0xBC, 0x3E, + 0xE1, 0x96, 0xAA, 0x3E, 0x9E, 0x16, 0x63, 0xBE, 0x8F, 0x5C, 0xD9, 0xBE, + 0x2B, 0xD4, 0x21, 0xBE, 0xA1, 0x84, 0x1D, 0xBE, 0x7B, 0xE4, 0xE2, 0x3E, + 0x96, 0x0B, 0x04, 0xBF, 0x07, 0xCD, 0xAC, 0xBE, 0xEA, 0x46, 0x34, 0xBD, + 0x48, 0x3E, 0xF7, 0xBD, 0xA0, 0x49, 0x10, 0x3E, 0xB9, 0x4A, 0x33, 0x3E, + 0x4F, 0x07, 0xA3, 0xBD, 0x77, 0x71, 0x30, 0xBE, 0xC3, 0x07, 0x49, 0x3D, + 0x8D, 0x17, 0x81, 0xBC, 0x3F, 0x89, 0xFA, 0xBC, 0xAE, 0x7E, 0x0B, 0xBF, + 0xA3, 0xD2, 0xB6, 0x3E, 0xB6, 0x96, 0x7E, 0xBD, 0x17, 0x20, 0x48, 0x3F, + 0xC6, 0x16, 0x2D, 0xBC, 0x71, 0x7C, 0x3D, 0x3F, 0x86, 0x0E, 0x51, 0x3E, + 0x6E, 0x23, 0x15, 0xBD, 0x8A, 0x14, 0x18, 0xBD, 0x1A, 0x59, 0x06, 0x3F, + 0x46, 0xAF, 0xFE, 0xBC, 0x23, 0x84, 0x2A, 0xBF, 0xE7, 0xB5, 0x93, 0xBE, + 0xEB, 0x80, 0x3A, 0x3D, 0x56, 0x72, 0xCF, 0x3E, 0x6C, 0xA0, 0x3C, 0xBD, + 0x2A, 0x37, 0xF9, 0xBD, 0x99, 0x11, 0x8B, 0x3E, 0x62, 0xEB, 0x68, 0xBD, + 0x39, 0x84, 0xB9, 0x3D, 0x86, 0x90, 0xCF, 0xBD, 0xAF, 0xBF, 0x66, 0x3E, + 0x63, 0xBE, 0xEA, 0x3E, 0xFA, 0x72, 0x36, 0xBD, 0x91, 0xA1, 0x07, 0x3E, + 0x79, 0xE6, 0xC6, 0xBE, 0xB1, 0xA5, 0x55, 0x3E, 0x3B, 0xF3, 0x92, 0x3E, + 0xB2, 0xD6, 0x3B, 0xBE, 0xF1, 0x1A, 0x04, 0xBE, 0xCB, 0xEF, 0x20, 0x3E, + 0x06, 0x89, 0x35, 0x3F, 0xF0, 0xAB, 0x27, 0x3F, 0xD4, 0xB8, 0xB7, 0x3E, + 0xDF, 0x4F, 0xA0, 0xBE, 0x68, 0xE2, 0x21, 0x3F, 0x24, 0xE8, 0x37, 0x3C, + 0xA2, 0x86, 0x0E, 0x3E, 0xD0, 0x41, 0x03, 0x3F, 0x30, 0x11, 0xB2, 0xBE, + 0xF0, 0xBE, 0x5D, 0xBE, 0xC5, 0x10, 0x39, 0xBF, 0x34, 0xD0, 0x13, 0x3E, + 0x11, 0xCA, 0xCB, 0x3D, 0x35, 0x69, 0x94, 0xBD, 0x29, 0xA6, 0xC1, 0xBE, + 0x93, 0x5B, 0x40, 0x3E, 0xE0, 0x5E, 0x64, 0x3E, 0x08, 0xCA, 0xD8, 0xBE, + 0xB9, 0xFB, 0xF2, 0xBE, 0x05, 0x4F, 0x1C, 0x3E, 0x88, 0xE1, 0x2E, 0xBE, + 0xBD, 0xA2, 0x86, 0xBC, 0x66, 0xBD, 0x08, 0x3F, 0x40, 0x48, 0xEF, 0x39, + 0x30, 0x6F, 0x1F, 0xBD, 0x9A, 0x1C, 0xA5, 0xBA, 0x9C, 0xFF, 0xF9, 0x3D, + 0x83, 0x54, 0x26, 0x3E, 0x87, 0xA3, 0xC1, 0xBD, 0xCC, 0x98, 0xF8, 0xBE, + 0x12, 0xC7, 0x43, 0x3D, 0xE9, 0xC2, 0x59, 0x3C, 0x81, 0xAC, 0xAE, 0xBE, + 0x7B, 0x3A, 0xB5, 0x3E, 0x5D, 0x7B, 0x1E, 0x3E, 0x6B, 0x66, 0x4F, 0xBE, + 0x45, 0x2E, 0x41, 0xBD, 0x23, 0x9A, 0x98, 0x3C, 0x81, 0xA1, 0x94, 0xBE, + 0xB5, 0x95, 0xA9, 0x3E, 0x6F, 0xB2, 0xD9, 0xBC, 0x64, 0x34, 0x9B, 0xBC, + 0xE9, 0xE2, 0x80, 0x3E, 0xBA, 0xFA, 0xF2, 0xBE, 0x8E, 0x73, 0xEC, 0x3E, + 0x87, 0xBF, 0xF6, 0xBD, 0x99, 0x8B, 0x46, 0x3D, 0x94, 0xC1, 0xB3, 0xBE, + 0xF4, 0x3C, 0xDF, 0x3D, 0x78, 0x74, 0x4C, 0xBF, 0x4B, 0x6E, 0x9F, 0x3D, + 0x82, 0x3F, 0xC1, 0xBD, 0x0C, 0xAF, 0x06, 0x3F, 0xDC, 0xBA, 0xB2, 0xBC, + 0x17, 0x9A, 0xA7, 0xBF, 0x4D, 0x63, 0x66, 0xBE, 0xCA, 0x75, 0xA3, 0x3C, + 0xB7, 0xFB, 0x13, 0xBE, 0x66, 0xA5, 0xB3, 0x3E, 0x6D, 0xE7, 0xC2, 0x3E, + 0xF0, 0x7F, 0xE4, 0x3E, 0x84, 0x19, 0x6C, 0xBE, 0x43, 0xA7, 0x55, 0x3E, + 0xE8, 0x99, 0x23, 0xBD, 0xC4, 0xB4, 0xE7, 0xBE, 0xB0, 0xC5, 0xF9, 0xBD, + 0x70, 0x19, 0x49, 0xBF, 0x3A, 0xB8, 0x90, 0xBE, 0x0C, 0x86, 0xB0, 0xBF, + 0x29, 0x28, 0x49, 0xBB, 0xA2, 0x21, 0xBE, 0x3E, 0xA3, 0xF1, 0xFF, 0x3E, + 0xF4, 0x50, 0xB0, 0xBE, 0x36, 0x3D, 0x96, 0x3E, 0xA9, 0x41, 0x38, 0xBF, + 0xAC, 0x25, 0xF7, 0xBD, 0xFF, 0x41, 0x59, 0xBE, 0x3D, 0xF8, 0x19, 0xBB, + 0x59, 0x79, 0xFD, 0xBE, 0x71, 0x6C, 0xC5, 0xBE, 0x33, 0xC2, 0x74, 0x3C, + 0x9E, 0x3B, 0x90, 0xBE, 0x19, 0x98, 0x6D, 0x3E, 0x51, 0xD1, 0x54, 0x3E, + 0xBC, 0x98, 0x01, 0x3E, 0x64, 0xD3, 0x8B, 0xBD, 0x60, 0x22, 0x32, 0xBC, + 0x95, 0xB7, 0x22, 0xBD, 0x3C, 0x3C, 0xD2, 0x3C, 0xDB, 0x5F, 0x12, 0xBD, + 0x91, 0x49, 0x95, 0x3C, 0x72, 0x63, 0x2A, 0xBD, 0xF6, 0xA5, 0x83, 0x3C, + 0xF3, 0xD9, 0x4B, 0xBD, 0xAF, 0xA8, 0x4E, 0x3D, 0xBE, 0x7B, 0xC7, 0xBB, + 0xB5, 0x40, 0xD3, 0xBC, 0x6E, 0x21, 0x96, 0x3D, 0xED, 0x06, 0x46, 0xBD, + 0xDE, 0xCD, 0x18, 0xBD, 0x73, 0xCA, 0xFA, 0xBC, 0x04, 0xB4, 0x3E, 0xBC, + 0x9F, 0xA0, 0x02, 0x3E, 0x95, 0x90, 0x90, 0x3D, 0x6D, 0xA5, 0xD0, 0xBC, + 0x79, 0x72, 0x3B, 0x3D, 0x53, 0x61, 0x0B, 0x3D, 0x38, 0xF0, 0xCF, 0xBD, + 0x37, 0x98, 0x4E, 0xBC, 0x4A, 0xE4, 0x66, 0x3C, 0xDF, 0x38, 0x3E, 0x3D, + 0x7C, 0x1C, 0x9E, 0xBD, 0xA2, 0x10, 0x95, 0x3C, 0xB7, 0xDB, 0x6A, 0x3E, + 0x0F, 0x11, 0xBE, 0x3C, 0x85, 0x53, 0x55, 0xBC, 0x47, 0x8D, 0x84, 0x3F, + 0x1D, 0x41, 0xD6, 0xBB, 0xE1, 0x56, 0x1E, 0xBF, 0xE3, 0x93, 0x9E, 0xBE, + 0xEA, 0x90, 0xFB, 0x3B, 0x12, 0x1A, 0x0A, 0x3E, 0x02, 0x97, 0xA0, 0x3E, + 0xD4, 0xA2, 0xB2, 0xBD, 0x2C, 0xBF, 0x81, 0xBE, 0xA3, 0x55, 0x77, 0x3F, + 0xCC, 0x1A, 0x9C, 0x3E, 0x70, 0xB3, 0x58, 0xBD, 0x85, 0x5F, 0x75, 0xBD, + 0xD8, 0x13, 0x2D, 0xBF, 0xC4, 0x7C, 0x42, 0xBD, 0xA7, 0x6A, 0xC7, 0x3F, + 0xAA, 0x59, 0xC9, 0x3D, 0x5C, 0xCB, 0xD8, 0xBC, 0x3F, 0x77, 0xCE, 0x3F, + 0x7C, 0x35, 0x2F, 0x3E, 0x9F, 0x2D, 0xBD, 0x3D, 0xAB, 0x91, 0x32, 0xBD, + 0xCE, 0xBC, 0x35, 0xBF, 0x88, 0xCB, 0x90, 0xBB, 0x71, 0xCF, 0x29, 0xBF, + 0xF0, 0x60, 0x01, 0x3F, 0xE9, 0x5F, 0x22, 0x3E, 0x68, 0x55, 0x01, 0x3E, + 0xF5, 0xB2, 0x36, 0xBE, 0xBE, 0xC5, 0x09, 0xBF, 0x64, 0x2F, 0x92, 0x3F, + 0xB2, 0xF2, 0xDB, 0x3D, 0xEF, 0x76, 0xF4, 0xBD, 0x26, 0xAE, 0x77, 0xBC, + 0xBA, 0x74, 0x30, 0xBD, 0xD6, 0x8F, 0x8A, 0x3D, 0x6A, 0xDC, 0x85, 0xBC, + 0x5D, 0x39, 0x3E, 0x3B, 0x9A, 0xBA, 0x05, 0xBD, 0xDA, 0x21, 0x31, 0xBD, + 0x6F, 0x6A, 0xAA, 0xBC, 0x1B, 0x98, 0x98, 0xBD, 0x20, 0x6F, 0xDB, 0xBA, + 0x77, 0x79, 0x12, 0xBC, 0x2D, 0x5B, 0x63, 0xBB, 0x75, 0xE3, 0x25, 0xBE, + 0xAC, 0xCB, 0xB5, 0xBC, 0x35, 0xC7, 0xBE, 0x3C, 0xB5, 0xBF, 0x87, 0xBC, + 0x7B, 0x7E, 0xD7, 0xBB, 0x30, 0xE3, 0x76, 0x3D, 0x4C, 0x76, 0x66, 0xBD, + 0x2D, 0xA0, 0x76, 0x3B, 0x4D, 0xD0, 0x03, 0xBD, 0xB4, 0x6D, 0x0B, 0x3D, + 0x27, 0x8F, 0x17, 0xBC, 0xEB, 0x49, 0x4F, 0xBD, 0xAA, 0x4D, 0xCA, 0x3C, + 0xF9, 0x31, 0xC8, 0xBB, 0x83, 0x75, 0xE5, 0x3D, 0x79, 0xF1, 0x6D, 0x3C, + 0xB4, 0xA8, 0xFD, 0xBC, 0x5C, 0x77, 0xF0, 0x3C, 0xAB, 0x31, 0x11, 0xBD, + 0x29, 0x18, 0x43, 0xBF, 0x05, 0xCD, 0xD7, 0x3D, 0x57, 0x71, 0x9A, 0x3E, + 0x03, 0x85, 0x80, 0x3F, 0xEF, 0xA5, 0xFC, 0x3B, 0x7A, 0xEA, 0x8A, 0xBD, + 0x61, 0xA2, 0xB6, 0xBE, 0xA3, 0xCA, 0x96, 0x3E, 0x28, 0x70, 0x51, 0x3E, + 0xEF, 0x10, 0x9A, 0xBE, 0x36, 0x3A, 0x2D, 0x3D, 0xE2, 0x82, 0xAF, 0x3C, + 0xBF, 0x28, 0x2C, 0x3F, 0xAE, 0x09, 0xF9, 0x3E, 0x92, 0x07, 0x5D, 0xBE, + 0x82, 0x28, 0x8F, 0x3E, 0x08, 0x02, 0x1A, 0xBE, 0x2B, 0xF0, 0x60, 0xBC, + 0x59, 0xFF, 0x59, 0xBF, 0xE4, 0xE4, 0x57, 0xBE, 0xB3, 0x77, 0xD7, 0xBD, + 0xE6, 0x96, 0xC9, 0xBD, 0xE3, 0x52, 0xB0, 0x3E, 0x48, 0xA6, 0x53, 0xBF, + 0x7A, 0x87, 0x8C, 0xBD, 0x3E, 0x77, 0x8B, 0xBE, 0x01, 0xD0, 0x4D, 0xBE, + 0xA5, 0x13, 0x6A, 0xBF, 0xA5, 0xC8, 0x87, 0x3E, 0xC8, 0xB7, 0x40, 0x3F, + 0xDF, 0x04, 0x37, 0xBF, 0x0C, 0x81, 0x70, 0xBE, 0x55, 0x01, 0x18, 0x3E, + 0x82, 0x6D, 0x17, 0x3E, 0x66, 0xD4, 0x93, 0xBE, 0xD2, 0xD3, 0xA2, 0x3F, + 0xBE, 0x2F, 0xC9, 0x3D, 0xF6, 0x2D, 0x97, 0xBE, 0x5B, 0x2C, 0xE2, 0xBE, + 0xD7, 0x99, 0x1E, 0xBF, 0x25, 0xA1, 0x8D, 0xBE, 0x01, 0x29, 0x61, 0x3E, + 0xC1, 0xDD, 0x23, 0xBF, 0xDA, 0x79, 0x39, 0xBE, 0x2A, 0xAF, 0xFB, 0x3E, + 0x0B, 0x9F, 0x8E, 0xBF, 0x80, 0x4F, 0xD9, 0xBC, 0x0C, 0xD8, 0x02, 0x3F, + 0xBD, 0xED, 0x0F, 0xBF, 0x9B, 0x0D, 0xA8, 0xBE, 0x99, 0x42, 0xAA, 0xBE, + 0x44, 0x7F, 0x0A, 0x3F, 0x6F, 0x2E, 0xD5, 0x3D, 0x08, 0x92, 0xBC, 0x3B, + 0x5E, 0x0F, 0x71, 0xBE, 0xD3, 0xA7, 0x43, 0xBF, 0x45, 0x21, 0x0C, 0x3F, + 0x11, 0x59, 0x1A, 0xBE, 0xED, 0x03, 0x45, 0x3E, 0x02, 0x0A, 0xD4, 0x3C, + 0x8E, 0x89, 0xA8, 0xBE, 0xF6, 0x79, 0x7D, 0x3E, 0x40, 0xDA, 0xD4, 0xBD, + 0x11, 0x21, 0x9C, 0xBD, 0x83, 0xFC, 0x1B, 0x3F, 0xDA, 0x61, 0x03, 0x3F, + 0xA2, 0x70, 0x23, 0x3F, 0x85, 0xD8, 0x01, 0xBE, 0x44, 0xE3, 0x53, 0x3E, + 0xCE, 0x3E, 0x26, 0xBE, 0xCA, 0x10, 0x96, 0xBD, 0xB1, 0xCF, 0x0B, 0xBF, + 0x10, 0x81, 0x2D, 0x3E, 0x19, 0x37, 0x1A, 0xBE, 0xC8, 0x8E, 0x1A, 0x3F, + 0xED, 0xC3, 0x44, 0xBE, 0xC5, 0x79, 0x8A, 0x3E, 0x27, 0x88, 0x6A, 0xBF, + 0x5E, 0xD6, 0x3D, 0xBE, 0x67, 0x2E, 0x7B, 0xBD, 0xB3, 0xA3, 0xF7, 0x3D, + 0x32, 0xD5, 0xA0, 0xBE, 0xE1, 0x38, 0x22, 0x3F, 0x6A, 0x6E, 0xBD, 0xBE, + 0xA3, 0xE7, 0xA0, 0xBC, 0x02, 0xEB, 0xFF, 0x3C, 0x1D, 0x43, 0xFC, 0xBE, + 0x1F, 0xFF, 0xBB, 0xBC, 0x20, 0xA3, 0xD5, 0xBE, 0xED, 0x34, 0xCC, 0x3C, + 0xBE, 0x36, 0x4E, 0xBD, 0x34, 0x8E, 0xE1, 0x3E, 0x46, 0xBF, 0xF7, 0xBE, + 0xE4, 0x87, 0x6A, 0xBF, 0xB0, 0x1A, 0x04, 0xBF, 0xCC, 0x0E, 0xA3, 0x3D, + 0x4E, 0x1B, 0x10, 0xBF, 0x4C, 0x43, 0x89, 0xBE, 0xD0, 0x17, 0x72, 0xBD, + 0x8A, 0x4D, 0x29, 0xBE, 0xAD, 0xEC, 0x37, 0xBE, 0xE4, 0x85, 0x6B, 0xBE, + 0x99, 0x8E, 0xA3, 0xBE, 0x36, 0x32, 0xC7, 0x3E, 0x6E, 0x13, 0x8C, 0xBC, + 0x7F, 0xBB, 0x1C, 0x3F, 0xD8, 0x54, 0x9F, 0xBD, 0x0B, 0x83, 0xB8, 0x3D, + 0x44, 0x8D, 0xA6, 0xBA, 0x6D, 0xA4, 0x0D, 0xBF, 0xB5, 0x64, 0x28, 0x3F, + 0xB3, 0x7E, 0xC2, 0xBB, 0xF2, 0xDB, 0x85, 0x3B, 0xDD, 0xD1, 0xAF, 0x3C, + 0x81, 0x7D, 0x50, 0xBF, 0x2D, 0xC7, 0xB6, 0x3E, 0x96, 0xB3, 0xA2, 0xBE, + 0x6E, 0xCD, 0x5D, 0x3D, 0x74, 0xAA, 0x07, 0x3E, 0x86, 0x75, 0xCA, 0x3D, + 0x62, 0x4F, 0x8C, 0xBD, 0x16, 0xF2, 0xB9, 0x3E, 0x6D, 0x02, 0x85, 0xBE, + 0x21, 0x21, 0x5A, 0xBE, 0x15, 0xA6, 0xDD, 0xBD, 0xF4, 0xE9, 0xDA, 0xBE, + 0xC3, 0x66, 0xE3, 0x3E, 0xC9, 0x20, 0x2A, 0x3C, 0xDD, 0x9A, 0x19, 0x3D, + 0xF9, 0xC2, 0x99, 0x3C, 0xDF, 0x51, 0x15, 0x3F, 0x27, 0x37, 0x67, 0xBF, + 0xCF, 0x2F, 0x39, 0xBE, 0x30, 0xFA, 0xDC, 0x3D, 0xEE, 0x03, 0x88, 0x3E, + 0x67, 0xD1, 0x31, 0xBD, 0x32, 0xC6, 0x4C, 0xBC, 0x36, 0x38, 0x39, 0x3F, + 0x71, 0x6E, 0x9D, 0x3D, 0x9A, 0x00, 0x87, 0xBD, 0x08, 0x4C, 0xCB, 0x3E, + 0x1A, 0x85, 0xE7, 0xBE, 0xC7, 0x16, 0xEB, 0x3E, 0x88, 0xC5, 0x9C, 0x3D, + 0xE6, 0xAF, 0x24, 0x3F, 0x7B, 0xC2, 0x96, 0x3D, 0x48, 0x97, 0x41, 0xBE, + 0xF8, 0xA3, 0x2F, 0xBF, 0x9D, 0x39, 0xB1, 0x3E, 0x26, 0x94, 0xB9, 0xBE, + 0x4E, 0x07, 0x83, 0x3F, 0x53, 0x21, 0xF4, 0xBD, 0x5B, 0x00, 0x5C, 0x3E, + 0x1B, 0x40, 0x22, 0x3E, 0x15, 0x9A, 0x29, 0x3E, 0x55, 0xF0, 0x95, 0xBE, + 0x2F, 0x33, 0x38, 0xBE, 0x6A, 0x93, 0x41, 0xBF, 0x2D, 0x21, 0xEC, 0xBD, + 0xAE, 0x05, 0xA1, 0xBE, 0x49, 0xB5, 0xFF, 0x3D, 0x79, 0xBD, 0x39, 0x3D, + 0x24, 0x6E, 0x34, 0xBF, 0x07, 0x0D, 0xCF, 0x3C, 0x86, 0x51, 0xA1, 0x37, + 0x50, 0xAC, 0xCB, 0xBC, 0xC3, 0xF1, 0xAD, 0x3D, 0x98, 0xD5, 0x8A, 0x3B, + 0xA1, 0xA9, 0xCB, 0xBD, 0x75, 0xBE, 0xC6, 0xBD, 0x94, 0x13, 0x27, 0x3E, + 0x7A, 0x21, 0xD0, 0xBC, 0x96, 0x8E, 0x7B, 0xBD, 0x70, 0x81, 0x9A, 0x3D, + 0x30, 0x76, 0x76, 0x3E, 0x9D, 0x53, 0x38, 0xBD, 0x55, 0xA4, 0xBF, 0x3E, + 0xD4, 0x3B, 0x35, 0xBC, 0x12, 0xE2, 0x98, 0x3E, 0x23, 0x31, 0xF1, 0x3D, + 0x39, 0xD5, 0xC1, 0xBB, 0x67, 0xBC, 0x0C, 0x3D, 0xDA, 0x62, 0xA1, 0xBD, + 0xF9, 0xA1, 0x82, 0xBD, 0xA4, 0xAC, 0x8C, 0xBE, 0x55, 0x25, 0x3E, 0xBD, + 0x7D, 0x8F, 0xE8, 0xBB, 0xE2, 0x40, 0x75, 0x3D, 0x4E, 0x61, 0x48, 0xBD, + 0xD0, 0xE7, 0xD9, 0x3E, 0x87, 0x89, 0x00, 0x3E, 0x46, 0x95, 0x82, 0x3D, + 0xD3, 0x30, 0x11, 0x3E, 0xB1, 0x72, 0xC1, 0x3D, 0x9A, 0x9D, 0xAA, 0x3E, + 0x67, 0xFA, 0xDF, 0x3E, 0x69, 0x56, 0x67, 0x3D, 0x7D, 0x9D, 0xA8, 0xBC, + 0x37, 0xEF, 0x39, 0x3E, 0xFE, 0xBA, 0xB3, 0xBD, 0x11, 0x52, 0x74, 0x3E, + 0xA5, 0x53, 0xAB, 0xBE, 0xA1, 0x6C, 0x9D, 0xBE, 0xDE, 0x60, 0x6D, 0xBD, + 0x25, 0xE4, 0x38, 0xBE, 0x10, 0x05, 0x31, 0xBD, 0xCE, 0x63, 0xC7, 0x3D, + 0x62, 0xF3, 0x1D, 0xBE, 0x0F, 0x46, 0x52, 0xBF, 0xC4, 0xE4, 0x31, 0xBD, + 0x10, 0xDC, 0x57, 0x3D, 0x8E, 0x43, 0x90, 0x3E, 0xD2, 0xA0, 0xE1, 0xBD, + 0xEA, 0xCF, 0x08, 0x3E, 0x5E, 0xF1, 0x2A, 0xBE, 0x4A, 0xC6, 0x95, 0x3D, + 0x87, 0x9A, 0xA8, 0x3E, 0x5A, 0x04, 0x7C, 0xBE, 0x69, 0xF7, 0x6E, 0x3E, + 0xA2, 0x56, 0x5A, 0xBF, 0x74, 0xDB, 0x07, 0xBE, 0x53, 0x28, 0x7A, 0x3D, + 0xA7, 0xAD, 0x79, 0xBE, 0xB4, 0x5A, 0xB0, 0x3D, 0xB0, 0xFA, 0xAA, 0x3D, + 0xC4, 0x44, 0xB1, 0x3E, 0xCF, 0xE1, 0x8D, 0xBF, 0x5A, 0x31, 0xE8, 0xBA, + 0xF4, 0xE8, 0x70, 0x3C, 0x75, 0xE1, 0x1A, 0xBD, 0xC1, 0xD3, 0x4F, 0xBD, + 0x41, 0x13, 0x14, 0xBE, 0xE8, 0x96, 0x9F, 0xBE, 0x81, 0xED, 0x93, 0xBC, + 0xAD, 0x2C, 0x3F, 0xBE, 0x31, 0xC9, 0x31, 0x3C, 0x74, 0x7C, 0xAE, 0x3D, + 0xBA, 0x84, 0x8A, 0xBE, 0x0B, 0x94, 0xA4, 0x3E, 0x52, 0xC0, 0x8F, 0x3D, + 0xEB, 0x6D, 0x00, 0xBE, 0x42, 0x11, 0x8F, 0x3B, 0xC3, 0x1F, 0x3C, 0x3E, + 0x88, 0x71, 0x25, 0x3F, 0x82, 0xE5, 0x17, 0x3D, 0x1A, 0xFB, 0xFA, 0xBD, + 0xC1, 0x6D, 0x35, 0x3E, 0xF6, 0x50, 0xAF, 0x3D, 0x29, 0x99, 0x04, 0x3F, + 0x86, 0x67, 0x99, 0xBD, 0xC3, 0x21, 0x94, 0x3D, 0xF2, 0xF9, 0x46, 0xBD, + 0xA3, 0x96, 0xD3, 0x3D, 0x51, 0xF0, 0xB8, 0xBF, 0xFF, 0x44, 0x3E, 0xBE, + 0x7F, 0x4A, 0xFD, 0x3C, 0xCD, 0x17, 0x9A, 0xBE, 0x1E, 0x4A, 0x7A, 0xBD, + 0x12, 0x5A, 0x34, 0x3F, 0x13, 0xAC, 0x8C, 0x3E, 0x47, 0xFA, 0x23, 0x3C, + 0xB1, 0x74, 0x9E, 0xBD, 0x27, 0x7F, 0xC7, 0xBB, 0x9A, 0xF7, 0x91, 0x3D, + 0x2B, 0xF1, 0x47, 0xBE, 0xC4, 0xDB, 0x8C, 0xBE, 0x62, 0xED, 0x83, 0x3E, + 0xF0, 0x7F, 0xB8, 0x3D, 0xCA, 0x08, 0x17, 0xBE, 0x73, 0x72, 0x25, 0x3F, + 0x52, 0xCB, 0x03, 0xBF, 0x65, 0x72, 0xEF, 0xBE, 0xA0, 0xB0, 0x91, 0x3E, + 0x64, 0xE5, 0x47, 0x3D, 0x50, 0x61, 0x71, 0xBE, 0x06, 0x4C, 0x0A, 0x3E, + 0x4E, 0x34, 0xE7, 0x3B, 0xFA, 0x30, 0x64, 0x3D, 0xA0, 0x65, 0x71, 0xBE, + 0x36, 0x19, 0x72, 0x3E, 0x53, 0xE7, 0x10, 0x3D, 0xF4, 0x50, 0x65, 0xBD, + 0x14, 0xC9, 0x9A, 0x3E, 0xBB, 0x2A, 0xDE, 0x3E, 0xDD, 0x59, 0x95, 0x3D, + 0x26, 0x5A, 0x14, 0x3F, 0x47, 0xCF, 0x0E, 0xBE, 0xA4, 0x02, 0x0F, 0xBE, + 0xC1, 0x88, 0x99, 0x3F, 0x26, 0xA1, 0x14, 0xBD, 0x95, 0xDC, 0xEC, 0xBF, + 0x14, 0x33, 0x9E, 0xBE, 0x66, 0xB5, 0xE5, 0xBD, 0x12, 0xAA, 0x28, 0x3E, + 0xF4, 0x2F, 0x1F, 0x3F, 0x03, 0xD3, 0x4B, 0xBD, 0xA9, 0xEB, 0x11, 0x3F, + 0x33, 0xB8, 0x71, 0xBE, 0xEA, 0x48, 0xB9, 0x3E, 0x1A, 0x28, 0x12, 0xBE, + 0x94, 0x72, 0xBE, 0x3E, 0xAD, 0xB2, 0xD5, 0xBF, 0xF3, 0x2B, 0x50, 0xBE, + 0xC6, 0xB8, 0xF4, 0xBE, 0xFB, 0xBA, 0x5F, 0xBF, 0x27, 0xB3, 0x4A, 0xBE, + 0x2F, 0x47, 0x9E, 0x3F, 0xB3, 0x7C, 0xEE, 0x3C, 0x39, 0x42, 0x57, 0x3E, + 0x44, 0x4B, 0x97, 0x3E, 0x64, 0x7C, 0x58, 0xBE, 0xEA, 0x56, 0x7D, 0xBE, + 0x26, 0xAE, 0x12, 0x3F, 0xB6, 0x40, 0x27, 0xBD, 0xB9, 0x47, 0x87, 0xBE, + 0x2F, 0x47, 0x4A, 0x3F, 0xFD, 0x1E, 0x9D, 0xBE, 0xB3, 0xF2, 0xE6, 0xBD, + 0x1D, 0x44, 0xD2, 0x3E, 0x9F, 0x57, 0x0A, 0x3F, 0x10, 0xAB, 0x46, 0x3E, + 0x01, 0x08, 0x4D, 0xBE, 0x3C, 0x1B, 0x13, 0x3C, 0xC5, 0xBD, 0x37, 0xBE, + 0x5E, 0x31, 0x90, 0xBC, 0xB0, 0xB0, 0x44, 0xBC, 0xB0, 0xAD, 0x07, 0xBE, + 0x46, 0x6B, 0x9C, 0x3D, 0x66, 0x65, 0x02, 0x3E, 0x82, 0xE3, 0x5B, 0x3D, + 0x99, 0xDD, 0x72, 0xBD, 0x7C, 0x63, 0x03, 0x3D, 0xE3, 0x5B, 0x7C, 0x3D, + 0xEF, 0x1D, 0x23, 0x3E, 0xBA, 0x2B, 0x5A, 0xBE, 0x9C, 0x7B, 0x65, 0xBE, + 0xCD, 0xAB, 0xF4, 0xBD, 0x84, 0x13, 0x05, 0x3C, 0x8F, 0x20, 0xC2, 0xBB, + 0xED, 0x85, 0x4A, 0xBE, 0x68, 0x5B, 0x3A, 0x3D, 0x1C, 0xAF, 0x70, 0xBD, + 0x2D, 0x1A, 0xF7, 0xBD, 0x1B, 0x32, 0x1E, 0x3E, 0xC8, 0x43, 0x6B, 0x3D, + 0x75, 0x64, 0x03, 0x3E, 0xE5, 0x74, 0xC7, 0xBD, 0x2A, 0xA9, 0xD7, 0xBE, + 0x94, 0xAE, 0xEC, 0xBC, 0x79, 0xCF, 0x36, 0xBF, 0xC1, 0x7F, 0x08, 0xBD, + 0xDD, 0xBD, 0xC5, 0x3C, 0x35, 0x03, 0x04, 0xBE, 0x3B, 0xE0, 0x0D, 0x3C, + 0x6B, 0xF0, 0x4B, 0xBE, 0x1C, 0x7A, 0xBF, 0xBD, 0xAA, 0x76, 0x9C, 0xBD, + 0x05, 0x3E, 0x5C, 0x3C, 0xB3, 0xBE, 0x76, 0xBC, 0x37, 0x9A, 0x2D, 0x3C, + 0xF6, 0x2D, 0x5B, 0x3C, 0xE6, 0x8B, 0xFC, 0x3D, 0x90, 0x0B, 0x6A, 0xBD, + 0x69, 0x13, 0x01, 0x3C, 0x7E, 0xF8, 0x12, 0x3E, 0x31, 0xF7, 0xCC, 0xBD, + 0xDD, 0xFE, 0x1D, 0xBD, 0x35, 0xEB, 0x3B, 0x3C, 0x73, 0x7A, 0xA8, 0xBC, + 0xAA, 0x9C, 0x82, 0x3C, 0xB2, 0xA3, 0xB1, 0xBC, 0x99, 0xC8, 0xC3, 0xBC, + 0x5F, 0x3A, 0xF4, 0x3C, 0x08, 0x00, 0xEB, 0xBC, 0xF2, 0x57, 0x80, 0x3D, + 0xFE, 0x09, 0x8C, 0x3D, 0xBF, 0xB1, 0x28, 0xBD, 0x48, 0xD2, 0x41, 0x3D, + 0xBC, 0xDD, 0x97, 0xBC, 0x44, 0x7C, 0x1A, 0x3B, 0x77, 0x12, 0x9F, 0xBD, + 0x8D, 0x6A, 0x80, 0xBE, 0x2F, 0xA2, 0x1A, 0x3D, 0x16, 0x1C, 0x82, 0xBD, + 0xDA, 0x3C, 0x33, 0x3E, 0x9C, 0x91, 0x9B, 0x3E, 0x80, 0x5F, 0x7C, 0xBF, + 0xDA, 0xFC, 0xA9, 0x3E, 0xC6, 0xD9, 0x47, 0x3E, 0xCE, 0x76, 0x0E, 0x3C, + 0xD5, 0x7E, 0x8A, 0xBE, 0xEC, 0x4B, 0xD5, 0xBE, 0x28, 0xFA, 0xB0, 0xBE, + 0x86, 0x7F, 0x5A, 0x3E, 0x1F, 0x02, 0xA9, 0x3C, 0xE3, 0x2A, 0x12, 0x3E, + 0x0A, 0x23, 0x2E, 0xBE, 0x66, 0xFB, 0xF5, 0xBD, 0x79, 0x1B, 0x84, 0xBE, + 0x5E, 0xEA, 0xA0, 0xBE, 0x02, 0x46, 0x92, 0xBF, 0xF8, 0x98, 0x55, 0x3D, + 0x9A, 0x80, 0x1F, 0xBB, 0x6B, 0x9F, 0x64, 0xBF, 0x5D, 0xAE, 0x62, 0x3D, + 0x36, 0x8E, 0x91, 0x3E, 0x20, 0xEE, 0x58, 0xBF, 0x4B, 0x0D, 0x5C, 0x3E, + 0xC1, 0x60, 0x4B, 0x3E, 0x50, 0x90, 0xB6, 0xBD, 0x6A, 0xDF, 0x15, 0xBF, + 0x7C, 0x16, 0xA8, 0x3F, 0xC0, 0x9D, 0x29, 0x3F, 0x5E, 0x4A, 0x53, 0xBF, + 0xDC, 0xAB, 0x8A, 0x3F, 0x4E, 0xD1, 0xEE, 0x3E, 0x7E, 0x70, 0xA6, 0x3C, + 0xF0, 0x79, 0x04, 0xBD, 0x2A, 0x4B, 0xD7, 0x3D, 0x52, 0x83, 0x7D, 0xBB, + 0x0F, 0x37, 0xBC, 0x3B, 0xF7, 0xB4, 0x13, 0xBD, 0x19, 0x99, 0x30, 0x3C, + 0x3A, 0x61, 0x49, 0x3D, 0xE8, 0x02, 0x9C, 0xBD, 0xDF, 0xDE, 0xED, 0x3C, + 0x43, 0xB0, 0x5C, 0xBC, 0x9B, 0xBA, 0xC7, 0x3A, 0x91, 0x10, 0x43, 0xBD, + 0x93, 0xBC, 0xC7, 0x3C, 0xA2, 0xC0, 0xAD, 0xBB, 0x96, 0xEF, 0x1C, 0xBC, + 0xE8, 0xF9, 0xCA, 0xBC, 0x54, 0x85, 0x6A, 0x37, 0xD5, 0xA7, 0xBD, 0x3C, + 0x20, 0xF2, 0x3F, 0xBD, 0xA5, 0xEA, 0x87, 0x3B, 0xD2, 0x0F, 0x0C, 0x3D, + 0xED, 0xD4, 0x14, 0x3C, 0x27, 0xAE, 0x06, 0x3B, 0x7A, 0x6F, 0xDE, 0xBB, + 0xF3, 0x26, 0x15, 0x3C, 0x58, 0x71, 0x81, 0x3B, 0xEE, 0x23, 0x0B, 0xBE, + 0x88, 0x40, 0x13, 0xBD, 0x1D, 0x94, 0x77, 0xBD, 0x72, 0x06, 0xBA, 0x3C, + 0xF7, 0x61, 0xAA, 0x3D, 0xEC, 0x66, 0x8A, 0x3D, 0x1E, 0xF1, 0x37, 0x3C, + 0x8D, 0x0A, 0xD0, 0xBC, 0x18, 0x81, 0xE4, 0x3B, 0xC3, 0x0B, 0x11, 0xBC, + 0x58, 0x64, 0x07, 0xBC, 0xE8, 0x9C, 0x45, 0xBD, 0x91, 0x3C, 0x3D, 0x3C, + 0x1A, 0x38, 0x20, 0x3D, 0xA3, 0x89, 0xB8, 0x3C, 0x11, 0x51, 0x9D, 0xBC, + 0x53, 0x06, 0x35, 0x3B, 0xCD, 0x75, 0xA5, 0x3C, 0xB3, 0x61, 0xAF, 0x3C, + 0x24, 0x85, 0x6E, 0xBD, 0xED, 0x82, 0xB7, 0xBC, 0x70, 0xB3, 0x0B, 0xBD, + 0x27, 0x86, 0x99, 0x3C, 0x98, 0x78, 0xC3, 0x3C, 0x00, 0xE6, 0x74, 0xBD, + 0x33, 0x83, 0x89, 0x3C, 0xFC, 0x5A, 0xE8, 0x3C, 0xD0, 0x53, 0xDC, 0xBC, + 0x3D, 0x78, 0x07, 0x3D, 0xD0, 0x4D, 0x11, 0xBD, 0xCE, 0xC8, 0xC2, 0x3C, + 0x55, 0xE8, 0x79, 0xBA, 0x12, 0xF9, 0xC2, 0xBD, 0x8D, 0x96, 0x00, 0x39, + 0xD6, 0x96, 0x51, 0xBE, 0x82, 0x87, 0x8B, 0xBC, 0xE7, 0xFE, 0x4A, 0x3C, + 0x32, 0x95, 0x43, 0x3F, 0x0C, 0x9E, 0x60, 0xBD, 0x57, 0x1D, 0xB3, 0x3F, + 0xDD, 0xD6, 0xEE, 0xBE, 0xC0, 0x3E, 0xFA, 0x3C, 0x0E, 0xC3, 0x31, 0x3D, + 0x44, 0xCD, 0x3E, 0x3E, 0xBA, 0x9F, 0x65, 0x3E, 0x70, 0x89, 0xC3, 0x3D, + 0x0D, 0xF3, 0xBE, 0xBE, 0x4B, 0x5C, 0x25, 0xBE, 0xC7, 0x85, 0xF6, 0x3C, + 0xEF, 0x75, 0x23, 0x3E, 0xEE, 0x49, 0x11, 0xBF, 0x0C, 0x91, 0xAC, 0x3E, + 0x2B, 0x42, 0xBF, 0xBE, 0x28, 0x3C, 0x38, 0x3E, 0xAD, 0x73, 0x9C, 0x3B, + 0xB9, 0x34, 0x24, 0x3F, 0xEB, 0x8E, 0x1F, 0x3E, 0xFE, 0x10, 0x7B, 0x3C, + 0x80, 0xB2, 0x85, 0x3C, 0xC4, 0x37, 0x6A, 0x3E, 0xA1, 0x54, 0x40, 0xBB, + 0xE0, 0xE1, 0x98, 0x3E, 0xB0, 0xB7, 0x9F, 0x3C, 0xB6, 0xF5, 0x4B, 0x3D, + 0x7B, 0xF2, 0xEB, 0x3D, 0xE6, 0xA7, 0x5C, 0x3D, 0xF9, 0x68, 0x2F, 0xBD, + 0x76, 0x33, 0xE8, 0xBE, 0x22, 0x52, 0x84, 0xBC, 0x3F, 0xF3, 0x26, 0xBC, + 0x92, 0x7B, 0x8E, 0xBC, 0x1D, 0x3C, 0xEC, 0xBC, 0x48, 0x48, 0x77, 0x3D, + 0xE0, 0xED, 0x3E, 0xBB, 0x2F, 0x52, 0x84, 0xBC, 0x8C, 0x9E, 0x4A, 0xBC, + 0xC1, 0x68, 0x67, 0xBB, 0xC1, 0x93, 0x69, 0xBD, 0x84, 0x27, 0x0F, 0x3D, + 0xF3, 0xD7, 0xE0, 0xBC, 0x16, 0xC2, 0xCA, 0x3B, 0x6F, 0x53, 0x87, 0x3B, + 0xC9, 0x30, 0xA0, 0x3C, 0x2F, 0x62, 0x3D, 0x3C, 0xB6, 0xAC, 0x55, 0x3C, + 0x95, 0xF7, 0x98, 0xBC, 0x19, 0x57, 0x08, 0x3B, 0x26, 0x8C, 0x30, 0xBC, + 0x43, 0xF8, 0x50, 0xBD, 0x32, 0x2D, 0x68, 0x3B, 0xDF, 0xB8, 0x3B, 0x3C, + 0x58, 0x8A, 0x4A, 0x3D, 0xD7, 0x7B, 0x9F, 0xB6, 0xDF, 0x27, 0xFD, 0xBC, + 0xBB, 0xE8, 0xA8, 0x3B, 0xCF, 0xE0, 0x10, 0xBC, 0xAA, 0x35, 0x05, 0xBC, + 0x20, 0xBF, 0x0A, 0x3B, 0x31, 0x4D, 0x91, 0xBD, 0x93, 0x4C, 0x9F, 0x3B, + 0x10, 0x44, 0xDE, 0xBB, 0xA8, 0x1F, 0xF2, 0x3E, 0xD4, 0xE5, 0x89, 0x3C, + 0xAF, 0x66, 0xF1, 0x3F, 0x31, 0x14, 0xBF, 0xBE, 0x89, 0x5C, 0xB8, 0x3D, + 0x0D, 0xC4, 0x90, 0x3D, 0x1A, 0xD5, 0xB0, 0x3E, 0x7A, 0xAF, 0xE3, 0x3E, + 0xB2, 0x1B, 0x0E, 0xBF, 0xFC, 0x78, 0x58, 0x3E, 0xAD, 0x58, 0x8F, 0x3E, + 0xA6, 0x8D, 0x24, 0x3E, 0xD8, 0x52, 0xE3, 0x3D, 0x3D, 0x3C, 0x8B, 0xBF, + 0x3F, 0x23, 0x0E, 0xBF, 0x11, 0x5A, 0x1F, 0xBE, 0x87, 0x01, 0x8C, 0x3F, + 0x7E, 0xB0, 0x1B, 0x3D, 0x06, 0x2B, 0x7A, 0x3E, 0x4E, 0xEF, 0x85, 0xBF, + 0x9B, 0x1E, 0x55, 0x3E, 0x73, 0xD1, 0xA1, 0x3E, 0xD5, 0xCE, 0x08, 0x3F, + 0x2D, 0x2F, 0x64, 0x3C, 0xE5, 0xB4, 0x62, 0xBE, 0x26, 0x07, 0x90, 0x3D, + 0xDF, 0x7D, 0x8C, 0xBE, 0xF2, 0xC0, 0x96, 0x3E, 0x4A, 0x38, 0x24, 0x3F, + 0x1A, 0x94, 0xFC, 0xBE, 0x84, 0x04, 0x8F, 0x3C, 0x8C, 0x2A, 0xA5, 0x3E, + 0xCD, 0x82, 0x19, 0x3F, 0x11, 0xB3, 0xFE, 0x3E, 0x6A, 0x64, 0x93, 0xBE, + 0xA8, 0xFF, 0x20, 0x3E, 0x1A, 0x42, 0xA3, 0xBC, 0x8F, 0x03, 0x6C, 0x3E, + 0x41, 0x5B, 0xC9, 0xBD, 0xFA, 0x8C, 0x9D, 0xBD, 0x8C, 0x22, 0x5B, 0x3A, + 0x86, 0x60, 0x44, 0x3F, 0x99, 0xA4, 0xA2, 0x3E, 0x8A, 0x3B, 0xE4, 0xBC, + 0x59, 0x93, 0x01, 0xBF, 0xB2, 0xDA, 0xD1, 0xBF, 0xE9, 0x4A, 0x64, 0xBE, + 0xE9, 0x44, 0x71, 0x3F, 0xF2, 0xFE, 0x73, 0xBE, 0xB8, 0xC2, 0x40, 0x3C, + 0xD1, 0x79, 0x87, 0xBE, 0xF9, 0xB7, 0xC9, 0xBD, 0x03, 0xF6, 0xB2, 0x3E, + 0x70, 0x3D, 0xE7, 0xBB, 0xAC, 0xB6, 0x7E, 0xBF, 0xBF, 0xA1, 0x9E, 0x3E, + 0x60, 0xEF, 0xAA, 0x3E, 0x25, 0x6D, 0x40, 0x3E, 0x44, 0xB2, 0x6E, 0x3E, + 0x2E, 0x8D, 0x8C, 0x3F, 0x46, 0x17, 0x0F, 0x3C, 0x29, 0x7C, 0xF0, 0xBE, + 0x60, 0xC8, 0x3A, 0x3F, 0x17, 0x07, 0x23, 0x3E, 0xA4, 0xC3, 0x5D, 0xBE, + 0xA2, 0xB9, 0x7C, 0xBD, 0x2F, 0x8D, 0x0F, 0x3E, 0x3D, 0xB9, 0x7E, 0x3E, + 0x3A, 0x8C, 0x6B, 0xBC, 0x0E, 0xF1, 0x41, 0xBC, 0xF8, 0x63, 0x0A, 0x3C, + 0xDD, 0x9C, 0x41, 0xBE, 0x1A, 0xF5, 0x13, 0xBE, 0x43, 0xAC, 0x0E, 0x3C, + 0x8A, 0xCD, 0x0F, 0xBE, 0x8C, 0xAD, 0xA0, 0xBD, 0xB3, 0x2B, 0x64, 0x3D, + 0x4F, 0x28, 0x31, 0x3E, 0x86, 0x5E, 0x2B, 0xBE, 0xD1, 0xA7, 0x88, 0x3D, + 0x1C, 0xDD, 0xFE, 0x3D, 0x9A, 0x05, 0x43, 0xBA, 0x5F, 0xA6, 0x5B, 0xBE, + 0xBA, 0x4C, 0x21, 0xBC, 0xCD, 0x2F, 0x04, 0x3D, 0x64, 0xB5, 0xD6, 0xBD, + 0x80, 0x8E, 0xA7, 0x3E, 0x5D, 0xCF, 0x21, 0xBE, 0xC2, 0x88, 0xCA, 0x3D, + 0x71, 0x32, 0x76, 0x3D, 0x77, 0x79, 0x01, 0x3C, 0x85, 0x90, 0x99, 0x3E, + 0x9E, 0x64, 0x4C, 0xBD, 0x22, 0x1E, 0x48, 0xBE, 0x9C, 0x4C, 0xBC, 0x3C, + 0x62, 0x19, 0x47, 0xBE, 0xE2, 0x0B, 0x1A, 0x3D, 0x4B, 0xAD, 0x45, 0xBD, + 0xF8, 0xAA, 0xF8, 0x3C, 0xE6, 0x8A, 0x8B, 0x3B, 0x0D, 0x4A, 0x3F, 0x3C, + 0xDB, 0xF6, 0x65, 0x3B, 0xBF, 0xC1, 0x1A, 0x3C, 0xE2, 0xB5, 0x24, 0x3D, + 0xEE, 0x60, 0x41, 0xBC, 0x7D, 0xA3, 0x97, 0xBD, 0xFF, 0xF9, 0x27, 0x3D, + 0x7D, 0x4D, 0x2E, 0xBC, 0xAB, 0xF2, 0x47, 0xBD, 0x14, 0x2C, 0x92, 0xBD, + 0x61, 0x72, 0xA3, 0xBC, 0x8A, 0x90, 0xBA, 0xBC, 0x79, 0x8A, 0xE0, 0xBA, + 0xFF, 0x38, 0x92, 0xBB, 0x14, 0x6C, 0xFB, 0x3C, 0xD3, 0x3B, 0x96, 0xBC, + 0x5B, 0x43, 0x1B, 0xBC, 0x01, 0xB7, 0x9A, 0x3C, 0x85, 0x6A, 0x83, 0xBD, + 0x61, 0xEF, 0xB0, 0xBC, 0x43, 0x48, 0x81, 0x3D, 0xC8, 0x58, 0xAB, 0xBB, + 0x5F, 0x29, 0x7E, 0x3C, 0x0E, 0xE7, 0xB4, 0xBC, 0x1E, 0xF8, 0x18, 0x3D, + 0x42, 0x91, 0xB3, 0xBD, 0xA6, 0x87, 0xDC, 0xBC, 0x86, 0x56, 0x17, 0x3C, + 0xAE, 0xC5, 0x16, 0xBF, 0xBD, 0xA1, 0xA4, 0xBB, 0x63, 0x9B, 0x3A, 0xBC, + 0xA4, 0x97, 0xA1, 0x3E, 0x3A, 0x32, 0xD5, 0xBC, 0x17, 0xDA, 0xAD, 0x3D, + 0x88, 0x95, 0x1F, 0xBE, 0xAE, 0xD5, 0xFE, 0xBD, 0x06, 0x42, 0xE6, 0x3D, + 0x45, 0x91, 0x10, 0xBD, 0x51, 0xB6, 0x81, 0xBE, 0x20, 0x08, 0x8B, 0x3C, + 0xC0, 0xA7, 0xBE, 0xBD, 0xDE, 0x10, 0x37, 0xBE, 0xA7, 0x14, 0xE6, 0xBD, + 0xCC, 0x75, 0x4E, 0xBD, 0x44, 0xD1, 0x33, 0xBE, 0x66, 0x7E, 0x1F, 0x3C, + 0x36, 0x17, 0x6B, 0xBF, 0x87, 0x30, 0xBE, 0xBC, 0x60, 0xAB, 0xA2, 0xBC, + 0x50, 0x2A, 0x07, 0xBC, 0x1C, 0x4F, 0x8E, 0xBD, 0x7D, 0x0D, 0x0D, 0xBC, + 0x66, 0x67, 0x85, 0xBE, 0xCF, 0xCA, 0x38, 0xBE, 0x7D, 0x37, 0xB9, 0xBD, + 0x7D, 0x9F, 0xE3, 0x3C, 0x93, 0x4A, 0x9D, 0xBD, 0xE4, 0x97, 0xED, 0x3E, + 0x14, 0x5B, 0xD1, 0xBD, 0xDB, 0x0B, 0x28, 0xBD, 0xD2, 0x4A, 0x10, 0xBF, + 0xB2, 0xD9, 0x12, 0xBF, 0x4A, 0x25, 0xF9, 0x3E, 0x79, 0xE8, 0xEB, 0xBD, + 0xA7, 0xD2, 0x8E, 0xBE, 0x7D, 0xAB, 0xF8, 0xBD, 0x22, 0xA8, 0xD8, 0xBD, + 0x2F, 0x44, 0xA2, 0xBE, 0x0F, 0xE9, 0xDD, 0xBC, 0x9E, 0x96, 0x1B, 0xBE, + 0xEC, 0x28, 0x97, 0xBF, 0xE1, 0xD0, 0x06, 0xBE, 0xF6, 0xEA, 0xEF, 0xBE, + 0x79, 0x53, 0x38, 0x3F, 0x74, 0x81, 0xB7, 0xBE, 0x9C, 0x55, 0xF7, 0xBD, + 0xC3, 0x74, 0x80, 0xBE, 0xEC, 0x1B, 0x24, 0xBD, 0x16, 0x99, 0x5F, 0xBC, + 0x8C, 0xC6, 0x94, 0x3E, 0x62, 0x7E, 0x92, 0x3B, 0x82, 0x0B, 0x75, 0xBE, + 0x41, 0xB5, 0xBD, 0x3E, 0x55, 0x4A, 0x4B, 0xBF, 0xD9, 0x88, 0x5E, 0xBF, + 0x55, 0x62, 0x81, 0xBD, 0x98, 0x56, 0xBA, 0x3B, 0x92, 0xEA, 0xDE, 0x3E, + 0x87, 0x36, 0x29, 0x3E, 0xAD, 0xAD, 0x4D, 0xBE, 0xC1, 0xBD, 0x5D, 0x3F, + 0x86, 0x26, 0x65, 0xBE, 0x58, 0x9A, 0xC2, 0xBE, 0xC2, 0xBD, 0x3F, 0xBE, + 0xC0, 0x13, 0x32, 0xBF, 0x86, 0xE6, 0x0C, 0xBF, 0xB5, 0x28, 0x04, 0xBD, + 0xF8, 0x0A, 0xAE, 0x3D, 0x68, 0xC1, 0x96, 0x3E, 0x82, 0xD6, 0xAD, 0x3E, + 0x6B, 0x8B, 0xD8, 0x3C, 0xD7, 0xC3, 0x50, 0xBE, 0xF4, 0x6D, 0xE0, 0xBD, + 0x79, 0x12, 0xB2, 0x3D, 0x20, 0xBF, 0x4F, 0xBE, 0xA9, 0x6B, 0xE3, 0x3E, + 0xEE, 0x18, 0x12, 0x3F, 0xA7, 0x8E, 0x56, 0xBE, 0x81, 0x95, 0xC6, 0x3D, + 0x94, 0x4E, 0x0D, 0x3D, 0x75, 0xF2, 0x8E, 0xBD, 0x48, 0xFF, 0x0B, 0x3E, + 0x51, 0x31, 0x65, 0xBD, 0x1B, 0x42, 0xB1, 0x3D, 0xDC, 0xBA, 0xFD, 0x3E, + 0x60, 0x5F, 0x9B, 0x3E, 0x09, 0x93, 0x26, 0x3F, 0x2C, 0x53, 0x78, 0x3E, + 0xAC, 0xA2, 0xEC, 0x3D, 0x6F, 0xB1, 0x79, 0xBE, 0x4C, 0x23, 0x88, 0xBD, + 0xA6, 0x74, 0x16, 0x3F, 0xB9, 0x1B, 0x0A, 0xBE, 0x9E, 0x3C, 0xB8, 0x3C, + 0xC9, 0x40, 0xA4, 0xBE, 0xF5, 0x81, 0x2F, 0x3E, 0x0D, 0x78, 0xAC, 0x3F, + 0x24, 0x96, 0x20, 0x3F, 0xAE, 0xC4, 0xE7, 0x3D, 0x25, 0x22, 0x29, 0x3E, + 0x72, 0xBB, 0x96, 0x3E, 0x85, 0xEB, 0x11, 0xBF, 0x05, 0xF5, 0x8F, 0x3D, + 0xCF, 0x7B, 0x60, 0x3D, 0xBA, 0x47, 0xEE, 0x3D, 0x0A, 0x3A, 0x77, 0x3D, + 0x5D, 0x36, 0x80, 0x3E, 0x9B, 0x51, 0x1C, 0x3F, 0xE4, 0x62, 0x54, 0xBF, + 0x3F, 0x23, 0xF9, 0x3D, 0x75, 0x03, 0xA6, 0xBF, 0xE6, 0x65, 0xAE, 0x3D, + 0x61, 0xD4, 0xFC, 0xBE, 0x7D, 0x99, 0x1B, 0xBE, 0xA7, 0x82, 0x9C, 0x3B, + 0x0D, 0x1F, 0xBD, 0xBE, 0x94, 0x6E, 0xEC, 0x3E, 0x2E, 0x42, 0xC7, 0x3C, + 0xC1, 0xF0, 0x8B, 0x3E, 0x33, 0x6C, 0x8C, 0xBE, 0x8F, 0x14, 0x0F, 0xBC, + 0x42, 0x99, 0xA3, 0xBF, 0xAC, 0x9A, 0x1D, 0x3E, 0xE4, 0xF2, 0x53, 0x3F, + 0x8B, 0x78, 0x75, 0xBF, 0x4F, 0x06, 0xBB, 0xBE, 0xD4, 0xA8, 0x89, 0xBC, + 0xF7, 0x7B, 0x0C, 0x3D, 0x7C, 0x2E, 0x25, 0xBE, 0x1A, 0x57, 0xA2, 0xBC, + 0x7C, 0xBF, 0x5B, 0xBD, 0x2B, 0xB4, 0x41, 0x3D, 0x9F, 0x0D, 0x91, 0x3D, + 0x0A, 0x42, 0x8F, 0x3C, 0xF1, 0x0E, 0x21, 0xBD, 0x62, 0x00, 0xC3, 0x3C, + 0x1B, 0x49, 0x5E, 0x3C, 0xC3, 0x9B, 0x1E, 0xBD, 0xBB, 0x03, 0x82, 0xBD, + 0x28, 0x46, 0x50, 0x3E, 0x9B, 0xC6, 0x59, 0x3E, 0xF6, 0x40, 0xC9, 0x3C, + 0xF1, 0x7F, 0x9A, 0x3C, 0x37, 0x96, 0x9C, 0xBB, 0x5B, 0x88, 0x8D, 0xBC, + 0x62, 0x62, 0xFC, 0x3D, 0x30, 0xBB, 0x7A, 0xBC, 0x2C, 0x0B, 0x27, 0x3D, + 0x1E, 0x2F, 0xAA, 0x3D, 0x71, 0xC1, 0x32, 0xBC, 0x4A, 0x0C, 0x65, 0xBE, + 0xDF, 0x0D, 0xB4, 0xBD, 0x57, 0x7D, 0x5B, 0x3D, 0x74, 0x80, 0x21, 0x3E, + 0x82, 0x81, 0x09, 0xBE, 0xB7, 0xD1, 0xD0, 0x3D, 0x83, 0xBB, 0xFC, 0x3D, + 0x70, 0x91, 0xFA, 0x3B, 0x7F, 0xD2, 0x43, 0xBD, 0x3F, 0x7D, 0xC8, 0xBC, + 0x4A, 0xA9, 0x89, 0xBE, 0x33, 0xAE, 0x14, 0x3E, 0xAC, 0x3B, 0x21, 0xBE, + 0xF5, 0xD5, 0x07, 0x3E, 0x29, 0xAA, 0xD5, 0xBD, 0xD3, 0x63, 0x8D, 0x3D, + 0x36, 0x64, 0xEF, 0x3C, 0x17, 0x3A, 0xB9, 0x3D, 0x04, 0x8D, 0xE4, 0xBD, + 0xA9, 0xD3, 0x5E, 0x3D, 0x49, 0x70, 0xBC, 0x3D, 0x71, 0x2C, 0xB5, 0xBD, + 0xAE, 0xD5, 0x45, 0x3D, 0x55, 0x84, 0x96, 0x3D, 0x9A, 0xC0, 0x00, 0xBD, + 0xE8, 0xED, 0x17, 0x35, 0xA8, 0x56, 0x06, 0x3D, 0x2B, 0x78, 0xAA, 0x3D, + 0xC3, 0xF6, 0x50, 0xBC, 0xF7, 0x73, 0xD9, 0xBD, 0x9A, 0x54, 0xC1, 0x3D, + 0x72, 0xEE, 0x81, 0xBC, 0xA6, 0xFB, 0x21, 0xBE, 0x07, 0x3E, 0x28, 0x3E, + 0x77, 0x9B, 0x51, 0x3D, 0x5F, 0xBD, 0x96, 0x3E, 0x98, 0x95, 0x96, 0xBC, + 0x39, 0x0E, 0xD9, 0xBE, 0x58, 0xA8, 0x55, 0x3E, 0xC6, 0xF3, 0x85, 0xBE, + 0xB1, 0x9B, 0x7B, 0x3E, 0xBE, 0x49, 0xDD, 0xBD, 0x31, 0xA5, 0x91, 0xBE, + 0xEA, 0x92, 0x6B, 0xBE, 0xC9, 0x08, 0xC0, 0x3D, 0xA6, 0xA1, 0x37, 0x3A, + 0xAE, 0xE9, 0x25, 0x3C, 0xF2, 0xDA, 0x1D, 0xBD, 0x14, 0x52, 0x6D, 0xBC, + 0xA9, 0xCE, 0x20, 0xBC, 0xC6, 0x67, 0x45, 0x3D, 0x47, 0x0E, 0xA9, 0x3C, + 0x74, 0xB7, 0x30, 0xBD, 0x95, 0x3C, 0xD0, 0x3E, 0xC4, 0xD9, 0x9F, 0x3C, + 0xFD, 0xB1, 0x23, 0xBE, 0x83, 0x7E, 0xF2, 0xBD, 0xC8, 0x02, 0x15, 0xBC, + 0x3B, 0xBC, 0x03, 0x3E, 0xA7, 0x16, 0x35, 0xBD, 0xC0, 0x9D, 0x8E, 0xBC, + 0xE7, 0x2D, 0x9C, 0x3C, 0xE0, 0xAB, 0x17, 0xBE, 0x8D, 0x97, 0x8C, 0x3D, + 0x29, 0x44, 0xA4, 0xBD, 0x37, 0x87, 0xB2, 0x3B, 0x6D, 0x63, 0xB7, 0xBC, + 0x5D, 0x5C, 0x06, 0xBE, 0x9C, 0x94, 0xCF, 0xBC, 0xB6, 0x6E, 0xA5, 0xBE, + 0xD3, 0x28, 0xDA, 0xBD, 0x01, 0xBF, 0x11, 0xBB, 0x11, 0xAE, 0x46, 0x3D, + 0x27, 0xDE, 0xEA, 0x3C, 0x68, 0xD2, 0xC4, 0xBD, 0x50, 0xDA, 0xA2, 0x3B, + 0x2D, 0xA9, 0xA9, 0x3C, 0xFF, 0x6A, 0xD8, 0x3C, 0x4A, 0x6D, 0xE6, 0x3A, + 0x59, 0x57, 0x08, 0xBD, 0xEB, 0xFC, 0xC0, 0x3D, 0x4C, 0x6E, 0xBF, 0xBD, + 0x66, 0xB1, 0x71, 0x3D, 0x31, 0x45, 0xE7, 0x39, 0x9F, 0x12, 0xB8, 0x3A, + 0x45, 0xF4, 0xBA, 0xBD, 0xDB, 0x24, 0xE5, 0x3B, 0x45, 0xB2, 0x2B, 0xBD, + 0x6A, 0x75, 0x0C, 0x3D, 0x7C, 0x11, 0x25, 0x3B, 0x10, 0xFD, 0x1C, 0x3D, + 0x74, 0x4A, 0x7D, 0x3D, 0xB5, 0xDE, 0xF5, 0xBC, 0x58, 0xB3, 0xAD, 0xBC, + 0x61, 0xF2, 0xDF, 0xBD, 0x1C, 0x34, 0x57, 0xBD, 0x6A, 0xE8, 0xAC, 0x3D, + 0x26, 0xBF, 0xB9, 0xBC, 0x0F, 0x1B, 0x90, 0x3B, 0x5C, 0x99, 0x17, 0x3E, + 0x44, 0xE9, 0xC6, 0x3D, 0x9E, 0xE1, 0x7F, 0x3E, 0x07, 0x8A, 0xB9, 0xBC, + 0x26, 0x44, 0xC0, 0x3B, 0xE5, 0xC7, 0xD9, 0xBB, 0x75, 0xA0, 0x96, 0xBD, + 0xF0, 0x31, 0x30, 0x3E, 0x04, 0xC6, 0x08, 0x3E, 0xE5, 0xD5, 0x78, 0x3D, + 0x28, 0x0D, 0xC3, 0xBC, 0xF2, 0x76, 0x48, 0x3D, 0x21, 0xFD, 0x2F, 0xBD, + 0x67, 0x1C, 0x84, 0xBD, 0x78, 0x58, 0x49, 0xBD, 0xC3, 0xED, 0xF0, 0xBB, + 0x3F, 0x27, 0x95, 0xBD, 0x21, 0x52, 0x05, 0xBE, 0x3C, 0x85, 0xAC, 0x3E, + 0x42, 0x6A, 0x1D, 0xBE, 0x84, 0xE7, 0xDA, 0x3C, 0x43, 0xAE, 0x16, 0xBD, + 0x89, 0x90, 0x35, 0xBB, 0x0F, 0x69, 0x85, 0x3D, 0xC4, 0xCB, 0x47, 0xBD, + 0x4B, 0x0D, 0x62, 0x3C, 0xD6, 0x24, 0xC3, 0x3C, 0x93, 0x36, 0x7D, 0xBD, + 0x7C, 0x7D, 0x72, 0xBD, 0xDC, 0xD0, 0xAC, 0x3D, 0xFC, 0xB4, 0x74, 0x3D, + 0x90, 0xE4, 0x82, 0x3C, 0xEC, 0x56, 0x44, 0xBE, 0x3F, 0xB6, 0xDF, 0xBD, + 0xD4, 0xDC, 0xE8, 0xBE, 0x24, 0x3F, 0xE4, 0xBD, 0x32, 0x8F, 0xD6, 0x3D, + 0xFF, 0x99, 0x47, 0x3E, 0x8E, 0x72, 0x76, 0xBD, 0xA3, 0xA7, 0x8A, 0x3E, + 0x29, 0x4E, 0xA1, 0x3D, 0xEF, 0x80, 0x0D, 0x3C, 0xD5, 0xFA, 0x14, 0xBE, + 0x9B, 0x8B, 0x89, 0x3E, 0x2D, 0x28, 0xFA, 0xBD, 0x4C, 0x5E, 0x06, 0xBC, + 0x92, 0xA1, 0x65, 0x3D, 0xB5, 0x36, 0x70, 0xBC, 0x27, 0xE7, 0x09, 0x3B, + 0x1C, 0x30, 0x9A, 0x3E, 0x9D, 0xF7, 0x6C, 0xBE, 0xD5, 0x0B, 0x37, 0x3F, + 0x7E, 0x44, 0xEC, 0x3E, 0xA3, 0x78, 0x7A, 0x3E, 0x2C, 0x15, 0x36, 0x3C, + 0xAD, 0x1F, 0xAF, 0x3D, 0xC2, 0x37, 0x2A, 0x3D, 0x06, 0xAA, 0xDE, 0x3C, + 0xA4, 0x6D, 0xA8, 0xBC, 0x39, 0x0F, 0x1B, 0x3D, 0xCB, 0x59, 0x89, 0x3C, + 0x2B, 0xB8, 0x81, 0x3E, 0xA8, 0x17, 0x84, 0xBD, 0x86, 0x99, 0x74, 0x3B, + 0x31, 0x96, 0x51, 0x3D, 0x2A, 0x04, 0xA0, 0x3A, 0xEB, 0x8A, 0x74, 0xBE, + 0x2E, 0x30, 0x02, 0xBF, 0xC6, 0xF1, 0x39, 0xBC, 0xE9, 0x3A, 0x38, 0xBD, + 0x73, 0x06, 0xDB, 0xBB, 0xF3, 0x4F, 0x68, 0x3E, 0x7D, 0x4D, 0xE1, 0x3D, + 0xB1, 0x04, 0x95, 0x3D, 0xB1, 0x81, 0xCA, 0xBC, 0x42, 0x2D, 0xE3, 0x3C, + 0x36, 0x28, 0xA4, 0x3C, 0x41, 0x56, 0xDC, 0xBD, 0xDE, 0xC3, 0xCC, 0x3C, + 0x11, 0x8C, 0x7C, 0xBD, 0xEF, 0x67, 0xA2, 0xBB, 0x8F, 0x39, 0xBD, 0xBD, + 0x53, 0xF0, 0xAC, 0x3D, 0x4D, 0x4F, 0x6C, 0xBD, 0x92, 0xFB, 0xAA, 0x3C, + 0x45, 0x63, 0x00, 0xBE, 0x6F, 0x33, 0x93, 0x3C, 0xAB, 0x9A, 0x83, 0x3A, + 0x6A, 0xD1, 0xD9, 0xBD, 0xCE, 0xFE, 0x1E, 0x3D, 0x77, 0xBD, 0x43, 0x3D, + 0x36, 0x39, 0x29, 0xBD, 0x89, 0xC6, 0xB1, 0x3C, 0x00, 0x23, 0x59, 0xBC, + 0x79, 0x92, 0x77, 0xBB, 0xC8, 0x8C, 0xC6, 0xBB, 0x6E, 0x11, 0x56, 0xBE, + 0x20, 0x8A, 0xB6, 0xBD, 0xBB, 0x9C, 0x8D, 0xBE, 0xF3, 0x34, 0x37, 0xBE, + 0x2A, 0x97, 0x1B, 0x3D, 0x47, 0x5B, 0x13, 0x3D, 0x5E, 0xC6, 0x61, 0x3D, + 0xF2, 0x5C, 0x3A, 0xBE, 0x7F, 0xA3, 0xE5, 0xBC, 0x32, 0xA2, 0x3C, 0x39, + 0x49, 0x21, 0x91, 0x3A, 0x97, 0x93, 0xC4, 0x3B, 0x1B, 0xD8, 0xE6, 0xBC, + 0x25, 0x8E, 0x1F, 0xBD, 0xE1, 0xBF, 0x3A, 0x3D, 0x6C, 0x72, 0xF1, 0x3C, + 0xFD, 0x4C, 0xAF, 0x3C, 0x51, 0x21, 0x97, 0x3C, 0xBA, 0xF4, 0x32, 0x3D, + 0x06, 0xC7, 0x06, 0x3E, 0x00, 0xA6, 0xF4, 0x3C, 0xFC, 0xB3, 0x2F, 0xBD, + 0x16, 0xC0, 0xAB, 0x3B, 0x5B, 0xA0, 0xD6, 0x3B, 0x4C, 0x07, 0xCB, 0x3D, + 0x41, 0x15, 0xA4, 0xBC, 0x82, 0x7A, 0x5D, 0xBC, 0x2E, 0xF0, 0xB7, 0xBC, + 0xBF, 0xA3, 0x09, 0x3D, 0xE0, 0xD0, 0x90, 0xBD, 0x81, 0xAE, 0xED, 0xBC, + 0x04, 0x07, 0xC7, 0xBA, 0xB2, 0xBA, 0x2C, 0x3E, 0xE3, 0xD9, 0x14, 0x3D, + 0xF8, 0xB7, 0x97, 0x3D, 0x0D, 0x9D, 0xB6, 0x3C, 0x5B, 0x24, 0x5D, 0xBD, + 0x4E, 0x2B, 0x79, 0x3F, 0x19, 0x3B, 0x2F, 0xBF, 0xD8, 0x49, 0x29, 0x3F, + 0x6F, 0x54, 0xAA, 0xBF, 0xEA, 0xF9, 0xB0, 0x3E, 0xB0, 0x05, 0xB8, 0xBE, + 0x1B, 0x2B, 0x35, 0x3F, 0xBD, 0x3A, 0x0A, 0x3F, 0xB0, 0x94, 0x8A, 0xBE, + 0x74, 0x37, 0x24, 0xBF, 0xF1, 0xE0, 0x98, 0x3F, 0x34, 0x3F, 0x55, 0x3C, + 0x3D, 0x88, 0x11, 0x3F, 0x08, 0xE7, 0x4C, 0x3F, 0x9D, 0xF1, 0x1E, 0x3D, + 0x86, 0xF0, 0x63, 0x3E, 0x8B, 0x08, 0x3C, 0x3E, 0xB8, 0xF6, 0x0F, 0x3D, + 0xA4, 0x52, 0x39, 0x3F, 0xAF, 0xB8, 0x9E, 0x3F, 0x25, 0xC0, 0x16, 0xBE, + 0xEC, 0x47, 0xD0, 0x3D, 0x3F, 0x3F, 0xD6, 0x3C, 0xDA, 0xBB, 0xBA, 0xBC, + 0x7E, 0x9C, 0x1B, 0x3F, 0x21, 0xDE, 0x81, 0xBE, 0x39, 0xD7, 0xF5, 0x3E, + 0xFF, 0x5E, 0x37, 0xBD, 0x5A, 0x19, 0x3E, 0xBD, 0x1C, 0x1C, 0x95, 0xBF, + 0x33, 0x53, 0xC9, 0xBF, 0x5C, 0x2B, 0x20, 0x3D, 0x99, 0x08, 0x4D, 0x3F, + 0xD3, 0x1D, 0x5C, 0xBE, 0xFD, 0x18, 0x69, 0x3F, 0xEA, 0x23, 0x87, 0xBD, + 0x93, 0x5B, 0xD2, 0x3C, 0x33, 0x0F, 0xA4, 0x3D, 0x91, 0x07, 0x99, 0x3E, + 0xD7, 0x7D, 0x14, 0x3E, 0xEA, 0xF7, 0x22, 0xBD, 0xCB, 0x0C, 0xB2, 0xBD, + 0x61, 0x24, 0xEC, 0x3D, 0xCC, 0xE1, 0xDC, 0xBB, 0xC7, 0x7C, 0x96, 0xBC, + 0x7F, 0x7A, 0x06, 0x3E, 0xCB, 0x1B, 0x83, 0xBE, 0x9F, 0x23, 0x18, 0xBC, + 0x16, 0x3C, 0xFB, 0x3C, 0x44, 0xD1, 0x05, 0xBC, 0xDA, 0x96, 0x6B, 0x3F, + 0xB2, 0xEC, 0xD6, 0x3E, 0xAD, 0xCB, 0xE5, 0xBB, 0xAD, 0x8E, 0x26, 0x3D, + 0x7F, 0x34, 0x9B, 0xBE, 0xA2, 0xDF, 0xDA, 0xBD, 0x01, 0xEF, 0x74, 0x3D, + 0x3A, 0xF1, 0x7B, 0xBC, 0xEC, 0xF1, 0x2A, 0x3E, 0xAB, 0xD5, 0xA0, 0xBE, + 0x15, 0xE5, 0xAE, 0x3D, 0x28, 0x94, 0x32, 0x3F, 0xC6, 0xC3, 0x9E, 0xBD, + 0x6D, 0xF7, 0xCD, 0x3B, 0x48, 0xAE, 0x48, 0xBE, 0x16, 0x8F, 0xB6, 0xBE, + 0x3D, 0x61, 0x9A, 0x3E, 0xC2, 0x0A, 0x95, 0x3E, 0x4F, 0x58, 0x98, 0xBD, + 0x79, 0x31, 0xC5, 0xBB, 0x8A, 0x25, 0x9D, 0xBE, 0x45, 0x94, 0xC8, 0xBE, + 0x56, 0x63, 0x7C, 0xBC, 0x9B, 0x03, 0x28, 0xBE, 0x45, 0x68, 0x30, 0xBE, + 0x59, 0x2C, 0x18, 0xBD, 0x3A, 0xF4, 0x8A, 0x3D, 0x5D, 0xB6, 0x9B, 0x3D, + 0xE8, 0x10, 0x49, 0x3E, 0x7B, 0x4A, 0xA9, 0xBD, 0x79, 0x1F, 0x6F, 0x3E, + 0xC4, 0x80, 0x5A, 0xBB, 0x1B, 0xCD, 0x78, 0xBE, 0xF5, 0x2D, 0xAB, 0xBE, + 0x42, 0xAF, 0x8F, 0x3C, 0xA5, 0x70, 0xB3, 0xBD, 0xFB, 0xD0, 0x95, 0x3D, + 0xF7, 0xAA, 0x46, 0x3E, 0x80, 0x5B, 0xA9, 0x3C, 0x50, 0xAD, 0x3B, 0x3D, + 0xE3, 0x45, 0x96, 0xBC, 0x90, 0xA8, 0xB7, 0x3C, 0x5B, 0x0A, 0x3F, 0xBE, + 0xCF, 0xCC, 0x70, 0x3F, 0x29, 0x6E, 0x34, 0xBE, 0x6C, 0x40, 0x07, 0xBE, + 0x7E, 0xF1, 0x48, 0x3F, 0x95, 0xA8, 0x23, 0xBF, 0xEC, 0x03, 0xBE, 0x3C, + 0xDF, 0x2A, 0x07, 0xBC, 0x38, 0x7B, 0xDB, 0x3C, 0x4D, 0xE2, 0x64, 0xBE, + 0x33, 0xCF, 0x58, 0xBF, 0xB0, 0xE4, 0x85, 0x3C, 0x2F, 0x4F, 0xFC, 0xBD, + 0xE3, 0xC1, 0x8A, 0xBF, 0x49, 0x56, 0xCE, 0x3E, 0xB4, 0xD5, 0xC8, 0x3C, + 0x4E, 0xED, 0x25, 0x3B, 0x29, 0xF0, 0x70, 0xBD, 0x4C, 0x32, 0x3F, 0x3E, + 0x57, 0x8A, 0x0C, 0xBF, 0x10, 0xEC, 0x0B, 0xBF, 0x1D, 0x25, 0x56, 0x3C, + 0x8D, 0xF3, 0xC6, 0x3D, 0xF5, 0x0A, 0x67, 0x3F, 0x48, 0x8D, 0xFF, 0x3D, + 0x33, 0x46, 0xC7, 0x3D, 0x26, 0x5D, 0xED, 0x3E, 0xB2, 0xC8, 0x2E, 0xBF, + 0x71, 0x03, 0x31, 0x3F, 0x19, 0x7A, 0x85, 0x3E, 0x5C, 0x4E, 0xEF, 0x3E, + 0x97, 0x63, 0x66, 0xBF, 0x8F, 0xC4, 0x36, 0xBE, 0xA6, 0xDD, 0x95, 0x3F, + 0x62, 0x79, 0x2A, 0x3F, 0x40, 0xD8, 0x62, 0xBE, 0xA6, 0x9A, 0xDD, 0xBE, + 0xF2, 0xE4, 0x89, 0x3E, 0x17, 0x02, 0xDA, 0xBE, 0xCA, 0x9E, 0xBD, 0xBD, + 0x18, 0x19, 0x84, 0xBE, 0x70, 0xA8, 0x97, 0x3E, 0x5D, 0xD3, 0xD2, 0xBD, + 0x94, 0x54, 0x22, 0xBC, 0x69, 0x45, 0x15, 0x3E, 0xDA, 0xFF, 0x59, 0x3F, + 0x5E, 0xA0, 0x7C, 0xBF, 0xC2, 0xCA, 0xFB, 0x3D, 0x79, 0x2C, 0x00, 0xBF, + 0x10, 0x7C, 0x40, 0xBC, 0x3F, 0x32, 0x11, 0xBF, 0xAD, 0x9D, 0xF3, 0xBE, + 0x9E, 0x58, 0x6B, 0x3D, 0x8F, 0x7F, 0x1C, 0x3D, 0x8B, 0x82, 0x0A, 0xBF, + 0xBA, 0x31, 0x9A, 0xBC, 0xB5, 0xBB, 0x33, 0x3D, 0xAB, 0xFA, 0x04, 0xBC, + 0xFC, 0xD1, 0x48, 0xBE, 0xAC, 0x5B, 0xE1, 0x3D, 0x92, 0x9D, 0x9D, 0x3E, + 0x3E, 0xA2, 0x5E, 0xBE, 0x0D, 0x7A, 0xE9, 0xBE, 0x89, 0xB3, 0x76, 0xBE, + 0xDC, 0xB6, 0x9E, 0x3E, 0xB4, 0x43, 0xFC, 0x3D, 0x3E, 0x20, 0xDC, 0x3E, + 0x6C, 0x41, 0xCB, 0x3D, 0x12, 0x7A, 0x0A, 0x3F, 0xDB, 0x83, 0x44, 0x3E, + 0xE3, 0x9A, 0xBF, 0x3E, 0xF0, 0x00, 0x1D, 0xBF, 0x65, 0x6B, 0xA1, 0x3D, + 0x07, 0x7B, 0x93, 0x3D, 0x54, 0x11, 0x41, 0x3E, 0x26, 0xB7, 0x5C, 0x3E, + 0x7E, 0xC2, 0x6F, 0x3C, 0x41, 0xA9, 0xB3, 0xBE, 0x2C, 0x70, 0x40, 0x3E, + 0x0B, 0x27, 0x07, 0x3D, 0xCE, 0x80, 0x25, 0xBD, 0x34, 0x7D, 0x76, 0x3E, + 0xD2, 0x27, 0x24, 0x3E, 0xDB, 0xE0, 0xB8, 0xBE, 0x0A, 0x52, 0xE4, 0xBE, + 0x86, 0x13, 0xCF, 0x3C, 0x77, 0xA5, 0x32, 0x3F, 0xAD, 0x4D, 0x1F, 0x3F, + 0xFA, 0x2E, 0x17, 0xBB, 0xBC, 0x9D, 0xA6, 0xBB, 0xA6, 0xBB, 0x0D, 0x3F, + 0x97, 0x31, 0xF5, 0xBD, 0xFC, 0x82, 0xB1, 0x3D, 0xD6, 0xE5, 0xAF, 0x3B, + 0x96, 0xAA, 0xDC, 0x3C, 0x71, 0x29, 0x43, 0xBF, 0x1D, 0x28, 0xDB, 0x3D, + 0x89, 0x51, 0x6F, 0x3F, 0x5D, 0xB2, 0x9B, 0x3D, 0xAC, 0x9F, 0x8D, 0xBB, + 0xBF, 0xDA, 0xCC, 0xBD, 0xC0, 0x9C, 0xB6, 0x3C, 0xA9, 0x6B, 0x20, 0x3D, + 0xC4, 0xA6, 0x06, 0x3E, 0xA6, 0x31, 0x3E, 0x3D, 0xA9, 0xB0, 0x2F, 0xBC, + 0x9C, 0x8A, 0x49, 0x3C, 0x78, 0xB9, 0xD5, 0xBC, 0x8E, 0x90, 0x0A, 0xBD, + 0xBD, 0x20, 0xDE, 0x3D, 0xF6, 0x40, 0x19, 0xBD, 0x06, 0x03, 0x00, 0xBD, + 0xCB, 0xE0, 0xB6, 0x3C, 0x35, 0xA0, 0x2A, 0xBD, 0x13, 0x8A, 0x36, 0x3D, + 0xFA, 0xBB, 0x37, 0x3D, 0xA9, 0x9B, 0x7A, 0xBD, 0x37, 0x2D, 0x93, 0x3C, + 0x77, 0xD8, 0x9C, 0xBD, 0x18, 0xDB, 0x9C, 0x3D, 0xF4, 0x91, 0xC9, 0x3C, + 0xEC, 0xCD, 0x5E, 0xBB, 0x89, 0xF9, 0xB8, 0xBC, 0xC7, 0xA2, 0x96, 0x3A, + 0xCC, 0x5E, 0x01, 0xBE, 0x94, 0x0D, 0x1B, 0xBD, 0x8F, 0x38, 0x0C, 0xBD, + 0xE1, 0xB2, 0xCC, 0x3D, 0xC5, 0x6F, 0xED, 0x3C, 0x40, 0x49, 0xE2, 0xBE, + 0x69, 0x85, 0xB8, 0xBD, 0x51, 0x6D, 0xC7, 0xB8, 0x1F, 0x95, 0xBE, 0xBD, + 0x23, 0x09, 0x29, 0x3D, 0x00, 0x47, 0x40, 0x3D, 0x57, 0xB0, 0xB2, 0x3D, + 0xDB, 0xDC, 0x4E, 0x3C, 0x4F, 0x1F, 0x74, 0x3D, 0xA2, 0x82, 0x89, 0x3A, + 0xD3, 0x2C, 0x52, 0xBD, 0x24, 0x7E, 0x95, 0xBD, 0x01, 0x10, 0xA2, 0x3D, + 0x64, 0xB0, 0xD9, 0xBC, 0xDB, 0x9A, 0xBB, 0x3B, 0xA8, 0x0A, 0x87, 0x3C, + 0xA2, 0x7B, 0x91, 0xBD, 0x6E, 0xAE, 0x8E, 0x3D, 0xAA, 0xE4, 0x1F, 0x3D, + 0x73, 0x78, 0x0E, 0xBD, 0x42, 0x3C, 0xD0, 0x3B, 0x46, 0x2A, 0xE8, 0xBB, + 0x1C, 0xE9, 0x30, 0x3B, 0x2C, 0x90, 0xB2, 0x3C, 0xB5, 0xF1, 0x6C, 0xBB, + 0xBF, 0x3E, 0x58, 0x3C, 0xEB, 0x8D, 0xB5, 0x3C, 0xCB, 0x25, 0xEA, 0xBD, + 0x5A, 0xC9, 0x53, 0xBD, 0x9E, 0xF4, 0x15, 0xBC, 0x07, 0x64, 0xB0, 0x3C, + 0x10, 0xE2, 0x9D, 0xBD, 0xBD, 0x5B, 0x73, 0xBC, 0x89, 0x8C, 0xED, 0xBC, + 0x31, 0x6C, 0x2C, 0xBD, 0x00, 0x78, 0x8F, 0x3C, 0x5D, 0x68, 0xE9, 0xBA, + 0x28, 0x7B, 0x51, 0xBE, 0x46, 0x6E, 0x93, 0xBD, 0xB6, 0xB5, 0xE7, 0xBC, + 0xBB, 0x99, 0x57, 0x3D, 0x2F, 0x78, 0x08, 0xBD, 0x8A, 0x95, 0x96, 0xBD, + 0xF9, 0xC6, 0xBD, 0x3D, 0x5A, 0x57, 0x2D, 0xBD, 0xED, 0x8E, 0xCE, 0x3C, + 0x7D, 0x81, 0xA2, 0x3C, 0xEB, 0xCF, 0xB6, 0x3D, 0xD0, 0xB7, 0x4A, 0xBE, + 0x87, 0xFF, 0x08, 0x3D, 0xC2, 0xE3, 0xF3, 0xBC, 0x4B, 0x86, 0x63, 0x3D, + 0x30, 0xAA, 0x16, 0xBC, 0xC3, 0xC0, 0xC1, 0xBB, 0x89, 0x0F, 0x1C, 0x3D, + 0xE5, 0xBB, 0xE4, 0xBC, 0x5F, 0x66, 0x0D, 0xBD, 0x42, 0xBB, 0x49, 0x3D, + 0x08, 0x3D, 0x39, 0xBC, 0xFE, 0x27, 0x72, 0x3D, 0x76, 0x9A, 0xF0, 0x3C, + 0x03, 0xBD, 0x76, 0xBC, 0x8B, 0x6B, 0x00, 0x3E, 0xCF, 0x4A, 0xA3, 0x3C, + 0x40, 0xCE, 0x5E, 0x3E, 0x60, 0x91, 0xBC, 0x3C, 0x69, 0x02, 0x28, 0xBD, + 0x9E, 0xCE, 0x33, 0xBD, 0xBA, 0x21, 0x16, 0xBD, 0x4F, 0x71, 0x2F, 0xBE, + 0x48, 0xA8, 0xD3, 0xBB, 0xB3, 0x12, 0xCC, 0xBC, 0xA5, 0x13, 0x14, 0x3C, + 0xAC, 0x4D, 0xB2, 0xBD, 0x4A, 0x51, 0x33, 0xBD, 0x12, 0xA9, 0xA2, 0x3D, + 0xC2, 0x7F, 0xDA, 0x3D, 0xE7, 0x0C, 0x5C, 0xBD, 0x81, 0x43, 0xB2, 0x3C, + 0x03, 0x05, 0xE9, 0x3D, 0x26, 0x87, 0x15, 0xBC, 0x0E, 0x82, 0x1B, 0x3C, + 0xD8, 0xD0, 0xBD, 0xBC, 0xC9, 0x2D, 0x16, 0xBD, 0xEE, 0xE8, 0x56, 0x3C, + 0xDB, 0xD2, 0xC6, 0xBD, 0x17, 0xA7, 0x77, 0xBC, 0x06, 0xF8, 0x1F, 0xBC, + 0x01, 0x7D, 0x13, 0xBD, 0x81, 0xD8, 0xB3, 0x3D, 0x01, 0x82, 0x58, 0xBB, + 0x1F, 0x48, 0x77, 0xBD, 0x0A, 0x4D, 0x29, 0xBC, 0xBD, 0x5F, 0x0F, 0xBD, + 0x3E, 0x73, 0x55, 0x3D, 0x4B, 0x2F, 0xD6, 0xBB, 0xCC, 0xAB, 0xA9, 0xBE, + 0x81, 0xCF, 0x87, 0x3D, 0x5D, 0xEA, 0x83, 0xBD, 0x8F, 0x98, 0x95, 0xBA, + 0x1F, 0x73, 0x6C, 0x3D, 0x54, 0x62, 0x45, 0x3D, 0x96, 0x38, 0x97, 0xBD, + 0xC7, 0x26, 0xC4, 0x3C, 0x10, 0xC9, 0x9C, 0xBC, 0xEF, 0x01, 0xB3, 0x3D, + 0xDA, 0xC6, 0x07, 0xBE, 0xB5, 0x63, 0x39, 0x3D, 0x66, 0xC6, 0xEA, 0x3D, + 0xAB, 0x22, 0x1F, 0x3D, 0x28, 0xDC, 0x1D, 0xBC, 0xA9, 0xDB, 0x1B, 0xBB, + 0x8D, 0x38, 0x55, 0xBC, 0x52, 0x64, 0xF0, 0xBD, 0x6E, 0xB0, 0xCC, 0x3C, + 0xE5, 0x1F, 0x12, 0xBE, 0xEC, 0xE0, 0x12, 0xBC, 0xEF, 0x56, 0x63, 0xBD, + 0x6D, 0x3B, 0x6D, 0x3D, 0x1C, 0x87, 0x04, 0x3B, 0xDD, 0xD1, 0x93, 0x3B, + 0x0E, 0x10, 0x9B, 0xBE, 0x4C, 0xAF, 0x94, 0x3D, 0x42, 0x6E, 0x3E, 0x3E, + 0xE4, 0x95, 0x0E, 0xBD, 0x70, 0xF1, 0x3D, 0x3B, 0x50, 0x2E, 0x29, 0xBF, + 0x03, 0xE2, 0x1F, 0xBD, 0xD5, 0x28, 0xCA, 0x3E, 0xF4, 0x87, 0x53, 0xBC, + 0x5C, 0x0E, 0xA6, 0xBA, 0x9B, 0x5B, 0x8C, 0x3E, 0xCA, 0x64, 0x34, 0x3E, + 0xE6, 0x03, 0xE0, 0x3E, 0xC0, 0x5E, 0x43, 0x3E, 0x89, 0x1A, 0x1F, 0x3C, + 0x86, 0x7F, 0x73, 0x3D, 0xF1, 0xB9, 0xC3, 0x3D, 0xD7, 0xD9, 0xD7, 0x3E, + 0x43, 0x5D, 0x38, 0xBD, 0xE4, 0x1D, 0xC7, 0xBB, 0x7A, 0x9E, 0xE5, 0xBB, + 0x7E, 0x8C, 0xDE, 0x3B, 0x47, 0xF4, 0xB3, 0x3D, 0x53, 0xD9, 0x10, 0xBE, + 0xC3, 0xEF, 0x36, 0xBF, 0x6B, 0x3A, 0x00, 0xBC, 0x89, 0xF8, 0x5A, 0xBF, + 0x35, 0xE5, 0xA6, 0xBB, 0xDA, 0x0F, 0xE5, 0x3E, 0xD0, 0x56, 0x42, 0xBE, + 0xC2, 0xC0, 0xE1, 0x3C, 0xAD, 0xEA, 0x28, 0xBD, 0xDC, 0x4D, 0xBD, 0x3E, + 0xF9, 0xC0, 0x4D, 0xBD, 0xFC, 0xDE, 0xC0, 0x3E, 0x15, 0xFB, 0x74, 0x3D, + 0x1B, 0xAC, 0xFA, 0xBC, 0x93, 0x19, 0xAB, 0x3E, 0xAC, 0xED, 0xA3, 0x3D, + 0x33, 0x1B, 0x99, 0x3F, 0xC3, 0x9A, 0xCD, 0xBB, 0x10, 0x57, 0xBB, 0x3C, + 0xA7, 0xC9, 0x75, 0xBE, 0x09, 0x13, 0x3A, 0xBF, 0x0B, 0x7A, 0x83, 0xBF, + 0x01, 0xC3, 0x88, 0xBF, 0x6B, 0x14, 0x29, 0x3E, 0x30, 0x34, 0xA6, 0xBF, + 0x1D, 0xD2, 0x25, 0xBE, 0x47, 0xA7, 0x2C, 0xBF, 0x39, 0x18, 0x39, 0xBF, + 0x26, 0x08, 0xA1, 0x3D, 0x87, 0xD9, 0xE5, 0x3D, 0x9A, 0x7E, 0xF4, 0x3E, + 0x67, 0x8F, 0x0C, 0x3F, 0x03, 0x40, 0x5E, 0x40, 0xA0, 0x39, 0x09, 0xBF, + 0xA6, 0xBE, 0x0C, 0xBE, 0x77, 0x81, 0x2C, 0xBD, 0x73, 0x27, 0x0E, 0x3F, + 0xFA, 0x9D, 0x96, 0xBE, 0xEC, 0x51, 0x13, 0xBF, 0x30, 0x58, 0xD7, 0x3C, + 0x11, 0xA1, 0x8B, 0x3E, 0x25, 0xDA, 0x97, 0x3E, 0x16, 0x61, 0x84, 0x3E, + 0x1B, 0xD0, 0x6D, 0xBB, 0x67, 0x97, 0x17, 0xBF, 0x87, 0xA2, 0xC9, 0xBA, + 0x79, 0x0A, 0x09, 0x3F, 0xC3, 0x20, 0x87, 0x3F, 0x2A, 0x86, 0xF2, 0xBD, + 0x36, 0xA4, 0x0E, 0xBF, 0xBE, 0xFC, 0x6B, 0x3F, 0x7E, 0x32, 0xD2, 0x3D, + 0x45, 0xF3, 0x48, 0xBB, 0xA8, 0x25, 0xB1, 0xBD, 0x1A, 0x7B, 0xC2, 0xBD, + 0xC2, 0xF9, 0xFF, 0xBC, 0xCB, 0xA3, 0xBD, 0xBC, 0xAF, 0x29, 0xAB, 0x3B, + 0xEC, 0x57, 0xA7, 0xBC, 0xDD, 0x18, 0x3E, 0x3D, 0x41, 0xE4, 0x33, 0xBD, + 0xD2, 0x61, 0x06, 0x3D, 0xAC, 0x93, 0x99, 0x3C, 0xC8, 0x02, 0xC3, 0x3C, + 0x8E, 0xFF, 0x10, 0xBE, 0x59, 0x82, 0xEA, 0x3C, 0x56, 0x83, 0xF6, 0xBC, + 0x76, 0x5B, 0x61, 0x3C, 0xFC, 0xC6, 0x91, 0xBB, 0x60, 0xB0, 0xD9, 0x3C, + 0x1E, 0x70, 0x69, 0x3D, 0xD6, 0x49, 0xBD, 0xBC, 0xDB, 0x7D, 0xE3, 0xBC, + 0x2F, 0xF0, 0x69, 0xBB, 0x0C, 0xCD, 0xB4, 0xBC, 0x62, 0x47, 0xA2, 0x3D, + 0x8E, 0x3F, 0x83, 0x3C, 0xA5, 0x2A, 0x61, 0x3C, 0x18, 0x4F, 0xB8, 0x3D, + 0xD0, 0x62, 0x75, 0x3C, 0x59, 0x9A, 0x9D, 0x3C, 0x11, 0xF6, 0x9A, 0x3D, + 0xC1, 0x25, 0x05, 0xBC, 0xE6, 0xA7, 0xA1, 0xBE, 0x84, 0xB3, 0x32, 0xBD, + 0x7B, 0x58, 0x24, 0xBC, 0xA4, 0x2C, 0xB3, 0xB9, 0xB9, 0x50, 0xF3, 0x3A, + 0x76, 0x38, 0x05, 0x3B, 0x60, 0xDF, 0x4B, 0xBE, 0x00, 0xE8, 0x0A, 0x3E, + 0x17, 0xD2, 0x11, 0x3D, 0xA2, 0x69, 0xEF, 0xBD, 0xFA, 0xB7, 0x13, 0xBE, + 0xBB, 0x75, 0x80, 0x3B, 0x28, 0xD8, 0x3C, 0x3D, 0xFC, 0x10, 0x0F, 0x3E, + 0x5B, 0xFB, 0x1A, 0xBE, 0xA6, 0xA2, 0x7A, 0xBE, 0xFD, 0xE8, 0x2B, 0x3E, + 0x0A, 0x40, 0x83, 0xBA, 0x5E, 0x1E, 0xFD, 0xBE, 0xE6, 0xB5, 0xAC, 0xBC, + 0xCD, 0x21, 0xC5, 0xBA, 0x4E, 0xCD, 0x3D, 0xBC, 0x60, 0x8C, 0x77, 0x3D, + 0xCD, 0xBB, 0xC8, 0xBC, 0xB4, 0x1D, 0x1D, 0xBE, 0x93, 0x83, 0xBA, 0xBC, + 0xFB, 0xBD, 0x8B, 0x3C, 0xC7, 0xBA, 0x8C, 0xBE, 0x03, 0x84, 0x29, 0x3D, + 0x71, 0x12, 0x3C, 0xBE, 0x41, 0x31, 0x70, 0x3B, 0x87, 0xC9, 0x6C, 0x3C, + 0xFD, 0x15, 0x3A, 0xBE, 0x1A, 0x13, 0x92, 0x3E, 0xB6, 0xFF, 0xC2, 0xBE, + 0x0A, 0x56, 0x68, 0x3F, 0xF0, 0xA5, 0x1D, 0x3E, 0xF2, 0x53, 0x9E, 0xBE, + 0x6D, 0xB5, 0x63, 0xBF, 0x30, 0xCB, 0xA9, 0x3E, 0xDF, 0x26, 0xBB, 0xBE, + 0x21, 0xB5, 0x43, 0x3D, 0x6A, 0xE7, 0x4B, 0xBE, 0xBB, 0xDC, 0x70, 0x3E, + 0x8C, 0xBC, 0x3D, 0x3F, 0xE6, 0x98, 0xE3, 0x3F, 0x93, 0x2B, 0xF6, 0x3E, + 0x62, 0xA3, 0x9F, 0xBE, 0x72, 0x14, 0x8B, 0x3F, 0x48, 0x38, 0x51, 0x3E, + 0xF9, 0xDD, 0x31, 0x3D, 0x0D, 0x9E, 0x86, 0xBB, 0x4B, 0x55, 0x54, 0xBD, + 0x72, 0xF1, 0xAF, 0xBE, 0xE2, 0x2B, 0x91, 0xBF, 0x5D, 0x83, 0x45, 0xBF, + 0xC3, 0x54, 0xB3, 0xBE, 0x92, 0xF1, 0xEE, 0x3D, 0xB0, 0xDA, 0xD0, 0xBD, + 0xF7, 0xF8, 0xEC, 0x3B, 0x4A, 0x64, 0xF7, 0x3E, 0x61, 0xA1, 0xF5, 0x3E, + 0xB9, 0xAF, 0xDD, 0xBE, 0x8B, 0x42, 0x15, 0xBF, 0xCD, 0x5D, 0x81, 0x3D, + 0xC5, 0xD1, 0x88, 0xBD, 0x60, 0x14, 0xFD, 0xBC, 0xFF, 0x48, 0x12, 0xBC, + 0xBA, 0x8B, 0xFA, 0xBB, 0xEB, 0x4F, 0x99, 0xBC, 0x28, 0x63, 0x07, 0x3D, + 0xBA, 0x6D, 0x9F, 0x3A, 0x59, 0x52, 0x27, 0x3C, 0xC6, 0x17, 0x0C, 0xBE, + 0xC0, 0x1B, 0xA0, 0x3D, 0xE3, 0x3A, 0x76, 0xBB, 0xF9, 0x43, 0xAF, 0xBC, + 0x03, 0xCA, 0x87, 0xBD, 0xCA, 0x39, 0x26, 0x3D, 0x0E, 0x61, 0x2D, 0xBD, + 0xAA, 0x8F, 0x3F, 0x3D, 0x8A, 0xF0, 0x43, 0xBC, 0x5F, 0xAC, 0xB8, 0x3D, + 0x37, 0xFA, 0xE2, 0x3D, 0x17, 0x11, 0xDD, 0xBC, 0xE5, 0x61, 0x9D, 0x3A, + 0x60, 0x93, 0x0B, 0xBA, 0x60, 0x1C, 0x8F, 0xBD, 0xCA, 0xD3, 0x7F, 0x3D, + 0x82, 0x3E, 0x6C, 0x3C, 0xBB, 0x53, 0x1E, 0x3D, 0x1F, 0xB2, 0xF2, 0x3D, + 0x4C, 0xCF, 0x15, 0x3D, 0xB1, 0x29, 0x53, 0x3D, 0xE8, 0x47, 0x96, 0x3D, + 0x77, 0x6D, 0x83, 0x3D, 0x8F, 0x20, 0x3A, 0xBD, 0xE7, 0x8F, 0xC9, 0x3D, + 0xCE, 0x86, 0x7E, 0x3B, 0x1D, 0xA2, 0xFD, 0x3D, 0x25, 0x07, 0xA7, 0xBC, + 0x65, 0x1C, 0x36, 0xBC, 0x79, 0xCA, 0x26, 0xBD, 0xAD, 0xF3, 0x2B, 0xBD, + 0xE5, 0x86, 0x99, 0xBC, 0xCE, 0xD4, 0xAC, 0x3D, 0x10, 0x40, 0xC8, 0xBD, + 0xB6, 0x3C, 0xC9, 0x3C, 0xA9, 0xB4, 0xA2, 0x3D, 0xE1, 0xDA, 0x53, 0xBD, + 0xB6, 0x1A, 0x6B, 0xBD, 0xDE, 0x1A, 0x6E, 0x3D, 0xD0, 0x47, 0x7B, 0xBC, + 0x79, 0x98, 0x22, 0x3B, 0x6C, 0xD8, 0x8F, 0xBC, 0xCD, 0x44, 0x14, 0xBD, + 0x8E, 0xF9, 0x0C, 0x3B, 0xD6, 0xF8, 0xC3, 0xBC, 0x7A, 0x58, 0x44, 0x3D, + 0x7E, 0x12, 0x64, 0x3D, 0x44, 0x0A, 0xF7, 0xBC, 0x40, 0xC5, 0xD9, 0x3C, + 0x02, 0xC7, 0xB3, 0xBC, 0xC6, 0x87, 0xBD, 0x3D, 0x84, 0xCA, 0xA2, 0x3B, + 0x5C, 0xE8, 0x27, 0x3D, 0xC4, 0x55, 0xF5, 0xBC, 0x96, 0x18, 0x5F, 0xB9, + 0xCB, 0xCB, 0x4C, 0xBE, 0xDD, 0xFE, 0x75, 0x3C, 0xEE, 0xB6, 0xA4, 0xBE, + 0xFE, 0x6D, 0x68, 0x3E, 0x18, 0x16, 0x49, 0x3D, 0xF1, 0x53, 0xF7, 0xBD, + 0xB8, 0xCD, 0x86, 0xBD, 0xF6, 0x34, 0xBA, 0x3E, 0xF6, 0x1E, 0xC1, 0xBD, + 0xD8, 0xE3, 0x02, 0x3F, 0xCC, 0x1B, 0x8F, 0xBE, 0x35, 0x40, 0xB8, 0x3D, + 0x9D, 0xEE, 0x03, 0xBD, 0x3A, 0xB3, 0x32, 0x3E, 0xC0, 0x6A, 0xFD, 0x3E, + 0xB2, 0xDD, 0x0B, 0x3E, 0x53, 0xDA, 0x15, 0xBE, 0x86, 0x58, 0x82, 0x3C, + 0xF0, 0x9F, 0x58, 0xBE, 0xE6, 0xD5, 0x96, 0x3E, 0x56, 0x43, 0x17, 0x3D, + 0x39, 0xCB, 0xB5, 0xBD, 0x50, 0xC9, 0x93, 0x3D, 0x18, 0xBD, 0x38, 0x3D, + 0x8E, 0xA5, 0xB6, 0xBE, 0xF7, 0x62, 0xDF, 0x3D, 0xBC, 0x64, 0x1E, 0x3C, + 0x87, 0x5D, 0x2D, 0xBE, 0xDD, 0xBE, 0xC1, 0xBD, 0x1E, 0x46, 0xC0, 0x3E, + 0x48, 0x3F, 0x0E, 0x3E, 0x17, 0x31, 0xA6, 0xBE, 0xEC, 0x21, 0x17, 0x3F, + 0xB0, 0x9C, 0x0C, 0xBE, 0x0F, 0x24, 0x52, 0x3E, 0x0C, 0x26, 0xF9, 0x3E, + 0x66, 0xA0, 0xD4, 0x3D, 0xED, 0x48, 0x84, 0x3E, 0x07, 0x6E, 0x16, 0xBF, + 0x52, 0x17, 0x39, 0xBF, 0x1E, 0xCC, 0x43, 0xBC, 0x3B, 0xFC, 0x2D, 0xBF, + 0x63, 0x4D, 0x57, 0x3F, 0x5E, 0x87, 0x17, 0xBE, 0x65, 0xBA, 0x21, 0xBE, + 0x59, 0x3C, 0xDB, 0xBF, 0x50, 0xAD, 0x88, 0x3F, 0xE4, 0x94, 0xB9, 0xBE, + 0x3A, 0xD4, 0x34, 0x3E, 0x8D, 0x5C, 0x4E, 0xBE, 0x6F, 0xBB, 0x26, 0x3E, + 0x9F, 0xB0, 0x7D, 0x3D, 0x05, 0xC2, 0xA1, 0xBE, 0x30, 0xA8, 0x6D, 0xBE, + 0x77, 0x11, 0x6F, 0xBE, 0x5B, 0x7A, 0x92, 0x3E, 0xC9, 0xDB, 0x94, 0x3E, + 0x1F, 0x5F, 0xC2, 0xBE, 0xD0, 0x52, 0x8A, 0x3E, 0x84, 0xFA, 0x83, 0xBD, + 0xD1, 0x8B, 0x52, 0xBE, 0xB1, 0xBE, 0x34, 0xBD, 0x67, 0x79, 0x99, 0x3D, + 0x55, 0xE4, 0xAA, 0xBE, 0xCE, 0xE2, 0x6D, 0xBF, 0xEC, 0x70, 0x15, 0x3E, + 0x4C, 0x0B, 0x28, 0xBF, 0xE4, 0x93, 0x2A, 0x3D, 0x8A, 0xCC, 0x10, 0xBD, + 0x96, 0x66, 0x04, 0xB9, 0x9F, 0xB1, 0x37, 0xBE, 0x0E, 0xDF, 0xFC, 0x3E, + 0x8C, 0xF7, 0x53, 0x3D, 0x42, 0x63, 0xA1, 0x3D, 0x91, 0xBF, 0x9C, 0xBE, + 0xCD, 0xD6, 0xA7, 0x3B, 0x7C, 0x4C, 0x46, 0xBC, 0x65, 0xAA, 0xB9, 0xBE, + 0x12, 0x20, 0x9A, 0x3E, 0x74, 0xC9, 0x48, 0xBE, 0x78, 0x04, 0xC3, 0x3D, + 0x24, 0x5D, 0x23, 0x3C, 0xD5, 0x40, 0x7A, 0xBF, 0xE5, 0x1B, 0x3D, 0xBF, + 0xA1, 0x9E, 0x01, 0x3D, 0x1C, 0x62, 0x92, 0xBD, 0x40, 0x59, 0x06, 0x3F, + 0x63, 0x76, 0xB2, 0x3D, 0x29, 0x8F, 0x3B, 0x3D, 0xF6, 0x72, 0x09, 0xBD, + 0x19, 0xEE, 0x00, 0xBE, 0x15, 0xA4, 0x5B, 0x3F, 0x66, 0xE0, 0x71, 0xBD, + 0x86, 0x4B, 0x37, 0xBF, 0x2F, 0x7B, 0x3D, 0x3E, 0x1A, 0xAC, 0x61, 0x3C, + 0x59, 0x69, 0x67, 0xBE, 0x8C, 0xB2, 0x25, 0xBE, 0x3D, 0x7C, 0xE9, 0xBE, + 0x03, 0x89, 0x23, 0xBE, 0x03, 0xB8, 0x1C, 0x3C, 0xFA, 0xA4, 0x1F, 0xBE, + 0xC7, 0xAB, 0x47, 0xBE, 0x4E, 0x6F, 0x96, 0xBE, 0x92, 0x26, 0xC3, 0x3E, + 0x81, 0x5E, 0x8C, 0xBD, 0xDE, 0xB8, 0xCA, 0xBB, 0x80, 0xE8, 0x4A, 0x3D, + 0x0F, 0xD9, 0x0F, 0x3E, 0x59, 0xBD, 0x5D, 0x3F, 0x82, 0x69, 0x87, 0x3F, + 0x80, 0x00, 0x5E, 0xBE, 0x9C, 0xF2, 0x91, 0xBD, 0xC2, 0x37, 0x37, 0xBD, + 0xFE, 0x9C, 0x53, 0xBF, 0x67, 0x3F, 0x90, 0xBE, 0x78, 0x12, 0xB7, 0x3D, + 0x6D, 0xE2, 0xB6, 0xBD, 0xCD, 0xF7, 0x15, 0x3E, 0x12, 0xA3, 0x24, 0xBE, + 0xDD, 0x52, 0x25, 0x3F, 0x53, 0x91, 0x92, 0xBA, 0x13, 0x5C, 0x0C, 0xBE, + 0x15, 0x7D, 0xC9, 0xBE, 0xA1, 0x51, 0xB3, 0xBC, 0xAA, 0x93, 0x05, 0xC0, + 0xAF, 0xDD, 0x5C, 0x3E, 0x45, 0x7E, 0xE0, 0x3D, 0x30, 0x12, 0xEC, 0xBD, + 0x5A, 0x47, 0x09, 0x3E, 0x55, 0xC0, 0x4E, 0xBE, 0x24, 0x1A, 0xB2, 0x3C, + 0x85, 0x81, 0x81, 0xBD, 0x38, 0x82, 0xCA, 0x3C, 0x6D, 0x54, 0x0D, 0x3D, + 0x17, 0x2D, 0xF9, 0xBB, 0xF4, 0xCC, 0xA6, 0xBD, 0x79, 0x94, 0x83, 0xBB, + 0x32, 0x73, 0xEA, 0xBB, 0xB4, 0xD6, 0x5B, 0xBD, 0xB6, 0x07, 0x4C, 0xBA, + 0x44, 0x88, 0x80, 0xBE, 0x5B, 0xAD, 0x6A, 0x3E, 0x9F, 0x60, 0x01, 0x3E, + 0x78, 0xA9, 0x0B, 0x3D, 0x42, 0xFC, 0xF1, 0xBB, 0x79, 0xF1, 0x3C, 0xBE, + 0xBC, 0x00, 0x66, 0x3D, 0x76, 0x56, 0x5C, 0x3B, 0xAE, 0x4D, 0x7E, 0xBC, + 0xA3, 0x72, 0x0B, 0x3E, 0xDC, 0xE0, 0xDB, 0x3B, 0xC2, 0xCD, 0x74, 0xBD, + 0xCD, 0x52, 0xB5, 0xBD, 0x1E, 0x0D, 0x5F, 0xBC, 0x4B, 0x21, 0x22, 0x3E, + 0x06, 0xCC, 0x9C, 0x3D, 0x4B, 0xE4, 0x71, 0x3E, 0x7A, 0xAA, 0xC9, 0x3C, + 0x53, 0x05, 0xEE, 0xBD, 0x0D, 0xD1, 0x1B, 0xBF, 0x6B, 0xDF, 0x1D, 0x3F, + 0x17, 0x20, 0xE9, 0xBE, 0x33, 0x7F, 0xFE, 0x3E, 0xB8, 0x93, 0x95, 0xBE, + 0x80, 0x1C, 0x6D, 0x3E, 0x07, 0x24, 0x9F, 0xBE, 0xF2, 0x5B, 0x0A, 0x3E, + 0x4C, 0x2F, 0x11, 0x3F, 0x40, 0x95, 0x2E, 0x3F, 0x25, 0x81, 0x96, 0xBF, + 0xEF, 0x33, 0x86, 0x3D, 0xDD, 0x2F, 0x10, 0x3E, 0xB2, 0xE4, 0xC3, 0x3E, + 0x4A, 0x48, 0x62, 0xBE, 0xE7, 0x4F, 0xEC, 0x3E, 0x67, 0xE0, 0x55, 0xBF, + 0x05, 0x78, 0x14, 0x3D, 0x82, 0xEE, 0x97, 0xBF, 0xDB, 0x3E, 0x2A, 0xBF, + 0x22, 0x52, 0x22, 0xBE, 0x80, 0x39, 0xFE, 0x3D, 0x9D, 0x76, 0x02, 0x40, + 0xFF, 0xDE, 0xCA, 0x3D, 0xDB, 0xDA, 0x22, 0x3E, 0x42, 0x4C, 0x03, 0x3D, + 0x39, 0xA0, 0xA3, 0xBD, 0xE4, 0x69, 0xED, 0xBE, 0x2C, 0xF9, 0x40, 0xBE, + 0x56, 0x5B, 0x25, 0x3F, 0x05, 0x54, 0xB8, 0x3E, 0x2A, 0x75, 0x37, 0xBE, + 0xAC, 0x2A, 0x7A, 0xBE, 0x32, 0x1E, 0xBE, 0x3D, 0xDF, 0x54, 0x84, 0x3F, + 0x7E, 0xDE, 0x75, 0xBE, 0x70, 0x17, 0x19, 0xBB, 0x5B, 0xF3, 0x85, 0x3D, + 0xC2, 0x0F, 0x57, 0x3E, 0xE2, 0x6C, 0xF4, 0x3E, 0xEA, 0x67, 0xE0, 0xBC, + 0x75, 0x62, 0x31, 0x3D, 0x2C, 0xEE, 0xBA, 0x3C, 0x1B, 0x04, 0xE1, 0x3B, + 0x1B, 0xCE, 0x28, 0x3D, 0xCE, 0x33, 0x12, 0x3D, 0xD6, 0x3B, 0x2B, 0xBF, + 0x3B, 0x17, 0x27, 0x3D, 0x61, 0xF2, 0x2C, 0x3D, 0x36, 0x1F, 0x01, 0xBC, + 0x29, 0xCE, 0x31, 0xBC, 0x13, 0xE3, 0xCB, 0xBE, 0x9F, 0xCC, 0x01, 0xBD, + 0xAE, 0x95, 0x8B, 0x3C, 0x1C, 0x90, 0xD7, 0xBD, 0xBB, 0xDC, 0x57, 0xBD, + 0xCD, 0x3C, 0x33, 0x3D, 0x1A, 0x0C, 0xBA, 0x3C, 0x59, 0x08, 0x1B, 0x3D, + 0x9C, 0x3E, 0x1F, 0xBF, 0x4D, 0xB1, 0xC9, 0x3D, 0x1D, 0xEB, 0x7E, 0xBD, + 0x86, 0xAE, 0xF0, 0xBD, 0x2A, 0x83, 0xCD, 0xBB, 0xC5, 0x02, 0x3B, 0x3E, + 0x12, 0x82, 0x99, 0xBD, 0x3A, 0xD3, 0x30, 0x3E, 0x57, 0x7F, 0x85, 0xBE, + 0x6A, 0x75, 0x36, 0xBE, 0xA5, 0x4C, 0x02, 0xBE, 0x97, 0xAE, 0x5C, 0x3F, + 0xBC, 0x38, 0xAA, 0x3E, 0xF8, 0x3B, 0x00, 0xBE, 0xD6, 0x2A, 0x0A, 0x3F, + 0xAE, 0xF1, 0x75, 0x3E, 0x96, 0x40, 0x09, 0x3E, 0xDD, 0x99, 0xA3, 0xBE, + 0x18, 0x57, 0x2F, 0x3F, 0xE8, 0xDB, 0x14, 0xBF, 0x54, 0xE8, 0x55, 0x3F, + 0x3F, 0xCA, 0x8E, 0xBE, 0xA0, 0xA5, 0x45, 0xBE, 0x7E, 0xC6, 0x48, 0x3F, + 0xB7, 0x77, 0x7D, 0xBF, 0xAB, 0xF2, 0x80, 0x3D, 0xE0, 0x75, 0x23, 0xBE, + 0xF8, 0x0C, 0x17, 0xBF, 0x07, 0xBD, 0x86, 0x3E, 0x2B, 0xC8, 0x97, 0xBE, + 0x5B, 0x9E, 0xFA, 0xBD, 0xB3, 0x0D, 0x7A, 0xBE, 0xDB, 0x41, 0x0A, 0xBF, + 0x74, 0x6A, 0xFD, 0x3D, 0x1F, 0x7F, 0x2F, 0x3C, 0x23, 0x75, 0x13, 0x3C, + 0x07, 0x2E, 0x11, 0x3E, 0x33, 0xC1, 0xB9, 0xBD, 0xA8, 0xD6, 0xC3, 0xBE, + 0xAE, 0x16, 0x97, 0xBC, 0x25, 0x4F, 0x88, 0x3F, 0x53, 0x22, 0x22, 0xBC, + 0xD6, 0x9C, 0x29, 0xBE, 0x07, 0x8B, 0xC6, 0x3D, 0xF5, 0x00, 0x3C, 0x3E, + 0x3A, 0xF8, 0xD1, 0xBD, 0x72, 0x01, 0x80, 0x3C, 0x33, 0xE3, 0x12, 0x3E, + 0x50, 0x6B, 0x10, 0x3B, 0x77, 0xE9, 0xD0, 0xBD, 0x4A, 0x2E, 0xE7, 0x3C, + 0x72, 0xD2, 0x92, 0x3E, 0x1E, 0xDC, 0xA1, 0xBE, 0xC0, 0xD4, 0x65, 0xBD, + 0x63, 0x2D, 0xC6, 0x3B, 0xDF, 0x6C, 0x34, 0xBB, 0xD6, 0xA9, 0x91, 0xBD, + 0x23, 0x0D, 0x06, 0xBC, 0x91, 0xE4, 0x15, 0xBD, 0x31, 0x7B, 0x9C, 0xBE, + 0x3E, 0x48, 0xE0, 0xBE, 0xEE, 0x40, 0xDD, 0xBE, 0x14, 0xE3, 0xEA, 0xBD, + 0x99, 0xCF, 0x3B, 0xBE, 0xC9, 0xA2, 0x5C, 0x3C, 0xDA, 0x26, 0xE1, 0xBA, + 0xA0, 0x88, 0x01, 0x3D, 0xE9, 0x35, 0x3B, 0x3F, 0xB6, 0x1E, 0xC6, 0xBC, + 0x6A, 0x35, 0x30, 0xBF, 0x8F, 0xAE, 0x00, 0x3C, 0x53, 0x08, 0xF2, 0x3E, + 0x17, 0x14, 0xF0, 0xBE, 0x39, 0xD3, 0x3C, 0xBD, 0x24, 0x1B, 0x4A, 0x3E, + 0xD3, 0xDC, 0x3F, 0xBE, 0x80, 0xFA, 0xA0, 0xBE, 0x03, 0xED, 0x51, 0x3D, + 0xEB, 0x80, 0x4C, 0xBF, 0x24, 0xEA, 0xAA, 0x3D, 0xFA, 0x2A, 0x0D, 0x3D, + 0x58, 0xA0, 0x9E, 0x3D, 0x0B, 0x03, 0xE8, 0xBD, 0x5F, 0xFC, 0x1B, 0x3F, + 0x13, 0x0C, 0xE3, 0xBD, 0x3F, 0x86, 0x38, 0x3F, 0x2F, 0xF1, 0xC6, 0x3C, + 0xD0, 0xA3, 0x03, 0xBF, 0xAE, 0x12, 0x92, 0x3E, 0x6B, 0x0C, 0xF3, 0xBD, + 0x66, 0x1F, 0x7D, 0xBE, 0x95, 0xBC, 0x37, 0x3F, 0xF6, 0xD3, 0xD4, 0x3E, + 0x6A, 0x3C, 0xCF, 0x3D, 0x4A, 0x33, 0x59, 0xBE, 0xE5, 0xEC, 0x45, 0xBE, + 0x4E, 0x97, 0xAA, 0x3E, 0x41, 0xBA, 0xCE, 0x3E, 0xDC, 0xDB, 0x1A, 0x3F, + 0xCD, 0x31, 0xAF, 0xBE, 0xF0, 0x11, 0x8B, 0xBC, 0x51, 0x8D, 0xC5, 0xBD, + 0x8C, 0xC9, 0x94, 0x3D, 0x53, 0xA2, 0x41, 0xBB, 0x97, 0xEB, 0x5C, 0x3D, + 0x36, 0x72, 0x20, 0x3B, 0x59, 0x5C, 0x2D, 0xBC, 0x3A, 0x30, 0xD2, 0xBC, + 0xAC, 0x08, 0x05, 0xBD, 0x86, 0x40, 0x0C, 0x3C, 0x28, 0xC0, 0xB2, 0x3D, + 0xFB, 0xDC, 0x08, 0xBD, 0x8F, 0x6F, 0x21, 0xBC, 0x3C, 0xE5, 0x7A, 0x3D, + 0x25, 0x02, 0xD5, 0xBD, 0xAF, 0x7C, 0x2F, 0x3C, 0xB7, 0xBA, 0x36, 0x3D, + 0xF4, 0x68, 0x2B, 0xBB, 0xE6, 0x47, 0x1B, 0x3C, 0xB2, 0xCB, 0x94, 0xBD, + 0xC7, 0x08, 0x9F, 0x3B, 0xB3, 0x63, 0x4B, 0x3C, 0xFA, 0xF1, 0x28, 0xBD, + 0x66, 0x09, 0x0F, 0x3D, 0x98, 0xC8, 0x13, 0x3D, 0x47, 0x46, 0x39, 0xBC, + 0x35, 0x6A, 0x05, 0xBD, 0x48, 0x62, 0xF6, 0xBC, 0x9C, 0x3A, 0x91, 0x3D, + 0xAC, 0x69, 0xC5, 0x3B, 0x27, 0x96, 0x09, 0x3E, 0x8A, 0x3F, 0x0C, 0xBD, + 0x7F, 0x5C, 0xEB, 0xBC, 0xCE, 0xE0, 0x24, 0x3F, 0x9B, 0xAF, 0xFC, 0xBE, + 0x94, 0xAA, 0x84, 0x3E, 0x33, 0xA0, 0x4A, 0xBF, 0x2F, 0xC7, 0x85, 0x3D, + 0x6A, 0xC9, 0x85, 0x3E, 0x7E, 0xC7, 0x31, 0x3F, 0xD8, 0xDB, 0xC9, 0x3E, + 0x22, 0x44, 0x02, 0x3E, 0xFF, 0xAE, 0x3E, 0xBF, 0xE5, 0x49, 0xFC, 0x3D, + 0x77, 0x38, 0x0D, 0xBD, 0xD1, 0x7D, 0x2E, 0x3E, 0x89, 0xBC, 0x45, 0xBE, + 0xD2, 0x8A, 0x0B, 0xBF, 0x0F, 0x66, 0xE0, 0xBE, 0xB8, 0x56, 0xBD, 0xBE, + 0xD1, 0x5C, 0x82, 0xBD, 0x0F, 0x56, 0x42, 0x3F, 0x0D, 0xA5, 0x24, 0x3F, + 0xFD, 0x51, 0xAF, 0x3C, 0xCC, 0xC6, 0x83, 0x3D, 0x02, 0x1D, 0xA4, 0x3E, + 0xFB, 0x13, 0x63, 0xBE, 0xC4, 0x60, 0xF6, 0xBD, 0x66, 0x68, 0xD1, 0x3E, + 0x7D, 0x68, 0x2D, 0x3D, 0xF4, 0x5F, 0x27, 0xBF, 0x2A, 0x9F, 0x61, 0x3D, + 0xC0, 0x20, 0x2B, 0xBE, 0x02, 0x88, 0x24, 0x3B, 0xFE, 0x06, 0xB7, 0x3D, + 0x56, 0x10, 0xE6, 0x3D, 0x8B, 0x91, 0x0C, 0xBD, 0x96, 0xAB, 0xE1, 0xBC, + 0x96, 0x8F, 0x62, 0xBD, 0x43, 0x79, 0x33, 0x3C, 0xD6, 0x66, 0xB6, 0x3C, + 0xBC, 0x22, 0x71, 0x3C, 0x5D, 0xF7, 0x01, 0xBC, 0x4C, 0x06, 0x76, 0xBC, + 0x3D, 0xB3, 0xDC, 0x3C, 0xC3, 0xCA, 0xDC, 0x3C, 0x02, 0xA3, 0xBB, 0x3C, + 0xD9, 0x89, 0x0F, 0xBD, 0xA4, 0xAB, 0xA8, 0x3E, 0x96, 0xAE, 0x5B, 0xBD, + 0x45, 0xA8, 0x34, 0xBD, 0xC8, 0xCC, 0xB9, 0xBC, 0x15, 0x15, 0x22, 0x3A, + 0x4C, 0xA5, 0xCE, 0x3C, 0x02, 0x1A, 0x86, 0x3C, 0xC8, 0x69, 0x99, 0xBC, + 0xDC, 0x96, 0x8F, 0x3D, 0xFE, 0x09, 0x01, 0xBE, 0x3D, 0x06, 0xD5, 0x3C, + 0x44, 0x87, 0x80, 0xBD, 0x70, 0x67, 0x44, 0xBD, 0x9B, 0x45, 0xA6, 0x3C, + 0xBC, 0x28, 0x0D, 0xBE, 0x57, 0x16, 0x21, 0xBB, 0xAF, 0xAE, 0x6D, 0xBE, + 0x95, 0x6E, 0xF0, 0xBC, 0x12, 0xE6, 0xD0, 0x3C, 0x6C, 0x5E, 0x85, 0x3D, + 0x15, 0x10, 0xFA, 0x3E, 0xF7, 0xC6, 0xB2, 0xBE, 0x25, 0x25, 0x35, 0xBE, + 0x8B, 0xA0, 0x91, 0xBD, 0x28, 0x18, 0x69, 0xBE, 0x3F, 0x00, 0xA2, 0xBE, + 0x2C, 0x16, 0xB6, 0xBD, 0x50, 0x7E, 0xA0, 0xBE, 0xB0, 0x68, 0x08, 0xBE, + 0x0D, 0xDC, 0xC6, 0xBC, 0x22, 0x9E, 0xCC, 0xBC, 0x9E, 0xA2, 0x2B, 0x3E, + 0x2F, 0x66, 0x01, 0x3F, 0x99, 0xE6, 0x05, 0xBE, 0xD5, 0x73, 0x0E, 0x3E, + 0x62, 0x16, 0x71, 0xBE, 0xB6, 0xEA, 0xDB, 0xBC, 0x58, 0x60, 0x26, 0xBF, + 0xA5, 0xDE, 0xBD, 0xBE, 0x3D, 0xC0, 0x2E, 0xBD, 0x92, 0x14, 0xA9, 0xBB, + 0x14, 0xA0, 0x93, 0x3F, 0xB3, 0x2B, 0xB6, 0xBE, 0x7A, 0xAE, 0xAD, 0x3D, + 0x66, 0x53, 0x0A, 0xBC, 0xB8, 0xC6, 0x60, 0xBE, 0x2F, 0x78, 0x9F, 0xBE, + 0x3C, 0x39, 0xD1, 0xBD, 0x13, 0xE1, 0x2E, 0xBE, 0x66, 0x45, 0x1F, 0xBF, + 0x24, 0xAD, 0xFE, 0xBD, 0xE1, 0x9C, 0x7D, 0x3F, 0xF2, 0x55, 0x17, 0xBF, + 0xF3, 0x84, 0x3B, 0x3F, 0xF6, 0x9D, 0x90, 0x3E, 0x00, 0x15, 0xB4, 0x3C, + 0x4A, 0x08, 0x7A, 0xBD, 0x7A, 0x4C, 0xB6, 0x3E, 0xB4, 0xD7, 0xDC, 0x3D, + 0x08, 0xBA, 0x6F, 0x3E, 0xB2, 0x6C, 0x37, 0xBE, 0x0B, 0x7E, 0x8E, 0x3F, + 0xB1, 0x96, 0x34, 0x3D, 0x2F, 0xF4, 0x38, 0xBF, 0x53, 0x0B, 0x42, 0xC0, + 0xD4, 0xEF, 0xDB, 0xBD, 0xB3, 0x6B, 0x75, 0xBF, 0xA3, 0x83, 0x1B, 0x3F, + 0xF4, 0x90, 0x87, 0x3C, 0xAA, 0xF2, 0x82, 0x3F, 0x75, 0x12, 0x16, 0xBF, + 0x59, 0x50, 0x4E, 0x3E, 0x8D, 0x3D, 0x63, 0xBD, 0xAC, 0xA8, 0xC6, 0xBE, + 0x11, 0xBF, 0x91, 0x3D, 0x3B, 0xEE, 0x4E, 0xBF, 0xDD, 0x90, 0x7E, 0x3E, + 0xBD, 0xF4, 0x10, 0xBF, 0x22, 0x4F, 0x96, 0x3E, 0x9B, 0x00, 0x83, 0x3E, + 0x5B, 0x0E, 0x82, 0x3E, 0x2C, 0x21, 0xF4, 0xBE, 0x6B, 0xAF, 0xC3, 0x3E, + 0xE1, 0x10, 0x8E, 0x3E, 0xC7, 0x1B, 0x8D, 0x3E, 0x5E, 0xB2, 0xB4, 0xBF, + 0x54, 0xC0, 0x5F, 0xBD, 0xAF, 0x82, 0xB5, 0xBD, 0x4E, 0xF1, 0xAE, 0x3E, + 0x60, 0xC2, 0xE3, 0x3E, 0xAC, 0x73, 0x53, 0x3E, 0x0F, 0x07, 0xB5, 0xBE, + 0xDE, 0x4B, 0x03, 0xBF, 0x5A, 0x87, 0xFB, 0x3D, 0xDD, 0x41, 0x21, 0xBE, + 0xC8, 0x4C, 0x22, 0xBF, 0xBB, 0xC2, 0x82, 0xBF, 0xFF, 0x76, 0xBF, 0xBF, + 0x92, 0xF7, 0xF5, 0xBD, 0xFC, 0xCE, 0xC9, 0x3D, 0xA7, 0x8F, 0xCF, 0xBD, + 0xE0, 0x2B, 0xAE, 0xBE, 0xA1, 0xAD, 0x1F, 0x3E, 0x73, 0xAE, 0xD2, 0xBD, + 0xA0, 0x42, 0x52, 0x3E, 0x44, 0xBC, 0x30, 0x3D, 0x25, 0xBC, 0x47, 0xBD, + 0x65, 0x57, 0xDC, 0x3E, 0xF6, 0x4E, 0x15, 0xBE, 0x91, 0x4D, 0xC2, 0x3E, + 0xD0, 0x50, 0xC5, 0x3D, 0xAA, 0xBE, 0xAA, 0xBE, 0xA8, 0x66, 0x1F, 0xBF, + 0xA3, 0x8F, 0xAF, 0x3D, 0xEF, 0x07, 0xC9, 0x3D, 0xA4, 0x6E, 0xBE, 0x3E, + 0x3D, 0x8E, 0x48, 0xBA, 0x45, 0x8A, 0x86, 0x3E, 0xAB, 0xAA, 0x7D, 0xBD, + 0x36, 0x38, 0xBB, 0xBD, 0x6C, 0x5E, 0x4F, 0x3D, 0xE3, 0x3E, 0x5A, 0x3D, + 0xA3, 0x85, 0x11, 0xBF, 0x2B, 0x22, 0x9C, 0xBD, 0xC0, 0xB6, 0xE0, 0xBE, + 0x31, 0x65, 0xF0, 0x3E, 0x88, 0x81, 0x35, 0xBD, 0xFE, 0xEC, 0x1C, 0x3E, + 0x97, 0xB6, 0xA1, 0xBE, 0x5B, 0xFA, 0x82, 0xBE, 0x7C, 0x02, 0x01, 0x3E, + 0x6F, 0x58, 0x04, 0x3F, 0x38, 0x4D, 0x45, 0xBD, 0xD6, 0xEA, 0xF4, 0x3E, + 0x48, 0x98, 0xCA, 0xBD, 0xDE, 0x61, 0x6E, 0xBB, 0xDB, 0x04, 0xCC, 0x3D, + 0x14, 0x73, 0xD7, 0x3E, 0xA3, 0xB6, 0x1A, 0xBF, 0x41, 0x27, 0x3A, 0xBE, + 0xC7, 0xE1, 0x2E, 0xBE, 0x0C, 0x61, 0x62, 0x3E, 0x8E, 0xA9, 0x38, 0x3F, + 0x50, 0xCB, 0x98, 0x3E, 0x28, 0xF4, 0x1B, 0x3E, 0x38, 0xFC, 0x7E, 0xBD, + 0xD6, 0xFB, 0x72, 0x3E, 0x3E, 0x34, 0x4C, 0x3D, 0xF7, 0x4F, 0x81, 0x3E, + 0xFC, 0x8C, 0x81, 0x3B, 0xCE, 0x25, 0x3C, 0xBB, 0x50, 0xCE, 0x9B, 0x3D, + 0x2E, 0xB4, 0xE6, 0x3E, 0x08, 0x33, 0xBD, 0x3D, 0x6C, 0x0E, 0x96, 0xBE, + 0x37, 0x46, 0x9A, 0x3D, 0x82, 0x7B, 0xE7, 0xBE, 0x25, 0x86, 0x3D, 0xBD, + 0x55, 0xCB, 0x3F, 0xBD, 0x44, 0x70, 0x6F, 0xBE, 0x88, 0x12, 0xD7, 0xBE, + 0xA6, 0x3E, 0x1E, 0x3F, 0x5A, 0xB5, 0x82, 0x3E, 0x0B, 0x1C, 0x53, 0xBE, + 0x0E, 0x4A, 0x80, 0x3C, 0x45, 0x7B, 0xC5, 0xBD, 0x4D, 0x63, 0xC4, 0x3E, + 0xDB, 0x1D, 0xD0, 0xBE, 0x45, 0x36, 0xB6, 0xBC, 0x43, 0x10, 0x30, 0xBE, + 0x54, 0x3D, 0x2E, 0xBE, 0xBA, 0x5B, 0xD0, 0x3E, 0x34, 0x15, 0x50, 0x3E, + 0x91, 0x1B, 0x84, 0xBE, 0xCD, 0x0D, 0x9D, 0xBF, 0xAE, 0xD0, 0x4A, 0x3E, + 0xCF, 0x25, 0xF1, 0x3E, 0x9B, 0x96, 0xB0, 0xBE, 0x2A, 0xF7, 0x4C, 0xBE, + 0xC9, 0x64, 0x71, 0xBE, 0xC3, 0x11, 0xBD, 0x3C, 0xD9, 0x3D, 0xB5, 0xBD, + 0xF8, 0x1F, 0x17, 0xBD, 0x39, 0x28, 0xDE, 0x3C, 0x6F, 0xAC, 0xCC, 0xBD, + 0x91, 0x88, 0x55, 0x3D, 0x2E, 0x34, 0xB0, 0xBD, 0xDB, 0x3E, 0x82, 0xBE, + 0xAB, 0xFE, 0x84, 0x3E, 0xF5, 0x5D, 0xE7, 0xBD, 0x03, 0xCC, 0x5A, 0x3D, + 0xBC, 0x2B, 0xE7, 0x3E, 0x14, 0x8B, 0x94, 0x3E, 0x91, 0x90, 0x03, 0xBD, + 0xBC, 0x0A, 0xE2, 0x3E, 0xB4, 0xE1, 0xB9, 0x3E, 0x0F, 0xDE, 0x02, 0x3D, + 0x80, 0x3C, 0x20, 0x3E, 0xD0, 0x41, 0x47, 0x3E, 0x3E, 0x9D, 0x47, 0xBE, + 0x07, 0xAA, 0x5D, 0xBD, 0x85, 0x9F, 0x67, 0x3E, 0xD1, 0x94, 0x3E, 0x3E, + 0x29, 0x41, 0x56, 0x3F, 0x46, 0x09, 0xDE, 0x3C, 0xEE, 0xC6, 0xFC, 0x3D, + 0x55, 0x47, 0x8C, 0xBC, 0x6F, 0x67, 0x86, 0x3B, 0xDA, 0xF2, 0xD0, 0xBD, + 0x66, 0x38, 0x09, 0xBF, 0x94, 0xD2, 0xC0, 0xBD, 0xC7, 0x9C, 0xD7, 0x3E, + 0xDC, 0xF2, 0x0D, 0xBE, 0xFA, 0x77, 0x14, 0x3F, 0x86, 0x58, 0x12, 0xBF, + 0xD8, 0x17, 0x1A, 0x3E, 0x9B, 0x43, 0x18, 0xBD, 0x49, 0x56, 0xE7, 0xBD, + 0x78, 0x99, 0x59, 0xBC, 0x3D, 0x5D, 0xB7, 0xBD, 0x94, 0x65, 0x36, 0x3F, + 0xCF, 0x04, 0x46, 0x3F, 0x0B, 0x4A, 0x0A, 0xBE, 0x14, 0xC8, 0x00, 0xBE, + 0x3C, 0xE9, 0xB5, 0x3D, 0xF2, 0x76, 0x0D, 0x3F, 0x4E, 0xA8, 0x81, 0x3E, + 0x56, 0x35, 0xE3, 0x3E, 0x20, 0x55, 0x70, 0xBD, 0x52, 0x2D, 0x18, 0x3E, + 0x96, 0x89, 0x20, 0xBF, 0xDB, 0x1A, 0xC0, 0x3E, 0xF4, 0xD4, 0x26, 0x3E, + 0xDD, 0x27, 0x4A, 0x3D, 0xA9, 0x09, 0x2F, 0x3E, 0x34, 0x62, 0x2E, 0xBF, + 0x42, 0x0D, 0x7B, 0xBD, 0xEA, 0x75, 0x21, 0xBF, 0x8F, 0x27, 0x0A, 0xBF, + 0xE3, 0x24, 0x3B, 0xBD, 0xB7, 0xFF, 0xA7, 0x3D, 0x49, 0x88, 0x63, 0xBE, + 0x54, 0x99, 0x0C, 0x3E, 0x72, 0xDD, 0xDC, 0x3E, 0x99, 0xB4, 0xA4, 0xBB, + 0x14, 0x8D, 0xB9, 0x3C, 0x58, 0xDD, 0xC4, 0x3E, 0x5B, 0xBE, 0xF3, 0xBD, + 0x3B, 0x00, 0x5D, 0x3E, 0xF9, 0x1C, 0xF1, 0xBD, 0x28, 0x56, 0x54, 0x3F, + 0x82, 0xE3, 0x90, 0x3E, 0x1B, 0x18, 0xC8, 0x3D, 0xCA, 0xD8, 0x77, 0xBE, + 0xC1, 0x8C, 0x8C, 0x3D, 0xD9, 0xC1, 0x4D, 0xBE, 0x3C, 0x81, 0x31, 0xBF, + 0xB7, 0x24, 0x80, 0x3E, 0x88, 0x73, 0x1A, 0x3D, 0xD1, 0xA4, 0x3A, 0xBE, + 0x08, 0xD0, 0x22, 0x3C, 0xEC, 0x0A, 0xCD, 0x3D, 0x3A, 0x9E, 0x62, 0x3D, + 0xE0, 0x70, 0xA5, 0x3D, 0x96, 0x9C, 0x39, 0xBE, 0x39, 0x1B, 0x47, 0xBF, + 0xA0, 0xA6, 0xE3, 0xBD, 0x31, 0x30, 0x48, 0xBD, 0xA9, 0x8A, 0xE6, 0xBC, + 0x47, 0x04, 0x79, 0x3D, 0xE0, 0xB6, 0xFB, 0xBE, 0x34, 0x92, 0x65, 0xBE, + 0xAB, 0xA0, 0xFB, 0x3F, 0x8F, 0x2A, 0x40, 0x3F, 0x13, 0xE9, 0x6C, 0xBE, + 0x09, 0xAF, 0x56, 0xBE, 0x92, 0xF6, 0x5C, 0xBE, 0x08, 0xE3, 0x7E, 0x3F, + 0x2F, 0x4F, 0xCC, 0xBD, 0x5B, 0xC5, 0xBE, 0xBE, 0x10, 0x58, 0x0E, 0xBE, + 0x06, 0xA1, 0x40, 0xBE, 0xE8, 0xCE, 0x3F, 0x3E, 0x2F, 0xA0, 0x2D, 0xBF, + 0x5A, 0xD9, 0x85, 0xBE, 0x5D, 0x34, 0x5A, 0xBE, 0x5A, 0x6C, 0x03, 0x3D, + 0x05, 0xEB, 0x8B, 0x3F, 0x2D, 0x38, 0x33, 0x3F, 0x86, 0xCB, 0x41, 0x3D, + 0x15, 0xAB, 0x67, 0xBE, 0x69, 0x0B, 0xF9, 0x3E, 0x5E, 0x85, 0x53, 0x3D, + 0xEC, 0xDE, 0x9E, 0x3E, 0x0B, 0xDC, 0x16, 0xBF, 0xE6, 0x60, 0x66, 0xBF, + 0xB0, 0x68, 0x25, 0xBF, 0x14, 0x95, 0x51, 0x3E, 0xE9, 0x28, 0xD9, 0x3C, + 0xA6, 0x03, 0xD4, 0xBE, 0x80, 0xB4, 0x37, 0xBE, 0x9A, 0xCF, 0x61, 0x3D, + 0x47, 0xA8, 0x64, 0x3F, 0xE3, 0x99, 0x74, 0x3E, 0xC4, 0x7D, 0x84, 0xBF, + 0xFD, 0xD4, 0x11, 0xBF, 0x1B, 0xD4, 0x31, 0x3E, 0x7F, 0xAD, 0x86, 0x3E, + 0xB7, 0x76, 0xC8, 0xBE, 0xAE, 0xEA, 0x52, 0x3E, 0xE9, 0x71, 0x8B, 0xBD, + 0xA2, 0x46, 0x46, 0x3E, 0x17, 0x9C, 0x11, 0xBF, 0xE9, 0x08, 0xA1, 0xBE, + 0x68, 0x8C, 0x82, 0x3E, 0x63, 0xC3, 0x48, 0xBE, 0xE9, 0xF9, 0x80, 0xBD, + 0x27, 0xA2, 0x0E, 0x3C, 0xC4, 0xE2, 0x95, 0x3E, 0xD8, 0x8B, 0x1E, 0x3F, + 0x21, 0xEC, 0x8F, 0x3F, 0xAF, 0x8D, 0x5B, 0x3F, 0xAD, 0x5D, 0x5A, 0x3E, + 0xF2, 0x89, 0x96, 0x3D, 0x4C, 0x9B, 0x4B, 0x3E, 0xCF, 0x36, 0x5A, 0x3F, + 0xED, 0xED, 0xD1, 0xBD, 0x8A, 0x18, 0x25, 0x3D, 0xAC, 0x3E, 0xBF, 0x3E, + 0xBB, 0x2B, 0x76, 0x3D, 0xA7, 0x42, 0x5A, 0x3D, 0x48, 0x42, 0x77, 0xBF, + 0x23, 0x68, 0x32, 0x3E, 0xCD, 0x2A, 0x37, 0x3C, 0x33, 0xCE, 0xB3, 0x3E, + 0x85, 0x7E, 0x1A, 0x3F, 0x64, 0xBE, 0xDA, 0xBE, 0x97, 0xEE, 0x18, 0xBE, + 0xC8, 0x45, 0x17, 0x3F, 0x3A, 0x3F, 0x81, 0x3E, 0x99, 0x43, 0x01, 0x3C, + 0xCE, 0xA3, 0xC7, 0x3C, 0xD0, 0x52, 0x53, 0x3E, 0xA1, 0x54, 0xFC, 0xBC, + 0xF8, 0xC6, 0xA4, 0x39, 0x2A, 0xBF, 0x87, 0x3D, 0x8F, 0xAC, 0x5A, 0x3C, + 0xEA, 0xE5, 0xD1, 0xB9, 0xEE, 0x8A, 0x51, 0x3E, 0x46, 0x2E, 0x26, 0x3E, + 0x9F, 0xF7, 0xB1, 0x3D, 0x28, 0x87, 0x8F, 0xBE, 0x0C, 0xC4, 0x7C, 0x3C, + 0x88, 0xBF, 0x86, 0xBE, 0xF0, 0x32, 0x91, 0xBD, 0x0B, 0x59, 0x5B, 0xBD, + 0x28, 0xBA, 0x90, 0x3D, 0x46, 0xF3, 0x3A, 0x3E, 0x3A, 0xA4, 0x6D, 0xBD, + 0x5A, 0xDA, 0xC2, 0xBD, 0xB4, 0x78, 0x69, 0x3C, 0x39, 0xC0, 0x12, 0xBE, + 0x4C, 0x4C, 0x1A, 0x3E, 0x8B, 0xAC, 0x28, 0xBE, 0x12, 0xDD, 0x9D, 0xBD, + 0x48, 0xA9, 0x08, 0x3E, 0x6F, 0xC1, 0x4D, 0xBE, 0x68, 0x76, 0x13, 0x3E, + 0xFD, 0x9E, 0x33, 0xBF, 0xA5, 0xAC, 0x44, 0x3E, 0x7F, 0x1D, 0x3C, 0xBD, + 0xDF, 0x65, 0xE2, 0x3C, 0xB3, 0x71, 0x4C, 0x3D, 0x48, 0x04, 0x87, 0xBD, + 0x69, 0x62, 0x65, 0x3C, 0xDE, 0x9E, 0x0B, 0xBE, 0xF9, 0x90, 0xCD, 0x3D, + 0x7B, 0x60, 0x7C, 0xBD, 0xE9, 0x73, 0xA9, 0x3C, 0x95, 0x54, 0x0A, 0x3D, + 0x29, 0x56, 0xB4, 0x3D, 0xEE, 0x6C, 0x27, 0xBD, 0x4C, 0xFA, 0x8B, 0x3C, + 0x2E, 0x89, 0xB2, 0x3C, 0xA5, 0x6A, 0x9E, 0x3D, 0x18, 0xEC, 0x72, 0xBC, + 0x36, 0x9D, 0x8C, 0x3D, 0x0D, 0x49, 0x7D, 0x3C, 0x59, 0xE5, 0x86, 0xBC, + 0x2F, 0x01, 0xD9, 0x3C, 0x02, 0xCD, 0x4C, 0xBD, 0x52, 0x47, 0xA8, 0x3C, + 0xD6, 0x00, 0x04, 0xBC, 0xB5, 0x1F, 0x7E, 0x3D, 0x67, 0xEA, 0x06, 0x3E, + 0xD3, 0xE0, 0x75, 0xBD, 0x4F, 0x44, 0x7B, 0xBD, 0xF7, 0xEA, 0x41, 0x3C, + 0x86, 0x73, 0x11, 0x3E, 0x9E, 0xDD, 0x0D, 0x3D, 0x0B, 0x4C, 0x3F, 0x3D, + 0xEC, 0x04, 0xF8, 0x3C, 0x45, 0xE9, 0x23, 0xBD, 0xAC, 0x7F, 0x19, 0x3E, + 0xD9, 0xF9, 0xFE, 0x3D, 0xC0, 0x71, 0x85, 0xBE, 0x9E, 0xA8, 0x57, 0xBE, + 0x09, 0xA8, 0xB6, 0xBE, 0xF5, 0x3D, 0x0C, 0xBF, 0xD1, 0x10, 0x90, 0xBE, + 0x76, 0x46, 0x1E, 0xBE, 0x56, 0x1B, 0xA6, 0xBE, 0xFD, 0x79, 0x12, 0xBF, + 0x4F, 0x07, 0x08, 0xBF, 0x56, 0xE7, 0x00, 0x3F, 0x90, 0x80, 0x06, 0xBF, + 0x36, 0x04, 0x94, 0x3F, 0xD1, 0x4B, 0x05, 0x3F, 0x40, 0xD4, 0x77, 0x3E, + 0x2E, 0x3D, 0x39, 0xBF, 0xDB, 0xA2, 0x03, 0x3F, 0x8A, 0x9D, 0x24, 0xBF, + 0x07, 0x69, 0x8A, 0x3F, 0x7E, 0xCB, 0x54, 0xBF, 0xE7, 0x70, 0x1B, 0xBD, + 0x96, 0xEE, 0x91, 0xBD, 0x78, 0xC5, 0xD6, 0x3C, 0x92, 0x99, 0xEF, 0x3E, + 0xBB, 0xE3, 0xF4, 0xBD, 0x19, 0xAD, 0x85, 0xBE, 0x9C, 0x12, 0x26, 0x3E, + 0x5A, 0xB5, 0x0E, 0x3F, 0x30, 0x4B, 0x4A, 0xBE, 0x61, 0xD4, 0x4F, 0x3E, + 0x47, 0x81, 0x22, 0xBF, 0x83, 0xBD, 0x27, 0x3D, 0x6D, 0x8B, 0xD3, 0x3C, + 0x47, 0x98, 0xA8, 0x3B, 0x33, 0xB8, 0xDC, 0xBC, 0x6B, 0x83, 0x70, 0x3C, + 0xD5, 0x87, 0x2E, 0x3A, 0x07, 0xBE, 0x12, 0xBD, 0xE9, 0xC3, 0x2C, 0x3C, + 0x6C, 0x77, 0x9D, 0x3D, 0xFE, 0xCA, 0x8D, 0x3C, 0x5D, 0x93, 0x63, 0x3D, + 0xF9, 0x43, 0x45, 0x3A, 0x70, 0xB3, 0xBD, 0xBB, 0x06, 0xDA, 0x52, 0x3D, + 0xC8, 0x1F, 0x2C, 0xBD, 0x7A, 0xFF, 0x62, 0xBC, 0x60, 0xDB, 0x6C, 0xBD, + 0x71, 0x0E, 0x7E, 0x3C, 0xAA, 0xDD, 0x9D, 0x3C, 0x84, 0x2B, 0x88, 0xBC, + 0xB9, 0x8D, 0xCC, 0xBC, 0x97, 0x57, 0x3A, 0xBD, 0xE2, 0x06, 0xD1, 0xBC, + 0x5F, 0x0F, 0xAC, 0xBC, 0x9E, 0x1C, 0xB5, 0xBD, 0x28, 0xDA, 0xCA, 0x3C, + 0x7F, 0xBA, 0x0E, 0x3D, 0xEB, 0x0E, 0x05, 0xBE, 0x09, 0x8A, 0x9C, 0xBD, + 0x84, 0xF0, 0x59, 0x3C, 0x73, 0x77, 0xBE, 0x3C, 0xBD, 0x49, 0x49, 0x3D, + 0x4A, 0x9B, 0xA2, 0x3D, 0x61, 0x4F, 0x5B, 0xBC, 0x0A, 0x7E, 0x26, 0xBD, + 0x44, 0xA6, 0x0E, 0xBC, 0xF7, 0x60, 0xF4, 0x3C, 0x77, 0x5D, 0xCE, 0xBB, + 0xC2, 0x52, 0xC3, 0x3B, 0x09, 0x3E, 0x17, 0xBD, 0xCA, 0xE1, 0x4D, 0xBB, + 0x2F, 0x98, 0x5B, 0x3B, 0x2D, 0xC3, 0x32, 0x3D, 0x08, 0x4A, 0x83, 0x3A, + 0xAB, 0x09, 0x8D, 0x3B, 0x4A, 0xCE, 0xC7, 0xBD, 0x13, 0x34, 0xB1, 0xBD, + 0xDE, 0xAB, 0xEA, 0xBC, 0x32, 0xE5, 0xC3, 0x3C, 0x4B, 0x30, 0x07, 0x3B, + 0x54, 0x4D, 0x64, 0x3D, 0x26, 0xFD, 0xC0, 0x3C, 0xFC, 0x18, 0x44, 0xBD, + 0x9A, 0x7F, 0x00, 0xBC, 0x19, 0xED, 0x63, 0x3D, 0xCD, 0x35, 0x39, 0xBD, + 0xD8, 0x19, 0xF2, 0x3A, 0x12, 0xCC, 0x40, 0xBC, 0xE1, 0x93, 0xA1, 0x3C, + 0xCD, 0x4B, 0xA2, 0xBD, 0x9A, 0x39, 0xDA, 0xBC, 0xF4, 0xCD, 0xAC, 0xBD, + 0x02, 0x02, 0x11, 0xBD, 0xC5, 0x7F, 0x4A, 0x3C, 0x92, 0x66, 0xB2, 0x3E, + 0x69, 0x82, 0x93, 0x3D, 0xED, 0x4C, 0x06, 0xBF, 0xF7, 0x79, 0x28, 0x3E, + 0x5A, 0xF4, 0x96, 0xBD, 0x58, 0x34, 0x63, 0xBD, 0x60, 0x54, 0xC3, 0x3D, + 0x60, 0xEB, 0xCD, 0xBD, 0xD3, 0xA7, 0xD6, 0xBC, 0x45, 0xDE, 0xAE, 0x3D, + 0xD4, 0x34, 0x1C, 0x3E, 0x17, 0x3E, 0x82, 0xBC, 0x01, 0x30, 0x9C, 0x3E, + 0x39, 0x16, 0x85, 0x3E, 0x0E, 0xE6, 0xFF, 0x3E, 0xDE, 0xB5, 0x87, 0xBD, + 0x65, 0x30, 0xC2, 0x3E, 0x44, 0xFF, 0xB5, 0xBB, 0xFE, 0x55, 0xDA, 0x3E, + 0x25, 0x0E, 0xA0, 0x3B, 0x5F, 0x52, 0x53, 0xBD, 0xBA, 0xE7, 0x2E, 0xBB, + 0x12, 0xF8, 0x2C, 0xBE, 0xDF, 0x03, 0xC1, 0x3C, 0x9D, 0x68, 0xDE, 0xBC, + 0xC6, 0x9C, 0x60, 0xBE, 0xF5, 0x60, 0xC6, 0xBD, 0x03, 0xF9, 0xB1, 0x3E, + 0x9E, 0x39, 0xB0, 0xBC, 0x18, 0x3E, 0x9B, 0xBE, 0x8C, 0xF7, 0x94, 0xBE, + 0x24, 0x03, 0x9F, 0xBD, 0xE7, 0x1C, 0xD1, 0x3C, 0xED, 0xDB, 0x93, 0x3C, + 0x48, 0xF6, 0x06, 0xBD, 0x67, 0x81, 0x03, 0x3C, 0x60, 0x60, 0x0B, 0xBB, + 0x7D, 0x32, 0xA9, 0xBA, 0x46, 0x63, 0x9D, 0xBC, 0x18, 0x77, 0x53, 0x3C, + 0x35, 0x6F, 0x7A, 0x3D, 0x72, 0x47, 0x6A, 0x3C, 0x19, 0xA7, 0xF9, 0x3B, + 0xDC, 0x69, 0xBE, 0xBB, 0x92, 0xDE, 0xB0, 0x3C, 0x6B, 0x7F, 0x95, 0xBC, + 0x4E, 0x03, 0x90, 0x3C, 0xEC, 0xBE, 0xD3, 0x3B, 0x62, 0x2C, 0x42, 0x3D, + 0xEC, 0x54, 0x1D, 0xBB, 0x92, 0x9C, 0x04, 0x3C, 0x37, 0x4B, 0xE2, 0x3B, + 0x5B, 0x47, 0x31, 0xBD, 0x70, 0x01, 0x86, 0xBB, 0x5B, 0xA9, 0xD8, 0x3B, + 0xCF, 0x06, 0x08, 0xBC, 0x09, 0x0D, 0x56, 0xBD, 0xAE, 0x42, 0x2F, 0x3B, + 0x86, 0x6B, 0xAB, 0x3C, 0x5C, 0x56, 0x14, 0xBD, 0x54, 0xD6, 0x49, 0xBD, + 0xA9, 0xFC, 0xB4, 0xBD, 0xE5, 0x64, 0xD5, 0xBC, 0xF8, 0x90, 0x60, 0x3C, + 0xFA, 0x19, 0x82, 0xBE, 0x58, 0xC0, 0x57, 0x3E, 0xEB, 0xB8, 0xC4, 0xBE, + 0x03, 0x1C, 0x95, 0xBE, 0x17, 0x60, 0xA3, 0x3E, 0xAE, 0xE5, 0x14, 0xBD, + 0x47, 0x25, 0xEA, 0x3D, 0xED, 0x2D, 0x07, 0xBF, 0x41, 0x73, 0x04, 0x3E, + 0x08, 0x7F, 0x74, 0x3E, 0xF7, 0x0A, 0x0D, 0x3F, 0x37, 0x02, 0x0A, 0xBE, + 0xF6, 0x2B, 0xB0, 0x3E, 0x06, 0x08, 0x1C, 0x3F, 0x0C, 0xCE, 0x75, 0xBE, + 0x1D, 0x2C, 0x55, 0xBE, 0x86, 0x50, 0x08, 0x3F, 0xD1, 0x84, 0x10, 0xBE, + 0xF0, 0xC4, 0xC1, 0x3E, 0xBD, 0x88, 0x5A, 0xBC, 0x81, 0x84, 0x70, 0x3E, + 0x98, 0xC0, 0x84, 0xBE, 0xCE, 0x39, 0x3A, 0x3E, 0xD2, 0xC8, 0x39, 0xBF, + 0x1F, 0xBF, 0xEE, 0x3D, 0x24, 0x91, 0xC1, 0xBE, 0x8F, 0xED, 0x35, 0xBE, + 0x07, 0x32, 0xCD, 0xBE, 0x9B, 0xA7, 0x66, 0x3E, 0x67, 0xC4, 0x00, 0x3F, + 0xC2, 0xED, 0x6A, 0xBF, 0x1D, 0x84, 0x9C, 0xBE, 0x3A, 0xA7, 0x14, 0xBE, + 0xAC, 0x5C, 0x2F, 0x3E, 0xE6, 0x10, 0x7F, 0x3E, 0x41, 0x91, 0x54, 0x3F, + 0xB7, 0x7C, 0x7E, 0x3E, 0x14, 0xDC, 0xF2, 0x3E, 0x09, 0x52, 0x11, 0xBF, + 0x44, 0x32, 0xD4, 0xBA, 0xDF, 0xB0, 0x38, 0xBE, 0x15, 0xF2, 0x35, 0x3E, + 0x43, 0x8D, 0x57, 0x3B, 0x20, 0x6F, 0x89, 0xBE, 0x19, 0x62, 0x20, 0xBF, + 0xB6, 0x72, 0x0E, 0xC0, 0x2C, 0x25, 0xAA, 0x3E, 0xB7, 0x01, 0x45, 0x3F, + 0x85, 0x65, 0x20, 0xBF, 0xE3, 0x5A, 0x25, 0xBE, 0x74, 0x9C, 0x26, 0xBE, + 0xE3, 0x85, 0x82, 0xBF, 0xBC, 0x9E, 0x28, 0xBE, 0x89, 0x44, 0xEE, 0xBE, + 0x27, 0x03, 0x94, 0xBE, 0xB9, 0xAC, 0x55, 0xBF, 0x11, 0x0B, 0x0B, 0x3E, + 0x90, 0x9E, 0xCA, 0x3E, 0xA8, 0x41, 0x96, 0x3E, 0xF6, 0x52, 0x05, 0xBF, + 0x7C, 0xB8, 0x37, 0xBF, 0xF1, 0x02, 0x10, 0x3E, 0x2F, 0x4C, 0xB3, 0x3E, + 0xFF, 0x79, 0xD6, 0xBE, 0x73, 0xB9, 0x78, 0xBD, 0x24, 0xC2, 0x57, 0xBC, + 0xD2, 0x26, 0xFA, 0xBD, 0x70, 0x98, 0xFC, 0xBD, 0xCC, 0xE8, 0xDF, 0xBD, + 0xBB, 0xCA, 0x07, 0xBD, 0x2A, 0xEA, 0x68, 0xBE, 0xDC, 0x9C, 0xBD, 0xBC, + 0x0D, 0x42, 0x4D, 0x3E, 0xD6, 0xA1, 0x52, 0xBC, 0xC4, 0x2B, 0x1B, 0xBB, + 0x95, 0xAF, 0x68, 0xBD, 0x85, 0xED, 0xED, 0x3D, 0xFC, 0xE6, 0xBB, 0x3E, + 0x8C, 0x0B, 0x14, 0x3F, 0x43, 0x13, 0x59, 0x3E, 0x40, 0x70, 0xE8, 0x3C, + 0x02, 0xBA, 0x03, 0x3D, 0xEC, 0xF9, 0xAC, 0xBE, 0x00, 0x67, 0x97, 0x3D, + 0x8E, 0xFF, 0xAC, 0x3C, 0xD1, 0x43, 0x35, 0x3D, 0x33, 0x8C, 0x98, 0xBD, + 0x98, 0xE2, 0xAA, 0x3B, 0x52, 0xB9, 0x93, 0xBB, 0x19, 0x83, 0xB5, 0x3E, + 0xCA, 0x66, 0x18, 0xBD, 0xE0, 0xF9, 0x23, 0x3E, 0xBD, 0x88, 0x6A, 0xBD, + 0x60, 0x91, 0x5E, 0xBE, 0x26, 0x89, 0x09, 0xBE, 0x1E, 0x78, 0x06, 0xBD, + 0x6C, 0x8A, 0xCF, 0x3C, 0xE6, 0x6A, 0x80, 0x3C, 0x0D, 0x35, 0x71, 0x3A, + 0x94, 0x48, 0x14, 0x3C, 0x89, 0x38, 0x3F, 0x3C, 0xF5, 0x0A, 0x71, 0x3C, + 0xF3, 0xC7, 0xEF, 0x3C, 0x20, 0xA5, 0x74, 0xBC, 0x7D, 0xBF, 0x9A, 0xBC, + 0x9D, 0xD5, 0x8D, 0x3C, 0x20, 0x9B, 0x16, 0x3D, 0x23, 0x81, 0x25, 0x3C, + 0xC4, 0x09, 0x58, 0xBC, 0xD9, 0xB8, 0x17, 0xBD, 0xC6, 0x60, 0x6D, 0x3D, + 0xB9, 0xEA, 0x23, 0xBD, 0xE0, 0x88, 0x1D, 0xBD, 0x32, 0x99, 0x45, 0x3B, + 0xDB, 0xE8, 0xF5, 0x3C, 0x47, 0x60, 0xFD, 0xBC, 0x46, 0x8D, 0x84, 0x3C, + 0x77, 0xAB, 0x47, 0xBD, 0xAA, 0xD5, 0x79, 0xBD, 0x19, 0x90, 0x43, 0xBC, + 0x51, 0x86, 0x95, 0xBC, 0x4B, 0x31, 0x23, 0x3D, 0x8E, 0x58, 0xB8, 0x3B, + 0xC2, 0x67, 0x30, 0xBD, 0x0C, 0x38, 0xC9, 0xBC, 0x0C, 0x37, 0x42, 0x3D, + 0x6F, 0x6B, 0xC5, 0x3C, 0x84, 0xBE, 0xE2, 0xBC, 0xA0, 0x53, 0x0E, 0xBE, + 0x59, 0xE9, 0xA8, 0xBE, 0x74, 0xE5, 0x5B, 0x3D, 0x81, 0x8B, 0x34, 0x3F, + 0xB2, 0xFA, 0x92, 0xBD, 0x93, 0x4A, 0x01, 0x3D, 0x17, 0x6C, 0x83, 0xBC, + 0xA6, 0xB9, 0x66, 0x3E, 0x96, 0x40, 0x9D, 0xBD, 0x41, 0x59, 0x1E, 0x3E, + 0xC8, 0x00, 0x6D, 0xBF, 0x4E, 0xEF, 0x33, 0x3D, 0x1E, 0x8F, 0xDD, 0xBC, + 0x81, 0xAF, 0x85, 0xBE, 0x0E, 0x5B, 0x48, 0x3D, 0xB0, 0x32, 0x69, 0xBD, + 0x48, 0xF8, 0x9A, 0xBE, 0x46, 0x44, 0xD4, 0x3C, 0x93, 0x0C, 0xA3, 0x3D, + 0x4A, 0x86, 0x07, 0x3F, 0x03, 0x8C, 0xB2, 0xBD, 0xA8, 0xCF, 0xF7, 0xBD, + 0xF1, 0x0F, 0x3D, 0xBE, 0x34, 0x89, 0xD7, 0xBD, 0x0F, 0xA6, 0xA7, 0xBE, + 0xA7, 0x18, 0x99, 0x3E, 0x79, 0x0A, 0x35, 0x3E, 0x21, 0x97, 0xD6, 0xBE, + 0x7B, 0x83, 0x51, 0xBC, 0xA1, 0x2B, 0x53, 0x3F, 0x3A, 0x8A, 0xED, 0xBD, + 0x5B, 0xB7, 0xC7, 0xBE, 0x7F, 0x6D, 0x45, 0xBF, 0x60, 0x40, 0x3D, 0x3E, + 0x02, 0x06, 0xFF, 0x3E, 0x91, 0xF7, 0x1E, 0x3F, 0xF0, 0x48, 0x8D, 0x3D, + 0xD8, 0x2A, 0xCD, 0x3D, 0xBF, 0xD0, 0x84, 0xBE, 0x19, 0xE0, 0xA2, 0x3D, + 0x3D, 0xC7, 0xB7, 0x3E, 0x57, 0x74, 0x27, 0xBE, 0x28, 0x47, 0x25, 0x3B, + 0x60, 0x01, 0x37, 0xBD, 0x27, 0x7F, 0xE8, 0xBB, 0x61, 0x24, 0xAD, 0xBE, + 0x28, 0x01, 0x2F, 0xBE, 0x93, 0xB3, 0x05, 0xBF, 0x03, 0x35, 0xCE, 0xBE, + 0x37, 0x2D, 0xEE, 0x3C, 0x0C, 0xEC, 0x78, 0xBF, 0xC8, 0xE2, 0x08, 0xBE, + 0xEF, 0x95, 0xD9, 0x3C, 0x44, 0x6C, 0x20, 0x3D, 0x08, 0xA8, 0x3D, 0x3F, + 0xA9, 0x04, 0x7F, 0x3E, 0x18, 0x0B, 0x49, 0x3E, 0x90, 0x24, 0x1C, 0x3E, + 0x4F, 0x84, 0xF4, 0xBE, 0x2B, 0xED, 0x62, 0xBD, 0x3B, 0x3E, 0x32, 0x3D, + 0x98, 0x2F, 0x19, 0xBF, 0xAA, 0xF1, 0xB7, 0xBE, 0xD4, 0xD8, 0x79, 0x3D, + 0xCB, 0x0D, 0x4C, 0x3E, 0x9E, 0xB8, 0xBA, 0x3D, 0x78, 0xAC, 0xC3, 0xBE, + 0xFC, 0xE5, 0xFA, 0x3E, 0x4E, 0x97, 0x81, 0x3D, 0x96, 0x30, 0x63, 0x3D, + 0x25, 0x99, 0x01, 0x3F, 0xA4, 0x8D, 0x82, 0x3D, 0xD3, 0x78, 0xAE, 0xBD, + 0x80, 0x99, 0x2A, 0x3F, 0x3C, 0x83, 0xC2, 0xBD, 0xE4, 0x33, 0xD7, 0x3A, + 0x4E, 0xD5, 0x17, 0xBE, 0xF5, 0x57, 0x12, 0xBF, 0xAF, 0x95, 0xFB, 0xBF, + 0x7B, 0x74, 0xA7, 0x3E, 0xC4, 0xAF, 0x6F, 0xBE, 0x18, 0x71, 0x87, 0xBC, + 0x0E, 0xAA, 0x09, 0x3F, 0x82, 0x0D, 0x4B, 0x3D, 0x93, 0x00, 0xCF, 0x3D, + 0x29, 0x27, 0x8A, 0x3D, 0x12, 0x0D, 0xD6, 0x3D, 0xC5, 0xA5, 0x52, 0xBF, + 0x8B, 0xE4, 0xE9, 0xBE, 0xC2, 0x53, 0x22, 0x3F, 0xE2, 0x4D, 0x69, 0x3E, + 0x4B, 0xE8, 0xB6, 0xBF, 0x0D, 0xB1, 0x9E, 0xBC, 0x4F, 0x47, 0xB6, 0xBE, + 0x9A, 0x73, 0x34, 0x3F, 0xF0, 0x86, 0xDA, 0x3E, 0xD9, 0xF4, 0x24, 0xBE, + 0x89, 0xD5, 0x08, 0x3E, 0xFF, 0x82, 0x79, 0xBF, 0xD5, 0xAE, 0x7B, 0x3F, + 0x4F, 0x15, 0x69, 0x3E, 0x99, 0xC1, 0xD5, 0xBE, 0x74, 0x8D, 0x15, 0xBF, + 0x8F, 0xCD, 0x04, 0x3E, 0xF6, 0xC9, 0x18, 0xBF, 0x9C, 0x4B, 0x78, 0x3D, + 0x31, 0x36, 0xEE, 0xBE, 0x1A, 0xCC, 0x58, 0x3E, 0xF4, 0x55, 0x31, 0x3C, + 0xEB, 0xD6, 0xE6, 0x3E, 0xD4, 0x31, 0xA3, 0x3E, 0x64, 0xD1, 0x1A, 0xBE, + 0x37, 0x8F, 0xAB, 0xBE, 0x16, 0xC4, 0x33, 0x3E, 0xE7, 0xB4, 0xDD, 0x3E, + 0x18, 0xEB, 0x50, 0x3E, 0xDB, 0x35, 0xAA, 0xBD, 0x9B, 0x9A, 0x16, 0x3E, + 0xA2, 0xDD, 0x18, 0x3F, 0x8B, 0xAF, 0x00, 0xBF, 0x93, 0xFC, 0x9B, 0x3E, + 0xB2, 0xD8, 0x4A, 0xBD, 0xD0, 0x20, 0x29, 0x3E, 0x7E, 0x0C, 0xA7, 0xBF, + 0x95, 0x86, 0x94, 0x3E, 0x74, 0xFF, 0xCD, 0x3E, 0x7E, 0x12, 0xAD, 0x3E, + 0x23, 0xEC, 0xDD, 0x3C, 0x56, 0x2D, 0xB4, 0xBD, 0xBF, 0x92, 0x12, 0xBD, + 0x74, 0x19, 0xBC, 0xBD, 0x22, 0x5A, 0x64, 0xBD, 0x0A, 0xE4, 0x9D, 0xBD, + 0xF4, 0x11, 0x24, 0xBA, 0x4C, 0x26, 0xDA, 0xBD, 0x49, 0xC9, 0x3F, 0xBA, + 0xCA, 0xEB, 0x51, 0xBD, 0x1B, 0x3A, 0x98, 0x3B, 0xC5, 0x47, 0x3F, 0x3D, + 0xD9, 0xE1, 0x9D, 0xBD, 0x4F, 0x48, 0xC9, 0x3C, 0xA0, 0x2A, 0x11, 0x3E, + 0x10, 0x35, 0x29, 0xBE, 0xB7, 0xD9, 0x2C, 0x3D, 0x02, 0x94, 0x56, 0xBE, + 0xDA, 0xEB, 0x14, 0xBD, 0xE0, 0xC7, 0x71, 0xBB, 0x52, 0x1B, 0x24, 0xBD, + 0xE1, 0xAF, 0xC0, 0x3D, 0x35, 0xBF, 0xF1, 0xBD, 0xFD, 0x76, 0x41, 0x3C, + 0x97, 0x56, 0x32, 0xBD, 0xAD, 0x7C, 0x84, 0xBE, 0xF2, 0x2A, 0x04, 0x3E, + 0xA3, 0xE5, 0x7C, 0x3C, 0x55, 0x8F, 0x42, 0x3E, 0xF9, 0x00, 0x2D, 0xBD, + 0x64, 0x1E, 0x80, 0x3E, 0x29, 0xF4, 0x2C, 0x3E, 0xFE, 0xB7, 0x34, 0x3D, + 0xAE, 0x90, 0xF7, 0xBC, 0x29, 0x4D, 0xE7, 0xBD, 0xEA, 0xD1, 0xB1, 0xBC, + 0x98, 0xCF, 0x8D, 0xBD, 0xE1, 0x10, 0xA6, 0xBD, 0x86, 0x6B, 0x52, 0x3D, + 0xD6, 0xAF, 0x27, 0xBE, 0xB0, 0xDE, 0xCF, 0xBD, 0x29, 0xA1, 0x08, 0xBD, + 0x51, 0x95, 0x3A, 0xBE, 0x2E, 0x20, 0x04, 0xBE, 0x26, 0xD4, 0x14, 0x3D, + 0x77, 0x3E, 0x68, 0x3D, 0xE9, 0x11, 0x81, 0xBD, 0xCF, 0x6C, 0x60, 0x3E, + 0x37, 0x60, 0x9E, 0x3D, 0xDA, 0x46, 0x20, 0x3E, 0x13, 0xEB, 0x65, 0xBC, + 0xCE, 0x7A, 0x8E, 0xBE, 0x4A, 0x61, 0x7F, 0xBD, 0xC5, 0xA2, 0xFA, 0xBA, + 0x68, 0x31, 0x01, 0xBE, 0x65, 0x45, 0x4C, 0x3E, 0x1F, 0x43, 0x83, 0xBD, + 0x0C, 0xBB, 0xAC, 0x3E, 0x3D, 0xCB, 0xB4, 0x3E, 0x7D, 0x50, 0xC2, 0xBC, + 0x4A, 0xE2, 0xE2, 0xBD, 0x29, 0x5B, 0xA1, 0x3E, 0xFF, 0x4C, 0x0F, 0x3F, + 0x99, 0x11, 0x98, 0xBD, 0x62, 0xC5, 0xAE, 0xBD, 0xAE, 0x5E, 0x33, 0x3E, + 0x46, 0xF3, 0x89, 0x3D, 0x44, 0xD6, 0x84, 0xBE, 0x30, 0x46, 0xC4, 0x3D, + 0xC4, 0x56, 0x05, 0x3D, 0x66, 0x75, 0x32, 0xBD, 0x2E, 0xEF, 0x7A, 0xBC, + 0xB1, 0x52, 0x6D, 0x3C, 0xF2, 0x8D, 0x68, 0x3D, 0xC3, 0xE2, 0x65, 0x3D, + 0x50, 0x4B, 0x77, 0x3E, 0x8D, 0x24, 0x8F, 0x3D, 0xF7, 0x20, 0x9C, 0xBD, + 0xCF, 0x7D, 0x96, 0x3E, 0x37, 0x03, 0x60, 0xBE, 0xBF, 0xE5, 0xBA, 0xBD, + 0xA4, 0x83, 0x2F, 0xBC, 0x49, 0x6B, 0x12, 0x3D, 0xD2, 0xF8, 0x0E, 0x3E, + 0x83, 0x0D, 0x72, 0xBD, 0x1E, 0xDE, 0x9D, 0xBC, 0xAB, 0xE3, 0xA5, 0xBC, + 0x05, 0xEB, 0x46, 0xBE, 0xDC, 0x89, 0x21, 0x3E, 0x92, 0xEB, 0xB2, 0xBE, + 0xDA, 0x57, 0xC5, 0x3D, 0xFB, 0x8D, 0x5B, 0x3D, 0x7C, 0x20, 0x47, 0xBD, + 0x3B, 0x98, 0xA7, 0x3D, 0xE5, 0x71, 0x47, 0x3D, 0xD1, 0xE7, 0x66, 0x3C, + 0x0E, 0xDF, 0x0D, 0x3C, 0xD0, 0x01, 0x85, 0xBD, 0x78, 0x96, 0x41, 0xBD, + 0xA1, 0xB1, 0x9F, 0xBD, 0x23, 0xB0, 0x8D, 0x3D, 0xB0, 0x28, 0x64, 0x3D, + 0x56, 0xC5, 0x0D, 0xBD, 0x8C, 0xEF, 0x70, 0x3D, 0x6A, 0x2D, 0x93, 0xBD, + 0x01, 0xBB, 0x57, 0xBD, 0x53, 0x54, 0x35, 0xBD, 0x7C, 0xDA, 0x38, 0xBD, + 0x0A, 0x41, 0x2A, 0xBD, 0x06, 0x51, 0x38, 0x3C, 0x90, 0x4F, 0x43, 0xBC, + 0x15, 0x13, 0x85, 0xBD, 0xA0, 0x47, 0x62, 0xBD, 0xB7, 0x2E, 0x8C, 0x3C, + 0x21, 0xDD, 0x42, 0x3B, 0xD8, 0x6B, 0x58, 0x3C, 0x45, 0xA4, 0xA3, 0x3D, + 0xE8, 0xF7, 0xBD, 0x3B, 0xC9, 0x23, 0xC0, 0x3C, 0x5F, 0xA6, 0xC6, 0x3C, + 0xB9, 0xEF, 0xD2, 0xBC, 0x4C, 0xAC, 0x06, 0x3E, 0x09, 0x80, 0x68, 0xBD, + 0x67, 0x46, 0x58, 0xBD, 0x8C, 0xA2, 0x32, 0x3E, 0xD8, 0xE1, 0xA6, 0x3D, + 0xC2, 0x85, 0xEE, 0x3C, 0xED, 0x48, 0x0D, 0xBD, 0x7F, 0x97, 0xD9, 0xBC, + 0x6A, 0x8A, 0xAE, 0x3D, 0x18, 0xEB, 0x38, 0x3E, 0xC1, 0x56, 0x31, 0xBE, + 0x1B, 0x42, 0x04, 0xBC, 0x0C, 0x23, 0xDD, 0x3D, 0x4E, 0x09, 0x56, 0x3D, + 0x14, 0x30, 0x2C, 0xBD, 0x03, 0xED, 0xBB, 0x3D, 0xF8, 0x0D, 0xE5, 0x3C, + 0x1D, 0x66, 0x92, 0xBB, 0x87, 0x8C, 0x8B, 0x3D, 0x95, 0x80, 0x86, 0x3D, + 0x52, 0x8A, 0x31, 0xBB, 0x8B, 0x26, 0x7D, 0xBC, 0x45, 0xC9, 0xB0, 0x3E, + 0x19, 0xE3, 0xA2, 0xBD, 0xC6, 0xBD, 0x62, 0xBB, 0x41, 0xAB, 0x85, 0xBC, + 0x89, 0xE2, 0x2A, 0xBE, 0x4A, 0x61, 0xE0, 0xBD, 0xA5, 0x3E, 0x32, 0xBD, + 0xF9, 0x76, 0xC3, 0xBD, 0xCC, 0x8F, 0x63, 0xBE, 0xC9, 0xA0, 0xCE, 0x3D, + 0xD9, 0xFF, 0x16, 0x3E, 0x7A, 0x37, 0x55, 0x3E, 0x7E, 0x76, 0x62, 0xBC, + 0x3B, 0x3C, 0x0A, 0xBE, 0xFF, 0x52, 0xBE, 0x3D, 0xB6, 0x17, 0x2B, 0x3F, + 0xF7, 0xB3, 0x8D, 0xBD, 0xBF, 0x89, 0x59, 0xBE, 0xE0, 0x36, 0xA5, 0x3E, + 0xA1, 0x9E, 0x59, 0x3C, 0x16, 0x05, 0x92, 0xBF, 0x8F, 0x86, 0xDA, 0xBD, + 0x3C, 0xA2, 0x64, 0xBB, 0xF5, 0x34, 0x2E, 0xBE, 0xD3, 0xF1, 0x27, 0xBD, + 0x1F, 0xE3, 0xDF, 0xBD, 0x9A, 0x24, 0x24, 0xBE, 0xF5, 0xEF, 0xFC, 0xBE, + 0xD0, 0x41, 0xE4, 0x3C, 0x35, 0x55, 0x30, 0x3C, 0xD7, 0x7A, 0x4D, 0x3E, + 0xF0, 0x67, 0xCF, 0x3B, 0xA2, 0x3F, 0x98, 0x3F, 0xBE, 0x68, 0x4F, 0xBC, + 0x35, 0xCD, 0xD1, 0x3E, 0xC0, 0x57, 0x36, 0x3C, 0x39, 0x06, 0x24, 0x3E, + 0xB4, 0x3D, 0xC2, 0x3E, 0x03, 0x63, 0xB7, 0xBE, 0x55, 0x8D, 0x56, 0xBD, + 0xBA, 0x0B, 0x8E, 0xBE, 0x7E, 0xCE, 0xA3, 0x3E, 0x8F, 0x3E, 0x3D, 0x3F, + 0x1C, 0xFA, 0x89, 0xBE, 0xB3, 0xD6, 0xED, 0xBD, 0xCA, 0x17, 0x9E, 0x3E, + 0xD3, 0x42, 0x3E, 0xBC, 0x39, 0x8B, 0xEF, 0x3E, 0x4F, 0x76, 0xFD, 0xBE, + 0xEF, 0x1C, 0x70, 0xBE, 0x3E, 0x07, 0x37, 0x3E, 0x3A, 0x37, 0xD4, 0x3D, + 0x8C, 0xC1, 0x86, 0xBD, 0xE6, 0x32, 0x9F, 0xBC, 0xB0, 0x1E, 0x1A, 0x3D, + 0xBB, 0xA5, 0xBB, 0xBD, 0xD5, 0x26, 0x9A, 0x3C, 0x73, 0x16, 0x21, 0x3D, + 0x68, 0xFB, 0x15, 0x3E, 0xE4, 0x76, 0xD5, 0x3A, 0xF7, 0x88, 0xE3, 0x3D, + 0x4F, 0x22, 0x14, 0x3C, 0x1D, 0x38, 0xED, 0x3C, 0x6B, 0xBC, 0x30, 0xBE, + 0x6E, 0x61, 0x52, 0x3D, 0xD6, 0xB6, 0x8F, 0xBD, 0xE2, 0x7C, 0xEE, 0x3B, + 0xD2, 0x67, 0x4C, 0x3B, 0x86, 0x5B, 0xCB, 0x3D, 0x82, 0x05, 0x04, 0xBE, + 0xD7, 0xFE, 0xE6, 0xBD, 0x69, 0xE9, 0x95, 0xBD, 0xCC, 0x7B, 0xCE, 0xBD, + 0xA4, 0x7F, 0x89, 0x3D, 0x47, 0x75, 0xEB, 0x3C, 0x26, 0x23, 0x9E, 0x3C, + 0xBA, 0xA5, 0xC8, 0x3A, 0x0D, 0x4D, 0x6E, 0xBE, 0x3D, 0x8E, 0x29, 0xBE, + 0x3E, 0x0B, 0xC1, 0x3E, 0x66, 0x1A, 0xCA, 0xBD, 0xED, 0x23, 0xB3, 0x3D, + 0x8F, 0x2B, 0x79, 0x3C, 0xDC, 0xA8, 0x0F, 0xBC, 0x65, 0x38, 0x47, 0x3D, + 0xF5, 0x7F, 0xED, 0xBB, 0xE4, 0xFE, 0x47, 0xBB, 0xDA, 0x2D, 0x96, 0xBC, + 0x01, 0xC8, 0x45, 0x3D, 0x64, 0x37, 0xC8, 0xBD, 0x12, 0x95, 0xAD, 0x3C, + 0xA9, 0xD3, 0x37, 0xBD, 0x21, 0x17, 0xFD, 0xBC, 0x21, 0x5F, 0x5C, 0xBC, + 0x5D, 0x5D, 0x53, 0x3D, 0x18, 0x84, 0x81, 0x3E, 0xF3, 0x9B, 0x1F, 0xBE, + 0x6F, 0x9E, 0x85, 0xBC, 0x31, 0x0C, 0x39, 0x3D, 0xBB, 0xA8, 0xB0, 0xBC, + 0xD8, 0x43, 0xC3, 0x3D, 0xB4, 0x00, 0x71, 0x3D, 0xD5, 0x0E, 0x85, 0xBC, + 0xD5, 0x3F, 0xB6, 0x3C, 0xDF, 0x42, 0xE8, 0x3D, 0xA4, 0x35, 0xC1, 0xBC, + 0xD6, 0x2C, 0x99, 0xBD, 0x26, 0x4A, 0x83, 0xBD, 0x12, 0xD8, 0x00, 0xBD, + 0x50, 0x15, 0xAB, 0x3D, 0xB2, 0xB6, 0x1D, 0xBC, 0xD0, 0x0D, 0x1F, 0xBE, + 0x7D, 0xD4, 0xD7, 0xBD, 0xA5, 0x1C, 0x88, 0x3D, 0x39, 0x33, 0x45, 0xBF, + 0xD4, 0x27, 0x9C, 0x3C, 0xAC, 0x68, 0xD2, 0xBD, 0x62, 0x61, 0x97, 0xBE, + 0xF8, 0x90, 0x5A, 0xBE, 0x29, 0xF9, 0x9C, 0x3D, 0x7F, 0xEE, 0x9D, 0x3D, + 0x2F, 0x15, 0x1A, 0xBE, 0xA7, 0xAE, 0x9C, 0x3E, 0x80, 0x36, 0xAF, 0xBE, + 0x34, 0xCA, 0x72, 0xBC, 0x9B, 0xC8, 0x84, 0xBD, 0x38, 0x4B, 0xCA, 0xBE, + 0xD3, 0xD0, 0x61, 0xBE, 0x42, 0x21, 0x5C, 0xBE, 0xFF, 0x94, 0xEE, 0xBE, + 0x55, 0x71, 0x12, 0x3E, 0x91, 0x45, 0x36, 0xBD, 0x8C, 0xAE, 0x0F, 0xBE, + 0xD9, 0x1D, 0x9B, 0xBE, 0x3B, 0xAB, 0xAB, 0x3D, 0x82, 0x58, 0xBF, 0x3B, + 0xA6, 0x50, 0xD7, 0x3D, 0x09, 0xD2, 0x42, 0xBE, 0x0E, 0x59, 0xA5, 0xBE, + 0xF3, 0x5F, 0x2C, 0x3D, 0x38, 0x19, 0xC6, 0x3B, 0x67, 0x62, 0x09, 0x3F, + 0xF8, 0x12, 0xB1, 0x3C, 0x89, 0x32, 0x45, 0xBF, 0x60, 0x24, 0x33, 0x3F, + 0x84, 0xBD, 0xC0, 0x3D, 0x2F, 0x0C, 0xDD, 0x3E, 0x83, 0x1A, 0xBD, 0xBD, + 0xC8, 0x01, 0x39, 0x3F, 0xF3, 0xCF, 0x00, 0x3E, 0xC8, 0xC7, 0x72, 0xBC, + 0x21, 0xBB, 0xB0, 0x3C, 0xFD, 0xB0, 0x4F, 0x3E, 0x4D, 0x57, 0x38, 0xBD, + 0xF5, 0x8D, 0xC6, 0xBC, 0x1C, 0x08, 0xB9, 0xBC, 0xD4, 0xBB, 0xCB, 0xBD, + 0xAB, 0x38, 0x20, 0x3A, 0x60, 0x3E, 0x36, 0x3E, 0x76, 0x58, 0x39, 0xBE, + 0xC5, 0x1A, 0x7E, 0xBE, 0x15, 0x4E, 0xA3, 0x3B, 0x2E, 0x5B, 0x24, 0xBD, + 0x9A, 0x07, 0xA4, 0x3B, 0xF8, 0x57, 0xE3, 0x3E, 0x17, 0x05, 0x74, 0x3D, + 0x4E, 0xEE, 0x09, 0x3D, 0x9C, 0x3C, 0x87, 0xBC, 0xA6, 0x11, 0x10, 0xBC, + 0x5C, 0xA9, 0x7E, 0x3D, 0x45, 0x96, 0x7A, 0x3D, 0xDD, 0x80, 0x7F, 0x3E, + 0x73, 0x21, 0x1C, 0x3C, 0xAB, 0x97, 0xC4, 0xBE, 0x29, 0x2A, 0x38, 0xBC, + 0x8A, 0x8B, 0x8A, 0xBF, 0x3C, 0x4F, 0xF1, 0xBE, 0x0B, 0xB3, 0x8D, 0xBD, + 0x1F, 0xC7, 0xA9, 0x3D, 0x05, 0x05, 0x33, 0x3B, 0xB0, 0x62, 0xD7, 0x3D, + 0xD2, 0x40, 0x11, 0xBE, 0xD8, 0xE2, 0x56, 0x3D, 0xD7, 0xBC, 0x25, 0xBE, + 0x96, 0xFB, 0xDE, 0xBC, 0xBD, 0x7B, 0x2D, 0xBE, 0xDA, 0x86, 0x30, 0x3E, + 0x4A, 0xBB, 0xFD, 0xBC, 0x22, 0xFB, 0xDB, 0x3D, 0xA0, 0xD8, 0x9B, 0x3C, + 0xC3, 0xDD, 0xD8, 0xBE, 0xDD, 0x3E, 0x52, 0xBE, 0x7E, 0xA7, 0xBA, 0x3E, + 0x8C, 0x4E, 0x0A, 0xBC, 0x31, 0x53, 0x56, 0xBD, 0xB8, 0x33, 0xE4, 0x3D, + 0xF6, 0x6A, 0xE3, 0xBE, 0x63, 0x63, 0xE4, 0x3D, 0x40, 0xCE, 0x28, 0xBE, + 0x2C, 0xDB, 0x9B, 0x3C, 0xAE, 0x21, 0x40, 0xBE, 0x12, 0xF9, 0x26, 0x3E, + 0xE5, 0x5B, 0x3D, 0x3E, 0x32, 0x85, 0x43, 0x3E, 0xF8, 0xCB, 0x0F, 0xBE, + 0x36, 0x43, 0x26, 0xBE, 0x6A, 0x89, 0x8B, 0x3E, 0xFE, 0x89, 0xD4, 0xBD, + 0x25, 0x59, 0x2A, 0x3E, 0x94, 0x42, 0xC1, 0x3D, 0x96, 0x10, 0x6D, 0xBE, + 0x76, 0xFB, 0xA5, 0xBE, 0x36, 0x06, 0x2D, 0xBF, 0xA1, 0xB5, 0x83, 0xBF, + 0xF0, 0xF5, 0x12, 0xBD, 0x92, 0x91, 0xF5, 0x3D, 0x35, 0xF4, 0xD9, 0x3B, + 0x4B, 0x88, 0x3E, 0x3E, 0xEE, 0xAD, 0xCF, 0xBC, 0x1B, 0x6A, 0x69, 0x3F, + 0xCF, 0x00, 0x0A, 0x3E, 0x7A, 0x52, 0x54, 0x3D, 0x69, 0x52, 0xB5, 0x3E, + 0x49, 0xA9, 0xEE, 0xBE, 0x37, 0xF8, 0xE5, 0x3E, 0x8E, 0x70, 0x51, 0x3E, + 0x68, 0x71, 0x4D, 0xBF, 0x75, 0x72, 0x30, 0x3D, 0xB7, 0x39, 0xE4, 0x3E, + 0xA4, 0x7B, 0x4B, 0x3F, 0x15, 0x12, 0x2B, 0x3C, 0x5D, 0x3B, 0x17, 0xBE, + 0x00, 0xEA, 0x91, 0x3F, 0xE2, 0x16, 0xB4, 0xBF, 0xAB, 0xF6, 0xA0, 0x3F, + 0x02, 0xFB, 0xB6, 0x3E, 0x10, 0x6E, 0x08, 0xBE, 0xF0, 0xC6, 0x75, 0x3F, + 0x67, 0x05, 0xA2, 0x3E, 0x32, 0x72, 0x5C, 0x3E, 0xCB, 0x40, 0x9B, 0xBE, + 0x14, 0xEC, 0x91, 0xBE, 0x71, 0x99, 0xB5, 0xBE, 0x01, 0x81, 0x30, 0xBF, + 0x6B, 0x2A, 0x6D, 0xBE, 0xA2, 0xBF, 0x35, 0xBF, 0x77, 0xF8, 0x68, 0x3E, + 0xF5, 0x3B, 0x38, 0xBE, 0x8D, 0xDC, 0x91, 0xBD, 0x89, 0x99, 0xF3, 0xBD, + 0x59, 0xB8, 0xCF, 0x3E, 0x51, 0xEB, 0xC9, 0xBE, 0x33, 0x8B, 0xB5, 0x3E, + 0x47, 0x20, 0x1F, 0xBE, 0x1A, 0xAF, 0x21, 0x3F, 0x21, 0xA8, 0xC2, 0xBF, + 0x0C, 0x8A, 0xAD, 0x3E, 0x16, 0xF8, 0x99, 0x3E, 0x4E, 0xB7, 0xAE, 0x3C, + 0x32, 0xBD, 0x38, 0xBE, 0x1E, 0x35, 0xBF, 0xBD, 0x9E, 0x3C, 0x24, 0xBF, + 0x1C, 0x2A, 0x0D, 0xBE, 0xDC, 0x9A, 0x73, 0xBE, 0x91, 0xE4, 0xE1, 0xBD, + 0x3D, 0x41, 0xA0, 0xBF, 0x87, 0x9E, 0x06, 0x3F, 0x58, 0x5F, 0x18, 0xBF, + 0x6C, 0xD8, 0x8B, 0x3E, 0x58, 0x87, 0xE8, 0x3E, 0x31, 0x8C, 0x97, 0xBE, + 0x4B, 0x1D, 0x62, 0xBE, 0x44, 0x2D, 0x85, 0xBE, 0x48, 0x70, 0xA5, 0xBE, + 0x6C, 0xB6, 0xFC, 0x3D, 0x90, 0x0B, 0x08, 0x3E, 0xDC, 0xAA, 0x0E, 0x3E, + 0xE2, 0x97, 0x23, 0xBE, 0x42, 0x14, 0x24, 0x3D, 0x4A, 0xAC, 0xBE, 0xBB, + 0xB6, 0xDF, 0xDF, 0x3D, 0x4D, 0xAE, 0x31, 0xBD, 0x71, 0xC6, 0x2C, 0xBE, + 0x11, 0xA5, 0xA2, 0x3D, 0x3B, 0xCE, 0x2F, 0x3F, 0xF9, 0xC5, 0x4C, 0x3D, + 0xF8, 0xAC, 0x14, 0xBE, 0xFC, 0x58, 0x0B, 0xBE, 0x5E, 0x1E, 0x60, 0x3E, + 0x9A, 0xE4, 0xDF, 0x3D, 0x21, 0x20, 0xB7, 0x3D, 0xB6, 0xC0, 0x92, 0x3D, + 0x3E, 0xCD, 0xC2, 0xBD, 0x95, 0x03, 0x99, 0x3E, 0xD6, 0x9B, 0x27, 0xBD, + 0x9E, 0xA9, 0x26, 0x3E, 0x35, 0x7E, 0x11, 0xBF, 0x03, 0x4D, 0x1A, 0x3E, + 0xA4, 0xA5, 0xEA, 0xBE, 0x38, 0x0D, 0x09, 0xBE, 0xE4, 0xBC, 0x27, 0x3E, + 0x1F, 0x94, 0x99, 0xBE, 0xDB, 0x17, 0xA8, 0x3D, 0x2D, 0x09, 0xCD, 0x3E, + 0x3C, 0x32, 0xD7, 0x3E, 0x56, 0xCE, 0xD1, 0x3C, 0xB2, 0x36, 0x25, 0x3D, + 0x1B, 0xB1, 0xAA, 0x3D, 0x93, 0x35, 0x9F, 0xBE, 0x90, 0x61, 0xEE, 0xBC, + 0xEF, 0xA2, 0xF1, 0x3B, 0xDD, 0x3C, 0xE7, 0x3C, 0x66, 0x39, 0x42, 0xBD, + 0xA2, 0xD1, 0xB9, 0xBC, 0x4A, 0xE1, 0x05, 0xBD, 0x64, 0x4C, 0x82, 0xBD, + 0xCF, 0xA4, 0xCA, 0xBB, 0x7E, 0xFD, 0x4B, 0xBD, 0xCB, 0x76, 0x00, 0x3E, + 0xFE, 0xAA, 0x9B, 0x3D, 0x0B, 0xEB, 0x4F, 0xBE, 0x25, 0x79, 0xA8, 0xBC, + 0x45, 0x40, 0x5B, 0x3D, 0xE5, 0x6D, 0xBF, 0xBC, 0x49, 0x15, 0xF2, 0x3D, + 0xA2, 0x7E, 0xA8, 0xBC, 0x8F, 0x95, 0x33, 0x3D, 0x0B, 0x9C, 0x0E, 0xBD, + 0xBC, 0x1D, 0x9F, 0x3D, 0x6A, 0xAA, 0xE7, 0x3C, 0x68, 0x64, 0xAD, 0x3D, + 0x5F, 0x03, 0xB5, 0x3D, 0xBE, 0x10, 0xCF, 0xBC, 0xC0, 0xCF, 0x34, 0x3E, + 0xE6, 0x65, 0x4E, 0x3D, 0x58, 0x6D, 0x27, 0xBE, 0x65, 0xB0, 0x95, 0xBD, + 0x23, 0x1B, 0x60, 0xBD, 0x58, 0xBD, 0xA5, 0x3D, 0xAC, 0xC3, 0x93, 0x3D, + 0xAD, 0x71, 0x26, 0xBE, 0x5B, 0x40, 0x0A, 0xBD, 0xD2, 0x99, 0x16, 0xBC, + 0xF3, 0xB6, 0xAC, 0xBC, 0x07, 0x05, 0x39, 0xBD, 0x85, 0xF1, 0xB7, 0x3C, + 0xE7, 0x98, 0xD8, 0x3D, 0xA5, 0xC0, 0x1C, 0x3C, 0x07, 0x73, 0x44, 0xBC, + 0x5B, 0x2D, 0xC3, 0x3B, 0x6A, 0xE8, 0x7A, 0x3D, 0xE8, 0x7F, 0xDC, 0x3D, + 0xD9, 0xD7, 0x82, 0xBD, 0xB7, 0x7A, 0x8D, 0xBC, 0x61, 0x2C, 0x90, 0xBC, + 0x5A, 0x1D, 0xE5, 0xBC, 0x32, 0x5B, 0x97, 0x3D, 0x2D, 0x9F, 0x81, 0x3C, + 0xDC, 0xDD, 0xD3, 0xBC, 0x23, 0xA2, 0x36, 0xBB, 0x94, 0x46, 0x9D, 0x3D, + 0x16, 0x25, 0xA4, 0xBC, 0xD5, 0x76, 0xB1, 0x3B, 0x05, 0x98, 0x1D, 0xBC, + 0x18, 0x1A, 0x78, 0x3C, 0xC3, 0x4F, 0x33, 0x3D, 0xCA, 0x83, 0x65, 0xBD, + 0x76, 0x86, 0x38, 0x3E, 0xAC, 0xCB, 0x8F, 0x3C, 0xAB, 0xD2, 0xED, 0x3B, + 0x48, 0xD2, 0x18, 0xBD, 0xA4, 0x23, 0x67, 0xBD, 0x78, 0xDA, 0x84, 0x3B, + 0x34, 0x1D, 0x7A, 0x3D, 0xEB, 0x1B, 0xEF, 0xBC, 0x8E, 0xD8, 0xCD, 0xBC, + 0xC8, 0x91, 0x41, 0x3C, 0x3A, 0x7D, 0x2C, 0xBC, 0xF0, 0x2C, 0x00, 0xBD, + 0x66, 0x7E, 0x59, 0x3D, 0xBC, 0x40, 0x8C, 0xBC, 0xEB, 0x5C, 0x0D, 0xBC, + 0xA3, 0x4B, 0xFF, 0xBC, 0x5C, 0x53, 0x4B, 0xBE, 0xCC, 0x49, 0xBC, 0x3C, + 0x56, 0xD3, 0x4B, 0x3D, 0x87, 0xCC, 0x9E, 0x3B, 0xD7, 0x09, 0x0D, 0x3C, + 0x50, 0x90, 0x52, 0xBD, 0x52, 0x87, 0x0E, 0x3D, 0xF3, 0xBC, 0x04, 0x3D, + 0xD1, 0x57, 0x60, 0x3D, 0x0F, 0xCF, 0xB4, 0xBC, 0x56, 0xAC, 0x4D, 0x3D, + 0x08, 0x5E, 0x88, 0xBD, 0xB7, 0x37, 0xD6, 0xBD, 0x22, 0x12, 0xAE, 0xBC, + 0x07, 0x15, 0x39, 0x3E, 0x3B, 0x49, 0x82, 0x3D, 0xAF, 0xD7, 0x65, 0xBE, + 0x5B, 0x64, 0xCD, 0x3C, 0x68, 0x10, 0x15, 0x3C, 0x79, 0x2B, 0x72, 0x3D, + 0x68, 0x37, 0xF7, 0xBC, 0xB6, 0x04, 0xD0, 0xBD, 0x1E, 0xCD, 0xA5, 0x3C, + 0xBA, 0x05, 0x6E, 0xBD, 0x4A, 0x01, 0xAB, 0x3A, 0x30, 0xDF, 0x6F, 0xBD, + 0x28, 0x88, 0x7F, 0xBD, 0xF6, 0x8C, 0x03, 0xBD, 0xFF, 0xAD, 0xE4, 0x3C, + 0xB5, 0x73, 0xF2, 0x3A, 0xF4, 0xD8, 0xCD, 0x3B, 0x6F, 0x40, 0xFE, 0xBC, + 0xE4, 0xF7, 0xBE, 0xBC, 0x38, 0xC2, 0x21, 0xBE, 0xB7, 0xF1, 0x90, 0x3D, + 0x75, 0xC5, 0x01, 0x3D, 0x0B, 0x1C, 0xE9, 0xBB, 0xE1, 0xBC, 0xF6, 0x3C, + 0x54, 0x02, 0x0B, 0x3C, 0x91, 0xBB, 0x1B, 0x3D, 0xC1, 0x60, 0xA3, 0xBA, + 0xAD, 0xB4, 0x75, 0x3D, 0x12, 0xE4, 0x00, 0x3D, 0x4A, 0x83, 0x4F, 0xBD, + 0x88, 0xE3, 0x0B, 0xBC, 0xB3, 0xB1, 0xBF, 0x3C, 0xF4, 0x0D, 0x61, 0x3E, + 0x6D, 0xD1, 0x0D, 0x3E, 0x63, 0x7E, 0x99, 0x3D, 0x37, 0xA6, 0x86, 0x3D, + 0x11, 0xC9, 0x75, 0xBD, 0x41, 0xFB, 0x89, 0x3E, 0x2A, 0xE0, 0xD0, 0x3C, + 0x87, 0xCE, 0xAE, 0x3E, 0x41, 0xBC, 0x52, 0xBF, 0x11, 0xC9, 0x26, 0x3D, + 0x06, 0x89, 0xAD, 0x3D, 0x10, 0xD2, 0x99, 0x3E, 0x61, 0x84, 0x9C, 0xBC, + 0x42, 0x8E, 0x02, 0xBE, 0xB1, 0xC6, 0x59, 0xBE, 0x58, 0xED, 0xC7, 0x3D, + 0xDF, 0x88, 0xD8, 0x3C, 0x3B, 0x6B, 0xAA, 0xBE, 0x59, 0x85, 0x52, 0x3E, + 0x20, 0x41, 0x77, 0x3E, 0x59, 0xCB, 0x62, 0xBC, 0x8E, 0xF1, 0xA1, 0x3C, + 0xD3, 0x4E, 0x90, 0x3C, 0x6D, 0x49, 0xDD, 0x3E, 0x7C, 0x34, 0x6F, 0x3E, + 0x34, 0x33, 0x9E, 0xBD, 0x4D, 0xC2, 0xBC, 0xBC, 0x50, 0xA5, 0x57, 0xBD, + 0xF5, 0x6C, 0x0A, 0x3E, 0xEC, 0x7C, 0x6A, 0x3D, 0x54, 0x7F, 0x31, 0x3D, + 0xD8, 0xF2, 0x00, 0x3E, 0xBA, 0xF2, 0x0C, 0x3F, 0xE5, 0x6C, 0x15, 0x3E, + 0xF9, 0x04, 0x96, 0x3E, 0x00, 0xBA, 0x04, 0x3F, 0xAA, 0x91, 0xBA, 0xBD, + 0x91, 0xAA, 0x15, 0x3F, 0xF4, 0x22, 0x9D, 0xBE, 0xB7, 0x0F, 0x04, 0x3F, + 0xBB, 0xF1, 0xF9, 0xBE, 0x30, 0x04, 0x45, 0x3D, 0x92, 0xD4, 0x29, 0xBD, + 0x1F, 0x66, 0x96, 0x3B, 0x23, 0xBB, 0x93, 0xBD, 0x8F, 0x74, 0x4A, 0xBD, + 0xB6, 0xE6, 0x03, 0xBE, 0x64, 0xFC, 0x51, 0xBF, 0xE6, 0x33, 0x98, 0x3B, + 0x5A, 0x9A, 0x73, 0xBE, 0x1E, 0xEE, 0xD1, 0x3E, 0xDE, 0xAD, 0x75, 0xBE, + 0x2B, 0x3A, 0x78, 0xBE, 0xF0, 0xD3, 0x7C, 0xBE, 0xBF, 0xD9, 0x30, 0x3B, + 0x0E, 0x72, 0x60, 0x3F, 0x2C, 0x31, 0xDE, 0x3E, 0x3F, 0xEB, 0xC2, 0xBC, + 0xB1, 0xD3, 0x8A, 0xBE, 0xF0, 0x28, 0x1E, 0x3F, 0xAA, 0x82, 0x4B, 0xBF, + 0xBF, 0x46, 0xC6, 0xBD, 0x61, 0x4D, 0x49, 0x3E, 0xB6, 0x79, 0xF7, 0x3D, + 0xEB, 0xC0, 0xD3, 0xBD, 0xAE, 0xB8, 0x23, 0x3E, 0x4D, 0xDD, 0x5F, 0x3F, + 0x34, 0x4C, 0x5F, 0x3E, 0xF7, 0xA0, 0xEF, 0xBE, 0x5D, 0xD2, 0xF6, 0xBF, + 0x41, 0x71, 0xCC, 0xBE, 0x1E, 0xE4, 0x3E, 0xBE, 0x13, 0x0F, 0x75, 0x3F, + 0xC8, 0x67, 0xC5, 0x3E, 0xFA, 0xC2, 0x30, 0xBE, 0x8F, 0xAB, 0x9F, 0xBF, + 0x54, 0x4F, 0xDE, 0x3E, 0x8A, 0xE6, 0x87, 0xBC, 0x52, 0xAD, 0x88, 0xBC, + 0x09, 0x5A, 0x92, 0xBF, 0xF4, 0x3D, 0xC2, 0x3D, 0x7C, 0x1A, 0xA2, 0x3E, + 0xCE, 0x40, 0xF5, 0x3F, 0x73, 0x29, 0x6D, 0x3F, 0x8F, 0xCD, 0x5D, 0xBE, + 0x7E, 0xB3, 0x7D, 0xBF, 0xF7, 0x47, 0x6D, 0x3D, 0xE5, 0x42, 0xDB, 0xBF, + 0x7A, 0x7F, 0x4A, 0x3F, 0x4D, 0x4B, 0x34, 0xBF, 0xC9, 0x86, 0xB9, 0x3D, + 0x99, 0xC0, 0x31, 0xBF, 0xF5, 0x11, 0x14, 0xBF, 0x9F, 0xE2, 0x85, 0x3F, + 0x8B, 0xA9, 0x3E, 0x3F, 0xDE, 0x12, 0x20, 0x3E, 0x45, 0x84, 0x36, 0x3F, + 0x85, 0x43, 0xD0, 0x3E, 0xFD, 0xAB, 0xAF, 0xBE, 0xDC, 0x74, 0xED, 0xBE, + 0xCC, 0x5A, 0x9D, 0xBF, 0x5D, 0xBD, 0xAB, 0xBD, 0x46, 0x40, 0x2F, 0xBD, + 0xA5, 0x1F, 0x1B, 0x3E, 0x3D, 0x50, 0x51, 0x3D, 0x3F, 0x6D, 0xC6, 0xBB, + 0x27, 0xCA, 0x2F, 0x3B, 0x28, 0x47, 0xA3, 0x3C, 0x7D, 0xF5, 0x2B, 0xBD, + 0x6C, 0x76, 0x0D, 0xBC, 0x19, 0x3A, 0x3E, 0x3D, 0x09, 0xDB, 0xBB, 0xBB, + 0xC8, 0xDA, 0xC5, 0xBC, 0x63, 0x4A, 0xFC, 0xBC, 0x6E, 0x8F, 0x21, 0x3E, + 0xF6, 0x3F, 0x6B, 0xBD, 0x92, 0x6F, 0x92, 0x3C, 0x92, 0x88, 0xA6, 0xBD, + 0x32, 0x41, 0x38, 0x3C, 0xC9, 0x93, 0x20, 0xBC, 0x68, 0x33, 0xA8, 0x3D, + 0xB5, 0xF6, 0x12, 0x3D, 0xA5, 0xC6, 0x2A, 0xBC, 0xC8, 0x18, 0xC0, 0x3C, + 0x7A, 0x39, 0xF4, 0xBC, 0x1E, 0xBE, 0x39, 0xBD, 0xE3, 0x91, 0x30, 0xBD, + 0x4D, 0x1C, 0xE4, 0xBC, 0x6C, 0x29, 0xF8, 0x3D, 0xCC, 0xFD, 0x80, 0x3D, + 0xBC, 0x68, 0x9D, 0xBE, 0x0E, 0x20, 0x4D, 0x3D, 0x63, 0x25, 0xA2, 0x3D, + 0x3E, 0x1E, 0x2B, 0x3D, 0xB6, 0xDA, 0xD1, 0x3C, 0xA6, 0xE6, 0x0B, 0xBF, + 0xBC, 0xC6, 0x73, 0x3F, 0x0E, 0x42, 0x2F, 0x3D, 0xB3, 0xAB, 0x08, 0x3B, + 0x44, 0xAE, 0x49, 0x3D, 0x10, 0xC5, 0x23, 0x3F, 0x98, 0xD0, 0xF3, 0x3D, + 0xDB, 0xB0, 0x19, 0x3F, 0x69, 0xB2, 0x89, 0xBD, 0xA9, 0x88, 0x41, 0x3B, + 0xD8, 0x32, 0x1D, 0x3F, 0xF1, 0xA7, 0x8A, 0xBE, 0x2B, 0x2F, 0xDC, 0xBE, + 0x0E, 0x3D, 0x48, 0x3E, 0x37, 0x84, 0xDC, 0x3E, 0x39, 0x54, 0x0D, 0xBB, + 0xCC, 0x91, 0x85, 0xB9, 0xAD, 0xEA, 0xEE, 0x3E, 0x2B, 0xE6, 0x77, 0x3D, + 0xBF, 0x08, 0xCF, 0xBB, 0x3A, 0xD7, 0x83, 0xBF, 0x5A, 0xA4, 0xA9, 0x3C, + 0x2E, 0x9E, 0x01, 0xBF, 0xD9, 0x56, 0x78, 0x3E, 0xAE, 0x7E, 0xAD, 0x3D, + 0x62, 0xB6, 0x0A, 0x3E, 0x3E, 0x3D, 0xB3, 0x3D, 0x97, 0x50, 0xDB, 0xBD, + 0xBC, 0xB1, 0x4C, 0xBF, 0x32, 0xF4, 0x87, 0xBC, 0xE4, 0xAF, 0x0D, 0x3F, + 0xF6, 0xFA, 0x98, 0x3E, 0xC6, 0x8A, 0xEF, 0xBE, 0x6B, 0xB8, 0xC9, 0xBE, + 0x7C, 0xD9, 0x0E, 0xBF, 0xEF, 0x2A, 0xFE, 0x3E, 0x7A, 0xF2, 0xBC, 0x3D, + 0xFA, 0xF8, 0xF1, 0xBD, 0x17, 0x59, 0xE8, 0x3E, 0xDC, 0x1C, 0x19, 0x3D, + 0x7A, 0xCE, 0x32, 0x3E, 0x25, 0xF2, 0x9C, 0xBE, 0xBD, 0xE1, 0xEF, 0x3E, + 0xD4, 0x71, 0xA6, 0xBF, 0x59, 0xA5, 0xC5, 0x3E, 0xE2, 0xEA, 0x17, 0xBE, + 0x94, 0x34, 0x06, 0x3E, 0x65, 0xF7, 0x80, 0xBE, 0xE5, 0x26, 0xC8, 0xBE, + 0x5E, 0x71, 0xA9, 0x3D, 0xF2, 0x02, 0x09, 0xBF, 0xF8, 0x67, 0x5A, 0xBF, + 0xF5, 0xB4, 0x49, 0xBE, 0xA4, 0xD3, 0x7F, 0x3E, 0xA3, 0x7B, 0x1A, 0x3F, + 0xF1, 0x8B, 0xEA, 0xBE, 0xC6, 0x99, 0x38, 0x3E, 0x88, 0x34, 0xF2, 0xBE, + 0xC8, 0x86, 0x0B, 0xBF, 0x9A, 0x96, 0x09, 0x3F, 0x57, 0xC0, 0x3D, 0xBF, + 0x08, 0x20, 0x95, 0xBF, 0x4F, 0x5D, 0x26, 0xBE, 0x35, 0xAB, 0x0A, 0x3D, + 0x82, 0x40, 0x48, 0xBD, 0xEC, 0xE3, 0x99, 0x3D, 0xE8, 0x2A, 0x22, 0x3C, + 0x01, 0x9E, 0x13, 0x3C, 0xEB, 0xD1, 0xFB, 0xBB, 0xED, 0x6F, 0x43, 0x3C, + 0x65, 0xB2, 0xDA, 0xBD, 0x55, 0xCA, 0x36, 0xBD, 0x15, 0x55, 0xA5, 0xBD, + 0x68, 0x35, 0x3C, 0x3C, 0x51, 0x3F, 0x33, 0xBB, 0xF1, 0x7D, 0x25, 0x3C, + 0x61, 0x58, 0xA3, 0x3D, 0x2D, 0x37, 0xA0, 0x3C, 0x05, 0xFD, 0xE4, 0x3C, + 0x87, 0x71, 0x76, 0xBC, 0x71, 0x4E, 0x07, 0xBE, 0x06, 0x0E, 0xFE, 0x3C, + 0x03, 0x5B, 0x4C, 0x3D, 0xA5, 0x85, 0x94, 0x3C, 0x0C, 0xC4, 0x09, 0xBD, + 0x3D, 0xF2, 0xBD, 0xBC, 0x2E, 0x10, 0x30, 0xBC, 0x1C, 0xA2, 0xC3, 0x3D, + 0x5F, 0x9F, 0x67, 0xBC, 0x71, 0x7B, 0x2B, 0x3E, 0x58, 0x5C, 0xEE, 0x3D, + 0x20, 0xB4, 0x72, 0xBE, 0xFD, 0xB5, 0x78, 0x3D, 0xD8, 0x60, 0x5C, 0x3D, + 0x6C, 0xC5, 0x08, 0x3D, 0xF4, 0x92, 0x63, 0xBC, 0x50, 0xF4, 0x0B, 0x3D, + 0x17, 0xBC, 0xC8, 0xBC, 0x46, 0x50, 0xA0, 0x3C, 0x3D, 0xD5, 0x49, 0xBD, + 0x3D, 0xED, 0x07, 0x3D, 0xD6, 0x04, 0xD6, 0xBB, 0x1B, 0xFC, 0x0E, 0x3D, + 0xB3, 0x12, 0xC2, 0xBC, 0x35, 0x50, 0xAA, 0xBD, 0x26, 0x85, 0xE0, 0xBC, + 0x48, 0xFE, 0x39, 0x3D, 0xF9, 0x6E, 0x50, 0x3D, 0xCC, 0x09, 0xC0, 0x3D, + 0xED, 0x59, 0xB1, 0x3C, 0xE6, 0xED, 0xEC, 0x3D, 0x72, 0x31, 0x95, 0x3B, + 0x23, 0x58, 0xEB, 0xB9, 0xFC, 0x61, 0xCE, 0x3C, 0x74, 0xEA, 0x15, 0xBD, + 0x48, 0x39, 0x92, 0x3D, 0x62, 0x82, 0x26, 0x3E, 0xBC, 0x32, 0x96, 0xBD, + 0x13, 0xEA, 0x84, 0x3E, 0x54, 0x72, 0x00, 0xBE, 0x66, 0x08, 0xCF, 0x3B, + 0xCD, 0x07, 0x15, 0xBE, 0xFC, 0xDF, 0x19, 0x3D, 0x76, 0xB4, 0xB2, 0xBD, + 0x3B, 0x87, 0xDD, 0xBD, 0x08, 0x65, 0x36, 0x3B, 0x95, 0xEC, 0xDA, 0x3D, + 0x7A, 0xB1, 0x08, 0x3A, 0x2B, 0x58, 0xF2, 0x3D, 0xA1, 0x16, 0x28, 0x3E, + 0x19, 0x4C, 0x95, 0xBE, 0xC5, 0x84, 0xF1, 0x3D, 0x71, 0x5C, 0x6A, 0x3C, + 0x8F, 0x92, 0x8B, 0xBE, 0xDE, 0x67, 0x47, 0xBD, 0x1E, 0x00, 0x25, 0xBE, + 0xDF, 0x29, 0x35, 0xBE, 0x54, 0xC3, 0x8A, 0x3C, 0x77, 0xC7, 0x64, 0x3E, + 0xED, 0xEF, 0x19, 0x3F, 0xA5, 0x49, 0x56, 0xBF, 0xDC, 0x2E, 0xED, 0x3D, + 0x33, 0x3C, 0x6F, 0xBD, 0x15, 0x17, 0xBA, 0xBC, 0x8F, 0x86, 0x4F, 0x3E, + 0x0C, 0xF4, 0x33, 0xBE, 0xEE, 0xD9, 0x0A, 0x3E, 0x44, 0x37, 0xCA, 0xBD, + 0x8C, 0xC0, 0x74, 0x3D, 0x2E, 0x72, 0xFA, 0x3D, 0xF7, 0xE9, 0x16, 0x3D, + 0xA7, 0x74, 0xE2, 0xBD, 0x04, 0xAF, 0x3C, 0x3E, 0xFB, 0xD9, 0x3A, 0xBD, + 0xDB, 0x5D, 0x2E, 0x3C, 0x3F, 0xE2, 0x00, 0x3E, 0x45, 0x05, 0x9A, 0x3D, + 0xFB, 0x83, 0x12, 0x3C, 0xA8, 0x14, 0xAA, 0xBE, 0xA7, 0x90, 0xB8, 0x3E, + 0x4B, 0x26, 0xFE, 0x3E, 0x23, 0x71, 0xC1, 0xBE, 0xD1, 0xFF, 0x89, 0xBF, + 0x49, 0x27, 0x41, 0x3F, 0xAA, 0xE5, 0xA6, 0xBE, 0x9A, 0x30, 0x76, 0xBE, + 0xC4, 0xB7, 0x21, 0x3F, 0xB6, 0xC8, 0xCD, 0x3E, 0xCD, 0x36, 0x5D, 0xBE, + 0x9D, 0x2C, 0xC6, 0xBE, 0xDE, 0xD7, 0x33, 0xBF, 0xF3, 0xA3, 0x21, 0xC0, + 0x1C, 0x81, 0x4F, 0x3F, 0xE9, 0x6C, 0xB3, 0x3E, 0xB0, 0xA9, 0x83, 0xBF, + 0xA6, 0x7E, 0x52, 0xBE, 0xC8, 0x6F, 0x7B, 0xBE, 0xD8, 0x3C, 0x95, 0x3E, + 0xC8, 0x5C, 0x7E, 0xBE, 0xF8, 0x70, 0x0A, 0xBF, 0x3C, 0xFC, 0xEA, 0x3E, + 0x71, 0x14, 0x86, 0x3F, 0xFD, 0x49, 0xC0, 0x3E, 0x73, 0xB0, 0x0C, 0x3F, + 0xE9, 0x1B, 0xDF, 0xBE, 0xB3, 0x36, 0xF8, 0x3E, 0xB4, 0x9D, 0x85, 0xBF, + 0x63, 0x1B, 0x35, 0x3E, 0x57, 0x83, 0x75, 0x3D, 0x50, 0x2B, 0xCA, 0xBE, + 0x75, 0xE5, 0x43, 0xBE, 0xFF, 0x1E, 0x06, 0xBE, 0xF1, 0x50, 0x08, 0xBD, + 0x65, 0xBA, 0x12, 0xBE, 0xC6, 0xD9, 0x06, 0x3D, 0x7C, 0x3B, 0xB9, 0xBA, + 0x2B, 0x56, 0x76, 0xBE, 0xAD, 0x97, 0x57, 0x3D, 0x2A, 0x39, 0x18, 0x3E, + 0x52, 0x4D, 0x85, 0xBC, 0x2C, 0x27, 0x51, 0x3D, 0x23, 0x6D, 0xC2, 0xBC, + 0x92, 0x2D, 0x6B, 0xBC, 0x3B, 0x12, 0xE5, 0xBC, 0x7B, 0xDD, 0x95, 0x3D, + 0x2F, 0xB2, 0x8F, 0x3D, 0x33, 0x23, 0xFB, 0x3D, 0xF2, 0x6C, 0xD0, 0xBC, + 0xD6, 0xDB, 0x88, 0xBE, 0xB6, 0x2D, 0x7B, 0xBE, 0xC4, 0x75, 0x83, 0x3D, + 0x44, 0x63, 0xD1, 0xBC, 0x31, 0xDF, 0x92, 0x3E, 0x27, 0xB5, 0xDA, 0x3C, + 0x45, 0xBE, 0x15, 0xBF, 0x24, 0x85, 0x30, 0xBE, 0x3A, 0x3A, 0x0E, 0xBD, + 0xE4, 0x6F, 0xAA, 0xBE, 0xB5, 0x68, 0x5D, 0xBD, 0x12, 0xFE, 0x4F, 0x3F, + 0xFF, 0x43, 0x03, 0xBC, 0x65, 0x40, 0x32, 0x3D, 0x6C, 0xC9, 0xE2, 0xBD, + 0x8D, 0xC1, 0x4B, 0x3D, 0x97, 0x88, 0x02, 0xBF, 0x0B, 0xBF, 0x71, 0xBE, + 0x11, 0xD2, 0x96, 0xBC, 0xF7, 0x58, 0xDF, 0x3A, 0xF9, 0x47, 0xDC, 0xBE, + 0x49, 0x91, 0xBA, 0xBE, 0x5B, 0x6E, 0x1C, 0x3E, 0x29, 0xFB, 0x31, 0x3E, + 0x20, 0x36, 0xD3, 0xBD, 0x4C, 0xDD, 0xAF, 0x3D, 0x7F, 0x2F, 0x9C, 0xBD, + 0xA0, 0x6D, 0xDB, 0x3D, 0x46, 0xAE, 0xA6, 0xBD, 0x84, 0x03, 0xF2, 0xBD, + 0xF6, 0xA3, 0x4B, 0xBF, 0x91, 0x80, 0x99, 0x3C, 0xA9, 0x0D, 0xAC, 0xBE, + 0x6D, 0x38, 0x0F, 0x3F, 0xCC, 0x10, 0x1F, 0x3C, 0x6D, 0xAD, 0x35, 0xBD, + 0x5C, 0x12, 0x44, 0x3F, 0xA4, 0x00, 0x26, 0xBE, 0x53, 0x60, 0x0E, 0x3F, + 0x87, 0xC3, 0xC6, 0xBC, 0x5E, 0x03, 0xE7, 0xBD, 0xBF, 0xE5, 0x85, 0xBE, + 0x37, 0x84, 0x95, 0x3D, 0xAA, 0xFC, 0x34, 0x3F, 0x86, 0x7F, 0x0F, 0x3E, + 0xB0, 0xEA, 0x9B, 0x3D, 0x88, 0x30, 0x76, 0xBD, 0x1F, 0x75, 0x1A, 0xBE, + 0xEA, 0x43, 0xA6, 0x3E, 0x6B, 0x54, 0xC9, 0xBD, 0x58, 0x35, 0x93, 0xBD, + 0xB0, 0xCF, 0x0D, 0xBD, 0x97, 0x12, 0xE1, 0x3C, 0xEC, 0xDE, 0x9A, 0xBB, + 0x50, 0x39, 0x10, 0x3E, 0xD6, 0xA4, 0x8B, 0x3C, 0xD9, 0x44, 0xB8, 0xBC, + 0x82, 0x88, 0x90, 0xBD, 0xFF, 0x2A, 0x25, 0x3D, 0x4C, 0x2A, 0xCE, 0xBE, + 0xA9, 0xD7, 0x1D, 0x3E, 0x29, 0x7E, 0x4E, 0x3D, 0x9F, 0xE9, 0x85, 0xBD, + 0x84, 0x73, 0x8A, 0xBC, 0x46, 0x54, 0x58, 0x3D, 0x11, 0x5B, 0xBF, 0x3C, + 0x34, 0xCD, 0xEB, 0x3B, 0xFD, 0xFA, 0x3C, 0x3D, 0xF6, 0x34, 0xB6, 0xBC, + 0x88, 0x53, 0xBB, 0xBC, 0xBB, 0x2A, 0x0F, 0xBE, 0xD5, 0x48, 0x0A, 0xBE, + 0x55, 0x80, 0x22, 0xBD, 0x8C, 0x6D, 0x55, 0xBE, 0x7E, 0xB0, 0x91, 0xBE, + 0x24, 0xB5, 0xA0, 0xBC, 0x50, 0xA3, 0xB4, 0xBD, 0x6A, 0xD3, 0xFD, 0x3A, + 0xD0, 0x4C, 0xD7, 0x3E, 0x00, 0x96, 0x2E, 0xBF, 0xEF, 0xAC, 0x74, 0xBD, + 0x3C, 0x93, 0x9B, 0xBF, 0x0D, 0x03, 0x4B, 0xBE, 0xC2, 0x97, 0x08, 0x3E, + 0x96, 0xFA, 0xAC, 0x3E, 0x21, 0xDD, 0x74, 0x3C, 0xA0, 0x12, 0x98, 0xBD, + 0x99, 0xD9, 0x3E, 0xBF, 0x4F, 0x44, 0x8D, 0x3F, 0x62, 0x89, 0xCC, 0xBD, + 0xB6, 0x8C, 0x7A, 0xBF, 0xF0, 0x27, 0x0A, 0xBF, 0xEA, 0x62, 0x96, 0xBE, + 0x75, 0x22, 0x2E, 0x3D, 0x48, 0x53, 0x7B, 0x3E, 0xF0, 0xD6, 0xC6, 0xBB, + 0xE7, 0xA8, 0x45, 0x3F, 0xF9, 0xB8, 0x8B, 0xBE, 0xC1, 0x46, 0xD2, 0x3D, + 0x90, 0x52, 0x9B, 0x3A, 0x79, 0xD1, 0x2B, 0x3F, 0x95, 0xBB, 0x07, 0xBF, + 0x97, 0xE9, 0x62, 0xBE, 0xCD, 0x0A, 0xA3, 0x3E, 0x80, 0x82, 0x9C, 0x3F, + 0xFF, 0xB2, 0x92, 0x3F, 0xFD, 0xBD, 0x3B, 0xBE, 0x94, 0x06, 0x9B, 0xBE, + 0xF9, 0x7A, 0x9A, 0x3F, 0xA9, 0x58, 0x1B, 0x3D, 0x72, 0x14, 0x03, 0xBF, + 0x00, 0xD2, 0xB5, 0xBE, 0x6F, 0x65, 0x74, 0x3F, 0x76, 0x23, 0x10, 0x3D, + 0x7B, 0x28, 0x8B, 0xBD, 0x63, 0xCF, 0xA5, 0x3D, 0x9E, 0x9B, 0x82, 0xBE, + 0x62, 0xD1, 0x14, 0x3F, 0xB3, 0x16, 0x97, 0xBE, 0xA4, 0x05, 0x47, 0x3E, + 0x2D, 0xB7, 0x90, 0x3F, 0xE6, 0x8C, 0x2A, 0xBD, 0xCF, 0x02, 0x25, 0x3F, + 0x5A, 0x43, 0x36, 0xBF, 0x16, 0xEC, 0xB6, 0xBE, 0x09, 0x60, 0x10, 0x3E, + 0x96, 0x0E, 0xF1, 0x3E, 0x05, 0x29, 0x8D, 0x3E, 0xCD, 0xBF, 0x13, 0x3F, + 0x2E, 0xC9, 0x8A, 0xBD, 0x3F, 0xA4, 0xC4, 0x3E, 0x2D, 0x98, 0x31, 0x3E, + 0xDB, 0xB9, 0xB2, 0xBF, 0x9C, 0x9C, 0x1A, 0xBE, 0x97, 0xE0, 0x28, 0x3E, + 0xEF, 0xC8, 0x01, 0x3E, 0xD7, 0x6D, 0x19, 0x3D, 0x1D, 0x5D, 0x72, 0xBE, + 0x5F, 0x44, 0x14, 0xBE, 0x9A, 0x79, 0xE8, 0xBD, 0xD6, 0x0B, 0x73, 0xBE, + 0x3B, 0x40, 0xF7, 0xBD, 0x24, 0x43, 0x9A, 0x3E, 0xD2, 0x1C, 0x2A, 0xBE, + 0x18, 0x08, 0x97, 0x3F, 0xC9, 0x99, 0x86, 0xBD, 0x43, 0xDB, 0x61, 0x3E, + 0x3E, 0x64, 0x04, 0x3E, 0x17, 0x49, 0x97, 0xBD, 0x1E, 0xAC, 0x30, 0xBE, + 0x96, 0xBF, 0x32, 0x3E, 0xBB, 0x20, 0xBE, 0xBE, 0x26, 0x16, 0xD6, 0xBC, + 0xC9, 0x02, 0x81, 0xBC, 0xA8, 0x5C, 0xBA, 0x39, 0x81, 0xE0, 0xD7, 0x3C, + 0x46, 0xBC, 0x7D, 0x3E, 0x30, 0x53, 0x4A, 0x3D, 0x72, 0xFF, 0x28, 0x3E, + 0xAC, 0x69, 0x2C, 0xBD, 0x11, 0x63, 0x57, 0x3D, 0x82, 0xE9, 0xBB, 0xBE, + 0x4A, 0xD2, 0xC1, 0x3D, 0xCF, 0x49, 0x06, 0x3E, 0x83, 0x27, 0x24, 0xBD, + 0x17, 0x98, 0xDE, 0x3E, 0xF4, 0x24, 0x13, 0x3E, 0x97, 0xFC, 0x9B, 0x3D, + 0xCE, 0x1D, 0xFB, 0xBE, 0xE2, 0x1F, 0x83, 0xBE, 0xE1, 0xFE, 0x2D, 0x3D, + 0xB0, 0x6A, 0x88, 0xBC, 0xF9, 0x97, 0x84, 0x3D, 0x8F, 0x0A, 0x27, 0x3E, + 0x8B, 0x46, 0xC4, 0x3B, 0x22, 0x7F, 0xCF, 0x3D, 0xFF, 0xBC, 0xA8, 0x3D, + 0xDB, 0x53, 0x4E, 0x3B, 0x65, 0xA3, 0x4A, 0x3D, 0x44, 0xC1, 0xB8, 0x3C, + 0xA6, 0x53, 0x70, 0x3A, 0x28, 0x7D, 0x02, 0x3E, 0xA0, 0x3F, 0x3F, 0x3D, + 0x00, 0xB1, 0x25, 0x3E, 0x6A, 0xF5, 0x2A, 0xBC, 0x09, 0xDA, 0x43, 0xBC, + 0x41, 0x1E, 0x28, 0x3D, 0xE3, 0xA4, 0xDE, 0x3C, 0x0F, 0x5D, 0x31, 0xBE, + 0x7F, 0x6C, 0x3B, 0xBC, 0xAA, 0xF4, 0x64, 0xBB, 0xD3, 0x1C, 0xD3, 0xBC, + 0x14, 0xC2, 0x04, 0x3E, 0x3D, 0x00, 0x07, 0x3D, 0x06, 0x76, 0x62, 0x3C, + 0x85, 0x69, 0x87, 0xBD, 0xEB, 0xE3, 0xC5, 0xBD, 0xB3, 0xBC, 0x02, 0x3E, + 0x04, 0x8C, 0x05, 0xBF, 0x1A, 0x21, 0x04, 0x3E, 0x17, 0xD6, 0x0D, 0x3D, + 0x45, 0x92, 0xB6, 0xBD, 0x75, 0xEA, 0x05, 0x3D, 0xAF, 0xC7, 0x2D, 0xBF, + 0xF2, 0x3A, 0xF3, 0x3D, 0x71, 0x24, 0xA9, 0xBB, 0xD5, 0x28, 0x05, 0xBF, + 0xA7, 0xB6, 0x20, 0xBF, 0xB5, 0x40, 0xC0, 0x3E, 0xDE, 0xDA, 0xA8, 0xBE, + 0xF6, 0x65, 0xD7, 0xBD, 0xB7, 0xFA, 0x78, 0xBE, 0xD6, 0x62, 0xD0, 0xBC, + 0x39, 0x45, 0x7A, 0xBD, 0x3F, 0x01, 0x87, 0x3E, 0x01, 0x0A, 0xD3, 0xBE, + 0x7F, 0x9C, 0x57, 0xBE, 0xDD, 0x61, 0xC3, 0xBC, 0x00, 0x6D, 0x4A, 0xBD, + 0x0D, 0x11, 0x7F, 0xBF, 0x24, 0x8E, 0x8A, 0x3D, 0xE4, 0x71, 0x47, 0x3E, + 0xB9, 0x6E, 0x3D, 0x3D, 0xA2, 0x8E, 0x48, 0x3B, 0x3D, 0x32, 0xA6, 0xBE, + 0x54, 0x23, 0xE6, 0x3E, 0x1F, 0x8D, 0x59, 0xBE, 0x7A, 0xF7, 0xCD, 0xBC, + 0x28, 0xE5, 0x87, 0x3D, 0x98, 0x75, 0xEC, 0xBD, 0xA4, 0xFD, 0x87, 0x3E, + 0x5C, 0xC8, 0x5B, 0xBD, 0x53, 0xCE, 0x68, 0xBF, 0x55, 0xC7, 0x46, 0xBF, + 0xEA, 0x54, 0x17, 0xBF, 0xF6, 0x52, 0x1A, 0xBD, 0x88, 0x37, 0x63, 0xBE, + 0xCC, 0x3A, 0x5F, 0x3E, 0xBA, 0xD1, 0x97, 0x3D, 0x23, 0x80, 0xB7, 0xBC, + 0xF9, 0xAE, 0xD4, 0xBD, 0xF5, 0x54, 0xC3, 0xBC, 0x81, 0x8C, 0x22, 0x3B, + 0x4D, 0xE7, 0x37, 0x3C, 0xE8, 0xE7, 0x3F, 0xBC, 0xCD, 0x9B, 0xF5, 0x3B, + 0x45, 0xCF, 0x46, 0x3C, 0x1D, 0x3D, 0x7B, 0x3A, 0xE9, 0x99, 0x1B, 0xBD, + 0x0E, 0x4E, 0x2E, 0xBC, 0x15, 0x40, 0x36, 0x3D, 0xEE, 0x20, 0xC3, 0xBD, + 0x96, 0xA6, 0x5E, 0xBD, 0x41, 0xA7, 0xD5, 0x3A, 0x6C, 0x5E, 0x09, 0x3D, + 0x76, 0x8D, 0x5A, 0xBC, 0x2A, 0x32, 0x70, 0x3D, 0xEA, 0x96, 0x89, 0x3C, + 0xAE, 0xE2, 0x0B, 0x3D, 0x28, 0xF7, 0x7D, 0x3D, 0xD1, 0x12, 0xB9, 0x3D, + 0xF1, 0x8B, 0x52, 0x3C, 0xA6, 0x91, 0xF7, 0x3D, 0x10, 0x9A, 0x94, 0xBD, + 0xE0, 0x8C, 0x84, 0xBC, 0xB4, 0x3E, 0x76, 0xBB, 0x5B, 0xE2, 0xCB, 0x3C, + 0x6E, 0x50, 0x32, 0xBE, 0xF0, 0xF7, 0x6D, 0xBD, 0xB5, 0x2B, 0xB4, 0xBD, + 0xAB, 0x76, 0x04, 0xBE, 0xE9, 0x28, 0xDE, 0xBE, 0xE1, 0xE8, 0x43, 0xBE, + 0x54, 0xC8, 0x80, 0xBE, 0xC7, 0x49, 0xB3, 0xBD, 0x65, 0x01, 0x5D, 0xBE, + 0xF5, 0x82, 0xE8, 0xBE, 0x27, 0x27, 0xAF, 0xBE, 0x0F, 0x23, 0x11, 0x3E, + 0x0C, 0x7B, 0x3C, 0x3D, 0x92, 0x76, 0xFD, 0x3D, 0x1D, 0xB4, 0xA3, 0x3C, + 0x9F, 0x5C, 0x3F, 0x3F, 0xC7, 0x3D, 0x8E, 0xBE, 0x9B, 0x8A, 0x05, 0x3F, + 0xFA, 0x0F, 0x30, 0x3D, 0x9D, 0x9E, 0x0E, 0xBE, 0x88, 0x3D, 0xB1, 0x3A, + 0x0E, 0x53, 0x95, 0x3E, 0x2D, 0xBD, 0x00, 0x3F, 0xA2, 0x3D, 0xD7, 0xBD, + 0x0E, 0xB0, 0xC2, 0xBD, 0xB1, 0x24, 0xE9, 0xBE, 0x26, 0x3C, 0xB1, 0xBE, + 0xD1, 0xD1, 0x93, 0x3F, 0xF3, 0x16, 0xE4, 0xBE, 0x29, 0x96, 0x76, 0x3E, + 0xFE, 0x95, 0x2C, 0x3F, 0x11, 0x8F, 0x81, 0xBE, 0xA6, 0x3D, 0x47, 0x3E, + 0x82, 0x47, 0x3B, 0xBF, 0x8A, 0x65, 0xB8, 0xBE, 0x82, 0xAB, 0x8D, 0x3D, + 0x2A, 0x20, 0x6A, 0xBC, 0xA6, 0x1B, 0x56, 0xBD, 0xEB, 0x9F, 0x80, 0x3D, + 0xB3, 0xD7, 0x94, 0x3B, 0x62, 0x1F, 0x6B, 0xBC, 0xB5, 0x1C, 0x2F, 0xBC, + 0x79, 0x0E, 0xB9, 0x3C, 0x34, 0x0D, 0x45, 0x3D, 0xA3, 0xEE, 0x41, 0x3D, + 0xED, 0xAB, 0x12, 0x3E, 0x5D, 0x73, 0x0B, 0x3D, 0xA0, 0xAD, 0x0B, 0xBD, + 0x95, 0x4A, 0x05, 0x3C, 0xF8, 0xFF, 0x2D, 0xBE, 0x9A, 0x29, 0xFB, 0xBC, + 0xCF, 0xA5, 0x2F, 0xBC, 0x37, 0x6F, 0xB0, 0x3C, 0x48, 0x41, 0x0B, 0x3E, + 0x6C, 0xC3, 0x2C, 0xBD, 0x52, 0x11, 0x09, 0xBA, 0xD5, 0x3A, 0x9F, 0xBA, + 0xEF, 0x9F, 0xA4, 0xBD, 0x19, 0x25, 0x59, 0x3D, 0x58, 0xB5, 0x26, 0xBE, + 0x68, 0x15, 0x37, 0x3C, 0x7B, 0x01, 0xD3, 0x3C, 0x04, 0xDC, 0x0F, 0xBE, + 0xE6, 0x25, 0x82, 0xBC, 0xFE, 0x60, 0x57, 0x3E, 0xA1, 0xF6, 0x66, 0xBC, + 0x63, 0x84, 0x29, 0xBD, 0x0E, 0x87, 0x8E, 0x3F, 0xE8, 0x05, 0xD8, 0x3E, + 0xE3, 0x68, 0x6E, 0x3F, 0x03, 0x73, 0x0F, 0xBF, 0x5B, 0x2E, 0xC6, 0x3E, + 0x33, 0xF7, 0xCF, 0xBD, 0x26, 0xDA, 0xED, 0xBD, 0x69, 0x3A, 0xE6, 0x3E, + 0xA9, 0xD8, 0x86, 0x3E, 0x20, 0x13, 0x33, 0x3F, 0x10, 0xD4, 0x31, 0xBE, + 0x68, 0x70, 0x0C, 0xBD, 0x4E, 0x6A, 0x2F, 0xBF, 0x47, 0x6D, 0xC9, 0x3D, + 0xAF, 0x85, 0x1D, 0xBF, 0x19, 0x73, 0x13, 0x3F, 0x35, 0x96, 0x66, 0xBD, + 0xC0, 0x68, 0x0B, 0xBD, 0xDB, 0x9C, 0x4F, 0x3F, 0xDE, 0xD5, 0xCD, 0xBE, + 0x13, 0x81, 0x7D, 0x3E, 0x4D, 0x4F, 0x2E, 0x3E, 0xE3, 0x5E, 0xCE, 0x3F, + 0xB6, 0x92, 0x2B, 0xBF, 0x1C, 0x4B, 0x7F, 0xBF, 0x6B, 0x08, 0x62, 0x3E, + 0x14, 0xBB, 0x5E, 0xBE, 0x55, 0x45, 0x1F, 0xBF, 0xC5, 0x71, 0xD3, 0xBD, + 0x8C, 0x0E, 0x2D, 0xBF, 0x75, 0x1F, 0x5E, 0x3F, 0x85, 0xBD, 0xAF, 0x3E, + 0x07, 0x92, 0x21, 0xBF, 0x2C, 0xD8, 0xB4, 0x3E, 0xF3, 0x34, 0x35, 0x3E, + 0xF1, 0xD9, 0x64, 0x3E, 0x89, 0xAE, 0x95, 0x3E, 0x11, 0xD5, 0xC1, 0x3D, + 0x4C, 0xCB, 0xE5, 0xBE, 0xCC, 0x6E, 0xCE, 0x3D, 0x59, 0x34, 0xDD, 0xBD, + 0x0E, 0xD6, 0x79, 0x3E, 0x41, 0x6D, 0x4D, 0xBE, 0xC6, 0x0A, 0x99, 0xBC, + 0xB3, 0x62, 0xA5, 0xBF, 0xA9, 0x3F, 0x24, 0x3F, 0x7C, 0x3F, 0x14, 0xBF, + 0xAC, 0x77, 0x9F, 0xBE, 0xDE, 0x73, 0xBB, 0xBD, 0xD9, 0x48, 0x51, 0xBB, + 0xFF, 0xE7, 0xAB, 0xBE, 0x5B, 0x29, 0x08, 0x3F, 0x4D, 0xE0, 0x11, 0x3E, + 0x5F, 0x87, 0x42, 0x3D, 0xBD, 0xB5, 0x71, 0xBF, 0x3D, 0xFF, 0x01, 0xBF, + 0x87, 0xF6, 0xFE, 0xBD, 0xCD, 0xB9, 0x50, 0x3E, 0xDC, 0x0F, 0xDE, 0xBD, + 0x3B, 0x20, 0x86, 0xBE, 0xFB, 0x35, 0x25, 0x3E, 0x6C, 0x79, 0x5D, 0x3C, + 0x4C, 0xE6, 0x55, 0x3F, 0x30, 0x60, 0x3B, 0x3E, 0x86, 0x56, 0x97, 0x3E, + 0xA6, 0x85, 0x86, 0xBE, 0xDB, 0x85, 0x89, 0x3E, 0xEB, 0xC9, 0x61, 0xBE, + 0x69, 0xEC, 0x9C, 0xBB, 0x03, 0xC0, 0xD7, 0x3E, 0x05, 0x6C, 0xB8, 0x3E, + 0xBB, 0x56, 0xB4, 0xBC, 0x40, 0xE3, 0xBE, 0x3E, 0xCA, 0xE2, 0xAD, 0x3E, + 0xC0, 0x1A, 0xA9, 0xBE, 0x97, 0xE5, 0xF1, 0xBD, 0x9C, 0xF2, 0xAD, 0x3E, + 0x0B, 0xA1, 0x10, 0xC0, 0x6C, 0x3C, 0xAF, 0xBE, 0x8B, 0x24, 0xDB, 0xBE, + 0xAF, 0x7F, 0x0E, 0x3F, 0xEF, 0x34, 0xEB, 0xBD, 0x36, 0x15, 0xB9, 0xBD, + 0x82, 0x09, 0xA0, 0xBE, 0xEB, 0xEE, 0x2A, 0x3D, 0x99, 0xE3, 0x3B, 0xBE, + 0xD7, 0xC0, 0x3F, 0x3F, 0x7F, 0x19, 0xC3, 0x3E, 0x72, 0xCE, 0x7C, 0xBE, + 0x78, 0x3B, 0xA4, 0x3E, 0x29, 0x7E, 0x0E, 0xBB, 0x3D, 0xAE, 0x20, 0xBC, + 0xDD, 0xFA, 0x15, 0xBF, 0x3B, 0x06, 0x86, 0x3F, 0xE9, 0x80, 0x47, 0xBF, + 0xEA, 0x2F, 0xFC, 0xBE, 0xE6, 0x03, 0xA6, 0xBD, 0xB8, 0x85, 0x06, 0xBE, + 0xF6, 0x20, 0x4C, 0x3D, 0x89, 0x85, 0x0C, 0xBF, 0x78, 0x3C, 0x9D, 0x3E, + 0xDC, 0xBB, 0x88, 0xBE, 0x0E, 0x52, 0x08, 0xBF, 0x43, 0xA2, 0x84, 0x3E, + 0xC1, 0x89, 0x7E, 0x3D, 0x5A, 0xA9, 0xB3, 0xBD, 0xDF, 0x16, 0xA6, 0x3E, + 0x1C, 0xD1, 0xBE, 0x3C, 0x4A, 0x6C, 0xFD, 0x3E, 0x53, 0xEA, 0x4F, 0xBF, + 0x6F, 0xED, 0xAB, 0x3F, 0xC1, 0xC1, 0xF1, 0xBC, 0xA5, 0x0D, 0xC3, 0x3E, + 0x61, 0x36, 0x17, 0xBD, 0x95, 0x41, 0xCF, 0xBC, 0x6B, 0x5D, 0x5B, 0x3E, + 0x25, 0xF0, 0xD3, 0xBD, 0xF6, 0x5A, 0x0A, 0x3B, 0xF1, 0xE6, 0xE1, 0x3D, + 0xA2, 0x75, 0x36, 0xBF, 0x09, 0xD3, 0x03, 0xBE, 0x37, 0xBC, 0x05, 0x3F, + 0x94, 0x1E, 0xEF, 0xBE, 0xE7, 0x55, 0xC3, 0xBE, 0x68, 0x6B, 0x10, 0x3E, + 0xE6, 0xDF, 0x1A, 0x3F, 0x4D, 0xA0, 0x95, 0xBF, 0x40, 0x4A, 0x14, 0xBE, + 0xC7, 0x1A, 0x43, 0xBF, 0xE0, 0x60, 0x24, 0xBE, 0xD5, 0x23, 0x4A, 0x3E, + 0xE2, 0xD8, 0x4E, 0x3D, 0x84, 0xDD, 0x08, 0x3F, 0x55, 0xE6, 0xA0, 0x3E, + 0x66, 0x83, 0xAD, 0xBE, 0x94, 0x5E, 0x8D, 0x3D, 0x0B, 0x0B, 0x80, 0x3E, + 0x68, 0x42, 0x3D, 0x3D, 0xE1, 0x70, 0x4D, 0x3B, 0x1A, 0x82, 0x19, 0xBE, + 0x36, 0xC2, 0x8E, 0xBE, 0xF3, 0xF4, 0x88, 0x3F, 0x9B, 0x13, 0x4D, 0xBF, + 0x79, 0x9C, 0xBF, 0x3E, 0x75, 0xE3, 0xAB, 0xBE, 0xED, 0x81, 0xA9, 0xBD, + 0x80, 0x41, 0x52, 0xBF, 0x22, 0x80, 0xC9, 0x3E, 0x09, 0x44, 0xCD, 0x3E, + 0x3A, 0x5C, 0x8B, 0x3E, 0x8D, 0x82, 0xF7, 0xBE, 0x6D, 0xFA, 0x0A, 0x3D, + 0xC2, 0x86, 0x08, 0xBD, 0x30, 0x1E, 0x23, 0xBE, 0x03, 0x52, 0x14, 0x3E, + 0x3A, 0xFC, 0x65, 0x3E, 0xC9, 0x9B, 0x04, 0x3E, 0x74, 0xFF, 0x20, 0x3F, + 0xC4, 0x09, 0x9A, 0xBE, 0x17, 0xE9, 0x12, 0xBD, 0x84, 0x46, 0x5E, 0xBB, + 0xF1, 0x02, 0xBF, 0x3B, 0x6B, 0x78, 0x95, 0x3E, 0x24, 0xD7, 0x6A, 0xBE, + 0x6D, 0xE1, 0xE6, 0xBD, 0x69, 0xC0, 0x27, 0x3E, 0x88, 0xFA, 0xAF, 0xBD, + 0x8B, 0xA8, 0xB0, 0x3C, 0x84, 0x3B, 0x94, 0x3D, 0xC6, 0xD0, 0x3B, 0xBE, + 0x59, 0xF7, 0x48, 0x3F, 0x7F, 0x4D, 0xEE, 0xBD, 0x4D, 0x15, 0x00, 0xBF, + 0x2D, 0x6E, 0xA1, 0xBD, 0xD4, 0xEF, 0x36, 0x3F, 0x87, 0x9D, 0x1C, 0xBF, + 0xDD, 0x49, 0x0D, 0x3F, 0x14, 0x7C, 0x89, 0xBD, 0xCD, 0xD1, 0xD9, 0x3D, + 0x18, 0x16, 0xAE, 0x3E, 0xA9, 0x61, 0x4C, 0x3E, 0x9D, 0x76, 0x7A, 0x3E, + 0x1B, 0x6D, 0x09, 0xBF, 0x0A, 0x56, 0xF2, 0x3C, 0x09, 0x44, 0x89, 0xBF, + 0x0B, 0x4A, 0xAD, 0xBE, 0xB1, 0x31, 0x86, 0xBD, 0x60, 0x30, 0x91, 0xBD, + 0x20, 0x66, 0x99, 0xBC, 0x02, 0x16, 0x9F, 0xBE, 0x6D, 0x4C, 0x49, 0x3F, + 0x80, 0xA1, 0xAD, 0x3E, 0xF9, 0x91, 0x06, 0xBC, 0xAC, 0xDC, 0xA8, 0xBE, + 0x1F, 0xF2, 0xA1, 0x3E, 0x0C, 0x39, 0x9A, 0x3F, 0xD6, 0x22, 0xFF, 0xBD, + 0x3C, 0x1E, 0x05, 0xBF, 0xD5, 0x7D, 0x56, 0x3E, 0x71, 0x1E, 0x3F, 0xBE, + 0x0C, 0x4F, 0x0B, 0x3F, 0xE1, 0x08, 0xAE, 0xBD, 0x99, 0xF0, 0xAA, 0xBF, + 0xBE, 0x8F, 0x00, 0x3E, 0x5C, 0x69, 0x45, 0xBF, 0x7A, 0xC9, 0x40, 0x3E, + 0xCB, 0x19, 0x0C, 0xC0, 0xFD, 0x4B, 0x40, 0xBF, 0x7B, 0x53, 0x9F, 0xBE, + 0x07, 0x6E, 0xBD, 0x3D, 0x8A, 0x9C, 0x3A, 0xBE, 0x92, 0xA0, 0xC1, 0xBE, + 0x5C, 0x93, 0xA3, 0xBC, 0x3D, 0x31, 0xE4, 0xBD, 0xC3, 0xA7, 0x2D, 0xBF, + 0x77, 0xAF, 0x15, 0xBE, 0x4E, 0x89, 0x8F, 0xBC, 0xAE, 0x95, 0x06, 0x3F, + 0x31, 0x61, 0xAE, 0x3E, 0x7F, 0x11, 0x28, 0x3E, 0x75, 0x1F, 0xC1, 0xB8, + 0x9C, 0x73, 0x3D, 0xBE, 0x59, 0x06, 0x68, 0x3F, 0x46, 0x58, 0x16, 0xBF, + 0xA6, 0xEE, 0xD5, 0x3E, 0x1F, 0x84, 0x9F, 0xBE, 0xE9, 0x68, 0xEC, 0x3E, + 0xBC, 0xB2, 0xAE, 0x3D, 0x66, 0x86, 0x85, 0xBA, 0x08, 0x0C, 0x76, 0x3E, + 0xD0, 0x9D, 0x25, 0xBF, 0x7B, 0x04, 0x23, 0x3F, 0x96, 0x7A, 0x50, 0xBF, + 0x97, 0x07, 0xA5, 0xBE, 0x24, 0x58, 0x18, 0x3A, 0x2F, 0xEB, 0x4E, 0x3D, + 0x87, 0x6E, 0xB9, 0x3E, 0x86, 0x35, 0x36, 0xBF, 0x85, 0xD0, 0x00, 0x3D, + 0xED, 0xE9, 0x87, 0xBE, 0x5D, 0xE7, 0x63, 0xBC, 0x77, 0x2D, 0xE3, 0x3D, + 0x26, 0x68, 0xB2, 0x3D, 0x11, 0xEA, 0xF6, 0xBD, 0x18, 0x5C, 0xD1, 0xBD, + 0xB9, 0x88, 0x06, 0xBE, 0x59, 0xC9, 0xAC, 0x3E, 0x2A, 0x6F, 0xB8, 0xBE, + 0xB1, 0x36, 0xC8, 0x3D, 0x3A, 0x03, 0xA3, 0x3C, 0xB1, 0x7D, 0xAD, 0x3E, + 0x40, 0x73, 0x04, 0xBE, 0x17, 0x63, 0x2B, 0xBE, 0x45, 0x3C, 0xB5, 0x3F, + 0x55, 0xF6, 0xBC, 0xBE, 0x82, 0x84, 0x9E, 0xBD, 0xA0, 0xF9, 0x27, 0xBE, + 0x50, 0xB2, 0x00, 0x3E, 0x25, 0x90, 0x66, 0x3F, 0xCB, 0xAC, 0x09, 0x3F, + 0x2F, 0x67, 0x4C, 0x3E, 0x4F, 0x48, 0x3F, 0xBD, 0x03, 0xAF, 0xAB, 0x3F, + 0xBF, 0x7F, 0x94, 0x3E, 0x6E, 0x40, 0x48, 0x40, 0xFA, 0xA9, 0xA4, 0x3E, + 0xC2, 0x97, 0x3A, 0xBF, 0xBC, 0xEE, 0x5D, 0xBC, 0x80, 0xBD, 0x4D, 0xBF, + 0xEC, 0xDF, 0x27, 0x3F, 0xBA, 0x4D, 0x82, 0xBF, 0xDD, 0x20, 0x27, 0x3F, + 0xBA, 0x32, 0xA1, 0x3E, 0x79, 0xD6, 0x07, 0x3E, 0x12, 0x61, 0x20, 0x3F, + 0xBD, 0x13, 0xF0, 0xBE, 0x8E, 0xED, 0xA8, 0xBE, 0xA9, 0xFC, 0x41, 0xBF, + 0x8B, 0x82, 0x7C, 0x3C, 0x95, 0xB1, 0xB9, 0x3E, 0xC6, 0x29, 0x0C, 0xBF, + 0x5F, 0x2A, 0xA7, 0x3C, 0x63, 0x28, 0x07, 0x3F, 0x7B, 0x40, 0x1D, 0x3F, + 0x72, 0x4E, 0x8F, 0x3D, 0x0C, 0x6B, 0x2E, 0xBF, 0xEC, 0x80, 0xD4, 0x3D, + 0x87, 0x50, 0xC0, 0x3D, 0x56, 0x8E, 0xAE, 0x3E, 0x91, 0x01, 0x8A, 0x3E, + 0xBD, 0x1E, 0x00, 0xBF, 0x43, 0x07, 0x3A, 0xBD, 0xFB, 0x04, 0xB9, 0x3E, + 0xFE, 0x4D, 0xAF, 0x3D, 0x57, 0x37, 0x7D, 0x3F, 0xAA, 0xB9, 0x2C, 0xBF, + 0xAD, 0x33, 0xDF, 0xBD, 0x3E, 0x7A, 0x51, 0x3E, 0x9C, 0x23, 0x3B, 0x3E, + 0xB5, 0x38, 0x24, 0x3C, 0x7E, 0xFF, 0x35, 0xBD, 0x3A, 0xA3, 0x7E, 0x3E, + 0x3D, 0xEB, 0xC5, 0xBE, 0x37, 0x2C, 0xE0, 0xBE, 0xCB, 0x19, 0xA1, 0xBE, + 0x41, 0xF9, 0x40, 0xBC, 0xE9, 0xA7, 0xC9, 0x3E, 0x57, 0xAE, 0x62, 0x3C, + 0xEE, 0x98, 0xC7, 0x3D, 0x9D, 0x68, 0xB8, 0x3D, 0xCF, 0x24, 0x7C, 0x3D, + 0xBC, 0xC2, 0xD8, 0xBD, 0x62, 0xBA, 0x0D, 0x3F, 0xC7, 0x10, 0x1A, 0xBF, + 0xC3, 0xEB, 0x4E, 0xBE, 0x47, 0x48, 0x84, 0xBF, 0x31, 0x94, 0xCD, 0x3E, + 0xB1, 0x79, 0x20, 0x3F, 0x1A, 0xDA, 0x00, 0xBE, 0x40, 0xC0, 0xA4, 0x3B, + 0xEE, 0x43, 0x6C, 0xBE, 0xC6, 0x30, 0xC4, 0xBD, 0xAC, 0x6A, 0xA0, 0xBD, + 0x67, 0xB2, 0xDA, 0xBE, 0x00, 0x67, 0x1E, 0xBE, 0x92, 0x4D, 0x7C, 0xBD, + 0x50, 0xBE, 0x31, 0xBE, 0xFE, 0xBC, 0x8A, 0xBD, 0x92, 0xBB, 0x07, 0x3E, + 0x90, 0x58, 0xED, 0xBD, 0xF8, 0xFA, 0x7B, 0xBE, 0x72, 0x95, 0x11, 0xBE, + 0xD0, 0x7E, 0x8C, 0x3E, 0x7E, 0x68, 0x26, 0xBD, 0x23, 0xF6, 0x7A, 0x3E, + 0x39, 0x31, 0x57, 0xBD, 0x7E, 0xFA, 0x93, 0x3D, 0x7E, 0x08, 0x5B, 0xBD, + 0x81, 0x63, 0xBA, 0xBE, 0x13, 0xBA, 0x8D, 0x3B, 0x54, 0x87, 0xAE, 0xBB, + 0x7C, 0x8E, 0xF1, 0xBC, 0xA5, 0x39, 0xA3, 0x3E, 0x62, 0x98, 0x0F, 0xBE, + 0xA0, 0xFE, 0x3A, 0x3E, 0x42, 0x5A, 0x41, 0x3E, 0xC2, 0x0B, 0xE2, 0xBD, + 0x70, 0xDB, 0xC2, 0x3D, 0x39, 0x0E, 0x6F, 0xBE, 0xF1, 0xF7, 0x46, 0xBE, + 0x84, 0x88, 0xD7, 0x3D, 0x12, 0x78, 0x1A, 0x3C, 0x94, 0xD4, 0xB2, 0xBC, + 0x92, 0x8C, 0xA3, 0xBD, 0xDE, 0x6E, 0x2D, 0xBE, 0x29, 0x82, 0xEB, 0xBD, + 0xDD, 0x63, 0x26, 0x3D, 0x39, 0x55, 0xC1, 0xBD, 0x51, 0x79, 0x2A, 0x3C, + 0x81, 0x81, 0x45, 0xBD, 0x4F, 0x0F, 0x28, 0xBD, 0x1E, 0xE2, 0xE5, 0xBD, + 0x45, 0x86, 0xBC, 0x3B, 0x53, 0x10, 0xA5, 0xBC, 0xF0, 0x5E, 0x89, 0x3D, + 0x71, 0x77, 0xEF, 0x3C, 0xC8, 0xC6, 0x63, 0x3D, 0x42, 0x80, 0x94, 0xBD, + 0x43, 0xB6, 0xCC, 0x3D, 0xA5, 0x84, 0x43, 0x3D, 0x52, 0xB3, 0xD9, 0xBD, + 0xB3, 0x04, 0x10, 0x3E, 0x45, 0x3A, 0xC5, 0xBC, 0x45, 0xDC, 0xF6, 0x3C, + 0x82, 0xC4, 0x71, 0xBC, 0xE2, 0xCA, 0x16, 0xBE, 0x3B, 0x69, 0x85, 0x3D, + 0x24, 0x11, 0x1A, 0x3E, 0x96, 0xBB, 0x4D, 0x3D, 0x26, 0x6D, 0xBD, 0x3D, + 0x10, 0x10, 0x75, 0x3D, 0xF4, 0x8B, 0xDC, 0xBE, 0x16, 0x60, 0xE8, 0x3D, + 0x93, 0x8F, 0x08, 0x3D, 0x06, 0xC8, 0x23, 0x3E, 0x2E, 0x44, 0xE5, 0x3E, + 0x7E, 0x25, 0xF8, 0x3E, 0xA2, 0x93, 0x9E, 0x3D, 0x11, 0xBF, 0x25, 0xBE, + 0xF4, 0x0C, 0x7F, 0x3F, 0x9E, 0xA9, 0x85, 0x3E, 0x4D, 0x62, 0xFB, 0xBE, + 0x67, 0xFB, 0x51, 0x3F, 0x9B, 0xFE, 0x96, 0xBE, 0xBA, 0x62, 0x3B, 0xBF, + 0x50, 0x07, 0x59, 0xBF, 0xF3, 0xFF, 0xD8, 0xBE, 0xB5, 0xF7, 0x44, 0xC0, + 0xEE, 0x55, 0x9E, 0xBE, 0xD0, 0x3F, 0x37, 0x3F, 0xBE, 0x9D, 0x6E, 0xBE, + 0x60, 0x61, 0x3E, 0xBF, 0x2E, 0x50, 0xA9, 0x3E, 0xE7, 0x9F, 0x5A, 0x3E, + 0xF7, 0x80, 0x16, 0x3C, 0xEA, 0x8C, 0xB6, 0xBE, 0x6B, 0x85, 0xD0, 0x3E, + 0xC9, 0xC5, 0xD2, 0x3D, 0x42, 0x49, 0x6F, 0xBE, 0x1F, 0x36, 0x66, 0x3F, + 0x93, 0x6E, 0x3D, 0x3E, 0x0D, 0xF0, 0x85, 0x3E, 0xBE, 0x02, 0xFA, 0xBF, + 0x12, 0x26, 0xEC, 0x3D, 0xAD, 0x54, 0x72, 0xBE, 0x12, 0x0B, 0x47, 0xBF, + 0xEE, 0xC6, 0xD3, 0xBC, 0x02, 0xC8, 0x5B, 0xBD, 0x15, 0x6D, 0x28, 0xBD, + 0xC1, 0x5D, 0xFB, 0x3A, 0x20, 0x7F, 0xCC, 0xBC, 0xA1, 0xEC, 0x4C, 0xBD, + 0xD6, 0x7D, 0x2C, 0x3D, 0xF3, 0x14, 0x0E, 0xBD, 0xCF, 0x80, 0xB6, 0xBD, + 0x02, 0xB3, 0xE9, 0x3C, 0xD0, 0xBB, 0xAB, 0xBD, 0x7F, 0x0D, 0x75, 0x3C, + 0x90, 0xD7, 0xC3, 0x39, 0xB9, 0x26, 0x87, 0x3D, 0x9B, 0x30, 0xBC, 0xBC, + 0x4F, 0xF7, 0x21, 0x3D, 0x75, 0xC3, 0xA9, 0xBC, 0x32, 0xBB, 0x34, 0xBC, + 0x9F, 0x07, 0xE0, 0xBB, 0x18, 0xE4, 0x99, 0xBD, 0xB8, 0xAB, 0xAC, 0x3C, + 0x2B, 0x48, 0x33, 0x3D, 0x7F, 0xAF, 0x13, 0x3E, 0x86, 0x06, 0x87, 0xBD, + 0xC8, 0x75, 0x27, 0x3B, 0x1C, 0x91, 0xF1, 0xBB, 0xEB, 0x19, 0x1C, 0xBD, + 0xF9, 0xCF, 0x23, 0x3C, 0xD2, 0x5A, 0xE5, 0x3B, 0x3A, 0xE3, 0xBD, 0xBD, + 0x14, 0xFC, 0xCF, 0x3B, 0x5B, 0x61, 0x17, 0x3D, 0x28, 0x28, 0xB2, 0xBD, + 0xD9, 0x33, 0x17, 0x3D, 0x97, 0x4F, 0xAD, 0xBD, 0xF2, 0x38, 0xB8, 0xBC, + 0x09, 0xF2, 0xCA, 0xBC, 0xDC, 0x9E, 0x02, 0x3C, 0xDE, 0xA1, 0x4D, 0x3C, + 0x8B, 0x91, 0x9D, 0x3C, 0x27, 0x89, 0xFB, 0xBC, 0x5A, 0x74, 0x04, 0x3D, + 0xEB, 0x51, 0x8A, 0xBD, 0x2B, 0x02, 0x04, 0x3C, 0x6D, 0x98, 0xC3, 0x3C, + 0xBB, 0xA4, 0x8B, 0x3D, 0x0F, 0x65, 0x83, 0x3D, 0x4E, 0x36, 0xE9, 0x3C, + 0x53, 0xAB, 0x92, 0x3B, 0x6C, 0x3A, 0x28, 0x3B, 0xB1, 0x1E, 0xAB, 0xBD, + 0xB7, 0xC0, 0x78, 0xBD, 0x4B, 0x78, 0x11, 0x3D, 0x51, 0x0B, 0xEB, 0xBC, + 0xF2, 0xF0, 0xB8, 0x3C, 0x6F, 0x52, 0x4D, 0x3C, 0xB7, 0x37, 0x1E, 0xBB, + 0xA7, 0x98, 0x30, 0x3C, 0xAA, 0x95, 0x19, 0xBD, 0x60, 0xA2, 0x59, 0x3D, + 0x29, 0x5D, 0xC2, 0xBC, 0x3F, 0x11, 0x43, 0x3E, 0xFF, 0x68, 0xE6, 0x3C, + 0x27, 0xD5, 0x28, 0x3C, 0x77, 0x7A, 0xBA, 0x3E, 0x04, 0x99, 0x12, 0x3E, + 0x55, 0x83, 0x30, 0xBF, 0x9B, 0x47, 0xD0, 0x3E, 0x0B, 0x43, 0x3B, 0xBC, + 0xC0, 0x2A, 0xB9, 0x3D, 0x93, 0xA9, 0xFB, 0x3D, 0x98, 0xB3, 0xAB, 0x3C, + 0xDD, 0x66, 0xB3, 0xBD, 0xE8, 0xB3, 0x08, 0xBE, 0x01, 0xA3, 0x11, 0xBD, + 0x78, 0x8F, 0xB8, 0x3C, 0xA6, 0x6B, 0x04, 0xBF, 0xCE, 0x8D, 0x90, 0xBE, + 0x70, 0xF8, 0xD4, 0xBE, 0x5C, 0xFB, 0xB1, 0xBA, 0x3A, 0xAC, 0xB7, 0x3E, + 0xD0, 0x00, 0x17, 0x3D, 0x87, 0x66, 0xB5, 0x3E, 0x08, 0xCC, 0xF3, 0xBE, + 0xF1, 0xE3, 0xE8, 0x3C, 0x38, 0x60, 0x6D, 0x3D, 0x20, 0x49, 0x76, 0xBF, + 0xC7, 0x40, 0x4A, 0x3C, 0x8B, 0xDE, 0x77, 0xBE, 0xE8, 0xCD, 0xD3, 0x3E, + 0xFD, 0x06, 0x98, 0xBD, 0x25, 0x91, 0x06, 0xBF, 0xC9, 0xBB, 0xF5, 0x3D, + 0xF2, 0x8C, 0x8A, 0xBF, 0x76, 0x86, 0xF2, 0x3C, 0x3E, 0x2F, 0x07, 0x3E, + 0x07, 0x07, 0xB7, 0xBC, 0x19, 0x0F, 0x20, 0xBD, 0x62, 0xB8, 0x3D, 0x3D, + 0xE7, 0xC5, 0xCD, 0x3C, 0x80, 0xF4, 0x89, 0x3C, 0x33, 0x92, 0xA9, 0xBC, + 0xF3, 0xE3, 0x41, 0x3D, 0x7C, 0x43, 0xBF, 0xBB, 0x96, 0xBF, 0xF0, 0xBD, + 0xAA, 0xC6, 0x11, 0xBC, 0x44, 0x11, 0x23, 0xBD, 0xB3, 0x26, 0x84, 0x3C, + 0x22, 0xEE, 0x07, 0x3C, 0xF4, 0x97, 0x6B, 0xBC, 0x9B, 0x75, 0xE2, 0x3B, + 0x1B, 0xA7, 0x2B, 0x3B, 0x09, 0xD8, 0x0F, 0x3C, 0x5E, 0x74, 0x0C, 0x3C, + 0xF4, 0xAF, 0x9B, 0xBC, 0x0C, 0x12, 0x04, 0xBC, 0xE1, 0x25, 0xF5, 0x3C, + 0xCC, 0xA2, 0x3F, 0x3D, 0xA3, 0x8C, 0x95, 0x3D, 0xD3, 0x55, 0x49, 0xBD, + 0xDD, 0xDB, 0x1E, 0x3D, 0xFB, 0x33, 0x35, 0x3B, 0xEC, 0x66, 0x81, 0xBC, + 0x0A, 0xB8, 0x31, 0x3C, 0x1F, 0xDB, 0x30, 0x3D, 0xA8, 0xA8, 0x7D, 0xBE, + 0xAB, 0x83, 0x83, 0x3B, 0x28, 0x05, 0x7E, 0xBC, 0xB4, 0xA1, 0xAF, 0xBD, + 0xA6, 0x1A, 0xA7, 0x3E, 0x86, 0x3B, 0x0C, 0x3F, 0x21, 0x5E, 0xC1, 0xBE, + 0xE1, 0x87, 0xB8, 0x3E, 0xB9, 0x62, 0xE4, 0xBE, 0xB9, 0x8E, 0xB4, 0xBC, + 0xA5, 0x79, 0x4B, 0x3F, 0xAE, 0x49, 0xCF, 0xBE, 0xCD, 0x36, 0x11, 0x3E, + 0x05, 0xDF, 0xC0, 0xBE, 0x3F, 0x01, 0xB2, 0x3E, 0x2E, 0xFD, 0x6B, 0x3E, + 0xA6, 0x9C, 0x47, 0x40, 0x11, 0x87, 0x00, 0x3D, 0x73, 0x2B, 0x07, 0x3F, + 0x78, 0xC2, 0x58, 0xBE, 0x2A, 0xAF, 0xBD, 0x3E, 0x7D, 0x1A, 0x8F, 0x3C, + 0x68, 0x55, 0xB8, 0xBE, 0x59, 0xF5, 0x6E, 0x3E, 0x18, 0x63, 0x12, 0x3C, + 0x55, 0x0E, 0x87, 0x3E, 0xBD, 0xF7, 0x76, 0x3E, 0x8F, 0x32, 0x0E, 0xBF, + 0xCC, 0xA4, 0x6A, 0x3E, 0xE4, 0xEE, 0x4A, 0x3F, 0x01, 0xC1, 0xA0, 0x3E, + 0x5B, 0x2E, 0x75, 0x3F, 0x05, 0xAD, 0x99, 0x3E, 0x64, 0xBC, 0x8C, 0xBE, + 0x1E, 0x4D, 0xAB, 0x3E, 0x6A, 0xE2, 0x2F, 0xBE, 0x1A, 0x60, 0x13, 0xBF, + 0xE4, 0x0A, 0x09, 0x3E, 0xEF, 0xFE, 0x06, 0xBF, 0x62, 0xC0, 0x60, 0xBE, + 0xF5, 0x3C, 0xC7, 0x3E, 0x8F, 0x77, 0x60, 0xBF, 0xDB, 0x95, 0xAC, 0xBD, + 0xCE, 0xA0, 0xF7, 0xBC, 0x2F, 0x9B, 0x3D, 0x3D, 0x1C, 0x4B, 0x9C, 0xBD, + 0x0A, 0x09, 0x93, 0xBE, 0x8C, 0x90, 0x6C, 0x3D, 0x99, 0x67, 0x1F, 0xC0, + 0xE7, 0xCC, 0xC1, 0x3E, 0x3A, 0x46, 0x38, 0xBF, 0xE5, 0x49, 0xF0, 0xBE, + 0xAB, 0x38, 0x91, 0xBD, 0x6D, 0x84, 0x82, 0x3D, 0x56, 0x6D, 0xB3, 0x3E, + 0x85, 0x83, 0x10, 0xBE, 0x2F, 0xA6, 0x9A, 0xBC, 0x7E, 0xB1, 0x2D, 0xBE, + 0xD2, 0x51, 0x93, 0x3D, 0xE0, 0x57, 0x90, 0xBC, 0x04, 0x33, 0xAF, 0x3D, + 0x2C, 0xA9, 0xA3, 0xBC, 0xA8, 0x31, 0x2E, 0x3F, 0x9A, 0x3C, 0x0D, 0xBF, + 0x94, 0xFD, 0x83, 0xBE, 0x4F, 0x8B, 0x58, 0xBE, 0xFC, 0xE2, 0x87, 0xBE, + 0xEC, 0xCF, 0x70, 0xBD, 0x92, 0x0E, 0x27, 0xBE, 0x49, 0x4D, 0xDE, 0x3E, + 0x1D, 0x88, 0xC6, 0x3E, 0xEE, 0x29, 0x44, 0x3E, 0x20, 0xE4, 0x08, 0xBD, + 0xD0, 0x68, 0x43, 0x3D, 0x9A, 0xA5, 0xB6, 0xBD, 0x25, 0x1B, 0x66, 0xBE, + 0xC9, 0x8F, 0x83, 0xBD, 0xAF, 0xF2, 0x95, 0xBD, 0xF3, 0x7C, 0xBB, 0x3C, + 0x46, 0xD9, 0x37, 0xBD, 0x9E, 0x62, 0x89, 0xBE, 0x5E, 0x3F, 0xC2, 0xBE, + 0x31, 0x65, 0x2B, 0xBE, 0x5C, 0x12, 0xCC, 0xBA, 0x59, 0x7C, 0x90, 0xBD, + 0x2E, 0xFD, 0x57, 0x3E, 0x25, 0xBD, 0x26, 0x3E, 0x77, 0x6A, 0x72, 0x3D, + 0x4C, 0x8A, 0xC6, 0x3B, 0xFB, 0x5C, 0x8D, 0x3E, 0xEC, 0xAA, 0x31, 0xBE, + 0x39, 0xC7, 0x12, 0x3E, 0xF4, 0xE5, 0x76, 0xBE, 0x46, 0x6E, 0x06, 0x3E, + 0x18, 0xE0, 0xB7, 0x3D, 0x09, 0xB8, 0xC0, 0x3D, 0xC2, 0xDC, 0x0E, 0xBF, + 0xA8, 0xBF, 0x3B, 0xBE, 0xC6, 0x2B, 0x2F, 0xBD, 0x78, 0x6A, 0x42, 0x35, + 0xC2, 0xCD, 0x56, 0xBD, 0x4A, 0x2B, 0x13, 0x3E, 0x77, 0x34, 0xA8, 0xBD, + 0x43, 0x33, 0x9D, 0xBB, 0x38, 0xC8, 0xF7, 0x3C, 0xCC, 0xBB, 0xB1, 0xBC, + 0x54, 0x8A, 0xBE, 0xBC, 0x67, 0x42, 0x3E, 0x3D, 0x0E, 0x57, 0xE6, 0xBA, + 0x25, 0xA5, 0x2F, 0xBD, 0x4A, 0xF3, 0xF5, 0x3B, 0x46, 0x2D, 0x17, 0xBD, + 0xB2, 0x65, 0xE9, 0x3C, 0xAA, 0x1B, 0x97, 0xBD, 0x66, 0xA3, 0xD5, 0x3B, + 0x9A, 0x1A, 0xE3, 0x3B, 0x63, 0xEC, 0x02, 0xBD, 0xE8, 0xC5, 0x0D, 0x3C, + 0xAB, 0x06, 0xF0, 0xBC, 0xEE, 0x33, 0xA3, 0xBC, 0xAF, 0xF3, 0x04, 0xBC, + 0xB4, 0xF9, 0x97, 0x3D, 0x6E, 0x4B, 0x80, 0x3B, 0xA8, 0xFC, 0x68, 0x3C, + 0xBC, 0x05, 0x42, 0x3B, 0x89, 0x44, 0xD0, 0xBC, 0x86, 0x3E, 0x60, 0xBD, + 0xF0, 0x1E, 0x12, 0xBD, 0xCC, 0x37, 0x93, 0xBE, 0x74, 0xDE, 0xF1, 0xBC, + 0x8F, 0xC4, 0x0A, 0xBC, 0x7C, 0x1D, 0x3C, 0xBF, 0xF5, 0x51, 0x58, 0xBE, + 0xAE, 0x12, 0xB2, 0xBE, 0x2C, 0x50, 0xD5, 0x3F, 0x33, 0x5E, 0xDC, 0xBE, + 0xD9, 0x68, 0x17, 0xBE, 0x2E, 0x5D, 0x85, 0xBE, 0x18, 0x68, 0x2C, 0x3D, + 0x21, 0xFB, 0x16, 0x3E, 0x19, 0xAD, 0xEC, 0x3D, 0x7F, 0x1D, 0x09, 0xBF, + 0xC6, 0xC7, 0x98, 0xBD, 0x5B, 0xCE, 0x1D, 0xBD, 0x11, 0xAD, 0xB8, 0xBE, + 0xE2, 0x3C, 0x65, 0x3E, 0x96, 0x24, 0xF7, 0xBD, 0xB2, 0xF1, 0x0A, 0x3E, + 0xCD, 0x61, 0x07, 0xBD, 0xFC, 0x54, 0x39, 0xBF, 0xE3, 0x05, 0x07, 0xBF, + 0x0C, 0x4D, 0x96, 0xBD, 0x02, 0x0A, 0x0B, 0xBE, 0x09, 0xFC, 0xDF, 0xBE, + 0xF4, 0x9D, 0x7A, 0xBE, 0x8B, 0xDA, 0xB1, 0x3D, 0xF3, 0x39, 0x21, 0x3D, + 0xCD, 0x60, 0xA6, 0xBD, 0x33, 0xB1, 0x85, 0x3F, 0xA1, 0x6C, 0x63, 0xBE, + 0x20, 0x24, 0xDD, 0xBD, 0x97, 0xFC, 0xC4, 0x3E, 0x10, 0xF8, 0xB7, 0x3D, + 0xEF, 0xA0, 0x0A, 0xBC, 0xBD, 0x04, 0x42, 0x3E, 0x38, 0x64, 0x7B, 0xBE, + 0xF2, 0xE4, 0x9F, 0xBE, 0x5F, 0x68, 0x74, 0x3D, 0xE1, 0x59, 0x34, 0x3E, + 0x6D, 0x09, 0xAC, 0x3E, 0x98, 0xEE, 0xB5, 0x3E, 0xE2, 0x85, 0x19, 0xBE, + 0x3D, 0xB6, 0xD8, 0x3E, 0x3F, 0xA5, 0xC8, 0x3E, 0xB0, 0x6B, 0x49, 0x3D, + 0xBB, 0x97, 0x12, 0x3E, 0xA2, 0x4B, 0x2E, 0xBF, 0x59, 0x5F, 0xAD, 0xBE, + 0x12, 0x5E, 0xAD, 0x3D, 0xEA, 0x08, 0x22, 0x3F, 0x23, 0xEE, 0xF9, 0xBB, + 0x4E, 0x34, 0x05, 0xBF, 0x8A, 0x05, 0x2F, 0x3E, 0x95, 0xF9, 0x05, 0xBD, + 0xE9, 0x00, 0x9C, 0x3D, 0x44, 0x5F, 0x5F, 0xBF, 0x33, 0xD8, 0x25, 0x3F, + 0x04, 0x5D, 0x74, 0x3F, 0x90, 0x5F, 0x2B, 0xBE, 0xE4, 0x03, 0x10, 0xBD, + 0x13, 0xD9, 0x1D, 0x3F, 0x61, 0xE9, 0x68, 0x3E, 0x79, 0xDC, 0x1D, 0xBF, + 0x0B, 0x99, 0xEE, 0xBE, 0xBF, 0x51, 0x99, 0x3E, 0x98, 0x15, 0xA2, 0x3E, + 0x71, 0x6B, 0x09, 0xBD, 0xC5, 0xCA, 0x65, 0xBF, 0x77, 0x75, 0x89, 0x3E, + 0x48, 0x18, 0x91, 0xB9, 0x53, 0xC9, 0x4B, 0xBE, 0x1E, 0x19, 0x56, 0x3F, + 0xB4, 0x16, 0x05, 0x3F, 0xE4, 0x4F, 0xB0, 0xBE, 0xC0, 0xA8, 0x81, 0xBF, + 0x1C, 0x08, 0x8D, 0x3F, 0xE0, 0xA5, 0x10, 0x3D, 0xB0, 0x30, 0xA9, 0xBD, + 0x3E, 0xCC, 0x9C, 0xBF, 0xAA, 0x45, 0xA3, 0x3F, 0x65, 0x8D, 0x3C, 0xBF, + 0x17, 0xC2, 0xF3, 0x3E, 0x49, 0x76, 0x94, 0x3D, 0x27, 0xC3, 0x16, 0xBF, + 0x8E, 0x24, 0xA2, 0x3F, 0x33, 0xA0, 0x6D, 0xBE, 0xBC, 0x60, 0xED, 0x3E, + 0x40, 0x2C, 0xE9, 0x3D, 0x0B, 0x5C, 0xC3, 0xBF, 0xB1, 0xBE, 0xD4, 0xBE, + 0x5C, 0x82, 0xC1, 0x3D, 0xC4, 0xF6, 0x33, 0xBE, 0x8E, 0x34, 0x07, 0xBF, + 0xE1, 0x60, 0xF5, 0x3D, 0x86, 0x3D, 0x89, 0xBE, 0x86, 0xE5, 0xDB, 0xBE, + 0x19, 0x29, 0x2E, 0xBE, 0x40, 0xC3, 0x82, 0x3E, 0xD3, 0xF1, 0x38, 0xBF, + 0xF0, 0xD7, 0xC6, 0x3E, 0x90, 0xC1, 0x62, 0xBF, 0xBC, 0x92, 0xD5, 0xBE, + 0x1A, 0x1F, 0xE5, 0xBD, 0x6E, 0x96, 0x15, 0xBF, 0x07, 0x91, 0xE6, 0x3E, + 0xFC, 0x5F, 0xC3, 0xBD, 0xB8, 0x90, 0xA7, 0x3E, 0x63, 0xC7, 0x78, 0x3F, + 0xFF, 0xF1, 0x76, 0xBE, 0x93, 0x7F, 0xC3, 0xBE, 0xC0, 0x6A, 0x88, 0xBE, + 0xA6, 0x26, 0x55, 0xBD, 0xAB, 0x96, 0x51, 0xBF, 0xC0, 0x3C, 0x82, 0xBF, + 0x83, 0xDB, 0x02, 0xBE, 0xE7, 0x5E, 0x4C, 0xBF, 0xF4, 0x66, 0xAD, 0x3D, + 0x45, 0x7E, 0x3A, 0xBE, 0x75, 0xF4, 0x07, 0xBF, 0xFF, 0xFD, 0x3D, 0xBF, + 0xBA, 0x1E, 0x04, 0xBE, 0x5F, 0xDE, 0x51, 0x3E, 0xE7, 0x90, 0x22, 0x3F, + 0x08, 0xA7, 0xD7, 0xBE, 0x8C, 0x1B, 0x16, 0xBF, 0xC2, 0x4E, 0xEF, 0x3B, + 0x66, 0x4B, 0xF1, 0xBE, 0xCB, 0x75, 0x96, 0xBE, 0x65, 0x02, 0x76, 0xBD, + 0x6E, 0xE5, 0x4D, 0x3D, 0x0E, 0x23, 0x2D, 0xBE, 0x89, 0x45, 0xDB, 0xBD, + 0xD8, 0xA2, 0x3E, 0x3E, 0xFD, 0xFF, 0x9B, 0x3D, 0x9F, 0xB4, 0xD3, 0x3B, + 0xBB, 0x14, 0xEA, 0x3D, 0x07, 0x8C, 0xA1, 0x3D, 0x62, 0x5A, 0x01, 0x3E, + 0x4F, 0x81, 0x28, 0x3E, 0x64, 0xBF, 0x50, 0xBD, 0x99, 0x22, 0x0F, 0x3E, + 0xA0, 0x04, 0x50, 0xBD, 0x11, 0x4A, 0xBA, 0xBA, 0x37, 0xB5, 0x3F, 0x3B, + 0x3B, 0xEE, 0x41, 0xBD, 0xC9, 0x60, 0xAE, 0x3D, 0x03, 0x19, 0x20, 0x3D, + 0x0C, 0x0D, 0x87, 0xBD, 0x21, 0x9C, 0x20, 0x3B, 0xFF, 0x61, 0x17, 0xBD, + 0x37, 0x35, 0x8A, 0x3E, 0x36, 0x73, 0x20, 0x3D, 0xA8, 0x22, 0xF2, 0x3C, + 0x9C, 0x8E, 0x5D, 0x3D, 0x75, 0x71, 0x91, 0xBE, 0xE7, 0x67, 0x75, 0x3C, + 0xBA, 0x6D, 0x2D, 0xBE, 0xBC, 0x47, 0xC5, 0x3D, 0x60, 0x94, 0x4A, 0xBF, + 0x40, 0x78, 0x20, 0xBD, 0x16, 0xBC, 0x91, 0xBC, 0xD9, 0x77, 0x6A, 0x3E, + 0xFC, 0x4C, 0xCA, 0x3D, 0xE8, 0xD5, 0x45, 0xBE, 0x01, 0x85, 0xB6, 0x3E, + 0x99, 0x30, 0x8C, 0x3E, 0xDE, 0x09, 0x33, 0x3D, 0xD1, 0x3E, 0x50, 0x3E, + 0xC2, 0x51, 0xD2, 0xBD, 0x89, 0x2B, 0x28, 0xBE, 0x43, 0x1B, 0x9C, 0xBC, + 0xF3, 0x18, 0xEE, 0x3D, 0xE9, 0x74, 0x1D, 0x3C, 0x68, 0xFB, 0x05, 0xBD, + 0x01, 0x53, 0xFA, 0xBE, 0xF7, 0xBA, 0xA9, 0xBE, 0x2E, 0xDB, 0x8C, 0xBE, + 0xEF, 0x55, 0x5F, 0xBD, 0xDF, 0x8F, 0x37, 0x3D, 0xFF, 0x30, 0xE8, 0x3E, + 0xC5, 0x59, 0x51, 0x3E, 0x6E, 0xBD, 0x5E, 0xBD, 0x08, 0xFD, 0x2C, 0x3E, + 0x7B, 0xDB, 0x7B, 0xBE, 0x8C, 0xC5, 0x02, 0x3E, 0xE4, 0xFE, 0xEC, 0x3D, + 0x7A, 0x42, 0x8E, 0xBE, 0xF8, 0x88, 0x31, 0x3E, 0x13, 0xED, 0x24, 0xBE, + 0xCC, 0xA4, 0xFC, 0x3C, 0xE1, 0xF9, 0xC0, 0xBE, 0xB2, 0xE7, 0x1B, 0xBE, + 0x87, 0x83, 0xE8, 0x3A, 0x07, 0x9B, 0xF9, 0xBD, 0x80, 0x13, 0x9E, 0xBC, + 0x86, 0x81, 0xF1, 0xBD, 0xDD, 0x07, 0x16, 0xBE, 0x2E, 0x5F, 0xC1, 0xBD, + 0x51, 0x89, 0x90, 0xBC, 0xA9, 0x88, 0xE4, 0xBC, 0xC0, 0x69, 0x9F, 0x3C, + 0xE6, 0x4E, 0x44, 0x3D, 0x60, 0xC2, 0xFD, 0x3D, 0x2B, 0x57, 0xA2, 0xBE, + 0x4E, 0x34, 0x8B, 0xBD, 0xBA, 0x89, 0xA1, 0x3D, 0x01, 0xB8, 0x09, 0xBE, + 0xE9, 0x47, 0x82, 0x3E, 0x08, 0x66, 0x64, 0x3B, 0xE3, 0x7D, 0x80, 0xBC, + 0x6C, 0xC0, 0x7C, 0xBD, 0xA5, 0x0D, 0x25, 0xBE, 0x56, 0xCD, 0x67, 0xBC, + 0x5F, 0xD3, 0x41, 0xBC, 0x9B, 0xE8, 0xB9, 0x3D, 0x9A, 0xF4, 0x83, 0x3E, + 0x88, 0x27, 0xC8, 0xBD, 0x67, 0xB3, 0x81, 0x3D, 0x81, 0x38, 0x96, 0xBD, + 0x3F, 0x4A, 0xAB, 0xBC, 0xEF, 0x16, 0x93, 0x3D, 0x2E, 0x99, 0x87, 0xBE, + 0x90, 0x8E, 0xCA, 0xBE, 0x55, 0xBC, 0x6E, 0x3D, 0x7A, 0x55, 0xC8, 0xBC, + 0x84, 0x08, 0x2F, 0x3D, 0xFD, 0xB5, 0x29, 0x3E, 0x3C, 0x8E, 0x6A, 0x3B, + 0xAC, 0x4B, 0x43, 0xBC, 0xFB, 0x5A, 0x83, 0xBB, 0xB6, 0x49, 0xA8, 0x3D, + 0x78, 0xCA, 0x31, 0xBD, 0x14, 0xC7, 0xAE, 0x3D, 0xDD, 0xD3, 0x85, 0x3D, + 0x4A, 0xB1, 0x2E, 0x3D, 0x7A, 0x3D, 0xD7, 0x3D, 0x6F, 0x4F, 0x7D, 0x3B, + 0x26, 0xDF, 0x03, 0xBD, 0xD0, 0x76, 0x38, 0xBD, 0x3D, 0xC3, 0xCF, 0x3D, + 0x7D, 0x2D, 0x9C, 0xBC, 0xA6, 0x0B, 0xD1, 0xBC, 0x03, 0x41, 0x76, 0xBC, + 0x70, 0x97, 0x07, 0x3D, 0xBC, 0x0F, 0x08, 0x3D, 0xE3, 0x91, 0xC6, 0xBC, + 0x06, 0x10, 0xB9, 0xBD, 0x20, 0xD3, 0x7A, 0xBE, 0x62, 0x47, 0x16, 0x3E, + 0x04, 0x3B, 0x8F, 0xBD, 0x53, 0x84, 0xA8, 0x3C, 0xFF, 0xB8, 0x68, 0x3B, + 0x9E, 0xBD, 0x2E, 0x3D, 0x47, 0x3B, 0xFA, 0xBC, 0x5E, 0x87, 0xB9, 0x3E, + 0x2C, 0x82, 0x6F, 0xBD, 0x24, 0xF7, 0x6C, 0xBA, 0x4D, 0x25, 0xF1, 0xBD, + 0x41, 0x42, 0x4F, 0xBE, 0xE8, 0xED, 0xAA, 0x3E, 0x7C, 0xE4, 0x02, 0xBD, + 0x40, 0xE3, 0xEA, 0xBC, 0x6F, 0xF2, 0x30, 0xBC, 0xB5, 0xF2, 0x94, 0x3B, + 0x72, 0x9A, 0x7A, 0xBE, 0x66, 0x03, 0x0A, 0x3E, 0xAF, 0x3B, 0x82, 0x3C, + 0xC9, 0x67, 0xA1, 0xBD, 0xD5, 0xC0, 0xDC, 0xBD, 0x26, 0xD1, 0xA8, 0xBD, + 0xD9, 0xD3, 0x48, 0x3E, 0xC4, 0xAE, 0x9E, 0xBE, 0x3E, 0x13, 0xD7, 0x3D, + 0x35, 0xB1, 0xCB, 0xBD, 0xC7, 0x13, 0xC7, 0xBC, 0x3A, 0x20, 0x9A, 0x3E, + 0xF8, 0x4F, 0x00, 0xBD, 0xB1, 0xCA, 0xC1, 0x3C, 0xE0, 0x71, 0x35, 0xBD, + 0x70, 0xD4, 0x78, 0x3E, 0x2C, 0x7E, 0x04, 0xBE, 0xF1, 0x54, 0xC7, 0xBD, + 0xDA, 0xB2, 0x0B, 0xBD, 0x36, 0x2C, 0xEA, 0xBC, 0x66, 0x1F, 0xBA, 0x3D, + 0x9B, 0x98, 0xB6, 0xBE, 0x15, 0x16, 0xCC, 0xBE, 0x9E, 0x22, 0x9E, 0xBD, + 0x18, 0x4E, 0x12, 0x3E, 0x37, 0xD3, 0xA0, 0xBE, 0x27, 0x0C, 0x2E, 0xBD, + 0x77, 0x61, 0xB2, 0x3F, 0xAA, 0xFA, 0xEB, 0x3D, 0x65, 0x60, 0x77, 0x3E, + 0xEF, 0x43, 0x56, 0x3E, 0x51, 0xE6, 0x06, 0xBE, 0x78, 0xE7, 0x04, 0x3E, + 0x88, 0x1B, 0xB0, 0xBD, 0x9E, 0xE1, 0x68, 0xBC, 0xA2, 0xC3, 0xC5, 0xBB, + 0x2F, 0x06, 0xD8, 0xBD, 0xB4, 0x51, 0xD9, 0xBE, 0x34, 0x61, 0x6F, 0xBE, + 0x91, 0x5A, 0x1A, 0xBF, 0x3A, 0xFD, 0x29, 0xBE, 0x75, 0x39, 0x50, 0x3C, + 0xEB, 0xD9, 0xA0, 0xBD, 0xEF, 0x60, 0xBE, 0xBE, 0xB0, 0xB3, 0xC5, 0xBE, + 0xB4, 0x9E, 0x3F, 0x3E, 0x42, 0x5F, 0x8F, 0x3D, 0xF7, 0x06, 0xBA, 0xBE, + 0x8D, 0xB6, 0x89, 0xBC, 0xAE, 0x1D, 0x1A, 0xBF, 0xC2, 0x12, 0x00, 0x3E, + 0x57, 0x2A, 0x9F, 0xBB, 0x9E, 0x72, 0x1B, 0xBF, 0x02, 0x52, 0x9F, 0x3D, + 0xAA, 0x10, 0x93, 0x3B, 0xCB, 0x5E, 0x49, 0x3F, 0x52, 0xBE, 0x2B, 0x3E, + 0xD9, 0x09, 0x73, 0xBE, 0x14, 0xF8, 0x2A, 0xBE, 0xB9, 0x35, 0x9D, 0x3E, + 0x42, 0x1A, 0x52, 0xBD, 0xF5, 0x43, 0xBF, 0xBD, 0x89, 0xCB, 0x90, 0xBD, + 0x69, 0xD2, 0xAD, 0x3C, 0xB5, 0x07, 0xC4, 0xBD, 0xE8, 0x68, 0x0B, 0xBE, + 0xC0, 0xB4, 0x31, 0x3D, 0x60, 0x59, 0x4B, 0xBE, 0x20, 0x28, 0x85, 0x3C, + 0x4B, 0xEB, 0xC2, 0xBC, 0x40, 0x4A, 0x17, 0x3E, 0x98, 0x64, 0x34, 0xBD, + 0x23, 0x41, 0x2E, 0x3E, 0xA3, 0x8E, 0x6C, 0xBC, 0xE1, 0x31, 0xE3, 0x3B, + 0xF3, 0x2B, 0x9F, 0xBD, 0xD5, 0xF4, 0xFF, 0xBD, 0x5B, 0x8F, 0xB1, 0x3D, + 0xC3, 0x2F, 0x50, 0x3D, 0x2F, 0x1D, 0x99, 0x3E, 0x62, 0x92, 0x11, 0xBE, + 0x6E, 0x27, 0x37, 0xBD, 0x09, 0xF7, 0x1E, 0x3D, 0x1E, 0xDE, 0x23, 0xBD, + 0x3A, 0xCE, 0x0B, 0x3C, 0x16, 0x71, 0x28, 0xBE, 0x98, 0x52, 0xA5, 0xBE, + 0x0D, 0x75, 0xCD, 0x3A, 0x5E, 0x4C, 0x1B, 0x3D, 0x5A, 0x0D, 0xBE, 0x3C, + 0x7C, 0x15, 0xBF, 0x3D, 0x79, 0x17, 0x2B, 0xBE, 0xF5, 0x5B, 0xA9, 0x3D, + 0x78, 0x72, 0x46, 0x3C, 0x3B, 0xB2, 0x44, 0xBC, 0xDE, 0xD2, 0x1E, 0x3D, + 0x2A, 0xA1, 0xE1, 0x3D, 0x07, 0x4B, 0x0E, 0xBE, 0x53, 0x3B, 0xD0, 0x3C, + 0xEF, 0x59, 0x27, 0x3D, 0x18, 0x8C, 0x25, 0x3D, 0x2A, 0x58, 0x9A, 0xBB, + 0xAC, 0x0D, 0xC3, 0x3C, 0x69, 0x39, 0x25, 0x3E, 0x5B, 0x9D, 0x38, 0xBC, + 0xDA, 0xFF, 0x73, 0x3C, 0x89, 0xBD, 0xED, 0x3C, 0x6A, 0xC0, 0x91, 0xBD, + 0xDD, 0x2B, 0xF1, 0x3C, 0x9C, 0xE1, 0xB6, 0xBA, 0xF4, 0x83, 0x0D, 0x3D, + 0x42, 0x48, 0x3A, 0xBE, 0x1E, 0x2F, 0x84, 0x3D, 0x18, 0x25, 0x1A, 0x3D, + 0x47, 0xAD, 0x1F, 0xBC, 0x6E, 0x9A, 0xAB, 0x3C, 0x51, 0x26, 0xB4, 0xBD, + 0xF3, 0x84, 0xDC, 0x3D, 0x03, 0xA8, 0xA8, 0x3A, 0x8B, 0x4F, 0xC4, 0x3C, + 0xE6, 0xE6, 0x8F, 0xBD, 0x38, 0x3C, 0x38, 0xBF, 0x3C, 0xCF, 0xA6, 0xBD, + 0x2C, 0x26, 0x54, 0xBE, 0x9B, 0x6F, 0x83, 0x3E, 0x51, 0xEF, 0x5B, 0x3E, + 0x30, 0xF3, 0x6D, 0xBE, 0xED, 0x36, 0x35, 0xBF, 0x60, 0x86, 0x45, 0xBD, + 0x20, 0xC5, 0xC2, 0xBE, 0xE7, 0x2A, 0x2D, 0x3F, 0xBF, 0xCE, 0x24, 0x3E, + 0x42, 0xE3, 0x49, 0x3E, 0x61, 0x8D, 0x98, 0x3D, 0xA1, 0x9D, 0xBD, 0x3F, + 0xDB, 0x23, 0xEC, 0x3D, 0x8A, 0xD5, 0x09, 0x3E, 0x70, 0x25, 0x1D, 0x3F, + 0x72, 0x9B, 0x4E, 0x3E, 0x9C, 0x08, 0xBB, 0xBE, 0x4E, 0x20, 0xAA, 0x3E, + 0x57, 0x07, 0x3F, 0x3D, 0xF2, 0x92, 0xE0, 0x3D, 0x71, 0xD2, 0xBD, 0x3E, + 0x96, 0xDC, 0x0A, 0xBF, 0xB2, 0xBC, 0xC1, 0xBD, 0x3D, 0xE2, 0x4B, 0xBD, + 0xF8, 0x4F, 0x56, 0xBF, 0x17, 0x80, 0x78, 0x3E, 0x1E, 0x3A, 0xCB, 0x3E, + 0x61, 0x89, 0xB5, 0x3E, 0x57, 0x36, 0xA4, 0xBE, 0xC2, 0x02, 0xCF, 0xBD, + 0x75, 0x1F, 0xC8, 0x3E, 0xF1, 0x9F, 0x2D, 0xBE, 0xF3, 0x5F, 0x8F, 0xBF, + 0x05, 0x7E, 0x8E, 0xBD, 0x70, 0x12, 0xA5, 0x3C, 0x7A, 0x98, 0x23, 0xBD, + 0x93, 0xAC, 0xE0, 0x3D, 0xC2, 0xE8, 0x71, 0x3E, 0xE2, 0xCC, 0x45, 0xBE, + 0xDF, 0x5A, 0x6B, 0x3E, 0x59, 0x11, 0xA4, 0xBE, 0x15, 0xF8, 0x3F, 0x3C, + 0xBA, 0xA4, 0x46, 0xBE, 0x2F, 0x0C, 0xAA, 0xBD, 0xF8, 0xD9, 0x0A, 0x3F, + 0x55, 0x01, 0xB6, 0x3C, 0x9A, 0xAE, 0x78, 0x3E, 0x7D, 0x38, 0x79, 0xBC, + 0xBE, 0x71, 0x87, 0x3E, 0x5E, 0xAC, 0xD5, 0x3E, 0x3B, 0x9A, 0x18, 0xBC, + 0x9D, 0xB7, 0xD8, 0xBD, 0x10, 0x04, 0x11, 0x3D, 0x3C, 0xC2, 0x27, 0x3E, + 0x01, 0x67, 0x6A, 0x3E, 0xB5, 0xA6, 0x54, 0x3E, 0xC5, 0x36, 0x3C, 0x3E, + 0x16, 0xF5, 0xC2, 0x3E, 0xCE, 0x33, 0xB6, 0xBC, 0x70, 0x3F, 0xE8, 0xBE, + 0x2A, 0x15, 0xB6, 0x3E, 0x22, 0x76, 0xB5, 0xBE, 0x06, 0x91, 0x87, 0xBE, + 0x6F, 0xFB, 0xF6, 0xBD, 0x8F, 0xB1, 0x45, 0x3F, 0xD8, 0x36, 0x82, 0x3D, + 0x7A, 0x11, 0x88, 0x3D, 0xEE, 0xD1, 0x31, 0x3E, 0x68, 0xFD, 0xCA, 0xBE, + 0xB5, 0x18, 0xBF, 0xBE, 0x65, 0x6B, 0x23, 0xBD, 0x2E, 0x45, 0x35, 0xBE, + 0x78, 0xB3, 0x02, 0xBE, 0x0C, 0xBD, 0x4D, 0xBE, 0xC0, 0xEA, 0x7A, 0x3E, + 0xC2, 0x1F, 0x23, 0xBF, 0x3A, 0x26, 0x0D, 0xBE, 0x8C, 0x35, 0xD4, 0xBC, + 0x2C, 0x49, 0xA6, 0x3E, 0xC2, 0xB3, 0x14, 0xBE, 0xCA, 0x99, 0x68, 0x3D, + 0x3C, 0xB4, 0x76, 0x3E, 0xF4, 0x10, 0x53, 0x3D, 0x28, 0x1C, 0x00, 0xBE, + 0x7F, 0x6D, 0x79, 0x3E, 0x2F, 0x6B, 0xA2, 0xBD, 0xB2, 0xF7, 0x38, 0x3E, + 0x83, 0xD8, 0x8B, 0x3D, 0x80, 0x79, 0x01, 0x3E, 0x71, 0xF0, 0x83, 0x3E, + 0xEA, 0x13, 0xCF, 0xBE, 0x10, 0xA3, 0x9D, 0xBD, 0x9F, 0xC8, 0x59, 0xBE, + 0x96, 0x3F, 0xD4, 0xBE, 0xC1, 0xD9, 0x88, 0xBE, 0xE6, 0xA6, 0xA5, 0xBE, + 0xE6, 0x69, 0xAB, 0xBD, 0x29, 0xCD, 0x3F, 0x3F, 0xB8, 0xD9, 0x92, 0x3D, + 0xFB, 0x55, 0xAE, 0xBD, 0xBD, 0x7A, 0x2B, 0xBF, 0x80, 0x14, 0xA3, 0xBE, + 0xA7, 0x70, 0x87, 0xBE, 0xF4, 0xE3, 0x37, 0xBD, 0xF4, 0x7A, 0xA2, 0x3E, + 0x23, 0x8E, 0x03, 0xBE, 0x68, 0x6D, 0x28, 0xBE, 0x70, 0x78, 0xD0, 0x3C, + 0x80, 0x0B, 0xE6, 0x3D, 0xBD, 0x24, 0x5A, 0x3E, 0xEB, 0xC0, 0x86, 0x3E, + 0xB0, 0xF2, 0x69, 0xBD, 0x66, 0xA4, 0xD9, 0xBC, 0xD0, 0x4A, 0x36, 0x3F, + 0x96, 0xD9, 0x92, 0x3A, 0x9B, 0x29, 0xB9, 0x3E, 0xEC, 0x5B, 0x8B, 0x3E, + 0x04, 0xA1, 0x87, 0xBF, 0xFC, 0x12, 0xD8, 0x3E, 0x44, 0x98, 0x02, 0xBD, + 0x1A, 0xC5, 0xF2, 0xBE, 0x83, 0xDF, 0x1C, 0xBF, 0xEA, 0x82, 0xE2, 0xBC, + 0x28, 0x0F, 0x9E, 0x3F, 0xD5, 0xFA, 0x0C, 0xBE, 0x3C, 0xB6, 0xA3, 0xBD, + 0xAB, 0x85, 0x67, 0x3E, 0x3C, 0x70, 0x18, 0xBE, 0xE9, 0x32, 0x77, 0x3E, + 0x8D, 0x22, 0xBB, 0x3E, 0xFF, 0x6B, 0xC6, 0xBE, 0x0E, 0xAB, 0x2F, 0xBE, + 0x52, 0x0E, 0x3F, 0xBF, 0x95, 0x90, 0x89, 0x3E, 0x37, 0x44, 0x96, 0x3E, + 0x18, 0xA7, 0xEA, 0xBE, 0xA0, 0x8B, 0x7A, 0x3F, 0x72, 0x50, 0x88, 0xBD, + 0x86, 0xEB, 0xA2, 0xBD, 0x1B, 0x3F, 0x50, 0xBF, 0xBB, 0x38, 0x77, 0x3E, + 0xD6, 0x31, 0xBE, 0x3D, 0xEA, 0xAA, 0x3C, 0xBD, 0x46, 0x3F, 0xB4, 0x3C, + 0x30, 0x5C, 0xFB, 0xBD, 0x45, 0xDF, 0x09, 0x3D, 0x44, 0x36, 0x68, 0x3D, + 0x6C, 0xC1, 0x46, 0xBE, 0x22, 0xFA, 0x21, 0xBF, 0xF1, 0xF0, 0x1D, 0xBF, + 0x17, 0x63, 0x42, 0xBF, 0x1A, 0x5B, 0xC3, 0x3C, 0x63, 0xFB, 0xE5, 0xBD, + 0x24, 0x27, 0xCC, 0x3E, 0x2B, 0x49, 0x99, 0xBD, 0xC3, 0x45, 0x7A, 0x3E, + 0xD3, 0xBB, 0xA5, 0x3C, 0xC4, 0x1D, 0x39, 0xBE, 0x82, 0x31, 0x16, 0x3E, + 0x40, 0x2A, 0xCD, 0x3D, 0x13, 0xB5, 0x4E, 0xBF, 0x5E, 0x8F, 0xB8, 0x3E, + 0x97, 0x38, 0xA9, 0xBE, 0x18, 0x82, 0x8B, 0xBC, 0xA7, 0xD9, 0xBA, 0xBC, + 0x8D, 0xF2, 0x54, 0xBE, 0x86, 0x00, 0x0B, 0x3E, 0x27, 0x6C, 0x61, 0xBF, + 0xC3, 0xFE, 0x96, 0x3E, 0xC6, 0x82, 0x82, 0xBD, 0x88, 0x08, 0x65, 0xBE, + 0x3A, 0x6A, 0x2A, 0xBF, 0x32, 0x48, 0xFE, 0xBD, 0x9C, 0x01, 0x19, 0x3F, + 0xCB, 0x0D, 0x15, 0x3F, 0xE6, 0x2F, 0xA6, 0xBD, 0xA4, 0x53, 0x98, 0xBD, + 0xCD, 0x5D, 0x51, 0x3F, 0x64, 0x19, 0x05, 0x3C, 0x22, 0x1C, 0x9A, 0xBD, + 0x57, 0xEE, 0x14, 0xBF, 0x94, 0xB2, 0x33, 0xBF, 0x37, 0x08, 0x16, 0x3F, + 0x95, 0x8E, 0x8A, 0x3E, 0x6B, 0xD6, 0x47, 0x3D, 0xE2, 0x4D, 0x17, 0xBE, + 0xFA, 0xC1, 0x01, 0xBE, 0xDB, 0xE0, 0x99, 0xBF, 0x89, 0x15, 0x2B, 0x3E, + 0x29, 0x88, 0x9F, 0xBE, 0x6F, 0x7B, 0x1A, 0xBE, 0x23, 0xBE, 0x8C, 0xBD, + 0x42, 0x76, 0x57, 0x3E, 0xE0, 0xD7, 0x4A, 0x3E, 0x94, 0x8C, 0x27, 0xBC, + 0x2D, 0x00, 0x90, 0xBD, 0x2C, 0x19, 0xBE, 0x3D, 0xAE, 0xE3, 0x8B, 0x3D, + 0x76, 0x48, 0x55, 0x3D, 0xF7, 0x1C, 0x00, 0x3E, 0x44, 0x6B, 0x5B, 0xBD, + 0xD7, 0x07, 0x7C, 0x3D, 0x1E, 0xC6, 0xDB, 0xBC, 0xD0, 0x19, 0x8A, 0x3D, + 0x29, 0xCF, 0x30, 0x3E, 0x32, 0x58, 0x31, 0x3D, 0xF8, 0x80, 0xA7, 0xBC, + 0x3D, 0x28, 0xEA, 0x3C, 0x4D, 0xD2, 0x61, 0xBE, 0x2B, 0x91, 0x98, 0x3D, + 0x8B, 0x2D, 0xAE, 0x3C, 0x63, 0x72, 0x89, 0x3D, 0xF7, 0x1F, 0x10, 0xBE, + 0xD5, 0x5D, 0xD2, 0xBB, 0x76, 0x11, 0x14, 0xBE, 0x11, 0x9A, 0xF3, 0xBD, + 0x60, 0x3F, 0x65, 0x3D, 0x52, 0x62, 0xD6, 0xBC, 0xC8, 0x56, 0x78, 0xBD, + 0xC1, 0x72, 0xF0, 0xBD, 0xAF, 0x1D, 0x2B, 0xBD, 0x76, 0x7D, 0xF3, 0x3D, + 0xE6, 0xD5, 0x21, 0xBE, 0x4E, 0xC4, 0x8C, 0xBD, 0x4C, 0x6F, 0x90, 0x3D, + 0x60, 0xED, 0xF2, 0x3D, 0xBA, 0xCC, 0x90, 0x3B, 0xEA, 0xAA, 0xFE, 0xBB, + 0x83, 0xFE, 0x08, 0x3D, 0x3D, 0x70, 0xC0, 0x3C, 0xE1, 0xFC, 0x0B, 0xBE, + 0x2F, 0x59, 0x80, 0x3C, 0xA3, 0x2B, 0xF1, 0xBC, 0xF9, 0xB1, 0xEA, 0x3B, + 0xB9, 0x21, 0x25, 0x3D, 0x38, 0x09, 0x4A, 0xBE, 0x78, 0xE5, 0xC8, 0x3D, + 0x40, 0xF8, 0x20, 0x3D, 0xBB, 0xC9, 0x28, 0x3D, 0xF7, 0x84, 0x10, 0x3D, + 0x89, 0x7B, 0x01, 0xBE, 0x5A, 0x72, 0x3F, 0x3D, 0x82, 0x6C, 0x4E, 0x3D, + 0xA1, 0x39, 0x91, 0x3D, 0xC6, 0xB7, 0x8F, 0xBB, 0x6D, 0xC8, 0x07, 0xBD, + 0x83, 0xE9, 0x44, 0xBD, 0xE6, 0x7A, 0xDF, 0xBC, 0x7A, 0x9B, 0x20, 0xBB, + 0x25, 0x32, 0x10, 0x3D, 0xAE, 0xBC, 0x04, 0x3D, 0x3F, 0x74, 0x0F, 0xBF, + 0x8F, 0x5A, 0x01, 0xBD, 0xAB, 0x88, 0xD0, 0x3D, 0xEC, 0xC3, 0x00, 0x3C, + 0x5B, 0xC4, 0x80, 0x3D, 0x4A, 0x59, 0xCB, 0xBD, 0x56, 0x1B, 0xF1, 0xBD, + 0x19, 0x89, 0x2D, 0x3D, 0x8F, 0x66, 0x82, 0x3D, 0x82, 0xE8, 0xB0, 0xBD, + 0x43, 0xC8, 0xBB, 0x3B, 0xA8, 0xF0, 0xBC, 0x3D, 0x71, 0x5E, 0xB6, 0xBD, + 0xCB, 0x8E, 0x4F, 0x3D, 0xDE, 0xAE, 0x10, 0xBA, 0x28, 0x87, 0xDD, 0x3C, + 0xC5, 0xD6, 0x5C, 0xBE, 0x6D, 0xC4, 0xA4, 0x3D, 0xD3, 0xA5, 0xC7, 0xBD, + 0xDA, 0x28, 0xEE, 0x3C, 0xBD, 0xD7, 0xE8, 0xBC, 0x19, 0xC8, 0x1D, 0x3C, + 0x6A, 0x66, 0xB5, 0x3D, 0xA0, 0x27, 0x49, 0xBD, 0x77, 0x1D, 0x57, 0xBD, + 0xB3, 0x9D, 0x7D, 0xBD, 0x47, 0x44, 0xDD, 0x3C, 0xD5, 0xF5, 0x0F, 0x3E, + 0xAB, 0xA7, 0xFA, 0x3D, 0x05, 0x3E, 0xE3, 0x3C, 0x13, 0x19, 0x16, 0x3C, + 0x10, 0x7E, 0x58, 0xBD, 0x40, 0xAB, 0x08, 0x3F, 0xCA, 0x13, 0x4F, 0x3D, + 0x0C, 0x35, 0x99, 0xBD, 0xB8, 0xDA, 0x91, 0xBD, 0x05, 0x99, 0x1C, 0xBD, + 0x07, 0x91, 0xA8, 0xBD, 0xE4, 0x12, 0xC0, 0x3C, 0xB6, 0xAC, 0xD8, 0x3C, + 0x51, 0xBA, 0x45, 0x3D, 0xE4, 0x49, 0xCF, 0x3B, 0x18, 0xB4, 0xA8, 0x3C, + 0x40, 0x1A, 0x1F, 0x3C, 0xC0, 0x31, 0x14, 0xBD, 0x43, 0x58, 0x41, 0xBB, + 0x95, 0xE7, 0x23, 0xBC, 0x43, 0x66, 0x6C, 0x3D, 0x20, 0x0F, 0x2E, 0xBE, + 0x05, 0xF8, 0x1C, 0x3E, 0x02, 0x3A, 0x35, 0xBE, 0xAA, 0x7E, 0x19, 0x3C, + 0x27, 0xF8, 0xC1, 0x3C, 0x5B, 0xE6, 0x23, 0xBE, 0x8D, 0x28, 0x05, 0x3E, + 0x3A, 0xEB, 0x10, 0xBD, 0x91, 0xB7, 0xF7, 0x3C, 0xB4, 0xBF, 0xD9, 0xBD, + 0x9D, 0xE8, 0x1D, 0x3D, 0xC8, 0x2E, 0x26, 0x3E, 0x8E, 0xCE, 0xDE, 0xBC, + 0x65, 0xC2, 0xF3, 0x3C, 0x42, 0xA3, 0x60, 0x3D, 0x45, 0x43, 0xF8, 0x3C, + 0x16, 0x1E, 0xD2, 0xBE, 0x1F, 0x5A, 0x96, 0x3C, 0x57, 0x6C, 0x7A, 0xBD, + 0xD2, 0x46, 0x4F, 0xBE, 0x66, 0xF4, 0x06, 0xBE, 0x8D, 0x16, 0x51, 0xBE, + 0x48, 0x21, 0x43, 0x3E, 0x02, 0xE1, 0x52, 0x3D, 0x61, 0xFD, 0x61, 0x3D, + 0xA3, 0xA0, 0xC2, 0x3D, 0x22, 0x6F, 0x70, 0x3D, 0xC6, 0x73, 0x2A, 0xBE, + 0xB1, 0x11, 0x96, 0xBE, 0xF4, 0x3D, 0x90, 0xBF, 0x90, 0x3D, 0x50, 0x3C, + 0xED, 0x21, 0x85, 0x3D, 0x7F, 0x63, 0x58, 0x3E, 0x62, 0x0E, 0xD3, 0xBE, + 0x04, 0x59, 0x2E, 0x3F, 0x9E, 0x7D, 0xAA, 0xBF, 0x34, 0x3E, 0xF7, 0x3C, + 0x96, 0xA0, 0xCB, 0x3D, 0x58, 0x9E, 0x1E, 0xBF, 0xF9, 0xF6, 0xFF, 0xBD, + 0xBD, 0xD1, 0x45, 0xBE, 0xAA, 0x3F, 0x5C, 0x3F, 0x0F, 0x18, 0xE1, 0xBD, + 0x16, 0xF9, 0xAB, 0xBB, 0x98, 0x65, 0x8C, 0x3D, 0x54, 0xE5, 0x10, 0x3E, + 0x18, 0x1E, 0xE9, 0xBE, 0x63, 0x67, 0x6F, 0x3D, 0x69, 0x30, 0x71, 0xBE, + 0xB2, 0xA3, 0xD9, 0x3C, 0x20, 0x75, 0x9E, 0xBE, 0x95, 0xC1, 0x30, 0xBE, + 0x30, 0xF2, 0xF3, 0xBC, 0xB4, 0x63, 0x0F, 0xBE, 0xE6, 0x6C, 0xC4, 0x3D, + 0x65, 0xEB, 0xEC, 0x3D, 0x77, 0xBC, 0x80, 0xBC, 0x15, 0xB5, 0xFD, 0xBD, + 0x41, 0x97, 0x7C, 0x3E, 0xE9, 0x11, 0x50, 0xBE, 0x57, 0xBF, 0x68, 0x3E, + 0x79, 0xC1, 0x39, 0xBE, 0xB3, 0x45, 0x85, 0x3C, 0x67, 0x45, 0xA0, 0x3E, + 0x27, 0x26, 0xC5, 0xBE, 0x79, 0x12, 0xA6, 0x3E, 0x93, 0x2A, 0xC3, 0xBE, + 0xF2, 0x95, 0x53, 0x3F, 0xA2, 0xC3, 0x15, 0x3D, 0x9D, 0xC5, 0x92, 0x3E, + 0x80, 0x23, 0xCB, 0xBE, 0x9B, 0xAB, 0x88, 0x3D, 0x99, 0xF4, 0x51, 0xBE, + 0x54, 0x6B, 0x05, 0xBF, 0x06, 0x25, 0x85, 0xBE, 0x4C, 0x93, 0x33, 0xBE, + 0xEA, 0x07, 0xEC, 0xBD, 0x65, 0x80, 0x8B, 0x3C, 0xA1, 0x7C, 0xAC, 0xBF, + 0x3F, 0xCB, 0x06, 0xBD, 0xC0, 0x8D, 0xB1, 0x3E, 0xD6, 0xEC, 0xD8, 0x3D, + 0xCB, 0x07, 0x47, 0x3C, 0x72, 0x6B, 0x93, 0x3F, 0x5E, 0xAF, 0x38, 0xBF, + 0x13, 0x81, 0x03, 0x3F, 0x06, 0x9F, 0xCB, 0x3E, 0x7F, 0xCD, 0x19, 0xBF, + 0x63, 0x33, 0xD9, 0x3F, 0xE6, 0xE4, 0xA0, 0x3F, 0xEE, 0xED, 0x33, 0x3E, + 0xDF, 0xE9, 0x89, 0x3F, 0x9A, 0x1E, 0x1D, 0xBF, 0xB4, 0xF2, 0x8A, 0xBD, + 0x91, 0x4B, 0x6E, 0xBF, 0xFA, 0x42, 0x8C, 0xBD, 0x60, 0x57, 0x5C, 0xC0, + 0x84, 0x20, 0xE5, 0x3E, 0x74, 0x6D, 0x6E, 0x3F, 0x89, 0x27, 0x40, 0x3F, + 0x02, 0x42, 0x23, 0xBF, 0x7F, 0x11, 0x3C, 0x3F, 0xD3, 0x99, 0x66, 0xBE, + 0x4D, 0x1F, 0x82, 0x3E, 0x22, 0x53, 0xC0, 0x3C, 0x77, 0xDB, 0x85, 0xBE, + 0x1B, 0x20, 0x16, 0x3F, 0x90, 0x99, 0x20, 0xBD, 0xD0, 0x07, 0xDD, 0x3E, + 0xDD, 0x28, 0x6E, 0xBF, 0x4F, 0x09, 0xEE, 0x3D, 0xBE, 0xDF, 0x09, 0xC0, + 0xCC, 0x29, 0x40, 0x3F, 0xD2, 0x90, 0x94, 0x3E, 0x05, 0x67, 0x2C, 0x3F, + 0xA8, 0x1C, 0x2D, 0x3E, 0xB0, 0x24, 0x43, 0x3D, 0x8E, 0x4F, 0x81, 0xBD, + 0xCE, 0xC5, 0xD0, 0xBD, 0xDA, 0x63, 0xFE, 0x3B, 0x7E, 0xD2, 0xC2, 0x3B, + 0x88, 0xD8, 0x05, 0xBD, 0x19, 0xE6, 0x36, 0x3D, 0x38, 0x25, 0x6A, 0xBB, + 0xFA, 0xE6, 0x62, 0xBD, 0x7F, 0xF7, 0xA2, 0x3D, 0x8A, 0x5B, 0x0E, 0x3D, + 0x06, 0x6A, 0x88, 0x3B, 0x72, 0x31, 0x1E, 0xBE, 0x41, 0xCB, 0x9A, 0x3B, + 0x64, 0xB1, 0xBE, 0xBD, 0xC9, 0x10, 0x6C, 0x3D, 0xAA, 0x0C, 0xAE, 0xBC, + 0x6E, 0x14, 0x06, 0x3D, 0xF0, 0xCB, 0x0D, 0x3C, 0x90, 0x68, 0x8E, 0xBD, + 0x5E, 0xD1, 0x2A, 0x3C, 0x76, 0x6C, 0x09, 0xBE, 0x9D, 0x06, 0x93, 0x3D, + 0xD3, 0xA5, 0x27, 0x3D, 0x16, 0xCD, 0x23, 0x3D, 0xAD, 0xCA, 0x8A, 0x3C, + 0x69, 0x22, 0x1C, 0xBD, 0x3B, 0x8C, 0x3E, 0x3D, 0x96, 0x2C, 0x32, 0x3E, + 0xCD, 0x96, 0x94, 0xBC, 0xD2, 0x60, 0xB2, 0xBD, 0x0B, 0xEF, 0x06, 0x3F, + 0x4C, 0x19, 0x2D, 0xBE, 0x8C, 0x22, 0x2B, 0x3F, 0x09, 0xD1, 0x23, 0x3F, + 0xB8, 0xF7, 0x88, 0x3C, 0x4E, 0x55, 0x27, 0xBE, 0x40, 0x88, 0x20, 0x3D, + 0x9C, 0xBB, 0x19, 0xBE, 0x7D, 0x61, 0xE8, 0xBD, 0xC0, 0x84, 0x0E, 0xBE, + 0x19, 0xF9, 0xE1, 0xBD, 0x5A, 0x95, 0x50, 0x3D, 0x28, 0x8A, 0x71, 0x3E, + 0xEF, 0x4F, 0xB0, 0xBD, 0x64, 0x49, 0x3A, 0xBF, 0x9A, 0x0F, 0xA0, 0x3E, + 0x70, 0x81, 0x85, 0xBE, 0x7B, 0x41, 0xE8, 0x3C, 0x95, 0x58, 0x09, 0x3F, + 0x26, 0x10, 0x59, 0xBE, 0x02, 0xBB, 0xFC, 0xBB, 0x35, 0x47, 0x1C, 0x3D, + 0x3D, 0xD7, 0x22, 0xBF, 0x25, 0x07, 0xB7, 0x3D, 0xEC, 0x5E, 0xA4, 0x3E, + 0x6F, 0x2F, 0x5B, 0x3E, 0x4D, 0x06, 0x01, 0x3E, 0xBD, 0x2F, 0x1F, 0xBD, + 0xD2, 0x89, 0x38, 0xBE, 0xD9, 0x6F, 0x0D, 0xBF, 0x07, 0xFB, 0x6E, 0xBE, + 0x8E, 0x25, 0x5D, 0xBD, 0xAC, 0x83, 0x4A, 0xBF, 0xB5, 0x8A, 0x67, 0x3E, + 0xA3, 0x76, 0x8B, 0xBE, 0x18, 0x02, 0xF2, 0xBD, 0xFD, 0xC0, 0xCD, 0xBE, + 0x68, 0x2F, 0xAE, 0x3E, 0x12, 0x68, 0xA6, 0xBD, 0xD7, 0xD1, 0xCB, 0x3E, + 0xC3, 0x0C, 0x88, 0x3E, 0x8E, 0x77, 0xE5, 0x3D, 0x28, 0x2C, 0x98, 0xBE, + 0x3A, 0x42, 0xA8, 0xBE, 0xA3, 0x60, 0x15, 0xBF, 0x7A, 0x65, 0xB0, 0xBF, + 0x7E, 0x99, 0x4F, 0xBF, 0xE6, 0x84, 0x48, 0x3F, 0x01, 0xA9, 0x81, 0xBE, + 0x19, 0x84, 0x9A, 0xBE, 0x47, 0xBD, 0x3B, 0xBF, 0xBB, 0xAF, 0x93, 0x3E, + 0x04, 0x1E, 0xFC, 0x3E, 0x5C, 0xD8, 0xBA, 0x3E, 0x8B, 0x37, 0x1A, 0x3F, + 0xDE, 0xB4, 0x2C, 0x3E, 0x0E, 0x40, 0x03, 0xBF, 0x5E, 0xAE, 0x4F, 0xBE, + 0xC8, 0x0B, 0xA0, 0xBE, 0x19, 0x51, 0x49, 0x3F, 0x90, 0x81, 0xC2, 0xBD, + 0x0B, 0x45, 0xB8, 0x3D, 0xED, 0x23, 0x9D, 0x3F, 0xBD, 0xE6, 0xB3, 0x3E, + 0x0E, 0xF8, 0x4F, 0x3E, 0x20, 0x1E, 0xA1, 0xBD, 0xC9, 0xBF, 0x93, 0x3D, + 0x4B, 0xDA, 0xD3, 0xBC, 0xBC, 0xB1, 0x87, 0x3D, 0x0C, 0xB3, 0x7D, 0x3D, + 0x26, 0xA7, 0xD1, 0xBB, 0x26, 0x2B, 0x08, 0x3C, 0x7A, 0x5C, 0x41, 0x3E, + 0x3B, 0x4B, 0x92, 0xBB, 0x07, 0x17, 0x23, 0x3E, 0x38, 0xDD, 0x37, 0xBC, + 0xC1, 0xA8, 0x80, 0xBD, 0x0D, 0x80, 0x8B, 0xBD, 0xD7, 0xF4, 0xFA, 0xBD, + 0xFA, 0x11, 0xB9, 0xBD, 0xEC, 0xCB, 0x10, 0xBC, 0x4A, 0x16, 0x0B, 0xBC, + 0xDE, 0xD7, 0x50, 0x3E, 0x43, 0xC8, 0xF1, 0x3B, 0x2A, 0x48, 0xA7, 0xBD, + 0x87, 0x0C, 0x90, 0x3C, 0xEE, 0xF0, 0x22, 0xBE, 0xB3, 0x7E, 0xEE, 0x3D, + 0x7B, 0xD6, 0xCF, 0xBC, 0xD1, 0x01, 0xDF, 0xBD, 0xF5, 0x7F, 0x4F, 0x3A, + 0x22, 0x97, 0xAE, 0xBD, 0xAA, 0x9E, 0x2E, 0xBD, 0xEA, 0xD9, 0xDD, 0x3E, + 0xD4, 0x47, 0xB1, 0xBD, 0x71, 0x0C, 0x9D, 0xBC, 0x02, 0x24, 0xE5, 0xBC, + 0x8E, 0xB6, 0xED, 0x3D, 0x9E, 0xEB, 0xF8, 0xBD, 0xBD, 0x5C, 0xBC, 0x3D, + 0xA1, 0x7A, 0x25, 0x3D, 0xB2, 0x54, 0xF9, 0x3C, 0xA7, 0xE0, 0x2F, 0x3D, + 0x88, 0xD3, 0xD4, 0xBC, 0x3F, 0xDA, 0x30, 0xBE, 0xF3, 0x0F, 0x98, 0xBD, + 0xF1, 0x74, 0x3C, 0x3D, 0xE9, 0xB5, 0xFC, 0x3C, 0x8D, 0x03, 0x49, 0x3D, + 0x93, 0xDF, 0x83, 0xBD, 0x0A, 0xD3, 0xC6, 0xBB, 0xDE, 0x7E, 0xCC, 0x3C, + 0xDD, 0x04, 0xAD, 0x3C, 0x21, 0x1E, 0xEC, 0xBB, 0x8A, 0x13, 0xA2, 0xBB, + 0x4E, 0xE2, 0x42, 0x3B, 0xAC, 0x71, 0x8E, 0x3C, 0xAC, 0x44, 0x4F, 0xBD, + 0x62, 0x36, 0xCB, 0xBD, 0x32, 0xAE, 0xBB, 0x3C, 0x40, 0x8F, 0x32, 0xBD, + 0xDD, 0x97, 0xB2, 0x3D, 0x27, 0x58, 0x9C, 0xBC, 0x7A, 0x16, 0x9D, 0x3D, + 0x05, 0x01, 0x3C, 0x3D, 0xBD, 0x7A, 0xCB, 0x3E, 0xED, 0xFE, 0xEC, 0xBC, + 0x35, 0xA6, 0xAD, 0x3D, 0xD6, 0xB8, 0xE5, 0x3C, 0xCF, 0x84, 0x83, 0x3E, + 0xA5, 0xD5, 0x71, 0xBF, 0x64, 0x4A, 0x80, 0x3E, 0xD0, 0x8E, 0x53, 0x3C, + 0xF7, 0xE5, 0x7C, 0xBE, 0xC4, 0xAD, 0xE9, 0x3D, 0xD2, 0x1A, 0x29, 0x3E, + 0x3A, 0xD8, 0xFE, 0xBD, 0x35, 0x46, 0x87, 0x3E, 0x49, 0x0F, 0x36, 0x3E, + 0x41, 0x1A, 0x84, 0x3E, 0x17, 0x34, 0xF5, 0xBD, 0x72, 0x82, 0x03, 0x3D, + 0xFC, 0x50, 0x20, 0x3F, 0x02, 0x89, 0xDD, 0xBD, 0x7F, 0x13, 0xB3, 0xBD, + 0x77, 0xDD, 0xB5, 0x3D, 0xCE, 0xCA, 0x2D, 0xBE, 0xC2, 0xE2, 0x57, 0x3E, + 0xE8, 0x80, 0x1B, 0xBE, 0x5E, 0x3E, 0x95, 0x3E, 0xCA, 0x7C, 0x84, 0xBE, + 0xCA, 0x77, 0x33, 0xBD, 0xA6, 0xB0, 0x4E, 0x3E, 0x3E, 0x04, 0x5B, 0x3E, + 0x00, 0xED, 0x07, 0xBE, 0x7B, 0xA8, 0xFF, 0xBD, 0x5E, 0x99, 0x95, 0x3E, + 0xA1, 0xA8, 0x62, 0xBF, 0x26, 0x7D, 0x21, 0x3E, 0x8C, 0x98, 0xB0, 0x3D, + 0x4F, 0x21, 0xC1, 0xBE, 0xE0, 0x9F, 0x22, 0xBE, 0xF7, 0xB6, 0x47, 0x3F, + 0x17, 0xE4, 0x61, 0xBF, 0x43, 0xD3, 0xF9, 0x3D, 0xD1, 0xD4, 0xBA, 0x3E, + 0x00, 0x0D, 0x5B, 0xBF, 0x20, 0xA0, 0x54, 0x3F, 0xCC, 0xCF, 0xEE, 0xBD, + 0x37, 0xFE, 0x38, 0xBF, 0xAB, 0x5F, 0x1E, 0xBE, 0x94, 0x61, 0x13, 0xBD, + 0xBE, 0xEC, 0x98, 0x3F, 0x79, 0xB9, 0xD5, 0xBF, 0xB3, 0xAA, 0x3E, 0x3F, + 0xF6, 0x5F, 0xCD, 0xBE, 0x99, 0x70, 0x5F, 0xBE, 0x8A, 0x90, 0x01, 0xBE, + 0x35, 0x5F, 0x14, 0xBE, 0xF3, 0xB7, 0xB8, 0xBE, 0xD3, 0xA4, 0xA0, 0xBD, + 0x41, 0x05, 0xD9, 0xBD, 0xF5, 0xD6, 0x14, 0x3E, 0x29, 0xC9, 0x3D, 0x3F, + 0x00, 0xC1, 0x42, 0xBF, 0x3F, 0xC4, 0x6F, 0xBE, 0xDF, 0x04, 0x5D, 0xBF, + 0x21, 0xC4, 0x82, 0xBC, 0xF6, 0xBE, 0xA9, 0xBE, 0x20, 0x6E, 0x74, 0x3D, + 0x4C, 0x82, 0x5C, 0xBE, 0x9B, 0x54, 0xED, 0xBE, 0xE7, 0x78, 0x99, 0x3F, + 0x28, 0x4D, 0x5E, 0x3E, 0xB4, 0x06, 0x48, 0x3F, 0x6A, 0xF0, 0xD3, 0xBD, + 0x5D, 0x6D, 0xF4, 0x3D, 0xC3, 0x27, 0x35, 0xBD, 0xB7, 0x80, 0xAD, 0x3D, + 0x8E, 0xFE, 0x25, 0xBF, 0xC2, 0x1F, 0x50, 0x3D, 0x38, 0x6C, 0xE5, 0x3E, + 0x45, 0xD4, 0x79, 0x3E, 0x72, 0x13, 0x09, 0x3B, 0xA2, 0x34, 0x55, 0x3E, + 0x37, 0xB4, 0xD2, 0x3D, 0x7C, 0x3D, 0xF1, 0xBE, 0x4B, 0x61, 0x92, 0xBE, + 0xFC, 0x5E, 0x92, 0x3E, 0xC1, 0xA4, 0xA5, 0x3C, 0x93, 0x84, 0xB7, 0x3F, + 0xF6, 0x64, 0x2E, 0x3C, 0x3B, 0xC6, 0x48, 0xBC, 0x92, 0xA2, 0x36, 0x3E, + 0x6A, 0x83, 0xE8, 0xBE, 0x91, 0xFC, 0x6A, 0xBE, 0x13, 0x6F, 0x01, 0xBD, + 0x64, 0xD1, 0x47, 0xBE, 0x0B, 0x41, 0x0C, 0x3E, 0x7A, 0x6C, 0xA7, 0x3E, + 0x45, 0xFD, 0xB5, 0x3C, 0xE7, 0x14, 0xA8, 0x3C, 0x5A, 0x71, 0xFC, 0x3E, + 0xBB, 0xC8, 0x03, 0x3F, 0xA1, 0x86, 0x92, 0x3E, 0xFB, 0x13, 0xBC, 0x3C, + 0x1A, 0x31, 0x1A, 0xBF, 0xB9, 0xAF, 0x0E, 0xBE, 0xF4, 0x47, 0xEF, 0xBD, + 0xCA, 0xE9, 0x25, 0x3B, 0x83, 0x06, 0x8C, 0xBF, 0x43, 0x4B, 0x0D, 0xBF, + 0xBA, 0x13, 0xFD, 0x3E, 0xE8, 0x8F, 0x1F, 0xBD, 0x71, 0xFB, 0xE5, 0x3D, + 0xB7, 0x09, 0xCA, 0x3C, 0x9A, 0x01, 0xA5, 0x3D, 0x22, 0x9B, 0x20, 0x3F, + 0x6D, 0x34, 0x4E, 0x3E, 0x71, 0x68, 0x5F, 0x3D, 0xF8, 0x6A, 0x94, 0xBD, + 0xFE, 0xB6, 0x82, 0xBD, 0x90, 0x64, 0x16, 0xBF, 0xF4, 0x90, 0x09, 0x3F, + 0x77, 0x0C, 0xD9, 0x3C, 0x65, 0xC2, 0xA7, 0xBC, 0x39, 0xC2, 0xCE, 0x3C, + 0x79, 0x4B, 0x9A, 0x3A, 0xA1, 0xE3, 0x39, 0x3F, 0x2F, 0xF6, 0x44, 0xBE, + 0x10, 0x77, 0x87, 0xBE, 0x0B, 0xD3, 0x28, 0xBF, 0xC3, 0x77, 0x34, 0x3E, + 0x9A, 0xC8, 0x9F, 0xBE, 0x6E, 0x81, 0x45, 0xBC, 0xED, 0x22, 0x1E, 0x3E, + 0x13, 0x68, 0xE4, 0x3C, 0x35, 0x19, 0xFA, 0x3D, 0x52, 0x48, 0x29, 0xBD, + 0xBF, 0xD1, 0x02, 0x3E, 0x7A, 0x83, 0x93, 0x3D, 0x5C, 0x29, 0x60, 0xBC, + 0xC1, 0x4D, 0xCD, 0xBA, 0x0F, 0xB1, 0x87, 0x3D, 0x84, 0x42, 0x6D, 0xBE, + 0x99, 0x36, 0x49, 0xBD, 0xDC, 0x0C, 0x5D, 0xBD, 0xE0, 0xF4, 0xCB, 0x3D, + 0xCE, 0x4E, 0x4C, 0xBD, 0x49, 0x1B, 0x1F, 0xBA, 0x0E, 0x1B, 0xA2, 0xBD, + 0x6B, 0xAD, 0xB3, 0x3D, 0x67, 0x4F, 0x6B, 0x3D, 0x60, 0xEE, 0x6D, 0x3C, + 0x7C, 0x27, 0x06, 0xBE, 0x12, 0x38, 0xE1, 0x3C, 0x25, 0x68, 0x0C, 0x3D, + 0xAB, 0xF4, 0x50, 0xBD, 0xEE, 0xFD, 0x2F, 0x3E, 0x85, 0x6C, 0x90, 0xBD, + 0x8E, 0x95, 0x3C, 0x3E, 0x54, 0xD7, 0xA0, 0x3D, 0x6C, 0x92, 0x00, 0x3D, + 0x78, 0x13, 0x4F, 0xBE, 0x56, 0x03, 0x45, 0x3E, 0x78, 0x89, 0xE9, 0x3D, + 0x90, 0xFB, 0xF2, 0x3D, 0x01, 0x87, 0x5A, 0xBE, 0x82, 0x8A, 0x9B, 0xBD, + 0x6F, 0x73, 0xC7, 0xBE, 0x83, 0x97, 0x00, 0x3F, 0xE0, 0xAB, 0x8A, 0xBF, + 0x6D, 0x7A, 0x31, 0x3E, 0x9A, 0xDD, 0x39, 0x3D, 0x97, 0xDD, 0xD1, 0x3E, + 0x2E, 0x55, 0xF6, 0x3E, 0x58, 0xAB, 0x6B, 0xBD, 0xC6, 0xD5, 0xDE, 0xBE, + 0xDA, 0xB0, 0x54, 0x3E, 0xE3, 0xC5, 0x31, 0xBD, 0x19, 0xC3, 0x11, 0x3F, + 0xCE, 0x29, 0x1E, 0x3F, 0xEC, 0x35, 0x28, 0x3F, 0xA7, 0x0A, 0x9E, 0xBE, + 0x18, 0x05, 0xFC, 0x3E, 0x47, 0x0E, 0xAD, 0xBC, 0x94, 0x47, 0x70, 0x3E, + 0xF2, 0x7C, 0x07, 0x3F, 0xAD, 0x60, 0x77, 0xBE, 0xF1, 0xC8, 0x0D, 0x3E, + 0xCE, 0x36, 0x08, 0xBF, 0xDB, 0x90, 0xFC, 0xBE, 0xB5, 0x20, 0xC6, 0xBE, + 0x4F, 0x52, 0x4D, 0xBE, 0x0C, 0xB6, 0x91, 0xBB, 0x62, 0x1E, 0xC4, 0xBE, + 0x92, 0x54, 0xA7, 0x3E, 0xEE, 0x10, 0x56, 0xBE, 0xC3, 0x06, 0x22, 0xBD, + 0x38, 0xAB, 0x0D, 0x3E, 0xF1, 0x47, 0x41, 0xBF, 0xDD, 0xDD, 0x2C, 0xBE, + 0x68, 0xC2, 0x46, 0x3E, 0x07, 0x10, 0x0E, 0x3F, 0xAD, 0x65, 0x06, 0x3C, + 0x5F, 0x67, 0x80, 0x3E, 0xFA, 0xD7, 0x93, 0x3E, 0xA9, 0x9A, 0x33, 0xBF, + 0x12, 0x40, 0xFD, 0x3E, 0x9D, 0xDE, 0x18, 0x3F, 0x55, 0x18, 0x23, 0xBE, + 0x93, 0x3D, 0x9B, 0xBD, 0x39, 0x9A, 0x08, 0xBF, 0xC7, 0x56, 0x3F, 0xBF, + 0xC8, 0xDB, 0x61, 0xBE, 0xD6, 0x30, 0xEA, 0x3E, 0x04, 0x39, 0x1C, 0xBE, + 0x57, 0x1F, 0x14, 0xBB, 0x97, 0x1A, 0x56, 0xBE, 0xA2, 0xE6, 0x10, 0xBF, + 0xD8, 0x4D, 0xDC, 0xBB, 0x80, 0xF8, 0x89, 0xBE, 0x27, 0x6C, 0x0D, 0xBF, + 0xFA, 0xE7, 0x32, 0x3D, 0x8D, 0x6B, 0xE8, 0xBD, 0x77, 0xD4, 0xC0, 0xBE, + 0x91, 0xFC, 0x4C, 0x3E, 0x29, 0xCD, 0x89, 0x3E, 0x9E, 0xA0, 0x64, 0x3D, + 0x05, 0xCE, 0x77, 0x3F, 0xC4, 0x27, 0xBD, 0x3E, 0xBF, 0x16, 0x83, 0xBC, + 0xA2, 0x6D, 0xC0, 0x3E, 0x23, 0x8C, 0x2A, 0xBF, 0xDE, 0x53, 0x33, 0xBE, + 0x07, 0x63, 0x0E, 0xBF, 0xBB, 0x09, 0x93, 0x3D, 0xD6, 0x74, 0x56, 0xBC, + 0x37, 0x16, 0xE3, 0x3E, 0xF8, 0x66, 0xBF, 0x3C, 0x77, 0x97, 0x45, 0xBE, + 0x2D, 0x58, 0x0C, 0x3F, 0x81, 0x50, 0xEE, 0x3B, 0xDB, 0x2C, 0x20, 0xBD, + 0x28, 0x18, 0xA4, 0x3E, 0xF0, 0xBA, 0xFC, 0x3E, 0xEA, 0xEB, 0xAD, 0x3E, + 0x79, 0x05, 0x56, 0x3D, 0x8F, 0x6F, 0x8E, 0xBE, 0x97, 0x1D, 0x6E, 0x3C, + 0x6D, 0x8D, 0x2F, 0xBC, 0x0E, 0x5A, 0xA3, 0x3D, 0x10, 0x6E, 0x41, 0xBD, + 0xCD, 0xAF, 0x47, 0xBE, 0x3B, 0xE0, 0x20, 0xBD, 0xC4, 0xA6, 0x07, 0xBF, + 0x7D, 0xBC, 0xB6, 0xBE, 0x05, 0x66, 0xB4, 0xBE, 0xCF, 0xD7, 0xE3, 0x3E, + 0xC2, 0x1B, 0x62, 0x3E, 0x8F, 0x56, 0x78, 0x3D, 0x72, 0xF7, 0x2B, 0xBF, + 0x34, 0x77, 0x15, 0x3D, 0x5E, 0xE5, 0x53, 0x3E, 0x29, 0xE9, 0x55, 0x3E, + 0x54, 0x65, 0x9F, 0xBD, 0x9E, 0xE0, 0x10, 0xBD, 0xE2, 0x8E, 0xD3, 0x3D, + 0xD2, 0xCE, 0x75, 0x3D, 0x4F, 0xB5, 0xA0, 0xBD, 0xF4, 0xFE, 0xC3, 0x3D, + 0xC6, 0xD9, 0x64, 0xBE, 0x2B, 0x74, 0x90, 0xBD, 0xD6, 0x6A, 0xFB, 0xBE, + 0x85, 0x9C, 0x10, 0xBE, 0xAD, 0xB9, 0x4E, 0x3C, 0x8B, 0xD8, 0x35, 0x3E, + 0x3F, 0x19, 0x3F, 0xBE, 0x67, 0x5D, 0x98, 0xBC, 0xB7, 0xCD, 0xB6, 0x3D, + 0x5E, 0x83, 0xAF, 0x3D, 0x49, 0xEC, 0x44, 0x3C, 0xED, 0xF9, 0xDD, 0x3D, + 0x5E, 0xBE, 0x97, 0xBE, 0x4D, 0x9C, 0xE8, 0xBA, 0x61, 0x45, 0x8F, 0xBC, + 0xCB, 0x56, 0x9C, 0xBE, 0x43, 0xF9, 0x81, 0x3F, 0x68, 0x5A, 0x98, 0x3F, + 0xEF, 0x5E, 0x38, 0xBD, 0x45, 0xF0, 0x4B, 0x3E, 0xF6, 0xFC, 0x6C, 0xBE, + 0xA9, 0x96, 0x97, 0x3C, 0x06, 0x46, 0xB9, 0x3F, 0x8F, 0x7B, 0x2F, 0xBF, + 0x44, 0x76, 0x38, 0xBD, 0x08, 0x13, 0xCE, 0x3E, 0x0D, 0x25, 0x22, 0x3F, + 0x8C, 0x9D, 0x0B, 0x3E, 0x14, 0x17, 0x14, 0x3F, 0x61, 0x54, 0xD6, 0x3D, + 0x1A, 0x8D, 0x8B, 0x3E, 0x5E, 0xD3, 0x7A, 0xBE, 0x3D, 0x4C, 0xAE, 0xBE, + 0x9F, 0xE9, 0xDF, 0xBE, 0xE7, 0x0B, 0x6A, 0xBD, 0xAB, 0x7D, 0x2B, 0x3E, + 0x36, 0xC6, 0x2F, 0xBC, 0xAC, 0x9E, 0x08, 0x3F, 0x9E, 0x5F, 0x3A, 0xBF, + 0xFD, 0x2A, 0x48, 0x3F, 0x80, 0xA8, 0xB3, 0x3D, 0x7F, 0xBC, 0x16, 0x3F, + 0x28, 0xCA, 0x9E, 0x3C, 0x5E, 0xA1, 0xF9, 0x3D, 0x07, 0xCE, 0xB7, 0xBD, + 0xF5, 0xDB, 0x85, 0x3E, 0xAB, 0x01, 0x97, 0xBE, 0x20, 0x73, 0xB2, 0x3E, + 0x7E, 0x1A, 0xA9, 0x3D, 0xAB, 0x13, 0xF8, 0x3E, 0xA0, 0x7D, 0x89, 0x3E, + 0xF3, 0xCB, 0x67, 0x3F, 0xAA, 0x7B, 0x4B, 0x3E, 0x50, 0xB0, 0x8D, 0x3E, + 0x63, 0x55, 0x44, 0x3F, 0x4D, 0xF1, 0x88, 0xBE, 0x3E, 0x8D, 0x96, 0xBE, + 0xAF, 0x7D, 0x22, 0xBE, 0xC1, 0xE6, 0xAD, 0x3D, 0x91, 0xF9, 0xBE, 0x3C, + 0x6A, 0xF4, 0x75, 0x3D, 0xDD, 0x27, 0x59, 0xBB, 0x9A, 0xED, 0x04, 0xBD, + 0xD9, 0x06, 0xF7, 0xB9, 0xA6, 0xFC, 0xF9, 0x3C, 0xC6, 0x3C, 0x1B, 0xBB, + 0x6C, 0xF4, 0xF2, 0xBB, 0xEB, 0x81, 0xD7, 0x3C, 0x78, 0xE4, 0xB1, 0xBC, + 0x9E, 0xD8, 0xC0, 0x3C, 0x96, 0x9B, 0x97, 0x3D, 0x6B, 0x21, 0xCE, 0x3D, + 0xDB, 0xC4, 0xF1, 0x3C, 0xFF, 0x06, 0x9C, 0x3B, 0x20, 0x64, 0x08, 0x3D, + 0x69, 0x53, 0x20, 0xBE, 0xBB, 0x3C, 0xB3, 0x3D, 0x9C, 0xE9, 0xAF, 0x3C, + 0x65, 0x65, 0x9B, 0xBD, 0x51, 0xD7, 0xFE, 0xBD, 0x89, 0x20, 0x6C, 0xBC, + 0x9A, 0xC5, 0xF3, 0x3B, 0xA8, 0x08, 0x2F, 0x3D, 0x9B, 0x5F, 0xCF, 0x3C, + 0x8A, 0x56, 0x02, 0x3D, 0xD6, 0xEE, 0x7F, 0x3D, 0x32, 0xD1, 0x8A, 0x3E, + 0xC9, 0x07, 0x2A, 0x3D, 0xBC, 0x32, 0x49, 0x3D, 0xBA, 0x24, 0x96, 0xBE, + 0x9B, 0x5D, 0x42, 0xBE, 0xC5, 0x03, 0xA6, 0x3E, 0x36, 0xDB, 0x1A, 0x3F, + 0x6A, 0x05, 0x87, 0xBE, 0xEB, 0x39, 0xCE, 0x3D, 0xA1, 0x00, 0xC6, 0xBE, + 0x99, 0x44, 0xD5, 0x3B, 0x1B, 0xA3, 0x9A, 0xBE, 0xD9, 0x7E, 0xAD, 0x3F, + 0x97, 0xC9, 0xB1, 0x3E, 0x6F, 0x06, 0x5E, 0x3D, 0xC8, 0x61, 0xF0, 0x3E, + 0x44, 0x84, 0xAF, 0xBE, 0xC5, 0xD4, 0xD5, 0xBF, 0xB1, 0xF7, 0x98, 0x3F, + 0x37, 0x0C, 0x0F, 0xBE, 0xB0, 0x6B, 0x6C, 0x3D, 0x8E, 0x9E, 0x66, 0xBF, + 0x28, 0x90, 0x77, 0xBE, 0x79, 0x3D, 0xCE, 0x3C, 0x6A, 0xD9, 0x71, 0x3E, + 0xE9, 0x55, 0x16, 0xBF, 0x7F, 0xF7, 0xAB, 0xBE, 0x7F, 0x2D, 0x33, 0xBF, + 0xEF, 0xE7, 0xC7, 0x3E, 0x05, 0xB2, 0x23, 0x3E, 0x3D, 0x65, 0x75, 0xBF, + 0x3B, 0xEF, 0xAA, 0x3D, 0xF4, 0x22, 0x90, 0xBE, 0x7E, 0x01, 0x0C, 0xBD, + 0x6E, 0x11, 0xAC, 0x3C, 0x87, 0x8F, 0xF0, 0x3B, 0x20, 0xC7, 0x85, 0xBC, + 0xDD, 0x80, 0x8C, 0xBB, 0xB5, 0x82, 0x00, 0xBE, 0x1D, 0xBC, 0x38, 0xBD, + 0xF2, 0xFC, 0x8E, 0xBC, 0xBC, 0x7F, 0x80, 0x3C, 0x59, 0xFD, 0x13, 0x3D, + 0xD6, 0x3E, 0xA1, 0x3C, 0x4A, 0xB8, 0x53, 0x3D, 0x71, 0xEE, 0x03, 0xBE, + 0x3B, 0x37, 0xE8, 0x3B, 0xCE, 0x76, 0x04, 0x3D, 0xA9, 0xE3, 0x02, 0x3E, + 0x76, 0x00, 0x29, 0x3E, 0x0F, 0xBC, 0x53, 0xBC, 0xE0, 0xC7, 0x39, 0xBD, + 0xB6, 0x8D, 0xE2, 0xBC, 0x85, 0xB9, 0x18, 0xBE, 0x59, 0x29, 0x29, 0xBD, + 0x23, 0x40, 0x60, 0x3C, 0x29, 0x4F, 0x2B, 0x3D, 0x1D, 0xA6, 0xDA, 0x3D, + 0x1D, 0x80, 0x17, 0xBD, 0x54, 0xB4, 0x68, 0x3C, 0x32, 0xC0, 0x2B, 0xBD, + 0xD6, 0x62, 0x40, 0x3B, 0xBB, 0x77, 0xC9, 0xBB, 0x6F, 0xB1, 0x55, 0xBD, + 0x57, 0x65, 0xD1, 0xBE, 0x71, 0xE3, 0x09, 0xBB, 0x2B, 0x2A, 0x7E, 0x3D, + 0x76, 0xF5, 0x03, 0xBD, 0x66, 0x67, 0xBC, 0xBB, 0xC7, 0xE6, 0xAB, 0xBE, + 0xFF, 0xC4, 0xBA, 0xBC, 0xFF, 0x50, 0x1C, 0x3E, 0x05, 0x79, 0x73, 0xBE, + 0x37, 0x4F, 0xAE, 0x3C, 0x94, 0xAD, 0x3A, 0x3E, 0xFE, 0x9A, 0x2D, 0x3E, + 0xE7, 0x60, 0x5B, 0xBE, 0x2C, 0xD7, 0xA8, 0xBE, 0x80, 0xEB, 0x7E, 0x3B, + 0xE2, 0xF9, 0xBB, 0x3F, 0x78, 0x7B, 0x15, 0x3F, 0xDD, 0xD6, 0xCE, 0x3E, + 0xAB, 0x49, 0xDD, 0x3E, 0x01, 0xE2, 0x8C, 0x3F, 0xE4, 0x6E, 0x15, 0xBD, + 0x6F, 0x9C, 0xA2, 0x3D, 0xA0, 0x94, 0x62, 0x3E, 0xD6, 0x8D, 0x13, 0xBE, + 0x7F, 0x5D, 0xCF, 0xBE, 0x25, 0x37, 0xB0, 0xBE, 0x85, 0xFA, 0x82, 0x3F, + 0x77, 0xC5, 0x5C, 0x3F, 0x9D, 0x1D, 0x07, 0xBE, 0xCD, 0x25, 0x65, 0xBE, + 0xB4, 0x8B, 0xE3, 0x3E, 0xB6, 0x0A, 0xBC, 0xBC, 0xC0, 0xD1, 0xB7, 0x3E, + 0x8E, 0xD4, 0x90, 0xBF, 0xE3, 0xD4, 0x52, 0xBE, 0xC8, 0xEF, 0x2C, 0x3D, + 0xF2, 0xD0, 0x68, 0xBE, 0x32, 0x88, 0x2D, 0x3E, 0x84, 0xBC, 0x3B, 0xBF, + 0x7A, 0xB2, 0x86, 0xBF, 0xD2, 0x83, 0x85, 0xBD, 0x32, 0x74, 0x6D, 0xBD, + 0xD6, 0x57, 0xF7, 0x3E, 0xFB, 0xD4, 0x10, 0xBD, 0xAB, 0x6F, 0xB3, 0x3F, + 0x93, 0xF6, 0xF4, 0xBE, 0xBF, 0x82, 0xB1, 0x3D, 0xFA, 0x6F, 0x5F, 0x3F, + 0x8D, 0xFE, 0x9C, 0x3F, 0xEB, 0x6F, 0x01, 0x3F, 0x27, 0x2D, 0xA1, 0x3E, + 0x16, 0x7E, 0x16, 0x3E, 0xF9, 0xA6, 0xC5, 0xBD, 0xE5, 0xB1, 0x51, 0x3E, + 0xF1, 0x52, 0x69, 0xBF, 0x5C, 0x2D, 0xB3, 0x3E, 0x3B, 0xD0, 0x06, 0xBF, + 0x4C, 0x63, 0x95, 0x3F, 0x6D, 0xCA, 0x3C, 0x3F, 0x6F, 0xE2, 0x3C, 0xBF, + 0x5B, 0x54, 0xA8, 0x3C, 0xC4, 0x6E, 0x04, 0x3F, 0x33, 0x04, 0x06, 0xBF, + 0xB9, 0xA5, 0x60, 0xBE, 0x56, 0xA7, 0x92, 0x3D, 0xFD, 0x0D, 0xE6, 0xBF, + 0xE8, 0xC3, 0xD9, 0xBE, 0xD9, 0xE4, 0x10, 0xBF, 0xE0, 0x8E, 0x1D, 0x3E, + 0x96, 0x36, 0xD6, 0x3E, 0xA0, 0x3C, 0x35, 0x3F, 0x5D, 0x5E, 0x0E, 0x3E, + 0x0F, 0x8D, 0xB8, 0x3E, 0x24, 0x43, 0x7E, 0x3E, 0x32, 0xED, 0x73, 0x3A, + 0x5D, 0x37, 0x01, 0x3F, 0x4C, 0xC2, 0xE2, 0xBE, 0x91, 0x76, 0xC3, 0xBE, + 0x20, 0xCB, 0x81, 0xBE, 0x87, 0xFB, 0x8D, 0xBF, 0xC4, 0x97, 0xC4, 0xBF, + 0x6E, 0x0C, 0xB7, 0xBE, 0xA0, 0x1E, 0x1A, 0x3F, 0x1C, 0xE3, 0x38, 0xBF, + 0x14, 0x05, 0x69, 0xBE, 0x27, 0xED, 0x1C, 0xBF, 0xB7, 0x53, 0x72, 0x3E, + 0x81, 0x3A, 0x6F, 0xBE, 0x5E, 0x5C, 0x6C, 0xBE, 0xBF, 0x6C, 0x89, 0x3F, + 0x23, 0x29, 0xC0, 0xBE, 0xCB, 0x54, 0xB0, 0x3E, 0xCD, 0xE6, 0x14, 0x3F, + 0x04, 0x69, 0xE6, 0x3E, 0x63, 0xAF, 0x28, 0xBE, 0x14, 0x69, 0x39, 0xBF, + 0x3D, 0xE6, 0x67, 0xBE, 0x99, 0xBD, 0x8C, 0x3F, 0x68, 0x07, 0x59, 0xBF, + 0x33, 0xD1, 0x06, 0x3E, 0xAE, 0x8D, 0x20, 0x3E, 0xFA, 0xDF, 0x03, 0x3F, + 0x0F, 0x6D, 0x9A, 0x3E, 0x56, 0x12, 0x83, 0x3E, 0x6D, 0x8D, 0x96, 0x3E, + 0x04, 0xE7, 0x47, 0x3E, 0xD4, 0xD4, 0x02, 0xBE, 0xE8, 0x58, 0x68, 0xBE, + 0x16, 0x36, 0x1B, 0xBE, 0xBD, 0xE6, 0x2D, 0xBD, 0xC6, 0x5D, 0x3A, 0xBE, + 0x39, 0x36, 0x3D, 0xBE, 0x60, 0xCC, 0xDC, 0x3D, 0x49, 0xDD, 0x6C, 0xBF, + 0x43, 0x59, 0x39, 0x3E, 0xD8, 0x1E, 0x7E, 0xBE, 0x30, 0x74, 0xD4, 0xBD, + 0x78, 0xDB, 0xA4, 0x3E, 0xBC, 0x4D, 0xBE, 0xBE, 0x33, 0x04, 0xC4, 0x3E, + 0x9B, 0xA6, 0x9C, 0xBE, 0xB4, 0x4A, 0x9D, 0x3D, 0xE0, 0x11, 0xA0, 0x3D, + 0xE6, 0x0F, 0x1E, 0xBE, 0x56, 0x81, 0x00, 0xBF, 0x76, 0x86, 0x23, 0x3F, + 0x8C, 0x8F, 0x22, 0xBC, 0x6E, 0xAA, 0x2E, 0x3E, 0x0D, 0xDB, 0x49, 0x3D, + 0x60, 0x3F, 0xD8, 0xBE, 0x81, 0x74, 0x81, 0xBE, 0x86, 0x35, 0xA5, 0x3E, + 0x66, 0xD3, 0xDC, 0x3E, 0xE6, 0x58, 0x19, 0x3E, 0xAD, 0x44, 0x62, 0xBE, + 0x05, 0x98, 0x2F, 0x3F, 0x46, 0x87, 0x3E, 0xBE, 0x9C, 0x0F, 0x5D, 0x3E, + 0x92, 0xBF, 0xBA, 0xBE, 0x3D, 0x7F, 0x66, 0xBE, 0x99, 0xBD, 0xB4, 0xBD, + 0x74, 0x23, 0x38, 0xBE, 0x8E, 0xC4, 0x2F, 0x3E, 0x69, 0xF3, 0x21, 0xBE, + 0x92, 0x5F, 0x00, 0xBE, 0x65, 0xA0, 0xDA, 0x3D, 0xF0, 0xF8, 0x9F, 0x3E, + 0xE1, 0x5B, 0x84, 0xBE, 0xA7, 0x7E, 0xD9, 0xBD, 0x93, 0xAF, 0x30, 0x3F, + 0x39, 0xDC, 0x65, 0x3E, 0x3B, 0x23, 0x3A, 0xBD, 0xCB, 0x5C, 0x7F, 0x3E, + 0x02, 0xCE, 0xD4, 0x3E, 0x68, 0x5C, 0xD9, 0xBE, 0x7B, 0x52, 0x06, 0x3D, + 0x4C, 0x05, 0x6C, 0xBB, 0xD0, 0xE8, 0xBD, 0xBE, 0x90, 0xF1, 0x67, 0x3E, + 0x48, 0x8B, 0xDF, 0x3E, 0x3F, 0xF6, 0x2C, 0xBE, 0x4F, 0x7C, 0xFD, 0x3D, + 0x0D, 0xFE, 0xA3, 0x3E, 0x9E, 0xC0, 0x9D, 0xBE, 0x90, 0x66, 0x4C, 0xBD, + 0xC5, 0x19, 0xA7, 0xBF, 0x44, 0x89, 0x33, 0x3E, 0xE0, 0xC5, 0x1F, 0xBD, + 0xB9, 0x2D, 0x22, 0xBE, 0xBF, 0xA4, 0x06, 0xBD, 0x0F, 0x79, 0x37, 0x3D, + 0xF6, 0x8E, 0x26, 0x3E, 0xB0, 0xC5, 0xF9, 0x3E, 0x33, 0x15, 0xA7, 0xBE, + 0xFD, 0x20, 0x4F, 0x3D, 0xD8, 0x5D, 0xD1, 0xBD, 0xF7, 0x78, 0xC1, 0x3D, + 0x25, 0x7D, 0xD6, 0x3C, 0x82, 0x8C, 0x40, 0x3E, 0xBA, 0xE2, 0x47, 0xBE, + 0x43, 0x6E, 0x62, 0x3D, 0x88, 0xBB, 0x12, 0xBF, 0x4A, 0xEF, 0xAD, 0xBE, + 0xFE, 0x3B, 0x9F, 0x3D, 0x69, 0xFE, 0x7A, 0xBD, 0x50, 0x95, 0x33, 0x3E, + 0xF7, 0xD7, 0x0C, 0x3E, 0x72, 0x44, 0xB8, 0x3E, 0x36, 0xB5, 0x0E, 0x3C, + 0xAC, 0x23, 0xC8, 0x3C, 0x03, 0x82, 0x6B, 0x3F, 0xC8, 0x9D, 0xC1, 0xBD, + 0xDB, 0xFC, 0xCC, 0x3E, 0x00, 0x08, 0x08, 0x3E, 0x29, 0xFD, 0x44, 0xBD, + 0x29, 0xD6, 0x1B, 0x3C, 0x9B, 0x42, 0xE7, 0xBD, 0xF2, 0x26, 0x3F, 0xBF, + 0xC7, 0x99, 0x28, 0xBF, 0xFF, 0x04, 0x59, 0xBE, 0x5D, 0xE9, 0x2B, 0x3E, + 0x9A, 0x9B, 0x6B, 0x3E, 0xCB, 0x60, 0x83, 0x3E, 0x49, 0x29, 0x0F, 0xBE, + 0xC8, 0x2C, 0xC2, 0xBE, 0x2C, 0xE6, 0xA3, 0x3F, 0x63, 0xBF, 0x7E, 0x3D, + 0xF4, 0xA4, 0x99, 0x3D, 0x30, 0xC8, 0xA2, 0x3F, 0xC5, 0x46, 0xAA, 0x3F, + 0x11, 0xA0, 0xD4, 0x3E, 0xFE, 0x39, 0x17, 0x3F, 0x1A, 0xC8, 0xEB, 0x3D, + 0xDB, 0x8C, 0x61, 0x3F, 0x46, 0x96, 0x9E, 0x3D, 0xE5, 0x16, 0x1D, 0xBE, + 0x16, 0x48, 0xAA, 0x3E, 0x9D, 0x3B, 0x44, 0xBF, 0x4A, 0x6E, 0xBF, 0x3E, + 0xA3, 0x93, 0x32, 0xBE, 0xDC, 0xC0, 0x09, 0xBF, 0xFE, 0x7C, 0xDC, 0x3D, + 0xDC, 0x8D, 0x55, 0x3F, 0xA6, 0xB0, 0x84, 0xBD, 0x03, 0xEE, 0x26, 0x3F, + 0x85, 0x76, 0xCE, 0xBE, 0xA8, 0x93, 0x95, 0x3E, 0x5C, 0x07, 0xC1, 0x3E, + 0x34, 0xFD, 0xD6, 0xBD, 0x35, 0x52, 0x61, 0xBF, 0xE2, 0x84, 0x42, 0x3C, + 0xC7, 0x00, 0xB1, 0x3C, 0x70, 0x4B, 0xE2, 0x3D, 0xAB, 0xC7, 0x5D, 0x3E, + 0xDA, 0x8D, 0x5B, 0xBF, 0xEF, 0xA4, 0xA9, 0x3E, 0x1E, 0x0E, 0xF8, 0x3E, + 0xFA, 0xB2, 0x89, 0x3D, 0x2E, 0x94, 0x25, 0x3D, 0xCE, 0xA8, 0xB9, 0xBD, + 0xF9, 0x58, 0x1A, 0xBF, 0x65, 0x77, 0x19, 0x3F, 0xD6, 0xE1, 0xB5, 0x3E, + 0x93, 0xA0, 0x25, 0x3D, 0xF2, 0x5A, 0xC8, 0xBC, 0xA4, 0xCF, 0x02, 0xBF, + 0x55, 0xE5, 0xF2, 0x3E, 0x8B, 0x79, 0xAB, 0x3D, 0x13, 0xB5, 0x9E, 0x3D, + 0x44, 0x4B, 0x96, 0xBE, 0x15, 0xD5, 0x56, 0x3E, 0xB9, 0x79, 0x59, 0x3E, + 0x1F, 0x3D, 0x51, 0x3E, 0x2D, 0x84, 0x8E, 0xBE, 0x8E, 0x52, 0x91, 0x3D, + 0xE0, 0x66, 0x94, 0xBE, 0x85, 0x3E, 0x5F, 0xBB, 0x09, 0xAE, 0x6B, 0xBE, + 0xEA, 0xE6, 0x5A, 0x3C, 0x99, 0x6B, 0x34, 0xBE, 0xE1, 0x5D, 0x1B, 0x3E, + 0x53, 0xBE, 0x0C, 0x3F, 0x05, 0xA3, 0x37, 0xBD, 0x27, 0x26, 0x38, 0x3D, + 0x2C, 0x32, 0x03, 0xBE, 0xED, 0xCC, 0x14, 0x3D, 0x1E, 0xB0, 0xC4, 0x3F, + 0x0A, 0xE6, 0x21, 0xBE, 0x5D, 0x9C, 0x44, 0xBF, 0x91, 0xBD, 0x52, 0xBE, + 0xA1, 0xD9, 0xC1, 0xBB, 0x89, 0xE5, 0xB8, 0x3E, 0x0F, 0x9E, 0x38, 0x3F, + 0x0F, 0x22, 0xD8, 0xBE, 0xF7, 0x69, 0x5F, 0xBF, 0x28, 0xDE, 0x62, 0x3E, + 0x58, 0xC4, 0xA1, 0xBC, 0xEF, 0x64, 0x91, 0x3E, 0x29, 0x65, 0x64, 0x3E, + 0x49, 0xDD, 0x35, 0x3E, 0x98, 0x39, 0xD7, 0x3C, 0xF3, 0xEA, 0xA3, 0xBB, + 0xD7, 0x79, 0x24, 0x3E, 0x60, 0x3C, 0xDC, 0xBE, 0x16, 0xEC, 0x74, 0x3D, + 0x08, 0x0C, 0x9C, 0x3D, 0xE9, 0x65, 0x00, 0x3F, 0x8D, 0x29, 0x5C, 0x3E, + 0x83, 0x22, 0xF9, 0xBF, 0xF7, 0x06, 0xB6, 0x3C, 0xE9, 0x22, 0x67, 0x3D, + 0xAC, 0x9F, 0x27, 0xBF, 0x58, 0x97, 0xB2, 0x3E, 0xCB, 0xD1, 0x44, 0x3D, + 0x44, 0xAB, 0x6D, 0x3D, 0x8F, 0xB0, 0xE6, 0x3E, 0x95, 0x73, 0x81, 0x3D, + 0x1D, 0x1B, 0x27, 0xBF, 0x8D, 0x6A, 0x87, 0x3E, 0xD6, 0xC2, 0x50, 0x3D, + 0x02, 0x22, 0x62, 0xBF, 0xE8, 0xF2, 0xA6, 0x3B, 0x70, 0xAC, 0xC9, 0x3D, + 0x23, 0x09, 0xEF, 0xBD, 0xA2, 0x30, 0xA4, 0x3F, 0x23, 0x00, 0x4D, 0x3E, + 0xA9, 0x93, 0x30, 0xBC, 0x3E, 0x8A, 0x3A, 0xBE, 0x82, 0x69, 0x9D, 0x3D, + 0x60, 0x10, 0x6F, 0xBF, 0xCE, 0x28, 0x94, 0x3F, 0xE9, 0x78, 0x34, 0xBE, + 0xE2, 0x14, 0xC2, 0x3D, 0x54, 0x6C, 0x2E, 0xBD, 0xFF, 0x6F, 0x1C, 0x3E, + 0x08, 0xE8, 0x7E, 0x3D, 0x24, 0x94, 0x0D, 0x3F, 0x5B, 0x6F, 0x78, 0xBD, + 0x4C, 0x1C, 0x34, 0x3F, 0xD7, 0xBC, 0x2D, 0x3C, 0x2C, 0x0A, 0x30, 0xBF, + 0xD4, 0xCE, 0x55, 0xBD, 0x2C, 0x02, 0xA6, 0xBD, 0xC0, 0x95, 0xFE, 0xBC, + 0x1A, 0x7A, 0xAA, 0x3D, 0xAD, 0x79, 0xC0, 0x3E, 0xC9, 0x85, 0xFF, 0x3E, + 0x9A, 0x0D, 0x7B, 0x3E, 0x98, 0xE4, 0x3F, 0x3D, 0xE6, 0x72, 0xBC, 0x3D, + 0xB6, 0xCA, 0x96, 0xBD, 0x6E, 0xF7, 0x21, 0xBE, 0xDF, 0x5D, 0x19, 0xBD, + 0x35, 0xB5, 0xB0, 0x3C, 0x45, 0x38, 0xA0, 0xBC, 0x2E, 0x73, 0x88, 0xBE, + 0x94, 0x6F, 0x91, 0xBE, 0x7C, 0x31, 0x01, 0x3E, 0x6F, 0xE6, 0xB5, 0x3D, + 0xD7, 0xE5, 0x40, 0x3D, 0xC8, 0x54, 0x66, 0xBB, 0xFB, 0x6A, 0xC7, 0x3D, + 0xCC, 0xF7, 0xDB, 0x3D, 0x20, 0x56, 0x29, 0xBD, 0x98, 0x8E, 0x74, 0xBB, + 0xF9, 0x7D, 0x74, 0xBE, 0x4E, 0x51, 0x1E, 0xBE, 0xFA, 0x22, 0x1A, 0x3E, + 0xC9, 0x8A, 0xE0, 0xBD, 0x63, 0xDA, 0x2D, 0x3D, 0xE0, 0x9F, 0x16, 0x3E, + 0xF5, 0x26, 0x2F, 0x3E, 0x4A, 0xAD, 0xF9, 0x3E, 0xB0, 0xBB, 0x40, 0x3D, + 0xCD, 0x10, 0xC4, 0xBD, 0x68, 0x02, 0xA2, 0xBA, 0xEE, 0x8C, 0xA0, 0x3C, + 0xAD, 0x50, 0xA1, 0x3E, 0x56, 0x30, 0x12, 0x3E, 0x5F, 0x8A, 0x9D, 0x3D, + 0x37, 0x49, 0x3F, 0x3C, 0xCD, 0x5D, 0xD2, 0xBC, 0x39, 0x7D, 0x2B, 0xBD, + 0x63, 0x1D, 0x91, 0x3D, 0x6F, 0xEC, 0x3E, 0x3D, 0x58, 0x74, 0x3B, 0x3D, + 0xB2, 0x17, 0x0B, 0xBD, 0x4E, 0x7A, 0xC5, 0xBD, 0x27, 0x64, 0xAA, 0xBD, + 0x2A, 0xB1, 0xBB, 0xBA, 0x8A, 0x2D, 0x16, 0xBD, 0xE7, 0xF1, 0xB9, 0xBD, + 0xE7, 0xF0, 0xFC, 0xBC, 0x29, 0x53, 0x7A, 0x3D, 0x5F, 0xF0, 0x86, 0xBC, + 0xF4, 0xE4, 0x6B, 0xBC, 0x43, 0x60, 0x05, 0xBD, 0x6D, 0x68, 0xAD, 0xBD, + 0x37, 0xC1, 0x05, 0xBC, 0x4E, 0xCC, 0x89, 0x3D, 0x73, 0x30, 0xE1, 0xBD, + 0xAB, 0xC4, 0x5A, 0xBD, 0x8C, 0xAC, 0x92, 0x3C, 0x10, 0x73, 0x37, 0x3D, + 0x4C, 0x35, 0x80, 0x3E, 0x93, 0x5F, 0x15, 0xBE, 0xCC, 0xC5, 0x21, 0xBD, + 0x03, 0x91, 0xBE, 0xBF, 0x79, 0x8A, 0xB8, 0xBE, 0x1C, 0x24, 0x80, 0x3E, + 0xD3, 0x47, 0x79, 0x3F, 0x09, 0x93, 0x90, 0x3D, 0x19, 0xFC, 0xEB, 0x3E, + 0x17, 0xDA, 0x6D, 0xBF, 0xFE, 0x9A, 0x87, 0x3F, 0xFF, 0xE9, 0x3A, 0xBE, + 0xC6, 0xBB, 0x79, 0x3E, 0xCC, 0x17, 0x13, 0x3E, 0x15, 0x76, 0x03, 0xBE, + 0xB2, 0x06, 0x82, 0x3D, 0x81, 0x89, 0x0B, 0x3E, 0xE9, 0x43, 0x18, 0xBF, + 0x0D, 0x3B, 0xA4, 0xBD, 0xC0, 0x4E, 0x1D, 0xBE, 0x74, 0x4E, 0x8B, 0xBC, + 0xB2, 0x44, 0xB9, 0xBF, 0x7A, 0x46, 0xCA, 0xBC, 0x32, 0xD9, 0xA9, 0xBE, + 0xE3, 0xEF, 0x46, 0xBD, 0x76, 0x6A, 0xD8, 0x3E, 0x3B, 0xF9, 0x31, 0xBF, + 0x07, 0x76, 0x8D, 0x3E, 0x69, 0x2B, 0xDA, 0x3E, 0x70, 0xE6, 0x98, 0xBE, + 0xCA, 0x13, 0x89, 0xBE, 0xF9, 0x73, 0x75, 0x3E, 0xDB, 0x73, 0xE0, 0xBE, + 0xFE, 0xA6, 0x1D, 0x3F, 0xAD, 0xE6, 0x2E, 0xBF, 0x0F, 0x1E, 0x36, 0x3B, + 0x98, 0x03, 0x61, 0x3C, 0x03, 0x4A, 0x60, 0xBD, 0x08, 0x45, 0x6D, 0xBB, + 0xBD, 0x14, 0xB5, 0x3C, 0x13, 0x7A, 0xAF, 0x3D, 0x76, 0xED, 0xB1, 0x3C, + 0x88, 0x29, 0x06, 0x3D, 0x41, 0x58, 0x30, 0x3D, 0x87, 0xA9, 0xDE, 0xBD, + 0x41, 0x1A, 0x13, 0x3D, 0x90, 0x62, 0x1E, 0xBC, 0xA8, 0xC3, 0x30, 0x3C, + 0x25, 0x32, 0x86, 0xBD, 0x17, 0x9E, 0x35, 0xBD, 0x29, 0x0C, 0x66, 0xBC, + 0x5D, 0x84, 0x39, 0x3D, 0x04, 0x0C, 0xCA, 0x3B, 0x58, 0x53, 0x80, 0x3C, + 0x9E, 0xF6, 0xF4, 0x3C, 0x34, 0xA1, 0x65, 0xBC, 0xD4, 0xE0, 0xC3, 0xBC, + 0xAE, 0x8D, 0xB3, 0xBD, 0x10, 0xA3, 0x7A, 0x3D, 0xD5, 0x8C, 0xEB, 0x3D, + 0x14, 0x0E, 0xB0, 0xBC, 0xD7, 0x11, 0x3E, 0x3D, 0x95, 0x46, 0x95, 0x3D, + 0xFF, 0x12, 0xDA, 0x3D, 0x38, 0x76, 0xA3, 0xBC, 0x01, 0x3F, 0x33, 0xBC, + 0x1D, 0x68, 0xAE, 0xBD, 0x38, 0x5C, 0x66, 0x3C, 0x4E, 0x96, 0x46, 0xBD, + 0x14, 0x1E, 0xD6, 0x3D, 0x79, 0xB3, 0x3D, 0x3B, 0xFC, 0x07, 0x31, 0x3D, + 0xFC, 0xEB, 0xBB, 0x3C, 0x91, 0xB7, 0x8C, 0x3C, 0xC1, 0xC5, 0x61, 0xBC, + 0x14, 0x22, 0x5D, 0x3C, 0xF7, 0xB1, 0x2D, 0xBD, 0xE2, 0x85, 0xEB, 0x3C, + 0x14, 0xF4, 0x4E, 0xBC, 0xB2, 0x9A, 0x2F, 0xBD, 0x35, 0x6E, 0x51, 0x3D, + 0x5F, 0xC9, 0xF2, 0x3C, 0x7D, 0x9F, 0xA7, 0xBC, 0x15, 0x19, 0x5A, 0x3C, + 0x64, 0x7F, 0xAB, 0xBB, 0x08, 0x27, 0x2A, 0x3D, 0x30, 0x3A, 0x02, 0x3A, + 0x4B, 0x6E, 0x3D, 0xBC, 0xFD, 0x5D, 0x13, 0xBD, 0x2E, 0xAC, 0x41, 0xBD, + 0xD2, 0x05, 0x67, 0x3C, 0x68, 0xE0, 0x9F, 0x3B, 0x75, 0x67, 0xB7, 0x3C, + 0x76, 0x6F, 0x7B, 0xBC, 0x6C, 0x1F, 0x04, 0xBC, 0xF5, 0xF2, 0x39, 0x3D, + 0x98, 0xAA, 0x34, 0x3E, 0x1B, 0x39, 0xBD, 0x3C, 0x6E, 0xA6, 0x7E, 0xBA, + 0x61, 0xA2, 0xD5, 0xBD, 0x1B, 0xA0, 0x9F, 0xBD, 0x2E, 0x30, 0x2D, 0x3E, + 0x1B, 0x8A, 0x68, 0xBD, 0x8C, 0xD5, 0x4A, 0x3D, 0xD1, 0x9A, 0x44, 0xBD, + 0x04, 0xEE, 0xE7, 0x3D, 0x1D, 0xFE, 0x1B, 0x3E, 0x1B, 0xDA, 0x05, 0xBB, + 0x64, 0x25, 0x36, 0xBF, 0xB1, 0x35, 0x39, 0x3C, 0x03, 0x8B, 0x26, 0x3C, + 0x37, 0xCF, 0x45, 0xBE, 0x2D, 0xB5, 0xDD, 0x3D, 0x24, 0x10, 0xC9, 0x3E, + 0x9B, 0x98, 0x0D, 0xBE, 0x75, 0x53, 0x69, 0xBE, 0x4B, 0xDF, 0x12, 0x3C, + 0x89, 0x32, 0xB7, 0xBB, 0x01, 0x57, 0x76, 0xBE, 0x3D, 0xA5, 0x2F, 0x3D, + 0x26, 0xB1, 0x03, 0x3D, 0x23, 0x61, 0x72, 0x3E, 0x36, 0x52, 0x16, 0x3E, + 0xBA, 0x7A, 0x18, 0x3F, 0x15, 0xFA, 0xF6, 0xBD, 0x42, 0xCA, 0x09, 0x3E, + 0xE9, 0xDA, 0x88, 0xBD, 0x4D, 0x3B, 0x86, 0xBD, 0xCA, 0xF5, 0x8A, 0xBF, + 0x28, 0x14, 0x0D, 0x3F, 0x3F, 0xC6, 0x91, 0xBC, 0x5E, 0x1E, 0x11, 0x3C, + 0xF1, 0x02, 0x9B, 0x3C, 0x0C, 0x5B, 0x2E, 0x3D, 0x50, 0x5A, 0x1C, 0xBD, + 0xB0, 0xE9, 0xBC, 0x3B, 0xCC, 0x00, 0x35, 0x3D, 0x90, 0x47, 0xFC, 0x3A, + 0x29, 0x72, 0x44, 0x3D, 0x05, 0x21, 0x57, 0x3D, 0x61, 0xBF, 0x53, 0xBD, + 0x11, 0xB9, 0xD5, 0x3C, 0xBF, 0xBD, 0xBD, 0xBC, 0x1F, 0x37, 0x8F, 0xBC, + 0x08, 0xD5, 0x89, 0xBD, 0x88, 0x85, 0x1A, 0xBC, 0xB4, 0x8B, 0x82, 0xBC, + 0x7D, 0xAE, 0x9D, 0x3B, 0x5A, 0x8F, 0xA5, 0xBB, 0xAA, 0xED, 0x1C, 0x3C, + 0x3C, 0x5E, 0x22, 0x3D, 0x65, 0xD7, 0xA6, 0xBB, 0xA4, 0x82, 0x57, 0xBC, + 0x93, 0xDF, 0x8A, 0xBD, 0x1F, 0x07, 0x81, 0x3D, 0x9B, 0x4B, 0x1B, 0x3D, + 0xF3, 0x00, 0xF7, 0xBC, 0x9B, 0x13, 0x04, 0x3D, 0x06, 0x3F, 0x02, 0x3D, + 0x8D, 0xA6, 0x5B, 0x3C, 0x1A, 0xD4, 0x2F, 0x3E, 0x55, 0xBE, 0xD0, 0xBC, + 0x54, 0x93, 0x02, 0x3C, 0xB2, 0xEC, 0xFA, 0x3D, 0xDB, 0x31, 0x63, 0xBD, + 0xD8, 0x73, 0xC8, 0xBF, 0xF2, 0xA5, 0x1E, 0x3F, 0xB4, 0x66, 0x78, 0xBD, + 0x88, 0x0C, 0x20, 0x3E, 0x2F, 0xD2, 0x45, 0x3E, 0xA2, 0xAD, 0x16, 0xBE, + 0x2C, 0x67, 0xB7, 0x3B, 0xE7, 0x29, 0xC7, 0xBE, 0x10, 0xBA, 0x91, 0x3D, + 0xBE, 0x9D, 0xD2, 0xBC, 0x94, 0x1D, 0x8F, 0xBE, 0x73, 0x1C, 0xA1, 0xBE, + 0x78, 0x65, 0x45, 0x3F, 0x5A, 0xC9, 0xCB, 0xBD, 0xBF, 0x93, 0x2B, 0xBF, + 0x0D, 0x18, 0x4E, 0xBD, 0xE3, 0x1A, 0x44, 0x3F, 0xFF, 0xCE, 0xB2, 0x3E, + 0x55, 0x6E, 0x91, 0xBE, 0xDC, 0x71, 0xB5, 0x3D, 0xBE, 0xB8, 0x0C, 0xBF, + 0x44, 0x71, 0x7C, 0xBE, 0xCE, 0x8F, 0xBC, 0xBE, 0x51, 0x25, 0x84, 0xBD, + 0xD6, 0x86, 0x56, 0xBF, 0x52, 0x69, 0x91, 0x3D, 0x4F, 0xE2, 0x2E, 0xBF, + 0xF6, 0x62, 0x99, 0xBE, 0x3A, 0x27, 0xFA, 0x3E, 0x69, 0x7D, 0x7C, 0xBC, + 0x84, 0xB0, 0xF9, 0x3D, 0xB0, 0x1F, 0x38, 0xBE, 0x76, 0x12, 0x9F, 0xBE, + 0x62, 0x57, 0x86, 0xBC, 0xA2, 0x4E, 0xA0, 0x3D, 0x6D, 0x9A, 0x3B, 0x3E, + 0x0F, 0x0D, 0x86, 0x3E, 0x36, 0x61, 0xC9, 0xBE, 0x4F, 0x46, 0x3D, 0x3E, + 0x3A, 0x3C, 0xE6, 0x3E, 0xF9, 0x05, 0x02, 0x3F, 0x5C, 0x74, 0xC4, 0xBD, + 0x45, 0x80, 0x8F, 0xBF, 0x87, 0xF6, 0x02, 0xC0, 0x81, 0x05, 0xC4, 0xBE, + 0x2B, 0xE0, 0xAA, 0xBC, 0x6F, 0x14, 0x8B, 0x3E, 0xA5, 0x53, 0xBE, 0xBD, + 0xCC, 0x4D, 0x8D, 0x3E, 0xE7, 0xA0, 0xFA, 0x3D, 0x38, 0x8D, 0xEE, 0x3D, + 0xDE, 0xDE, 0xFE, 0x3D, 0xDA, 0x16, 0x38, 0xBF, 0x1D, 0xBA, 0xDE, 0x3E, + 0xDB, 0x8B, 0xE4, 0x3D, 0xA4, 0x74, 0x9C, 0x3E, 0xE0, 0xEA, 0x15, 0xBE, + 0xD9, 0x7A, 0x24, 0xBF, 0x28, 0xB5, 0x09, 0xBF, 0x92, 0x8A, 0x41, 0x3E, + 0xEE, 0x64, 0x10, 0x3F, 0x16, 0xBA, 0x86, 0x3D, 0x8F, 0x47, 0x08, 0x3E, + 0xD9, 0x21, 0x1A, 0x3E, 0xE5, 0xC4, 0x8F, 0xBE, 0x63, 0x75, 0xC6, 0xBE, + 0xA5, 0x63, 0x24, 0xBD, 0xDD, 0xE2, 0x2E, 0x3D, 0x6D, 0x3F, 0x22, 0x3E, + 0x3F, 0x2A, 0xB7, 0x3E, 0xFE, 0xEC, 0x07, 0x3E, 0x55, 0x95, 0xB9, 0x3D, + 0xDB, 0x0D, 0x04, 0x3E, 0xBF, 0xDD, 0xCF, 0x3C, 0xCB, 0x1C, 0xFE, 0xBD, + 0x4B, 0x3E, 0xC0, 0x3D, 0x05, 0x77, 0x61, 0x3E, 0x20, 0x3F, 0xA1, 0x3B, + 0x1E, 0x2C, 0x05, 0xBE, 0x31, 0x56, 0x74, 0x3B, 0xE5, 0x48, 0x22, 0x3E, + 0xE9, 0xE3, 0xF7, 0xBC, 0xEA, 0xA1, 0x93, 0xBD, 0xC4, 0x42, 0xBA, 0x3D, + 0x3F, 0x9D, 0x6E, 0xBE, 0x01, 0x1E, 0x2D, 0x3E, 0x77, 0xD4, 0xB8, 0xBD, + 0xE7, 0x9F, 0x1C, 0xBE, 0x6A, 0x66, 0x17, 0x3C, 0x06, 0x7D, 0xB2, 0xBE, + 0xF4, 0xF8, 0xF5, 0xBD, 0xAC, 0xA3, 0x63, 0xBE, 0x0D, 0x01, 0x40, 0x3E, + 0xCC, 0x12, 0x66, 0x3E, 0x9F, 0x68, 0x01, 0xBD, 0xB8, 0x66, 0x0F, 0x3D, + 0x63, 0x9B, 0xC7, 0xBC, 0x26, 0xB6, 0x93, 0x3D, 0x21, 0x1D, 0x6B, 0x3B, + 0x00, 0xBB, 0x48, 0xBC, 0xDC, 0xA8, 0xDE, 0x3B, 0xCB, 0xFD, 0xBD, 0xBC, + 0x47, 0xD6, 0xBB, 0xBC, 0xA0, 0x55, 0x21, 0x3D, 0x06, 0x16, 0x9E, 0xB8, + 0x9E, 0x06, 0x1D, 0xBB, 0xD8, 0x83, 0x25, 0x3D, 0x42, 0x2E, 0xC8, 0x3D, + 0x1A, 0xAF, 0xAC, 0x3C, 0x21, 0x0C, 0x3C, 0x3C, 0xB4, 0xDC, 0xF5, 0x3B, + 0xE8, 0x50, 0xCA, 0x3C, 0xDD, 0x5E, 0xF9, 0xBC, 0xC0, 0xF0, 0x1C, 0xBC, + 0xB4, 0x41, 0x27, 0x3C, 0x28, 0x21, 0x2A, 0xBC, 0xCA, 0x2D, 0x6B, 0xBC, + 0x9C, 0x5D, 0x38, 0xBB, 0xDB, 0xAA, 0xB7, 0x3A, 0x8A, 0xC8, 0xD8, 0x3C, + 0x89, 0xBC, 0xA1, 0xBB, 0x72, 0x6B, 0x99, 0x3C, 0x00, 0xD9, 0x79, 0x3C, + 0xBE, 0x10, 0x96, 0x3E, 0x83, 0xBE, 0xA6, 0x3D, 0x64, 0x0B, 0x2F, 0x3C, + 0x50, 0x2B, 0x5D, 0xBE, 0x3D, 0xC3, 0xC5, 0x3C, 0x2A, 0x85, 0x8F, 0x3E, + 0xB2, 0xF6, 0x8A, 0x3D, 0x81, 0x41, 0xBE, 0xBD, 0x08, 0x33, 0x23, 0x3D, + 0x5F, 0x1E, 0x0F, 0xBE, 0xFC, 0xC0, 0xE2, 0x3E, 0xE4, 0x07, 0xE5, 0xBC, + 0x4E, 0x45, 0xBB, 0xBE, 0x77, 0xD6, 0x32, 0xBE, 0xB6, 0xF0, 0xA2, 0x3B, + 0x1D, 0x5F, 0x60, 0xBE, 0x87, 0xCD, 0xF7, 0x3D, 0xC1, 0x18, 0xEC, 0xBD, + 0x69, 0xF9, 0x48, 0x3D, 0x0B, 0x64, 0x71, 0x3E, 0xD2, 0xDB, 0x95, 0x3B, + 0x35, 0x94, 0xFA, 0xBB, 0xF9, 0xEA, 0x70, 0xBE, 0x8C, 0xC2, 0x04, 0x3D, + 0xD1, 0x01, 0xA0, 0x3D, 0x63, 0xC8, 0x9C, 0x3E, 0x0B, 0x3B, 0x80, 0x3E, + 0xF9, 0x8A, 0x09, 0x3C, 0xF8, 0x0D, 0xD0, 0x3C, 0x41, 0x1A, 0xBB, 0x3C, + 0x5F, 0x20, 0x6D, 0xBE, 0xB8, 0x29, 0x06, 0x3B, 0xF7, 0xEC, 0x1D, 0x3F, + 0xD6, 0x45, 0x08, 0xBE, 0x4D, 0x53, 0xA1, 0x3D, 0x4F, 0x7D, 0xE1, 0x3E, + 0x0D, 0xFF, 0xC1, 0x3E, 0x81, 0x1D, 0x88, 0xBF, 0x12, 0xA3, 0x19, 0xBF, + 0x16, 0xD3, 0x5D, 0xBE, 0xDA, 0xDC, 0xBD, 0x3E, 0x36, 0xCB, 0xBA, 0x3E, + 0x37, 0x2A, 0x91, 0x3E, 0x12, 0x39, 0x22, 0x3F, 0x9B, 0xDA, 0x7F, 0xBE, + 0x74, 0x32, 0x8D, 0x3F, 0x88, 0xE4, 0x7E, 0xBD, 0x1F, 0x4D, 0x53, 0x3F, + 0x1A, 0x83, 0xAC, 0xBF, 0xA8, 0xD7, 0x82, 0xBE, 0xBD, 0x90, 0xEF, 0x3E, + 0x17, 0x10, 0x86, 0x3E, 0x01, 0x2D, 0xD5, 0xBC, 0x5D, 0x7C, 0xF7, 0x3E, + 0xFF, 0xC8, 0x6D, 0xBD, 0x6D, 0x89, 0xB3, 0x3D, 0xBA, 0xA1, 0xB6, 0x3E, + 0x29, 0x43, 0x9C, 0xBE, 0x40, 0x46, 0xED, 0x3F, 0x6C, 0x3B, 0x0F, 0xBE, + 0xEA, 0xFB, 0x2F, 0xBE, 0x3E, 0x56, 0xCE, 0xBE, 0x3F, 0x16, 0x11, 0xBF, + 0xD0, 0xD3, 0x03, 0xBF, 0x5C, 0x4C, 0x02, 0xBE, 0xE9, 0xAB, 0xA0, 0xBF, + 0x41, 0x0D, 0x38, 0x3F, 0x64, 0x80, 0x24, 0x3F, 0x46, 0x59, 0x15, 0x3F, + 0xBD, 0xEA, 0x57, 0x3E, 0x9B, 0x27, 0x67, 0x3F, 0x19, 0x79, 0x0A, 0x3E, + 0x4D, 0x49, 0x58, 0xBD, 0x92, 0x8D, 0xC9, 0x3E, 0xDF, 0xB4, 0x07, 0x3F, + 0x8A, 0xDC, 0x20, 0xBE, 0xB4, 0xF5, 0x9D, 0x3E, 0x4A, 0x88, 0x16, 0x3F, + 0xF9, 0x30, 0x5F, 0xBC, 0x9D, 0xCB, 0x16, 0xBF, 0xE7, 0x1F, 0x28, 0xBE, + 0x0D, 0x81, 0x13, 0x40, 0x70, 0xC3, 0x14, 0x3F, 0xB1, 0x89, 0x80, 0xBE, + 0x1B, 0x5B, 0x24, 0x3A, 0xC1, 0x13, 0x4A, 0x3E, 0x54, 0x88, 0x45, 0x3A, + 0xD0, 0xA9, 0xAF, 0xBB, 0x9F, 0x83, 0xCE, 0x3D, 0x1A, 0x95, 0x86, 0x3E, + 0xC2, 0x5E, 0xC3, 0xBE, 0xDD, 0xE5, 0x66, 0x3F, 0xA2, 0x4B, 0xC9, 0xBE, + 0x96, 0x93, 0x96, 0x3E, 0x3F, 0xD0, 0xE2, 0x3D, 0x11, 0xB9, 0xF3, 0xBC, + 0x71, 0x8C, 0xD2, 0xBC, 0x1C, 0x6B, 0x74, 0x3C, 0x52, 0x5D, 0xAB, 0x3D, + 0x42, 0x38, 0xAF, 0xBD, 0x98, 0xCC, 0xC7, 0x3E, 0xB8, 0x7A, 0xD2, 0xBE, + 0x33, 0xA2, 0xF6, 0x3E, 0xCF, 0x9F, 0xC7, 0x3C, 0x97, 0x42, 0x7D, 0xBE, + 0x05, 0xA7, 0x83, 0x3E, 0x5E, 0x0C, 0x64, 0xBE, 0xB5, 0x74, 0x0E, 0xBE, + 0x9A, 0x26, 0x03, 0xBF, 0xBA, 0xDA, 0x0B, 0xBF, 0xDF, 0x0A, 0x42, 0xBE, + 0xC4, 0xD9, 0xBD, 0x3E, 0x8E, 0xDE, 0x96, 0xBF, 0x98, 0x59, 0x48, 0x3F, + 0xF3, 0xDD, 0xA9, 0x3E, 0x70, 0x56, 0xA2, 0x3F, 0x50, 0xF8, 0x39, 0xBE, + 0x30, 0x02, 0xAA, 0x3E, 0x6C, 0xB2, 0xC6, 0x3E, 0xD8, 0x12, 0x97, 0xBD, + 0x4B, 0xFD, 0xB4, 0x3E, 0x23, 0xC4, 0xA1, 0x3E, 0x69, 0xE0, 0x94, 0x3E, + 0x22, 0xF5, 0x43, 0xBF, 0xBF, 0x98, 0xA9, 0xBE, 0xFB, 0xC4, 0xBC, 0xBB, + 0x24, 0x75, 0xF7, 0x3F, 0xA3, 0xE4, 0x0C, 0x3D, 0x9D, 0xE9, 0x9C, 0x3E, + 0x4F, 0x10, 0xA3, 0xBE, 0x2B, 0x28, 0xCD, 0x3E, 0x93, 0x8D, 0x67, 0x3D, + 0x38, 0x92, 0x0E, 0x3E, 0x71, 0x4F, 0x7D, 0x3D, 0xAF, 0xA7, 0x79, 0xBE, + 0x7E, 0x92, 0xC9, 0xBC, 0x1F, 0x94, 0x31, 0x3D, 0x0B, 0x3C, 0x22, 0x3C, + 0x63, 0x23, 0xA7, 0xBD, 0xC5, 0xBD, 0x3E, 0xBC, 0x78, 0xF1, 0xA6, 0xBE, + 0xBF, 0xD4, 0xA2, 0x3D, 0x36, 0x04, 0x2A, 0xBD, 0x97, 0x04, 0x9F, 0x3D, + 0x62, 0x2B, 0xED, 0x3C, 0xE1, 0x3C, 0x5F, 0xBE, 0x51, 0xB5, 0x94, 0x3C, + 0x98, 0x2B, 0xB2, 0xBC, 0xD4, 0x3C, 0xDD, 0x3C, 0xBC, 0xDD, 0x20, 0x3E, + 0x39, 0x52, 0xA3, 0xBB, 0x14, 0x3E, 0x40, 0xBD, 0xC9, 0x34, 0xB2, 0xBD, + 0xB6, 0xB3, 0x6D, 0x3D, 0x2C, 0xD4, 0x17, 0x3D, 0x44, 0x96, 0x91, 0x3E, + 0xB3, 0x88, 0x3E, 0x3E, 0xFA, 0xDC, 0x31, 0x3C, 0x89, 0x74, 0xF1, 0x3C, + 0x72, 0x57, 0xDC, 0x3D, 0x57, 0xD6, 0xA1, 0x3E, 0x63, 0x09, 0x79, 0xBE, + 0x09, 0xF4, 0x82, 0x3D, 0x1F, 0x1B, 0x83, 0xBE, 0x50, 0xF8, 0xB3, 0x3D, + 0x01, 0xC0, 0xC4, 0x3E, 0x2F, 0x19, 0x64, 0xBE, 0x88, 0x04, 0x6C, 0x3D, + 0xE4, 0xA4, 0x13, 0xBE, 0x8D, 0xED, 0x84, 0x3D, 0xF3, 0x4D, 0xCE, 0xBC, + 0x12, 0x15, 0x51, 0x3E, 0xE8, 0x95, 0x0B, 0x3E, 0xF0, 0x9D, 0x98, 0x3C, + 0x6B, 0x3A, 0x5F, 0xBD, 0x39, 0xCE, 0x1A, 0xBD, 0x22, 0x91, 0xB9, 0x3E, + 0xBC, 0xE0, 0x3B, 0x3E, 0x45, 0xD3, 0x1B, 0xBC, 0x52, 0xF2, 0x06, 0xBE, + 0xB7, 0x2E, 0x0C, 0xBD, 0x8B, 0x0F, 0x48, 0xBE, 0xF0, 0x03, 0x13, 0x3D, + 0x3D, 0x29, 0xBD, 0x3B, 0xEC, 0x68, 0x56, 0xBD, 0xEA, 0xE6, 0x20, 0x3C, + 0xCD, 0x2E, 0xC2, 0x3C, 0xA2, 0xE1, 0xD9, 0x3D, 0x64, 0x92, 0x17, 0xBE, + 0xDE, 0xF6, 0x16, 0xBE, 0xAB, 0x20, 0x28, 0xBE, 0x7F, 0x01, 0x67, 0xBE, + 0x7E, 0xB0, 0xD3, 0x3D, 0xFE, 0x9F, 0x0A, 0xBE, 0x31, 0x13, 0xBC, 0x3B, + 0xDD, 0x93, 0x74, 0xBD, 0x7C, 0x4F, 0x8B, 0xBD, 0x68, 0xEB, 0xE2, 0x3E, + 0x75, 0x83, 0x18, 0x3E, 0xD1, 0x25, 0x52, 0x3D, 0x68, 0x2C, 0xD1, 0x3C, + 0x61, 0xCC, 0xD7, 0x3C, 0xE9, 0xDF, 0x80, 0x3C, 0xF2, 0x4A, 0x01, 0xBE, + 0xC4, 0x4F, 0xD4, 0xBD, 0xA5, 0x00, 0x82, 0x3D, 0x47, 0xC3, 0x83, 0xBC, + 0x06, 0x8D, 0x3C, 0xBD, 0xB5, 0x4F, 0x6C, 0xBE, 0x4E, 0x1A, 0x92, 0xBC, + 0x90, 0x66, 0x6A, 0x3D, 0xE3, 0x83, 0x7D, 0x3D, 0x16, 0x17, 0x1A, 0x3D, + 0x86, 0x24, 0xE3, 0x3C, 0x82, 0xA9, 0x05, 0x3D, 0x38, 0xC8, 0xA1, 0x3C, + 0x1E, 0x1C, 0x3C, 0xBD, 0x47, 0x9E, 0xB1, 0xBD, 0x3A, 0x9F, 0x36, 0xBE, + 0xC4, 0x75, 0x8C, 0x3E, 0x67, 0xDE, 0xA1, 0x3D, 0x2A, 0x73, 0xEF, 0xBC, + 0x2C, 0x05, 0x3A, 0x3D, 0x02, 0x8E, 0x03, 0x3E, 0x8E, 0xBC, 0xF1, 0x3E, + 0x36, 0x08, 0x05, 0x3E, 0x8D, 0x59, 0x2D, 0x3D, 0x68, 0xD0, 0xD9, 0xBC, + 0xDB, 0xED, 0x9C, 0xBD, 0x9C, 0x1B, 0x22, 0x3D, 0xB6, 0x12, 0xC8, 0xBC, + 0x85, 0x2A, 0x19, 0xBD, 0xAC, 0x8E, 0xDC, 0xBD, 0x87, 0xC4, 0xD0, 0xBC, + 0xC4, 0x72, 0x52, 0xBD, 0xE6, 0x8F, 0x55, 0xBD, 0x2C, 0x5D, 0xFE, 0x3D, + 0x72, 0xA5, 0xA6, 0xBD, 0x95, 0x55, 0x12, 0x3D, 0xFB, 0xBA, 0x57, 0x3D, + 0xE0, 0x96, 0x1A, 0x3E, 0x99, 0x14, 0x05, 0x3D, 0x03, 0xAC, 0x87, 0x3D, + 0xB0, 0x7E, 0x25, 0xBD, 0xE0, 0x1F, 0xB5, 0xBA, 0xFC, 0x58, 0x97, 0xBD, + 0xB4, 0x22, 0x13, 0xBD, 0xB4, 0xDC, 0x3E, 0x3D, 0xFC, 0x5D, 0x08, 0x3D, + 0x43, 0x56, 0x34, 0x3E, 0xD8, 0xB0, 0xE2, 0xBD, 0x68, 0x7D, 0x55, 0xBE, + 0x6B, 0x0F, 0xA5, 0x3D, 0xB1, 0x71, 0x8A, 0xBD, 0x87, 0x1E, 0x08, 0xBE, + 0x3E, 0x84, 0x34, 0xBE, 0x10, 0x13, 0xD0, 0xBE, 0x0C, 0x6D, 0x31, 0x3D, + 0x5E, 0x1F, 0x92, 0x3C, 0x08, 0x02, 0x0F, 0xBB, 0x0F, 0xF5, 0x7E, 0x3D, + 0xCA, 0x51, 0x87, 0x3B, 0x04, 0x17, 0xB4, 0x3D, 0x38, 0x34, 0x9E, 0xBD, + 0x6F, 0xE5, 0x2A, 0xBC, 0x44, 0x8C, 0xB0, 0x3D, 0xA7, 0x8A, 0x2F, 0x3E, + 0xE2, 0x37, 0x06, 0xBE, 0xAD, 0x7F, 0xCE, 0x3D, 0x4A, 0xE6, 0xB9, 0xBC, + 0x23, 0xF5, 0xCA, 0x3D, 0x5F, 0x9B, 0x64, 0x3D, 0x54, 0x6F, 0xB7, 0xBE, + 0x49, 0x95, 0x8B, 0x3E, 0x37, 0xDA, 0x43, 0xBD, 0xBE, 0xD7, 0x91, 0x3D, + 0xB5, 0xA3, 0xE3, 0x3C, 0xB3, 0xEE, 0x13, 0xBE, 0x32, 0xF8, 0xED, 0xBC, + 0x04, 0xD7, 0x61, 0x3B, 0xB9, 0x02, 0x9A, 0x3C, 0x90, 0xC4, 0x44, 0xBD, + 0xC4, 0x3F, 0x29, 0x3D, 0x3A, 0x3C, 0x46, 0x3E, 0xAE, 0xAE, 0xF4, 0xBD, + 0xEE, 0xF0, 0xB6, 0x3D, 0x52, 0x7C, 0xEC, 0x3C, 0xD0, 0xCB, 0x47, 0x3E, + 0x6C, 0x05, 0x2C, 0x3E, 0x9D, 0x1C, 0x9A, 0x3E, 0x39, 0xD5, 0xA3, 0xBD, + 0xEB, 0xF8, 0x16, 0xBF, 0x60, 0x1A, 0x7C, 0xBE, 0xC5, 0x9A, 0x9F, 0xBE, + 0x84, 0x33, 0x74, 0x3F, 0x5E, 0x18, 0x1D, 0x3E, 0x7A, 0x4C, 0x24, 0xBE, + 0x9D, 0xF2, 0xA6, 0x3D, 0x6D, 0xE3, 0x86, 0x3E, 0x3C, 0xAF, 0x07, 0x3E, + 0xA3, 0xC8, 0xB3, 0xBE, 0x12, 0xDA, 0xA2, 0xBF, 0x52, 0xA8, 0x91, 0x3D, + 0xC3, 0xEE, 0xFA, 0x3E, 0x71, 0x03, 0xEA, 0xBD, 0xB2, 0x2E, 0x90, 0xBF, + 0x29, 0x45, 0x74, 0xBF, 0x68, 0x44, 0x55, 0xBE, 0xD2, 0xA4, 0xCE, 0x3C, + 0x3F, 0x83, 0x24, 0xBF, 0x16, 0x69, 0x71, 0xBE, 0x44, 0x8E, 0xCC, 0x3C, + 0xA5, 0xE0, 0x56, 0xBE, 0xB4, 0x54, 0xA1, 0x3F, 0xAB, 0x2B, 0x32, 0xBE, + 0xE5, 0xCE, 0x90, 0x3F, 0xB3, 0x39, 0x81, 0x3E, 0xC6, 0xAE, 0x2D, 0x3E, + 0x82, 0xAE, 0xA6, 0xBF, 0x1C, 0xD0, 0xC8, 0xBD, 0xB2, 0xB2, 0xCF, 0xBE, + 0x21, 0x32, 0x16, 0xBF, 0x2E, 0x22, 0x70, 0xBE, 0x4B, 0x0D, 0xD1, 0x3D, + 0xAA, 0x88, 0x85, 0x3D, 0xC2, 0x00, 0x23, 0xBE, 0x56, 0x04, 0x40, 0x3C, + 0x07, 0xEB, 0xA1, 0x3B, 0xC2, 0x78, 0x25, 0x3E, 0x62, 0xE2, 0x0B, 0x3D, + 0x5D, 0xE5, 0x03, 0x3E, 0x6C, 0xF3, 0xCE, 0xBB, 0x67, 0x5C, 0xAE, 0xBD, + 0x67, 0x4E, 0x5E, 0x3D, 0xF0, 0xCF, 0x1E, 0x3D, 0xF6, 0xDB, 0x0A, 0xB8, + 0xD2, 0xEB, 0x55, 0x3A, 0xB1, 0x4F, 0x8B, 0x3D, 0xAE, 0xBA, 0xBD, 0xBD, + 0x5B, 0xA1, 0x09, 0x3E, 0xD1, 0xCE, 0x1D, 0x3B, 0x93, 0xD8, 0x86, 0x3B, + 0x2C, 0xBC, 0x6D, 0x3C, 0xCD, 0x4F, 0xBE, 0xBC, 0x86, 0x46, 0x79, 0x3D, + 0x61, 0xA1, 0x07, 0xBE, 0x83, 0xF5, 0xC6, 0x3D, 0x3C, 0xAE, 0x0E, 0x3E, + 0x1C, 0xBC, 0xBD, 0xBD, 0x69, 0x17, 0x07, 0x3E, 0xEE, 0x63, 0xEE, 0x3D, + 0x77, 0xD9, 0x3E, 0x3E, 0xF7, 0xCE, 0x25, 0x3E, 0xB1, 0xE6, 0x4D, 0x3E, + 0x56, 0x25, 0xB7, 0xBD, 0x03, 0xC5, 0x08, 0xBD, 0x78, 0xAB, 0x74, 0xBD, + 0x7A, 0xC8, 0x07, 0x3E, 0xC5, 0x79, 0xD2, 0xBD, 0xB1, 0xE2, 0x3C, 0xBC, + 0x8D, 0xE8, 0x4C, 0x3D, 0xEB, 0x8D, 0x1D, 0xBD, 0x5D, 0xFA, 0x44, 0xBD, + 0xA0, 0x35, 0xA8, 0x3D, 0x35, 0x65, 0xE7, 0xBC, 0x03, 0x77, 0x45, 0x3B, + 0x55, 0x6C, 0x6C, 0xBC, 0x3C, 0xDE, 0xFB, 0x3B, 0x3B, 0x7F, 0x16, 0xBD, + 0x20, 0x2A, 0xF5, 0xBD, 0xB3, 0x2C, 0xAE, 0xBC, 0xE4, 0x1B, 0xAF, 0xBC, + 0x3C, 0x01, 0x5E, 0xBC, 0x86, 0xCF, 0x64, 0x3C, 0xE2, 0xB8, 0x04, 0xBD, + 0x10, 0x41, 0x11, 0x3D, 0xBC, 0xEE, 0xFE, 0xBC, 0x57, 0x85, 0x85, 0x3D, + 0x25, 0x66, 0x1F, 0xBD, 0xFA, 0x78, 0x6C, 0xBD, 0x36, 0xFE, 0x54, 0x3D, + 0x43, 0x33, 0x11, 0xBD, 0x4E, 0x5D, 0x9D, 0xBC, 0x39, 0x6F, 0xE4, 0xBD, + 0x76, 0x27, 0x79, 0xBE, 0x13, 0x3E, 0xCE, 0xBD, 0xDE, 0xD9, 0x0B, 0x3B, + 0xE3, 0x0C, 0x4C, 0xBF, 0x5B, 0x17, 0x39, 0x3E, 0xD5, 0x30, 0xE3, 0x3E, + 0xEC, 0x69, 0xC9, 0x3F, 0x28, 0x5F, 0x5A, 0x3E, 0x09, 0x20, 0xBC, 0xBD, + 0x1D, 0x26, 0x0F, 0xBF, 0x68, 0xB0, 0xEE, 0xBE, 0x42, 0x93, 0xEF, 0xBD, + 0xC2, 0xCE, 0x28, 0xBE, 0x57, 0x7C, 0x46, 0xBF, 0x54, 0xF0, 0x0D, 0x3D, + 0xB4, 0xA8, 0x3D, 0x3F, 0x19, 0x5E, 0xC4, 0x3F, 0x5B, 0xD1, 0xF0, 0x3C, + 0xBA, 0x4C, 0xF8, 0x3E, 0x48, 0xF9, 0x23, 0xBF, 0x88, 0xFA, 0x30, 0x3C, + 0xC0, 0x7F, 0x49, 0xBF, 0x24, 0xB7, 0x94, 0xBF, 0x8E, 0xB4, 0xA3, 0xBD, + 0xC2, 0xAE, 0x59, 0xBE, 0x94, 0xEB, 0x81, 0x3F, 0xAC, 0xB8, 0x86, 0xBF, + 0x45, 0x88, 0xE5, 0x3E, 0x50, 0x83, 0x01, 0xBD, 0x1B, 0xE9, 0x31, 0x3B, + 0x9A, 0xBC, 0x1E, 0xBF, 0x8A, 0xC4, 0x9D, 0x3E, 0xA2, 0x9E, 0xA1, 0x3E, + 0xDE, 0xA5, 0xAB, 0x3D, 0x70, 0x60, 0xBB, 0xBE, 0x1C, 0xD5, 0x81, 0x3E, + 0x83, 0x49, 0xD6, 0xBE, 0x5C, 0xFC, 0x49, 0x3F, 0xA6, 0xAB, 0xDD, 0xBC, + 0x7D, 0x94, 0x20, 0xBD, 0x02, 0x6A, 0xC3, 0x3D, 0x05, 0x53, 0x43, 0x3E, + 0x9C, 0xD1, 0x9A, 0x3E, 0x20, 0x92, 0xB2, 0xBC, 0xE9, 0x90, 0xB9, 0xBE, + 0x7E, 0xD8, 0xA2, 0xBC, 0x87, 0x33, 0x00, 0xBC, 0xFC, 0x39, 0x2A, 0xBD, + 0x97, 0xAC, 0xDF, 0xBD, 0x2E, 0x6A, 0xAC, 0xBE, 0x1F, 0xDD, 0xAE, 0xBD, + 0xD2, 0x7A, 0xEE, 0x3C, 0x45, 0x15, 0x71, 0xBC, 0x0B, 0x0B, 0xBE, 0x3E, + 0xEC, 0x51, 0xE9, 0xBE, 0x1F, 0x88, 0x7F, 0x3C, 0x25, 0x9C, 0x79, 0xBD, + 0x7F, 0xD5, 0xC0, 0xBD, 0xA6, 0x2C, 0x3F, 0xBE, 0x10, 0x46, 0xF0, 0xBD, + 0x8D, 0xCF, 0xEC, 0x3D, 0x79, 0x73, 0xE1, 0xBB, 0x37, 0xF0, 0x0C, 0xBF, + 0xB5, 0x1A, 0x1E, 0x3E, 0x26, 0xE6, 0xFE, 0x3D, 0x47, 0x1B, 0x0F, 0x3E, + 0x77, 0x56, 0xA9, 0xBD, 0x4E, 0xC7, 0xF3, 0x3C, 0xBC, 0x69, 0x38, 0x3E, + 0x6E, 0x52, 0x34, 0xBE, 0xE1, 0x3F, 0xA6, 0x3E, 0x73, 0x1B, 0x8D, 0x3D, + 0x28, 0x69, 0x30, 0xBE, 0xA5, 0x03, 0xC1, 0x3E, 0x59, 0x05, 0xE8, 0x3E, + 0x61, 0xE3, 0x15, 0xBE, 0x7C, 0xBE, 0x1F, 0x3F, 0x2F, 0xE7, 0xC3, 0xBB, + 0xC2, 0xD3, 0xB0, 0x3D, 0x27, 0x81, 0xC8, 0xBE, 0xE6, 0xD4, 0x26, 0x3E, + 0xD8, 0xAB, 0x26, 0x3E, 0x8A, 0xF0, 0x0E, 0x3E, 0x90, 0x7E, 0x8F, 0xBE, + 0xCF, 0xD8, 0xD2, 0xB9, 0xFC, 0xE8, 0x36, 0x3E, 0x48, 0xB8, 0x1E, 0xBE, + 0x8F, 0xFF, 0x4E, 0xBD, 0xA7, 0x76, 0x48, 0x3D, 0xE1, 0x5D, 0x76, 0xBE, + 0x5E, 0x27, 0x3B, 0xBE, 0x87, 0xB8, 0x96, 0x3D, 0xE5, 0x35, 0x50, 0xBE, + 0xE1, 0x32, 0x30, 0x3D, 0xB8, 0xA3, 0x91, 0xBE, 0x27, 0xAD, 0xC3, 0x3D, + 0xD7, 0xB3, 0x0C, 0x3E, 0xBA, 0xA5, 0xE4, 0x3E, 0x37, 0xEA, 0x14, 0x3E, + 0xB8, 0xE6, 0x4F, 0xBE, 0x1E, 0xD0, 0x1D, 0xBF, 0x1F, 0x8A, 0x28, 0xBE, + 0x99, 0xD2, 0x7E, 0x3F, 0x06, 0x37, 0xE4, 0x3D, 0x49, 0xCD, 0x27, 0x3D, + 0x79, 0x16, 0xB4, 0xBE, 0xC3, 0xA5, 0x2D, 0xBE, 0xE9, 0xCC, 0x65, 0x3D, + 0x03, 0xEB, 0x35, 0xBE, 0x1C, 0x42, 0x63, 0xBE, 0xF2, 0x42, 0x4D, 0xBD, + 0x75, 0x81, 0x16, 0xBF, 0x90, 0x66, 0x9E, 0xBE, 0xAC, 0xFE, 0x8B, 0x3F, + 0x06, 0x1A, 0xA5, 0xBE, 0xDD, 0x98, 0x25, 0x3F, 0xAA, 0xD6, 0x20, 0x3D, + 0xBA, 0x9F, 0x27, 0xBC, 0xC7, 0x53, 0x70, 0xBE, 0x70, 0x7F, 0xAF, 0x3D, + 0x3A, 0x24, 0x31, 0xBD, 0xD8, 0x2D, 0x4F, 0xBE, 0x85, 0xFD, 0xD0, 0xBD, + 0x0A, 0xEC, 0xA7, 0xBB, 0xD1, 0xBE, 0x99, 0x3C, 0x78, 0xE9, 0x20, 0x3E, + 0x25, 0x0D, 0x06, 0xBF, 0x32, 0xD3, 0x20, 0xBE, 0xC7, 0xF5, 0x92, 0x3F, + 0x4C, 0x04, 0x5B, 0x3F, 0x9E, 0x95, 0xD3, 0xBD, 0x4B, 0xB1, 0x5C, 0x3D, + 0xEC, 0x5F, 0xF7, 0xBD, 0x34, 0x43, 0xF9, 0x3E, 0x8E, 0xCD, 0xB8, 0x3F, + 0xB1, 0x02, 0x02, 0x3F, 0x06, 0x69, 0x95, 0x3E, 0x45, 0xB0, 0x12, 0xBE, + 0xBB, 0xF7, 0x77, 0xBD, 0xA6, 0x10, 0xC6, 0x3E, 0x9D, 0xB7, 0xA8, 0xBD, + 0xD3, 0xBD, 0x3B, 0x3F, 0x65, 0xED, 0xBA, 0x3B, 0x38, 0x67, 0x20, 0xBE, + 0xB6, 0xA3, 0xC8, 0xBE, 0xD0, 0xB8, 0x3E, 0xBF, 0xE8, 0xF5, 0x32, 0xBF, + 0x14, 0xDD, 0x32, 0x3F, 0x72, 0xCE, 0xB4, 0x3D, 0xB7, 0x22, 0xF3, 0xBC, + 0xD4, 0xBC, 0xA5, 0xBE, 0xA2, 0x15, 0x4F, 0x3D, 0xF5, 0x1D, 0x53, 0xBD, + 0xCE, 0x8F, 0xAB, 0xBF, 0x34, 0xB5, 0x3E, 0xBF, 0x1C, 0xB1, 0xB0, 0xBE, + 0x59, 0x80, 0x58, 0xBE, 0xA3, 0x27, 0x90, 0xBE, 0x9A, 0x0A, 0x2F, 0xBF, + 0x37, 0xAE, 0x6E, 0x3D, 0x03, 0xA5, 0xD0, 0xBE, 0x4E, 0xE1, 0x7A, 0xBF, + 0xC1, 0x59, 0x8C, 0x3D, 0x29, 0xF9, 0x77, 0xBE, 0x4A, 0x7A, 0x4B, 0x3E, + 0x8D, 0xEE, 0x79, 0x3E, 0x78, 0x9F, 0x5C, 0x3D, 0xFE, 0xC4, 0xAF, 0xBC, + 0x2D, 0xAB, 0x01, 0x3E, 0x1A, 0x9C, 0xE0, 0xBE, 0x7E, 0x01, 0xA3, 0xBE, + 0x1A, 0x1F, 0xD7, 0xBC, 0x7A, 0xC5, 0x2A, 0xBE, 0xE6, 0x03, 0x07, 0x3D, + 0x27, 0xD3, 0xBD, 0x3C, 0x3B, 0xAC, 0x12, 0x3D, 0xC5, 0xF6, 0x9C, 0x3D, + 0x6F, 0xE9, 0xC7, 0xBE, 0x01, 0xB7, 0xEE, 0x3E, 0xC3, 0x17, 0x5A, 0x3E, + 0x2E, 0x39, 0x0C, 0x3C, 0xAA, 0xB5, 0x9A, 0xBD, 0x20, 0x63, 0x72, 0xBE, + 0xA4, 0xE4, 0xEE, 0x3C, 0x42, 0x63, 0x55, 0xBE, 0x84, 0xD7, 0xDC, 0x3D, + 0x2C, 0x0C, 0xF5, 0xBD, 0xAB, 0xD8, 0x2E, 0xBF, 0xBE, 0x06, 0x09, 0x3D, + 0xB0, 0x12, 0xBC, 0xBD, 0x45, 0x29, 0xC0, 0x3D, 0x36, 0xCC, 0x11, 0x3E, + 0xD4, 0x3B, 0x7C, 0xBE, 0x0D, 0xD0, 0x5A, 0x3E, 0xAD, 0x6B, 0x48, 0xBE, + 0x1A, 0xFD, 0x11, 0x3E, 0x7D, 0xB3, 0xCE, 0xBC, 0xD7, 0x31, 0x9B, 0xBE, + 0x26, 0x32, 0x6E, 0xBE, 0x92, 0x09, 0x4E, 0xBD, 0x1B, 0x32, 0x7C, 0x3D, + 0xBD, 0x15, 0x53, 0xBC, 0x07, 0x28, 0xEE, 0xBB, 0x21, 0xAF, 0x9F, 0xBC, + 0x04, 0xF1, 0x20, 0xBE, 0xE8, 0xA2, 0x57, 0x3D, 0x1E, 0xEB, 0x9E, 0x3C, + 0x4A, 0x51, 0x56, 0xBC, 0x22, 0x50, 0x5F, 0xBD, 0xE5, 0x82, 0xE9, 0xBD, + 0xA8, 0xB8, 0x98, 0xBD, 0x80, 0xA6, 0x5B, 0xBD, 0xA8, 0xE1, 0x17, 0xBC, + 0xBA, 0x1A, 0x14, 0x3E, 0x08, 0xB9, 0x8C, 0xBD, 0x85, 0xC9, 0x00, 0xBD, + 0xED, 0x69, 0x3E, 0x3C, 0x95, 0x8B, 0xDC, 0x3D, 0xA9, 0x19, 0xA0, 0xBC, + 0x32, 0xBC, 0x0D, 0x3E, 0xA7, 0xBB, 0x60, 0x3D, 0x54, 0x9D, 0xBB, 0xBC, + 0xB0, 0x0B, 0xBD, 0xBD, 0xF8, 0x03, 0x1B, 0xBD, 0xAF, 0x54, 0xC4, 0x3E, + 0x0F, 0x38, 0xF2, 0x3C, 0xB2, 0xED, 0x48, 0xBD, 0xA4, 0x3C, 0xF4, 0x3D, + 0xCF, 0xA5, 0x9B, 0xBC, 0x3F, 0xAB, 0x2B, 0xBE, 0x63, 0x5E, 0xFF, 0xBD, + 0xDE, 0x9A, 0x4B, 0xBC, 0x4F, 0x18, 0xFB, 0x3B, 0x08, 0x31, 0xBF, 0x39, + 0x41, 0x32, 0x29, 0x3D, 0xD7, 0xCA, 0x1F, 0x3D, 0x33, 0xDC, 0xB9, 0xBD, + 0xBD, 0xEA, 0x1D, 0x3D, 0xB2, 0x16, 0xF3, 0xBC, 0x78, 0x14, 0x64, 0xBD, + 0xC7, 0xCB, 0x4B, 0xBD, 0x44, 0xBE, 0x0F, 0xBE, 0x92, 0x10, 0x06, 0xBD, + 0xFF, 0x74, 0x0F, 0xBD, 0xCA, 0xB2, 0x8F, 0xBB, 0x54, 0x24, 0x93, 0x3D, + 0x73, 0x25, 0x17, 0x3C, 0x35, 0x3F, 0xFE, 0xBC, 0x03, 0xF7, 0x81, 0xBC, + 0xE5, 0x05, 0xD0, 0xBC, 0x24, 0xB6, 0x1B, 0x3D, 0x0C, 0xF9, 0x89, 0x3D, + 0x06, 0x5C, 0x9A, 0x3C, 0xDE, 0x46, 0x0B, 0x3D, 0x5C, 0xCE, 0x4E, 0xBD, + 0xE6, 0xB1, 0xC2, 0x3C, 0x17, 0x60, 0x6D, 0x3E, 0xF3, 0x4E, 0xFD, 0xBC, + 0xD8, 0x9C, 0x07, 0xBD, 0xB3, 0xF7, 0x7E, 0x3A, 0xB8, 0xEE, 0x9D, 0x3C, + 0x39, 0x7E, 0x87, 0x3E, 0x1B, 0x5C, 0x08, 0x3E, 0x66, 0x74, 0xDC, 0x3B, + 0x10, 0x27, 0xDC, 0xBD, 0xA9, 0xDA, 0x0C, 0x3A, 0xDE, 0xEC, 0x81, 0xBC, + 0x45, 0xA3, 0x84, 0xBD, 0x86, 0x38, 0x2B, 0x3E, 0x93, 0x62, 0x35, 0xBD, + 0xF6, 0x6B, 0xA9, 0xBC, 0x5D, 0x4E, 0x57, 0xBD, 0xAF, 0xEE, 0x9F, 0x3E, + 0x07, 0x0C, 0x0B, 0xBD, 0x6B, 0x79, 0xB0, 0x3D, 0x22, 0xFB, 0x4B, 0xBD, + 0xFA, 0xA8, 0x27, 0x3C, 0x5A, 0x6D, 0x92, 0xBC, 0x00, 0x09, 0xBA, 0xBC, + 0xFA, 0xE2, 0xDB, 0x3C, 0x48, 0x5D, 0x74, 0xBB, 0x11, 0xF0, 0xBD, 0x3C, + 0x7D, 0xBF, 0x8C, 0xBD, 0x42, 0x84, 0x08, 0xBE, 0x12, 0x86, 0x49, 0xBD, + 0xCC, 0x85, 0x1D, 0xBD, 0x92, 0x90, 0x7A, 0xBD, 0x95, 0x66, 0xD3, 0xBD, + 0xEC, 0x24, 0xFF, 0xBD, 0xBB, 0x46, 0x34, 0xBD, 0x34, 0x0D, 0x38, 0x3D, + 0xA3, 0x30, 0xA4, 0x3C, 0x1A, 0x9F, 0x94, 0x3D, 0x3C, 0x37, 0x9D, 0x3E, + 0x58, 0x4F, 0x83, 0x3C, 0x0F, 0x21, 0x3B, 0x3D, 0x6E, 0x2A, 0x64, 0xBD, + 0xC9, 0x99, 0x3E, 0x3D, 0xB2, 0x8E, 0xCC, 0xBC, 0xD4, 0xA3, 0xBC, 0x3C, + 0xE7, 0xD0, 0x99, 0x3C, 0x1A, 0x7F, 0xD5, 0x3A, 0x5B, 0x7F, 0xC3, 0xBC, + 0x65, 0x4E, 0xDB, 0xBD, 0x6E, 0x21, 0xFA, 0x3D, 0xBF, 0x1A, 0x49, 0xBD, + 0x53, 0xC1, 0x1D, 0x3D, 0xA2, 0xAC, 0x8B, 0xBC, 0x74, 0xF1, 0x9B, 0xBC, + 0x8F, 0x00, 0xCA, 0x3D, 0xBC, 0x6F, 0x8D, 0x3C, 0x17, 0x2E, 0xA3, 0xB9, + 0x12, 0x00, 0x3A, 0xBD, 0xC8, 0x33, 0x01, 0x3C, 0xC2, 0x47, 0x8C, 0xBD, + 0xF1, 0x25, 0x9A, 0x3D, 0x2D, 0xB4, 0x2F, 0x3D, 0xD4, 0x14, 0x84, 0xBD, + 0x1E, 0x4E, 0x62, 0x3C, 0x0A, 0x94, 0x53, 0xBD, 0xCB, 0x77, 0x0D, 0x3F, + 0x38, 0x6B, 0xF5, 0xBD, 0x1F, 0x94, 0x68, 0x3D, 0x0E, 0x5A, 0x65, 0xBE, + 0xE1, 0xD5, 0xA1, 0xBD, 0x2B, 0xEA, 0x65, 0x3E, 0x72, 0xC5, 0xD0, 0xBB, + 0x32, 0xD9, 0x6E, 0xBD, 0x61, 0x88, 0x3A, 0x3C, 0xED, 0xBC, 0x55, 0xBE, + 0xCD, 0x1B, 0x1C, 0x3E, 0xDC, 0xA4, 0xFA, 0xBB, 0xF1, 0x5A, 0xBA, 0xBE, + 0x28, 0x34, 0x61, 0xBE, 0xA4, 0xA5, 0xCA, 0xBC, 0xE7, 0xEB, 0x39, 0x3D, + 0xBD, 0x49, 0xF3, 0x3E, 0x94, 0x55, 0x97, 0xBE, 0x85, 0x9D, 0x39, 0xBE, + 0xFE, 0xF3, 0x09, 0xBE, 0x27, 0x73, 0xF7, 0xBC, 0x1D, 0xDB, 0x5B, 0xBE, + 0x70, 0x9F, 0x16, 0xBE, 0xCC, 0xBB, 0x7A, 0x3C, 0xE1, 0xD6, 0x56, 0x3B, + 0xF6, 0x18, 0xFC, 0x3E, 0x74, 0x03, 0x4B, 0xBD, 0xC2, 0x6E, 0x44, 0x3E, + 0x54, 0x31, 0x77, 0x3D, 0x1C, 0xAF, 0x75, 0x3C, 0x59, 0x10, 0x06, 0x3F, + 0x43, 0xE9, 0x4D, 0x3C, 0x76, 0x30, 0xBD, 0x3E, 0x57, 0xD0, 0xA7, 0x3D, + 0xF7, 0x79, 0x6A, 0xBC, 0x95, 0xDB, 0x1A, 0x3F, 0xD6, 0x24, 0x39, 0xBF, + 0xD4, 0x01, 0x0D, 0x3D, 0xA3, 0x6B, 0x90, 0x3C, 0x58, 0x6C, 0x09, 0xBB, + 0xF4, 0x23, 0xFD, 0xBD, 0x2C, 0x71, 0x1B, 0x3E, 0xD9, 0x83, 0xC6, 0x3B, + 0x8B, 0x7B, 0x01, 0xBE, 0xF6, 0x5F, 0x53, 0x3E, 0xF8, 0xF6, 0x8E, 0xBE, + 0xF4, 0x3F, 0x83, 0xBC, 0x46, 0x67, 0xE1, 0xBC, 0xDD, 0x2E, 0x90, 0x3E, + 0xB7, 0xC4, 0xC8, 0xBE, 0x97, 0x37, 0xB4, 0x3E, 0x2C, 0x5C, 0x88, 0xBE, + 0xB0, 0xAA, 0x07, 0xBD, 0x21, 0x45, 0x51, 0x3F, 0xC5, 0x06, 0xD8, 0x3E, + 0x97, 0xBE, 0x50, 0x3B, 0x6D, 0xE1, 0xD2, 0x3C, 0x40, 0x7E, 0x8C, 0xBF, + 0xBA, 0xF4, 0x8C, 0x3E, 0xA7, 0x0F, 0x6D, 0xBE, 0x8D, 0x06, 0xDE, 0x3D, + 0x7B, 0xC2, 0x95, 0x3D, 0x15, 0xA0, 0xA9, 0x3F, 0xDD, 0xC9, 0x86, 0x3D, + 0xAC, 0xC8, 0x87, 0x3F, 0xA0, 0x45, 0x5E, 0x3D, 0x19, 0x94, 0x87, 0x3D, + 0x1D, 0xB6, 0xA3, 0xBD, 0x37, 0x83, 0x7B, 0x3F, 0x1E, 0xB7, 0x48, 0xBE, + 0x21, 0x73, 0xBB, 0x3E, 0xCC, 0x64, 0x7F, 0x3F, 0x95, 0xA8, 0xF4, 0x3E, + 0xA8, 0xBC, 0x15, 0x3F, 0x22, 0x66, 0x2A, 0x3F, 0x25, 0x3D, 0x93, 0xBE, + 0xE0, 0xE8, 0x0C, 0xBD, 0x5A, 0xC2, 0xE7, 0x3D, 0x44, 0x42, 0x93, 0x3D, + 0x6A, 0xF4, 0xB1, 0xBE, 0xC3, 0x25, 0x1B, 0xC0, 0x29, 0xF0, 0x75, 0xBF, + 0x26, 0xD8, 0x84, 0xBE, 0xDF, 0xB6, 0x21, 0xBF, 0xE3, 0xDB, 0x0E, 0xBE, + 0xB3, 0x09, 0xAE, 0xBF, 0xCD, 0x97, 0x34, 0x3F, 0xAA, 0x9F, 0x7F, 0xBE, + 0xC0, 0x88, 0x95, 0x3C, 0x66, 0x44, 0x07, 0x3E, 0x65, 0x0D, 0xFD, 0xBD, + 0x2F, 0xA6, 0x5C, 0x3F, 0x1A, 0xEF, 0x05, 0xBF, 0xBC, 0x32, 0xE8, 0xBE, + 0x07, 0x93, 0x1D, 0xBF, 0xAD, 0x5E, 0x29, 0xBF, 0x4C, 0x8B, 0x86, 0x3D, + 0x9C, 0x01, 0xDA, 0x3E, 0xD2, 0xAC, 0xCC, 0xBE, 0x0B, 0x69, 0xF3, 0xBD, + 0xE4, 0x6F, 0xBE, 0x3C, 0x37, 0x6B, 0xA5, 0x3D, 0xC8, 0xC1, 0xB7, 0x3D, + 0x7E, 0xA8, 0x60, 0x3C, 0x87, 0x3F, 0x42, 0xBC, 0x33, 0xCD, 0xA3, 0xBC, + 0x4E, 0x89, 0x87, 0xBD, 0xD6, 0x8B, 0x0E, 0x3C, 0x28, 0xC1, 0x9C, 0x3D, + 0x69, 0x60, 0x6D, 0xBD, 0x97, 0xD9, 0xE3, 0xBC, 0x7E, 0xFE, 0xE7, 0x3A, + 0x65, 0xBD, 0x26, 0x3E, 0xF9, 0x97, 0x66, 0xBC, 0xB0, 0x07, 0x8F, 0x3D, + 0x41, 0x28, 0xBE, 0xBC, 0x1E, 0xAE, 0x60, 0x3C, 0x17, 0xB6, 0x15, 0xBD, + 0xCF, 0xB1, 0x80, 0xBB, 0x04, 0xE0, 0xEE, 0x3C, 0x37, 0x99, 0xA3, 0xBC, + 0x1A, 0x57, 0x9E, 0x3D, 0x8D, 0xED, 0x4C, 0xBD, 0x0A, 0x8D, 0xEF, 0xBD, + 0x7F, 0x14, 0x7A, 0x3D, 0x58, 0xFF, 0x3D, 0xBD, 0x21, 0x5E, 0xF9, 0xBB, + 0x3E, 0x8A, 0xBE, 0xBC, 0xDB, 0x2A, 0xC9, 0xBE, 0x9C, 0x91, 0xD2, 0xBD, + 0x5B, 0x13, 0x78, 0x3C, 0xFE, 0xF9, 0x20, 0x3E, 0x6F, 0x3E, 0x9A, 0xBD, + 0xE0, 0xEC, 0xAD, 0x3E, 0xEF, 0x3E, 0x9D, 0x3E, 0xD1, 0x07, 0x30, 0xBC, + 0xFF, 0xC7, 0x85, 0x3C, 0x44, 0xDE, 0x31, 0xBD, 0xC1, 0xE8, 0x43, 0xBE, + 0x92, 0x7B, 0x08, 0xBD, 0x51, 0xC6, 0xB4, 0xBE, 0xAA, 0xE6, 0x9E, 0x3D, + 0xDC, 0x46, 0x69, 0xBC, 0x9C, 0xB6, 0x95, 0x3D, 0x11, 0x70, 0x7D, 0x3E, + 0xAF, 0x7B, 0x7A, 0xBE, 0xC9, 0xCC, 0x86, 0xBE, 0xC6, 0x4B, 0x3B, 0xBE, + 0x71, 0x2A, 0x56, 0xBC, 0x75, 0x66, 0x85, 0x3E, 0x59, 0xF3, 0x01, 0xBD, + 0x28, 0x51, 0x16, 0xBD, 0xA5, 0xAF, 0x8B, 0x3C, 0xBC, 0x5F, 0x26, 0xBE, + 0xEF, 0xB5, 0x75, 0xBD, 0x44, 0x81, 0x62, 0xBE, 0xF5, 0xA7, 0x33, 0x3D, + 0xEE, 0xE7, 0x7D, 0xBD, 0x92, 0x61, 0xAA, 0xBC, 0x71, 0xBD, 0x8E, 0x3D, + 0xE1, 0xE5, 0x45, 0xBF, 0x51, 0x68, 0xA7, 0x3D, 0x68, 0x0F, 0x0B, 0xBD, + 0xD6, 0xB0, 0xDF, 0xBD, 0x02, 0x56, 0x30, 0xBE, 0x3A, 0x62, 0xC2, 0x3E, + 0xF8, 0x94, 0x85, 0xBE, 0xB2, 0x74, 0x98, 0x3E, 0xB8, 0x55, 0xA8, 0xBE, + 0x31, 0x92, 0xC2, 0xBE, 0xBC, 0xD9, 0x7E, 0x3E, 0x0E, 0xBA, 0x8C, 0xBD, + 0x99, 0xD6, 0x04, 0x3E, 0xDD, 0x2A, 0xF5, 0xBE, 0xBD, 0xFA, 0xCF, 0x3E, + 0x90, 0x0E, 0xF4, 0xBD, 0xB9, 0x7A, 0x6F, 0x3F, 0xAD, 0xCE, 0x84, 0x3D, + 0x1B, 0xCD, 0x51, 0xBE, 0x04, 0xE4, 0x60, 0xBF, 0x93, 0x6B, 0xB5, 0x3E, + 0xEC, 0x27, 0xD3, 0x3C, 0xD6, 0xA7, 0x73, 0x3D, 0xEB, 0x1B, 0x1C, 0xBD, + 0xEA, 0x74, 0x24, 0x3E, 0x5F, 0x5D, 0x34, 0x3F, 0xE8, 0xE1, 0x0F, 0xBF, + 0x5C, 0x39, 0x44, 0xBE, 0x8F, 0x2E, 0x3E, 0x3D, 0xFF, 0xBC, 0xDF, 0x3E, + 0x9E, 0xA0, 0x14, 0xBF, 0x2A, 0x8F, 0x69, 0x3F, 0x4E, 0x7A, 0xAD, 0x3E, + 0xBC, 0x83, 0x06, 0xBF, 0x2C, 0x52, 0x33, 0xBE, 0x98, 0xE4, 0xDC, 0xBD, + 0xAB, 0x60, 0xDA, 0x3D, 0xEA, 0x91, 0xA1, 0xBD, 0x8E, 0xEB, 0x4C, 0x3B, + 0xBE, 0xAE, 0x85, 0xBD, 0x11, 0x96, 0xBA, 0xBD, 0x8C, 0x28, 0x24, 0xBD, + 0xEC, 0xFB, 0x49, 0xBD, 0x3A, 0x0D, 0xCF, 0xBD, 0x4E, 0xEE, 0xCB, 0x3D, + 0x80, 0xE3, 0xD6, 0xBD, 0x0A, 0x7A, 0x8F, 0x3B, 0x76, 0x4C, 0xA6, 0x3D, + 0x24, 0xE0, 0x22, 0x3E, 0x09, 0x42, 0x64, 0x3D, 0xD1, 0x76, 0xB9, 0x3D, + 0x19, 0x48, 0x63, 0xBD, 0x0D, 0x7C, 0x61, 0x3C, 0xA3, 0xE1, 0xEF, 0xBD, + 0x5F, 0xAC, 0x0E, 0xBD, 0xFB, 0x04, 0x17, 0x3D, 0x51, 0x5A, 0x84, 0xBD, + 0xCE, 0xC5, 0x23, 0x3E, 0xC4, 0xF7, 0x80, 0xBD, 0xE7, 0x87, 0x96, 0xBD, + 0x61, 0xEC, 0xE2, 0x3D, 0x0F, 0xF2, 0x01, 0xBD, 0x80, 0x3B, 0x20, 0xBD, + 0x8E, 0xED, 0x89, 0xBD, 0xF6, 0x64, 0x2B, 0xBE, 0x9F, 0xF5, 0x94, 0x3C, + 0xE6, 0x5E, 0xD5, 0xBC, 0x2C, 0x4E, 0xC0, 0x3C, 0xB9, 0x89, 0xD4, 0xBD, + 0x2B, 0x76, 0x23, 0x3D, 0x71, 0x94, 0xE1, 0xBD, 0x1F, 0x81, 0x93, 0x3C, + 0x95, 0xE0, 0xA0, 0x3C, 0xCE, 0x17, 0x90, 0xBC, 0xD6, 0xE2, 0xCC, 0x3D, + 0xD5, 0x83, 0xC4, 0x3D, 0x4B, 0x1D, 0x3C, 0x3D, 0x16, 0x61, 0xC1, 0x3C, + 0xB6, 0x47, 0x17, 0xBD, 0xA8, 0xE8, 0x92, 0xBD, 0x5C, 0x1C, 0xA4, 0xBD, + 0xB5, 0x19, 0xAB, 0x3D, 0x5B, 0xEC, 0x66, 0xBD, 0xE4, 0x65, 0x1D, 0xBD, + 0x9F, 0x26, 0x32, 0xBC, 0x59, 0xE8, 0x8F, 0x3B, 0x15, 0x44, 0x96, 0xBC, + 0x3E, 0x35, 0x37, 0x3C, 0xFA, 0x1A, 0x2C, 0x3C, 0xF9, 0xB3, 0x1C, 0xBD, + 0x3A, 0xD1, 0x83, 0x3D, 0x08, 0xA1, 0x35, 0xBE, 0xB3, 0x83, 0xD3, 0xBD, + 0x2D, 0x0A, 0xBF, 0x3C, 0x09, 0xC2, 0xB1, 0xBD, 0x95, 0x91, 0xCD, 0xBD, + 0x7D, 0x71, 0xC0, 0xBE, 0xAC, 0x0D, 0x77, 0x3C, 0xC2, 0xEB, 0x86, 0xBD, + 0x75, 0x45, 0x9A, 0xBD, 0x37, 0x37, 0x48, 0xBE, 0x8E, 0xAF, 0x8C, 0x3F, + 0x6E, 0x73, 0x12, 0xBF, 0xFF, 0x58, 0xFA, 0x3D, 0xBC, 0xC3, 0x01, 0x3E, + 0x6F, 0xCE, 0xC9, 0xBC, 0x25, 0x20, 0x8E, 0xBE, 0x7A, 0x7A, 0xAD, 0x3E, + 0xA0, 0xF0, 0xB7, 0xBE, 0x01, 0x65, 0x11, 0x3E, 0x48, 0xAC, 0x47, 0xBE, + 0xE0, 0x78, 0x63, 0x3D, 0x31, 0x7A, 0x4B, 0x3E, 0xAF, 0x5F, 0x04, 0xBF, + 0x77, 0xB7, 0x56, 0xBE, 0xD2, 0x80, 0x04, 0x3E, 0xC5, 0xCB, 0xAE, 0xBC, + 0x8C, 0xC9, 0x24, 0x3D, 0xF0, 0x78, 0xB4, 0xBD, 0x43, 0x52, 0xCA, 0x3C, + 0xAF, 0x02, 0x9E, 0xBD, 0x4A, 0x8C, 0x34, 0x3E, 0x6C, 0x98, 0x60, 0xBD, + 0x87, 0x61, 0x84, 0x3E, 0x27, 0xDE, 0xB3, 0xBD, 0x4D, 0xBE, 0x1E, 0xBD, + 0xDF, 0xD0, 0xA9, 0x3D, 0xDE, 0x3D, 0x4A, 0xBD, 0xA4, 0x0C, 0x26, 0xBF, + 0x2F, 0xE0, 0xF2, 0xBE, 0x5B, 0xC9, 0x46, 0x3E, 0x0B, 0xFB, 0xEB, 0x3D, + 0x89, 0x36, 0x01, 0xBB, 0x89, 0x62, 0xD1, 0xBE, 0x98, 0x5D, 0x10, 0xBF, + 0xFA, 0x8B, 0x32, 0xBF, 0xFB, 0x90, 0x22, 0x3F, 0xBB, 0xFC, 0x99, 0xBE, + 0x48, 0x6D, 0x27, 0xBF, 0xCF, 0xAD, 0xAC, 0xBC, 0x42, 0x41, 0x99, 0x3E, + 0xCE, 0x88, 0x1A, 0xBF, 0x55, 0x70, 0x49, 0xBE, 0x51, 0x1A, 0x22, 0xBF, + 0x7A, 0x0C, 0xE4, 0xBF, 0xD5, 0x3C, 0xF9, 0xBC, 0x7F, 0x6F, 0x6F, 0xBE, + 0xE2, 0x57, 0x09, 0xBF, 0xB2, 0x2A, 0xAC, 0x3B, 0x4D, 0xEE, 0x0F, 0xBF, + 0x97, 0xCA, 0x9B, 0x3E, 0x3F, 0x8C, 0x93, 0xBE, 0x69, 0xE7, 0xC4, 0xBE, + 0xF1, 0xE6, 0x98, 0x3D, 0xEB, 0x69, 0x32, 0x3F, 0x60, 0x65, 0x2C, 0x3E, + 0xB7, 0x7C, 0x69, 0xBE, 0xE3, 0x6C, 0x17, 0xBF, 0x51, 0x71, 0x38, 0x3A, + 0xB0, 0x85, 0x9F, 0xBE, 0x08, 0x27, 0x18, 0x3F, 0x4A, 0x0E, 0x36, 0x3F, + 0x77, 0x5D, 0xF4, 0xBE, 0x13, 0x88, 0x6B, 0xBC, 0xCC, 0x08, 0xAA, 0xBE, + 0x7B, 0x45, 0xA1, 0xBE, 0x38, 0x33, 0xA3, 0x3C, 0x34, 0xCF, 0x6C, 0x3D, + 0xEC, 0x4F, 0x09, 0xBE, 0x3D, 0x84, 0x92, 0xBD, 0xF6, 0x68, 0x47, 0xBE, + 0x25, 0xDB, 0xB0, 0xBD, 0x9D, 0x09, 0x2C, 0x3E, 0x34, 0x62, 0x1C, 0x3E, + 0x14, 0xEA, 0xDB, 0xBC, 0x1A, 0x68, 0x34, 0xBD, 0xDC, 0x14, 0x7F, 0x3D, + 0xD2, 0x4F, 0x79, 0x3D, 0xD0, 0xBE, 0xBC, 0x3E, 0x70, 0xA4, 0xA2, 0xBC, + 0x49, 0x62, 0xB5, 0xBB, 0x92, 0xB7, 0xA8, 0xBE, 0xCC, 0x3B, 0x2B, 0x3E, + 0x17, 0x3E, 0x50, 0xBA, 0x85, 0x3D, 0x04, 0xBA, 0x7A, 0xDE, 0xEA, 0xBD, + 0x36, 0x0E, 0x9F, 0x3E, 0x4C, 0x2D, 0x4A, 0xBE, 0x7A, 0xC6, 0x0D, 0xBE, + 0x4D, 0xE5, 0xD9, 0x3D, 0x2F, 0x10, 0x0F, 0x3F, 0xE1, 0x22, 0x6C, 0xBE, + 0x18, 0xB0, 0x02, 0x3F, 0xE6, 0x6F, 0xAD, 0xBD, 0x17, 0x21, 0xF9, 0x3C, + 0xD5, 0x55, 0xBD, 0xBD, 0xA9, 0x26, 0x66, 0x3E, 0x3F, 0x4B, 0x24, 0x3E, + 0x89, 0x61, 0x04, 0x3F, 0x2D, 0x31, 0xD4, 0x3C, 0x24, 0x38, 0xFD, 0xBB, + 0xA2, 0xAC, 0x2A, 0xBF, 0xA4, 0x4E, 0x69, 0xBF, 0x51, 0x9A, 0xAA, 0x3E, + 0xDE, 0x11, 0x78, 0x3E, 0x30, 0x1D, 0x0D, 0xBD, 0xFE, 0x54, 0x78, 0x3D, + 0xD0, 0xB1, 0x84, 0xBE, 0x1D, 0xD1, 0x80, 0x3E, 0xFF, 0xB1, 0xDB, 0x3E, + 0x57, 0x38, 0xAA, 0x3D, 0xC6, 0x18, 0x85, 0x3C, 0xD1, 0x86, 0x4A, 0xBC, + 0x04, 0x06, 0x16, 0xBF, 0x82, 0xC3, 0x00, 0xBC, 0x3D, 0x6C, 0xB6, 0xBA, + 0xFF, 0xC3, 0x06, 0x3C, 0xBD, 0x7B, 0x47, 0xBE, 0xE7, 0x41, 0xED, 0x3D, + 0x88, 0x77, 0xD0, 0x3C, 0xEA, 0x7A, 0xA7, 0x3C, 0x4F, 0xBF, 0x32, 0xBE, + 0x97, 0xD5, 0x3F, 0xBE, 0x4A, 0x7E, 0x06, 0xBD, 0x18, 0xFD, 0x2E, 0x3F, + 0x7C, 0x00, 0x93, 0x3E, 0x86, 0x04, 0x4D, 0x3D, 0xC5, 0x1C, 0xD0, 0x3D, + 0xD8, 0x19, 0xFC, 0xBC, 0xD6, 0x16, 0x21, 0x3E, 0xA2, 0xEB, 0x26, 0xBE, + 0x36, 0xD6, 0x98, 0x37, 0x0C, 0x85, 0x84, 0x3D, 0xF9, 0x0B, 0xD8, 0xBC, + 0x82, 0x7A, 0x7A, 0x3D, 0x28, 0xDE, 0x10, 0x3E, 0xA5, 0x43, 0x73, 0xBD, + 0x83, 0x20, 0xCA, 0x3D, 0x29, 0xF7, 0x3C, 0xBC, 0x6F, 0x5E, 0x88, 0x3D, + 0xFF, 0xA1, 0x79, 0x3E, 0x8E, 0xD9, 0x91, 0xBE, 0x65, 0xD0, 0x94, 0xBD, + 0x89, 0x37, 0x60, 0xBC, 0xCF, 0x88, 0x5F, 0x3C, 0x38, 0xDC, 0xEF, 0x3D, + 0xEC, 0xED, 0x06, 0xBC, 0xD3, 0x41, 0xE6, 0xBC, 0xE8, 0xCE, 0x19, 0x3E, + 0x63, 0x3D, 0xDD, 0xBD, 0x59, 0xAC, 0x2F, 0x3E, 0x49, 0x4B, 0x0F, 0xBD, + 0xC8, 0x78, 0x6D, 0xBD, 0x0E, 0x79, 0x9F, 0x3D, 0xD0, 0x8E, 0x7E, 0x3D, + 0x61, 0x06, 0xF7, 0x3C, 0x11, 0xE4, 0xA0, 0xBE, 0x79, 0x73, 0x2B, 0xBE, + 0x7F, 0x22, 0x65, 0x3E, 0xD3, 0x34, 0x39, 0x3F, 0x5A, 0x87, 0x78, 0x3E, + 0x9C, 0x09, 0x42, 0xBF, 0x17, 0x59, 0x0A, 0xBE, 0x54, 0x32, 0xC5, 0x3E, + 0xC7, 0x69, 0x6B, 0x3D, 0x42, 0xBD, 0xA2, 0xBD, 0xDD, 0xC0, 0x30, 0xBE, + 0x6D, 0xFD, 0x1B, 0xBE, 0x34, 0x6B, 0xBA, 0x3F, 0x98, 0x75, 0xC4, 0x3D, + 0xF0, 0xDE, 0x28, 0x3D, 0x35, 0x8E, 0xD8, 0x3E, 0x3E, 0x77, 0xAF, 0x3F, + 0x78, 0x5D, 0x98, 0xBE, 0x8F, 0x47, 0x85, 0x3E, 0xC3, 0xD3, 0xD0, 0x3E, + 0x22, 0xD7, 0xBA, 0x3D, 0x94, 0x25, 0x7D, 0x3F, 0xAF, 0x4C, 0x98, 0x3E, + 0xDB, 0x7C, 0xA4, 0x3E, 0x56, 0x1D, 0x32, 0x3E, 0xB5, 0x5B, 0x62, 0xBF, + 0x0D, 0xFE, 0xA8, 0xBE, 0x93, 0x68, 0xF6, 0xBC, 0xD4, 0x67, 0xD7, 0x3E, + 0x04, 0xF5, 0xAD, 0x3E, 0x7C, 0x76, 0x2B, 0x3F, 0x97, 0x53, 0xFD, 0x3D, + 0x5D, 0xDD, 0xE4, 0x3E, 0x68, 0x84, 0x62, 0xBF, 0x91, 0x7E, 0xCA, 0xBD, + 0xF8, 0x17, 0xB3, 0x3D, 0x76, 0x47, 0x55, 0xBE, 0xD7, 0x62, 0x25, 0x3F, + 0x1E, 0xBB, 0x2E, 0x3E, 0x0C, 0x2C, 0xEB, 0xBC, 0x5E, 0x41, 0x30, 0x3D, + 0xE3, 0x71, 0xD0, 0x3D, 0x9F, 0x0E, 0x57, 0x3F, 0x8A, 0xA0, 0x77, 0xBE, + 0xD7, 0xE9, 0x05, 0xBF, 0x31, 0x0F, 0xAF, 0xBC, 0x62, 0x12, 0x7B, 0xBC, + 0x52, 0x9E, 0x10, 0x3E, 0xAE, 0x9F, 0x08, 0x3E, 0x4C, 0x02, 0xAD, 0x3D, + 0xCA, 0x5F, 0xB3, 0xBE, 0x01, 0x80, 0x7D, 0xBD, 0x7C, 0xF1, 0x70, 0x3A, + 0xB8, 0x55, 0xE3, 0x3E, 0x07, 0x6D, 0x1F, 0x3D, 0x9E, 0x2E, 0xB0, 0xBD, + 0x25, 0xB6, 0x05, 0x3E, 0x32, 0xD5, 0xB0, 0x3C, 0xCA, 0xD4, 0x8D, 0xBC, + 0x34, 0x26, 0x8A, 0xBE, 0xC5, 0x53, 0x17, 0xBE, 0x4E, 0x3A, 0x41, 0x3E, + 0x61, 0xBB, 0xD3, 0x3E, 0x5F, 0x33, 0x68, 0x3E, 0x11, 0x7F, 0xA4, 0x3F, + 0x71, 0xF8, 0x14, 0x3D, 0x9C, 0xFC, 0xA2, 0x3D, 0x6C, 0xEF, 0x10, 0x3D, + 0x44, 0x72, 0xF3, 0xBD, 0xEE, 0xDD, 0x97, 0x3B, 0x4F, 0xCE, 0xC6, 0x3E, + 0xC1, 0xC8, 0xDF, 0xBE, 0x46, 0xA9, 0x92, 0xBD, 0x81, 0x22, 0x13, 0x3F, + 0x78, 0xBC, 0xF8, 0xBD, 0x50, 0x67, 0x51, 0xBE, 0xC0, 0x15, 0x12, 0xBE, + 0xF0, 0x5D, 0x5F, 0x3E, 0x6C, 0x64, 0x7B, 0xBD, 0x58, 0x55, 0x5F, 0x3E, + 0x7C, 0x56, 0x2C, 0x3F, 0xCF, 0xF6, 0x55, 0xBE, 0x37, 0xBB, 0x94, 0x3B, + 0xB1, 0x1E, 0x2A, 0xBE, 0x39, 0x12, 0x0D, 0x3D, 0x05, 0xE3, 0x43, 0x3E, + 0x97, 0x6A, 0x08, 0x3E, 0x4E, 0xE5, 0xBD, 0x3D, 0xEB, 0xE4, 0xEE, 0xBD, + 0x23, 0xA9, 0x85, 0x3E, 0xC6, 0x10, 0x0D, 0xBF, 0xC2, 0x4F, 0x8C, 0xBE, + 0x26, 0xE1, 0x5D, 0xBE, 0xDA, 0x4F, 0xF2, 0x3E, 0x62, 0xC8, 0xD3, 0x3C, + 0x72, 0xA3, 0xBD, 0x3D, 0x5E, 0x73, 0xD5, 0xBF, 0x48, 0x1B, 0x33, 0xBF, + 0x62, 0x20, 0x37, 0x3E, 0x62, 0xA6, 0x60, 0x3E, 0xA0, 0x98, 0x8C, 0xBD, + 0x33, 0x8D, 0x41, 0x3D, 0xE5, 0xBE, 0x96, 0xBE, 0x66, 0x3C, 0x00, 0x3C, + 0xDB, 0x26, 0x2D, 0x3C, 0x13, 0xBE, 0x0C, 0x3E, 0xC8, 0xD0, 0x4B, 0x3E, + 0xBA, 0x24, 0x22, 0xBC, 0xDE, 0xF8, 0x7C, 0x3E, 0x5F, 0xA8, 0x1A, 0x3C, + 0xA8, 0x50, 0xCF, 0x3B, 0xEA, 0xCF, 0x86, 0xBD, 0x47, 0x7D, 0x99, 0xBD, + 0xBF, 0x2B, 0xA9, 0x3D, 0x38, 0x6A, 0x86, 0xBD, 0x49, 0xB7, 0x28, 0x3D, + 0x31, 0xBB, 0xDF, 0x38, 0xD1, 0xBF, 0x25, 0x3E, 0xB3, 0x5E, 0x52, 0xBC, + 0x64, 0xA8, 0x9A, 0xBC, 0xD3, 0xE4, 0xCF, 0x3D, 0x82, 0x9A, 0xB3, 0xBE, + 0xEB, 0x83, 0x8F, 0x3E, 0xC8, 0xFD, 0xF0, 0xBE, 0x33, 0x4D, 0x00, 0x3D, + 0xAE, 0x83, 0x7C, 0x3D, 0xE9, 0x1A, 0x86, 0x3E, 0x7D, 0x2C, 0x59, 0x3D, + 0x28, 0xB5, 0x1F, 0x3F, 0xBF, 0x6E, 0x14, 0x3F, 0xA3, 0x93, 0x85, 0x3D, + 0x16, 0x8E, 0x47, 0x3E, 0xA3, 0x1B, 0x5A, 0xBE, 0x92, 0xF6, 0x06, 0xBF, + 0x63, 0x9E, 0xAD, 0x3D, 0x01, 0xFB, 0x81, 0xBB, 0x55, 0xE3, 0xFD, 0xBE, + 0x1F, 0x5E, 0xA7, 0xBC, 0x81, 0x1C, 0x2B, 0x3E, 0x5B, 0xB5, 0x13, 0x3E, + 0x00, 0x58, 0xA6, 0x3F, 0x69, 0xDE, 0x9B, 0xBD, 0x76, 0x38, 0xAA, 0x3D, + 0xA0, 0x51, 0x26, 0xBB, 0xAF, 0xE4, 0x04, 0x3F, 0x19, 0x8C, 0x12, 0xBF, + 0xB9, 0x62, 0xF8, 0x3E, 0x59, 0x79, 0xF9, 0xBE, 0xC2, 0x7C, 0x46, 0x3D, + 0x31, 0x74, 0x03, 0x3E, 0x37, 0x56, 0xAC, 0xBE, 0xCB, 0x58, 0x2F, 0x3E, + 0x99, 0xBB, 0xFE, 0x3E, 0x9E, 0xA2, 0x3C, 0xBF, 0x48, 0x40, 0xB2, 0x3D, + 0x26, 0xD7, 0x62, 0xBF, 0x82, 0x30, 0xD1, 0x3D, 0x9B, 0xA2, 0x10, 0xBE, + 0x6C, 0x86, 0x9C, 0x3E, 0x93, 0xE1, 0x9F, 0xBE, 0xA2, 0x48, 0xC1, 0xBF, + 0x8F, 0x73, 0x97, 0x3D, 0x5A, 0x3A, 0x3D, 0x3E, 0x58, 0x64, 0xDF, 0x3D, + 0x4D, 0x12, 0x8B, 0xBD, 0x2F, 0x18, 0x9B, 0xBD, 0x2E, 0xFC, 0x56, 0xBD, + 0x76, 0x7E, 0x0B, 0xBC, 0xCB, 0xC6, 0x64, 0xBC, 0x64, 0x92, 0x5E, 0xBC, + 0x7B, 0xF2, 0x5F, 0xBC, 0x26, 0x56, 0xC2, 0x3B, 0x4C, 0xD6, 0x95, 0x3B, + 0x14, 0xFC, 0x2A, 0x3C, 0x16, 0x6E, 0xD8, 0x3C, 0x0D, 0x73, 0x55, 0xBD, + 0x7D, 0xF6, 0xDE, 0xBC, 0xB4, 0x12, 0x75, 0xBD, 0x36, 0xE1, 0x2E, 0xBD, + 0x88, 0xF5, 0xFB, 0xBC, 0x6B, 0x26, 0x00, 0xBD, 0x7E, 0x18, 0xC5, 0x3D, + 0x63, 0x16, 0x08, 0xBD, 0xC9, 0x61, 0x79, 0xBC, 0x7F, 0x0F, 0x49, 0x3D, + 0x9F, 0x68, 0xBE, 0x3C, 0x12, 0x65, 0x79, 0xBB, 0x86, 0xE4, 0xB4, 0xBD, + 0xF4, 0xB5, 0xA0, 0xBC, 0xB2, 0x28, 0x79, 0xBC, 0xD1, 0x53, 0x67, 0xBD, + 0xCA, 0x3C, 0xB1, 0xBD, 0xD6, 0xA6, 0x5F, 0xBD, 0x53, 0x4C, 0xE3, 0xBC, + 0x62, 0xEB, 0xB3, 0x3C, 0xA7, 0x3E, 0xA7, 0xBE, 0x50, 0xDC, 0x32, 0xBF, + 0x7D, 0xEB, 0x2A, 0x3F, 0xDE, 0x21, 0x0A, 0xBF, 0x2A, 0xA8, 0x9D, 0xBE, + 0x22, 0x84, 0x51, 0x3E, 0xAD, 0x4C, 0x52, 0x3E, 0xC3, 0xE4, 0xFB, 0x3E, + 0x12, 0x67, 0x74, 0x3E, 0xD1, 0xEF, 0x23, 0xBF, 0x01, 0x06, 0xA7, 0xBE, + 0xD7, 0x93, 0x3D, 0x3D, 0x36, 0x68, 0x07, 0x3F, 0x71, 0x48, 0xBB, 0xBE, + 0xAC, 0x83, 0xDC, 0x3B, 0xA1, 0xEC, 0xFA, 0xBE, 0x1E, 0x28, 0x21, 0xBD, + 0x3E, 0x70, 0x9C, 0x3C, 0x69, 0x96, 0x53, 0x3C, 0x8E, 0x66, 0x7B, 0x3E, + 0x27, 0x15, 0xB3, 0xBC, 0x34, 0x3D, 0x04, 0xBE, 0x2D, 0x7B, 0xA3, 0x3E, + 0x38, 0x77, 0x30, 0x3E, 0x76, 0x17, 0xFC, 0x3E, 0x9C, 0x0A, 0x12, 0x3F, + 0xDF, 0xD4, 0x11, 0x3E, 0xA5, 0xB2, 0x2F, 0xBE, 0x27, 0x3B, 0xDD, 0xBD, + 0xF4, 0xC1, 0xAA, 0xBE, 0x10, 0x3F, 0xC4, 0x3E, 0x08, 0x77, 0x61, 0x3B, + 0x34, 0xBD, 0xBD, 0xBD, 0x3F, 0x6A, 0x05, 0x3D, 0xF1, 0xEB, 0xC1, 0x3D, + 0x54, 0x08, 0x00, 0x3E, 0x9A, 0xE5, 0x7F, 0x3D, 0x1F, 0xFB, 0x83, 0x3C, + 0x27, 0xF5, 0xB5, 0x3C, 0xD3, 0x45, 0x1C, 0x3C, 0x7C, 0x8B, 0x08, 0xBD, + 0xEC, 0x34, 0x23, 0xBD, 0xC4, 0x73, 0xDF, 0xBC, 0x6F, 0x4A, 0x1E, 0xBD, + 0x50, 0xBA, 0xFD, 0xBB, 0x26, 0x62, 0xB3, 0xBE, 0xD9, 0xB4, 0x6C, 0x3D, + 0x48, 0x70, 0x3C, 0x3C, 0x98, 0x51, 0x95, 0x3D, 0x3F, 0x20, 0x26, 0x3C, + 0x19, 0xED, 0x8E, 0x3C, 0x46, 0x19, 0x95, 0x3D, 0x1A, 0x5B, 0xA9, 0x3C, + 0x84, 0xF0, 0x2C, 0xBD, 0xB6, 0xA7, 0x08, 0xBD, 0x94, 0x4A, 0xE2, 0xBC, + 0x64, 0xD4, 0x02, 0x3E, 0xBC, 0x1D, 0x4F, 0x3D, 0xC0, 0x76, 0x9E, 0xBC, + 0xE7, 0x48, 0x29, 0x3E, 0xFB, 0x9D, 0x61, 0x3D, 0x39, 0x1C, 0xF8, 0x3E, + 0x46, 0x44, 0x45, 0x3D, 0x8D, 0x03, 0xA2, 0xBD, 0x69, 0xCD, 0x35, 0xBE, + 0x81, 0xBC, 0xF0, 0x3D, 0x90, 0xC6, 0x69, 0x3E, 0xC6, 0x98, 0x0B, 0x3F, + 0xA9, 0x61, 0xB6, 0x3C, 0x2B, 0x56, 0xFB, 0xBE, 0x0B, 0x8D, 0x98, 0xBE, + 0x4D, 0xC6, 0x34, 0xBE, 0x67, 0xC0, 0x17, 0xBF, 0x2F, 0x6E, 0x64, 0xBD, + 0x86, 0xF4, 0x07, 0x3E, 0x19, 0x85, 0x9E, 0xBC, 0x7D, 0x92, 0x39, 0xBE, + 0xC7, 0xE6, 0x4B, 0x3F, 0x58, 0x62, 0xF0, 0xBE, 0xA3, 0x20, 0x10, 0x3F, + 0x37, 0x68, 0xA1, 0x3E, 0xF6, 0x12, 0x81, 0xBC, 0x67, 0xD1, 0xC7, 0xBE, + 0x74, 0x95, 0xE5, 0xBE, 0xF1, 0x36, 0x60, 0x3D, 0xEA, 0x6B, 0x62, 0x3E, + 0x86, 0x3B, 0x5D, 0xBF, 0x39, 0xB5, 0xA4, 0x3E, 0xB1, 0xD4, 0x32, 0xBF, + 0x54, 0x03, 0xE8, 0xBD, 0xC3, 0xDC, 0x30, 0x3E, 0xF9, 0xBF, 0x92, 0x3E, + 0x1C, 0x65, 0xEA, 0xBD, 0x51, 0xAD, 0x4B, 0xBF, 0xD9, 0x24, 0xFA, 0xBE, + 0xD7, 0x9F, 0xB2, 0xBD, 0xD5, 0x23, 0x8A, 0xBE, 0xF5, 0x79, 0x8B, 0x3E, + 0xA7, 0xFD, 0xDC, 0x3C, 0x1C, 0xF2, 0x0D, 0x3F, 0x39, 0x48, 0x20, 0xBE, + 0x71, 0xCA, 0x3A, 0xBE, 0x29, 0x7E, 0x12, 0x3F, 0x79, 0x31, 0x61, 0xBF, + 0x5D, 0x1D, 0x15, 0xBE, 0x14, 0x8A, 0xEA, 0xBE, 0x0E, 0x87, 0x11, 0xBE, + 0x7A, 0x78, 0x28, 0x3E, 0x25, 0x8B, 0xD6, 0xBD, 0x62, 0x13, 0x5D, 0xBF, + 0x71, 0x63, 0x8B, 0xBF, 0x6F, 0x20, 0x7E, 0x3E, 0x83, 0x5C, 0x3E, 0xBF, + 0xE0, 0xD5, 0x30, 0x3D, 0x83, 0x96, 0x33, 0xBF, 0x86, 0x65, 0xC3, 0x3E, + 0xBA, 0xD1, 0x01, 0xBB, 0x8C, 0x32, 0x78, 0xBE, 0xB7, 0x78, 0x9F, 0x3F, + 0x16, 0x29, 0xCB, 0xBF, 0x9B, 0x1B, 0x34, 0x3F, 0xF0, 0x1C, 0xC3, 0x3E, + 0x5E, 0xA1, 0x8E, 0x3E, 0x40, 0x76, 0x2B, 0x3F, 0xA8, 0x65, 0x0F, 0x3D, + 0x65, 0xBB, 0xBC, 0xBF, 0xF8, 0x30, 0x71, 0x3F, 0xCA, 0x4E, 0xD8, 0xBE, + 0x12, 0xA0, 0xDE, 0xBD, 0x5A, 0x72, 0x5C, 0xBE, 0xB9, 0xAC, 0xAE, 0x3F, + 0x32, 0x12, 0xE8, 0xBE, 0x7E, 0x94, 0xDC, 0x3E, 0xAA, 0x29, 0x00, 0x3F, + 0xF1, 0xD8, 0xCC, 0x3E, 0x85, 0x8B, 0x41, 0x3F, 0xD2, 0x5D, 0x2B, 0x3E, + 0xD1, 0xEE, 0x64, 0xBF, 0x88, 0x6B, 0x09, 0xBF, 0xB3, 0xCB, 0x04, 0xBE, + 0xB4, 0x02, 0x49, 0x3E, 0x74, 0x0F, 0x97, 0xBE, 0x9C, 0x14, 0x24, 0x3F, + 0xA8, 0x46, 0xCA, 0xBE, 0x26, 0x7F, 0x94, 0x3D, 0xE6, 0x67, 0xB3, 0xBD, + 0xF3, 0x06, 0x2B, 0xBE, 0x34, 0xD3, 0x2A, 0x3E, 0xAD, 0x74, 0x4D, 0x3E, + 0x80, 0xCA, 0x86, 0x3E, 0xCB, 0xA1, 0xED, 0x3E, 0x11, 0xB8, 0x6B, 0xBD, + 0x39, 0xD1, 0x12, 0xBF, 0xCA, 0x45, 0x65, 0x3F, 0x01, 0x28, 0xDC, 0xBC, + 0xDE, 0x41, 0xFA, 0x3D, 0x72, 0x36, 0x15, 0x3E, 0xBE, 0xF8, 0xC2, 0x3D, + 0x3E, 0x9E, 0xA6, 0xBD, 0x9C, 0x0E, 0x83, 0xBD, 0xD6, 0xA7, 0xAD, 0xBD, + 0x35, 0x4E, 0x81, 0x3E, 0xF8, 0xC4, 0x83, 0xBF, 0x00, 0xD8, 0xAE, 0x3E, + 0xFA, 0x4A, 0xA5, 0xBE, 0xC8, 0x38, 0x74, 0xBE, 0x67, 0x68, 0xB6, 0x3C, + 0x57, 0x4B, 0x23, 0x3F, 0xBD, 0x44, 0x86, 0x3E, 0xC9, 0xDE, 0xEA, 0x3E, + 0x95, 0xCB, 0x0F, 0xBF, 0x5E, 0xD1, 0x68, 0xBB, 0x49, 0x78, 0xFE, 0xBD, + 0x3E, 0x42, 0x76, 0xBE, 0x1A, 0x0A, 0xAA, 0x3E, 0x5D, 0xFC, 0x8C, 0xBD, + 0x29, 0x33, 0xBA, 0xBE, 0xDD, 0xCC, 0xDB, 0xBB, 0x76, 0xA2, 0x91, 0xBE, + 0xBA, 0x82, 0xDB, 0x3D, 0x2E, 0x0A, 0x11, 0xBD, 0x91, 0x64, 0x99, 0x3E, + 0xF8, 0x53, 0xFB, 0xBE, 0x95, 0x71, 0xAF, 0x3E, 0xEF, 0xC9, 0x44, 0xBE, + 0x4E, 0x87, 0x87, 0x3E, 0x33, 0xE9, 0x79, 0xBE, 0x38, 0xC1, 0xE7, 0xBD, + 0x5E, 0xDD, 0xA3, 0xBE, 0xC5, 0xEA, 0xF8, 0xBD, 0x38, 0xE0, 0x05, 0x3F, + 0x88, 0x0F, 0x61, 0x3E, 0x0E, 0x7D, 0xFB, 0xBE, 0x94, 0x97, 0x96, 0x3D, + 0x75, 0x24, 0xA7, 0x3E, 0x6A, 0x37, 0x91, 0x3E, 0x87, 0x16, 0xA8, 0xBD, + 0x4B, 0x50, 0x0E, 0xBF, 0x47, 0xB7, 0x84, 0xBE, 0x8C, 0x5F, 0xFA, 0xBE, + 0xAC, 0xFC, 0x7F, 0xBD, 0x57, 0x33, 0x0C, 0x3F, 0x6B, 0x9F, 0xCB, 0xBE, + 0x59, 0xAB, 0xC8, 0x3D, 0xFA, 0xA0, 0xA2, 0xBD, 0xAF, 0xB0, 0xA1, 0x3F, + 0x5A, 0x9F, 0x07, 0x3F, 0x79, 0xB7, 0xA8, 0x3D, 0xF6, 0x15, 0x0D, 0xBE, + 0x70, 0x86, 0xA1, 0x3D, 0x0E, 0xA8, 0x13, 0xBF, 0x3D, 0xAE, 0x11, 0xBF, + 0xB9, 0xF6, 0x17, 0xBE, 0xBF, 0x7E, 0x83, 0x3E, 0x84, 0x46, 0xCE, 0xBE, + 0x83, 0xEB, 0x14, 0x3F, 0x22, 0x65, 0xFB, 0xBD, 0x3B, 0x51, 0xB4, 0xBE, + 0xED, 0x97, 0xA1, 0x3E, 0xBB, 0x71, 0xBF, 0xBE, 0xCF, 0x34, 0x4D, 0x3E, + 0xC8, 0x16, 0x92, 0xBF, 0x98, 0x81, 0xC4, 0x3E, 0x5F, 0x5E, 0xC3, 0x3E, + 0xDB, 0x28, 0xF7, 0x3D, 0x96, 0xFE, 0x96, 0x3D, 0x87, 0x36, 0x7C, 0x3F, + 0x41, 0xAD, 0xF2, 0x3C, 0x81, 0x78, 0x74, 0xBC, 0xBE, 0xCB, 0x22, 0x3E, + 0xF0, 0x54, 0x18, 0x3E, 0x85, 0xD0, 0xB8, 0x3D, 0xFB, 0x35, 0xDA, 0x3D, + 0xE2, 0xA8, 0x03, 0x3D, 0x21, 0x52, 0x50, 0x3E, 0xDA, 0xAE, 0x07, 0xBC, + 0xF0, 0x53, 0x4E, 0xBF, 0xDF, 0x03, 0x97, 0x3E, 0x92, 0xFF, 0xB1, 0xBE, + 0x55, 0x71, 0x5B, 0xBE, 0xEA, 0xD8, 0x00, 0xBF, 0xB8, 0x6C, 0xC2, 0xBC, + 0x2F, 0x16, 0x06, 0x3E, 0x0C, 0x7B, 0x08, 0x3E, 0x09, 0x7E, 0x0A, 0x3E, + 0x21, 0xFF, 0xD2, 0xBC, 0x1C, 0x0D, 0xC8, 0xBE, 0x43, 0x69, 0x1F, 0xBD, + 0x0B, 0x34, 0xE4, 0xBE, 0x61, 0x49, 0x91, 0x3D, 0x7F, 0x7C, 0xD6, 0x3E, + 0x94, 0x7A, 0x4C, 0xBF, 0x0A, 0x15, 0x29, 0x3D, 0x43, 0x84, 0xAA, 0x3E, + 0x81, 0xC2, 0xE4, 0x3E, 0x53, 0x13, 0xB9, 0xBD, 0xBF, 0x99, 0x36, 0x3F, + 0xBE, 0xCD, 0x4E, 0xBD, 0xAE, 0x67, 0xFA, 0xBE, 0xAF, 0xB1, 0x17, 0xBF, + 0x49, 0x6D, 0xE8, 0xBD, 0x9C, 0x0E, 0xE1, 0x3D, 0xDF, 0x9E, 0xF0, 0x3D, + 0xEE, 0xFC, 0xFB, 0xBE, 0x54, 0xA7, 0x88, 0xBE, 0xB7, 0x5D, 0x27, 0xBE, + 0x34, 0x4B, 0xA3, 0xBE, 0x9D, 0x61, 0x71, 0x3D, 0x5A, 0x69, 0xC3, 0x3F, + 0x87, 0x35, 0x66, 0xBF, 0xCE, 0x03, 0xB0, 0x3F, 0x66, 0x46, 0x8F, 0x3F, + 0xF8, 0x0C, 0xBB, 0xBE, 0xC7, 0x8C, 0x91, 0xBD, 0xD3, 0x54, 0x0D, 0x3F, + 0x2A, 0x17, 0xBA, 0xBD, 0xA2, 0x4A, 0xF4, 0xBC, 0x47, 0x04, 0x42, 0x3D, + 0x8B, 0x5A, 0x51, 0x3F, 0x00, 0xDE, 0x01, 0xBE, 0x40, 0xA2, 0x96, 0x3F, + 0x0F, 0xB8, 0xA9, 0xBD, 0x50, 0xE3, 0xE5, 0x3D, 0xD8, 0x5C, 0x9F, 0x3F, + 0x62, 0x2C, 0x08, 0xBE, 0xCD, 0x3C, 0xD5, 0x3D, 0x3A, 0xB7, 0x6C, 0xBF, + 0x10, 0x77, 0x1A, 0xBE, 0x41, 0xA7, 0xE7, 0x3E, 0x26, 0x86, 0xA2, 0xBE, + 0x00, 0xF1, 0x75, 0x3E, 0x7C, 0xEF, 0x0D, 0xBD, 0x8B, 0xD7, 0xBA, 0x3E, + 0x9F, 0x87, 0x87, 0x3E, 0x71, 0x0F, 0x27, 0xBE, 0x51, 0xB7, 0xAF, 0x3E, + 0xE8, 0x26, 0xB7, 0x3D, 0x99, 0x50, 0xFD, 0xBE, 0xEF, 0x3C, 0x73, 0xBD, + 0xCF, 0xA0, 0x2B, 0x3C, 0xC6, 0x7F, 0x06, 0xBE, 0x3F, 0x3E, 0x33, 0xBF, + 0x0F, 0xCA, 0x07, 0x3F, 0x08, 0xB2, 0xAE, 0xBD, 0x15, 0x2A, 0x67, 0xBE, + 0xD8, 0xBA, 0xBD, 0xBD, 0x52, 0xFC, 0xD2, 0xBE, 0x7E, 0x25, 0x80, 0x3D, + 0x7C, 0xB5, 0x1F, 0x3E, 0xD0, 0x73, 0xA2, 0xBD, 0xB2, 0xC0, 0xA9, 0xBD, + 0x82, 0xBA, 0x49, 0x3E, 0xD3, 0x40, 0x0D, 0x3F, 0x9F, 0x56, 0x19, 0x3F, + 0xB1, 0xEB, 0xEE, 0xBD, 0x68, 0xFB, 0xFA, 0x3E, 0xBF, 0x48, 0xC4, 0xBD, + 0xC3, 0x97, 0x53, 0x3F, 0x21, 0xCA, 0x09, 0x3F, 0x8A, 0x51, 0x1C, 0xBE, + 0x46, 0xA6, 0x58, 0x3E, 0x4D, 0xF0, 0x05, 0xBD, 0x94, 0xE0, 0x48, 0x3F, + 0xFE, 0xF2, 0xCD, 0xBC, 0xE5, 0xCB, 0x03, 0xBE, 0x5D, 0x0E, 0x26, 0xBC, + 0x3A, 0xAB, 0x4F, 0x3E, 0xD4, 0x89, 0x19, 0xBD, 0x9C, 0xF3, 0x9E, 0xBE, + 0x6C, 0x08, 0x4D, 0x3F, 0xD8, 0xFB, 0x96, 0x3D, 0x9C, 0x44, 0xB9, 0x3C, + 0xFF, 0xBF, 0x03, 0x3F, 0xA9, 0xD3, 0x24, 0x3F, 0x15, 0x78, 0x93, 0xBE, + 0x0D, 0x26, 0x4B, 0xBD, 0xCC, 0xC8, 0xAD, 0x3E, 0x41, 0x32, 0x16, 0x3C, + 0x85, 0x20, 0x64, 0x3E, 0x75, 0xE3, 0x48, 0xBE, 0x24, 0x49, 0xE4, 0x3C, + 0x03, 0xC6, 0x9D, 0xBE, 0xC9, 0x19, 0xC9, 0x3E, 0x19, 0x6C, 0x12, 0xBF, + 0x15, 0xDB, 0xF2, 0xBE, 0x44, 0x4A, 0x95, 0xBE, 0x0B, 0xF5, 0x00, 0x3F, + 0xD1, 0x8A, 0x2C, 0x3F, 0xF4, 0x37, 0x4A, 0x3D, 0x55, 0x29, 0x0B, 0x3F, + 0x8B, 0x80, 0x79, 0x3E, 0xFF, 0xFD, 0xF4, 0x3D, 0x74, 0x34, 0xAD, 0xBF, + 0x87, 0x24, 0x0A, 0xBE, 0xFE, 0x54, 0xC7, 0xBE, 0xBE, 0xDE, 0x51, 0x3E, + 0xF0, 0x03, 0x63, 0xBE, 0x47, 0x79, 0x16, 0xBE, 0x04, 0xA9, 0xC5, 0x3B, + 0x78, 0xA0, 0x91, 0x3E, 0x4D, 0xFC, 0x76, 0xBD, 0x10, 0x70, 0x95, 0x3E, + 0x7B, 0x51, 0xF3, 0xBD, 0xD5, 0xF9, 0x4A, 0x3D, 0x34, 0xDB, 0x32, 0xBF, + 0x2D, 0x92, 0x85, 0x3F, 0x26, 0x7A, 0xAD, 0xBC, 0x1A, 0xCA, 0x8C, 0xBE, + 0x90, 0xD2, 0xF6, 0xBD, 0xAB, 0x11, 0xB9, 0x3D, 0x2C, 0x40, 0xA3, 0xBF, + 0xEF, 0x03, 0x4B, 0x3F, 0xAF, 0x50, 0xC9, 0xBE, 0x94, 0xBD, 0xED, 0xBD, + 0x71, 0xED, 0x4F, 0xBF, 0xD7, 0x9F, 0x8A, 0xBF, 0x60, 0xCD, 0x31, 0x3F, + 0x7B, 0x7F, 0x8F, 0xBE, 0x5D, 0xB4, 0xB0, 0xBE, 0xCC, 0x4A, 0xCA, 0xBD, + 0x2F, 0x88, 0xB3, 0x3E, 0x9C, 0xD9, 0x7B, 0xBE, 0x6A, 0xCB, 0xA0, 0xBD, + 0xF4, 0xE1, 0x0D, 0xBE, 0xF6, 0x44, 0xD4, 0xBC, 0xEB, 0xD6, 0x0F, 0xBD, + 0x10, 0xF2, 0x29, 0x3D, 0x19, 0xE7, 0x82, 0x3D, 0xBB, 0x39, 0x93, 0x3E, + 0xCD, 0x1A, 0x93, 0x3B, 0xBB, 0x5A, 0x02, 0xBD, 0xEA, 0xA3, 0x64, 0xBD, + 0x1F, 0x0B, 0x5C, 0x3D, 0xDB, 0x4F, 0x39, 0xBE, 0x97, 0x51, 0xB8, 0xBC, + 0x4E, 0xF8, 0x65, 0xBC, 0xD8, 0x28, 0xB6, 0x3C, 0xA1, 0xEC, 0x07, 0xBD, + 0xA1, 0x5D, 0x50, 0xBD, 0x95, 0x2F, 0x8F, 0xBD, 0x25, 0x81, 0xFA, 0xBD, + 0xC3, 0xD2, 0x05, 0x3D, 0x3B, 0xFC, 0x22, 0x3E, 0x2A, 0xDD, 0x3D, 0x3E, + 0xBF, 0x7D, 0x18, 0x3C, 0x20, 0x7F, 0x41, 0x3D, 0x3A, 0x1A, 0x43, 0x3D, + 0x1A, 0xC4, 0x24, 0x3E, 0x28, 0xCD, 0x4F, 0x3E, 0x9C, 0xF1, 0xA3, 0x3D, + 0xE7, 0x0D, 0x41, 0x3D, 0x04, 0x52, 0x83, 0xBE, 0x4A, 0x21, 0x34, 0x3C, + 0x89, 0x2E, 0x2F, 0x3F, 0x2B, 0x67, 0xA3, 0xBD, 0xCB, 0xC1, 0x72, 0x3D, + 0x6A, 0x60, 0x0B, 0x3C, 0x6B, 0x9A, 0x72, 0xBB, 0xC9, 0x28, 0x34, 0x3E, + 0x30, 0x24, 0x1A, 0x3E, 0x4C, 0x67, 0xB9, 0x3D, 0x0A, 0x0B, 0x62, 0x3D, + 0x80, 0xFF, 0xA6, 0x3C, 0xCB, 0xEA, 0x9A, 0xBC, 0xFA, 0xE7, 0xC3, 0x3D, + 0x91, 0x5A, 0xAE, 0x3C, 0x12, 0x2F, 0xAF, 0x3C, 0x98, 0x36, 0xEA, 0xBC, + 0x2C, 0xCC, 0x9C, 0xBD, 0x9B, 0xDA, 0x39, 0xBE, 0x11, 0x25, 0xF3, 0xBC, + 0xAB, 0x6D, 0xF0, 0xBC, 0x7E, 0xFC, 0x1D, 0xBE, 0xDB, 0x41, 0xC7, 0xBA, + 0xFB, 0x8E, 0xDB, 0x3D, 0x79, 0x1C, 0x82, 0xBD, 0x66, 0x71, 0x2B, 0xBD, + 0x24, 0x15, 0x20, 0x3D, 0xB1, 0xDC, 0x30, 0xBD, 0xAA, 0xF8, 0x2E, 0x3E, + 0xBF, 0xCC, 0x96, 0x3E, 0x5C, 0xEC, 0x56, 0x3D, 0xE0, 0x67, 0xFD, 0xBC, + 0x86, 0x4C, 0x1A, 0xBE, 0x44, 0x50, 0xF1, 0xBC, 0x1D, 0x54, 0x08, 0x3D, + 0x1A, 0x03, 0xA7, 0x3C, 0x0A, 0x39, 0x95, 0x3C, 0x80, 0x33, 0x81, 0x3F, + 0x83, 0x24, 0xC7, 0x3C, 0x1D, 0x7C, 0x68, 0x3E, 0x73, 0x52, 0x5A, 0x3E, + 0x0A, 0xBC, 0x4D, 0xBF, 0x42, 0x51, 0x17, 0x3F, 0x4B, 0xD2, 0xE8, 0x3E, + 0x0D, 0x42, 0xF2, 0xBE, 0xC2, 0x65, 0x75, 0x3D, 0xEE, 0x5F, 0x11, 0x3F, + 0x34, 0xB6, 0xDB, 0x3E, 0xDD, 0x06, 0xFE, 0xBD, 0x18, 0x2A, 0xE0, 0x3E, + 0xC3, 0x67, 0xE6, 0x3E, 0x79, 0x28, 0x37, 0xBE, 0xFA, 0x9B, 0x0B, 0xBD, + 0xF9, 0x61, 0xA3, 0x3F, 0xA2, 0xC2, 0xAE, 0xBD, 0x23, 0x21, 0x5A, 0x3F, + 0xD4, 0x12, 0x50, 0xBF, 0x15, 0xCD, 0xD6, 0x3E, 0x04, 0xAF, 0xBA, 0xBE, + 0x4F, 0xA1, 0x1C, 0x3F, 0xAC, 0xBB, 0xDE, 0x3E, 0xD0, 0x1C, 0xF6, 0xBD, + 0xEE, 0x74, 0x1F, 0xBF, 0x5B, 0xAE, 0xDD, 0x3D, 0xA0, 0x17, 0xC1, 0xBF, + 0x5F, 0x70, 0x0A, 0xBF, 0x2C, 0xE4, 0x24, 0x3D, 0x00, 0x73, 0x85, 0xBF, + 0x83, 0x7D, 0x32, 0xBC, 0x7B, 0x1F, 0xDC, 0x3C, 0x4C, 0x9C, 0x15, 0xBD, + 0x86, 0x31, 0xC2, 0xBC, 0x40, 0xFF, 0x22, 0x3D, 0x7B, 0x9E, 0x3C, 0x3C, + 0x75, 0xD8, 0x95, 0xBC, 0xE6, 0x20, 0x30, 0xBA, 0x8B, 0x7D, 0xDE, 0x3C, + 0xC5, 0x7F, 0x63, 0xBD, 0xD8, 0x48, 0x44, 0xBD, 0xAD, 0x62, 0x1E, 0xBC, + 0x0D, 0x2A, 0xD1, 0x38, 0xBC, 0x16, 0x66, 0xBB, 0xD2, 0x5A, 0x9E, 0xBD, + 0x29, 0x8C, 0x91, 0x3D, 0x52, 0xBD, 0x19, 0xBD, 0x43, 0xDD, 0x16, 0x3C, + 0x3A, 0x4E, 0xF1, 0x3B, 0x7E, 0xDE, 0x9D, 0x3C, 0x38, 0x1C, 0x79, 0x3D, + 0xF6, 0x14, 0xF6, 0x3C, 0x53, 0xA6, 0x0D, 0x3D, 0xE5, 0xC8, 0x23, 0xBD, + 0x57, 0xEB, 0x8C, 0x3B, 0x86, 0xE0, 0x00, 0xBD, 0x4D, 0x3C, 0xA4, 0xBC, + 0x2F, 0x27, 0xE0, 0xBB, 0xF2, 0x57, 0x87, 0x3B, 0x76, 0x90, 0xF8, 0x3C, + 0xF9, 0xB7, 0xBB, 0xBE, 0xC8, 0xC2, 0x8F, 0xBC, 0x32, 0x66, 0x95, 0xBD, + 0x76, 0xDC, 0x95, 0xBC, 0x75, 0x0A, 0xA1, 0xBC, 0x93, 0x03, 0x59, 0x3D, + 0x37, 0xAA, 0xF7, 0x3C, 0xDE, 0x0A, 0x04, 0x3B, 0x34, 0xCC, 0xB7, 0xBC, + 0xC1, 0xC3, 0xF6, 0xB9, 0x61, 0x68, 0xCC, 0xBA, 0x9C, 0x53, 0x12, 0x3C, + 0x95, 0x2B, 0x01, 0xBC, 0xB7, 0x72, 0x48, 0x3C, 0x25, 0x9B, 0x8A, 0x3C, + 0xD7, 0x1D, 0x9E, 0xBB, 0x5B, 0x12, 0xD8, 0x3D, 0x88, 0x2F, 0xF1, 0x3C, + 0x51, 0x6D, 0x82, 0xBC, 0xB1, 0x16, 0x53, 0xBC, 0xC6, 0xFA, 0x84, 0xBB, + 0x26, 0x23, 0x86, 0x3C, 0x3B, 0x6C, 0x6E, 0x3D, 0x35, 0x0C, 0xA9, 0x3C, + 0x22, 0x86, 0x84, 0x3D, 0x77, 0x34, 0x17, 0xBD, 0xAD, 0x3F, 0x01, 0x3C, + 0x20, 0xB5, 0x0D, 0xBD, 0xB9, 0x66, 0xD8, 0xBB, 0x2F, 0xB7, 0x43, 0x3D, + 0x43, 0x7D, 0x7E, 0xBD, 0xDF, 0x4E, 0x29, 0xBD, 0xE5, 0x80, 0x00, 0x3D, + 0x77, 0x0F, 0x4D, 0x3D, 0x60, 0x1E, 0x2C, 0xBC, 0x1E, 0x21, 0x5B, 0xBD, + 0x53, 0xA9, 0x83, 0x3D, 0xA7, 0xDA, 0x92, 0xBE, 0xDA, 0xC8, 0x11, 0xBE, + 0xEF, 0xF4, 0x27, 0xBD, 0x67, 0x7B, 0x27, 0xBD, 0xC5, 0x20, 0x8C, 0x3C, + 0xCD, 0x8D, 0x6F, 0xBD, 0x9B, 0x5B, 0x0E, 0xBD, 0x67, 0x33, 0x52, 0x3E, + 0x67, 0x64, 0xF3, 0xBC, 0x5D, 0x8C, 0x47, 0xBB, 0x76, 0x7B, 0x77, 0x3D, + 0x58, 0xA2, 0x13, 0xBC, 0xF2, 0xA6, 0xD0, 0x3D, 0x65, 0xF1, 0x4D, 0x3D, + 0xDE, 0xAC, 0xA0, 0xBE, 0xEA, 0x1C, 0x98, 0xBA, 0xE5, 0x72, 0x89, 0xBD, + 0xA9, 0xD3, 0x82, 0x3D, 0xDD, 0x3E, 0x88, 0x3B, 0xB0, 0xE7, 0x30, 0xBD, + 0x07, 0xBD, 0x2F, 0x3D, 0xDC, 0xE1, 0xC1, 0xBD, 0xF8, 0x3C, 0x27, 0xBE, + 0xF5, 0x2A, 0xCC, 0x3C, 0xCC, 0xC3, 0x7B, 0xBD, 0x15, 0x10, 0xA9, 0xBE, + 0x5C, 0x68, 0x07, 0x3C, 0xE9, 0xCC, 0x04, 0x3F, 0xED, 0xFC, 0x90, 0xBD, + 0x2A, 0xD3, 0x62, 0xBD, 0xD6, 0x98, 0xD4, 0x3C, 0x4B, 0xF0, 0x37, 0xBD, + 0x6D, 0xA8, 0x4D, 0x3D, 0x6C, 0x96, 0x5E, 0x3C, 0xCB, 0x60, 0xAE, 0xBB, + 0xC1, 0x58, 0x72, 0xBC, 0x81, 0x80, 0xA2, 0x3C, 0xC9, 0xC1, 0x8F, 0xBB, + 0x43, 0xE8, 0x38, 0xBD, 0xDD, 0x35, 0x8C, 0xBC, 0x4D, 0x39, 0x6C, 0x3C, + 0xF1, 0x54, 0xF7, 0xB9, 0x4B, 0xAC, 0x95, 0xBC, 0x5A, 0x6F, 0x6C, 0xBD, + 0x67, 0x83, 0x5E, 0x3C, 0x0D, 0x3C, 0x18, 0xBD, 0xD9, 0x0C, 0x19, 0xBA, + 0x97, 0x1A, 0x63, 0x3C, 0x0F, 0x64, 0x34, 0x3D, 0x68, 0x82, 0xCF, 0xBB, + 0x4C, 0x93, 0x9C, 0xBB, 0x75, 0x3F, 0xB5, 0x3B, 0x14, 0xD8, 0xAB, 0xBC, + 0x21, 0x2C, 0xF1, 0xBA, 0x2D, 0x0D, 0xC5, 0x3C, 0x02, 0x21, 0x05, 0x3C, + 0x6B, 0x68, 0xBD, 0xBC, 0xFA, 0x60, 0x41, 0xBD, 0xE6, 0x2B, 0x94, 0x3C, + 0xC9, 0x3D, 0xAA, 0xBE, 0x15, 0x2C, 0x0B, 0x3D, 0x28, 0x36, 0x23, 0xBC, + 0xBE, 0x69, 0x06, 0x3F, 0x4C, 0xE9, 0x40, 0x3E, 0x7D, 0xCF, 0xC1, 0xBE, + 0x9C, 0xC8, 0x07, 0x3E, 0x3E, 0x7F, 0x1D, 0xBE, 0x19, 0xAB, 0x31, 0x3D, + 0x54, 0xD9, 0xC9, 0xBE, 0xE0, 0x30, 0x73, 0x3C, 0xC9, 0x6E, 0xB8, 0x3E, + 0x99, 0x99, 0xF5, 0xBE, 0x1F, 0xCF, 0x94, 0xBE, 0xB6, 0xD3, 0x2C, 0x3C, + 0xC7, 0x4C, 0x57, 0xBE, 0xFD, 0x9D, 0x7D, 0xBE, 0xB4, 0xF9, 0xA3, 0xBE, + 0x23, 0xB6, 0x3B, 0x3E, 0x9D, 0x23, 0x00, 0xBF, 0x11, 0x3D, 0x82, 0xBD, + 0x06, 0x3F, 0x1C, 0xBE, 0x21, 0x88, 0x47, 0xBF, 0x73, 0xB8, 0xB9, 0xBD, + 0x62, 0xA3, 0x52, 0xBD, 0x83, 0xA7, 0xEE, 0xBE, 0xFB, 0xC5, 0x2F, 0x3F, + 0x2E, 0x31, 0x1D, 0xBE, 0x0F, 0xF7, 0xDB, 0x3E, 0x2F, 0x1D, 0x9A, 0x3D, + 0xF9, 0xE6, 0x8D, 0x3E, 0x31, 0x23, 0x84, 0xBE, 0x0C, 0x62, 0x66, 0xBF, + 0xB2, 0x97, 0x0A, 0xBD, 0x4D, 0x1D, 0x90, 0x3E, 0x70, 0x99, 0x39, 0x3E, + 0xF8, 0x7E, 0x14, 0x3F, 0x4E, 0xA4, 0x13, 0xBD, 0xDA, 0x3B, 0xD4, 0x3E, + 0x2A, 0x62, 0x84, 0xBE, 0x93, 0xFD, 0x26, 0x3E, 0xD8, 0x63, 0x8C, 0xBE, + 0x54, 0xC2, 0x0E, 0xBF, 0x0D, 0xBF, 0x5D, 0xBD, 0x66, 0xE9, 0x80, 0x3E, + 0x93, 0xA1, 0x83, 0x3E, 0x10, 0x37, 0x94, 0x3A, 0xE1, 0x86, 0x5B, 0xBB, + 0x02, 0xBB, 0xDA, 0xBF, 0x67, 0xC0, 0x3F, 0x3F, 0xDE, 0x51, 0x7F, 0x3E, + 0x95, 0xF8, 0x0C, 0xBD, 0x9B, 0x69, 0x65, 0x3D, 0x77, 0x9F, 0x33, 0x3E, + 0x4C, 0x99, 0x65, 0x3E, 0xE8, 0x2B, 0x40, 0xBD, 0x63, 0x70, 0x36, 0x3D, + 0x9C, 0x5F, 0x81, 0x3E, 0xA8, 0xD9, 0xB7, 0x3E, 0xC8, 0xAF, 0x02, 0x3F, + 0x73, 0x8C, 0x95, 0x3E, 0x6A, 0x7C, 0xAA, 0xBD, 0xE5, 0xA5, 0x08, 0x3F, + 0xAE, 0x6D, 0x5D, 0xBE, 0x76, 0x3A, 0x1D, 0x3E, 0x81, 0xAE, 0x29, 0xBE, + 0xF1, 0x17, 0xD5, 0xBE, 0x82, 0xB9, 0x62, 0x3D, 0xA8, 0x6D, 0x48, 0x3D, + 0x79, 0xDB, 0x54, 0x3E, 0x8E, 0xB0, 0x96, 0x3D, 0x44, 0x55, 0x08, 0xBD, + 0x61, 0xDE, 0x84, 0x3C, 0x9D, 0x41, 0x2C, 0x3E, 0x73, 0x0E, 0x7A, 0xBD, + 0x71, 0xD7, 0x18, 0xBE, 0x1A, 0x04, 0x89, 0x3D, 0x9A, 0x26, 0xBC, 0x3D, + 0xAD, 0xEA, 0x03, 0x3D, 0xA1, 0xE2, 0xB6, 0x3B, 0xCB, 0xFB, 0x15, 0x3E, + 0x51, 0x26, 0x17, 0xBE, 0xCC, 0x40, 0x54, 0xBD, 0xA8, 0xA3, 0x37, 0x3C, + 0xE5, 0x70, 0xFA, 0xBC, 0xFE, 0x65, 0x6C, 0x3E, 0x49, 0x15, 0x14, 0xBD, + 0xBC, 0xB7, 0xAB, 0xBB, 0x44, 0x8A, 0xF4, 0xBD, 0x09, 0x5D, 0xE4, 0xBB, + 0x48, 0x7B, 0xD3, 0xBD, 0x6D, 0xF4, 0x0E, 0xBE, 0x60, 0x76, 0x78, 0xBE, + 0x51, 0xB3, 0xC8, 0xBD, 0x70, 0xFF, 0x1F, 0xBE, 0x78, 0xB6, 0x65, 0xBD, + 0x1C, 0xC2, 0x8C, 0x3D, 0xAA, 0x70, 0xE5, 0xBC, 0x2C, 0x17, 0x8C, 0xBB, + 0xDC, 0x9A, 0x7E, 0xBC, 0xA4, 0x25, 0x61, 0xBC, 0x5B, 0x92, 0x0C, 0x3D, + 0x52, 0x6F, 0x6A, 0xBC, 0xD5, 0x87, 0x3B, 0x3B, 0x7A, 0xA8, 0xBD, 0x3A, + 0x62, 0xCD, 0xA4, 0x3C, 0xA4, 0x05, 0x33, 0xBC, 0xB8, 0x3B, 0x4C, 0xBD, + 0x93, 0xA2, 0x04, 0xBD, 0x2F, 0x94, 0x83, 0xBD, 0x14, 0xC6, 0x09, 0xBA, + 0x72, 0x81, 0x3A, 0x3C, 0x93, 0x9C, 0xC6, 0xBC, 0x5D, 0xBC, 0xD5, 0x3C, + 0x89, 0x53, 0xBB, 0x3C, 0xF4, 0xF2, 0x07, 0x3D, 0xCD, 0x58, 0x18, 0xBB, + 0x6F, 0x87, 0x00, 0xBC, 0x91, 0x39, 0x06, 0x3D, 0xBD, 0xF0, 0x3E, 0x3C, + 0xC7, 0x42, 0x28, 0x3D, 0x9F, 0xBC, 0x03, 0x3D, 0xA4, 0xA5, 0xE5, 0xBC, + 0xB2, 0x63, 0x01, 0xBD, 0x0F, 0xDA, 0x0F, 0xBD, 0xB7, 0x66, 0xA2, 0x3C, + 0x04, 0xD8, 0x72, 0x3D, 0xD6, 0x02, 0x8C, 0x3C, 0x0B, 0xEC, 0x9D, 0xBE, + 0x4C, 0xE1, 0xE0, 0xBC, 0xB9, 0xF5, 0xA2, 0x3C, 0xF8, 0xBB, 0x5E, 0x3C, + 0x45, 0xE5, 0x15, 0xBE, 0x24, 0x4F, 0x6F, 0x3D, 0x8B, 0xF4, 0x1D, 0x3F, + 0x39, 0xAB, 0x79, 0xBD, 0x9A, 0x74, 0xC8, 0x3C, 0x62, 0xC3, 0xEB, 0x3D, + 0x98, 0x1B, 0x8C, 0xBC, 0x36, 0x68, 0x4A, 0xBC, 0x2B, 0x98, 0x1F, 0x3E, + 0x61, 0xA3, 0x56, 0x3E, 0xBD, 0x74, 0x66, 0xBC, 0x91, 0x5B, 0x51, 0x3E, + 0x9F, 0x8D, 0xAC, 0x3E, 0x27, 0xD4, 0x2A, 0xBD, 0x3C, 0xEA, 0x07, 0x3D, + 0xDB, 0x55, 0x24, 0x3F, 0x1E, 0x51, 0xF5, 0xBB, 0xE2, 0x33, 0xB4, 0x3E, + 0xAB, 0xAA, 0x3E, 0xBF, 0xF7, 0x76, 0xC0, 0xBC, 0x20, 0x6E, 0x61, 0x3E, + 0xE8, 0xEF, 0x13, 0xBE, 0xF9, 0x37, 0x99, 0x3F, 0xCE, 0xC7, 0x6E, 0x3E, + 0x0E, 0x00, 0x63, 0xBB, 0xAC, 0x1F, 0x05, 0x3E, 0x6E, 0xDB, 0x86, 0x3D, + 0x09, 0x87, 0x6F, 0xBD, 0xCF, 0xAA, 0xC8, 0x3E, 0xA7, 0x99, 0x25, 0x3E, + 0x9C, 0xC1, 0x90, 0x3E, 0x0A, 0xFE, 0x2A, 0x3E, 0xC6, 0x5B, 0xD3, 0x3E, + 0x85, 0x1D, 0x38, 0x3E, 0xBF, 0xB6, 0xBE, 0xBE, 0x07, 0x5F, 0xDD, 0xBC, + 0xA5, 0x93, 0xDA, 0xBE, 0xC8, 0x12, 0x99, 0xBE, 0x94, 0x3B, 0x96, 0x3D, + 0x72, 0xB6, 0xB4, 0xBC, 0x55, 0xE5, 0xD5, 0xBB, 0x03, 0x27, 0x0F, 0x3E, + 0x40, 0x72, 0x36, 0xBD, 0x87, 0x09, 0xC4, 0x3B, 0xC8, 0x94, 0xBC, 0x3E, + 0xCB, 0x2B, 0x18, 0x3F, 0x55, 0x17, 0x6A, 0xBE, 0xD6, 0xCE, 0x82, 0xBD, + 0x7C, 0x92, 0x24, 0xBD, 0x87, 0x56, 0x88, 0xBD, 0x07, 0x29, 0x97, 0x3E, + 0x0E, 0xD5, 0x3C, 0xBE, 0xE0, 0xD1, 0x10, 0xBE, 0x68, 0x65, 0x26, 0xBF, + 0x8A, 0x69, 0xAD, 0xBE, 0xB1, 0x7F, 0x42, 0xBD, 0x21, 0x94, 0xD2, 0xBE, + 0xCC, 0x7B, 0xE5, 0x3C, 0xF8, 0xCC, 0x98, 0x3E, 0x56, 0xAE, 0xE7, 0xBB, + 0x4A, 0x36, 0x04, 0xBC, 0xCC, 0x9B, 0x92, 0x3E, 0xEE, 0xC1, 0x96, 0x3D, + 0x6F, 0xA0, 0xA8, 0xBE, 0x7E, 0x0C, 0xCB, 0xBE, 0x16, 0xA9, 0x8C, 0x3F, + 0xF7, 0xC9, 0x73, 0xBD, 0xA3, 0xCC, 0x01, 0x3E, 0xCF, 0x64, 0xAD, 0xBC, + 0x5A, 0x32, 0x33, 0x3E, 0x3D, 0xC1, 0xE8, 0x3D, 0x6E, 0xED, 0x34, 0xBE, + 0xBB, 0xEA, 0xB5, 0xBE, 0x5C, 0xBC, 0xFC, 0xBD, 0xBA, 0xDA, 0x95, 0x3C, + 0x6B, 0xAE, 0x77, 0xBE, 0x24, 0x55, 0x4D, 0xBC, 0x9D, 0x63, 0x5D, 0xBF, + 0x7B, 0x08, 0xA4, 0x3D, 0x38, 0x91, 0x0B, 0xBF, 0xBC, 0x09, 0x7B, 0xBB, + 0x0F, 0xD4, 0x1F, 0x3E, 0x85, 0x75, 0x55, 0x3E, 0xB7, 0x15, 0x16, 0xBE, + 0x99, 0x8A, 0x88, 0xBE, 0x59, 0x25, 0xD5, 0x3D, 0xD0, 0xED, 0x6D, 0x3F, + 0xCF, 0x63, 0x1A, 0x3F, 0x22, 0x4C, 0x0A, 0x3F, 0xC3, 0xC8, 0xCE, 0x3E, + 0xBD, 0xFF, 0x79, 0xBF, 0x2F, 0x69, 0x1E, 0xBD, 0xEA, 0x94, 0xEF, 0x3E, + 0x6D, 0xCB, 0xD9, 0x3E, 0x77, 0x99, 0xFA, 0xBE, 0xAF, 0x84, 0xD7, 0x3E, + 0xE3, 0x3E, 0x62, 0xBE, 0xD4, 0xD1, 0xBC, 0xBE, 0xC5, 0x72, 0x31, 0xBF, + 0x2E, 0x2B, 0xF1, 0xBE, 0x19, 0x81, 0x09, 0x3E, 0x0E, 0xE3, 0x16, 0x3D, + 0xBF, 0x1E, 0xD0, 0x3E, 0xC9, 0xB2, 0x8E, 0x3E, 0xEA, 0x9F, 0x66, 0x3E, + 0xEA, 0x90, 0x76, 0x3E, 0xDD, 0x65, 0xB4, 0xBE, 0x2A, 0x0B, 0x96, 0x3E, + 0x57, 0xE8, 0xA3, 0xBF, 0x9B, 0x97, 0x05, 0x3E, 0xF3, 0x1C, 0x02, 0x3D, + 0x23, 0xAA, 0x31, 0x3F, 0x80, 0x24, 0xAA, 0xBE, 0xA5, 0xAA, 0x94, 0x3E, + 0xB2, 0x3F, 0xC1, 0x3E, 0x83, 0x93, 0xC3, 0x3D, 0xA6, 0xF3, 0xB3, 0xBE, + 0xD6, 0x80, 0xB9, 0xBC, 0xA3, 0x1B, 0x32, 0x3F, 0x08, 0x83, 0xD5, 0xBE, + 0x48, 0xF1, 0x16, 0xBE, 0xEC, 0x48, 0x9D, 0xBE, 0x21, 0x16, 0x9E, 0x3F, + 0x79, 0x66, 0xEE, 0xBE, 0xC3, 0x09, 0x85, 0xBE, 0x70, 0xCC, 0x91, 0x3D, + 0x04, 0xB1, 0xE0, 0xBD, 0x80, 0x14, 0x8D, 0xBD, 0xF3, 0x1D, 0xB1, 0x3C, + 0xFB, 0xB1, 0x6D, 0xBD, 0x72, 0xC2, 0xA4, 0x3C, 0xDD, 0x5D, 0x77, 0xBD, + 0xDB, 0x8E, 0xCB, 0xBC, 0x89, 0xB4, 0x92, 0x3D, 0xFF, 0x51, 0xB7, 0x3D, + 0x4C, 0xCD, 0xB4, 0x3D, 0xFC, 0x10, 0x13, 0x3D, 0xF7, 0x63, 0x8E, 0x3D, + 0xF9, 0x96, 0x93, 0x3D, 0x34, 0x2B, 0x32, 0x3C, 0xE6, 0xA0, 0x10, 0xBE, + 0x07, 0x0D, 0x66, 0x3E, 0x64, 0x52, 0x98, 0xBD, 0xA3, 0x8E, 0x49, 0x3D, + 0xCB, 0x38, 0x09, 0xBC, 0x0B, 0xB7, 0x22, 0xBE, 0x09, 0x76, 0x6A, 0x3D, + 0x1B, 0xA2, 0x91, 0xBD, 0xB7, 0x3B, 0x9D, 0xBD, 0xC9, 0xF0, 0x3D, 0xBE, + 0xE4, 0x72, 0x5F, 0xBD, 0x93, 0x90, 0x5B, 0x3D, 0x5F, 0x43, 0x85, 0xBD, + 0xC0, 0x75, 0xE6, 0xBD, 0xEA, 0xC4, 0xEA, 0xBD, 0x48, 0xDE, 0xAE, 0xBD, + 0x5F, 0xE9, 0x6D, 0xBE, 0xE1, 0x06, 0xDB, 0xBD, 0x84, 0x1B, 0x14, 0xBE, + 0x72, 0x7D, 0x13, 0xBE, 0x86, 0x53, 0x8A, 0x3D, 0x80, 0x6F, 0x8A, 0x3C, + 0x7A, 0x56, 0xA6, 0xBD, 0xBE, 0x55, 0x84, 0xBD, 0x04, 0xBE, 0xC8, 0x3D, + 0xA4, 0x69, 0x3F, 0xBC, 0xC2, 0x11, 0x95, 0x3C, 0xC2, 0xA0, 0xF6, 0x3D, + 0x7D, 0x4D, 0x89, 0x3E, 0x82, 0x4D, 0x1F, 0xBC, 0x1D, 0xFD, 0x8E, 0xBD, + 0xC5, 0xA6, 0x26, 0x3D, 0xD6, 0xEE, 0x30, 0x3E, 0x6D, 0x7C, 0x8E, 0xBD, + 0xA6, 0xC3, 0x93, 0x3D, 0x08, 0x0D, 0xDE, 0xBD, 0xA2, 0xCD, 0x1E, 0x3B, + 0x1D, 0x12, 0x69, 0x3C, 0xDA, 0xAF, 0x28, 0xBE, 0xB9, 0xC1, 0xCB, 0x3C, + 0xF7, 0xDD, 0x48, 0xBD, 0xE7, 0xC8, 0x9C, 0xBD, 0x03, 0xC2, 0x32, 0xBD, + 0x54, 0xC8, 0x1A, 0xBE, 0xD4, 0x46, 0x1D, 0xBE, 0xB2, 0xD2, 0x2D, 0xBD, + 0xAE, 0x45, 0x43, 0x3E, 0xB4, 0x8A, 0x84, 0xBE, 0xF2, 0x90, 0x9B, 0xBE, + 0x77, 0x00, 0x9E, 0x3D, 0x56, 0xAE, 0xFD, 0x3D, 0x1C, 0xA5, 0x8F, 0xBD, + 0xDA, 0xD2, 0x9C, 0x3C, 0x84, 0x00, 0xB4, 0x3E, 0xC5, 0x11, 0xA1, 0xBD, + 0xE4, 0x5C, 0xB8, 0x3D, 0xC2, 0xA6, 0x82, 0x3D, 0xB7, 0x13, 0x28, 0x3D, + 0x4F, 0x3F, 0x1F, 0xBC, 0xEC, 0x6E, 0x86, 0xBD, 0x72, 0x5F, 0xE9, 0xBD, + 0xE3, 0x0E, 0xF0, 0xBD, 0x84, 0x21, 0xBE, 0xBC, 0xAF, 0xB8, 0xED, 0x3A, + 0x1F, 0x71, 0x2D, 0x3C, 0x4A, 0x1A, 0xD6, 0x3D, 0xBE, 0x04, 0x95, 0x3C, + 0x32, 0xE6, 0x48, 0x3D, 0x2D, 0x41, 0x03, 0x3B, 0x8A, 0xA5, 0x17, 0x38, + 0xCD, 0x60, 0xC3, 0xBA, 0x04, 0x56, 0x90, 0x3C, 0x2D, 0x2B, 0xB1, 0x3D, + 0x60, 0x48, 0x56, 0xBD, 0x6D, 0x68, 0x2F, 0x3E, 0x5E, 0xF0, 0x3B, 0x3E, + 0xFE, 0x22, 0x81, 0xBD, 0xF9, 0xA5, 0x9A, 0x3D, 0x70, 0x14, 0x5C, 0xBE, + 0x5D, 0x80, 0x9A, 0xBC, 0xB8, 0x69, 0x7B, 0x3E, 0x5E, 0x73, 0x8F, 0xBC, + 0x20, 0x54, 0x56, 0xBD, 0x3F, 0x8D, 0x3B, 0xBD, 0xEC, 0xB6, 0x6C, 0x3D, + 0xF8, 0x7E, 0x5E, 0x3D, 0x0E, 0x98, 0xDA, 0xBD, 0x4A, 0x5C, 0x97, 0xBD, + 0x37, 0xAB, 0x88, 0x3C, 0xC3, 0x9E, 0x2D, 0xBD, 0x1C, 0x5F, 0x5B, 0xBB, + 0xA7, 0x46, 0x19, 0x3D, 0x39, 0xAB, 0x28, 0x3D, 0x74, 0x47, 0x16, 0xBD, + 0xA6, 0x6E, 0x03, 0x3C, 0x3C, 0x58, 0xC6, 0x3C, 0x31, 0x74, 0xD2, 0xBB, + 0x82, 0x3B, 0xB9, 0xB8, 0x6F, 0xB2, 0xCF, 0x3D, 0x41, 0x1F, 0x41, 0x3D, + 0xF5, 0x81, 0xC2, 0xBC, 0x4D, 0xFC, 0xB0, 0xBD, 0xC4, 0xF0, 0x16, 0xBD, + 0x17, 0x6E, 0x01, 0xBC, 0x43, 0x5D, 0x07, 0xBC, 0xB7, 0xD5, 0x25, 0x3D, + 0xBF, 0x56, 0x46, 0xBD, 0x50, 0xC0, 0x5E, 0xBD, 0xA2, 0xC6, 0x2F, 0x3D, + 0x6B, 0xAD, 0x8B, 0x3D, 0x07, 0x9B, 0x3E, 0xBC, 0xCB, 0x3B, 0xAE, 0xBC, + 0xE2, 0x4F, 0x1B, 0x3F, 0xA8, 0xFB, 0x28, 0x3C, 0x0D, 0x98, 0x8C, 0x3C, + 0x8E, 0x3B, 0xFD, 0x3B, 0xA1, 0x4D, 0xAD, 0xBD, 0xA5, 0x50, 0x03, 0x3E, + 0xE1, 0x98, 0x2B, 0xBD, 0xA7, 0xE2, 0x06, 0xBD, 0x1A, 0x62, 0x1C, 0x3D, + 0x4B, 0xDD, 0x5D, 0x3D, 0x3F, 0xD0, 0xD9, 0xBD, 0x9A, 0x42, 0xC8, 0xBD, + 0x44, 0x40, 0x28, 0xBD, 0xF5, 0xFB, 0xD6, 0xBD, 0x8B, 0xA7, 0xA8, 0xBC, + 0x02, 0x04, 0x36, 0x3D, 0xAB, 0x45, 0x7F, 0xBC, 0x95, 0x47, 0xB2, 0xBD, + 0x46, 0x72, 0xF4, 0x3C, 0x58, 0x93, 0x83, 0xBC, 0x4F, 0x89, 0x48, 0x3B, + 0x1F, 0x6E, 0xEC, 0x3D, 0x9A, 0x93, 0xE2, 0x3C, 0x69, 0x14, 0x83, 0x3D, + 0x08, 0x7A, 0xC9, 0x3D, 0x7A, 0x56, 0xFE, 0x3D, 0x25, 0xBA, 0xCC, 0xBD, + 0x3E, 0x7F, 0xD9, 0xBD, 0x1D, 0xC1, 0x17, 0xBE, 0xEA, 0x3C, 0xD3, 0xBB, + 0x77, 0x0C, 0xC0, 0x3A, 0xAD, 0xE1, 0x1C, 0xBD, 0x02, 0x03, 0x1E, 0xBF, + 0xDC, 0x7F, 0xA5, 0xBC, 0xD4, 0x2B, 0x06, 0x3E, 0x1D, 0x9E, 0x55, 0x3E, + 0x7B, 0x20, 0xE0, 0x3D, 0x39, 0x40, 0x3B, 0xBF, 0xFB, 0xBD, 0xD7, 0x3E, + 0x79, 0x6C, 0xA0, 0xBD, 0x43, 0x2F, 0x02, 0x3D, 0x63, 0xD2, 0xE6, 0xBC, + 0xD6, 0xFB, 0x0D, 0xBC, 0x1B, 0x21, 0x45, 0x3D, 0x27, 0xD0, 0x9D, 0x3E, + 0x7F, 0x51, 0xD8, 0xBD, 0x78, 0xAF, 0x51, 0x3B, 0x39, 0x33, 0xE5, 0x3E, + 0xC1, 0xD3, 0xA9, 0xBC, 0x58, 0xB9, 0x89, 0xBE, 0xAC, 0x37, 0x79, 0xBB, + 0x73, 0x36, 0x72, 0xBE, 0x42, 0x3E, 0xB6, 0x3C, 0x1D, 0x88, 0xAF, 0x3E, + 0x32, 0xFE, 0xDF, 0xBE, 0x87, 0x5A, 0xFF, 0xBC, 0xCD, 0xFF, 0xF7, 0xBC, + 0x58, 0xCC, 0x86, 0xBD, 0xC0, 0xEA, 0x01, 0xBF, 0x12, 0x3C, 0x12, 0x3E, + 0x05, 0x4C, 0x0E, 0x3E, 0xDA, 0x54, 0x9F, 0x3D, 0x1F, 0x78, 0x68, 0x3F, + 0x0A, 0x6E, 0xBE, 0x3D, 0xA7, 0x13, 0xAB, 0x3D, 0x0D, 0xD3, 0x1B, 0xBF, + 0x04, 0xDF, 0x8B, 0xBD, 0x6D, 0x62, 0x0E, 0x3D, 0x27, 0x7F, 0x21, 0xBE, + 0x1E, 0xAD, 0x01, 0x3E, 0x55, 0x84, 0xB1, 0x3C, 0x2D, 0x9B, 0xF8, 0x3B, + 0x9F, 0xBB, 0x8C, 0xBD, 0x0C, 0x05, 0x65, 0x3D, 0x9D, 0x8B, 0xFF, 0xBC, + 0x4C, 0x22, 0x18, 0xBE, 0x65, 0x5B, 0xE4, 0xBD, 0x2C, 0xF6, 0xA4, 0xBD, + 0xAF, 0xEB, 0xF3, 0x3C, 0xCC, 0xFF, 0x88, 0xBD, 0x8B, 0x6E, 0x35, 0x3D, + 0xAB, 0x45, 0x3B, 0x3D, 0xFA, 0xCD, 0x39, 0xBD, 0x47, 0xD2, 0x2C, 0xBD, + 0x33, 0x7D, 0x14, 0x3D, 0x0E, 0x7D, 0x93, 0x3D, 0xBD, 0xD4, 0x2C, 0x3D, + 0x92, 0x19, 0x2B, 0x3D, 0xC0, 0x3D, 0xD4, 0x3D, 0x88, 0x12, 0x31, 0x3D, + 0x2E, 0x3F, 0x3C, 0x3D, 0x8C, 0xAE, 0x4F, 0xBC, 0xBD, 0x93, 0x65, 0x3C, + 0xC7, 0xF2, 0x8E, 0xBC, 0xF6, 0x40, 0xDB, 0x3D, 0xFA, 0xCF, 0x0D, 0x3D, + 0x5E, 0x16, 0x54, 0xBE, 0xFF, 0xFC, 0x8A, 0x3D, 0xBB, 0x77, 0xAB, 0xBC, + 0x8C, 0xC1, 0x8C, 0xBD, 0x65, 0x24, 0xAB, 0x3C, 0x01, 0x10, 0x0D, 0xBC, + 0x97, 0x6F, 0x15, 0xBD, 0xE3, 0x44, 0x25, 0xBD, 0x35, 0x64, 0xB2, 0xBC, + 0xAB, 0x1D, 0x20, 0xBD, 0x16, 0xF6, 0xAA, 0x3D, 0x03, 0xCC, 0x89, 0x3C, + 0x2B, 0x2C, 0x65, 0x3D, 0xDD, 0xC4, 0x86, 0xBC, 0xF0, 0x3B, 0x9B, 0x3C, + 0x8B, 0x3F, 0x12, 0xBD, 0xDD, 0x82, 0x12, 0xBE, 0x15, 0xAC, 0x87, 0x3D, + 0x2A, 0xD7, 0x12, 0x3D, 0xE0, 0x0D, 0x42, 0x3B, 0x60, 0x72, 0xCC, 0xBA, + 0x92, 0x48, 0xBB, 0xBD, 0xE0, 0x77, 0xC7, 0xBD, 0x66, 0x54, 0xC4, 0x3B, + 0xED, 0x57, 0xBD, 0xBC, 0x02, 0x37, 0x5B, 0xBD, 0x16, 0xD4, 0x8E, 0x3D, + 0x98, 0x47, 0xA5, 0x3D, 0xD4, 0x53, 0x76, 0x3D, 0x78, 0x3F, 0x95, 0x3C, + 0x84, 0xA7, 0x5E, 0x3D, 0x09, 0xE6, 0x85, 0xBB, 0x62, 0x0F, 0x1E, 0x3E, + 0x8A, 0xA4, 0xA2, 0x3D, 0xDC, 0x91, 0x86, 0xBD, 0x02, 0x9D, 0x8B, 0x3E, + 0xE2, 0x02, 0x13, 0xBE, 0x65, 0x21, 0x93, 0xBE, 0x65, 0x6B, 0xA7, 0xBF, + 0x12, 0x6F, 0x04, 0x3C, 0x64, 0x43, 0x2C, 0xBE, 0xD8, 0x0D, 0x02, 0xBD, + 0x9F, 0x13, 0x8A, 0x3E, 0x19, 0x43, 0x76, 0x3E, 0xED, 0xF3, 0x8B, 0xBD, + 0x5C, 0xC1, 0x88, 0xBD, 0x55, 0x4E, 0xCF, 0xBC, 0xB5, 0x7F, 0x45, 0xBE, + 0x28, 0x0B, 0xF8, 0xBC, 0x4D, 0xD6, 0xAA, 0x3E, 0xE0, 0x7F, 0x36, 0xBF, + 0x91, 0xBF, 0xAD, 0xBE, 0xD9, 0xE5, 0x77, 0x3C, 0xF1, 0xE7, 0x80, 0x3D, + 0x66, 0x15, 0x32, 0xBE, 0xAE, 0x7A, 0x95, 0x3D, 0x23, 0x64, 0x5D, 0xBE, + 0x2C, 0x3D, 0x86, 0x3E, 0x39, 0x8A, 0x9E, 0xBE, 0x6A, 0x84, 0x4F, 0xBE, + 0x96, 0xB4, 0x50, 0xBE, 0x9E, 0xD3, 0x64, 0x3D, 0x52, 0x54, 0xBA, 0xBC, + 0x6B, 0x0D, 0x97, 0xBD, 0x45, 0xFC, 0x86, 0x3D, 0xDF, 0x8E, 0x4B, 0x3F, + 0x31, 0x6A, 0x1F, 0x3C, 0xD9, 0xAC, 0xFF, 0xBD, 0x59, 0x63, 0x91, 0x3D, + 0x8A, 0x83, 0x63, 0x3F, 0x1F, 0x42, 0x4C, 0xBE, 0xD7, 0xF0, 0x96, 0x3B, + 0xEC, 0x4D, 0x84, 0xBC, 0xC4, 0xB1, 0x33, 0x3D, 0x7B, 0x74, 0xC2, 0x3C, + 0xBD, 0xAF, 0xA7, 0x3C, 0xA7, 0xCA, 0x83, 0xBE, 0xDC, 0x73, 0xD6, 0xBD, + 0x59, 0x7B, 0x81, 0xBB, 0x43, 0x95, 0x2A, 0xBE, 0x93, 0xD6, 0x2D, 0x3C, + 0x0E, 0x2C, 0x81, 0x3E, 0xC1, 0x23, 0x63, 0xBD, 0x89, 0xF6, 0x1A, 0x3E, + 0xFB, 0x56, 0xB8, 0xBB, 0xD7, 0x06, 0x32, 0xBE, 0xB2, 0xC7, 0x0F, 0xBE, + 0xDB, 0x61, 0xE8, 0x3A, 0xA2, 0x38, 0xC7, 0x3C, 0xFA, 0x9C, 0xD3, 0x3D, + 0x97, 0x12, 0x3F, 0x3E, 0xFB, 0xB1, 0x02, 0x3F, 0xE0, 0xC4, 0x44, 0x3D, + 0xD3, 0xAE, 0x5B, 0x3D, 0x6F, 0xAA, 0x9C, 0x3E, 0xFC, 0xC6, 0x72, 0x3B, + 0x54, 0x02, 0xF4, 0xBE, 0x53, 0x59, 0x11, 0x3D, 0x00, 0x54, 0x3C, 0xBC, + 0x2C, 0xA9, 0xC9, 0xBD, 0xD6, 0xD8, 0xEE, 0x3B, 0xEE, 0x1B, 0x62, 0x3E, + 0xE6, 0x52, 0x7F, 0x3E, 0x28, 0x2C, 0x17, 0x3E, 0xD9, 0x52, 0x21, 0x3E, + 0x01, 0x13, 0x8E, 0x3D, 0x9B, 0xBD, 0x0C, 0xBE, 0xF4, 0x46, 0x89, 0x3A, + 0xBF, 0x30, 0x5B, 0x3C, 0xCA, 0x06, 0x21, 0xBE, 0xDF, 0xD0, 0x86, 0x3B, + 0xCC, 0x88, 0x65, 0x3E, 0xA3, 0x6E, 0x49, 0x3E, 0x5C, 0xA9, 0x10, 0xBE, + 0xE2, 0xD1, 0x1B, 0x3C, 0x82, 0x0E, 0x89, 0xBE, 0x31, 0x59, 0x4D, 0xBD, + 0xB4, 0x4D, 0x98, 0x3E, 0xD4, 0xC2, 0xDB, 0x3D, 0x0F, 0xC0, 0xA7, 0x3D, + 0x10, 0xF2, 0xA5, 0x3D, 0x84, 0x92, 0x92, 0x3E, 0x69, 0x53, 0x35, 0xBE, + 0x57, 0x7E, 0x2A, 0x3D, 0xDF, 0xB2, 0xB2, 0xBD, 0x81, 0x50, 0xAE, 0x3D, + 0x81, 0xD6, 0x4A, 0xBE, 0x2A, 0x55, 0xBF, 0x3D, 0x9C, 0x68, 0xE9, 0x3D, + 0x78, 0x24, 0xED, 0xBD, 0x1B, 0xE5, 0xD4, 0x3D, 0x59, 0xAF, 0xC5, 0x3C, + 0xCE, 0x95, 0x9C, 0x3E, 0xB6, 0x52, 0xFC, 0xBE, 0x0A, 0x42, 0xE0, 0x3E, + 0x0E, 0x78, 0x07, 0xBE, 0x12, 0x1D, 0x22, 0x3E, 0xEB, 0x1B, 0x35, 0xBD, + 0x6C, 0x16, 0xE9, 0xBE, 0xED, 0xD6, 0x8D, 0x3D, 0x45, 0xA7, 0x0F, 0xBD, + 0x9A, 0x9C, 0x5A, 0x3E, 0xB9, 0xF0, 0x2D, 0x3C, 0x82, 0x73, 0x9B, 0xBE, + 0x5E, 0x53, 0x02, 0xBF, 0x0E, 0x88, 0xCC, 0x3D, 0x71, 0xED, 0xD7, 0x3D, + 0xC4, 0x84, 0x0D, 0x3F, 0x65, 0xEC, 0x72, 0x3C, 0x0C, 0xEC, 0x86, 0xBB, + 0x77, 0x63, 0x5C, 0xBF, 0x02, 0x29, 0xCA, 0xBD, 0xAA, 0x8F, 0xB5, 0x3D, + 0x2C, 0xD3, 0x4A, 0xBF, 0x24, 0x15, 0xA2, 0x3F, 0x8A, 0xE2, 0xB2, 0x3D, + 0x93, 0x71, 0x25, 0xBD, 0xD2, 0x8C, 0x52, 0xBF, 0x67, 0xAA, 0x77, 0x3E, + 0xEE, 0xD6, 0x49, 0xBE, 0x3F, 0x55, 0x79, 0x3D, 0xC0, 0xDC, 0x35, 0x3D, + 0x29, 0x9E, 0x49, 0xBC, 0xE4, 0x59, 0x90, 0x3E, 0x98, 0x32, 0x5D, 0xBD, + 0x93, 0x1F, 0x37, 0xBF, 0x0C, 0x2F, 0x77, 0x3F, 0x68, 0x1C, 0xC9, 0xBB, + 0xD4, 0xE1, 0xC5, 0xBD, 0x2F, 0x81, 0x81, 0x3E, 0x87, 0x26, 0x57, 0x3E, + 0xBD, 0xCC, 0xF6, 0x39, 0x41, 0x24, 0xC9, 0x3E, 0xC4, 0x5B, 0xA8, 0x3D, + 0xCF, 0x65, 0x95, 0xBB, 0xA7, 0x5F, 0xDF, 0x3E, 0xED, 0xE1, 0x61, 0xBF, + 0x5F, 0xB2, 0x61, 0x3F, 0x80, 0x92, 0xF2, 0x3E, 0x74, 0xCD, 0x0E, 0x3F, + 0x5F, 0x56, 0xBE, 0x3D, 0x6B, 0x5E, 0x74, 0x3F, 0x88, 0x41, 0xB2, 0xBE, + 0x9C, 0xDA, 0xC4, 0xBE, 0x80, 0x46, 0x9A, 0xBD, 0xFA, 0x5B, 0x8C, 0xBE, + 0xA3, 0xD0, 0x0E, 0x3F, 0x4E, 0xB0, 0x99, 0x3E, 0xDF, 0x9A, 0xDE, 0xBD, + 0x75, 0xBC, 0x31, 0x3F, 0xAD, 0x6A, 0xCC, 0x3E, 0xAD, 0xEF, 0x50, 0xBC, + 0xDB, 0x5B, 0x02, 0x3E, 0x08, 0xA7, 0x1D, 0x3E, 0x18, 0x58, 0xFE, 0xBD, + 0xCE, 0x68, 0x07, 0xBF, 0x70, 0x72, 0x4E, 0xBE, 0x10, 0xD1, 0xC7, 0x3E, + 0x12, 0xB5, 0x82, 0x3E, 0x1B, 0xC1, 0xFD, 0x3D, 0xF1, 0xB4, 0x00, 0x3D, + 0xBA, 0x7E, 0x5C, 0xBE, 0xC3, 0xE0, 0x43, 0x3E, 0xC8, 0x2F, 0x87, 0x3C, + 0x67, 0xD3, 0x06, 0x3F, 0x04, 0xB5, 0x9E, 0xBE, 0x80, 0x0E, 0xB4, 0xBA, + 0x14, 0x31, 0x0F, 0x3F, 0x95, 0x06, 0xC3, 0x3E, 0x17, 0x81, 0x2E, 0xBF, + 0x68, 0x6D, 0x6D, 0xBD, 0x24, 0xB6, 0x14, 0xBF, 0xE0, 0xCA, 0x19, 0x3C, + 0xF9, 0xB1, 0xB7, 0xBE, 0xF3, 0x85, 0x16, 0xBF, 0x47, 0xDC, 0x3A, 0xBC, + 0x56, 0x9B, 0x5F, 0xBD, 0x21, 0x33, 0x5B, 0x3F, 0x47, 0xA4, 0x96, 0xBE, + 0xA1, 0x73, 0x60, 0xBE, 0x61, 0x52, 0x09, 0x3D, 0x06, 0x07, 0xDA, 0xBD, + 0xDD, 0xEE, 0xA4, 0x3E, 0x46, 0xA3, 0x6D, 0x3D, 0x4F, 0xE8, 0xE1, 0xBE, + 0xD3, 0xD5, 0x13, 0xBF, 0x5B, 0xD3, 0x84, 0x3D, 0x47, 0x1B, 0x46, 0xBD, + 0x54, 0x4B, 0x51, 0xBD, 0x46, 0xC8, 0x2A, 0x3E, 0x09, 0x71, 0xFE, 0xBA, + 0x56, 0xD2, 0x91, 0xBD, 0x84, 0x0F, 0xEC, 0x3B, 0xE3, 0x8A, 0xA4, 0x3D, + 0x6E, 0x76, 0x99, 0x3C, 0xFB, 0x40, 0x18, 0x3D, 0x91, 0x5C, 0x69, 0x3D, + 0xCD, 0xDF, 0x4B, 0xBC, 0x9C, 0x74, 0xB6, 0x3C, 0x9F, 0x8D, 0x8A, 0xBD, + 0x52, 0x87, 0x0D, 0xBE, 0x81, 0x91, 0x11, 0x3E, 0x8D, 0x8E, 0x09, 0x3D, + 0x0B, 0xF7, 0xB6, 0x3B, 0xA4, 0x4F, 0x31, 0xBC, 0xC3, 0x09, 0xCC, 0xBD, + 0x51, 0x2A, 0x76, 0xBD, 0xEE, 0xA3, 0xA0, 0xBD, 0x44, 0xAF, 0xE6, 0x3C, + 0x2A, 0x41, 0xBF, 0xBD, 0x4D, 0x59, 0x25, 0x3D, 0x79, 0xAE, 0x25, 0x3C, + 0x00, 0x28, 0xCD, 0x3B, 0x4D, 0xD9, 0x35, 0x3C, 0x95, 0x06, 0xC3, 0xBD, + 0xB4, 0x67, 0x96, 0xBD, 0x9C, 0x97, 0x47, 0xBE, 0xB0, 0x0A, 0x10, 0x3D, + 0xAE, 0x68, 0x61, 0xBD, 0x64, 0xE3, 0x99, 0xBC, 0x47, 0xEE, 0x96, 0xBD, + 0xCE, 0x38, 0xF0, 0x3D, 0x40, 0x85, 0x07, 0x3D, 0xB9, 0xD8, 0xF9, 0xBC, + 0xCA, 0xCE, 0x8C, 0xBC, 0xAF, 0x01, 0x6B, 0x3D, 0x41, 0x4A, 0x8A, 0x3C, + 0x83, 0xA7, 0xE0, 0xBC, 0xD9, 0xDF, 0x23, 0xBD, 0x81, 0x0B, 0xE1, 0x3C, + 0xE4, 0x1F, 0x14, 0x3C, 0x23, 0x07, 0x41, 0xBD, 0x37, 0x0F, 0x0B, 0xBE, + 0x0F, 0x4E, 0x4F, 0x3D, 0xD4, 0x15, 0xA8, 0xBC, 0x50, 0x0F, 0x1E, 0xBD, + 0x20, 0xEE, 0xCE, 0x3B, 0xF1, 0xED, 0x12, 0xBD, 0xA5, 0xF7, 0xA4, 0xBC, + 0x92, 0xE4, 0xE5, 0xBB, 0xD1, 0xF7, 0x8C, 0x3D, 0xA0, 0xE3, 0x8F, 0xBD, + 0x05, 0xFD, 0xAE, 0x3D, 0x2D, 0x97, 0x4B, 0x3D, 0x09, 0xE2, 0x56, 0x3D, + 0x82, 0xBD, 0x30, 0xBB, 0x94, 0x6E, 0xCE, 0xBD, 0x7C, 0x4A, 0x6A, 0x3D, + 0x98, 0x58, 0x54, 0xBE, 0xA8, 0xC1, 0x09, 0x3D, 0x53, 0x46, 0x0C, 0xBD, + 0x7B, 0x2C, 0x6D, 0xBC, 0xBA, 0xFE, 0x90, 0x3D, 0x7E, 0xF3, 0xAE, 0xBB, + 0xCF, 0xB6, 0xC4, 0x3B, 0xF4, 0x05, 0x12, 0x3D, 0x88, 0x58, 0x9C, 0x3C, + 0xC8, 0xA6, 0x09, 0xBD, 0xC7, 0x06, 0x91, 0xBC, 0x54, 0xC6, 0xA5, 0x3D, + 0x22, 0x50, 0x0C, 0x3C, 0x3B, 0x38, 0x02, 0x3D, 0xD9, 0xDA, 0xBD, 0xBC, + 0x0A, 0x59, 0xBC, 0x3C, 0x57, 0xA3, 0x60, 0x3D, 0x7F, 0x19, 0xBE, 0xBD, + 0x24, 0xAD, 0x62, 0xBC, 0x74, 0x6A, 0x89, 0xBC, 0xFE, 0x10, 0xAE, 0xBB, + 0xD6, 0x60, 0xD1, 0x3C, 0x39, 0xC4, 0x26, 0xBD, 0x3B, 0x29, 0x04, 0xBD, + 0x07, 0x39, 0xE2, 0xBC, 0x8F, 0x62, 0x80, 0x3D, 0x5E, 0xB7, 0xFF, 0xBC, + 0x0E, 0x53, 0x16, 0x3E, 0x3C, 0x10, 0x89, 0x3D, 0x5E, 0x27, 0x46, 0xBC, + 0xDA, 0x7A, 0x24, 0xBD, 0xED, 0xF5, 0x20, 0x3D, 0x26, 0x0A, 0x88, 0x3E, + 0x71, 0x50, 0xEE, 0xBA, 0x57, 0x78, 0x58, 0x3D, 0x9B, 0x13, 0x81, 0xBD, + 0x5F, 0xFE, 0x4E, 0x3D, 0x42, 0xC2, 0x7E, 0x3C, 0xD8, 0x67, 0x92, 0x3D, + 0x9A, 0xAC, 0x47, 0x3D, 0x17, 0x6D, 0x19, 0x3D, 0x70, 0x5B, 0x9A, 0x3C, + 0x2C, 0xCD, 0x52, 0x3A, 0x52, 0x3C, 0x02, 0x3E, 0x52, 0xAD, 0x83, 0x3D, + 0xC4, 0x60, 0xDB, 0x3C, 0xEA, 0x12, 0xCD, 0xBB, 0x1C, 0x01, 0x77, 0x3C, + 0x41, 0x91, 0x90, 0xBD, 0xCB, 0x1C, 0x17, 0x3D, 0x6B, 0xD5, 0x5B, 0xBD, + 0xB7, 0x89, 0xE2, 0xBD, 0xA7, 0xB8, 0x9C, 0xB9, 0xE4, 0xFD, 0xC5, 0x3B, + 0x8B, 0xC6, 0x26, 0xBC, 0xB3, 0xAB, 0x4D, 0xBD, 0xAA, 0x15, 0x18, 0xBD, + 0xD3, 0xC7, 0xAC, 0xBC, 0x86, 0xF4, 0x1F, 0x3C, 0xBA, 0xE2, 0x11, 0x3E, + 0xEE, 0x1C, 0x80, 0x3D, 0x17, 0xCC, 0x17, 0xBD, 0x8E, 0xB3, 0x59, 0xBE, + 0xB4, 0xA6, 0x43, 0xBD, 0x69, 0xD3, 0x94, 0x3D, 0x6E, 0xFA, 0xBE, 0x3B, + 0x09, 0xE5, 0x5E, 0x3C, 0x0E, 0x12, 0xDB, 0xBA, 0x75, 0x06, 0x0E, 0xBE, + 0xF8, 0xC4, 0x40, 0xBF, 0x7E, 0x44, 0x65, 0x3E, 0xFD, 0x19, 0x5E, 0x3D, + 0x38, 0x73, 0x35, 0xBC, 0x64, 0xA0, 0xBF, 0x3C, 0xA7, 0x47, 0x0B, 0x3E, + 0x9A, 0x74, 0xBC, 0x3C, 0x7F, 0xF6, 0x71, 0x3E, 0xA8, 0x4A, 0x97, 0xBE, + 0x67, 0x8E, 0xA9, 0xBB, 0x4B, 0x85, 0x94, 0x3E, 0x9F, 0x99, 0xDB, 0xBE, + 0x50, 0xBC, 0xB7, 0xBD, 0x6C, 0x43, 0x98, 0xBB, 0x40, 0x2B, 0x9F, 0xBE, + 0x9B, 0x8A, 0x16, 0xBB, 0x52, 0xF2, 0x8D, 0x3C, 0xEE, 0x1E, 0x55, 0x3F, + 0xB2, 0x3B, 0x3A, 0xBD, 0x1E, 0xD6, 0xB1, 0xBD, 0xED, 0xDB, 0xC6, 0x3E, + 0xA5, 0x05, 0x3B, 0xBF, 0x87, 0x42, 0x98, 0x3E, 0x1F, 0xF9, 0x94, 0x3E, + 0xD1, 0x7E, 0x4A, 0x3D, 0x05, 0xB4, 0x9A, 0x3F, 0x63, 0xC8, 0x05, 0xBD, + 0xC7, 0xEE, 0x60, 0xBF, 0xD2, 0xA6, 0x79, 0xBD, 0xEF, 0x9C, 0xBB, 0xBD, + 0xA7, 0x87, 0xE3, 0x3E, 0x14, 0xEB, 0x0E, 0x3E, 0xC8, 0x82, 0x3A, 0xBE, + 0x5F, 0x3B, 0x89, 0x3E, 0xD9, 0x8A, 0x65, 0x3D, 0xAB, 0x34, 0x01, 0x3D, + 0xD0, 0x0A, 0x67, 0x3E, 0xE3, 0x11, 0xD8, 0x3A, 0x88, 0x97, 0x26, 0xBE, + 0x31, 0x1C, 0xE2, 0xBE, 0x9D, 0x28, 0x39, 0xBE, 0x2E, 0x2C, 0x40, 0xBB, + 0x5E, 0x82, 0x85, 0xBE, 0x65, 0x17, 0xFA, 0x3D, 0x3D, 0x86, 0x81, 0x3E, + 0xBB, 0x37, 0x15, 0x3E, 0x19, 0xA2, 0xBF, 0x3D, 0x41, 0xD7, 0xF6, 0xBC, + 0xFC, 0xA2, 0x09, 0x3F, 0xED, 0x2D, 0xA5, 0x3D, 0xBA, 0x9B, 0x2C, 0x3D, + 0x60, 0xBA, 0x27, 0x3E, 0xA5, 0x7D, 0x02, 0xBF, 0xC4, 0xC5, 0x97, 0x3D, + 0x1F, 0x13, 0xCA, 0x3E, 0xF9, 0xA1, 0xC5, 0x3D, 0x1E, 0xC8, 0xB2, 0x3D, + 0xAF, 0x62, 0x85, 0xBD, 0x7D, 0x8A, 0x4C, 0x3E, 0xED, 0x54, 0xF6, 0x3D, + 0x52, 0xC8, 0x70, 0x3E, 0xCD, 0x70, 0x80, 0x3E, 0x20, 0x08, 0x16, 0x3F, + 0x4C, 0x44, 0x08, 0xBD, 0x9E, 0x4A, 0x5E, 0x3F, 0x90, 0x22, 0xFB, 0x3E, + 0xBB, 0x1C, 0xBD, 0xBE, 0xE1, 0x3F, 0x70, 0xBF, 0x6A, 0x95, 0xE1, 0xBD, + 0x37, 0x37, 0x9B, 0x3E, 0x0B, 0xD5, 0x27, 0xBF, 0x59, 0x13, 0x84, 0xBC, + 0xCE, 0xD2, 0x85, 0x3F, 0xAA, 0xF6, 0x91, 0x3E, 0x4D, 0xCC, 0xC5, 0x3E, + 0xDE, 0xAA, 0x7F, 0x40, 0x16, 0xA5, 0x9E, 0x3D, 0x6B, 0x67, 0x17, 0xBE, + 0xC2, 0x5D, 0x77, 0x3F, 0x4B, 0xE0, 0x86, 0x3E, 0x05, 0xAC, 0x70, 0x3F, + 0xB2, 0x60, 0x30, 0xBF, 0x97, 0xCF, 0xB3, 0x3E, 0x02, 0xF8, 0x6F, 0x3F, + 0xA1, 0xF5, 0x0A, 0x3E, 0x34, 0x71, 0x27, 0xBE, 0xBB, 0x6A, 0x17, 0xBF, + 0x4B, 0x7B, 0x84, 0xBF, 0x75, 0x32, 0x0D, 0x3E, 0xCF, 0xF8, 0x2A, 0xBF, + 0x01, 0xBF, 0xA2, 0x3F, 0xA5, 0x2B, 0x66, 0x3F, 0xDE, 0x97, 0x60, 0x3E, + 0x7B, 0x65, 0x59, 0x3F, 0xF9, 0xB8, 0xE8, 0x3A, 0x6F, 0x90, 0x51, 0x3D, + 0x9C, 0x36, 0xD9, 0xBD, 0x99, 0xAC, 0xF6, 0xBC, 0xE4, 0x59, 0xEE, 0x3C, + 0x17, 0x75, 0x0E, 0xBC, 0x37, 0xD8, 0xB8, 0xBD, 0x23, 0x1A, 0xD6, 0x3C, + 0xF5, 0x16, 0x36, 0x3D, 0x90, 0x28, 0x88, 0x3A, 0x98, 0xC9, 0x51, 0x3C, + 0xA2, 0x8E, 0x2B, 0x3C, 0x74, 0xFD, 0xC3, 0x3C, 0x4A, 0xD4, 0x03, 0xBE, + 0x45, 0xFF, 0x82, 0xBC, 0x40, 0x7E, 0x6E, 0x3C, 0x4B, 0x84, 0x98, 0xBA, + 0x24, 0x9B, 0x7A, 0xBC, 0xD6, 0xAA, 0x61, 0xBD, 0xA5, 0xCA, 0x31, 0xBD, + 0xEE, 0xC4, 0x25, 0xBC, 0x0B, 0x8E, 0xE4, 0xBC, 0x5A, 0x05, 0x5E, 0xBC, + 0x74, 0xCF, 0x9B, 0xBB, 0xC3, 0x53, 0x95, 0xBA, 0xF8, 0x11, 0xC0, 0xBB, + 0x4D, 0x0D, 0xE2, 0xBA, 0x52, 0x98, 0x90, 0x3D, 0x0A, 0xD6, 0x8C, 0xBC, + 0xF2, 0xC2, 0x83, 0x3B, 0xB1, 0x7C, 0xD0, 0xBC, 0xC9, 0x66, 0xF8, 0xBC, + 0xD3, 0x69, 0x92, 0x3D, 0xD4, 0xF4, 0xA8, 0xBE, 0xBC, 0xB0, 0x8C, 0xBF, + 0xF2, 0x05, 0x94, 0xBD, 0xD1, 0x76, 0x60, 0x3D, 0x59, 0x8F, 0x0F, 0x3E, + 0x5F, 0xB0, 0xAB, 0x3D, 0xB5, 0xC4, 0x24, 0x3E, 0x50, 0xC9, 0x9E, 0xBB, + 0x53, 0x3C, 0xEB, 0x3D, 0x67, 0xCD, 0x2D, 0xBE, 0xA7, 0x6C, 0xF4, 0x3B, + 0x3D, 0x2D, 0xD5, 0xBC, 0xF3, 0xB7, 0x88, 0xBD, 0x1C, 0x2A, 0x73, 0xBE, + 0x09, 0x25, 0xA5, 0xBC, 0x48, 0x4A, 0xA5, 0xBE, 0x21, 0x23, 0x9F, 0x3A, + 0x43, 0xB2, 0x17, 0x3E, 0x17, 0x4E, 0x7B, 0x3D, 0x98, 0xC8, 0xEF, 0xBB, + 0x72, 0x46, 0x42, 0xBD, 0x1D, 0xEE, 0x91, 0x3E, 0xEB, 0xD7, 0x9A, 0xBE, + 0x97, 0x48, 0x27, 0xBF, 0x4C, 0xA4, 0x9C, 0x3E, 0x36, 0x14, 0x9F, 0xBD, + 0xDE, 0x8D, 0x6E, 0xBE, 0x6B, 0x4C, 0x8C, 0x3D, 0xC9, 0x00, 0x01, 0xBE, + 0x66, 0x91, 0x23, 0x3D, 0x16, 0x75, 0x84, 0xBD, 0x80, 0x6F, 0x88, 0x3C, + 0xE5, 0xC2, 0x16, 0x3E, 0x68, 0x7F, 0x77, 0x3E, 0x7D, 0xE3, 0x2B, 0xBF, + 0x8D, 0x68, 0x0D, 0x3F, 0xA0, 0xD0, 0x35, 0xBE, 0xC5, 0x76, 0x2E, 0xBF, + 0xDC, 0x2B, 0xF8, 0xBC, 0xCA, 0xF0, 0x36, 0xBF, 0x86, 0xF4, 0x73, 0x3E, + 0x93, 0xB1, 0x3D, 0x3E, 0x88, 0xFA, 0xA5, 0x3E, 0xED, 0xF0, 0x8B, 0xBE, + 0x2B, 0x23, 0x8E, 0x3E, 0x27, 0x1D, 0x3D, 0x3F, 0x0A, 0x5D, 0xD2, 0x3C, + 0xDB, 0x36, 0xAD, 0xBE, 0xAB, 0xDD, 0xB6, 0x3E, 0x17, 0xB6, 0x78, 0xBE, + 0xE0, 0xE3, 0xA0, 0xBE, 0x39, 0x33, 0x3B, 0xBE, 0xAB, 0x21, 0x84, 0x3E, + 0xCB, 0x50, 0xDD, 0x3E, 0x74, 0xB9, 0xB7, 0x3B, 0xE0, 0xF0, 0x16, 0xBF, + 0x90, 0x9C, 0x53, 0x3E, 0xDB, 0xBA, 0xCA, 0x3E, 0x8A, 0xD7, 0xF7, 0xBD, + 0x8B, 0x36, 0x90, 0x3E, 0x30, 0x24, 0x00, 0xBF, 0x04, 0x53, 0xA5, 0x3C, + 0x49, 0x38, 0x91, 0x3E, 0xFA, 0x09, 0x2B, 0x3C, 0xD0, 0x7D, 0x37, 0x3D, + 0x96, 0x73, 0xBF, 0xBD, 0xAA, 0x57, 0x05, 0xBE, 0x78, 0x06, 0x29, 0xBD, + 0x79, 0xE6, 0xA9, 0x3C, 0x7A, 0x5D, 0x33, 0xBD, 0x15, 0x45, 0x93, 0x3C, + 0x7D, 0x90, 0xB1, 0x3D, 0xFD, 0xEF, 0xA7, 0x3D, 0x38, 0x9B, 0xAE, 0x3C, + 0x96, 0x8A, 0x8F, 0xBA, 0xED, 0xBF, 0xAD, 0x3D, 0xFB, 0x33, 0x3A, 0x3D, + 0xF5, 0xF1, 0x85, 0xBD, 0xCF, 0x48, 0x8F, 0x3D, 0x14, 0xD2, 0x32, 0x3D, + 0x9A, 0x37, 0x30, 0xBC, 0x38, 0x21, 0x23, 0xBD, 0x31, 0x99, 0x68, 0xBD, + 0x4A, 0x75, 0x24, 0xBD, 0x33, 0x9A, 0xD5, 0xBC, 0x52, 0x0D, 0x73, 0x3D, + 0x6C, 0x46, 0xE7, 0xBD, 0x90, 0x4B, 0x0C, 0xBE, 0x0B, 0xAD, 0xB7, 0xBD, + 0xE4, 0x9F, 0xC8, 0xBB, 0x42, 0xC4, 0xDC, 0x3C, 0xE6, 0x9A, 0xCF, 0xBC, + 0x48, 0xD8, 0x84, 0xBE, 0x09, 0x87, 0x0A, 0xBE, 0xE7, 0x99, 0xBE, 0xBB, + 0xE8, 0x90, 0xA0, 0xBB, 0xF5, 0xC0, 0x0E, 0xBD, 0x5F, 0x1E, 0x44, 0x3C, + 0x84, 0x08, 0x7B, 0x3B, 0x6E, 0xCC, 0x3A, 0xBC, 0x31, 0x01, 0x14, 0xBC, + 0x40, 0x6C, 0xED, 0xBC, 0x35, 0x48, 0x01, 0xBD, 0xA1, 0x76, 0x01, 0x3D, + 0x23, 0xF1, 0x18, 0x3D, 0x73, 0x55, 0x97, 0x3D, 0x64, 0xA8, 0xD7, 0x3C, + 0x7E, 0xF9, 0x1A, 0xBD, 0x68, 0xE5, 0x6B, 0x3D, 0x2B, 0x7B, 0x9C, 0xBD, + 0xED, 0xFF, 0xED, 0x38, 0x26, 0x1A, 0xB5, 0xBD, 0xA5, 0xDC, 0x99, 0xBA, + 0xB7, 0x0D, 0x1A, 0x3D, 0xD2, 0x1D, 0x97, 0xBB, 0x7A, 0xCD, 0x40, 0x3C, + 0xCE, 0xFF, 0x1D, 0xBD, 0x1A, 0x72, 0x70, 0x3C, 0x17, 0xCF, 0x75, 0xBB, + 0x5A, 0xDC, 0x03, 0xBE, 0xE2, 0x42, 0x7F, 0x3D, 0xBC, 0xD8, 0xA4, 0x3A, + 0x32, 0x12, 0x90, 0x3C, 0x40, 0xAB, 0xAE, 0xBD, 0x89, 0xCA, 0x8D, 0x3E, + 0xAE, 0x06, 0x00, 0x3E, 0xC4, 0xE3, 0x62, 0xBB, 0x95, 0x5D, 0x48, 0xBE, + 0x92, 0x72, 0xBB, 0x3D, 0xA3, 0xAB, 0xD9, 0xBD, 0x27, 0xD4, 0xAD, 0xBD, + 0x0C, 0xCD, 0x1A, 0xBD, 0x2D, 0xEF, 0xAF, 0xBD, 0xD5, 0xA2, 0x91, 0xBD, + 0xF6, 0x5D, 0x5F, 0x3E, 0x45, 0x78, 0x04, 0x3E, 0x22, 0x35, 0x7E, 0x3E, + 0xB1, 0xD7, 0x2C, 0xBD, 0xDD, 0xA9, 0x5B, 0xBD, 0x23, 0x77, 0x12, 0xBB, + 0xE7, 0xE6, 0xD4, 0x3C, 0x58, 0x1B, 0xE9, 0x3E, 0xB7, 0xDE, 0xA1, 0x3B, + 0x2A, 0xC8, 0x80, 0x3E, 0x5D, 0x3A, 0x29, 0xBC, 0xC7, 0x6A, 0x10, 0xBE, + 0x22, 0xD9, 0xD4, 0x3D, 0x41, 0x69, 0x36, 0xBD, 0x7C, 0x7D, 0xF1, 0xBD, + 0x14, 0xCB, 0x95, 0xBE, 0x7E, 0xB1, 0x76, 0x3E, 0x30, 0xDF, 0x37, 0x3E, + 0x9E, 0x1E, 0x1F, 0x3D, 0x70, 0x9B, 0x83, 0xBE, 0xE3, 0xB2, 0x00, 0xBE, + 0xC6, 0x94, 0xAC, 0xBE, 0xB0, 0x41, 0x4A, 0xBE, 0xDE, 0x3D, 0x52, 0xBC, + 0x65, 0x60, 0xC7, 0xBC, 0x25, 0x4F, 0x80, 0x3E, 0xD7, 0x6F, 0x5E, 0xBC, + 0x0F, 0xCC, 0x19, 0xBF, 0x49, 0x99, 0xB5, 0x3E, 0x2B, 0x09, 0x65, 0x3E, + 0x47, 0xAE, 0xCC, 0xBC, 0xA1, 0xBE, 0xA6, 0xBE, 0x29, 0x7C, 0x78, 0xBF, + 0x01, 0x5D, 0x09, 0xBE, 0xB3, 0x98, 0x97, 0x3F, 0xBF, 0x2D, 0xC5, 0x3D, + 0x86, 0xB2, 0x9A, 0x3B, 0x24, 0x8B, 0x41, 0xBE, 0xAB, 0xFD, 0x9F, 0xBF, + 0xA7, 0xBE, 0xB5, 0x3C, 0x61, 0x95, 0x1E, 0x3F, 0xB8, 0x99, 0xAD, 0xBE, + 0x8E, 0xE7, 0x6B, 0x3D, 0x0A, 0xCD, 0x47, 0x3E, 0x75, 0x92, 0x98, 0xBE, + 0xE7, 0x17, 0x0F, 0x3E, 0x1C, 0x59, 0xD2, 0xBC, 0x9C, 0xAC, 0xAB, 0x3D, + 0xB6, 0x3C, 0x02, 0x3E, 0x80, 0x1F, 0xFC, 0x3E, 0xDE, 0x11, 0xE8, 0x3E, + 0xAA, 0xC7, 0x25, 0xBC, 0x9B, 0x58, 0x85, 0x3D, 0xFA, 0xB8, 0xC3, 0xBE, + 0x77, 0x2A, 0x72, 0x3E, 0x1F, 0xBF, 0x1B, 0xBE, 0xBF, 0x2D, 0x1A, 0xBF, + 0xC0, 0x81, 0xE4, 0xBD, 0x2E, 0x2F, 0xA8, 0x3D, 0xF9, 0x5C, 0x14, 0x3E, + 0x1A, 0x47, 0xC1, 0x3A, 0x85, 0xCA, 0x65, 0xBD, 0xED, 0x26, 0x86, 0xBB, + 0xCE, 0x8C, 0x30, 0xBE, 0xA9, 0x15, 0xC9, 0xBE, 0x51, 0xB8, 0xF8, 0xBD, + 0x09, 0xF9, 0x0E, 0xBE, 0x83, 0xDB, 0xDF, 0x3E, 0x34, 0x37, 0x71, 0x3B, + 0xB1, 0xFE, 0x43, 0xBD, 0x3E, 0x55, 0x9E, 0x3E, 0x39, 0x8C, 0xB2, 0x3E, + 0x52, 0x1F, 0xB5, 0xBC, 0x82, 0x41, 0x64, 0xBC, 0x69, 0x8C, 0x0D, 0x3C, + 0xED, 0x6E, 0x84, 0xBE, 0x4A, 0x49, 0x91, 0x3E, 0x5B, 0x02, 0xDA, 0x3B, + 0x98, 0xBF, 0x34, 0x3A, 0x86, 0xC0, 0x0C, 0xBF, 0x3A, 0xDC, 0x87, 0xBD, + 0xAA, 0xB0, 0x0B, 0xBF, 0xB7, 0xAF, 0xC2, 0xBE, 0xE3, 0x7F, 0xBB, 0x3D, + 0xCD, 0xEF, 0x10, 0xBF, 0xB4, 0xEF, 0xD1, 0x3D, 0x9F, 0x85, 0x3D, 0xBF, + 0xA6, 0x4E, 0x7B, 0xBD, 0x1F, 0x1E, 0x6F, 0xBD, 0x64, 0x50, 0x09, 0x3C, + 0xA0, 0xD8, 0x32, 0x3D, 0x5E, 0xC7, 0xBF, 0xBE, 0xB6, 0xC2, 0x23, 0x3C, + 0x7E, 0x38, 0x9A, 0x3D, 0xDD, 0xA5, 0x63, 0xBD, 0xF6, 0xC9, 0xDA, 0xBD, + 0x22, 0x1F, 0xBD, 0xBE, 0xC9, 0xAA, 0x1D, 0xBD, 0xA5, 0x1A, 0xC8, 0xBE, + 0x4D, 0x6B, 0xD8, 0xBC, 0x73, 0xE7, 0x99, 0x3C, 0x7B, 0x42, 0x7A, 0xBE, + 0xC0, 0x7C, 0x03, 0x3E, 0xB6, 0xFC, 0x4B, 0x3E, 0xF2, 0x79, 0xAB, 0xBD, + 0x73, 0x26, 0x8C, 0x3C, 0xBF, 0x3B, 0x7E, 0x3B, 0x13, 0xF6, 0x00, 0x3E, + 0xA8, 0xB6, 0x83, 0x3E, 0x1E, 0xBD, 0xA6, 0xBD, 0x76, 0x76, 0x11, 0x3E, + 0x46, 0x0E, 0x40, 0xBC, 0x2F, 0xE3, 0x2E, 0x3F, 0xCB, 0x59, 0x42, 0x3F, + 0xE0, 0x22, 0xCC, 0xBD, 0x70, 0x81, 0xC6, 0xBE, 0x43, 0xDF, 0x8E, 0xBE, + 0x5C, 0xA7, 0x9E, 0x3B, 0x89, 0x53, 0x2A, 0x3F, 0x8D, 0x12, 0x8C, 0x3E, + 0x28, 0x79, 0x8E, 0xBD, 0xAD, 0x4C, 0x54, 0xBD, 0xE2, 0xC3, 0x57, 0x3D, + 0x2E, 0x78, 0x24, 0xBE, 0x5A, 0x41, 0x23, 0x3E, 0xC6, 0x80, 0x6E, 0xBD, + 0xC2, 0x3C, 0xBD, 0xBD, 0x53, 0x34, 0xB3, 0x3D, 0x11, 0xCA, 0x81, 0x3D, + 0x89, 0x93, 0xF5, 0xBD, 0x95, 0x9C, 0x46, 0x3D, 0xB8, 0x57, 0x9C, 0x3C, + 0x37, 0x1E, 0x97, 0x3D, 0x43, 0x86, 0xF1, 0xBD, 0x0C, 0xE3, 0x6D, 0xBE, + 0xAE, 0x99, 0x00, 0x3D, 0xCE, 0x57, 0x57, 0xBD, 0xB4, 0x0F, 0xD0, 0x3D, + 0x75, 0x36, 0xB9, 0xBB, 0x95, 0x2A, 0x58, 0xBD, 0x95, 0xCD, 0x5A, 0x3C, + 0x7F, 0xE3, 0x93, 0xBD, 0xAF, 0x5A, 0xD3, 0xBD, 0x4D, 0x7B, 0x0A, 0xBD, + 0xE5, 0x74, 0xE6, 0x3B, 0x72, 0x68, 0x9B, 0x3E, 0x28, 0x18, 0xE0, 0x3D, + 0x16, 0x52, 0xF3, 0xBD, 0x53, 0xA9, 0x6C, 0x3E, 0x02, 0x4E, 0x19, 0x3D, + 0x68, 0xFA, 0xC8, 0x3D, 0xFF, 0x21, 0xF5, 0x3D, 0xD2, 0x60, 0x00, 0xBD, + 0x49, 0xF8, 0x9F, 0x3D, 0x58, 0xA0, 0x03, 0x3E, 0x07, 0xB7, 0x05, 0xBF, + 0xBF, 0xF9, 0x33, 0x3F, 0x80, 0x01, 0x9A, 0xBE, 0x8F, 0xC3, 0xC5, 0x3D, + 0x7B, 0x71, 0x5C, 0x3E, 0xC5, 0x3C, 0x4E, 0x3E, 0x25, 0x97, 0xEB, 0xBD, + 0xE1, 0xD9, 0x82, 0xBF, 0x43, 0xC8, 0x0B, 0xBD, 0x9D, 0xEF, 0x21, 0xBE, + 0x41, 0x17, 0x11, 0xBF, 0xF4, 0x05, 0xED, 0x3E, 0xA5, 0xB1, 0xB0, 0xBD, + 0xAF, 0x21, 0xB1, 0xBD, 0x7B, 0x81, 0x07, 0xBF, 0xD6, 0x77, 0x0C, 0xBE, + 0x49, 0x47, 0x1C, 0x3F, 0x07, 0xA0, 0x40, 0x3F, 0x23, 0xCC, 0x5F, 0xBD, + 0xD5, 0xF6, 0x3B, 0xBA, 0x31, 0xA3, 0x92, 0xBF, 0xA0, 0xF3, 0xA3, 0x3C, + 0xDE, 0x0E, 0x51, 0x3D, 0x05, 0x77, 0xE6, 0x3C, 0xBB, 0xC3, 0x46, 0x3E, + 0x9C, 0x21, 0x49, 0xBF, 0x85, 0x93, 0xA4, 0x3E, 0xB8, 0x31, 0xC4, 0xBD, + 0xA5, 0x39, 0x7A, 0x3F, 0x56, 0xDF, 0x96, 0x3E, 0xFB, 0x0A, 0xB8, 0xBE, + 0x6F, 0xE6, 0x50, 0xBE, 0x45, 0x1B, 0x40, 0x3E, 0xA0, 0xF4, 0x7D, 0xBD, + 0x4D, 0xF7, 0x3A, 0xBF, 0x47, 0x8E, 0x26, 0x3D, 0x5B, 0x60, 0x7B, 0x3E, + 0xD1, 0x76, 0x9D, 0xBD, 0xF3, 0xEF, 0x18, 0x3E, 0xDC, 0xDE, 0x41, 0x3F, + 0x66, 0x37, 0xBC, 0xBE, 0x16, 0x0E, 0xFD, 0xBC, 0x55, 0x06, 0xD1, 0x3E, + 0x87, 0xB4, 0x0E, 0xBF, 0x9F, 0x6C, 0x9D, 0xBE, 0xFF, 0x31, 0x4A, 0x3D, + 0xE7, 0x39, 0x93, 0xBE, 0x28, 0xBA, 0x58, 0xBC, 0x2F, 0xAE, 0x1C, 0x3E, + 0x56, 0x0B, 0x2A, 0xBD, 0x90, 0x7F, 0x6D, 0x3E, 0x7E, 0x88, 0x86, 0x3E, + 0xC1, 0xE3, 0x73, 0xBD, 0x45, 0xA7, 0x9A, 0x3E, 0x45, 0x51, 0x46, 0xBF, + 0x54, 0xBE, 0x34, 0x3E, 0xC8, 0xC7, 0x93, 0xBE, 0x6E, 0xD4, 0x51, 0x3E, + 0xAA, 0xF0, 0x33, 0x3B, 0x06, 0x86, 0x48, 0x3F, 0xE6, 0x3D, 0xA9, 0xBC, + 0xE0, 0xC6, 0xCF, 0xBD, 0x26, 0x71, 0xEE, 0xBD, 0x54, 0x1C, 0x0B, 0x3E, + 0x38, 0xDE, 0x8E, 0x3E, 0xCB, 0xC1, 0x25, 0x3E, 0xEA, 0xBC, 0x98, 0xBC, + 0x76, 0xA6, 0xB2, 0xBC, 0x67, 0xC2, 0xFC, 0xBC, 0xE8, 0x04, 0xB3, 0xBD, + 0x96, 0x56, 0xC0, 0x3B, 0x6B, 0xF9, 0x83, 0x3E, 0x9A, 0xF1, 0x4E, 0xBD, + 0xDE, 0x39, 0x4D, 0xBB, 0x00, 0x5D, 0xC1, 0x3D, 0xD1, 0x8A, 0xD5, 0xBD, + 0xE3, 0x73, 0x6D, 0x3E, 0xE8, 0xFD, 0x8E, 0x3B, 0x37, 0x95, 0xB5, 0xBE, + 0x84, 0xD9, 0x26, 0x3C, 0xBB, 0xE6, 0x22, 0xBC, 0x89, 0xBD, 0x9E, 0x3D, + 0x32, 0x45, 0xE0, 0xBB, 0xCB, 0xDA, 0x08, 0x3D, 0x58, 0xC8, 0x28, 0xBD, + 0x17, 0xA5, 0x04, 0xBE, 0xFB, 0x35, 0x8B, 0x3E, 0x97, 0xA9, 0x45, 0x3D, + 0x0B, 0xAC, 0x55, 0xBE, 0x5B, 0x08, 0xA2, 0xBC, 0xE3, 0xC4, 0x81, 0x3D, + 0xAF, 0x80, 0x1F, 0x3D, 0x8F, 0x3C, 0x08, 0xBE, 0x1A, 0x82, 0x09, 0xBE, + 0xE1, 0xC5, 0x9A, 0x3A, 0x64, 0x6C, 0xAE, 0x3C, 0xB9, 0x6B, 0xFE, 0xBE, + 0xCE, 0x6F, 0xC0, 0xBA, 0xE6, 0x0F, 0x07, 0xBD, 0x45, 0x66, 0x36, 0xBC, + 0x37, 0xA7, 0x5A, 0xBD, 0xF5, 0xF7, 0x5C, 0x3D, 0x4D, 0xDB, 0x6F, 0x3D, + 0x6B, 0x47, 0xD3, 0x3D, 0x5A, 0x5B, 0xCB, 0xBC, 0x8F, 0x18, 0x11, 0xBB, + 0x55, 0x53, 0x05, 0x3D, 0x4D, 0xFB, 0x7A, 0x3C, 0x7F, 0xD1, 0x9B, 0xBD, + 0xB6, 0x5F, 0x82, 0x3D, 0xA3, 0x82, 0x93, 0x3D, 0x8B, 0x88, 0x68, 0x3B, + 0x47, 0x86, 0xEB, 0x3B, 0x0D, 0xD5, 0x14, 0xBE, 0x47, 0xB5, 0xD3, 0xBC, + 0x6A, 0xA4, 0x64, 0x3D, 0x17, 0x5A, 0x30, 0xBD, 0x4E, 0x4C, 0x26, 0x3D, + 0x67, 0x5E, 0x2C, 0xBE, 0x78, 0xED, 0xC7, 0x3D, 0x0A, 0xE3, 0xF8, 0xBC, + 0x8F, 0x56, 0x9E, 0xBE, 0x5E, 0x7C, 0x9B, 0xBC, 0xD3, 0x22, 0x85, 0x3E, + 0x43, 0x75, 0x00, 0x3D, 0x94, 0x92, 0xA5, 0x3B, 0x80, 0xF1, 0x6C, 0x3D, + 0x61, 0x55, 0x1C, 0x3F, 0xC8, 0x5D, 0xB4, 0xBE, 0xD5, 0xB4, 0xB1, 0x3E, + 0x45, 0xFB, 0x26, 0xBE, 0xA1, 0x1B, 0x51, 0x3E, 0xAE, 0xFA, 0x02, 0x3D, + 0x6D, 0x75, 0xC3, 0x3C, 0x3E, 0xEC, 0x0A, 0xBE, 0x26, 0xD7, 0x8F, 0x3E, + 0x29, 0x3E, 0xE4, 0x3B, 0x77, 0x87, 0x50, 0xBD, 0x01, 0x62, 0x1A, 0xBD, + 0x49, 0x9B, 0xB7, 0x3E, 0x37, 0x2A, 0xF4, 0x3D, 0x88, 0xA4, 0x06, 0xBE, + 0xDF, 0x1E, 0x32, 0xBC, 0x65, 0x75, 0xA7, 0xBC, 0x8D, 0x0A, 0x21, 0xBD, + 0x22, 0x80, 0x55, 0xBE, 0x89, 0x0F, 0x33, 0x3E, 0x4F, 0xC2, 0xFC, 0xBD, + 0xE0, 0xFB, 0x8E, 0xBE, 0x54, 0xEB, 0x50, 0x3D, 0xF8, 0xF3, 0x29, 0xBE, + 0x9B, 0x0B, 0x74, 0xBC, 0x39, 0x77, 0x00, 0x3F, 0xB5, 0x5E, 0x83, 0x3F, + 0xB8, 0xF0, 0x92, 0xBC, 0xBF, 0x12, 0x5C, 0x3E, 0xAA, 0x3E, 0xCC, 0xBC, + 0x0A, 0xEC, 0xD6, 0xBE, 0x73, 0xEB, 0xAA, 0xBC, 0xDA, 0x5B, 0x06, 0x3D, + 0xBB, 0x86, 0x41, 0x3D, 0xC5, 0xFB, 0x2C, 0x3D, 0x8B, 0x1B, 0x36, 0xBC, + 0x0D, 0xCF, 0x88, 0x3C, 0xD1, 0x30, 0x72, 0x3C, 0x1D, 0xBE, 0x73, 0xBB, + 0x58, 0xA9, 0x5F, 0x3D, 0x28, 0xE6, 0xDA, 0x3C, 0x01, 0xA0, 0x50, 0x3D, + 0x53, 0x65, 0x0D, 0xBC, 0x9D, 0x5B, 0xDF, 0xBC, 0x9D, 0xE8, 0x49, 0x3D, + 0x95, 0x4A, 0x7E, 0xBC, 0x14, 0xD1, 0xB9, 0x3B, 0x26, 0x33, 0x33, 0xBD, + 0xE1, 0xBD, 0x0F, 0x3C, 0xED, 0x89, 0x23, 0xBC, 0x37, 0x48, 0xC0, 0xBC, + 0xB6, 0x89, 0xD2, 0xBC, 0x78, 0x04, 0x38, 0xBD, 0xB8, 0xB9, 0x0C, 0xBD, + 0xC8, 0x46, 0x1C, 0x3D, 0x0C, 0x81, 0x8D, 0x3D, 0x51, 0x66, 0x84, 0x3D, + 0x5B, 0xB3, 0x3C, 0xBC, 0xC5, 0xCD, 0x30, 0x3C, 0xAF, 0x06, 0xAD, 0xBC, + 0xE7, 0x03, 0xDF, 0x3E, 0x96, 0xD2, 0x8A, 0x3D, 0xD6, 0xF0, 0xDB, 0x3C, + 0x15, 0xD7, 0x2B, 0x3E, 0x62, 0x6F, 0x29, 0x3F, 0x9C, 0x65, 0xA2, 0xBF, + 0x04, 0xEF, 0xD9, 0xBE, 0x02, 0xFE, 0xC8, 0xBD, 0xA9, 0x2F, 0x87, 0x3D, + 0x14, 0x87, 0xDA, 0xBD, 0x81, 0x33, 0xE0, 0xBD, 0xB8, 0xFC, 0x89, 0x3E, + 0x47, 0x27, 0x9E, 0x3F, 0x09, 0x82, 0xD8, 0x3D, 0x42, 0x40, 0x01, 0xBC, + 0x64, 0x26, 0x0A, 0x3E, 0x16, 0x7F, 0x2B, 0x3E, 0xA3, 0xAA, 0xA7, 0x3D, + 0xFB, 0x5A, 0x7E, 0x3D, 0x71, 0x33, 0xFE, 0xBE, 0xA1, 0xA9, 0xE7, 0xBC, + 0xE0, 0x98, 0xA6, 0xBE, 0xC1, 0x9E, 0x27, 0xBE, 0x51, 0x7B, 0xD0, 0xBD, + 0x42, 0xC6, 0x1C, 0x3E, 0xB7, 0xAF, 0x9B, 0xBE, 0xB3, 0xF7, 0x29, 0x3F, + 0xB7, 0x5A, 0xCA, 0xBE, 0x8F, 0x3D, 0x11, 0xBE, 0x09, 0xD3, 0x5A, 0xBE, + 0x55, 0x2D, 0x86, 0xBD, 0x99, 0x32, 0xAE, 0xBD, 0x74, 0x6C, 0x90, 0x3D, + 0x8F, 0xE2, 0x87, 0x3D, 0x0D, 0x01, 0xE1, 0x3D, 0xA9, 0xA9, 0xE5, 0xBA, + 0x6D, 0x07, 0x30, 0x3C, 0x95, 0xC3, 0xCD, 0x3C, 0x0E, 0xBA, 0x28, 0x3D, + 0x82, 0xD4, 0xFB, 0x3C, 0x7A, 0x47, 0x41, 0x3D, 0x70, 0xA9, 0x0A, 0x3D, + 0x5E, 0x8C, 0x49, 0x3C, 0xD6, 0x5B, 0xC2, 0xBC, 0xD9, 0x8B, 0x3F, 0xBD, + 0x54, 0xCC, 0xC3, 0xBD, 0x22, 0xA3, 0x61, 0x3B, 0x7A, 0x0B, 0x17, 0x3C, + 0x87, 0xA8, 0xB6, 0x3D, 0xF6, 0x82, 0xFB, 0x3D, 0x99, 0x96, 0x2C, 0xBD, + 0x9C, 0x7B, 0x16, 0xBC, 0x6E, 0x8D, 0x16, 0xBC, 0xD1, 0x9B, 0xDA, 0xBC, + 0xD7, 0x5E, 0x31, 0xBC, 0x39, 0x8D, 0x2E, 0x3C, 0x27, 0x7D, 0xC2, 0x3D, + 0x03, 0xF9, 0x22, 0x3D, 0xE2, 0x39, 0x1B, 0x3D, 0x35, 0x5B, 0x60, 0x3E, + 0x8A, 0x62, 0x27, 0x3D, 0x69, 0x4D, 0xB8, 0xB9, 0xAD, 0x62, 0x4D, 0xBC, + 0xE1, 0xED, 0x9E, 0x3B, 0x0F, 0x38, 0x8B, 0xBC, 0x38, 0xB5, 0x38, 0x3D, + 0x97, 0xBF, 0x97, 0x3C, 0xFA, 0x12, 0x20, 0xBF, 0x96, 0xAE, 0xF4, 0xBE, + 0x25, 0xF7, 0x93, 0x3F, 0x07, 0x9D, 0x09, 0x3F, 0xA1, 0x27, 0xCF, 0x3D, + 0xC9, 0x22, 0xAA, 0xBC, 0x4D, 0x7D, 0x15, 0xBE, 0xB2, 0xFA, 0x59, 0xBE, + 0x8C, 0x49, 0x39, 0xBE, 0x3E, 0x2F, 0x85, 0xBF, 0x67, 0x66, 0xC3, 0x3C, + 0xB9, 0xDB, 0xA3, 0x3C, 0xE4, 0xD0, 0xA6, 0xBE, 0x9A, 0x7B, 0xAA, 0xBE, + 0x65, 0x01, 0x63, 0xBE, 0x96, 0x83, 0x9F, 0xBD, 0x21, 0xC4, 0x17, 0x3F, + 0xF1, 0x58, 0xFE, 0x3C, 0x4D, 0x46, 0xE6, 0xBE, 0xFD, 0x8F, 0x2B, 0xBE, + 0xFA, 0xD4, 0x75, 0x3D, 0x0F, 0xE9, 0xED, 0x3C, 0x23, 0x58, 0x2B, 0xBF, + 0x57, 0xCA, 0x18, 0x3F, 0x90, 0xD2, 0x02, 0x3E, 0x59, 0xCD, 0x50, 0xBE, + 0x0E, 0x8B, 0x46, 0x3E, 0x07, 0xA0, 0x94, 0xBE, 0x32, 0x0E, 0x9A, 0x3D, + 0x45, 0x2F, 0x1E, 0xBF, 0x77, 0x33, 0xFE, 0x3D, 0xB8, 0xE9, 0xF0, 0x3D, + 0x13, 0xFA, 0x1F, 0x3E, 0x99, 0x45, 0x6E, 0xBE, 0x98, 0x01, 0x61, 0xBF, + 0x0C, 0x50, 0x25, 0xBF, 0x39, 0xDF, 0x3B, 0x3E, 0x3F, 0x1B, 0xD7, 0xBD, + 0xF6, 0x4D, 0x0E, 0xBE, 0x78, 0xE8, 0x41, 0x3C, 0xFA, 0x64, 0xA8, 0xBE, + 0x8D, 0xC9, 0xE1, 0xBD, 0x44, 0x21, 0xA2, 0xBE, 0xDA, 0xF1, 0xDD, 0x3B, + 0x27, 0x54, 0x48, 0x3F, 0x14, 0x6A, 0x00, 0x3E, 0xD8, 0x2F, 0x4A, 0x3F, + 0x08, 0x48, 0x81, 0x3E, 0x58, 0x4D, 0x73, 0x3F, 0x1D, 0xEA, 0x80, 0xBB, + 0x3E, 0x89, 0x4B, 0x3D, 0x92, 0x25, 0x48, 0xBF, 0x94, 0xFC, 0x25, 0xBE, + 0xBF, 0x7D, 0x06, 0x3E, 0x0A, 0xD2, 0x46, 0xBE, 0xD6, 0xA5, 0xB7, 0x3F, + 0x1F, 0x3D, 0xFD, 0xBE, 0x9C, 0xC9, 0xF7, 0xBD, 0x5D, 0xB5, 0xC2, 0xBC, + 0x47, 0x97, 0x91, 0xBE, 0x04, 0x5F, 0x84, 0x3D, 0xF4, 0x33, 0x58, 0xBF, + 0xDF, 0x20, 0xCA, 0x3E, 0x9F, 0xBC, 0x0E, 0x3E, 0x97, 0x50, 0xEF, 0xBE, + 0x63, 0x4E, 0x98, 0x3E, 0x56, 0xCF, 0xB2, 0x3D, 0x98, 0xA0, 0x97, 0xBD, + 0x25, 0xE6, 0xBC, 0xBD, 0x9D, 0x08, 0x85, 0x3E, 0x50, 0xE9, 0x8C, 0x3E, + 0xE8, 0x25, 0x62, 0xBD, 0xC8, 0x6E, 0x03, 0x3E, 0xBF, 0x97, 0x89, 0xBE, + 0x1F, 0x99, 0xC6, 0x3E, 0x6E, 0x34, 0xE8, 0xBD, 0x10, 0xFE, 0xEB, 0x3B, + 0x6A, 0x41, 0x38, 0x3F, 0x0D, 0x68, 0x44, 0x3E, 0x62, 0xAA, 0x13, 0x3D, + 0xF8, 0x8B, 0x34, 0xBF, 0x71, 0x0F, 0x30, 0x3D, 0xD7, 0x38, 0x38, 0xBD, + 0x67, 0xCB, 0xE1, 0x3E, 0xF4, 0x79, 0xEA, 0x3D, 0xBE, 0xFA, 0x39, 0xBE, + 0x61, 0xFA, 0xA8, 0x3D, 0x9A, 0x76, 0x11, 0x3F, 0x08, 0xE3, 0xBE, 0x3E, + 0x09, 0x74, 0x11, 0xBC, 0x30, 0x8C, 0xCB, 0xBD, 0xC2, 0x4F, 0x24, 0x3C, + 0xDC, 0xD9, 0x8E, 0x3E, 0x42, 0x64, 0x15, 0xBE, 0x56, 0x5C, 0x0C, 0x3F, + 0x7A, 0xF5, 0xB4, 0x3E, 0xC3, 0x47, 0x51, 0x3C, 0xBF, 0xC4, 0x8F, 0xBB, + 0x59, 0xCD, 0xAF, 0xBD, 0xE6, 0x10, 0x6F, 0xBE, 0x91, 0x55, 0x96, 0xBD, + 0xB2, 0xA5, 0x5F, 0x3E, 0x05, 0x0A, 0x9A, 0x3E, 0xBB, 0x23, 0x1B, 0xBE, + 0xC9, 0x86, 0x0E, 0xBE, 0x4C, 0xEF, 0x5D, 0x3E, 0x03, 0xFC, 0x34, 0xBE, + 0x46, 0x6E, 0xAE, 0x3B, 0x3C, 0x5F, 0xE3, 0xBE, 0xEF, 0xB6, 0x8D, 0xBE, + 0x1E, 0x98, 0xC6, 0xBE, 0x83, 0xE2, 0xAF, 0x3D, 0x60, 0x22, 0x60, 0xBE, + 0xA8, 0x89, 0xE3, 0xBC, 0x9E, 0xF0, 0x44, 0xBE, 0xF7, 0xF6, 0x55, 0xBE, + 0xED, 0x12, 0x2C, 0xBC, 0x74, 0x44, 0xCA, 0x3D, 0x03, 0x65, 0x38, 0x3D, + 0x0E, 0xF8, 0x09, 0x3E, 0x2F, 0x65, 0xE1, 0xBC, 0x49, 0x72, 0xA5, 0xBE, + 0xA6, 0xAE, 0xDC, 0x3E, 0x81, 0x79, 0x66, 0x3F, 0xE4, 0xC4, 0xF5, 0x3D, + 0xB4, 0xD9, 0x1F, 0xBF, 0x75, 0x2E, 0x40, 0x3F, 0xE9, 0x44, 0xDF, 0x3D, + 0x82, 0xF2, 0xDB, 0xBE, 0xA4, 0x00, 0xF9, 0x3C, 0xE5, 0x9F, 0xAA, 0xBC, + 0x80, 0x64, 0x1C, 0x3F, 0xA2, 0x81, 0x2C, 0x3D, 0xC5, 0x52, 0xA4, 0xBE, + 0x27, 0x53, 0xA2, 0xBB, 0x64, 0xC9, 0x47, 0x3F, 0x1F, 0x94, 0x84, 0xBE, + 0xBA, 0x66, 0x10, 0xBE, 0x20, 0x66, 0xE2, 0x3E, 0x26, 0xC2, 0xAF, 0x3D, + 0x2E, 0x8B, 0xC5, 0x3E, 0xA4, 0xD3, 0x13, 0x3F, 0xDF, 0xC7, 0x9D, 0xBD, + 0x73, 0x3C, 0x09, 0xBF, 0x73, 0xBF, 0x4C, 0x3E, 0x69, 0x3D, 0x5E, 0x3E, + 0x58, 0xC5, 0x20, 0xBF, 0x28, 0xE5, 0x04, 0x3F, 0x9C, 0xFC, 0x0C, 0xBE, + 0xB7, 0x5E, 0x49, 0xBE, 0x32, 0x6D, 0xB8, 0x3D, 0xBB, 0x14, 0xB8, 0x3E, + 0xD5, 0x0A, 0x2F, 0x3F, 0xF3, 0xD3, 0x24, 0xBE, 0x8C, 0x19, 0x10, 0xBE, + 0x05, 0xCB, 0x98, 0xBE, 0x1B, 0x00, 0xB7, 0x3D, 0xDA, 0x0B, 0x62, 0x3D, + 0x60, 0xC9, 0xBB, 0xBD, 0xCD, 0x8C, 0xF8, 0xBE, 0x01, 0x59, 0xB5, 0x3E, + 0xF8, 0x11, 0x68, 0xBC, 0xD8, 0x63, 0x38, 0xBD, 0xF1, 0xC4, 0x5F, 0xBF, + 0x6C, 0xB5, 0x84, 0xBE, 0x64, 0x40, 0x64, 0xBE, 0xC8, 0x73, 0x24, 0xBE, + 0x9A, 0x87, 0x03, 0x3D, 0xFC, 0xA2, 0x7E, 0x3E, 0x9E, 0xB8, 0x3E, 0xBE, + 0x93, 0x4E, 0xD8, 0x3E, 0x20, 0x8F, 0x22, 0xBC, 0x14, 0xDD, 0x03, 0x3F, + 0x4B, 0x8F, 0xAC, 0xBE, 0xCB, 0x46, 0x23, 0x3E, 0x26, 0x32, 0xA2, 0xBC, + 0x55, 0x4C, 0x67, 0xBE, 0x67, 0x2E, 0x66, 0x3B, 0x94, 0x5C, 0x31, 0x3E, + 0xA1, 0x61, 0x0B, 0x3D, 0x92, 0x1A, 0x9F, 0x3D, 0xB6, 0x42, 0x6F, 0xBB, + 0x43, 0x60, 0x0C, 0x3E, 0x8C, 0xF1, 0x66, 0x3D, 0xCE, 0xD7, 0xAA, 0xBE, + 0xCD, 0x74, 0xAF, 0xBE, 0xAB, 0x88, 0x26, 0xBD, 0xDB, 0x10, 0xCC, 0x3E, + 0x54, 0x46, 0x3D, 0xBE, 0x9D, 0xB0, 0x63, 0x3F, 0x14, 0xA2, 0x1A, 0xBE, + 0x23, 0x1D, 0x0C, 0x3E, 0x65, 0xBF, 0x47, 0x3F, 0x10, 0x1B, 0xEB, 0xBD, + 0xB2, 0x2B, 0x9B, 0x3F, 0x83, 0x78, 0x45, 0x3F, 0x9F, 0x37, 0xFB, 0x3E, + 0x13, 0xA6, 0xA9, 0x3F, 0x71, 0xFD, 0x26, 0x3E, 0x31, 0x02, 0xB9, 0x3E, + 0xCF, 0xB9, 0x4A, 0x3E, 0x58, 0xB3, 0x25, 0x3E, 0x37, 0xF5, 0xB9, 0x3D, + 0x12, 0x7B, 0x33, 0xBD, 0x8C, 0xDC, 0x7E, 0xBF, 0x34, 0xB9, 0xDF, 0xBF, + 0xAB, 0x70, 0xD5, 0xBF, 0xD7, 0x70, 0x22, 0xBF, 0xFC, 0x59, 0x8A, 0xBE, + 0xB6, 0x23, 0x93, 0xBD, 0x18, 0xB6, 0xA1, 0x3B, 0xB1, 0x2F, 0x12, 0x3E, + 0xCB, 0x99, 0x03, 0x3E, 0xD8, 0x58, 0xF1, 0xBD, 0x2A, 0x0C, 0x3C, 0xBF, + 0x71, 0x8E, 0x90, 0xBF, 0x5B, 0x88, 0xDF, 0xBD, 0xC1, 0xE8, 0x62, 0x3F, + 0x82, 0xAE, 0x7A, 0x3E, 0xF9, 0x89, 0x5C, 0xBF, 0xDD, 0x59, 0x59, 0xBE, + 0xF7, 0x00, 0x25, 0xBE, 0x12, 0xE4, 0x9F, 0x3E, 0x89, 0xB5, 0xFD, 0x3E, + 0x15, 0xDF, 0x43, 0x3F, 0x35, 0xF5, 0x17, 0xBE, 0x31, 0x77, 0xE9, 0x3E, + 0xDC, 0x17, 0xF7, 0xBE, 0xE3, 0xCE, 0xAB, 0xBE, 0x0D, 0x2A, 0x58, 0x3E, + 0xAE, 0x0E, 0x5E, 0x3E, 0x2B, 0xF1, 0x8A, 0xBE, 0xB8, 0x1D, 0xA3, 0xBE, + 0xF6, 0x32, 0x74, 0x3E, 0x30, 0x2B, 0x27, 0xBB, 0x1C, 0xDC, 0xB9, 0x3D, + 0x68, 0xB1, 0xD2, 0x3E, 0xC0, 0x34, 0x33, 0xBF, 0xCF, 0x17, 0x31, 0xBE, + 0x3E, 0x09, 0xC4, 0x3D, 0x00, 0x44, 0x9A, 0xBE, 0x6F, 0x73, 0xD2, 0x3D, + 0xB7, 0x0E, 0x03, 0xBF, 0xF6, 0xCE, 0xFB, 0x3E, 0xCA, 0x93, 0xB2, 0xBE, + 0xF1, 0x15, 0x09, 0x3E, 0x64, 0xAD, 0x06, 0x3D, 0x6F, 0x63, 0x10, 0x3E, + 0xC2, 0x4A, 0x92, 0xBE, 0xC8, 0x98, 0x31, 0x3E, 0xB5, 0xD5, 0x86, 0xBE, + 0xBC, 0x51, 0x8A, 0xBE, 0x05, 0x36, 0x34, 0xBE, 0x9C, 0xE0, 0x87, 0x3F, + 0x50, 0x0D, 0x31, 0xBE, 0xA8, 0xA0, 0xD8, 0xBD, 0x3E, 0xCB, 0x1C, 0x3E, + 0x26, 0xF5, 0x07, 0x3E, 0xCF, 0x5B, 0x65, 0x3F, 0xE6, 0x0E, 0x9C, 0xBE, + 0x22, 0x29, 0x08, 0x3F, 0x78, 0x5F, 0x04, 0xBE, 0x36, 0x46, 0x1C, 0xBF, + 0x7B, 0x3F, 0x12, 0x3E, 0x9D, 0x5D, 0xE8, 0xBE, 0x6B, 0xB9, 0x1F, 0xBE, + 0xA3, 0xF3, 0x83, 0x3E, 0x95, 0x18, 0xE0, 0x3D, 0x86, 0x94, 0x87, 0xBE, + 0x1A, 0xB6, 0x2A, 0x3F, 0xE0, 0x0D, 0x68, 0xBE, 0x3C, 0x71, 0xB1, 0x3E, + 0x88, 0x36, 0xE5, 0x3E, 0xC6, 0x65, 0xDE, 0xBC, 0x78, 0x6F, 0x33, 0x3F, + 0x12, 0x5C, 0x2C, 0xBE, 0x15, 0x91, 0xC3, 0xBD, 0x9B, 0x01, 0x6A, 0xBF, + 0x72, 0xCB, 0x35, 0x3B, 0x08, 0x22, 0xAC, 0xBE, 0xD6, 0x2B, 0x04, 0xBF, + 0xB0, 0x9E, 0x21, 0xBE, 0xB8, 0x63, 0xB7, 0x3F, 0x9A, 0x7E, 0x03, 0x3F, + 0xBA, 0x41, 0x00, 0x3E, 0xF6, 0x87, 0x8E, 0xBF, 0xB5, 0x02, 0x90, 0xBE, + 0xB5, 0x9F, 0x3B, 0x3D, 0xEB, 0x4D, 0xCC, 0x3F, 0xDC, 0x28, 0xCC, 0x3E, + 0x54, 0x6B, 0xDB, 0x3E, 0x12, 0xDF, 0x99, 0x3E, 0x50, 0xEE, 0x40, 0xBE, + 0xA8, 0xAB, 0x19, 0x3F, 0xA5, 0xAA, 0xA1, 0xBD, 0x52, 0x1B, 0x0F, 0xBF, + 0xC1, 0x54, 0x09, 0x3F, 0x92, 0x2F, 0x3F, 0xBD, 0xA2, 0x4F, 0x03, 0x3F, + 0xE7, 0xD1, 0xB0, 0xBE, 0x3E, 0x64, 0x0D, 0x3F, 0x6D, 0x18, 0xF3, 0xBF, + 0xBE, 0x41, 0x2E, 0x3F, 0x4F, 0x86, 0x12, 0x3F, 0xC7, 0xB9, 0xD9, 0x3E, + 0xE6, 0x1D, 0x82, 0xBE, 0x57, 0x9C, 0xA0, 0x3F, 0x31, 0xFF, 0x21, 0xBF, + 0xA1, 0x90, 0x01, 0x3F, 0xE3, 0x5D, 0xDE, 0x3D, 0x04, 0x7E, 0x31, 0x3F, + 0x13, 0xFB, 0xAD, 0x3E, 0x36, 0x9F, 0x0D, 0xBF, 0xAF, 0x3D, 0x22, 0x3F, + 0xA0, 0x95, 0x43, 0xBD, 0x34, 0xA0, 0x9B, 0x3E, 0x80, 0x61, 0x01, 0xBF, + 0xC7, 0xCB, 0x40, 0xBD, 0xFD, 0x79, 0x5F, 0x3E, 0x64, 0x01, 0x9F, 0x3E, + 0xB4, 0xA5, 0xE2, 0x3D, 0xEE, 0x50, 0x95, 0x3D, 0xF5, 0xEB, 0x65, 0xBD, + 0x60, 0xBC, 0x15, 0x3E, 0xAB, 0xF1, 0x4A, 0xBD, 0xF6, 0x2D, 0xAB, 0xBC, + 0x14, 0x79, 0xF3, 0x3D, 0xE8, 0xC2, 0xA6, 0xBD, 0xD8, 0xDA, 0x1E, 0x3E, + 0x27, 0xCA, 0x90, 0x3E, 0xC9, 0x4E, 0x26, 0x3D, 0xBA, 0x47, 0x8F, 0x3D, + 0x5D, 0xF4, 0x88, 0xBC, 0x8C, 0x4E, 0xF6, 0xBD, 0x89, 0x3E, 0xC8, 0x3D, + 0x31, 0x8C, 0xB5, 0x3D, 0xAF, 0xFE, 0x4C, 0xBE, 0x0B, 0x62, 0x21, 0x3B, + 0x0F, 0x6E, 0x77, 0x3D, 0xE9, 0x35, 0x62, 0x3D, 0x20, 0xFC, 0x99, 0x3B, + 0x4A, 0x2E, 0x9B, 0xBD, 0xC2, 0x28, 0x1B, 0xBE, 0xBE, 0x01, 0xBA, 0xBC, + 0xC6, 0x0E, 0x88, 0xBD, 0x7D, 0x68, 0x39, 0xBE, 0xF4, 0xB4, 0x66, 0x3D, + 0x9D, 0xBE, 0x95, 0x3E, 0xB9, 0xC8, 0x49, 0xBD, 0xDD, 0xC5, 0x34, 0x3B, + 0xB9, 0xDF, 0x4A, 0xBE, 0x22, 0x7E, 0x3B, 0xBE, 0xE0, 0x96, 0x93, 0xBD, + 0xC3, 0x91, 0xB3, 0x3D, 0xE0, 0x21, 0xBD, 0xBD, 0x35, 0xA3, 0xF7, 0xBD, + 0x15, 0xE7, 0x03, 0xBD, 0x18, 0x94, 0x39, 0xBD, 0x47, 0xE9, 0x4C, 0xBB, + 0x15, 0x2A, 0x08, 0xBC, 0xA1, 0x8C, 0xDE, 0x3C, 0xA4, 0x4B, 0x3C, 0x3D, + 0xF0, 0x6C, 0xCA, 0xBC, 0x75, 0xCC, 0x06, 0x3D, 0x5A, 0x80, 0xAB, 0x3D, + 0x85, 0x34, 0x03, 0xBD, 0x3F, 0xA8, 0x80, 0x3D, 0xE2, 0x55, 0xA2, 0x3D, + 0x00, 0xE8, 0xEE, 0x3D, 0x6E, 0x14, 0xB8, 0x3B, 0x06, 0xB0, 0x35, 0xBE, + 0xA9, 0x01, 0x41, 0x3D, 0x69, 0xDF, 0x21, 0x3D, 0x6C, 0xF6, 0x11, 0xBE, + 0x52, 0xF5, 0x28, 0x3D, 0x01, 0x2B, 0x8E, 0xBE, 0xE0, 0xD2, 0x8F, 0xBE, + 0xE3, 0x33, 0xE6, 0xBC, 0x8A, 0x07, 0x10, 0x3D, 0xAF, 0x84, 0xF1, 0x3D, + 0xD6, 0x74, 0xD0, 0xBD, 0x88, 0x0E, 0xF3, 0x3E, 0x7A, 0xA6, 0xD2, 0xBD, + 0xAD, 0x50, 0x32, 0xBE, 0x93, 0x7F, 0x38, 0x3F, 0x65, 0xF4, 0x48, 0x3E, + 0x43, 0x65, 0xF1, 0xBD, 0xA5, 0x16, 0x22, 0xBE, 0xD3, 0x3E, 0x11, 0x3F, + 0x64, 0x7C, 0x88, 0xBE, 0x3B, 0xE6, 0x82, 0x3F, 0xED, 0x5E, 0x5E, 0xBF, + 0x05, 0xEB, 0x2F, 0x3F, 0xC4, 0xA9, 0x22, 0xBE, 0x8D, 0x04, 0x1C, 0x3F, + 0x93, 0x82, 0x33, 0x3C, 0x83, 0x03, 0x42, 0xBE, 0x14, 0xDE, 0xC9, 0xBF, + 0x93, 0x0A, 0x3A, 0xBF, 0x24, 0xF8, 0xDA, 0x3E, 0xB1, 0x8D, 0xC9, 0xBF, + 0x83, 0xC1, 0x0E, 0xBD, 0xE8, 0xDA, 0xAF, 0x3F, 0xBE, 0x0B, 0x52, 0x3D, + 0x05, 0xBC, 0xFA, 0x3E, 0x38, 0x7A, 0xDC, 0xBD, 0xB2, 0xF8, 0x94, 0x3E, + 0x6C, 0xFA, 0xB7, 0x3E, 0xBE, 0x6B, 0x04, 0xBD, 0x5D, 0x00, 0x20, 0x3E, + 0x18, 0x1A, 0x6E, 0x3F, 0xAE, 0x95, 0x5C, 0x3F, 0x33, 0x38, 0xC6, 0xBE, + 0x24, 0xAD, 0x76, 0x3E, 0xDD, 0x81, 0x03, 0x3F, 0xF1, 0x7F, 0x0F, 0x3F, + 0xCA, 0xBF, 0x2B, 0xBD, 0x1C, 0xEF, 0xE9, 0x3C, 0xFA, 0x90, 0x74, 0x3D, + 0x7D, 0x06, 0x97, 0x3B, 0xC2, 0x06, 0xB8, 0xBC, 0xF5, 0x6A, 0x05, 0x3D, + 0x4C, 0x91, 0x2C, 0x3C, 0x0C, 0xC4, 0x90, 0x3C, 0x00, 0xF5, 0xC6, 0x3C, + 0x51, 0x1D, 0xEB, 0x3C, 0x90, 0x18, 0xED, 0x3B, 0xBD, 0xE4, 0x8A, 0xBA, + 0xAC, 0xF9, 0xDA, 0xBC, 0xF3, 0xCB, 0xDF, 0xBC, 0x1B, 0xAB, 0x73, 0xBC, + 0x52, 0x8B, 0xA4, 0x3C, 0x82, 0x2D, 0x56, 0xBD, 0xF4, 0x14, 0x30, 0xBC, + 0xE1, 0x15, 0xB5, 0x3C, 0xC4, 0x48, 0x5A, 0x3C, 0x16, 0x36, 0xF4, 0x3C, + 0x86, 0x5B, 0x05, 0xBD, 0x95, 0x5F, 0x2B, 0xBD, 0x22, 0x07, 0xE1, 0x3D, + 0x9B, 0xDB, 0x44, 0x3D, 0x78, 0x2B, 0x1E, 0xBB, 0x75, 0x13, 0x77, 0x3C, + 0xDF, 0x5B, 0x2F, 0x3D, 0xB1, 0x80, 0x27, 0x3C, 0xE7, 0x92, 0xE8, 0x3E, + 0x22, 0xAC, 0xB2, 0x3C, 0xC3, 0x7E, 0x0A, 0x3D, 0x88, 0xCD, 0x91, 0x3D, + 0xB3, 0x1C, 0x04, 0x3C, 0xBF, 0x30, 0xC8, 0x3D, 0x4C, 0x9D, 0x9D, 0x3B, + 0x21, 0x91, 0x77, 0xBC, 0x42, 0x38, 0x24, 0xBC, 0x56, 0xBD, 0xE6, 0xBA, + 0x5C, 0xC6, 0x86, 0xBC, 0x40, 0x73, 0xFB, 0xBB, 0xDD, 0xE2, 0x07, 0x3D, + 0xDB, 0x7D, 0x5B, 0x3C, 0x3B, 0x27, 0x01, 0xBD, 0xA4, 0x8F, 0xC1, 0x3C, + 0x10, 0x06, 0x03, 0xBE, 0x13, 0xEF, 0x8B, 0xB8, 0x09, 0xA3, 0x10, 0x3D, + 0xEF, 0x0F, 0x30, 0xBC, 0xF9, 0x55, 0x51, 0x3C, 0x2E, 0x4F, 0x4B, 0x3D, + 0xEB, 0x0B, 0x77, 0xBC, 0x2A, 0x2D, 0x77, 0x3B, 0x35, 0x7A, 0x14, 0x3C, + 0x34, 0xEC, 0x35, 0x3D, 0xD3, 0x28, 0x06, 0xBD, 0x48, 0x69, 0x2D, 0xBC, + 0x77, 0x6A, 0xCD, 0xBC, 0x29, 0x87, 0x3F, 0x3C, 0xDB, 0xDD, 0xCB, 0x3C, + 0xA4, 0xD1, 0x59, 0x3D, 0x6D, 0x28, 0x35, 0xBE, 0x46, 0xA2, 0xBA, 0xBD, + 0xD7, 0xEC, 0x22, 0x3B, 0x3A, 0xB3, 0x01, 0xBB, 0x42, 0x12, 0x22, 0xBD, + 0xAC, 0x79, 0x07, 0xBE, 0xA2, 0x90, 0xE8, 0x3D, 0x4B, 0x60, 0xE7, 0x3D, + 0xD7, 0x1E, 0x91, 0x3D, 0x38, 0xEA, 0xED, 0x3C, 0x2B, 0x18, 0xA7, 0x3D, + 0xD8, 0x2F, 0x2F, 0xBD, 0x17, 0xEF, 0x07, 0xBC, 0x4F, 0x69, 0xDB, 0x3B, + 0xD5, 0x7E, 0x4B, 0x3B, 0x7E, 0x72, 0xC9, 0x3D, 0x22, 0x7F, 0x30, 0xBD, + 0xE8, 0x61, 0xE3, 0xBE, 0xD0, 0xEE, 0x2C, 0xBD, 0x2B, 0x82, 0x61, 0xBB, + 0x07, 0x84, 0xF4, 0xBB, 0xC1, 0xD8, 0x33, 0x3D, 0x61, 0x58, 0x3B, 0x3E, + 0xF1, 0x51, 0x16, 0x3D, 0xEE, 0xF8, 0x4A, 0xBD, 0x83, 0x26, 0xB3, 0x3E, + 0xD7, 0xC5, 0xE0, 0xBE, 0x39, 0x5F, 0xB0, 0x3D, 0x13, 0x4F, 0x8C, 0x3E, + 0x5A, 0x01, 0xD3, 0xBD, 0x92, 0x89, 0x81, 0x3E, 0xE1, 0x96, 0x44, 0x3D, + 0x7E, 0x19, 0xAD, 0x3E, 0xE9, 0xF1, 0xCE, 0xBC, 0x37, 0xF4, 0x80, 0x3C, + 0x9C, 0x20, 0xBF, 0xBC, 0xEA, 0x4C, 0x44, 0x3D, 0x43, 0x93, 0x56, 0xBD, + 0x7C, 0x8B, 0x23, 0xBD, 0x11, 0x01, 0xA0, 0xBC, 0x65, 0x9C, 0x84, 0x3C, + 0xB8, 0xF5, 0xEE, 0xBB, 0xD2, 0xD4, 0x56, 0x3C, 0x6F, 0xF5, 0x79, 0x3D, + 0x43, 0x24, 0xDC, 0x3C, 0x6D, 0x03, 0x8C, 0xBC, 0x6B, 0xEA, 0xA5, 0x3B, + 0x66, 0x25, 0xA3, 0xBA, 0x6B, 0x13, 0x89, 0x3D, 0x6E, 0x3D, 0x71, 0xBB, + 0x60, 0x2B, 0x2B, 0x3D, 0x10, 0x09, 0x4F, 0x3C, 0x4A, 0xC5, 0x41, 0xBC, + 0xD9, 0x21, 0xED, 0xBC, 0x29, 0x99, 0xFA, 0xBC, 0x78, 0x4C, 0xAC, 0xBB, + 0x4E, 0x7E, 0x2D, 0xBC, 0xE8, 0x4B, 0x5E, 0xBC, 0x1C, 0x06, 0x89, 0x3C, + 0x2D, 0xAA, 0x0B, 0xBC, 0x7E, 0x7C, 0xD1, 0x3B, 0x11, 0x5C, 0xBA, 0x3C, + 0xD9, 0x97, 0x18, 0x3D, 0xA5, 0x36, 0x16, 0xBD, 0x76, 0x03, 0x07, 0x3E, + 0x84, 0xC0, 0x8D, 0xBC, 0x8A, 0x32, 0x6F, 0x3C, 0x2A, 0x23, 0x23, 0xBF, + 0xDF, 0xF2, 0xD4, 0xBE, 0xAF, 0x55, 0xD7, 0x3E, 0x2C, 0xE0, 0xB3, 0xBE, + 0xCC, 0x62, 0x15, 0xBF, 0xA5, 0x7E, 0x85, 0x3D, 0x70, 0x4B, 0xE4, 0x3D, + 0x2E, 0xA0, 0x4A, 0xBE, 0x40, 0x57, 0x0F, 0xBC, 0x6D, 0x3F, 0x69, 0xBD, + 0x75, 0xC1, 0xB8, 0xBC, 0x4F, 0x73, 0x36, 0xBE, 0x96, 0x40, 0x9F, 0xBE, + 0x78, 0xBE, 0x1A, 0xBF, 0x2A, 0x4B, 0x98, 0xBC, 0x71, 0x39, 0x03, 0xBF, + 0x7F, 0xC4, 0x0D, 0x3F, 0x21, 0x8E, 0x1A, 0xBE, 0x8B, 0x6E, 0x48, 0xBF, + 0x11, 0x94, 0x25, 0x3F, 0x34, 0x48, 0x0A, 0xBE, 0x4A, 0x7B, 0xC1, 0xBD, + 0x7B, 0xBF, 0x9A, 0xBE, 0x12, 0x63, 0xBA, 0x3D, 0xD6, 0xAC, 0xE0, 0x3E, + 0x19, 0xF5, 0x06, 0xBF, 0x94, 0x59, 0x1B, 0xBF, 0xC4, 0x59, 0xDA, 0xBE, + 0x66, 0x52, 0xB5, 0xBE, 0xBE, 0x3E, 0x16, 0xBE, 0x75, 0x8B, 0x05, 0x3E, + 0x4E, 0xF4, 0xCE, 0xBE, 0xE2, 0x2C, 0xF3, 0x3E, 0xC4, 0x1B, 0x05, 0xBF, + 0xAF, 0xE8, 0x25, 0xBF, 0x4F, 0x93, 0x51, 0x3D, 0xD7, 0xAA, 0xBE, 0x3E, + 0x0F, 0xFE, 0x9F, 0x3E, 0x3E, 0x56, 0x08, 0xBF, 0x84, 0xBC, 0x8C, 0x3D, + 0x45, 0x81, 0x8E, 0x3E, 0xEB, 0x33, 0x53, 0xBF, 0x2B, 0x5E, 0xB1, 0x3E, + 0xF1, 0x11, 0x66, 0xBE, 0xF0, 0xFB, 0xA6, 0x3E, 0x3D, 0xAF, 0xC3, 0xBF, + 0xFA, 0x09, 0xF1, 0x3E, 0xF8, 0xE8, 0xBD, 0x3E, 0x63, 0x44, 0x20, 0x3D, + 0xD2, 0xF6, 0x47, 0xBD, 0x18, 0xCA, 0x13, 0x3F, 0x15, 0xCE, 0x78, 0x3E, + 0x4C, 0xF8, 0x63, 0x3D, 0x19, 0xC5, 0xA1, 0xBC, 0x64, 0xD3, 0xBB, 0x3E, + 0x72, 0x07, 0xE0, 0xBE, 0xCD, 0x42, 0x1B, 0xBE, 0xB7, 0xD5, 0x15, 0x3F, + 0x03, 0xAA, 0x11, 0xBE, 0x31, 0x35, 0xBA, 0x3E, 0x4C, 0x13, 0xBC, 0xBE, + 0xB2, 0xA5, 0x08, 0x3F, 0x92, 0xEA, 0x2B, 0x3E, 0xC3, 0x6F, 0x98, 0xBE, + 0xE0, 0x6D, 0xFC, 0xBB, 0x3F, 0x54, 0x4D, 0x3C, 0x60, 0x07, 0x69, 0xBE, + 0xF0, 0xE8, 0xC7, 0xBE, 0x7B, 0x33, 0xA1, 0xBD, 0xE9, 0x2D, 0x48, 0x3D, + 0x58, 0xC1, 0xBA, 0xBD, 0xAA, 0x04, 0x27, 0x3E, 0x42, 0x3B, 0x02, 0x3E, + 0x7D, 0xCF, 0x8F, 0xBD, 0x29, 0xA4, 0x75, 0x3C, 0x3A, 0x42, 0x03, 0xBD, + 0x6F, 0x96, 0x6B, 0xBD, 0x8B, 0x2C, 0x92, 0x3E, 0x2A, 0x0B, 0xAF, 0xBD, + 0xE1, 0xA7, 0xAD, 0x3D, 0x5A, 0x64, 0x05, 0xBD, 0x49, 0x0E, 0xCE, 0x3B, + 0xF3, 0x25, 0xCB, 0xBD, 0xAA, 0x37, 0xA5, 0xBD, 0x40, 0x8B, 0x8B, 0xBD, + 0x47, 0x56, 0x89, 0x3D, 0x82, 0x8E, 0x4C, 0xBE, 0x74, 0xF5, 0xE0, 0x3D, + 0x5E, 0x18, 0x6D, 0x3D, 0x90, 0xE8, 0x16, 0x3E, 0xD4, 0x8F, 0xC9, 0xBD, + 0xAF, 0x56, 0xF4, 0xBD, 0xC9, 0x67, 0x33, 0x3D, 0xAF, 0x73, 0xE6, 0xBE, + 0xBC, 0x55, 0xA6, 0x3E, 0x6C, 0x65, 0x99, 0x3B, 0x8D, 0xB8, 0x41, 0xBC, + 0x85, 0x92, 0x4B, 0x3B, 0x97, 0xB9, 0xA6, 0xBD, 0x28, 0x6F, 0xBA, 0x3D, + 0x57, 0xEF, 0x94, 0xBC, 0xDF, 0x8C, 0x3B, 0x3B, 0x3C, 0xD7, 0xB6, 0x3C, + 0x00, 0xA1, 0x07, 0x3C, 0xDA, 0x0A, 0xF4, 0x3B, 0x8D, 0xF3, 0x0D, 0xBC, + 0x23, 0x64, 0x04, 0x3D, 0xAA, 0xC8, 0x8B, 0xBC, 0x3B, 0xAD, 0xD8, 0x3B, + 0x67, 0xA7, 0x55, 0xBC, 0x60, 0x45, 0xA3, 0x3C, 0x39, 0x16, 0x30, 0xBC, + 0xAB, 0x72, 0x3B, 0xBA, 0x93, 0x93, 0x0E, 0x3C, 0x88, 0x66, 0xA8, 0xBB, + 0xD0, 0xF6, 0xC5, 0x3C, 0x35, 0xEC, 0xB8, 0x3C, 0x32, 0x5C, 0x94, 0x3B, + 0x60, 0x84, 0xAD, 0xBD, 0x12, 0xC6, 0xDB, 0x3D, 0xC1, 0xCD, 0x3F, 0x3D, + 0xCC, 0xC1, 0x6A, 0xBC, 0xBA, 0x7C, 0x47, 0x3D, 0xBB, 0x79, 0x06, 0x3D, + 0x60, 0xE8, 0x49, 0x3A, 0x70, 0xAB, 0x4D, 0x3D, 0x78, 0xE1, 0x1F, 0x3C, + 0x0C, 0xF7, 0xEB, 0xBC, 0x7D, 0xE5, 0xC9, 0x3E, 0xA7, 0xA3, 0x2B, 0x3D, + 0x0D, 0xA3, 0xA0, 0xBE, 0xE3, 0x06, 0x85, 0xBE, 0x52, 0xE6, 0x8D, 0xBE, + 0x1F, 0x26, 0x3F, 0xBE, 0xE8, 0x4D, 0xD6, 0x3D, 0x5F, 0x2A, 0x9E, 0x3D, + 0xF2, 0x8D, 0x5A, 0x3C, 0x0B, 0x08, 0x07, 0x3E, 0x62, 0xB6, 0xE2, 0x3E, + 0x77, 0x1E, 0x2C, 0xBB, 0xB3, 0x3F, 0x47, 0xBE, 0x7C, 0x28, 0x50, 0xBE, + 0xD4, 0xB4, 0xF3, 0xBE, 0x92, 0x0C, 0x11, 0x3E, 0x42, 0x50, 0x9C, 0xBD, + 0x8D, 0x64, 0x86, 0x3B, 0x9C, 0xAD, 0xF1, 0x3D, 0x76, 0x6B, 0x8D, 0xBE, + 0xD1, 0x84, 0xCF, 0x3C, 0xB3, 0x80, 0x5A, 0x3E, 0x5A, 0xAF, 0xFD, 0xBE, + 0x59, 0x9B, 0x2C, 0x3F, 0x8B, 0x37, 0xDD, 0xBE, 0xC7, 0xC3, 0xBE, 0xBE, + 0x2D, 0x56, 0xA9, 0x3D, 0x91, 0x56, 0x11, 0x3F, 0x8E, 0x65, 0x19, 0xBE, + 0xAB, 0x57, 0x8F, 0x3F, 0x96, 0x6B, 0x90, 0x3D, 0x82, 0xF9, 0x8C, 0x3E, + 0x4E, 0xBB, 0x4A, 0x3E, 0x25, 0x47, 0x19, 0x3E, 0xE9, 0x3D, 0xBF, 0x3E, + 0x00, 0xC6, 0x67, 0x3E, 0x74, 0xEF, 0x20, 0x3E, 0x99, 0x57, 0xAA, 0x3E, + 0x13, 0xB1, 0x3B, 0xBE, 0xED, 0xD8, 0x6B, 0x3D, 0xD4, 0xB5, 0x24, 0xBE, + 0xF9, 0x84, 0xB3, 0xBC, 0xD3, 0x6A, 0x51, 0xBF, 0x0D, 0xFE, 0xC1, 0xBC, + 0x26, 0xB3, 0xC3, 0xBE, 0x99, 0x07, 0x9F, 0x3E, 0x61, 0x23, 0x92, 0x3E, + 0xDB, 0x79, 0x15, 0x3E, 0x69, 0xD1, 0x6D, 0xBD, 0xB5, 0xED, 0xC7, 0x3C, + 0xD9, 0xC8, 0x56, 0xBE, 0xCA, 0x43, 0x3B, 0xBE, 0x55, 0x32, 0x5B, 0x3D, + 0x46, 0x71, 0x0F, 0xBE, 0x2F, 0xC5, 0x18, 0x3F, 0x26, 0x9D, 0x39, 0xBF, + 0x0D, 0xBA, 0x7E, 0xBF, 0x33, 0x74, 0x5D, 0x3D, 0xAD, 0xF2, 0x95, 0xBD, + 0x7A, 0x3E, 0x9D, 0xBE, 0xCA, 0x2F, 0xCB, 0x3D, 0xCB, 0x33, 0xC1, 0xBD, + 0x9C, 0x7D, 0x64, 0x3F, 0x25, 0x70, 0x13, 0xBE, 0x8C, 0xD6, 0x18, 0xBD, + 0x78, 0x46, 0x97, 0xBE, 0x34, 0x7F, 0x20, 0xBF, 0xEC, 0xA4, 0x0F, 0xBE, + 0xB2, 0x14, 0xC9, 0x3D, 0xB9, 0x40, 0x18, 0xBE, 0x01, 0xA3, 0x05, 0xBE, + 0x9B, 0xE6, 0x08, 0x3F, 0x6C, 0xAC, 0xAA, 0xBE, 0x82, 0x45, 0xE7, 0x3E, + 0xF2, 0x06, 0xFB, 0xBE, 0x31, 0x08, 0x3A, 0x3C, 0xD4, 0xDB, 0xAF, 0x3E, + 0xE3, 0xD2, 0xCA, 0x3D, 0x61, 0xFC, 0xBE, 0xBD, 0x9D, 0xE9, 0xCF, 0xBE, + 0x1B, 0xB3, 0x37, 0x3F, 0xED, 0xBC, 0x1F, 0x3C, 0x7A, 0x1C, 0x6E, 0x3E, + 0x38, 0x78, 0xA1, 0x3E, 0x57, 0x4B, 0xD7, 0xBD, 0x58, 0xFA, 0x65, 0xBE, + 0x69, 0xDE, 0xA2, 0xBE, 0xAB, 0xFE, 0x60, 0x3F, 0x98, 0x0A, 0x36, 0xBE, + 0x96, 0xCD, 0x33, 0x3E, 0xBB, 0xF3, 0x2C, 0x3F, 0x5F, 0xE1, 0xA6, 0xBE, + 0x7C, 0xC2, 0xB0, 0x3E, 0x40, 0x7A, 0xB3, 0x3E, 0x15, 0x99, 0x1C, 0x3F, + 0xD9, 0x7F, 0x87, 0xBE, 0x7E, 0xA7, 0xC8, 0xBE, 0x2D, 0x37, 0x12, 0x3F, + 0x94, 0xF7, 0x3C, 0x3F, 0xB9, 0xB9, 0x4C, 0x3D, 0xFA, 0xB4, 0x18, 0x3F, + 0x00, 0xFD, 0xD7, 0xBC, 0x2C, 0x30, 0x45, 0x3F, 0x24, 0x89, 0x01, 0xBF, + 0x21, 0x31, 0xA6, 0xBE, 0x91, 0xE6, 0xDC, 0x3E, 0x6F, 0x35, 0xB0, 0xBE, + 0x16, 0x27, 0xE3, 0x3E, 0x7C, 0x7B, 0xB1, 0x3E, 0x36, 0x69, 0x37, 0x3F, + 0x02, 0x59, 0xA7, 0x3E, 0x1B, 0xB4, 0x4F, 0x3F, 0xB0, 0xBD, 0xF5, 0x3C, + 0xCA, 0xAA, 0x9D, 0x3E, 0x5B, 0x06, 0xA9, 0xBE, 0xE1, 0x61, 0xDC, 0xBE, + 0x28, 0x9C, 0x07, 0x3D, 0x2D, 0x91, 0xD3, 0x3E, 0x12, 0x7D, 0x43, 0x3E, + 0x0C, 0x7C, 0x87, 0xBE, 0xCD, 0x35, 0xB5, 0x3E, 0x3E, 0xBC, 0x3B, 0xBD, + 0x6A, 0xD2, 0x4A, 0x3F, 0xF0, 0x91, 0x5F, 0xBE, 0xB5, 0xC5, 0x45, 0x3F, + 0x79, 0x2E, 0x21, 0x3F, 0xDD, 0x40, 0x32, 0xBD, 0x81, 0x60, 0x3D, 0x3E, + 0x0D, 0x3D, 0x8F, 0x3D, 0x32, 0x85, 0x93, 0xBC, 0x1A, 0x3B, 0xAA, 0x3D, + 0x04, 0x74, 0x3F, 0xBD, 0x03, 0x29, 0x3D, 0x3C, 0x21, 0xEF, 0xAB, 0x3C, + 0xBD, 0x6B, 0x2D, 0xBE, 0xA5, 0x69, 0xB4, 0xBC, 0x47, 0xC7, 0x2D, 0xBE, + 0xD9, 0x5C, 0xF9, 0xBD, 0x00, 0xDB, 0x54, 0xBC, 0x56, 0x3A, 0x00, 0xBE, + 0x0C, 0xD4, 0xFB, 0xBD, 0xE3, 0x81, 0x90, 0x3E, 0x93, 0xC6, 0xF0, 0xBD, + 0x62, 0x66, 0x90, 0xB9, 0x16, 0xDD, 0xA6, 0xBC, 0x4F, 0xCD, 0xF9, 0x3A, + 0x15, 0x06, 0x85, 0x3E, 0x78, 0xD0, 0x7F, 0xBD, 0xB5, 0x35, 0x5A, 0x3D, + 0x18, 0xA9, 0xBD, 0xBD, 0xA5, 0x15, 0x27, 0x3E, 0x67, 0xE6, 0x19, 0x39, + 0x19, 0xF8, 0x74, 0x3D, 0xCB, 0x5A, 0x8C, 0x3E, 0x7A, 0x77, 0xDE, 0xBD, + 0x1E, 0xF7, 0xB7, 0xBB, 0x1F, 0x3F, 0x8A, 0x3D, 0x20, 0xC5, 0x34, 0x3F, + 0xC6, 0xF1, 0x80, 0x3E, 0xEB, 0xC6, 0x90, 0x3E, 0x6E, 0x17, 0xE8, 0xBD, + 0x7A, 0x3D, 0xF3, 0xBD, 0x2A, 0x56, 0xBD, 0xBD, 0x00, 0xDC, 0x12, 0xBE, + 0x50, 0x40, 0x89, 0xBD, 0x5A, 0xBF, 0x90, 0xBD, 0x5E, 0x96, 0xB5, 0xBC, + 0x1B, 0x35, 0x8A, 0x3D, 0xD6, 0x60, 0x2B, 0x3D, 0x06, 0x81, 0x3D, 0xBD, + 0x77, 0x73, 0x5A, 0xBD, 0x90, 0xB4, 0x8F, 0x3D, 0x66, 0x96, 0x46, 0x3D, + 0xB1, 0x1B, 0x16, 0x3F, 0x6C, 0x64, 0x8C, 0x3D, 0x1E, 0x5C, 0x30, 0x3E, + 0x11, 0xB3, 0xBC, 0xBC, 0x6E, 0xFC, 0xE4, 0xBC, 0x63, 0x9D, 0x66, 0xBE, + 0x89, 0xBE, 0x39, 0xBC, 0x19, 0x9D, 0x69, 0xBC, 0x83, 0x6B, 0x85, 0x3D, + 0x57, 0xE1, 0x4F, 0x3E, 0xC1, 0xA5, 0x81, 0xBE, 0x7C, 0x07, 0x10, 0xBE, + 0x85, 0x2D, 0x54, 0x3E, 0xDB, 0xB4, 0xC7, 0x3B, 0x04, 0x44, 0x44, 0x3C, + 0xDC, 0x8A, 0x03, 0x3E, 0x1B, 0xF4, 0x99, 0x3D, 0x09, 0x60, 0x3E, 0x3E, + 0x8C, 0xEC, 0x0C, 0xBE, 0x2E, 0x4F, 0x82, 0x3E, 0x88, 0x26, 0xD1, 0x3B, + 0xD0, 0x3F, 0xB0, 0x3C, 0x18, 0xC6, 0x6B, 0x3E, 0xC4, 0x5D, 0x0F, 0xBD, + 0x13, 0x38, 0x4C, 0xBD, 0x28, 0xB1, 0x8F, 0x3D, 0xA2, 0x16, 0xA7, 0xBD, + 0x23, 0xC2, 0x24, 0xBC, 0x01, 0x33, 0xA2, 0x3B, 0x2E, 0xF7, 0xE8, 0x3D, + 0x4B, 0xF4, 0x95, 0x3C, 0x3B, 0x35, 0x88, 0xBB, 0xEC, 0xFF, 0x9C, 0x3D, + 0xE8, 0xC3, 0xE8, 0xBD, 0xCC, 0x54, 0xA6, 0x3C, 0xB5, 0x09, 0xA4, 0xBD, + 0xDE, 0xB9, 0xDF, 0xBA, 0x45, 0xA0, 0x7E, 0x3E, 0x65, 0xA9, 0x33, 0x3E, + 0x04, 0x5D, 0xA2, 0x3C, 0xC0, 0xC5, 0xD9, 0xBD, 0xEE, 0x85, 0x97, 0xBD, + 0x8A, 0x28, 0x22, 0x3D, 0xC1, 0xF0, 0x84, 0x3A, 0xFB, 0xF6, 0x17, 0x3D, + 0x93, 0x64, 0xDB, 0x3B, 0x2B, 0xD6, 0x9C, 0x3D, 0xBA, 0x9C, 0xC6, 0x3B, + 0x16, 0xF2, 0x0D, 0xBF, 0x67, 0xD8, 0xE4, 0xBD, 0xF2, 0xF4, 0x2F, 0xBD, + 0x4C, 0xC5, 0xDD, 0x3D, 0x69, 0x22, 0x9C, 0xBD, 0x76, 0xB6, 0x5C, 0x3D, + 0x46, 0x82, 0xC3, 0x3D, 0x10, 0xCE, 0x17, 0x3D, 0xCB, 0xCE, 0xD9, 0xBC, + 0xA2, 0x75, 0x37, 0x3D, 0x88, 0xC3, 0x30, 0xBD, 0x07, 0xF5, 0xA6, 0xBD, + 0x43, 0x83, 0xB8, 0xBD, 0xC8, 0x91, 0xA0, 0x3C, 0xB0, 0x2E, 0x56, 0x3C, + 0x15, 0x3C, 0x00, 0x3A, 0x49, 0x19, 0xB7, 0x3C, 0xDC, 0xAE, 0xD4, 0xBC, + 0xFB, 0x7C, 0x51, 0xBD, 0x37, 0x23, 0x19, 0x3D, 0x40, 0x68, 0x9A, 0x3C, + 0x81, 0x0F, 0x29, 0x3D, 0xF1, 0x9E, 0x73, 0xBD, 0x19, 0x25, 0x30, 0xBC, + 0xBC, 0xD0, 0xCA, 0x3D, 0x91, 0xAB, 0xAC, 0x3D, 0x7F, 0xF4, 0xE4, 0xBC, + 0x32, 0x11, 0x90, 0x3C, 0x9B, 0x37, 0x03, 0xBD, 0x10, 0xB0, 0x85, 0xBC, + 0xB3, 0x32, 0x9E, 0xBD, 0xA4, 0x84, 0x42, 0x3B, 0x6C, 0xD4, 0x2C, 0xBF, + 0xC1, 0xAB, 0xB3, 0xBC, 0x7E, 0xFD, 0x5D, 0xBB, 0x44, 0xDE, 0x16, 0xBD, + 0xC6, 0x5C, 0xE1, 0x3D, 0x20, 0x3E, 0xDF, 0xBD, 0xA8, 0xD8, 0xFA, 0x3D, + 0x78, 0xF3, 0xE8, 0xBC, 0xF7, 0x42, 0x2E, 0xBD, 0xE1, 0x89, 0xDC, 0x3C, + 0x6C, 0x18, 0x08, 0x3E, 0x64, 0xB8, 0x1E, 0xBD, 0x8D, 0x2A, 0x2E, 0xBD, + 0x4C, 0x73, 0x07, 0x3E, 0x4C, 0x9F, 0x5C, 0x3D, 0x06, 0x60, 0xB8, 0xBC, + 0x5E, 0xEA, 0x3E, 0x3E, 0x58, 0x53, 0xD4, 0x3D, 0x8D, 0xBE, 0x1B, 0xBD, + 0xCA, 0xAD, 0xDE, 0x3C, 0x45, 0x19, 0x54, 0xBC, 0x37, 0x56, 0x1D, 0xBE, + 0xA3, 0xFC, 0x20, 0x3E, 0xD1, 0xB9, 0x53, 0xBD, 0x35, 0x26, 0xFC, 0x3C, + 0x67, 0xC2, 0xA3, 0xBE, 0x73, 0x1E, 0x85, 0x3E, 0xA1, 0x36, 0x61, 0x3E, + 0xFC, 0xD7, 0xDF, 0xBB, 0x23, 0xB4, 0x5E, 0x3D, 0x61, 0x3D, 0xC5, 0xBC, + 0x74, 0xB7, 0x85, 0x3D, 0x79, 0x91, 0x5A, 0x3F, 0x9A, 0xE2, 0x20, 0x3D, + 0x23, 0x3C, 0xE1, 0xBD, 0xDF, 0x3A, 0x55, 0xBE, 0x1E, 0x69, 0x96, 0xBE, + 0x04, 0x4B, 0xD2, 0xBE, 0xE6, 0x2A, 0x49, 0xBF, 0x33, 0x07, 0x37, 0xBE, + 0x99, 0x54, 0x85, 0xBD, 0x63, 0x06, 0xAF, 0xBC, 0xAF, 0x4E, 0xB3, 0x3D, + 0x76, 0xA3, 0xDF, 0xBD, 0x49, 0x9D, 0xE4, 0x3D, 0xA5, 0x44, 0xC4, 0x3E, + 0x6D, 0xCF, 0x13, 0x3A, 0xDE, 0x41, 0xFA, 0xBE, 0x32, 0xFD, 0x9D, 0x3E, + 0x9E, 0x08, 0xBE, 0x3E, 0xD3, 0x3F, 0x5C, 0x3E, 0x07, 0x0F, 0xD9, 0x3E, + 0xFC, 0x70, 0x1F, 0x3D, 0x7E, 0x24, 0x7D, 0xBD, 0xB5, 0xDE, 0xCD, 0x3E, + 0x32, 0x93, 0x20, 0xBD, 0x4A, 0x2F, 0x3A, 0x3E, 0xE1, 0x57, 0x9C, 0x3E, + 0x0E, 0xB6, 0xB9, 0xBD, 0x9B, 0x01, 0xB2, 0xBE, 0xFD, 0x9C, 0x7D, 0xBE, + 0x20, 0x1D, 0xBE, 0xBE, 0x1A, 0xD5, 0x67, 0x3F, 0x52, 0xC0, 0x8D, 0xBC, + 0xD7, 0x32, 0x8A, 0x3D, 0xA3, 0x3B, 0xD3, 0x3E, 0x3B, 0x41, 0x9E, 0x3D, + 0xE4, 0x68, 0xA7, 0xBB, 0x00, 0xEC, 0x97, 0x3E, 0x7D, 0x40, 0x57, 0xBE, + 0xBE, 0x8C, 0x81, 0x3D, 0x56, 0x90, 0x73, 0xBC, 0x90, 0xAA, 0x02, 0x3E, + 0xEA, 0xEE, 0xB5, 0xBC, 0xC8, 0xAD, 0xD9, 0x3D, 0xD7, 0xDA, 0xDE, 0x3D, + 0x00, 0x30, 0x4C, 0x3C, 0xA0, 0xC0, 0x9E, 0x3D, 0xCF, 0x2F, 0x21, 0x3C, + 0x31, 0x1D, 0xDD, 0x3C, 0x95, 0x2B, 0x19, 0x3D, 0x27, 0xC9, 0x90, 0x3B, + 0x26, 0x43, 0x8C, 0xBC, 0x2F, 0x68, 0x5C, 0x3D, 0xCA, 0x7C, 0x12, 0xBD, + 0x14, 0x60, 0x26, 0x3C, 0xE0, 0xB5, 0x8E, 0x3D, 0x6A, 0x64, 0xC9, 0xBC, + 0x3D, 0x36, 0x8E, 0xBD, 0x53, 0x6A, 0x58, 0xBE, 0xA4, 0x81, 0x45, 0x3E, + 0x9F, 0x5E, 0x8F, 0x3D, 0x0B, 0x21, 0x87, 0xBD, 0x0B, 0xF9, 0xF6, 0x3C, + 0xF2, 0x74, 0x84, 0x3D, 0x51, 0x30, 0x97, 0xBC, 0x5F, 0x9B, 0x30, 0x3F, + 0xE5, 0x3F, 0x37, 0xBD, 0x86, 0xC6, 0x8C, 0xBC, 0x8D, 0x4D, 0xD4, 0x3D, + 0x6E, 0xC4, 0x89, 0xBB, 0x04, 0xE0, 0x2B, 0x3D, 0xD1, 0x75, 0x89, 0x3C, + 0x0B, 0x74, 0x40, 0x3D, 0x15, 0x01, 0x9B, 0x3C, 0x95, 0xD1, 0xE6, 0xBC, + 0x27, 0x7D, 0x73, 0xBD, 0xAB, 0x52, 0x3C, 0x3D, 0xB3, 0x39, 0x4F, 0xBD, + 0xFD, 0xCA, 0xB8, 0x3B, 0xE4, 0xCD, 0xE4, 0xBC, 0xB8, 0xBF, 0x0D, 0x3D, + 0x4A, 0xD1, 0xBE, 0xBC, 0xC8, 0x89, 0x60, 0xBD, 0x32, 0x51, 0x1E, 0xBC, + 0x68, 0x5C, 0x30, 0x3D, 0xE9, 0x39, 0xD4, 0x3A, 0x4C, 0xA7, 0xA6, 0x3D, + 0x1A, 0x61, 0xD2, 0xBC, 0xA6, 0x4F, 0x6A, 0xBC, 0xC5, 0x5E, 0xAF, 0x3B, + 0xB9, 0xE8, 0x0A, 0x3E, 0x9C, 0xF9, 0x0D, 0xBE, 0x1B, 0xDD, 0x92, 0xBD, + 0x16, 0x19, 0x22, 0x3C, 0xD4, 0x23, 0x07, 0xBB, 0xFE, 0x86, 0x07, 0x3D, + 0xA8, 0xCB, 0xD4, 0xBC, 0x84, 0x91, 0x42, 0x3E, 0x3D, 0x1D, 0xC2, 0xBC, + 0x3C, 0x70, 0xA3, 0x3D, 0x56, 0x61, 0x8D, 0xBE, 0x68, 0x57, 0xFF, 0x3E, + 0xDB, 0x77, 0x7D, 0x3D, 0xC2, 0xF9, 0xC1, 0x3E, 0x9A, 0xC4, 0xF7, 0xBD, + 0x76, 0x7C, 0xC5, 0x3C, 0x19, 0x24, 0x8E, 0xBE, 0xB3, 0xB5, 0xFA, 0x3E, + 0xC0, 0x4B, 0xFD, 0xBD, 0xC7, 0x98, 0x14, 0x3F, 0xE9, 0x3C, 0x1B, 0xBF, + 0x3B, 0x52, 0x04, 0x3D, 0x19, 0xBA, 0xA2, 0xBE, 0x6C, 0xE1, 0x99, 0x3F, + 0xB9, 0x82, 0x44, 0xBF, 0xF3, 0xF2, 0x33, 0x3F, 0xF3, 0xC4, 0x48, 0xBF, + 0x9A, 0x80, 0x9C, 0xBC, 0x91, 0x44, 0xB3, 0x3E, 0xA3, 0x2B, 0x17, 0xBE, + 0x73, 0xA1, 0x61, 0x3C, 0xAA, 0xF6, 0x7A, 0xBE, 0x62, 0x8E, 0x40, 0x3E, + 0x66, 0x0D, 0xBD, 0x3D, 0xBD, 0x90, 0x0D, 0x3F, 0xC8, 0xA8, 0x6A, 0x3E, + 0xA2, 0xAE, 0xEB, 0x3D, 0x46, 0x1B, 0x01, 0xBE, 0xAC, 0xC2, 0x15, 0x3E, + 0x7A, 0x81, 0xB0, 0x3E, 0x6E, 0xD6, 0x89, 0x3E, 0xBD, 0x7E, 0x1C, 0x3D, + 0xFA, 0x8F, 0xA8, 0xBD, 0x79, 0xB1, 0xF5, 0xBD, 0x23, 0x29, 0x0C, 0xBF, + 0x75, 0xAF, 0xB6, 0x3E, 0xEA, 0x88, 0x76, 0xBD, 0x98, 0xE9, 0xDB, 0x3C, + 0x52, 0x42, 0x19, 0xBE, 0xA6, 0x9C, 0xF2, 0x3E, 0xD2, 0xDE, 0xFF, 0x3D, + 0xC5, 0xCB, 0x55, 0x3E, 0x0B, 0x92, 0x30, 0xBE, 0x7E, 0x81, 0x4F, 0x3C, + 0x68, 0x07, 0xF8, 0x3C, 0x10, 0xB2, 0xCB, 0xBE, 0x4A, 0x71, 0xEF, 0xBE, + 0xD4, 0x5C, 0xDB, 0xBD, 0x02, 0x8E, 0x82, 0x3E, 0x67, 0xB0, 0x92, 0x3C, + 0xBA, 0x2C, 0x1A, 0x3E, 0xA4, 0xFF, 0xA9, 0x3A, 0xDD, 0x4C, 0xDF, 0x3C, + 0xA4, 0xCA, 0x8C, 0xBD, 0x1A, 0x2F, 0xB6, 0xBD, 0xC8, 0x4E, 0x23, 0x3F, + 0xA3, 0xCF, 0x48, 0x3E, 0x5A, 0x0F, 0x72, 0x3E, 0x9F, 0xEF, 0x86, 0x3E, + 0x87, 0x0A, 0x83, 0xBC, 0x4F, 0x35, 0x23, 0xBE, 0x7B, 0x71, 0x5D, 0x3E, + 0x8E, 0x75, 0xCC, 0x3E, 0xCC, 0xA4, 0xC0, 0x3D, 0xB5, 0x8B, 0x9C, 0x3E, + 0xAB, 0xC9, 0x46, 0xBD, 0x02, 0xAD, 0xAE, 0xBE, 0x1E, 0x00, 0x8F, 0xBE, + 0x10, 0x27, 0x0B, 0x3C, 0x50, 0x9A, 0x3E, 0xBE, 0x9F, 0x4A, 0x89, 0x3E, + 0x45, 0xAB, 0x2C, 0x3E, 0x17, 0x40, 0xB7, 0x3D, 0xAD, 0xE4, 0x2F, 0x3E, + 0x00, 0xC1, 0x29, 0x3E, 0x9B, 0xBB, 0x1C, 0x3E, 0x2B, 0x8B, 0x81, 0xBD, + 0x85, 0x00, 0x73, 0x3F, 0x47, 0xA8, 0x03, 0x3E, 0xA8, 0x3A, 0x4B, 0x3D, + 0x0B, 0x77, 0x6E, 0xBD, 0x0B, 0xC5, 0xE3, 0x3D, 0x32, 0x8E, 0xD5, 0x3A, + 0x33, 0xF2, 0x25, 0xBC, 0xE2, 0xFE, 0xA3, 0xBD, 0x9E, 0xB5, 0x1B, 0x3E, + 0xAF, 0x00, 0xC6, 0xBE, 0xFF, 0x01, 0x3B, 0x3D, 0x1E, 0x45, 0x74, 0xBE, + 0xAC, 0x6B, 0x6B, 0xBE, 0xCE, 0xB0, 0xAB, 0x3D, 0xCD, 0xDA, 0x03, 0xBE, + 0x30, 0xBE, 0x6D, 0x3E, 0x63, 0x7F, 0x03, 0xBE, 0xB5, 0x51, 0x88, 0x3C, + 0xD4, 0x15, 0x48, 0x3D, 0x0D, 0xC9, 0x6E, 0xBD, 0x64, 0x6A, 0x8C, 0x3E, + 0xD9, 0x97, 0xCB, 0xBE, 0x01, 0x10, 0xCF, 0xBE, 0xEF, 0x90, 0xDE, 0xBE, + 0x7E, 0xF8, 0xFB, 0x3C, 0x82, 0x24, 0x81, 0x3A, 0xDC, 0x9B, 0x27, 0xBF, + 0x5A, 0x86, 0x21, 0x3E, 0x81, 0x1A, 0xE7, 0xBE, 0x28, 0x7E, 0x01, 0xBF, + 0x20, 0x05, 0xF8, 0xBC, 0xAE, 0xD8, 0x0E, 0x3F, 0x12, 0x70, 0xD7, 0xBE, + 0x7C, 0xDD, 0xC2, 0x3E, 0x73, 0xB7, 0x73, 0x3E, 0xE2, 0xD6, 0x9B, 0xBE, + 0xEB, 0x33, 0x9D, 0xBC, 0xA7, 0x68, 0x96, 0x3E, 0xBE, 0x84, 0x94, 0xBD, + 0x18, 0xCC, 0xAE, 0x3C, 0xE7, 0xF9, 0x15, 0x3F, 0x12, 0x21, 0x9C, 0x3E, + 0x3D, 0x7A, 0xBD, 0x3F, 0x75, 0x00, 0x25, 0xBE, 0xFD, 0xAC, 0x31, 0xBD, + 0x5C, 0x31, 0x34, 0xBF, 0xB5, 0x55, 0x49, 0xBF, 0xDA, 0xD4, 0x4E, 0xBE, + 0x3E, 0xA3, 0xF3, 0x3E, 0x23, 0xA5, 0x70, 0xBF, 0x10, 0x8D, 0x62, 0x3E, + 0xCE, 0x80, 0xC2, 0x3D, 0x6E, 0xB9, 0x3E, 0xBE, 0x29, 0x0F, 0x17, 0x3F, + 0x68, 0x41, 0x05, 0x3E, 0xA0, 0xC6, 0xC1, 0xBE, 0x6D, 0xE1, 0xFA, 0xBD, + 0x84, 0x91, 0xC0, 0xBE, 0x0B, 0xF5, 0x8F, 0xBD, 0x7E, 0x3C, 0xD8, 0xBD, + 0x6C, 0xFD, 0x88, 0x3E, 0xC2, 0x7C, 0x15, 0xBD, 0xE6, 0x49, 0x9B, 0xBC, + 0xFA, 0xB4, 0x33, 0xBE, 0x4E, 0xF7, 0xAE, 0xBD, 0xFA, 0x98, 0x5E, 0xBE, + 0x3D, 0x11, 0x57, 0xBD, 0x88, 0xEE, 0x82, 0xBD, 0xE3, 0x18, 0x0B, 0xBD, + 0x09, 0x06, 0x89, 0x3D, 0x03, 0x12, 0x90, 0x3C, 0x75, 0x2D, 0x93, 0x3E, + 0x36, 0x35, 0xE9, 0x3D, 0xEF, 0xFA, 0xBB, 0xBE, 0xC8, 0x3A, 0xAC, 0xBE, + 0x50, 0x48, 0x15, 0xBF, 0xFA, 0xD6, 0xA6, 0x3D, 0xDE, 0x95, 0xD9, 0x3E, + 0x19, 0x19, 0x2F, 0xBF, 0xDE, 0x4E, 0xAA, 0xBD, 0xB2, 0x23, 0x02, 0xBE, + 0x27, 0x96, 0x01, 0xBF, 0x56, 0xA1, 0x49, 0xBD, 0xD0, 0xCB, 0x4D, 0xBE, + 0xE4, 0x79, 0xD4, 0x3D, 0x0A, 0x95, 0xBE, 0x3E, 0x6C, 0x56, 0xAF, 0xBE, + 0x4A, 0xCF, 0x7F, 0xBE, 0xBC, 0x42, 0x79, 0xBD, 0xA3, 0x2C, 0x56, 0x3E, + 0xE0, 0x94, 0x9C, 0x3D, 0xA0, 0x14, 0xB6, 0xBD, 0x97, 0xEC, 0x54, 0x3F, + 0x43, 0x13, 0x39, 0x3E, 0xF9, 0x97, 0x24, 0xBC, 0x32, 0x96, 0x22, 0xBD, + 0x6A, 0x05, 0xC3, 0x3E, 0xC3, 0x82, 0x85, 0x3D, 0xD3, 0x30, 0x79, 0xBD, + 0x26, 0xB6, 0xE5, 0x3E, 0xC8, 0x3F, 0x5A, 0xBC, 0x42, 0x46, 0x42, 0xBE, + 0x12, 0xBA, 0xEA, 0xBE, 0x65, 0x61, 0x25, 0xBD, 0x1F, 0x5D, 0x8E, 0x3E, + 0xEE, 0x65, 0x05, 0xBF, 0x98, 0x05, 0xC7, 0x3F, 0x0A, 0xAD, 0x2A, 0xBF, + 0x4D, 0xE0, 0x1A, 0xBE, 0xF8, 0xF7, 0xD0, 0x3D, 0xDD, 0x54, 0x13, 0xBF, + 0x6F, 0x09, 0xAF, 0xBD, 0xFC, 0xC7, 0x08, 0xBF, 0x3E, 0x73, 0x76, 0xBE, + 0xF7, 0x3F, 0x2C, 0x3E, 0xEE, 0xFB, 0x17, 0x3E, 0x81, 0xC4, 0xD8, 0x3D, + 0x82, 0x1A, 0xE3, 0xBD, 0x57, 0x3F, 0x21, 0xBD, 0x9B, 0x03, 0x89, 0x3D, + 0x0E, 0xC6, 0x05, 0x3B, 0x12, 0xE5, 0xAC, 0xBD, 0x0C, 0xA4, 0x81, 0x3B, + 0xE1, 0xB5, 0x01, 0xBE, 0xDC, 0xE7, 0x01, 0xBE, 0x7B, 0xD9, 0x54, 0x3D, + 0x12, 0x85, 0x0D, 0xBD, 0x62, 0xEE, 0xD7, 0x3B, 0x0F, 0xBF, 0xC0, 0xBC, + 0x5F, 0x09, 0x14, 0xBE, 0xE4, 0xF3, 0x2B, 0xBD, 0xBA, 0xD3, 0x27, 0x3E, + 0x55, 0xD0, 0x01, 0x3C, 0x1F, 0x49, 0x0F, 0x3E, 0x18, 0x7A, 0x59, 0x3B, + 0x0C, 0xC8, 0xA1, 0xBB, 0x73, 0xD7, 0x34, 0xBC, 0xD0, 0xFD, 0x0D, 0x3E, + 0x2E, 0xD2, 0x9A, 0xBD, 0x74, 0x6B, 0x41, 0x3D, 0x80, 0x89, 0x40, 0x3D, + 0xA5, 0x3A, 0xA4, 0xBD, 0xC5, 0x94, 0x09, 0xBC, 0x31, 0x71, 0x46, 0x3D, + 0xFC, 0xC1, 0x2F, 0x3E, 0x30, 0x14, 0xDB, 0xBA, 0x5E, 0x0E, 0x12, 0x3A, + 0xA0, 0x8C, 0xA9, 0x3D, 0xC2, 0x4D, 0xEE, 0x3D, 0xA6, 0x1A, 0xA1, 0xBD, + 0xD5, 0x0F, 0x83, 0xBD, 0x63, 0x02, 0x5A, 0x3C, 0x25, 0xF7, 0x83, 0xBB, + 0xFE, 0x91, 0x7E, 0xBD, 0x38, 0xC2, 0x34, 0xBA, 0x87, 0x59, 0x8C, 0x3D, + 0xFA, 0x28, 0x6E, 0xBB, 0xA1, 0x55, 0xD1, 0x3B, 0x7B, 0x93, 0xB7, 0xBC, + 0xA6, 0xDD, 0x1E, 0x3C, 0xB2, 0xCA, 0x08, 0x3D, 0x2C, 0x08, 0x97, 0xBD, + 0x0C, 0x2E, 0x26, 0x3C, 0x13, 0x28, 0xD6, 0x3D, 0xC0, 0x32, 0x97, 0xBB, + 0xEF, 0xA8, 0x89, 0x3D, 0x42, 0x5B, 0x2E, 0xBD, 0xB0, 0xEF, 0xFC, 0xBB, + 0x94, 0x96, 0xAB, 0xBD, 0xF5, 0x5E, 0x42, 0x3D, 0xDD, 0xFE, 0x85, 0xBD, + 0x3A, 0x18, 0x95, 0xBC, 0x5A, 0x42, 0x89, 0xBB, 0xBA, 0xA7, 0x5F, 0xBD, + 0xBB, 0x32, 0x01, 0x3D, 0x90, 0x0A, 0x05, 0xBD, 0xF5, 0xC0, 0x2A, 0x3E, + 0x1F, 0xE7, 0x1B, 0xBD, 0xC7, 0x60, 0x43, 0xBD, 0x6F, 0xFD, 0x53, 0x3D, + 0xA5, 0x35, 0xBE, 0xBD, 0x50, 0x8B, 0x11, 0x3C, 0x60, 0x0A, 0x33, 0xBD, + 0x02, 0xA1, 0x8D, 0xBC, 0x5C, 0xB1, 0x93, 0xBC, 0x67, 0x42, 0x3B, 0x3D, + 0x53, 0xF8, 0xD3, 0xBC, 0x1A, 0x8B, 0x44, 0xBD, 0xF5, 0x15, 0xB9, 0x3C, + 0x14, 0xDA, 0x3D, 0xBD, 0x8D, 0xD4, 0xDE, 0x3C, 0xCB, 0xD4, 0x55, 0x3C, + 0x20, 0x42, 0x23, 0x3E, 0x44, 0x0D, 0x02, 0x3D, 0x80, 0x30, 0x0A, 0x3D, + 0x55, 0x4F, 0xB5, 0xBC, 0x0A, 0xE0, 0xB2, 0x3C, 0x10, 0x57, 0x72, 0xBD, + 0x6E, 0x6C, 0xBC, 0xBC, 0xA8, 0xAB, 0x25, 0xBC, 0x7E, 0x93, 0x83, 0xB6, + 0x76, 0xE2, 0x0D, 0x3B, 0x2E, 0x4B, 0xE0, 0xBD, 0xA4, 0xFF, 0x0F, 0xBE, + 0x60, 0xA6, 0x46, 0xBD, 0x24, 0xAD, 0xFC, 0xBB, 0x57, 0xF5, 0x06, 0xBD, + 0x7A, 0x1A, 0xE9, 0xBC, 0x32, 0xEA, 0x1A, 0xBF, 0x5A, 0x97, 0x38, 0xBD, + 0xC5, 0x0E, 0x93, 0xBC, 0x10, 0x3B, 0xD9, 0x3D, 0x00, 0x40, 0xAB, 0xBD, + 0x32, 0x04, 0x51, 0xBC, 0x55, 0x16, 0xED, 0xBD, 0xB9, 0x1D, 0xA8, 0x3C, + 0xD4, 0x2B, 0xE4, 0xBC, 0x4A, 0x8E, 0x77, 0x3B, 0x02, 0x06, 0xD1, 0xBC, + 0x1D, 0xF3, 0x46, 0xBD, 0xFB, 0x99, 0x09, 0x3D, 0x1B, 0x47, 0xF4, 0x3B, + 0xE0, 0x8A, 0xB3, 0x3B, 0x45, 0x8D, 0x7B, 0xBB, 0x2B, 0x4B, 0x97, 0x3E, + 0x9D, 0xF0, 0x48, 0xBD, 0xE5, 0xF4, 0xE9, 0x3D, 0x1C, 0x53, 0xE5, 0x3C, + 0x3D, 0xD0, 0x8A, 0x3C, 0x92, 0x2D, 0x90, 0x3C, 0xC2, 0x72, 0xDC, 0xBC, + 0xB8, 0x6C, 0x87, 0xBC, 0x06, 0xEB, 0x7F, 0xBC, 0xB9, 0x66, 0xDB, 0x3D, + 0xA7, 0x66, 0x5F, 0xBE, 0x4E, 0x3B, 0x2B, 0xBE, 0xF9, 0x19, 0x28, 0x3C, + 0x51, 0x0D, 0x59, 0xBC, 0xEF, 0xE8, 0xFF, 0x3B, 0xB7, 0x05, 0x22, 0xBC, + 0x34, 0x3B, 0x8C, 0x3D, 0x45, 0x4A, 0x8C, 0xBB, 0xC3, 0xCC, 0x95, 0xBB, + 0x32, 0x33, 0x9B, 0xBE, 0xF5, 0x5A, 0x8B, 0xBE, 0x69, 0xFA, 0x89, 0x3E, + 0xFD, 0x19, 0x2C, 0x3F, 0x56, 0x5A, 0xBD, 0x3C, 0x83, 0xA1, 0xB8, 0xB9, + 0x72, 0xBD, 0x1E, 0x3D, 0x24, 0x15, 0x08, 0x3D, 0x5C, 0xFA, 0x7E, 0x3C, + 0x33, 0x8C, 0xF9, 0x3D, 0xDC, 0xC0, 0xD8, 0x3E, 0xF6, 0x9B, 0x77, 0x3B, + 0x08, 0x69, 0x18, 0x3F, 0x98, 0x33, 0xD2, 0xBE, 0x33, 0xD9, 0x21, 0xBF, + 0xEF, 0xF9, 0xEE, 0xBB, 0x79, 0x2A, 0xD0, 0x3F, 0x14, 0x51, 0x19, 0x3C, + 0xA0, 0x90, 0x0A, 0xBE, 0x15, 0x5E, 0xC8, 0xBE, 0xD8, 0x4F, 0x51, 0x3D, + 0xF2, 0xAA, 0xDC, 0x3D, 0xAF, 0x5D, 0x87, 0xBE, 0x3D, 0x26, 0xA6, 0x3E, + 0x3F, 0x9E, 0xA2, 0xBE, 0xFE, 0x30, 0x2C, 0x3E, 0x27, 0xBD, 0xF2, 0xBD, + 0xA9, 0xD7, 0x8E, 0xBF, 0x8B, 0x6D, 0x02, 0xBD, 0x9C, 0x44, 0xEE, 0x3E, + 0xCF, 0x83, 0xA9, 0xBF, 0x10, 0x0C, 0x3C, 0x3E, 0x97, 0xBE, 0x20, 0xBF, + 0xF6, 0xB3, 0xC1, 0xBE, 0x8D, 0x40, 0x2B, 0x3F, 0xB2, 0x51, 0xB9, 0x3E, + 0x0E, 0x90, 0x80, 0x3D, 0x0F, 0x99, 0x43, 0x3D, 0x9B, 0xFF, 0x72, 0x3D, + 0xDE, 0x52, 0xA4, 0x3D, 0x31, 0x22, 0x91, 0x3E, 0x0D, 0x96, 0x2B, 0xBE, + 0x5B, 0x8A, 0x92, 0x3D, 0x0F, 0x2E, 0x4F, 0x3C, 0xBC, 0xB5, 0x4B, 0x3E, + 0x44, 0x35, 0x34, 0xBF, 0x2C, 0x7B, 0xF5, 0xBD, 0xB5, 0xD2, 0xF5, 0x3C, + 0x45, 0x48, 0xEB, 0xBE, 0x33, 0x33, 0x04, 0x3B, 0xC1, 0x21, 0xFE, 0xBE, + 0x78, 0xEF, 0xD5, 0x3C, 0xF1, 0xF9, 0x7A, 0x3D, 0x5D, 0x10, 0xA9, 0xBE, + 0x45, 0x61, 0x5D, 0x3F, 0x79, 0xAA, 0xC5, 0xBE, 0x9E, 0xD0, 0x31, 0xBE, + 0xED, 0xE9, 0x77, 0xBE, 0xB4, 0x91, 0xC9, 0xBD, 0x40, 0x76, 0x57, 0xBB, + 0x36, 0x2E, 0x03, 0xBE, 0x43, 0x35, 0x30, 0xBF, 0x74, 0x60, 0xFF, 0xBE, + 0xD7, 0x0A, 0xAB, 0xBE, 0x90, 0x6F, 0x2D, 0x3F, 0xA7, 0x5C, 0x76, 0x3F, + 0x3C, 0x6B, 0xB3, 0xBE, 0xF9, 0x6C, 0xA1, 0xBD, 0x98, 0x52, 0xB7, 0x3E, + 0x4B, 0x3D, 0x0F, 0xBE, 0xC0, 0x6B, 0x26, 0xBE, 0xC6, 0x5A, 0x49, 0xBE, + 0x4B, 0xDD, 0x8D, 0x3D, 0x1E, 0x21, 0xC9, 0x3E, 0x86, 0x74, 0x18, 0xBD, + 0xBD, 0x78, 0x71, 0x3E, 0x4F, 0xF7, 0x3E, 0xBF, 0x1C, 0x5B, 0x68, 0xBF, + 0x0F, 0x9E, 0xDB, 0x3E, 0xD7, 0xED, 0xEA, 0x3C, 0x56, 0x2C, 0x16, 0xBE, + 0x91, 0x92, 0xB2, 0x3E, 0x33, 0xDD, 0x3F, 0x3F, 0x91, 0x6E, 0x23, 0x3F, + 0x3F, 0xDD, 0x0D, 0x3E, 0x84, 0x6E, 0x8C, 0xBF, 0x65, 0x57, 0x73, 0xBD, + 0xD9, 0x60, 0xAC, 0xBF, 0x90, 0x95, 0xC3, 0x3D, 0x1E, 0x95, 0x0F, 0x3F, + 0xB1, 0x23, 0x35, 0x3F, 0xA6, 0xD9, 0x8F, 0xBE, 0x28, 0xAD, 0xDA, 0xBE, + 0xB7, 0xCA, 0xBC, 0xBE, 0xF5, 0x4F, 0xFB, 0x3E, 0x0E, 0x62, 0x49, 0xBF, + 0x9B, 0x4E, 0x2A, 0xBD, 0x60, 0xB0, 0xA0, 0xBD, 0xDF, 0xD8, 0x0A, 0x3D, + 0x03, 0x8F, 0x91, 0x3B, 0x9A, 0xC2, 0x2A, 0x3C, 0xFD, 0x8B, 0xF5, 0xBB, + 0x2E, 0x5E, 0x13, 0x3D, 0x8D, 0x68, 0x53, 0xBD, 0x22, 0x5A, 0x9A, 0x3C, + 0x48, 0xEF, 0xAE, 0x3B, 0x07, 0xB3, 0xA9, 0xBD, 0x18, 0x78, 0xB7, 0xBC, + 0x93, 0xDE, 0x27, 0xBC, 0x24, 0x68, 0xBD, 0x3D, 0x31, 0xBB, 0xDD, 0x3C, + 0x5A, 0xB7, 0x52, 0x3B, 0x9E, 0x3A, 0x28, 0xBD, 0x70, 0x7E, 0xF8, 0x3C, + 0xB0, 0xFB, 0x9E, 0x3B, 0xD2, 0x55, 0x67, 0xBC, 0xB6, 0x76, 0x20, 0x3D, + 0xB4, 0x24, 0x2A, 0xBC, 0x17, 0x84, 0xF7, 0x3D, 0x35, 0x66, 0x6C, 0xBD, + 0xC1, 0x96, 0x88, 0xBC, 0x93, 0x2F, 0xEA, 0x3C, 0xCD, 0x27, 0x5E, 0x3C, + 0xC8, 0x97, 0x93, 0xBD, 0xFE, 0xE0, 0x32, 0xBC, 0xEB, 0x4A, 0x17, 0xBE, + 0x98, 0x6F, 0x07, 0x3D, 0x6C, 0xA5, 0x89, 0x3D, 0x0A, 0xB7, 0x72, 0x3D, + 0x5F, 0x04, 0x9D, 0x3D, 0x2E, 0x6E, 0x02, 0x3D, 0x75, 0x37, 0xD1, 0xBE, + 0xF2, 0xA6, 0x1A, 0x3E, 0x35, 0x3F, 0x07, 0xBD, 0xB8, 0x32, 0x81, 0x3D, + 0x9A, 0xB2, 0x26, 0x3E, 0xD3, 0x7B, 0x48, 0x3B, 0x0A, 0x96, 0x69, 0xBE, + 0x1E, 0x58, 0xF3, 0x3D, 0x62, 0x40, 0x72, 0xBC, 0x5C, 0x28, 0x3B, 0x3C, + 0xD9, 0x0F, 0x51, 0x3E, 0x43, 0xDF, 0x83, 0x3E, 0x7B, 0x2E, 0x12, 0x3D, + 0x1B, 0x0E, 0x2D, 0xBE, 0x8F, 0x94, 0x65, 0xBB, 0x85, 0x35, 0xA3, 0x3D, + 0x1A, 0xAF, 0x01, 0x3F, 0x26, 0xF5, 0x7D, 0x3C, 0x50, 0x09, 0x02, 0xBD, + 0x5F, 0xD5, 0xE2, 0x3E, 0x1D, 0x72, 0x41, 0x3C, 0x83, 0x99, 0xA2, 0x3F, + 0xCC, 0xC1, 0x10, 0x3D, 0x74, 0xF0, 0xF6, 0x3D, 0x1E, 0x98, 0x20, 0xBE, + 0x9F, 0xD7, 0x34, 0x3D, 0xB1, 0x07, 0x01, 0x3F, 0xC8, 0x9B, 0xB2, 0x3D, + 0x70, 0x84, 0xC4, 0xBD, 0x96, 0x19, 0x1A, 0x3F, 0x62, 0x6E, 0x3A, 0xBF, + 0xD5, 0xBF, 0x0A, 0xBF, 0x85, 0xB4, 0x4B, 0xBE, 0x53, 0x24, 0x26, 0xBF, + 0x27, 0xE7, 0x5C, 0x3D, 0xC2, 0x55, 0x66, 0x3E, 0x2C, 0xCB, 0xC0, 0xBC, + 0x2C, 0xB8, 0x1E, 0x3F, 0x11, 0xBE, 0x9B, 0xBE, 0x61, 0x7C, 0x62, 0x3F, + 0x34, 0xC9, 0x93, 0xBE, 0xE8, 0x23, 0x54, 0x3D, 0x49, 0x9C, 0x20, 0xBF, + 0xC2, 0xD0, 0xFC, 0xBE, 0x6D, 0x53, 0xEB, 0xBE, 0x29, 0xBE, 0x9F, 0x3E, + 0xBA, 0xA2, 0x4C, 0xBE, 0xD0, 0x4B, 0x59, 0x3F, 0x2C, 0xF7, 0xBE, 0x3C, + 0x4D, 0xC4, 0x32, 0x3F, 0xBE, 0x75, 0x9C, 0x3D, 0x07, 0x75, 0xFE, 0xBC, + 0x41, 0xF4, 0x77, 0x3E, 0xCC, 0xB6, 0xF5, 0xBD, 0xEF, 0xC6, 0x35, 0x3D, + 0x6D, 0xA1, 0xEC, 0xBE, 0xAF, 0x71, 0x22, 0x3E, 0xC5, 0xDF, 0x20, 0xBF, + 0x49, 0x01, 0x7D, 0xBD, 0x05, 0x99, 0xD6, 0x3E, 0x90, 0xC7, 0xF7, 0x3E, + 0x68, 0x5E, 0x47, 0xBD, 0x1C, 0xC6, 0x48, 0xBD, 0xA3, 0x7B, 0xB6, 0x3C, + 0xBE, 0x7F, 0xE4, 0x3D, 0x94, 0x2E, 0x5F, 0x3C, 0x0F, 0xAC, 0xD6, 0xBB, + 0x75, 0xED, 0xE1, 0x3C, 0x11, 0x65, 0x67, 0xBD, 0x2A, 0x29, 0x2B, 0xBE, + 0x7D, 0x66, 0x18, 0xBD, 0x13, 0xD9, 0xB7, 0xBD, 0xBE, 0x64, 0x05, 0xBC, + 0x89, 0x97, 0x7B, 0xBD, 0x17, 0x0F, 0x15, 0x3E, 0x3C, 0x74, 0x48, 0x3D, + 0x0F, 0xC7, 0x03, 0xBD, 0x89, 0x22, 0xDF, 0xBC, 0xD1, 0xD3, 0x22, 0x3C, + 0x74, 0xD9, 0xAB, 0xBC, 0x4C, 0x35, 0x00, 0x3C, 0xBB, 0x8D, 0x67, 0x3D, + 0xD8, 0xCA, 0xC7, 0x3C, 0xA2, 0xD9, 0x80, 0x3D, 0x52, 0x1B, 0x5F, 0x3D, + 0x20, 0x5A, 0x47, 0x3E, 0xEC, 0x0B, 0x04, 0x3E, 0x65, 0x2A, 0x41, 0x3B, + 0x08, 0x81, 0x97, 0xBD, 0x86, 0x30, 0x8C, 0x3D, 0x96, 0x16, 0xCC, 0x3E, + 0x51, 0xB0, 0x18, 0x3E, 0xB8, 0xA6, 0x64, 0x3D, 0xB0, 0xCB, 0xBD, 0x3C, + 0x13, 0x42, 0x7B, 0x3C, 0x3B, 0x72, 0x14, 0x3C, 0x79, 0xC0, 0xCD, 0xBD, + 0x4A, 0x99, 0xB7, 0xBC, 0xA4, 0xFA, 0xA5, 0xBC, 0xA7, 0x9F, 0xAB, 0xBB, + 0xD3, 0xA9, 0x2C, 0x3D, 0x51, 0x3F, 0x3B, 0x3D, 0xDA, 0xE5, 0x8A, 0x3D, + 0x86, 0x9D, 0x65, 0xBD, 0xAB, 0x8B, 0x06, 0xBD, 0x22, 0xB9, 0x86, 0x3D, + 0x95, 0x32, 0x30, 0xBD, 0x0C, 0x41, 0x02, 0x3D, 0xF2, 0xAE, 0xDA, 0x3C, + 0x9A, 0x79, 0xFE, 0x3C, 0x1F, 0x4B, 0xB4, 0x3C, 0x60, 0x25, 0x62, 0xBD, + 0xB0, 0x19, 0xED, 0xBC, 0xA9, 0xD4, 0xE5, 0xBC, 0x6D, 0xCC, 0x87, 0x3D, + 0x3B, 0x0E, 0x95, 0x3D, 0x2E, 0x54, 0xF7, 0xBD, 0x14, 0x38, 0x7F, 0xBD, + 0x73, 0xA6, 0xBB, 0xBD, 0xAD, 0x07, 0x07, 0x3D, 0xA5, 0x26, 0x16, 0xBD, + 0xE4, 0xDF, 0x9D, 0x3C, 0xD5, 0x65, 0x8B, 0xBE, 0xD8, 0x4C, 0xA9, 0xBD, + 0xA1, 0xB0, 0x19, 0xBD, 0x53, 0x0E, 0x41, 0xBC, 0x20, 0xF7, 0x43, 0xBE, + 0x95, 0x0E, 0xBA, 0x3E, 0xC5, 0x73, 0x83, 0xBC, 0x1B, 0x4B, 0xBC, 0xBC, + 0x7F, 0xF2, 0xB1, 0x3E, 0x47, 0x0B, 0xC5, 0xBD, 0xE0, 0x79, 0x62, 0xBE, + 0x42, 0xD7, 0x19, 0xBD, 0x8D, 0xCD, 0x30, 0xBE, 0x67, 0x0A, 0x4E, 0xBD, + 0x05, 0x15, 0x87, 0xBD, 0x28, 0x92, 0xB7, 0x3D, 0xCD, 0x52, 0xD8, 0x3D, + 0x05, 0x58, 0xA4, 0xBE, 0xD1, 0x81, 0xAB, 0x3E, 0xC0, 0x23, 0x4D, 0xBE, + 0xDD, 0xF4, 0x88, 0xBD, 0x1A, 0x75, 0x90, 0x3E, 0x61, 0x50, 0xB5, 0xBE, + 0x5B, 0x03, 0xC3, 0x3C, 0x5A, 0xA8, 0xE0, 0xBD, 0xC3, 0x17, 0xBC, 0x3E, + 0x07, 0xD0, 0x3C, 0xBE, 0x73, 0x3A, 0x8F, 0xBE, 0x86, 0xE7, 0x8D, 0x3D, + 0xD0, 0xD7, 0x0B, 0x3E, 0x2A, 0x8F, 0x15, 0x3E, 0x63, 0x7A, 0xBB, 0xBD, + 0x2C, 0x35, 0xEE, 0x3E, 0x8C, 0x2F, 0xEE, 0x3C, 0xC4, 0xDF, 0xDA, 0xBD, + 0xCA, 0x67, 0xE0, 0x3D, 0x4D, 0x2A, 0x57, 0xBF, 0x4C, 0xE3, 0xE0, 0xBE, + 0xFD, 0xB8, 0x27, 0xBE, 0xF4, 0x62, 0x3E, 0xBE, 0xF5, 0x3C, 0xA9, 0xBD, + 0x4F, 0xB3, 0x64, 0xBF, 0x58, 0xA1, 0x0C, 0xBF, 0x5E, 0xA0, 0xC2, 0xBE, + 0x89, 0x7B, 0x07, 0xBE, 0x77, 0x10, 0x80, 0x3E, 0x8E, 0x19, 0x82, 0x3C, + 0x53, 0x64, 0xD8, 0x3E, 0x85, 0xB0, 0x54, 0xBF, 0xF2, 0xF7, 0x95, 0x3F, + 0x84, 0xA9, 0x75, 0xBF, 0x05, 0x02, 0xB3, 0xBE, 0xED, 0x4A, 0xEE, 0xBC, + 0x83, 0xFB, 0x04, 0xBF, 0x8F, 0xC6, 0x83, 0xBD, 0xC7, 0x9E, 0x36, 0xBD, + 0xEE, 0x5A, 0x32, 0x3E, 0x9E, 0x08, 0x25, 0x3F, 0xC4, 0xE3, 0x85, 0x3E, + 0x41, 0x9C, 0x02, 0x3F, 0xEB, 0xBB, 0xC6, 0xBE, 0xAA, 0x6C, 0x32, 0xBF, + 0xA9, 0x7B, 0x9C, 0x3E, 0x2A, 0x67, 0x9F, 0xBD, 0x9B, 0x92, 0x8E, 0xBD, + 0xE5, 0x01, 0x85, 0xBE, 0x4C, 0x72, 0xFB, 0xBE, 0xFD, 0x01, 0x0E, 0xBF, + 0x85, 0xFC, 0xB4, 0x3E, 0xC5, 0x57, 0x49, 0x3F, 0xE1, 0x28, 0x97, 0xBE, + 0x07, 0x4E, 0x7F, 0x3D, 0xBA, 0xF8, 0x9C, 0xBD, 0x22, 0xB7, 0xE0, 0x3C, + 0xF4, 0x1C, 0x53, 0xBC, 0x18, 0xA6, 0x42, 0x3D, 0x18, 0x3E, 0x74, 0x3E, + 0xEB, 0xFC, 0x48, 0x3E, 0x51, 0x1C, 0xCC, 0xBC, 0x63, 0xFF, 0x85, 0xBE, + 0xB6, 0xAE, 0x8E, 0x3E, 0x80, 0x10, 0xF1, 0x3D, 0x26, 0x20, 0xA1, 0xBA, + 0xA9, 0x3A, 0x10, 0xBF, 0x79, 0xCC, 0x35, 0xB9, 0xB8, 0xD5, 0x10, 0xBF, + 0xEF, 0xCD, 0xB8, 0xBD, 0xB9, 0x9B, 0xCD, 0x3C, 0x56, 0x28, 0x8B, 0xBD, + 0xBA, 0x2D, 0x03, 0xBE, 0xB8, 0x96, 0x47, 0xBF, 0x38, 0x5A, 0xB1, 0xBD, + 0x6A, 0x95, 0x02, 0xBE, 0x2B, 0x47, 0x06, 0xBE, 0x61, 0x12, 0x21, 0x3F, + 0xAC, 0xD0, 0xE1, 0x3D, 0xD3, 0x31, 0x11, 0xBF, 0xB5, 0xC4, 0x19, 0x3F, + 0x71, 0x86, 0x90, 0xBC, 0xE4, 0xD4, 0xC7, 0x3E, 0x4F, 0x7D, 0x45, 0x3A, + 0x72, 0x0A, 0xF2, 0xBD, 0xB1, 0x95, 0x82, 0x3D, 0x50, 0x33, 0x29, 0xBE, + 0x9C, 0xCC, 0x12, 0xBD, 0xBE, 0x8D, 0xFB, 0xBD, 0x8B, 0xAA, 0xDB, 0xBE, + 0x42, 0x07, 0x7E, 0x3E, 0x38, 0x86, 0x07, 0x3E, 0x18, 0xCF, 0x33, 0xBE, + 0xB5, 0x68, 0x47, 0xBB, 0x01, 0x57, 0x09, 0x3E, 0x3C, 0xAC, 0x12, 0xBE, + 0x29, 0xDF, 0x4A, 0xBE, 0x87, 0xA3, 0x0E, 0x3E, 0xC2, 0xE2, 0x96, 0xBE, + 0x37, 0xB0, 0xF2, 0xBB, 0x90, 0x14, 0xAA, 0x3D, 0x4B, 0x7A, 0x66, 0xBE, + 0xCE, 0x2D, 0xB4, 0xBB, 0x15, 0xFF, 0xC2, 0x3E, 0x81, 0x91, 0x5F, 0xBE, + 0xF7, 0x0D, 0x29, 0x3F, 0x6D, 0x18, 0x78, 0x3E, 0xCC, 0xA1, 0xC4, 0xBD, + 0x49, 0x92, 0x78, 0xBF, 0xC7, 0x17, 0x6F, 0xBD, 0x47, 0x54, 0x77, 0x3D, + 0x00, 0xD1, 0x92, 0xBF, 0xA5, 0x87, 0x17, 0xBE, 0x13, 0x1D, 0xDE, 0x3B, + 0xAB, 0x3F, 0x90, 0x3B, 0xC9, 0xF3, 0x0E, 0xBD, 0x1E, 0xE0, 0x1E, 0xBE, + 0xCA, 0x90, 0x50, 0xBE, 0x96, 0xA6, 0x52, 0xBC, 0xA2, 0x5F, 0xF1, 0x3D, + 0xC3, 0x05, 0x0E, 0xBE, 0x25, 0x43, 0xB2, 0x3C, 0x42, 0xF8, 0xF2, 0x3D, + 0x06, 0x6A, 0xEC, 0xBD, 0xE0, 0xE7, 0xB7, 0x3C, 0x57, 0x50, 0x9C, 0xBD, + 0xB5, 0xB9, 0x7D, 0x3C, 0x83, 0x18, 0x5B, 0x3E, 0xC8, 0x9E, 0x53, 0x3D, + 0x03, 0x96, 0xE8, 0xBC, 0xE3, 0x7D, 0x71, 0xBC, 0x62, 0x17, 0xE4, 0x3C, + 0x3E, 0x86, 0x3B, 0xBD, 0x21, 0xED, 0x3E, 0xBE, 0xA2, 0xD1, 0x2C, 0x3C, + 0x0D, 0x19, 0x1E, 0xBD, 0x4A, 0x7D, 0xE2, 0xBD, 0xF0, 0x58, 0xE2, 0xBB, + 0x5A, 0x55, 0x97, 0xBE, 0x2E, 0xF7, 0x8F, 0xBC, 0x43, 0x49, 0x7A, 0x3C, + 0x3A, 0xF6, 0xFB, 0x3C, 0xE7, 0x8F, 0x47, 0x3D, 0x65, 0xB8, 0x3E, 0x3B, + 0xEB, 0xB6, 0x9B, 0x3C, 0x9F, 0xD2, 0x48, 0x3E, 0x05, 0xA0, 0x89, 0xBE, + 0xF8, 0xBA, 0x03, 0xBE, 0xF8, 0x8A, 0x5D, 0x3E, 0xBC, 0xDE, 0x56, 0x3E, + 0x1C, 0x3E, 0xB4, 0x3E, 0xE2, 0x0A, 0xCA, 0xBE, 0xEA, 0x10, 0x10, 0x3F, + 0x90, 0x8A, 0xB0, 0xBD, 0x48, 0x71, 0xC2, 0x3E, 0xDF, 0x5F, 0x8C, 0xBD, + 0x17, 0x3D, 0xC7, 0xBD, 0x51, 0x1D, 0x37, 0x3E, 0xBF, 0x12, 0xB4, 0xBE, + 0x8E, 0x0A, 0xB6, 0x3F, 0x92, 0x45, 0xD1, 0x3C, 0xF5, 0xDA, 0x74, 0xBE, + 0x82, 0x27, 0x39, 0xBD, 0x22, 0x93, 0x9B, 0x3D, 0x38, 0xB1, 0x9C, 0x3D, + 0x5E, 0x90, 0x72, 0xBE, 0x80, 0x0E, 0x89, 0x3E, 0x52, 0x74, 0x24, 0x3E, + 0xC5, 0xC0, 0x72, 0xBF, 0x1E, 0x6F, 0x71, 0x3F, 0x7A, 0xC1, 0x16, 0xBD, + 0x6B, 0x50, 0xE8, 0xBE, 0x2D, 0x82, 0x66, 0xBE, 0x59, 0xA9, 0xBE, 0x3D, + 0x61, 0x0A, 0xC9, 0x3E, 0x81, 0xB4, 0x6F, 0xBE, 0xD4, 0x75, 0x2A, 0x3F, + 0x7E, 0xF2, 0xAD, 0x3E, 0x80, 0x43, 0x25, 0xBE, 0x9D, 0xBB, 0x6E, 0xBE, + 0x55, 0x44, 0xFE, 0x3E, 0x76, 0x9B, 0xB4, 0xBE, 0x83, 0xC1, 0xFF, 0x3D, + 0x39, 0x74, 0xA6, 0xBC, 0x13, 0x90, 0x1D, 0xBE, 0xAE, 0x4B, 0x23, 0x3E, + 0x6D, 0x6F, 0xB5, 0x3D, 0x0F, 0xF3, 0xEC, 0xBE, 0xBC, 0x8E, 0xF2, 0x3D, + 0x0F, 0x9F, 0x35, 0x3D, 0x0F, 0x33, 0xDC, 0xBE, 0x03, 0xF1, 0xD3, 0xBD, + 0x08, 0x79, 0x5D, 0x3E, 0xBC, 0x40, 0x38, 0xBE, 0x12, 0x89, 0xB1, 0xBC, + 0xEF, 0xEE, 0x77, 0x3A, 0xB9, 0x26, 0xB4, 0x3D, 0x8C, 0x59, 0xB0, 0x3E, + 0x20, 0x9E, 0x9A, 0xBC, 0x49, 0x13, 0xAE, 0xBE, 0x2D, 0x4A, 0xE3, 0x3E, + 0x20, 0xD3, 0x42, 0xBD, 0x3A, 0x47, 0x8E, 0x3F, 0x76, 0x33, 0x2E, 0xBD, + 0x89, 0xFC, 0xD0, 0x3E, 0xB8, 0x31, 0xCB, 0xBE, 0x40, 0xB4, 0x4E, 0x3C, + 0xA2, 0x51, 0x17, 0xBF, 0x9E, 0x6B, 0x09, 0xBF, 0x63, 0xE2, 0x90, 0x3D, + 0xE7, 0xE6, 0x96, 0xBD, 0x93, 0x7D, 0x72, 0x3C, 0xD5, 0xC6, 0xF1, 0xBE, + 0xD0, 0x6D, 0xD6, 0x3D, 0x44, 0x65, 0x81, 0xBD, 0x63, 0xEA, 0x19, 0x3E, + 0x20, 0x72, 0xA9, 0x3D, 0xDE, 0xCA, 0xEF, 0x3E, 0x64, 0x94, 0x97, 0x3C, + 0xB4, 0xDA, 0xA8, 0x3E, 0xA8, 0x51, 0xBC, 0x3D, 0x93, 0x44, 0x70, 0xBC, + 0xC7, 0x96, 0x5F, 0x3E, 0x7C, 0x6E, 0x2B, 0xBE, 0xFE, 0x11, 0x9B, 0xBD, + 0x1A, 0x78, 0xD1, 0x3D, 0x42, 0x21, 0x31, 0x3F, 0xD9, 0xE1, 0x66, 0x3C, + 0x8D, 0x30, 0x18, 0xBE, 0x8C, 0x72, 0x41, 0xBF, 0x67, 0xEC, 0x22, 0x3C, + 0xB6, 0x04, 0x4E, 0xBD, 0x69, 0x01, 0x63, 0xBE, 0xFD, 0x2B, 0xFF, 0xBD, + 0xDB, 0x1E, 0xBB, 0xBF, 0x2F, 0x4B, 0x05, 0x3D, 0x6D, 0x6E, 0xE3, 0x3E, + 0x54, 0xED, 0xD8, 0xBD, 0x30, 0x73, 0x06, 0xBE, 0x85, 0x9E, 0x13, 0xBF, + 0x79, 0x9C, 0xBF, 0x3D, 0x01, 0x26, 0xFE, 0x3D, 0xBE, 0x4C, 0x53, 0x3D, + 0x37, 0x62, 0x9A, 0x3D, 0x95, 0x32, 0x04, 0x3F, 0xBC, 0x80, 0x3E, 0xBE, + 0x94, 0xDF, 0xB8, 0x3D, 0x0E, 0x31, 0xD9, 0x3C, 0x75, 0x4A, 0xA6, 0x3C, + 0x11, 0xA5, 0x1C, 0xBE, 0x77, 0xFC, 0x9A, 0xBD, 0x5F, 0x10, 0x15, 0xBD, + 0x8F, 0xE7, 0x9D, 0x3B, 0xA0, 0xF4, 0x3D, 0xBC, 0x6E, 0xDB, 0x0E, 0xBB, + 0x67, 0x6B, 0x48, 0x3C, 0x7E, 0xCE, 0x80, 0xBD, 0x80, 0xC0, 0x33, 0xBD, + 0xAB, 0x3B, 0x66, 0xBE, 0xB4, 0x55, 0x0F, 0xBC, 0xD6, 0x0D, 0x04, 0x3C, + 0x37, 0x9E, 0x52, 0x3E, 0x4F, 0x17, 0xA7, 0x3C, 0x4B, 0xDC, 0x26, 0xBD, + 0x9A, 0xF7, 0xCF, 0x3E, 0xD3, 0xEC, 0x03, 0xBE, 0xA0, 0xC0, 0x9E, 0x3C, + 0x7E, 0x7C, 0x00, 0x3E, 0x19, 0x6F, 0xE2, 0x3D, 0x89, 0x69, 0x9C, 0xBC, + 0x04, 0xC6, 0xF5, 0x3C, 0x1B, 0xCD, 0xA0, 0xBE, 0xDB, 0xEB, 0xA1, 0xBE, + 0x03, 0x6B, 0x70, 0xBD, 0x12, 0xC2, 0xD1, 0xBE, 0x18, 0xEC, 0xF2, 0xBE, + 0xE6, 0x53, 0x78, 0x3F, 0x95, 0x8F, 0x5D, 0xBF, 0x11, 0xF6, 0x09, 0x3E, + 0x6D, 0x75, 0xA5, 0x3C, 0x37, 0xBE, 0x85, 0x3E, 0xFD, 0x0F, 0xA1, 0x3E, + 0xE6, 0xF8, 0x70, 0x3E, 0x59, 0xF8, 0x09, 0x3E, 0xBA, 0x5C, 0xCC, 0xBE, + 0x77, 0x20, 0x1D, 0x3E, 0x57, 0xEB, 0xD5, 0xBE, 0x17, 0x02, 0x7E, 0x3F, + 0xD6, 0x89, 0xA8, 0xBE, 0x00, 0x34, 0x67, 0x3E, 0xAD, 0x6D, 0xD0, 0xBE, + 0x90, 0x92, 0xFE, 0x3B, 0x22, 0x67, 0xB9, 0xBE, 0xC5, 0x55, 0x36, 0xBF, + 0xA5, 0xB1, 0xB6, 0xBD, 0xB0, 0x2E, 0xD8, 0x3E, 0xB8, 0x53, 0x14, 0xBE, + 0xCC, 0x45, 0xBD, 0xBC, 0x63, 0xB6, 0x29, 0xBF, 0x00, 0x65, 0x3A, 0xBE, + 0x7F, 0xCF, 0x0A, 0xBF, 0x76, 0xA1, 0x21, 0xBF, 0x3B, 0x49, 0xD1, 0xBD, + 0xAC, 0xA2, 0x3A, 0xBF, 0x15, 0xB7, 0x74, 0x3E, 0x8D, 0x66, 0x0E, 0x3F, + 0x1F, 0x46, 0x80, 0x3D, 0xFB, 0x2F, 0x02, 0x3B, 0xE0, 0x28, 0x35, 0xBD, + 0xF2, 0xBD, 0xDD, 0xBD, 0x89, 0xC3, 0xBD, 0x3C, 0x74, 0x44, 0x13, 0xBD, + 0x30, 0x65, 0x17, 0xBD, 0x94, 0x64, 0xC8, 0xBB, 0x4A, 0xC9, 0x1F, 0xBD, + 0xBF, 0xFA, 0x9C, 0xBC, 0x10, 0x52, 0x16, 0xBB, 0xCC, 0xAC, 0x09, 0x3D, + 0x8B, 0xE7, 0x0F, 0x3D, 0x78, 0xEF, 0x06, 0xBE, 0x95, 0x6D, 0x09, 0xBD, + 0x2D, 0xFA, 0x8D, 0xBA, 0x70, 0x70, 0x5D, 0x3D, 0xF9, 0x5F, 0xA8, 0xBC, + 0xEB, 0x80, 0xF1, 0x3B, 0xBE, 0x9A, 0x12, 0xBD, 0xF3, 0x34, 0x29, 0xBD, + 0x91, 0x38, 0xE1, 0x3C, 0xFF, 0x02, 0xAB, 0x3D, 0x34, 0xAA, 0x12, 0xBE, + 0xEA, 0x23, 0xF2, 0xBD, 0xD6, 0xB0, 0x39, 0xBD, 0x82, 0xA0, 0x19, 0xBD, + 0xD0, 0x7A, 0xE6, 0xBB, 0xCD, 0x8F, 0xFE, 0xBC, 0x26, 0x67, 0x17, 0xBF, + 0xE1, 0xFD, 0xC3, 0xBD, 0x29, 0x48, 0x8F, 0xBC, 0x86, 0x89, 0x43, 0x3E, + 0x0A, 0x18, 0x3F, 0x3C, 0x91, 0x4D, 0x25, 0x3F, 0xCE, 0x47, 0x5F, 0xBF, + 0x04, 0x9B, 0x3E, 0x3E, 0x12, 0x1A, 0x18, 0x3E, 0x96, 0x93, 0xBB, 0xBD, + 0x92, 0xA9, 0xAF, 0x3D, 0x34, 0x75, 0x10, 0xBD, 0x3C, 0x9D, 0x24, 0xBF, + 0xB1, 0xAD, 0x16, 0x3C, 0x1B, 0x95, 0xB0, 0x3C, 0x21, 0x86, 0x21, 0xBD, + 0xBD, 0xB0, 0xF3, 0x3B, 0x7F, 0x96, 0x27, 0xBE, 0x05, 0xFF, 0x13, 0x3E, + 0x87, 0xDE, 0x54, 0xBD, 0x92, 0x91, 0x96, 0x3C, 0xB3, 0x05, 0x62, 0xBE, + 0xEF, 0xF9, 0x65, 0x3F, 0x15, 0x3E, 0xCC, 0xBD, 0xA0, 0xD7, 0xAE, 0x3D, + 0x2D, 0xB5, 0xFA, 0x3E, 0xDD, 0x8B, 0x17, 0xBF, 0x7D, 0xD5, 0x4D, 0x3C, + 0xF5, 0x97, 0xA4, 0x3E, 0x7B, 0xF7, 0xE7, 0x3C, 0xDF, 0x39, 0x43, 0xBF, + 0x4D, 0xDD, 0x8F, 0x3C, 0x74, 0xF4, 0x34, 0xBE, 0xD4, 0x4B, 0x9B, 0xBF, + 0x12, 0x78, 0xFF, 0x3C, 0x0A, 0x1D, 0x52, 0x3D, 0x89, 0xE5, 0xF3, 0x3C, + 0x89, 0x4B, 0xEB, 0x3A, 0x87, 0x01, 0x4E, 0x3D, 0xD0, 0xB0, 0x18, 0xBC, + 0xB2, 0xAF, 0xB2, 0xBC, 0xD3, 0xE8, 0xD6, 0xBB, 0x2D, 0x39, 0x43, 0xBD, + 0xDB, 0x41, 0x9B, 0xBC, 0xA6, 0x6B, 0xD4, 0xBA, 0xA5, 0x2B, 0xEA, 0x3D, + 0x9B, 0x25, 0x8C, 0xBC, 0x93, 0xB0, 0xC4, 0x3A, 0x52, 0xB3, 0xAC, 0xBD, + 0x0D, 0x9E, 0xA6, 0xBD, 0x59, 0x27, 0xE0, 0x3C, 0xDA, 0x90, 0xCF, 0xBC, + 0xC9, 0x7E, 0x03, 0x3C, 0xDD, 0x1C, 0xAA, 0x3D, 0x57, 0xC0, 0xAC, 0x3D, + 0x4B, 0x7B, 0xE7, 0xBC, 0x3B, 0xC8, 0x7F, 0xBD, 0x0C, 0xF8, 0xCD, 0xBD, + 0x4D, 0x91, 0x07, 0xBD, 0xBD, 0x47, 0xE5, 0xBC, 0x43, 0xEA, 0x40, 0xBB, + 0x1E, 0x61, 0x15, 0xBC, 0x22, 0x81, 0x81, 0x3D, 0x8E, 0xAF, 0x02, 0x3D, + 0x57, 0x95, 0x1C, 0x3E, 0xB2, 0x15, 0x28, 0xBD, 0x7D, 0x14, 0x39, 0xBD, + 0xDC, 0xDE, 0x09, 0xBF, 0xEE, 0xF9, 0x73, 0xBE, 0xE8, 0x47, 0xFE, 0xBE, + 0x6D, 0xA0, 0x80, 0x3E, 0x4F, 0x29, 0x1F, 0xBD, 0x84, 0xC6, 0x0D, 0x3D, + 0xC4, 0x62, 0x00, 0x3E, 0xE1, 0xC9, 0xA1, 0x3D, 0xBE, 0x7B, 0x46, 0x3D, + 0xB3, 0xF9, 0x8A, 0x3F, 0xC1, 0xED, 0x80, 0xBE, 0xBC, 0x1E, 0x35, 0xBC, + 0xB7, 0x3E, 0x81, 0x3E, 0x9D, 0xCD, 0x31, 0x3E, 0x10, 0x50, 0x63, 0x3F, + 0xA6, 0xDB, 0xB2, 0xBE, 0xF5, 0xA0, 0x3B, 0xBF, 0x6B, 0x6B, 0x67, 0xBB, + 0x20, 0xE2, 0x08, 0x3E, 0xF0, 0x69, 0x5D, 0x3E, 0xEF, 0xFC, 0xCD, 0x3D, + 0x97, 0xE3, 0x67, 0xBE, 0x57, 0x9C, 0xEB, 0x3D, 0xEF, 0x25, 0x42, 0xBD, + 0xCB, 0x4E, 0x0D, 0xBF, 0x59, 0xBA, 0x2A, 0xBE, 0x6F, 0x9F, 0x89, 0xBD, + 0x2A, 0xB3, 0x1D, 0x3F, 0xEB, 0x97, 0x10, 0x3D, 0x2B, 0x03, 0x04, 0x3F, + 0x9A, 0x16, 0x99, 0x3F, 0xDC, 0xFD, 0x94, 0xBE, 0x93, 0x7E, 0x4F, 0x3E, + 0xF2, 0x1A, 0x6B, 0x3D, 0x39, 0x35, 0x4E, 0x3D, 0xB3, 0x29, 0x47, 0x3E, + 0xEE, 0x91, 0xED, 0xBC, 0x88, 0x33, 0xB7, 0x3D, 0xD2, 0x57, 0x6D, 0x3F, + 0x48, 0xBF, 0x90, 0xBD, 0x9B, 0x72, 0x90, 0x3D, 0xBB, 0x70, 0xB9, 0xBE, + 0x51, 0x3D, 0x1F, 0x3E, 0xFC, 0xC3, 0x94, 0x3A, 0x2C, 0xBD, 0x78, 0xBE, + 0x5A, 0x34, 0x3C, 0xBF, 0xB1, 0x32, 0xBF, 0xBE, 0xA2, 0xFF, 0x6C, 0x3D, + 0x9C, 0x52, 0x7F, 0xBE, 0x1B, 0x2B, 0x85, 0xBD, 0xFF, 0xF2, 0xE0, 0x3E, + 0xED, 0xDC, 0x91, 0x3F, 0xA5, 0xE0, 0xF1, 0x3D, 0x07, 0x31, 0x67, 0x3D, + 0x6A, 0xC8, 0xF5, 0x3D, 0xF9, 0x54, 0x28, 0x3F, 0x53, 0xD0, 0xBD, 0x3F, + 0x9B, 0x5D, 0x42, 0x3E, 0x73, 0x53, 0xA0, 0x3E, 0x96, 0x14, 0x1B, 0xBF, + 0x6C, 0xA3, 0x8B, 0xBE, 0xCA, 0x5B, 0x83, 0xBE, 0xB4, 0xDA, 0x1C, 0xBF, + 0xE1, 0x50, 0x89, 0xBE, 0x2A, 0x93, 0x77, 0xBE, 0x2C, 0x12, 0x97, 0xBE, + 0xA6, 0x56, 0x43, 0xBE, 0xBD, 0xB9, 0x48, 0xBE, 0x34, 0xA5, 0x46, 0xBE, + 0xDB, 0xE2, 0x27, 0xBF, 0x6C, 0x3C, 0x1F, 0xBF, 0x10, 0x64, 0x7D, 0x3E, + 0xB9, 0xB0, 0xD7, 0xBE, 0xD3, 0x7C, 0x26, 0xBD, 0xB4, 0x9E, 0x2B, 0x3E, + 0x30, 0x9C, 0x9B, 0x3E, 0xB6, 0xEB, 0x94, 0x3F, 0x67, 0xDF, 0x19, 0x40, + 0x90, 0x57, 0xED, 0x3E, 0xD6, 0xF9, 0x27, 0xBF, 0xA0, 0x16, 0x54, 0x3F, + 0xC2, 0xEB, 0x92, 0x3E, 0x37, 0x2B, 0xFD, 0x3E, 0x89, 0x5B, 0xAE, 0xBE, + 0x6B, 0x17, 0xD7, 0x3D, 0xBA, 0xD1, 0x87, 0x3D, 0xB8, 0x80, 0xB8, 0xBE, + 0xE0, 0x65, 0xF4, 0x3E, 0x06, 0xBA, 0x7E, 0xBE, 0x18, 0x37, 0xCF, 0xBE, + 0x52, 0x26, 0x88, 0xBD, 0x88, 0x89, 0x37, 0xBE, 0x44, 0xE5, 0x0E, 0x3F, + 0x05, 0xCD, 0x87, 0xBB, 0x1C, 0x19, 0x8B, 0xBF, 0xE5, 0x8B, 0xFD, 0x3E, + 0x8B, 0x48, 0xFF, 0x3D, 0x51, 0x75, 0x8D, 0x3D, 0x23, 0x7A, 0x9C, 0xBE, + 0xDE, 0xB8, 0x97, 0xBE, 0x9A, 0x42, 0xC8, 0xBB, 0xBC, 0x92, 0xB1, 0xBD, + 0xAE, 0x98, 0x48, 0xBD, 0x37, 0x1A, 0x8E, 0xBC, 0x4F, 0x7D, 0x98, 0x3E, + 0x02, 0x86, 0xC1, 0xBE, 0x3C, 0x20, 0x90, 0x3D, 0xAE, 0x57, 0x7D, 0x3D, + 0xE3, 0x4F, 0x3D, 0x3E, 0x44, 0x5E, 0x86, 0x3E, 0xD6, 0xA8, 0xDC, 0x3D, + 0xA8, 0x13, 0x83, 0xBE, 0x2F, 0x84, 0x82, 0x3E, 0x66, 0xF8, 0x16, 0x3E, + 0x4B, 0x84, 0xDC, 0xBD, 0x0E, 0xAC, 0xD8, 0x3D, 0xD3, 0xEA, 0xB7, 0xBD, + 0x2F, 0x07, 0xAF, 0x3D, 0xF5, 0x88, 0xD8, 0xBE, 0xAC, 0x5B, 0x8D, 0x3E, + 0xF4, 0x8A, 0x8B, 0x3E, 0x09, 0x5C, 0x7F, 0x3E, 0x74, 0x88, 0xEB, 0xBE, + 0xE8, 0xA3, 0x38, 0xBF, 0xAE, 0xEB, 0x0E, 0x3D, 0xBD, 0x30, 0xA8, 0x3E, + 0x2D, 0xD5, 0x0B, 0xBE, 0x3A, 0xB2, 0x63, 0x3E, 0xD7, 0x21, 0x73, 0x3F, + 0x60, 0x17, 0xF3, 0xBC, 0x4D, 0x36, 0x72, 0xBE, 0xED, 0xA9, 0x9B, 0x3E, + 0xE4, 0x5A, 0xF0, 0xBE, 0x74, 0x57, 0x0C, 0x3F, 0x6D, 0xD9, 0xCA, 0x3E, + 0xE7, 0x2A, 0x46, 0xBE, 0x40, 0x51, 0x9C, 0x3E, 0x00, 0xB3, 0x4E, 0x3E, + 0x4A, 0x8F, 0xD4, 0xBE, 0xE6, 0x5B, 0x1C, 0xBE, 0x4E, 0xA7, 0x83, 0x3E, + 0x6A, 0xB5, 0xC1, 0xBF, 0xDA, 0x9A, 0x19, 0x3D, 0x0C, 0x77, 0xFB, 0x3D, + 0x1F, 0x40, 0xD3, 0xBD, 0x3C, 0x0E, 0x17, 0xBE, 0x8A, 0x3F, 0x82, 0x3F, + 0x9A, 0xA1, 0xBC, 0xBE, 0xDB, 0x5A, 0x91, 0xBC, 0x54, 0x9A, 0xE6, 0xBE, + 0x47, 0xC2, 0x39, 0xBF, 0xF5, 0x35, 0x30, 0xBE, 0x44, 0x08, 0x04, 0xBE, + 0xDE, 0x55, 0xCA, 0x3E, 0xC1, 0xC3, 0xBB, 0xBC, 0x55, 0x4F, 0x17, 0x3C, + 0x7A, 0x8E, 0xF2, 0xBE, 0xDA, 0x0F, 0x29, 0x3F, 0x10, 0xB9, 0x30, 0xBF, + 0x27, 0x07, 0x4E, 0xBE, 0x56, 0x0B, 0xC1, 0x3D, 0xB4, 0x45, 0x53, 0xBE, + 0xAD, 0x18, 0xE8, 0x3E, 0x45, 0x5E, 0x9A, 0x3F, 0xB3, 0x03, 0x6F, 0x3E, + 0x65, 0xEF, 0xC0, 0x3D, 0x9A, 0x47, 0x74, 0x3E, 0xCC, 0x07, 0x81, 0xBE, + 0x7C, 0x8C, 0x97, 0x3D, 0x99, 0xCA, 0x3B, 0x3E, 0xF8, 0x75, 0x0E, 0xBF, + 0x7A, 0xF2, 0x56, 0x3B, 0x16, 0x9A, 0xFA, 0xBD, 0x26, 0x23, 0xDD, 0xBE, + 0x93, 0x79, 0x98, 0xBF, 0x85, 0x65, 0x1D, 0x3D, 0x66, 0xCE, 0xA8, 0x3E, + 0x0D, 0x88, 0x38, 0xBC, 0xCB, 0xF7, 0x39, 0xBE, 0xDB, 0x98, 0x6E, 0x3E, + 0x69, 0x86, 0xD5, 0xBC, 0xB4, 0xE1, 0xDD, 0xBD, 0xC7, 0xB0, 0xA9, 0x3D, + 0xA7, 0x42, 0x84, 0xBE, 0x61, 0xB9, 0x10, 0x3F, 0x5C, 0x3A, 0x92, 0x3E, + 0x33, 0xA1, 0xC7, 0x3D, 0xED, 0x7F, 0x90, 0xBF, 0x01, 0xF7, 0x2E, 0x3D, + 0x42, 0x1A, 0xE1, 0xBE, 0xCE, 0x07, 0x2B, 0xBF, 0x5E, 0xD6, 0xE1, 0xBD, + 0xE9, 0x96, 0xC1, 0xBE, 0x51, 0xD7, 0xB6, 0x3D, 0x5A, 0xDA, 0xD6, 0xBE, + 0xCD, 0x4D, 0xDD, 0xBE, 0xDB, 0x1F, 0x50, 0x3E, 0xAC, 0x62, 0xD5, 0xBE, + 0x4B, 0x0A, 0x71, 0x3D, 0xA5, 0xBD, 0xA4, 0xBE, 0xDC, 0x68, 0xE6, 0x3C, + 0xEE, 0x30, 0xD6, 0xBE, 0xE0, 0x73, 0x06, 0xBF, 0x7B, 0x85, 0xF8, 0xBD, + 0x06, 0x0F, 0x86, 0xBE, 0x08, 0x1D, 0x6B, 0x3F, 0x85, 0xCF, 0x6E, 0x3E, + 0x1E, 0x9C, 0x06, 0xBE, 0x7C, 0x1E, 0x14, 0xBF, 0xC5, 0x98, 0x7C, 0xBD, + 0x51, 0x98, 0xA6, 0xBE, 0x1B, 0x77, 0xBD, 0xBD, 0x3A, 0x6C, 0xAD, 0x3D, + 0xA4, 0x96, 0xD5, 0xBE, 0x35, 0x0E, 0xC4, 0x3F, 0x7B, 0x7D, 0xE3, 0xBE, + 0x9B, 0x6B, 0x42, 0xBE, 0xD7, 0xB0, 0x3F, 0xBE, 0x86, 0x11, 0x78, 0xBE, + 0xF9, 0x01, 0x4D, 0x3F, 0x69, 0x34, 0x85, 0xBE, 0x9B, 0xAE, 0x4E, 0x3F, + 0x70, 0x95, 0x81, 0x3E, 0xAF, 0xF2, 0x66, 0xBE, 0xFD, 0x72, 0xD7, 0x3E, + 0x42, 0x9A, 0xE8, 0xBE, 0x6F, 0xF9, 0x8F, 0xBF, 0x6F, 0x0E, 0x99, 0x3E, + 0x27, 0xCD, 0x01, 0x3E, 0xF7, 0xAB, 0x3F, 0x3E, 0xD6, 0xE4, 0xAB, 0xBE, + 0x4C, 0xBB, 0xB6, 0xBF, 0x58, 0xAC, 0x99, 0x3D, 0x05, 0xAC, 0xB7, 0x3E, + 0x6A, 0xC2, 0xCE, 0xBC, 0x15, 0x41, 0x8F, 0x3A, 0x87, 0x4E, 0x3A, 0x3C, + 0xDE, 0x85, 0x31, 0xBF, 0xD9, 0xCA, 0x33, 0x3F, 0x6B, 0x34, 0x44, 0x3E, + 0xCA, 0x83, 0xD2, 0xBE, 0x7C, 0xBE, 0x32, 0xBD, 0x79, 0x01, 0x63, 0xBF, + 0x76, 0xC0, 0x8E, 0x3C, 0xCD, 0x54, 0x21, 0x3E, 0x0B, 0x74, 0x1C, 0xBC, + 0x76, 0x12, 0x0C, 0x3D, 0xDA, 0x09, 0x84, 0xBE, 0x7B, 0x73, 0x96, 0x3F, + 0x5B, 0x8A, 0x5A, 0x3E, 0xCB, 0x5C, 0x87, 0xBB, 0x33, 0x88, 0xB6, 0xBE, + 0x3E, 0x8F, 0x30, 0xBE, 0x45, 0xCE, 0xD3, 0xBE, 0x29, 0xAB, 0xC3, 0xBE, + 0xB7, 0x68, 0xA3, 0xBD, 0xC2, 0x85, 0x8D, 0x3E, 0x01, 0xA0, 0xA3, 0x3D, + 0x02, 0x5F, 0x68, 0x3E, 0x4B, 0xE5, 0x08, 0x3F, 0xF0, 0x19, 0x13, 0xBF, + 0xA7, 0x2A, 0x87, 0xBD, 0x8B, 0x9E, 0xEE, 0x3E, 0xFC, 0xCF, 0x12, 0xBE, + 0x6C, 0xC9, 0xEE, 0xBE, 0x22, 0xD0, 0x64, 0x3E, 0xB1, 0x41, 0x39, 0xBE, + 0x12, 0x6F, 0xC4, 0xBC, 0xF1, 0x52, 0xE4, 0xBD, 0xE0, 0x0C, 0x29, 0x3F, + 0x89, 0x05, 0xEC, 0xBE, 0x3B, 0xF4, 0xE4, 0xBD, 0x06, 0x7A, 0xC6, 0x3E, + 0x7A, 0xBB, 0x5B, 0x3D, 0xF8, 0x4D, 0xEE, 0x3E, 0x13, 0x89, 0xF4, 0xBE, + 0xB9, 0x55, 0x04, 0x3D, 0x17, 0xDB, 0x0D, 0x3E, 0x4E, 0xB8, 0x11, 0xBE, + 0x01, 0xAC, 0x84, 0x3D, 0xC6, 0xD0, 0x5A, 0xBF, 0x9A, 0x48, 0xD7, 0xBD, + 0x27, 0x58, 0xC7, 0xBE, 0xC3, 0x6C, 0x19, 0x3F, 0xFF, 0xDE, 0xAB, 0x3D, + 0x65, 0x37, 0xCD, 0x3E, 0xED, 0x26, 0xED, 0x3E, 0x2F, 0x15, 0x9A, 0x3C, + 0x73, 0xC6, 0x0A, 0xBE, 0xC2, 0xB0, 0xEB, 0xBE, 0x6F, 0xE7, 0x17, 0x3F, + 0x52, 0xFB, 0xF1, 0xBE, 0xF2, 0x67, 0x11, 0xBE, 0x56, 0x65, 0x10, 0xBF, + 0x4B, 0x9F, 0x7F, 0xBE, 0x23, 0x12, 0x6F, 0x3E, 0x9F, 0x95, 0x27, 0xBF, + 0x32, 0x36, 0x59, 0x3D, 0x96, 0x77, 0x98, 0xBE, 0xBD, 0x11, 0x15, 0x3E, + 0xC4, 0x37, 0x61, 0xBE, 0xA0, 0xF1, 0xE1, 0x3F, 0x66, 0x89, 0x9A, 0xBE, + 0x66, 0xD0, 0x08, 0xBE, 0xBE, 0xEC, 0x0C, 0x3E, 0x6A, 0x69, 0x0B, 0x3E, + 0x9C, 0xFB, 0x1D, 0xBF, 0x9D, 0x33, 0x02, 0xBF, 0x18, 0xED, 0xC3, 0xBE, + 0x58, 0xE0, 0x81, 0xBE, 0x40, 0xDF, 0xAE, 0xBE, 0x6D, 0xDA, 0x3B, 0x3E, + 0x40, 0x54, 0x3E, 0xBF, 0x07, 0xB1, 0x3B, 0xBF, 0x2C, 0x49, 0x29, 0x3F, + 0xCA, 0x35, 0x50, 0xBF, 0x57, 0xA4, 0x26, 0x3E, 0x17, 0x15, 0x5D, 0xBF, + 0xFE, 0x2C, 0x10, 0x3E, 0xF3, 0xDC, 0x36, 0xBF, 0xDF, 0x2D, 0x1E, 0xBE, + 0xEE, 0x1D, 0x97, 0x3D, 0x33, 0x16, 0x65, 0xBE, 0xEB, 0x67, 0x9E, 0xBE, + 0x0D, 0x35, 0xC9, 0xBD, 0x29, 0x2D, 0xA4, 0x3D, 0x4B, 0x6D, 0xFE, 0xBC, + 0x38, 0xD7, 0x16, 0x3E, 0xF7, 0x2E, 0x87, 0xBD, 0x0E, 0xEA, 0x65, 0xBD, + 0x1E, 0x0C, 0x9F, 0x3D, 0x5C, 0x6A, 0xCA, 0xBC, 0x99, 0xC8, 0xAE, 0x3D, + 0x3F, 0x63, 0x55, 0x3E, 0x49, 0xA4, 0x52, 0xBE, 0x66, 0x20, 0x42, 0x3C, + 0xD2, 0x75, 0x0E, 0x3D, 0x31, 0xFB, 0x12, 0xBC, 0x54, 0xE9, 0x0A, 0xBE, + 0x93, 0x08, 0xA6, 0xBB, 0xDC, 0x40, 0xAC, 0xBB, 0xAE, 0x71, 0x12, 0xBD, + 0xDC, 0x5E, 0x98, 0x3D, 0xF2, 0xC2, 0x86, 0x3D, 0x06, 0xF3, 0x67, 0xBE, + 0x5F, 0xE7, 0x2B, 0x3D, 0xA3, 0x00, 0x02, 0xBE, 0x38, 0x0C, 0x84, 0xBD, + 0x2E, 0xCD, 0xB4, 0x3C, 0x83, 0x5E, 0x68, 0xBE, 0xE3, 0xA6, 0x0E, 0x3E, + 0x78, 0xAD, 0x8A, 0x3D, 0xC1, 0xB2, 0x6A, 0x3D, 0xFB, 0x4C, 0xF9, 0xBD, + 0xDE, 0x2A, 0x9D, 0xBC, 0x86, 0x8F, 0x39, 0x3D, 0x7B, 0x94, 0x04, 0xBC, + 0x5A, 0x79, 0x11, 0x3B, 0x85, 0xB0, 0x2C, 0xBC, 0xE5, 0x75, 0x2E, 0x3D, + 0x92, 0xBA, 0xFE, 0xBD, 0x25, 0x3D, 0x85, 0xBD, 0x63, 0xFF, 0xCC, 0xBC, + 0x6B, 0x88, 0x92, 0x3B, 0x85, 0x25, 0xED, 0xBD, 0xAD, 0x3D, 0x32, 0x3E, + 0xF9, 0x8F, 0x02, 0xBE, 0x0E, 0xDB, 0x85, 0xBC, 0xDD, 0x45, 0x3D, 0xBD, + 0xD8, 0xA6, 0xE7, 0x39, 0xFF, 0x46, 0x90, 0x3D, 0xE0, 0xAD, 0x4C, 0xBD, + 0x7C, 0xE4, 0x97, 0xBC, 0x19, 0x0A, 0xC4, 0x3D, 0x1C, 0x91, 0xE2, 0xBB, + 0x4F, 0x18, 0xE3, 0x3D, 0x90, 0x7B, 0x95, 0x3D, 0xF9, 0xB4, 0x1B, 0x3D, + 0xF0, 0xA5, 0x09, 0xBD, 0x4C, 0xEC, 0x08, 0xBE, 0xF7, 0x1A, 0x89, 0x3D, + 0x40, 0x4D, 0xDF, 0xBD, 0xE6, 0xB2, 0x3E, 0x3E, 0x2F, 0xDB, 0x48, 0x3E, + 0x11, 0xB7, 0x7E, 0xBF, 0x82, 0xC3, 0x42, 0xBF, 0xA3, 0x62, 0xE1, 0xBE, + 0x7A, 0xCE, 0x23, 0xBF, 0x23, 0x6E, 0xB1, 0xBE, 0xD4, 0xE6, 0x0C, 0xBF, + 0x8C, 0x72, 0x57, 0xBF, 0xE6, 0x30, 0xAC, 0x3E, 0x76, 0x47, 0xFE, 0xBE, + 0xFA, 0x40, 0xCF, 0xBE, 0xC7, 0x39, 0x18, 0xBE, 0xD5, 0x7E, 0xD3, 0x3E, + 0xCB, 0x0B, 0x81, 0xBE, 0x22, 0x31, 0x50, 0x40, 0x5C, 0x1D, 0x64, 0x3E, + 0xEE, 0x55, 0xB6, 0xBF, 0x2A, 0x2D, 0x3C, 0x3F, 0xCB, 0xE6, 0xA5, 0x3E, + 0x81, 0x3F, 0x2E, 0xBF, 0xC2, 0x49, 0xAE, 0x3D, 0x1E, 0x40, 0xA3, 0xBE, + 0x31, 0xE2, 0xB0, 0x3E, 0x73, 0xC7, 0xE7, 0xBE, 0x44, 0x28, 0x9D, 0x3E, + 0xEE, 0x0C, 0x89, 0xBF, 0x85, 0x29, 0xE6, 0xBE, 0xF1, 0xCF, 0x4B, 0xBF, + 0x94, 0x2E, 0x6F, 0xBE, 0x5F, 0xDD, 0x99, 0x3F, 0xDF, 0x94, 0xA5, 0xBE, + 0x05, 0xCC, 0x25, 0x3E, 0x78, 0x39, 0x83, 0x3E, 0xDF, 0x0C, 0x3F, 0xBC, + 0xED, 0xE3, 0xB6, 0x3C, 0xC9, 0xF3, 0xE2, 0xBC, 0x3A, 0xF2, 0xC0, 0xBC, + 0x70, 0x2E, 0x14, 0x3C, 0xFF, 0x16, 0x27, 0xBD, 0x29, 0xD3, 0x24, 0xBD, + 0x62, 0x3E, 0x6F, 0xBD, 0x52, 0x83, 0x79, 0x3D, 0x65, 0xE0, 0x92, 0x3D, + 0xE1, 0x58, 0x9A, 0xBC, 0xB9, 0xCE, 0x59, 0x3B, 0x21, 0xAB, 0xA3, 0x3D, + 0xBB, 0x2D, 0x98, 0x3D, 0xBC, 0xD4, 0x5B, 0x3D, 0x9D, 0x97, 0xAC, 0x3C, + 0x6E, 0xA3, 0x85, 0x3C, 0xEA, 0xB6, 0xAC, 0xBB, 0xD6, 0xC6, 0x82, 0xBD, + 0x38, 0xFD, 0x4A, 0xBC, 0x49, 0xE0, 0x5D, 0xBB, 0x8B, 0x01, 0x1F, 0xBB, + 0xD1, 0xE8, 0xB4, 0x3D, 0x52, 0x39, 0xA3, 0xBD, 0x18, 0x48, 0x04, 0xBE, + 0x8A, 0xE0, 0x0F, 0xBC, 0x95, 0x8C, 0x54, 0xBB, 0x4C, 0x68, 0xB2, 0x3C, + 0x5D, 0x21, 0x80, 0xBD, 0xE8, 0xF7, 0xD2, 0xBD, 0x78, 0xE1, 0x08, 0xBD, + 0xFD, 0x6B, 0xE0, 0x3B, 0xEC, 0x61, 0xA4, 0xBD, 0x71, 0x22, 0x2D, 0x3C, + 0x39, 0x3E, 0x2E, 0xBD, 0x18, 0x13, 0x3B, 0x3B, 0xF7, 0x65, 0x4F, 0xBC, + 0xD2, 0xDE, 0x5A, 0xBB, 0x97, 0x62, 0x1E, 0x3C, 0x50, 0xC2, 0x38, 0x3C, + 0x21, 0x43, 0xBF, 0xBC, 0xCA, 0x66, 0x3E, 0x3C, 0xCE, 0xFA, 0x49, 0xBC, + 0xDD, 0xE5, 0xAE, 0x3C, 0x48, 0x2B, 0x22, 0x3D, 0xE4, 0xD5, 0x35, 0xBC, + 0x19, 0xED, 0x02, 0x3A, 0xE5, 0x06, 0xAF, 0x3B, 0xCF, 0xC1, 0x04, 0xBB, + 0x5D, 0xA0, 0x79, 0xBC, 0x37, 0x02, 0xA6, 0xBD, 0x4E, 0xB1, 0x84, 0x3D, + 0x66, 0x99, 0x78, 0x3C, 0x1F, 0x83, 0xCB, 0xBC, 0x83, 0x25, 0x35, 0x3C, + 0x91, 0x11, 0x56, 0x3C, 0x62, 0x68, 0x7C, 0x3B, 0xBB, 0x7B, 0x1E, 0xBD, + 0x1E, 0x50, 0x0A, 0x3C, 0x9C, 0x29, 0x8E, 0x3B, 0x68, 0x8C, 0x0F, 0xBB, + 0x54, 0x56, 0x28, 0x3E, 0x0F, 0x80, 0xAD, 0x3C, 0xD1, 0xC1, 0x26, 0xBD, + 0x5B, 0x0F, 0x57, 0x3E, 0x5A, 0xD9, 0x89, 0x3D, 0xFF, 0xBC, 0xC3, 0xBE, + 0x1C, 0x80, 0xC1, 0x3B, 0x33, 0x9D, 0x40, 0x3D, 0x4B, 0x0D, 0x6A, 0xBD, + 0xD5, 0x59, 0xFE, 0x3D, 0xE2, 0x0B, 0xBD, 0x3D, 0x3B, 0x35, 0x6E, 0x3D, + 0x75, 0x06, 0xE1, 0xBD, 0x83, 0xB5, 0x05, 0x3D, 0x53, 0x92, 0x27, 0xBC, + 0xD5, 0xC5, 0xB6, 0x3C, 0x02, 0x46, 0xAF, 0xBD, 0xAA, 0x90, 0x1B, 0x3E, + 0xD2, 0x42, 0x89, 0x3D, 0x0C, 0x4E, 0xA3, 0x3D, 0xBF, 0xC2, 0x38, 0xBC, + 0xFB, 0xDB, 0x44, 0x3E, 0x46, 0x50, 0x24, 0x3E, 0xA7, 0x0A, 0x0F, 0x3D, + 0xFC, 0x3C, 0x6E, 0xBD, 0x80, 0x4D, 0xCA, 0x3C, 0x34, 0x88, 0xE0, 0xBC, + 0x32, 0xDB, 0x40, 0x3F, 0xCC, 0x09, 0x92, 0xBD, 0x97, 0xAD, 0x59, 0x3E, + 0xA5, 0x16, 0x0D, 0xBE, 0x8D, 0xD3, 0x6A, 0xBD, 0xBB, 0xCC, 0x47, 0x3D, + 0xEB, 0xF5, 0x05, 0xBE, 0x96, 0x20, 0x8F, 0x3C, 0x04, 0x04, 0x1D, 0x3C, + 0x0C, 0x2F, 0x37, 0xBA, 0x73, 0x06, 0xCD, 0xBC, 0xB8, 0xDC, 0x8D, 0x3C, + 0xBA, 0xF5, 0x77, 0xBB, 0x15, 0x2A, 0x18, 0xBD, 0x6A, 0x2C, 0xC0, 0xBB, + 0xEB, 0x19, 0x09, 0xBD, 0xF7, 0x14, 0x90, 0xBC, 0x7F, 0x47, 0x17, 0x3D, + 0x61, 0x48, 0x92, 0x3C, 0xDD, 0x48, 0xDB, 0xBB, 0x5D, 0x8D, 0x1A, 0x3D, + 0x53, 0x78, 0x3A, 0x3C, 0x26, 0x1E, 0x25, 0x3C, 0x00, 0xEC, 0x72, 0xBB, + 0x9F, 0x67, 0x81, 0xBC, 0x1A, 0x73, 0x42, 0xBA, 0xE3, 0xC5, 0x76, 0xBC, + 0xA3, 0x73, 0xBB, 0x3C, 0xB3, 0xD4, 0xAB, 0xBB, 0xF0, 0xA5, 0x75, 0x3B, + 0x3A, 0x87, 0xA4, 0x3C, 0x38, 0x8A, 0x16, 0xBD, 0xB2, 0x4D, 0xC8, 0xBC, + 0x96, 0x9A, 0xF8, 0xBB, 0x80, 0x70, 0x85, 0xBC, 0xEE, 0xB6, 0xB9, 0xB9, + 0xCD, 0x7A, 0x17, 0xBC, 0x9C, 0x36, 0xEE, 0x3D, 0x52, 0x83, 0x64, 0x3C, + 0x88, 0xCE, 0xF9, 0xBB, 0x5C, 0x7E, 0x88, 0x3E, 0x46, 0x53, 0x43, 0x3D, + 0x52, 0x29, 0xED, 0xBE, 0x4C, 0xF4, 0xAD, 0x3E, 0xEC, 0xBF, 0x7F, 0x3E, + 0xB0, 0x63, 0x6A, 0x3E, 0x98, 0x46, 0x73, 0xBE, 0x4A, 0x03, 0x94, 0xBE, + 0xA7, 0xA7, 0x29, 0x3E, 0x3B, 0xFE, 0xA1, 0x3E, 0x3D, 0x0B, 0x76, 0x3E, + 0x1C, 0x45, 0x9E, 0xBD, 0xA2, 0xCD, 0xAA, 0xBE, 0xBA, 0x9F, 0xD9, 0xBE, + 0x5C, 0xFC, 0xA5, 0xBE, 0xA5, 0x1B, 0x21, 0xBD, 0xA1, 0x7A, 0x0F, 0xBE, + 0x12, 0x8F, 0x85, 0x3D, 0x93, 0x02, 0x64, 0x3E, 0xFB, 0xA4, 0xBF, 0x3E, + 0xB2, 0x0C, 0x0F, 0x3E, 0x87, 0xBE, 0x4D, 0xBE, 0x05, 0xF3, 0xCA, 0x3D, + 0x2A, 0xD5, 0x65, 0xBE, 0x63, 0x04, 0x0C, 0xBE, 0xAD, 0xD6, 0x20, 0x3E, + 0xA0, 0x8F, 0x99, 0x3F, 0xB7, 0x3D, 0x89, 0xBE, 0x4A, 0x57, 0x40, 0x3E, + 0x4C, 0xBE, 0x8E, 0x3E, 0x5E, 0xBA, 0x03, 0xBD, 0xAC, 0x73, 0xC1, 0xBE, + 0x20, 0xCA, 0xE2, 0x3D, 0x49, 0x12, 0x9D, 0xBC, 0x46, 0x3E, 0x2A, 0x3E, + 0xC1, 0xE6, 0x68, 0xBE, 0xEF, 0xCB, 0x84, 0xBD, 0x31, 0x46, 0x8A, 0xBE, + 0xBC, 0xA5, 0xD5, 0xBE, 0x84, 0xE0, 0x8E, 0x3D, 0x76, 0x9A, 0x24, 0xBE, + 0x54, 0x9D, 0x0C, 0xBE, 0x51, 0xFA, 0x00, 0xBF, 0xA5, 0x75, 0x53, 0xBD, + 0xBF, 0x10, 0x09, 0xBF, 0xF0, 0xA0, 0xCF, 0xBE, 0x9C, 0xF8, 0x4A, 0xBF, + 0x26, 0xD6, 0x42, 0xBE, 0xE5, 0xD1, 0x6C, 0x3E, 0xD0, 0x64, 0xFD, 0xBD, + 0x66, 0x1B, 0xA7, 0xBC, 0x4C, 0xD8, 0x82, 0x3D, 0x84, 0xE3, 0x13, 0x3E, + 0xA0, 0x87, 0x27, 0xBE, 0x77, 0xD5, 0x81, 0x3E, 0xB1, 0x80, 0x88, 0xBE, + 0x56, 0x3F, 0x57, 0x3F, 0x81, 0xFD, 0x28, 0x3E, 0xFE, 0x0C, 0xAB, 0x3E, + 0x60, 0x0E, 0x85, 0xBF, 0xDC, 0x72, 0x4A, 0xBE, 0x3E, 0x68, 0x34, 0xBD, + 0xA0, 0x16, 0xB4, 0x3D, 0x7B, 0x6A, 0x72, 0xBE, 0xB9, 0xA9, 0x2C, 0xBC, + 0xD2, 0x88, 0x1D, 0xBD, 0x0B, 0x89, 0x23, 0x3E, 0x73, 0x16, 0x51, 0x3E, + 0xAE, 0x33, 0x2C, 0xBC, 0x33, 0x00, 0x90, 0xBD, 0x24, 0xD7, 0x8E, 0xBD, + 0xD1, 0x53, 0x4F, 0xBE, 0x0C, 0x8B, 0x8B, 0xBD, 0x91, 0x21, 0xED, 0xBC, + 0xB6, 0x07, 0xDE, 0xBD, 0x35, 0x91, 0xD5, 0x3C, 0x6D, 0x2F, 0x3A, 0x3E, + 0xA3, 0x10, 0x90, 0xBE, 0xFF, 0xE6, 0xCB, 0x3D, 0xB0, 0xC9, 0x26, 0x3C, + 0xA9, 0x30, 0x57, 0x3E, 0xF3, 0xCE, 0xE2, 0x3C, 0x6E, 0x05, 0xC7, 0xBD, + 0x89, 0x10, 0x93, 0xBD, 0xD3, 0x49, 0xA6, 0x3D, 0x02, 0xD1, 0x2A, 0x3D, + 0x08, 0x1F, 0x5B, 0x3E, 0x95, 0x49, 0x2D, 0xBD, 0x07, 0x47, 0x41, 0xBC, + 0x1B, 0x35, 0x81, 0x3D, 0xE4, 0xBA, 0xF4, 0x3D, 0xCD, 0x4B, 0xEF, 0x3D, + 0xAF, 0x81, 0x8E, 0x3D, 0x63, 0xB5, 0x2D, 0x3F, 0x96, 0x9A, 0xAB, 0xBE, + 0xC2, 0x08, 0x04, 0x3D, 0xAC, 0x41, 0xF2, 0x3B, 0xBA, 0xD9, 0xCA, 0x3C, + 0x26, 0x77, 0xF3, 0xBB, 0x46, 0xFC, 0xAD, 0xBD, 0xFB, 0x16, 0xDF, 0x3B, + 0x1C, 0x52, 0x2E, 0xBC, 0x22, 0x8D, 0x09, 0xBD, 0x83, 0xDF, 0x18, 0x3C, + 0xC6, 0xC3, 0x07, 0x3D, 0xBF, 0x44, 0x6C, 0x3C, 0x39, 0xE8, 0x8B, 0x3C, + 0x33, 0x03, 0x9D, 0x3C, 0xFC, 0xF2, 0x21, 0x3C, 0xFA, 0x77, 0x99, 0xBC, + 0xC0, 0x48, 0x12, 0x3B, 0x9F, 0xEF, 0x3D, 0xBB, 0x1C, 0xA1, 0x87, 0xBC, + 0x88, 0xFE, 0x3F, 0xBC, 0x66, 0xCA, 0xD5, 0x3B, 0xAB, 0x38, 0xE9, 0xBB, + 0xFC, 0x60, 0xB5, 0xBB, 0xE7, 0xB3, 0x47, 0xBC, 0x3E, 0xCD, 0x9B, 0x3D, + 0x43, 0x64, 0x16, 0xBD, 0x13, 0xA1, 0x6E, 0xBD, 0x6A, 0x64, 0x4E, 0xBC, + 0x0C, 0x4E, 0xBB, 0xBC, 0x7D, 0xF7, 0xFA, 0xB9, 0xD9, 0x29, 0x8A, 0xBB, + 0x83, 0xD2, 0x60, 0xBE, 0xB0, 0x24, 0x87, 0xBD, 0x30, 0xF7, 0xBC, 0x3B, + 0xE1, 0xF9, 0xD3, 0xBD, 0xC8, 0xE7, 0xDB, 0xBD, 0x0E, 0x62, 0x2C, 0xBE, + 0x9A, 0xB8, 0x09, 0xBE, 0x35, 0x19, 0x94, 0xBD, 0x08, 0x11, 0x0A, 0x3E, + 0x36, 0xDD, 0x22, 0xBA, 0xC1, 0x28, 0x28, 0x3D, 0xA3, 0xE9, 0xB6, 0x3C, + 0x58, 0xFE, 0x2E, 0xBE, 0x38, 0x69, 0xD1, 0x3C, 0x4F, 0x8F, 0x91, 0x3B, + 0xC3, 0xEB, 0x1C, 0xBE, 0x5D, 0x28, 0x2E, 0xBE, 0x51, 0x34, 0xBB, 0x3C, + 0xB4, 0x68, 0x9D, 0x3D, 0xB2, 0x26, 0x08, 0xBF, 0x23, 0x0D, 0x37, 0xBC, + 0xE8, 0xFD, 0x9C, 0x3D, 0xEF, 0x86, 0x13, 0x3F, 0x9A, 0xEB, 0xB4, 0x3C, + 0x11, 0xB2, 0xC8, 0x3C, 0x8E, 0x09, 0x79, 0x3F, 0x26, 0xCD, 0x7B, 0x3D, + 0x5C, 0x67, 0xCF, 0x3E, 0x4F, 0xE0, 0x11, 0x3E, 0xEF, 0x91, 0x80, 0xBC, + 0x19, 0xF2, 0x55, 0xBF, 0xA9, 0x4E, 0x81, 0xBC, 0x59, 0xB0, 0x3C, 0x3E, + 0xB0, 0x43, 0xA7, 0x3D, 0x0A, 0x82, 0x60, 0xBD, 0x05, 0xC6, 0x89, 0x3E, + 0xB8, 0xC6, 0xBE, 0x3D, 0x92, 0xFB, 0x44, 0x3F, 0x3E, 0xD8, 0x1D, 0x3E, + 0xD7, 0x18, 0xC0, 0x3D, 0xD1, 0x5E, 0x8A, 0xBE, 0x91, 0x75, 0xDA, 0xBD, + 0x23, 0xB3, 0x98, 0xBD, 0xCA, 0xE3, 0xC6, 0xBE, 0x72, 0xA5, 0x7E, 0x3E, + 0xFB, 0xDE, 0x3F, 0xBF, 0xFE, 0x6C, 0xCF, 0x3D, 0x5F, 0xA4, 0x2D, 0x3E, + 0xF3, 0x59, 0xB2, 0xBD, 0x2F, 0xBE, 0xEC, 0x3E, 0x03, 0xF0, 0xE4, 0xBD, + 0xCF, 0x6E, 0x4B, 0xBE, 0xEC, 0xB2, 0x6C, 0x3D, 0xFC, 0x4C, 0x2D, 0x3E, + 0xD5, 0x25, 0x90, 0x3E, 0x8A, 0x33, 0xD0, 0x3D, 0x78, 0xFB, 0x61, 0xBE, + 0xD8, 0xFD, 0x63, 0x3C, 0xD8, 0x7B, 0x83, 0xBF, 0x7A, 0xE8, 0x80, 0x3F, + 0xA0, 0xC8, 0x08, 0x3F, 0xAB, 0xC0, 0x13, 0x3F, 0xC4, 0x76, 0x44, 0x3D, + 0x47, 0x1E, 0xDB, 0x3D, 0xE3, 0x60, 0xD8, 0xBE, 0x01, 0x74, 0x75, 0xBE, + 0xD8, 0x3A, 0xA9, 0xBE, 0x13, 0xE0, 0x89, 0xBD, 0x8E, 0x05, 0x6F, 0xBF, + 0x51, 0x7B, 0x9D, 0xBF, 0xC4, 0x18, 0x7B, 0x3E, 0x7D, 0xB8, 0xC5, 0x3C, + 0x92, 0x5E, 0x0F, 0x3D, 0xE8, 0xA1, 0x1F, 0x3E, 0xEF, 0x61, 0x93, 0x3E, + 0xB5, 0x8D, 0x72, 0x3C, 0xEA, 0xEE, 0x1E, 0x3E, 0x27, 0xC8, 0x9C, 0xBE, + 0x26, 0x08, 0x5C, 0xBC, 0x5C, 0x8F, 0xA4, 0xBE, 0x14, 0x2E, 0x3D, 0x3F, + 0xF2, 0xD7, 0x88, 0x3E, 0x1A, 0xDF, 0x1C, 0xBC, 0x3E, 0x6F, 0xCC, 0x3E, + 0x04, 0x6A, 0x47, 0x3C, 0x6C, 0xE1, 0x3F, 0xBE, 0xBD, 0x3A, 0xAD, 0xBD, + 0xCB, 0x1D, 0x99, 0xBC, 0xE8, 0xFB, 0xA7, 0x3D, 0x4F, 0xF3, 0x91, 0x3E, + 0xF2, 0x73, 0x4E, 0xBC, 0xB3, 0xE9, 0x59, 0x3F, 0x21, 0xF3, 0xF6, 0x3D, + 0x37, 0x4B, 0x87, 0x3E, 0x08, 0x23, 0x53, 0x3F, 0xF0, 0xDA, 0x96, 0x3C, + 0xA1, 0x13, 0x09, 0xBF, 0x01, 0x9F, 0x0F, 0xBF, 0xB6, 0xD8, 0x84, 0x3D, + 0x63, 0x1C, 0x87, 0xBD, 0x07, 0x9D, 0x3A, 0xBE, 0xAA, 0x0C, 0x74, 0xBF, + 0xBB, 0x50, 0xC1, 0xBD, 0xAF, 0x18, 0xD4, 0xBE, 0x41, 0xC3, 0x38, 0x3E, + 0xB0, 0xFD, 0x7C, 0xBE, 0xF3, 0x18, 0xD2, 0x3E, 0x7C, 0x5F, 0x55, 0x3E, + 0x0D, 0xC0, 0x0A, 0xBF, 0xB5, 0xA5, 0xC4, 0xBD, 0xD3, 0xC3, 0xB5, 0x3D, + 0x4B, 0xE6, 0xBE, 0xBE, 0x31, 0xAF, 0x41, 0x3F, 0x50, 0x06, 0xB5, 0xBD, + 0x73, 0xC4, 0x78, 0xBE, 0x07, 0x61, 0x10, 0xBF, 0x48, 0x13, 0xFF, 0x3D, + 0x3C, 0xDE, 0x8E, 0x3E, 0x45, 0x8C, 0x80, 0xBC, 0x6C, 0x38, 0xE5, 0x3D, + 0x41, 0xC1, 0xD8, 0xBD, 0x6C, 0xB3, 0x7A, 0xBE, 0x83, 0xB1, 0x3E, 0xBE, + 0x93, 0xA7, 0x14, 0x3F, 0xF4, 0x46, 0x45, 0x3D, 0xF1, 0x7E, 0x7B, 0xBE, + 0x8D, 0x26, 0x4B, 0xBE, 0x8B, 0xB5, 0x67, 0xBE, 0x6C, 0xB1, 0xA0, 0xBD, + 0x13, 0x0B, 0x70, 0x3E, 0xF4, 0x01, 0x7C, 0xBE, 0x18, 0x30, 0x2D, 0xBB, + 0x23, 0x52, 0x07, 0xBD, 0x4D, 0xEB, 0x57, 0x3D, 0x3F, 0xAA, 0x78, 0x3D, + 0xE4, 0x2A, 0xA4, 0xBC, 0xB1, 0x05, 0x10, 0xBD, 0x1C, 0x69, 0x1B, 0xBC, + 0xA2, 0x8B, 0x6B, 0xBD, 0xE6, 0x3B, 0xBB, 0x3D, 0x32, 0x7A, 0x63, 0x3E, + 0x22, 0x9D, 0x07, 0xBE, 0xE0, 0x48, 0xA0, 0x3D, 0x2A, 0x49, 0xF1, 0x3D, + 0x8E, 0x1C, 0x69, 0xBE, 0x63, 0xEC, 0x2D, 0x3E, 0x12, 0x72, 0xB5, 0x3D, + 0x20, 0xE8, 0x26, 0x3D, 0x3C, 0x3E, 0x02, 0xBC, 0x4C, 0xBD, 0x5B, 0xBE, + 0x08, 0x13, 0x49, 0xBE, 0x7F, 0xF9, 0xB1, 0x3C, 0x98, 0x15, 0xBF, 0x3D, + 0xDA, 0xCB, 0xA9, 0xBC, 0x0E, 0x0A, 0x21, 0xBC, 0xEE, 0x1A, 0x1E, 0xBE, + 0xFE, 0x15, 0xD5, 0xBD, 0x61, 0x56, 0x35, 0x3E, 0x1E, 0x78, 0xAE, 0x3D, + 0x95, 0x4F, 0x91, 0xBD, 0x5C, 0xB7, 0x3C, 0xBF, 0xA8, 0x43, 0x8E, 0xBD, + 0x12, 0x73, 0x38, 0xBE, 0x0E, 0x49, 0xA4, 0x3E, 0x1A, 0xF4, 0xC4, 0xBD, + 0x5D, 0x03, 0x35, 0xBE, 0xAB, 0xB9, 0x0A, 0x3E, 0x6B, 0x36, 0x48, 0xBB, + 0x83, 0x1E, 0xCD, 0xBB, 0xC9, 0x23, 0x2A, 0xBD, 0x9A, 0x3D, 0xDF, 0xBD, + 0x33, 0x1A, 0x31, 0xBE, 0x11, 0xED, 0x1D, 0xBE, 0x2C, 0x8B, 0x8A, 0x3D, + 0x01, 0xC0, 0xCA, 0x3A, 0x3E, 0xEE, 0xCF, 0xBC, 0xE1, 0x6A, 0xE4, 0xBE, + 0xF7, 0xE9, 0xE1, 0xBD, 0xD9, 0xA9, 0x8E, 0xBD, 0x20, 0x8E, 0xF9, 0x3D, + 0x83, 0x86, 0x30, 0x3C, 0x03, 0x27, 0x59, 0x3E, 0x09, 0x13, 0xE9, 0xBD, + 0xA4, 0x1A, 0xD3, 0xBC, 0x9A, 0x0F, 0x0E, 0x3E, 0x6B, 0x1C, 0x75, 0xBD, + 0xDD, 0x3C, 0x2E, 0x3E, 0x05, 0xE3, 0x7F, 0x3E, 0x77, 0x2F, 0xB0, 0xBC, + 0x75, 0xA9, 0x81, 0x3D, 0x1A, 0x3A, 0x28, 0x3C, 0x15, 0x8E, 0x9B, 0x3D, + 0xA1, 0x8D, 0xB9, 0x3E, 0x61, 0xAF, 0x6C, 0xBD, 0x34, 0x2D, 0x16, 0x3E, + 0x89, 0x0F, 0x75, 0xBE, 0x9E, 0xDA, 0xB9, 0x3D, 0xE5, 0x82, 0xBD, 0xBD, + 0x88, 0x67, 0x65, 0xBE, 0x56, 0xAD, 0xBE, 0xBC, 0x81, 0x05, 0x62, 0x3D, + 0x23, 0x5D, 0x39, 0xBD, 0xB6, 0x8C, 0x30, 0x3D, 0xEC, 0x95, 0xE3, 0x3D, + 0xE1, 0xB4, 0xC6, 0x3D, 0xE9, 0x4E, 0x85, 0x3B, 0xD8, 0x34, 0x02, 0x3D, + 0x0D, 0xCA, 0xBD, 0x3C, 0xE0, 0x43, 0x62, 0xBC, 0xDA, 0x5F, 0x78, 0xBD, + 0xE3, 0xA6, 0x06, 0x3D, 0x0B, 0xDF, 0xE9, 0xBC, 0xEB, 0xB8, 0x57, 0xBC, + 0xD9, 0x28, 0x58, 0xBE, 0x36, 0xB6, 0x52, 0xBD, 0x80, 0x4C, 0x31, 0x3B, + 0xBB, 0xC4, 0x8B, 0xBD, 0x5F, 0xB2, 0x44, 0x3D, 0xD8, 0xAD, 0x3E, 0xBC, + 0x26, 0x25, 0x68, 0xBE, 0x83, 0xF2, 0xA3, 0xBD, 0x8E, 0x08, 0x91, 0xBD, + 0xE5, 0xDC, 0xDC, 0x3C, 0x3F, 0x1E, 0xC5, 0xBB, 0xD6, 0x56, 0xDD, 0xBD, + 0x45, 0xFD, 0x2D, 0x3D, 0xEB, 0xE7, 0xB5, 0xBC, 0x81, 0x2B, 0xC6, 0xBC, + 0x78, 0x2D, 0x3E, 0x3C, 0xCA, 0xF0, 0xB1, 0x3C, 0x6F, 0x66, 0x17, 0xBD, + 0x8F, 0xF4, 0xD2, 0x3B, 0x54, 0xF3, 0x73, 0x3D, 0xE3, 0x8D, 0xD7, 0x3C, + 0x60, 0xA1, 0x94, 0x3D, 0xFA, 0xEB, 0x3B, 0xBC, 0xE3, 0x35, 0xD0, 0xBD, + 0x0E, 0x1C, 0xC3, 0x3C, 0x37, 0xC0, 0x7C, 0xBC, 0x57, 0xD2, 0xA9, 0xBD, + 0xAC, 0x0A, 0xCE, 0xBC, 0x01, 0x9C, 0x2D, 0xBD, 0xA0, 0x80, 0x4D, 0xBD, + 0x43, 0xE0, 0xA1, 0xBB, 0x06, 0xD3, 0x7E, 0x3B, 0x11, 0x4A, 0x6A, 0x3D, + 0x8E, 0x30, 0x66, 0x3D, 0x4F, 0xEC, 0x14, 0xBC, 0x22, 0xAB, 0xDC, 0xBC, + 0x83, 0x34, 0xDF, 0xBD, 0xBC, 0x8C, 0xAA, 0x3D, 0xBF, 0x1C, 0x11, 0x3E, + 0x5D, 0xCB, 0xB6, 0xBC, 0x86, 0xCB, 0x3A, 0xBA, 0x63, 0xA7, 0x25, 0x3D, + 0xFA, 0xE7, 0xC1, 0x3D, 0xAF, 0x50, 0x2F, 0x3F, 0xB9, 0x9B, 0x0C, 0xBC, + 0xDE, 0x2D, 0x76, 0x3C, 0xCF, 0x59, 0x07, 0x3D, 0xE8, 0x54, 0x7B, 0x39, + 0x44, 0x0C, 0x23, 0xBE, 0xD7, 0x16, 0x45, 0xBE, 0x6E, 0x88, 0x7A, 0x3D, + 0x99, 0x72, 0x16, 0x3C, 0x79, 0xCD, 0xDD, 0xBD, 0x47, 0x2B, 0x46, 0xBC, + 0xA8, 0xF4, 0xF3, 0x3D, 0x68, 0x13, 0x34, 0xBD, 0x6C, 0x63, 0x41, 0xBC, + 0x78, 0xB3, 0x20, 0xBD, 0x47, 0x6B, 0x57, 0x3D, 0x37, 0x18, 0x40, 0x3D, + 0xCB, 0xBC, 0xD8, 0xBD, 0x00, 0x11, 0x0A, 0x3B, 0xAA, 0xA3, 0x30, 0x3C, + 0x10, 0xB2, 0x31, 0x3B, 0xC5, 0xE3, 0x98, 0x3D, 0x71, 0xF1, 0x39, 0xBD, + 0x4D, 0xBD, 0x89, 0x3C, 0xEA, 0xF5, 0xF4, 0xBC, 0xBC, 0x08, 0x58, 0x3E, + 0x9A, 0x72, 0xCB, 0xBD, 0xDD, 0x53, 0x9E, 0xBE, 0x28, 0xA3, 0x55, 0x3D, + 0x55, 0x5B, 0xC6, 0xBD, 0x09, 0xFA, 0xF2, 0x39, 0xE1, 0x78, 0x80, 0xBD, + 0xE2, 0xF6, 0xD7, 0xBE, 0xA6, 0x36, 0x3A, 0xBE, 0x56, 0x91, 0x94, 0x3D, + 0xB4, 0x0F, 0x90, 0x3C, 0x27, 0x42, 0x72, 0x3E, 0xFE, 0x5C, 0x93, 0x3F, + 0x2D, 0xCA, 0xAE, 0x3E, 0x50, 0xA1, 0x25, 0x3E, 0x6F, 0x80, 0x2C, 0x3E, + 0xFF, 0x77, 0x11, 0xBD, 0x06, 0x7C, 0xAA, 0x3E, 0x7F, 0x46, 0x64, 0xBC, + 0x6D, 0xA5, 0x8F, 0xBE, 0x32, 0xCB, 0x43, 0x3D, 0x83, 0xF0, 0x09, 0x3D, + 0x69, 0xBB, 0xEC, 0xBD, 0x31, 0x5F, 0xF8, 0xBD, 0x84, 0x54, 0xED, 0x3D, + 0x50, 0x34, 0x52, 0xBE, 0xD5, 0x17, 0x21, 0xBE, 0xA3, 0x50, 0xB7, 0x3B, + 0x79, 0xBB, 0x1E, 0x3A, 0xCE, 0x27, 0xD9, 0x3E, 0xF9, 0x1D, 0xEC, 0xBC, + 0x57, 0x1A, 0xCC, 0xBB, 0xDA, 0xA5, 0xC3, 0xBE, 0x7C, 0x43, 0x1C, 0x3F, + 0x6A, 0xD0, 0xC8, 0xBE, 0x20, 0x9D, 0xC8, 0x3D, 0x4E, 0xC4, 0xA9, 0x3E, + 0x9B, 0x82, 0x69, 0xBE, 0x0B, 0x94, 0x1B, 0x3E, 0x66, 0xAB, 0xCC, 0xBE, + 0x6D, 0x34, 0x92, 0x3E, 0xFA, 0x2C, 0x6B, 0xBD, 0xD7, 0xD2, 0x43, 0xBD, + 0x67, 0x9F, 0x11, 0xBD, 0xFC, 0x8A, 0x50, 0x3B, 0x63, 0x67, 0xF9, 0xBD, + 0x0E, 0xE4, 0x26, 0x3D, 0xC2, 0x04, 0x86, 0xBD, 0x6C, 0xA5, 0x87, 0xBD, + 0x9B, 0xA2, 0x4A, 0xBD, 0xE8, 0x0C, 0x36, 0x3D, 0x27, 0x7E, 0xD1, 0x3D, + 0x16, 0x1E, 0x16, 0x3D, 0xC0, 0xD8, 0x37, 0xBD, 0x76, 0x68, 0xE1, 0x3D, + 0x91, 0x70, 0xC8, 0xBC, 0x4D, 0xF8, 0x24, 0xBD, 0xE4, 0x90, 0x1E, 0x3D, + 0x71, 0x42, 0x52, 0xBD, 0xDC, 0x3F, 0x1B, 0xBC, 0x28, 0xFC, 0x5A, 0xBD, + 0x3F, 0x8A, 0x3F, 0x3D, 0xA3, 0x35, 0x00, 0x3D, 0xB1, 0xD5, 0xBD, 0xBD, + 0x1C, 0xC4, 0x1A, 0x3E, 0xEF, 0x72, 0x54, 0xBE, 0x29, 0x9C, 0x46, 0xBE, + 0xD9, 0x11, 0x4A, 0x3D, 0x83, 0x82, 0xBA, 0xBD, 0x84, 0x60, 0x77, 0xBD, + 0x80, 0x99, 0x21, 0x3D, 0xB6, 0x4F, 0xE8, 0xBE, 0x6D, 0x19, 0x3F, 0xBC, + 0x4C, 0x50, 0xF2, 0x3C, 0x40, 0x55, 0xDD, 0xBC, 0xFE, 0x7F, 0x15, 0xBD, + 0xE5, 0x8C, 0xFA, 0x3C, 0x3D, 0x91, 0x22, 0x3D, 0x92, 0x7C, 0x8F, 0xBC, + 0x66, 0x34, 0xBC, 0xBB, 0x15, 0xFC, 0x3D, 0x3D, 0x0A, 0x71, 0x48, 0xBC, + 0xAA, 0x92, 0xB9, 0xBD, 0x7F, 0x8F, 0x39, 0x3C, 0xAA, 0xC5, 0xB8, 0x3B, + 0x0D, 0xB4, 0xC6, 0x3B, 0xB4, 0x6A, 0x40, 0xBD, 0x12, 0xF5, 0x1A, 0x3D, + 0x61, 0xF7, 0x3B, 0x3C, 0x08, 0x4A, 0x9E, 0xBB, 0x7E, 0x09, 0xAA, 0xBB, + 0x90, 0xB2, 0x6E, 0xBA, 0x74, 0xDB, 0x2B, 0xBC, 0x62, 0xE8, 0xAE, 0x3C, + 0x5F, 0x4B, 0xD3, 0xBC, 0xFD, 0x08, 0x09, 0x3D, 0x52, 0x21, 0xBE, 0xBD, + 0x02, 0xEE, 0x58, 0x3D, 0x30, 0x6D, 0x02, 0x3E, 0x2E, 0x05, 0x91, 0xBC, + 0xB3, 0x2B, 0x46, 0x3C, 0xAA, 0x8F, 0x4E, 0xBD, 0xD3, 0x04, 0x39, 0x3D, + 0x09, 0x08, 0xE8, 0x3C, 0xD2, 0x67, 0xA4, 0x3D, 0x69, 0xD8, 0x0C, 0xBC, + 0xA9, 0x69, 0x2A, 0x3F, 0x54, 0xA8, 0x6C, 0x3F, 0xE9, 0x4E, 0x5C, 0x3E, + 0x4A, 0x26, 0x59, 0xBF, 0x3A, 0x75, 0x11, 0xBE, 0xA9, 0xCF, 0xC9, 0xBE, + 0x35, 0x8C, 0x71, 0xBE, 0x26, 0xC8, 0x09, 0x3D, 0x92, 0xD3, 0xDD, 0xBD, + 0xFF, 0x2A, 0x0A, 0x3F, 0x53, 0x3B, 0x98, 0x3F, 0x95, 0xF2, 0xCF, 0x3B, + 0xD7, 0xC2, 0x9F, 0x3E, 0x27, 0x90, 0xCD, 0x3E, 0xFC, 0xCC, 0xCF, 0x3E, + 0x0C, 0x4E, 0x0F, 0xBE, 0x18, 0xDE, 0x4D, 0x3E, 0x1C, 0x29, 0x1E, 0xBC, + 0x8C, 0xAE, 0x72, 0x3F, 0x07, 0xF7, 0xEE, 0x3E, 0xB1, 0x37, 0xB0, 0xBE, + 0x4A, 0x01, 0xE5, 0xBD, 0x40, 0x23, 0x27, 0xBF, 0xC4, 0xCD, 0x80, 0x3D, + 0x97, 0xF8, 0x81, 0xBD, 0x52, 0x4F, 0xE0, 0x3D, 0x4C, 0x37, 0xE9, 0xBD, + 0x7C, 0x94, 0x6B, 0x3F, 0xE0, 0x72, 0x81, 0x3E, 0xEF, 0xC8, 0x2A, 0x3C, + 0x33, 0xA8, 0x65, 0xBF, 0x8A, 0x35, 0x64, 0x3E, 0x57, 0x45, 0x1F, 0xBE, + 0x9C, 0xA3, 0x9B, 0xBE, 0x20, 0x9E, 0xD8, 0xBE, 0x59, 0x00, 0x69, 0x3E, + 0x27, 0x7B, 0xA1, 0xBD, 0xD0, 0x57, 0x53, 0x3D, 0xA5, 0x81, 0x59, 0x3E, + 0xA3, 0x96, 0x45, 0x3E, 0x03, 0xF8, 0x6A, 0x3D, 0x79, 0x8F, 0xBD, 0x3D, + 0xCB, 0xE8, 0x22, 0xBE, 0x5D, 0x48, 0x9B, 0x3B, 0x57, 0x24, 0x03, 0x3E, + 0x43, 0x10, 0x2A, 0xBD, 0xFB, 0x89, 0xA9, 0xBD, 0xFF, 0x2D, 0xB5, 0x3D, + 0xDE, 0x4B, 0x3B, 0xBE, 0xF9, 0x1B, 0x3F, 0xBB, 0xBE, 0x92, 0xBE, 0x3D, + 0x44, 0x83, 0x19, 0xBD, 0x2C, 0x00, 0x91, 0xBC, 0x72, 0xDC, 0xCF, 0x3D, + 0xC3, 0x74, 0xB0, 0xBE, 0xAA, 0xEE, 0x1C, 0x3E, 0xB8, 0xBA, 0x35, 0xBE, + 0xEF, 0x6D, 0xE9, 0x3D, 0x2D, 0x1E, 0xFC, 0xBC, 0x38, 0x3B, 0xA2, 0x3D, + 0x09, 0x54, 0xE7, 0xBB, 0x5A, 0x04, 0xCE, 0xBE, 0x9E, 0xFD, 0xEF, 0xBD, + 0x8D, 0xFC, 0xBA, 0x3D, 0x71, 0xC5, 0x27, 0xBE, 0xBD, 0x65, 0x55, 0x3E, + 0xA2, 0x38, 0x16, 0xB9, 0xC8, 0xC6, 0x92, 0xBE, 0x03, 0xD4, 0x8D, 0xBD, + 0x14, 0x11, 0x96, 0x3E, 0x08, 0x2C, 0x08, 0xBE, 0x55, 0xE2, 0x0C, 0xBE, + 0x89, 0x02, 0x4A, 0x3D, 0xE6, 0x55, 0xFF, 0xBE, 0x6B, 0x71, 0x6F, 0x3D, + 0xB7, 0x22, 0x9C, 0xBD, 0xF3, 0xFE, 0x32, 0x3E, 0x84, 0xBE, 0x02, 0xBF, + 0x2B, 0xF3, 0xDC, 0xBE, 0x1D, 0x94, 0xEB, 0xBC, 0x31, 0x6D, 0x2D, 0x3E, + 0xD7, 0x6F, 0x32, 0xBD, 0x50, 0xD1, 0xA5, 0xBD, 0x9C, 0x9A, 0xF9, 0x3D, + 0xF3, 0xF4, 0x8B, 0x3D, 0x62, 0x35, 0xC1, 0xBD, 0xC7, 0xBB, 0x09, 0x3E, + 0xDA, 0xC8, 0xA7, 0x3E, 0x0F, 0x27, 0xF7, 0xBD, 0xB6, 0x62, 0x14, 0x3E, + 0xF9, 0xBC, 0x13, 0xBE, 0xBD, 0x67, 0x80, 0x3E, 0xD7, 0xBD, 0x24, 0xBE, + 0x0B, 0x3D, 0x54, 0xBF, 0xCB, 0xE4, 0x65, 0xBE, 0x7B, 0xD5, 0xEC, 0xBD, + 0x17, 0xF3, 0xEB, 0x3D, 0x63, 0x50, 0x18, 0x3F, 0x89, 0xE1, 0x2C, 0x3E, + 0xB0, 0xD5, 0xE3, 0xBE, 0xE6, 0x80, 0x1E, 0xBC, 0xB2, 0x72, 0x96, 0x3E, + 0x36, 0x89, 0xCB, 0x3C, 0xD7, 0x4E, 0x0D, 0xBF, 0x24, 0xF9, 0xE2, 0x3D, + 0xE5, 0x71, 0xB5, 0x3E, 0xC0, 0xBE, 0x45, 0xBE, 0x7C, 0x11, 0xC8, 0x3C, + 0x9D, 0x86, 0xE8, 0xBA, 0x66, 0x48, 0x5A, 0xBE, 0xEB, 0x05, 0x7C, 0x3D, + 0xCE, 0x09, 0x98, 0xBD, 0xE4, 0xF6, 0x95, 0xBF, 0xF1, 0x7D, 0xDB, 0x3C, + 0x2C, 0x78, 0x66, 0xBF, 0x76, 0xD5, 0xCB, 0x3E, 0xDF, 0x55, 0xED, 0x3C, + 0xD2, 0x2C, 0x4C, 0xBD, 0x3A, 0xF2, 0x8E, 0xBE, 0xE8, 0x60, 0xDD, 0x3E, + 0x31, 0xA3, 0x01, 0x3E, 0x4E, 0xBF, 0xAC, 0xBE, 0xB8, 0xD2, 0xB1, 0xBE, + 0x75, 0xC9, 0x09, 0xBE, 0xA3, 0x17, 0xA3, 0xBC, 0x6E, 0xCC, 0x2C, 0x3F, + 0xEC, 0xD6, 0x94, 0x3E, 0x05, 0x6A, 0xA2, 0xBE, 0x56, 0xEE, 0x80, 0xBE, + 0xF8, 0xF2, 0x96, 0x3E, 0x15, 0xC0, 0x09, 0xBF, 0xBF, 0xA0, 0x19, 0xBF, + 0x23, 0xC2, 0xB1, 0x3E, 0xE2, 0x2E, 0xF8, 0xBD, 0x5D, 0xED, 0xD5, 0xBD, + 0x7B, 0xC9, 0x5A, 0xBE, 0x09, 0xE7, 0x85, 0xBE, 0x75, 0xB4, 0x13, 0xBF, + 0xF3, 0x19, 0xC7, 0xBC, 0x71, 0xFB, 0xFB, 0x3B, 0xB9, 0xC5, 0xBE, 0xBE, + 0xE8, 0x46, 0x92, 0x3E, 0xE2, 0x26, 0xA1, 0x3E, 0xAA, 0x6B, 0xF9, 0xBE, + 0x7E, 0x6A, 0x26, 0xBF, 0x84, 0xC7, 0x3D, 0x3B, 0xBF, 0xF1, 0xB7, 0xBE, + 0x7D, 0x82, 0x85, 0x3F, 0xAD, 0x6A, 0xA3, 0x3D, 0xD3, 0xEA, 0x48, 0xBE, + 0x1E, 0xAF, 0x8D, 0x3F, 0xFB, 0x82, 0x38, 0xBF, 0xD1, 0x89, 0xBF, 0x3E, + 0x5C, 0x94, 0xA1, 0xBD, 0x00, 0xA1, 0xD4, 0x3E, 0x2F, 0xCA, 0xE3, 0x3C, + 0x88, 0x5A, 0x3E, 0x3E, 0xC5, 0x44, 0xFD, 0xBE, 0xF5, 0xC7, 0x02, 0x3F, + 0x2C, 0x47, 0x94, 0xBD, 0x56, 0x6C, 0x0E, 0x3E, 0x0F, 0xD7, 0x83, 0x3E, + 0x9C, 0xBD, 0x21, 0xBE, 0x3B, 0x6B, 0xB8, 0xBE, 0xA5, 0xA4, 0xA2, 0xBD, + 0xA6, 0xF7, 0xC1, 0xBD, 0x0B, 0x29, 0xE4, 0x3D, 0xD5, 0x54, 0x01, 0xBE, + 0x26, 0x32, 0x82, 0xBD, 0xBA, 0xB4, 0x9E, 0xBE, 0x8F, 0x56, 0x00, 0x3E, + 0x23, 0xD8, 0x11, 0xBC, 0x96, 0x5F, 0x7B, 0x3E, 0x91, 0xFD, 0x28, 0x3D, + 0x39, 0x7B, 0x47, 0xBE, 0x3E, 0x8D, 0xAD, 0xBD, 0xDB, 0x7A, 0xF9, 0xBE, + 0x60, 0x25, 0x9A, 0xBC, 0x3A, 0xC6, 0x20, 0xBD, 0x43, 0xC1, 0x53, 0x3F, + 0x97, 0x68, 0xE1, 0x3C, 0xE1, 0x48, 0x82, 0x3D, 0x0E, 0xE8, 0x08, 0xBF, + 0x64, 0x30, 0xB8, 0xBE, 0x86, 0x78, 0xFB, 0x3E, 0xBB, 0x53, 0xE2, 0x3D, + 0xA1, 0x4F, 0x5E, 0xBE, 0xB8, 0x35, 0x41, 0x3D, 0x9E, 0xF8, 0xAC, 0x3D, + 0xFF, 0x6D, 0x80, 0x3F, 0xC7, 0xDF, 0x4E, 0xBE, 0xF1, 0xD7, 0xAA, 0xBC, + 0xCC, 0x36, 0xBA, 0xBD, 0x04, 0x8B, 0x5B, 0xBD, 0xAF, 0xE2, 0x90, 0x3E, + 0x2C, 0xC0, 0x7A, 0x3D, 0x8B, 0x8D, 0x81, 0xBC, 0x1E, 0xB5, 0x2B, 0xBD, + 0xD2, 0xA9, 0x38, 0x3C, 0xD9, 0x1D, 0x5C, 0x3C, 0x42, 0xEA, 0xE4, 0x3C, + 0x16, 0x7F, 0x91, 0x3D, 0x39, 0xF5, 0x28, 0xBD, 0xB2, 0xE6, 0xDC, 0x3B, + 0xDC, 0x90, 0xC2, 0xBB, 0xD2, 0x2C, 0x03, 0x3E, 0xD9, 0x92, 0xC5, 0x3D, + 0xDA, 0xDB, 0x23, 0x3D, 0x8A, 0x0E, 0x45, 0xBD, 0xD0, 0xF4, 0x52, 0xBB, + 0x15, 0x9F, 0xAD, 0xBD, 0x65, 0xAE, 0xC2, 0x3A, 0xF3, 0x2E, 0xB3, 0x3C, + 0xD3, 0x7C, 0x0C, 0x3C, 0x4B, 0x6F, 0x88, 0xBD, 0x50, 0x84, 0xBD, 0x3C, + 0x68, 0x22, 0x06, 0xBD, 0x2E, 0x5A, 0xD8, 0xBC, 0xB7, 0x53, 0x79, 0x3D, + 0x68, 0xEF, 0x74, 0x3D, 0xFA, 0x4E, 0x2B, 0x3C, 0xA0, 0xF4, 0x1B, 0xBE, + 0x67, 0x59, 0x64, 0x3D, 0x1E, 0x66, 0x81, 0x3D, 0x4F, 0xD4, 0x96, 0xBD, + 0x90, 0xE7, 0x06, 0xBD, 0x9D, 0x96, 0x07, 0x3E, 0xDD, 0xE5, 0x8D, 0x3D, + 0xC6, 0x1A, 0x85, 0xBB, 0xD6, 0x4B, 0x8C, 0xBC, 0x74, 0xD6, 0x0E, 0x3D, + 0x87, 0x4D, 0x1F, 0xBD, 0x2F, 0xB1, 0x57, 0xBD, 0xCA, 0xBE, 0x1A, 0x3D, + 0x3A, 0x42, 0x17, 0xBD, 0x7F, 0x2E, 0xC6, 0x3C, 0x29, 0x8D, 0x6D, 0x3B, + 0xD1, 0x6F, 0x05, 0x3E, 0x97, 0x84, 0xAB, 0x3D, 0xA3, 0x87, 0xDE, 0x3C, + 0xED, 0x90, 0x09, 0xBD, 0xE9, 0x41, 0xCA, 0xBB, 0x4A, 0xD9, 0x34, 0xBD, + 0x6A, 0x46, 0xB2, 0x3A, 0x0E, 0x1A, 0xC9, 0xBA, 0xB5, 0xDA, 0xD2, 0x3B, + 0x4D, 0x27, 0x84, 0x3A, 0xBE, 0x10, 0xBC, 0xBC, 0xB6, 0x23, 0x81, 0xBC, + 0x93, 0xE3, 0x6B, 0xBC, 0x65, 0xBB, 0xB0, 0x3C, 0x77, 0x17, 0x41, 0x3D, + 0xC3, 0x0E, 0x7A, 0xBC, 0x74, 0x32, 0x55, 0xBE, 0x38, 0xE7, 0x6F, 0x3D, + 0xB8, 0xBE, 0x84, 0x3D, 0x57, 0xEF, 0xA3, 0xBC, 0xB2, 0xA5, 0xBB, 0xBB, + 0xDB, 0x93, 0x9A, 0xBD, 0x1B, 0x14, 0x48, 0xBB, 0x17, 0x67, 0xC6, 0xBB, + 0x4A, 0x34, 0x73, 0x3D, 0xCD, 0x1E, 0x87, 0x3C, 0x10, 0x28, 0x55, 0x3D, + 0x75, 0x20, 0x05, 0xBD, 0xC9, 0xC1, 0x03, 0xBE, 0x86, 0x48, 0xB4, 0x3C, + 0x21, 0x8C, 0x16, 0xBB, 0x8B, 0x29, 0xB1, 0xBD, 0x7E, 0x32, 0x30, 0xBE, + 0x98, 0xF3, 0x0F, 0xBD, 0xE7, 0x49, 0x62, 0xBD, 0x2F, 0xBB, 0xF0, 0x3C, + 0xF6, 0x9E, 0x8D, 0x39, 0x2A, 0x28, 0x84, 0x3D, 0xCD, 0x03, 0xFE, 0xBC, + 0x61, 0xA5, 0x5C, 0xBC, 0xA2, 0x10, 0xC7, 0x3C, 0x32, 0x26, 0x96, 0xBD, + 0x96, 0x64, 0xF7, 0x3D, 0x62, 0xAD, 0xCA, 0x3D, 0x9A, 0x9E, 0xFF, 0x3C, + 0x80, 0x01, 0x84, 0xBA, 0xBC, 0x1B, 0x5C, 0xBD, 0x91, 0xC6, 0x93, 0x3D, + 0x20, 0x69, 0x61, 0x3D, 0x62, 0x73, 0x21, 0x3D, 0x78, 0xBE, 0xAC, 0x3B, + 0x65, 0x26, 0x08, 0xBD, 0x43, 0x87, 0xD9, 0xBC, 0xA6, 0x2B, 0xE5, 0xBD, + 0xEF, 0x0E, 0xEE, 0x3C, 0x9C, 0xAB, 0x6D, 0xBD, 0xFA, 0x38, 0x67, 0xBB, + 0x18, 0x85, 0x71, 0xBB, 0x61, 0x90, 0xDF, 0x3C, 0x43, 0x43, 0xA1, 0xBD, + 0x12, 0x84, 0xAF, 0xBD, 0xB3, 0xBF, 0xBD, 0xBC, 0xAF, 0x53, 0xC0, 0xBA, + 0xAC, 0x90, 0x1D, 0xBB, 0x94, 0xF0, 0x53, 0xBE, 0x78, 0x22, 0xFD, 0x3C, + 0x57, 0xEA, 0x27, 0xBC, 0x4E, 0xF7, 0xA2, 0x3B, 0x0D, 0xA8, 0x15, 0xBB, + 0xFF, 0xDD, 0x82, 0xBC, 0x35, 0xA4, 0x82, 0xBD, 0xF9, 0x32, 0x86, 0xBB, + 0xA5, 0xC2, 0xAA, 0x3D, 0x7E, 0xE2, 0xC0, 0xBD, 0x85, 0xBD, 0x33, 0x3E, + 0xE4, 0x26, 0x31, 0x3D, 0x0B, 0xFA, 0xFE, 0xBC, 0x3B, 0x67, 0x5C, 0x3D, + 0x01, 0xE3, 0x14, 0xBD, 0x2B, 0x8C, 0x75, 0x3A, 0xA2, 0x41, 0x87, 0x3D, + 0xF8, 0x8F, 0x43, 0x3D, 0xA6, 0x21, 0x9D, 0x3C, 0x5B, 0x1F, 0xB9, 0x3E, + 0x1E, 0x7E, 0x8E, 0xBE, 0xF8, 0x45, 0xFC, 0xBE, 0xB7, 0x2A, 0xC1, 0x3E, + 0x06, 0x9D, 0xCE, 0xBD, 0x63, 0xD0, 0x52, 0x3D, 0xCF, 0x19, 0x33, 0x3E, + 0x51, 0xB9, 0x1A, 0xBE, 0xB2, 0x39, 0x05, 0x3E, 0xDE, 0x2E, 0x0A, 0x3F, + 0x24, 0xE3, 0x66, 0x3C, 0x14, 0xC1, 0xB9, 0x3B, 0xB0, 0x95, 0xB8, 0xBD, + 0xD5, 0xFE, 0x14, 0x3D, 0x8A, 0xD9, 0xDF, 0x3D, 0xD6, 0x14, 0xAE, 0x3D, + 0xBD, 0x55, 0x1A, 0x3D, 0x57, 0x9F, 0x3D, 0xBC, 0x65, 0x4D, 0x30, 0x3E, + 0xD5, 0xB2, 0xB4, 0x3D, 0xA0, 0x1D, 0xC0, 0x3C, 0x26, 0x23, 0xCE, 0x3D, + 0x03, 0x41, 0x5F, 0xBF, 0x5D, 0x53, 0xC3, 0x3D, 0x89, 0x90, 0x7D, 0x3D, + 0x76, 0x34, 0xE3, 0xBC, 0xAC, 0xC3, 0xC6, 0xBD, 0x78, 0x1B, 0x18, 0x3F, + 0xCA, 0x20, 0xA7, 0xBC, 0x0B, 0xF8, 0x20, 0xBF, 0xE3, 0xF0, 0x19, 0x3F, + 0x47, 0xC5, 0x91, 0x3D, 0xF0, 0x3C, 0x48, 0x3E, 0xC6, 0xE8, 0x2E, 0x3E, + 0x88, 0xFE, 0x50, 0xBE, 0x19, 0x00, 0xD8, 0x3D, 0x11, 0x44, 0x6C, 0xBD, + 0x17, 0x20, 0x12, 0x3E, 0x73, 0xE7, 0x2B, 0x3E, 0x97, 0x70, 0x69, 0x3E, + 0x26, 0xB8, 0x63, 0x3D, 0xDF, 0xF6, 0xD6, 0x3D, 0xA4, 0xDA, 0x47, 0xBE, + 0x94, 0xCA, 0x8C, 0x3C, 0x2D, 0x40, 0x56, 0x3E, 0x77, 0xD4, 0x90, 0xBE, + 0xA5, 0x4F, 0x59, 0xBD, 0x99, 0x57, 0xD7, 0x3D, 0x21, 0xB7, 0xCB, 0x3E, + 0x5B, 0xD2, 0xEF, 0xBB, 0x4A, 0xD9, 0x54, 0x3E, 0x79, 0xD2, 0x5B, 0xBE, + 0x01, 0xAD, 0x00, 0xBD, 0x21, 0x5B, 0xAA, 0x3C, 0x39, 0x10, 0xC2, 0xBE, + 0xAB, 0xF2, 0x3E, 0xBE, 0x81, 0xED, 0x31, 0xBE, 0x93, 0xD7, 0xA1, 0x3D, + 0x04, 0xB1, 0x25, 0x3E, 0x74, 0xEE, 0xE5, 0x3E, 0x2F, 0xD7, 0x51, 0x3E, + 0x0A, 0x5E, 0x33, 0x3E, 0x9E, 0x15, 0xC8, 0xBE, 0xD3, 0xC7, 0x1A, 0xBC, + 0xA3, 0x55, 0x8E, 0xBE, 0x2C, 0x48, 0x4D, 0xBF, 0x0C, 0xFB, 0x1D, 0x3F, + 0xF2, 0xE3, 0xB4, 0xBE, 0x15, 0xD4, 0x56, 0xBF, 0x0B, 0x0C, 0xA1, 0x3E, + 0xCA, 0x42, 0xBE, 0xBE, 0x34, 0x38, 0x6A, 0xBE, 0x87, 0x2B, 0xD1, 0xBE, + 0x9C, 0xE0, 0x84, 0xBE, 0x80, 0x14, 0x61, 0xBE, 0xDC, 0xF3, 0x1F, 0xBE, + 0xA0, 0x66, 0x3B, 0x3F, 0x83, 0x7E, 0x1F, 0xBF, 0xB7, 0x03, 0xE8, 0xBD, + 0xB2, 0xB5, 0x4A, 0xBF, 0x7E, 0xE7, 0xA1, 0x3E, 0x5E, 0xE0, 0x85, 0xBC, + 0x17, 0xC0, 0xE3, 0x3E, 0xF4, 0x7E, 0x84, 0xBF, 0x10, 0x7E, 0xE7, 0xBB, + 0xCA, 0xA3, 0xB5, 0xBE, 0xB4, 0x14, 0x79, 0x3F, 0x98, 0xB3, 0x54, 0x3E, + 0xE3, 0x0C, 0x57, 0xBF, 0x4D, 0x26, 0xFD, 0x3D, 0x8A, 0xFC, 0x8D, 0xBE, + 0xB4, 0x11, 0x0B, 0xBF, 0xBE, 0xF3, 0xE3, 0x3E, 0xB4, 0xDE, 0x58, 0xBF, + 0xF8, 0x5D, 0x8F, 0xBE, 0xB1, 0xE9, 0x53, 0x3E, 0x10, 0x39, 0x61, 0x3D, + 0xC5, 0x16, 0x48, 0x3C, 0xF3, 0xA4, 0x91, 0xBC, 0x0F, 0x00, 0x98, 0x3C, + 0xD9, 0x93, 0x30, 0xBC, 0xEA, 0x0F, 0x50, 0x3D, 0x3B, 0x72, 0xDA, 0x3C, + 0x2C, 0x4B, 0xCB, 0x3C, 0x5F, 0xE0, 0x5C, 0xBD, 0x64, 0x4A, 0x8E, 0xBD, + 0xBD, 0xCB, 0x03, 0x3D, 0xC1, 0x02, 0xC7, 0x3C, 0xD5, 0x5F, 0x42, 0xBD, + 0xBF, 0x14, 0x45, 0xBD, 0x60, 0xE1, 0x78, 0xBC, 0x41, 0x22, 0x0B, 0xBC, + 0x7F, 0xD4, 0x33, 0x3D, 0x29, 0x65, 0x69, 0xBC, 0x31, 0x3E, 0x39, 0x3D, + 0x08, 0x0B, 0x60, 0xBD, 0xCF, 0xFB, 0x23, 0xBD, 0xE3, 0xED, 0x50, 0x3D, + 0x21, 0x6D, 0xDF, 0xBD, 0xBE, 0x54, 0xA3, 0x3D, 0xF9, 0xF0, 0x73, 0x3D, + 0x8B, 0x7C, 0x3A, 0xBD, 0x36, 0x7A, 0xA0, 0x3C, 0xC4, 0x34, 0x91, 0x3B, + 0x7B, 0x8C, 0xBD, 0x3C, 0x59, 0x5B, 0xFD, 0x3D, 0x3D, 0xD7, 0x44, 0x3C, + 0xA0, 0x2E, 0xFB, 0xBC, 0x83, 0x83, 0xC3, 0x3D, 0x0B, 0x31, 0x91, 0xBE, + 0xD4, 0xCE, 0xEA, 0x3C, 0x32, 0x9C, 0x0B, 0xBE, 0x46, 0x87, 0x45, 0xBD, + 0x10, 0xF9, 0x57, 0x3C, 0x48, 0x58, 0x34, 0xBD, 0x3E, 0x26, 0xED, 0x3C, + 0xFF, 0x91, 0x3A, 0xBC, 0x2F, 0xD2, 0x9B, 0xBB, 0x29, 0x43, 0x6A, 0x3D, + 0xCD, 0xC5, 0x21, 0x3B, 0xAD, 0x4B, 0x64, 0x3D, 0x35, 0x7B, 0xDC, 0xBC, + 0xA2, 0xEA, 0xFA, 0x3D, 0xAA, 0x30, 0xE2, 0xBC, 0x07, 0x50, 0x93, 0x3D, + 0x79, 0x5E, 0x8D, 0xBA, 0x90, 0x4D, 0x9B, 0x3D, 0xDD, 0x44, 0x80, 0xBD, + 0x6F, 0x97, 0x46, 0xBC, 0x48, 0x1F, 0x1B, 0x3D, 0xFA, 0x53, 0x40, 0xBD, + 0xF9, 0x75, 0x02, 0x3D, 0xA7, 0xEC, 0x68, 0xBE, 0x7E, 0x66, 0x39, 0xBD, + 0xA6, 0xD9, 0xC2, 0xBD, 0xD5, 0x8E, 0x4F, 0x3D, 0xD1, 0x09, 0xE9, 0x3C, + 0x12, 0x40, 0xEA, 0xBE, 0x68, 0x8E, 0xEE, 0x3E, 0x7E, 0xC1, 0x02, 0x3D, + 0x43, 0x28, 0xD1, 0xBD, 0x18, 0xB9, 0xCA, 0xBD, 0x14, 0x5C, 0x9E, 0x3E, + 0x7E, 0x69, 0x3A, 0x3F, 0xD3, 0x82, 0xBA, 0x3E, 0xEC, 0x10, 0xDD, 0x3C, + 0x68, 0xFC, 0x46, 0x3F, 0xDD, 0x59, 0xF2, 0xBE, 0x6B, 0x21, 0x8F, 0x3E, + 0x65, 0x0D, 0xB8, 0x3D, 0x9C, 0xAB, 0x15, 0xBF, 0x89, 0xFC, 0xB9, 0xBD, + 0xED, 0xD0, 0xCA, 0x3E, 0xD3, 0xC1, 0xDF, 0x3E, 0xC4, 0x0E, 0x11, 0xBF, + 0x7A, 0xA3, 0x0B, 0x3E, 0x06, 0x90, 0x05, 0x3F, 0xB6, 0x31, 0xFB, 0xBD, + 0xCB, 0x0D, 0x58, 0x3E, 0xD9, 0xDB, 0x3D, 0xBE, 0xDB, 0xE3, 0x83, 0xBE, + 0xD1, 0x13, 0x93, 0xBE, 0x60, 0x5B, 0xB2, 0xBE, 0x68, 0xDD, 0x15, 0x3F, + 0x82, 0x46, 0x95, 0x3F, 0x41, 0x36, 0xC3, 0x3D, 0x83, 0xF1, 0x37, 0xBD, + 0x69, 0x6C, 0x48, 0x3E, 0x93, 0xCC, 0x32, 0x3D, 0x16, 0x9B, 0x64, 0xBF, + 0x3D, 0xF3, 0xC3, 0xBE, 0x83, 0x7D, 0x6D, 0x3E, 0xF8, 0x67, 0x9A, 0x3D, + 0xE8, 0xAC, 0xE7, 0xBB, 0x71, 0xB2, 0xD2, 0x3C, 0xAB, 0xD8, 0x99, 0xBB, + 0xBF, 0x61, 0x26, 0x3D, 0xA0, 0xEA, 0x12, 0x3D, 0x43, 0x4F, 0x18, 0x3B, + 0x0B, 0x80, 0x65, 0x3D, 0x56, 0x60, 0xFF, 0x3D, 0x25, 0x1D, 0x9E, 0xBD, + 0xE5, 0x4E, 0x80, 0x3D, 0x53, 0xB4, 0x2C, 0x3C, 0xB5, 0xA1, 0x2C, 0xBD, + 0x27, 0x77, 0x7F, 0xBE, 0x7C, 0x00, 0x83, 0x39, 0x3E, 0x01, 0x07, 0xBD, + 0x6A, 0xD0, 0x76, 0x3C, 0x04, 0x56, 0x95, 0x3B, 0xFC, 0xBE, 0x74, 0x3D, + 0xF6, 0x5B, 0x1E, 0xBD, 0x45, 0x40, 0x13, 0xBD, 0x8D, 0xFC, 0x28, 0x3D, + 0xBB, 0xD1, 0xE0, 0xBD, 0xC3, 0xE0, 0x8E, 0x3D, 0x06, 0x94, 0xFE, 0x3C, + 0xE1, 0x83, 0xCD, 0xBD, 0x5A, 0x5F, 0x5D, 0x3C, 0xFC, 0xB3, 0x65, 0x3D, + 0xE4, 0x60, 0x95, 0xBC, 0xA2, 0x63, 0xAE, 0x3D, 0x7D, 0x69, 0x05, 0xBE, + 0xE2, 0x3E, 0x28, 0xBD, 0x63, 0xEC, 0xDE, 0xBC, 0xAD, 0xDE, 0x09, 0xBC, + 0x06, 0x58, 0x17, 0xBD, 0xCA, 0xA9, 0xFD, 0x3D, 0xD4, 0x9C, 0xBE, 0xBC, + 0xAD, 0x86, 0x2B, 0xBC, 0x15, 0xCF, 0x6B, 0x3D, 0x59, 0x22, 0x81, 0xBD, + 0x67, 0xED, 0xD0, 0xBD, 0x58, 0x32, 0x8A, 0xBD, 0xBE, 0x44, 0x07, 0x3D, + 0x35, 0xC9, 0xC8, 0x3B, 0x69, 0x46, 0x8A, 0xB9, 0xDD, 0x93, 0x99, 0x3D, + 0xE5, 0x54, 0x2F, 0xBD, 0x25, 0xB9, 0x84, 0xBC, 0xA1, 0x56, 0x7A, 0x3C, + 0x3E, 0x61, 0x9B, 0xBC, 0xA4, 0xB4, 0xE4, 0x3C, 0xC7, 0xCB, 0xD8, 0x3D, + 0x01, 0x90, 0xB5, 0x3B, 0xFF, 0x54, 0x58, 0xBC, 0x0A, 0xD6, 0x98, 0xBD, + 0xF3, 0x3E, 0x26, 0x3D, 0x2F, 0x94, 0x41, 0x3E, 0xA5, 0x7B, 0x30, 0x3D, + 0x4F, 0xC9, 0x9D, 0xBC, 0x07, 0x57, 0xA2, 0x3C, 0x07, 0x76, 0x69, 0x3D, + 0x6E, 0xB1, 0x4E, 0x3E, 0xCF, 0x05, 0x3F, 0x3D, 0x59, 0x02, 0xBD, 0x3C, + 0xDA, 0x09, 0x4D, 0x3E, 0x9E, 0x35, 0xA8, 0x3D, 0xED, 0x53, 0x11, 0xBF, + 0x38, 0x22, 0x18, 0x3D, 0x4A, 0x3F, 0x93, 0x3D, 0x6D, 0xC5, 0x55, 0xBE, + 0xDE, 0x9D, 0x3E, 0x3D, 0xD0, 0x47, 0x14, 0x3D, 0xEB, 0x47, 0x28, 0xBE, + 0xA7, 0x9D, 0xAE, 0xBC, 0x47, 0xBC, 0x62, 0xBD, 0xE5, 0xBA, 0x32, 0x3E, + 0xF0, 0x51, 0xBD, 0x3D, 0x85, 0x05, 0x98, 0x3C, 0x9D, 0x65, 0xF8, 0xBB, + 0xF2, 0x42, 0x34, 0xBD, 0x65, 0x8F, 0x0E, 0x3E, 0x3A, 0x55, 0x98, 0x3D, + 0xDB, 0x62, 0x20, 0xBC, 0xAA, 0xCE, 0xEE, 0x3D, 0x33, 0xD7, 0xD4, 0xBC, + 0x75, 0xAE, 0x42, 0x3E, 0xD8, 0xE8, 0x8C, 0xBD, 0x7B, 0x7F, 0x76, 0x3D, + 0xEA, 0x06, 0x47, 0x3E, 0x07, 0xA8, 0xA7, 0xBD, 0x27, 0x4E, 0x45, 0x3D, + 0x01, 0x18, 0x04, 0xBE, 0x1C, 0xA5, 0xA1, 0x3E, 0x17, 0x6B, 0x21, 0x3E, + 0x98, 0x28, 0x6E, 0x3E, 0xF4, 0x80, 0x61, 0x3E, 0x4D, 0xCF, 0x93, 0x3D, + 0xC0, 0xBD, 0x47, 0xBE, 0xB7, 0xC3, 0x35, 0x3E, 0x4B, 0x0D, 0x37, 0xBD, + 0xAC, 0x61, 0x0F, 0x3F, 0xC4, 0x02, 0x48, 0x3E, 0xAD, 0x8D, 0x0B, 0x3E, + 0x81, 0xBF, 0x00, 0xBF, 0x07, 0xF3, 0x88, 0x3E, 0xD5, 0xFF, 0x41, 0x3E, + 0x26, 0x77, 0xB6, 0xBD, 0x81, 0x21, 0x31, 0xBE, 0x77, 0x47, 0x91, 0x3C, + 0xDC, 0x91, 0x7E, 0xBF, 0x20, 0x82, 0xE8, 0x3E, 0xC0, 0x00, 0x58, 0x3E, + 0xC1, 0x40, 0xEC, 0xBC, 0xAE, 0x1B, 0x04, 0xBE, 0x8D, 0xE1, 0x5D, 0xBE, + 0x52, 0x5C, 0x0B, 0xBF, 0x1C, 0x4F, 0x21, 0x3E, 0xDB, 0x08, 0x6B, 0xBC, + 0xA7, 0x1A, 0x2C, 0x3E, 0x43, 0xF2, 0x41, 0xBE, 0x3E, 0xB3, 0x2B, 0xBD, + 0xEB, 0x03, 0x53, 0xBE, 0xF1, 0x4A, 0x90, 0xBE, 0x8C, 0x3B, 0x48, 0x3C, + 0x91, 0xA5, 0x92, 0xBE, 0x81, 0xC0, 0xFD, 0xBD, 0xC1, 0xF8, 0x9B, 0x3E, + 0xAE, 0x65, 0x81, 0xBE, 0x03, 0xFE, 0xA0, 0xBE, 0xBF, 0x65, 0x00, 0x3F, + 0x83, 0xD2, 0x8D, 0xBE, 0x93, 0xB3, 0xE4, 0xBD, 0xCA, 0x01, 0x48, 0x3C, + 0x95, 0x3B, 0xE5, 0xBD, 0xF8, 0x90, 0x41, 0xBE, 0xE8, 0xD7, 0xF5, 0xBE, + 0xD8, 0x9F, 0xE6, 0xBC, 0x9A, 0x18, 0x27, 0xBE, 0x76, 0xD5, 0xFC, 0x3E, + 0x0E, 0x22, 0x90, 0xBA, 0x96, 0x9F, 0x1C, 0xBD, 0xFD, 0x7C, 0x19, 0x3D, + 0xE1, 0xD9, 0x9A, 0x3D, 0x09, 0xD1, 0x1E, 0xBE, 0x68, 0xF3, 0x37, 0x3F, + 0xD4, 0xD8, 0x24, 0x3B, 0x86, 0x42, 0xA7, 0xBE, 0x82, 0xEB, 0xCE, 0xBE, + 0x91, 0x8A, 0xBB, 0x3C, 0x14, 0x02, 0xF5, 0xBD, 0x48, 0xE9, 0xF6, 0xBC, + 0x79, 0x73, 0x33, 0xBE, 0xA9, 0x87, 0xA0, 0xBE, 0xB7, 0xC2, 0x3D, 0xBE, + 0x8E, 0x2B, 0x46, 0xBC, 0xF4, 0x23, 0x0D, 0x3E, 0xE8, 0x45, 0x36, 0x3D, + 0x69, 0x49, 0x93, 0xBD, 0x4A, 0x96, 0x2F, 0x3E, 0x5D, 0x33, 0xA0, 0xBD, + 0x7A, 0xD3, 0xE3, 0xBD, 0x8B, 0x63, 0x4D, 0x3F, 0xF5, 0xC0, 0x12, 0xBF, + 0xA4, 0x8F, 0xA6, 0xBE, 0x0C, 0xCD, 0x2B, 0xBD, 0xF1, 0xB1, 0x0A, 0xBD, + 0x7C, 0x61, 0x97, 0xBC, 0x0A, 0xD7, 0x7A, 0x3D, 0x53, 0x5B, 0x4E, 0x3D, + 0x4C, 0xE6, 0x6D, 0x3E, 0xFC, 0xCE, 0x94, 0xBD, 0x36, 0xD1, 0xB2, 0x3B, + 0x46, 0xEB, 0xA6, 0x3D, 0x09, 0x06, 0xBC, 0x3D, 0xC3, 0xF0, 0xB9, 0x3C, + 0x1D, 0x2B, 0x00, 0xBC, 0xE7, 0x04, 0x58, 0xBE, 0x01, 0x4B, 0xBF, 0xBA, + 0xBE, 0xD5, 0xA0, 0xBD, 0x54, 0x1A, 0xFC, 0x3E, 0xBE, 0xDE, 0x1B, 0xBC, + 0xD1, 0xAD, 0x76, 0x3D, 0xBF, 0xC7, 0x25, 0x3E, 0x7E, 0xDE, 0x05, 0x3D, + 0x07, 0x1A, 0x94, 0xBC, 0x5D, 0x9C, 0x95, 0xBC, 0x39, 0x5F, 0xBB, 0xBE, + 0x29, 0xD5, 0x13, 0xBE, 0xC8, 0xB5, 0x09, 0xBD, 0xCA, 0x64, 0x40, 0xBE, + 0xB8, 0x86, 0xA7, 0xBD, 0xD8, 0x8D, 0xC1, 0x3B, 0x0B, 0x2F, 0x35, 0x3D, + 0xF4, 0x15, 0xB1, 0xBD, 0x8E, 0xDA, 0xA2, 0x3D, 0xA8, 0x26, 0xBF, 0x3D, + 0x8E, 0x8D, 0xC7, 0x3C, 0x5D, 0x8F, 0x3C, 0xBD, 0x0B, 0x93, 0x3E, 0xBC, + 0xC8, 0xD5, 0xA6, 0xBD, 0xF4, 0x54, 0x30, 0xBD, 0x2D, 0xE5, 0x28, 0x3E, + 0x0A, 0x0D, 0x3D, 0xBD, 0x5C, 0x25, 0x01, 0xBB, 0x66, 0x02, 0xCB, 0x3C, + 0x2D, 0xE5, 0xB5, 0x3D, 0xD0, 0x53, 0xA3, 0x3C, 0x29, 0x42, 0xF1, 0x3B, + 0x93, 0x2C, 0x25, 0x3C, 0x88, 0xB4, 0xA0, 0xBC, 0x27, 0x0F, 0x16, 0x3D, + 0x99, 0xF6, 0xEB, 0xBC, 0xA6, 0xCC, 0x02, 0x3D, 0xB8, 0xF3, 0xD4, 0x3A, + 0x9C, 0x41, 0x03, 0x3E, 0xCB, 0x37, 0xEA, 0xBD, 0xB6, 0x42, 0x05, 0x3E, + 0x13, 0x11, 0x07, 0x3E, 0x00, 0x6C, 0xD2, 0x3B, 0xC7, 0x2B, 0xFD, 0xBD, + 0x97, 0xF0, 0xB6, 0x3C, 0x05, 0x79, 0x63, 0x3E, 0x8A, 0xA4, 0xE4, 0x3D, + 0x18, 0xA5, 0x01, 0xBE, 0x69, 0x33, 0x26, 0x3C, 0x96, 0xBB, 0x22, 0x3F, + 0x43, 0x1C, 0x8A, 0x3D, 0x75, 0x24, 0xF1, 0x3E, 0x40, 0xF4, 0xC2, 0x3E, + 0x2E, 0x6A, 0x0A, 0xBF, 0x89, 0x6B, 0x6D, 0x3E, 0x26, 0xE0, 0x58, 0x3E, + 0x51, 0xD7, 0xDC, 0xBC, 0x7E, 0x29, 0xD5, 0x3E, 0xB5, 0x4D, 0x67, 0xBD, + 0xD8, 0xF7, 0xB2, 0x3E, 0x92, 0x30, 0x87, 0xBE, 0xB2, 0x75, 0xCD, 0x3F, + 0x0D, 0x18, 0xC9, 0xBE, 0x09, 0x75, 0x82, 0x3E, 0x0F, 0xFC, 0x96, 0x3D, + 0xE2, 0x71, 0x68, 0x3E, 0x5A, 0xC3, 0x57, 0x3F, 0x9B, 0xDD, 0xF4, 0xBD, + 0x61, 0x96, 0x26, 0xBE, 0x15, 0x1A, 0xE1, 0x3C, 0xE9, 0x32, 0x36, 0xBF, + 0x7D, 0x06, 0xCE, 0x3E, 0x7B, 0x3E, 0xE0, 0x3E, 0x1A, 0x90, 0xA1, 0x3D, + 0xDF, 0xEA, 0x85, 0xBD, 0x58, 0xA0, 0x14, 0xBF, 0x8A, 0xF2, 0xB2, 0x3E, + 0x57, 0xFF, 0xB3, 0xBE, 0xCB, 0x61, 0x95, 0xBE, 0x43, 0x81, 0x08, 0x3E, + 0x1E, 0xF3, 0x3A, 0x3D, 0x94, 0x39, 0x88, 0xBF, 0xC4, 0xE9, 0x58, 0xBC, + 0x69, 0xDC, 0x68, 0x3E, 0x36, 0x17, 0xFB, 0xBD, 0xE5, 0xF3, 0x64, 0x3D, + 0xF8, 0x95, 0xDD, 0x3D, 0x42, 0xAD, 0xEC, 0x3E, 0x86, 0x98, 0xDA, 0xBC, + 0xB0, 0x1A, 0xA0, 0x3D, 0x8D, 0xE8, 0xA1, 0xBD, 0x06, 0x77, 0x81, 0x3C, + 0x9C, 0xAF, 0x08, 0x3E, 0xC1, 0x4F, 0x3D, 0xBE, 0xB4, 0x4B, 0x8C, 0xBB, + 0x39, 0x0E, 0xB0, 0x3D, 0x07, 0xAC, 0x9A, 0x3D, 0xD3, 0x6E, 0xD5, 0x3B, + 0x9E, 0xFD, 0x78, 0x3E, 0xF8, 0xA4, 0x8D, 0xBD, 0xBA, 0xD3, 0x76, 0xBC, + 0xAE, 0xDB, 0x32, 0x3E, 0xB1, 0x60, 0x22, 0x3C, 0xA9, 0x09, 0x12, 0x3D, + 0x4D, 0x7D, 0x88, 0xBF, 0xC2, 0x7C, 0x62, 0xBC, 0x8E, 0x18, 0xE0, 0xBD, + 0x6C, 0xFD, 0xD4, 0x3D, 0x65, 0xAE, 0xB5, 0x3C, 0x88, 0xCA, 0x9E, 0x3D, + 0x14, 0x2E, 0xD0, 0x3E, 0x01, 0x20, 0x86, 0xBC, 0xB5, 0x24, 0x7B, 0xBE, + 0x94, 0xAA, 0x04, 0x3F, 0x11, 0xB1, 0x66, 0x3F, 0xED, 0x95, 0x30, 0xBE, + 0x6F, 0xE4, 0x58, 0xBD, 0xC8, 0x79, 0xFB, 0x3D, 0xFA, 0x06, 0xBC, 0x3E, + 0xA5, 0x18, 0x06, 0x3F, 0xD2, 0x82, 0x86, 0xBD, 0x7C, 0x02, 0xDA, 0xBE, + 0x3F, 0x48, 0xC2, 0x3C, 0x5B, 0xBC, 0xD6, 0xBA, 0x92, 0x93, 0x11, 0xBE, + 0x01, 0x5A, 0x36, 0x3E, 0xB2, 0x40, 0x38, 0x3E, 0x7A, 0x24, 0xC4, 0xBD, + 0xAC, 0x40, 0x56, 0x3D, 0x10, 0xAC, 0xDB, 0xBB, 0xD5, 0xD4, 0xE5, 0x3D, + 0x64, 0x51, 0x38, 0xBE, 0x4D, 0x04, 0x44, 0x3B, 0x42, 0xCA, 0xE8, 0xBD, + 0x3F, 0x41, 0x68, 0xBD, 0x59, 0x51, 0xB5, 0x3E, 0xDE, 0x0D, 0x6D, 0x3E, + 0xB3, 0x42, 0x97, 0x3C, 0x1B, 0xE6, 0x61, 0x3F, 0x39, 0x20, 0x94, 0x3E, + 0x7B, 0xB0, 0xA3, 0xBD, 0x8F, 0xFB, 0x7C, 0xBE, 0x96, 0xF8, 0x56, 0x3C, + 0x01, 0x6C, 0x9C, 0x3D, 0xD7, 0xB1, 0xD8, 0xBD, 0xFE, 0x4D, 0xC6, 0xBD, + 0x22, 0x24, 0x3C, 0xBE, 0x68, 0xFE, 0x82, 0x3E, 0x1C, 0xF4, 0x8E, 0x3D, + 0x38, 0x6F, 0x7E, 0xBD, 0x37, 0x34, 0x86, 0xBD, 0x18, 0x02, 0x6F, 0x3D, + 0x60, 0x64, 0x67, 0xBD, 0xB2, 0xCA, 0x51, 0xBC, 0x22, 0x5C, 0x1A, 0x3E, + 0x92, 0xDA, 0x1E, 0x3A, 0xED, 0x10, 0x32, 0xBD, 0xCF, 0xCE, 0xDE, 0xBC, + 0x94, 0x8B, 0x9F, 0x3D, 0xF4, 0xE6, 0xA7, 0xBC, 0xA7, 0x6A, 0xA9, 0xBD, + 0x82, 0x10, 0x62, 0x3B, 0xD7, 0xA4, 0x88, 0xBD, 0xB7, 0xD0, 0x73, 0x3E, + 0x18, 0x2F, 0xDD, 0xBB, 0xBB, 0xC2, 0x91, 0xBD, 0x74, 0x05, 0x2F, 0xBD, + 0x8D, 0xAB, 0x73, 0xBE, 0x99, 0x10, 0x48, 0x3E, 0x7C, 0x84, 0xD6, 0x3C, + 0xBC, 0x03, 0x8D, 0x3D, 0x39, 0x63, 0x0C, 0x3D, 0x06, 0xC7, 0x96, 0x3C, + 0xF1, 0x4D, 0xE1, 0xBD, 0xF8, 0x4E, 0x49, 0x3D, 0x05, 0xC7, 0x8A, 0xBD, + 0x96, 0x79, 0xA6, 0x3E, 0xAE, 0xE9, 0x5A, 0xBD, 0x0A, 0xB9, 0xEC, 0x3D, + 0xC1, 0x26, 0xB2, 0x3E, 0x5A, 0x56, 0x62, 0xBD, 0x34, 0x9A, 0x84, 0x3D, + 0xB9, 0x6C, 0x67, 0xBD, 0x90, 0x20, 0xBE, 0xBE, 0x62, 0xBF, 0x0E, 0xBE, + 0x16, 0xE5, 0x1F, 0xBF, 0xF0, 0xC0, 0xAC, 0x3E, 0x1E, 0x7F, 0xA5, 0xBD, + 0xB6, 0x0D, 0xC0, 0x3D, 0x0D, 0xAD, 0x1B, 0xBF, 0x02, 0x71, 0x79, 0x3E, + 0xC1, 0x20, 0xDF, 0xBE, 0x91, 0x92, 0xC0, 0x3E, 0xD0, 0x18, 0xBE, 0xBD, + 0xB0, 0x5E, 0x94, 0x3E, 0x4C, 0x3A, 0xDE, 0x3E, 0xB3, 0x7C, 0x8A, 0xBD, + 0x3D, 0xAB, 0xF3, 0xBE, 0x77, 0x45, 0xF9, 0x3E, 0xFE, 0xDB, 0x32, 0xBE, + 0xCB, 0x54, 0x51, 0x3F, 0x5E, 0xC0, 0x7F, 0x3D, 0x0A, 0x18, 0x39, 0x3E, + 0x91, 0x39, 0x1E, 0xBF, 0x1B, 0x89, 0xA8, 0x3C, 0xE6, 0x4E, 0x7A, 0x3F, + 0xD2, 0x18, 0x0A, 0x3E, 0xB4, 0x9D, 0x89, 0xBE, 0xA5, 0xC7, 0x10, 0xBD, + 0x3A, 0x76, 0x65, 0xBD, 0xA0, 0x09, 0xFD, 0x3D, 0xD6, 0x87, 0xA6, 0x3D, + 0xAE, 0x42, 0x60, 0xBC, 0x66, 0x03, 0xA8, 0x3C, 0x03, 0x8F, 0x43, 0x3D, + 0x25, 0x12, 0xD7, 0x3C, 0xAE, 0x56, 0x28, 0xBD, 0x13, 0xBD, 0x0D, 0xBD, + 0x7A, 0xD7, 0x09, 0xBD, 0xD6, 0x9C, 0x02, 0xBD, 0x28, 0xDB, 0x44, 0xBD, + 0x88, 0x13, 0x03, 0x3E, 0xE0, 0x6C, 0x44, 0x3C, 0xF9, 0x47, 0x03, 0xBA, + 0x43, 0x0F, 0x80, 0x3C, 0x39, 0xD6, 0xD0, 0x3C, 0x7A, 0x99, 0x31, 0x3C, + 0xA1, 0x72, 0xFD, 0x3C, 0xD6, 0x45, 0x89, 0x3C, 0x7C, 0x51, 0x0F, 0xBC, + 0x39, 0xBD, 0x62, 0xBD, 0x17, 0x96, 0x72, 0x3D, 0xF9, 0xC1, 0xE7, 0x3D, + 0x1C, 0x5B, 0xDD, 0x3C, 0x1A, 0xB7, 0xC7, 0x3C, 0xA9, 0xC1, 0x4D, 0xBD, + 0x68, 0x1C, 0x48, 0x3D, 0x81, 0xD1, 0x80, 0x3C, 0x60, 0x05, 0xC4, 0x3D, + 0xAC, 0xF7, 0x98, 0x3C, 0x4B, 0xD7, 0x86, 0x3E, 0xB2, 0xC4, 0x69, 0xBD, + 0x7A, 0x20, 0x93, 0x3B, 0xD2, 0x8D, 0x89, 0x3F, 0x60, 0x5B, 0xAF, 0xBD, + 0xAD, 0x74, 0x42, 0x3E, 0xF6, 0x31, 0x80, 0x3E, 0x9A, 0xF4, 0xC5, 0x3E, + 0x79, 0x56, 0x1B, 0x3E, 0xE2, 0x7E, 0x20, 0xBD, 0x71, 0x85, 0xC6, 0xBD, + 0xA9, 0x8F, 0x1A, 0xBD, 0x17, 0xE6, 0x2E, 0x3E, 0x07, 0x55, 0x4A, 0x3E, + 0xA2, 0x4C, 0x07, 0x3D, 0x24, 0x87, 0x68, 0x3B, 0xB3, 0x6E, 0x98, 0x3D, + 0xC3, 0xBF, 0x74, 0xBC, 0xD2, 0x10, 0xA3, 0x3D, 0x8A, 0x82, 0x48, 0xBE, + 0x36, 0xF5, 0x82, 0xBD, 0xF2, 0x66, 0x06, 0x3E, 0xA0, 0x3F, 0x13, 0x3E, + 0x99, 0x16, 0x5B, 0x3D, 0x74, 0xA7, 0x17, 0x3F, 0xAF, 0xE1, 0x96, 0x3E, + 0x1A, 0x95, 0x38, 0x3E, 0x6D, 0x9C, 0xAA, 0x3E, 0x13, 0xC7, 0x30, 0x3D, + 0xA9, 0x92, 0x7F, 0x3E, 0x4A, 0x52, 0x64, 0x3E, 0x17, 0x5B, 0xDE, 0x3D, + 0xAC, 0x07, 0x6A, 0xBD, 0x62, 0x83, 0x98, 0xBC, 0xC0, 0x6C, 0x5F, 0xBC, + 0x67, 0x5D, 0x09, 0xBE, 0xE2, 0x28, 0x33, 0xBD, 0x51, 0x3E, 0xA8, 0xBC, + 0xFE, 0x23, 0x2E, 0xBD, 0xD2, 0x96, 0x84, 0x3B, 0x9A, 0x0C, 0x20, 0x3D, + 0x06, 0x9F, 0x66, 0x3D, 0x5D, 0xE6, 0x0D, 0xBC, 0xBE, 0x3C, 0x64, 0x3C, + 0x7A, 0x4B, 0xB7, 0x3C, 0x5C, 0x6D, 0xA7, 0x3D, 0xCA, 0x03, 0xD4, 0xBC, + 0xFD, 0x92, 0x62, 0x3C, 0x2C, 0x4F, 0xE5, 0xBC, 0x9E, 0x09, 0x0D, 0xBC, + 0x99, 0x32, 0x88, 0xBD, 0x7B, 0x67, 0x83, 0xBD, 0xD3, 0x02, 0x66, 0x3B, + 0xEA, 0xCB, 0x34, 0xBD, 0x84, 0x82, 0x37, 0x3D, 0x27, 0x46, 0xAD, 0x3B, + 0xE1, 0x3C, 0x69, 0xBD, 0x87, 0x7D, 0x0E, 0xBD, 0xAE, 0xCC, 0xA0, 0xBC, + 0x6A, 0xDD, 0xAE, 0xBD, 0xA1, 0xC3, 0x5F, 0xBD, 0x41, 0x71, 0x77, 0xBE, + 0x0F, 0xB2, 0x9E, 0xBB, 0xBC, 0x78, 0x0A, 0x3D, 0x05, 0xD0, 0xA4, 0x3E, + 0x31, 0xE6, 0x05, 0xBF, 0x6B, 0x52, 0x6C, 0x3E, 0x2F, 0xC6, 0xCB, 0xBE, + 0x66, 0xA2, 0xC5, 0x3D, 0x99, 0x32, 0x06, 0xBE, 0x08, 0x29, 0x67, 0xBE, + 0x02, 0xDB, 0x4B, 0xBE, 0xD1, 0x09, 0x26, 0xBD, 0x01, 0xAC, 0xA5, 0xBE, + 0xD7, 0x72, 0x95, 0x3E, 0x53, 0x93, 0x89, 0x3B, 0x01, 0xDD, 0x26, 0x3E, + 0xC7, 0x9C, 0x94, 0x3E, 0x99, 0xA1, 0xA7, 0x3E, 0x5D, 0xDB, 0x9C, 0xBC, + 0xC8, 0xB6, 0xA0, 0xBE, 0xD8, 0x16, 0x60, 0xBC, 0x6C, 0x99, 0x2A, 0x3F, + 0x8E, 0x1C, 0xCD, 0x3E, 0xE8, 0x3F, 0x52, 0x3C, 0xDA, 0xD1, 0x01, 0xBD, + 0xED, 0xA4, 0x69, 0xBE, 0xB7, 0xF4, 0x4C, 0xBE, 0x64, 0x32, 0xD4, 0x3D, + 0x59, 0xE9, 0x7B, 0xBE, 0x62, 0x6E, 0x66, 0xBE, 0x9F, 0x9C, 0x55, 0xBE, + 0x9A, 0x51, 0x85, 0x3D, 0xD9, 0xDC, 0x92, 0x3E, 0x0B, 0x6C, 0x95, 0xBE, + 0x86, 0x81, 0x03, 0xBE, 0xF4, 0xD0, 0x34, 0xBF, 0x7F, 0x1B, 0xAE, 0x3E, + 0x18, 0xEF, 0xB0, 0x3E, 0x90, 0x41, 0x8B, 0xBF, 0x79, 0x58, 0x98, 0x3E, + 0x94, 0x32, 0xD0, 0x3E, 0x26, 0xAA, 0x08, 0xBE, 0x08, 0x40, 0x38, 0x3F, + 0x9C, 0xA7, 0xC5, 0x3E, 0x5C, 0x93, 0xDB, 0xBE, 0x7F, 0xD4, 0x60, 0x3E, + 0xA3, 0x5D, 0x9E, 0xBC, 0x25, 0x55, 0x91, 0x3E, 0x57, 0x3A, 0xAF, 0x3F, + 0x55, 0xC2, 0x4A, 0x3E, 0x48, 0x15, 0x42, 0x3E, 0x6D, 0x2A, 0xC9, 0xBE, + 0x9C, 0xB2, 0xC5, 0xBC, 0xF2, 0xC8, 0xA2, 0x3E, 0x79, 0xCF, 0x02, 0xBF, + 0xAE, 0xDB, 0x00, 0xBE, 0xB0, 0xDA, 0xBF, 0x3E, 0xE7, 0x37, 0x85, 0xBF, + 0xC6, 0x7E, 0x17, 0x3F, 0xCA, 0xC8, 0x21, 0xBF, 0x48, 0xAE, 0xA9, 0x3D, + 0xD3, 0x03, 0x02, 0xBE, 0xE3, 0x81, 0x12, 0x3F, 0x84, 0x45, 0x52, 0x3E, + 0x0C, 0xF0, 0x58, 0xBB, 0x7E, 0x25, 0xA4, 0xBD, 0x2F, 0x25, 0x97, 0x3E, + 0x8D, 0xE3, 0x61, 0x3E, 0xE3, 0x5C, 0xE9, 0xBE, 0x7D, 0xC4, 0x3B, 0xBF, + 0xCD, 0x62, 0xB9, 0x3E, 0x1E, 0xA4, 0xF5, 0xBE, 0x18, 0x1D, 0xFF, 0xBE, + 0x73, 0x22, 0xE9, 0x3C, 0x33, 0x83, 0x17, 0xBF, 0xC9, 0x47, 0x9D, 0xBD, + 0x8D, 0xDB, 0x43, 0x3F, 0xD8, 0x1C, 0xED, 0xBA, 0x0E, 0x80, 0xB0, 0x3E, + 0xB4, 0x7A, 0x2B, 0xBF, 0xEE, 0xDD, 0x0C, 0x40, 0x12, 0x3A, 0x7E, 0x3F, + 0x46, 0x72, 0x78, 0x3E, 0xCA, 0xE0, 0x97, 0xBD, 0x99, 0x53, 0xB0, 0x3E, + 0xC2, 0xF4, 0x07, 0x3F, 0x3D, 0x63, 0xD0, 0xBE, 0x56, 0x32, 0xD4, 0xBD, + 0x0B, 0x16, 0xF7, 0xBD, 0xEE, 0x5F, 0x8D, 0xBF, 0xE5, 0xBC, 0x7E, 0xBE, + 0x5C, 0x43, 0xE9, 0x3D, 0x2F, 0x66, 0x63, 0xBF, 0x2D, 0x08, 0x79, 0xBE, + 0x85, 0x26, 0x4F, 0x3E, 0x56, 0x7C, 0xC5, 0x3E, 0x73, 0x12, 0x33, 0x3E, + 0xA8, 0x19, 0x7D, 0x3F, 0x20, 0x5F, 0x17, 0x3F, 0x20, 0x8D, 0xF8, 0xBD, + 0x51, 0xDD, 0x13, 0xBE, 0xC5, 0x83, 0x03, 0x3F, 0x4A, 0xB7, 0x21, 0x3E, + 0xEA, 0xF7, 0x20, 0x3E, 0x0E, 0x42, 0x94, 0x3E, 0xC1, 0x49, 0x32, 0x3E, + 0x68, 0x0F, 0xC0, 0xBE, 0x01, 0x46, 0xF0, 0xBD, 0xEB, 0x47, 0xE4, 0xBD, + 0xEC, 0x3F, 0x3E, 0x3E, 0x3A, 0x11, 0xCB, 0x3C, 0x1B, 0x70, 0x4D, 0xBD, + 0x9B, 0xE6, 0x00, 0x3F, 0xF7, 0x5D, 0x98, 0x3B, 0x4E, 0xCE, 0x2F, 0x3E, + 0x5E, 0x05, 0x09, 0x3E, 0x0D, 0x94, 0x87, 0xBC, 0x2C, 0x6A, 0x81, 0x3E, + 0x1F, 0xF2, 0x64, 0x3E, 0xDA, 0x02, 0x8A, 0x3C, 0xA6, 0x01, 0x8D, 0xBE, + 0x0A, 0x2C, 0xC6, 0x3E, 0xC9, 0x66, 0x11, 0xBE, 0x78, 0x4A, 0x93, 0x3E, + 0x3E, 0x12, 0xC5, 0xBD, 0xE7, 0x9F, 0x37, 0x3E, 0xA5, 0x28, 0x20, 0x3E, + 0x37, 0x90, 0x1B, 0xBD, 0x18, 0xA9, 0x6F, 0x3E, 0x0F, 0x7C, 0xD9, 0xBE, + 0x6B, 0xF8, 0xDF, 0xBE, 0x2A, 0x0B, 0x0A, 0x05, 0x64, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x02, 0x30, 0x01, 0x0A, 0xB8, 0x01, 0x0A, 0x07, 0x43, 0x6F, + 0x6E, 0x73, 0x74, 0x5F, 0x34, 0x12, 0x05, 0x43, 0x6F, 0x6E, 0x73, 0x74, + 0x2A, 0x98, 0x01, 0x0A, 0x05, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x12, 0x8E, + 0x01, 0x42, 0x8B, 0x01, 0x08, 0x01, 0x12, 0x04, 0x12, 0x02, 0x08, 0x20, + 0x22, 0x80, 0x01, 0xF9, 0xEE, 0xAD, 0x3E, 0x9C, 0x09, 0x6E, 0xBE, 0x94, + 0xC1, 0x82, 0xBF, 0x87, 0xD0, 0x67, 0xBE, 0xF7, 0x74, 0xBC, 0x3D, 0x2F, + 0x09, 0x44, 0x3E, 0x99, 0xC8, 0xAF, 0xBF, 0x41, 0x0F, 0xDA, 0xBF, 0xD8, + 0xE9, 0x29, 0xBF, 0x17, 0xAC, 0xAA, 0xBD, 0x3C, 0x6F, 0xE4, 0x3E, 0x61, + 0x8B, 0x9D, 0xBD, 0x2B, 0x82, 0x14, 0x3F, 0xB5, 0xA4, 0x36, 0xBF, 0x32, + 0x12, 0xAA, 0x3E, 0x6D, 0x9C, 0x2C, 0xBF, 0x34, 0xAD, 0xF8, 0xBE, 0x05, + 0x77, 0x09, 0xBE, 0x21, 0x6B, 0x96, 0xBF, 0xC8, 0x22, 0x10, 0x3F, 0x85, + 0x0C, 0xBB, 0x3E, 0xA0, 0x51, 0x25, 0x3F, 0x4E, 0x00, 0x4F, 0x3E, 0x72, + 0xB0, 0x1E, 0x3D, 0x6E, 0x05, 0xE6, 0x3E, 0x8E, 0x11, 0xC8, 0x3D, 0xB6, + 0x37, 0x7E, 0xBF, 0x24, 0x56, 0x62, 0xBF, 0x9E, 0x67, 0x3C, 0xBE, 0xCA, + 0xDA, 0x32, 0x3F, 0xAA, 0xB1, 0x24, 0xBE, 0xD1, 0x47, 0x44, 0xBE, 0x2A, + 0x0B, 0x0A, 0x05, 0x64, 0x74, 0x79, 0x70, 0x65, 0x12, 0x02, 0x30, 0x01, + 0x0A, 0xC4, 0x24, 0x0A, 0x07, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x5F, 0x35, + 0x12, 0x05, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x2A, 0x0B, 0x0A, 0x05, 0x64, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x02, 0x30, 0x01, 0x2A, 0xA4, 0x24, 0x0A, + 0x05, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x12, 0x9A, 0x24, 0x42, 0x97, 0x24, + 0x08, 0x01, 0x12, 0x10, 0x12, 0x02, 0x08, 0x03, 0x12, 0x02, 0x08, 0x03, + 0x12, 0x02, 0x08, 0x20, 0x12, 0x02, 0x08, 0x04, 0x22, 0x80, 0x24, 0x82, + 0x3B, 0xFB, 0xBB, 0x74, 0x40, 0xD6, 0x3B, 0x62, 0xF5, 0xE9, 0xBC, 0xF4, + 0x41, 0x59, 0x3C, 0xA8, 0x6E, 0x10, 0x3E, 0x4F, 0xFD, 0xF9, 0xBC, 0xA1, + 0x02, 0x68, 0xBD, 0x07, 0xEE, 0x49, 0xBE, 0xD4, 0x21, 0x3B, 0x3B, 0x41, + 0xF5, 0x30, 0x3D, 0x2C, 0xC1, 0xA9, 0xBB, 0xD9, 0x30, 0x91, 0x3B, 0xD6, + 0x1D, 0x3D, 0x3D, 0x79, 0x73, 0x11, 0x3B, 0x4B, 0xB6, 0x03, 0xBD, 0x6C, + 0x57, 0xF5, 0xBC, 0xC9, 0xF8, 0xAB, 0x3D, 0x0C, 0x59, 0x0F, 0x3E, 0x85, + 0x95, 0x9E, 0x3C, 0x44, 0x2E, 0x1C, 0x3D, 0x42, 0xC5, 0xA9, 0xBD, 0x81, + 0xC7, 0x9D, 0x3C, 0x62, 0x24, 0x35, 0x3E, 0x17, 0x00, 0x19, 0x3D, 0xF7, + 0xCB, 0x67, 0xBC, 0x3D, 0x84, 0xBE, 0xBC, 0xD7, 0x71, 0x27, 0x3D, 0x6D, + 0x39, 0x64, 0x3A, 0xF8, 0x68, 0x3C, 0xBD, 0xB9, 0x43, 0xC2, 0x3B, 0x27, + 0x39, 0xA0, 0x3B, 0x09, 0x98, 0x2B, 0x3C, 0x82, 0x4C, 0xD4, 0xBD, 0x07, + 0x2F, 0x2F, 0x3D, 0xDC, 0x33, 0xF9, 0x3C, 0x0D, 0x8C, 0x93, 0xBB, 0x4B, + 0x1A, 0x52, 0xBD, 0xED, 0x5A, 0x30, 0x3D, 0xEB, 0xB4, 0x53, 0x3C, 0x24, + 0x52, 0x9E, 0x3C, 0x7E, 0x45, 0xAE, 0x3C, 0x24, 0xCB, 0x39, 0x3C, 0x3D, + 0x82, 0x06, 0xBD, 0x87, 0xF7, 0xEC, 0x3B, 0x58, 0xA0, 0x44, 0x3C, 0x78, + 0x2E, 0x4E, 0xBD, 0x20, 0x6A, 0xC5, 0xBB, 0x4A, 0xFD, 0x07, 0x3C, 0x94, + 0xA6, 0x9A, 0x3D, 0x06, 0x6E, 0xCA, 0xBD, 0x0A, 0xC5, 0xFA, 0x3C, 0x9A, + 0x4B, 0xA9, 0xBC, 0xA6, 0x63, 0x0C, 0x3D, 0x2B, 0x13, 0x3B, 0xBD, 0x8E, + 0xF0, 0xEB, 0xBC, 0x96, 0xC8, 0x4B, 0x3D, 0xAB, 0x49, 0x72, 0x3A, 0x9A, + 0x16, 0x9E, 0xBC, 0x2D, 0xB6, 0x28, 0x3B, 0x7D, 0x14, 0xBB, 0x3A, 0x4B, + 0xB7, 0x21, 0x3D, 0x26, 0xC9, 0xFD, 0x3B, 0x2B, 0x18, 0x14, 0xBD, 0x1D, + 0xC1, 0x47, 0xBD, 0x35, 0xD0, 0xAA, 0xBD, 0x23, 0xF3, 0x17, 0xBC, 0x9C, + 0x3B, 0xC9, 0x3D, 0x6E, 0x45, 0x90, 0x3D, 0x7C, 0xAC, 0x19, 0xBC, 0xA2, + 0xD5, 0xB4, 0xBD, 0xAC, 0xFF, 0xD7, 0x3B, 0xA0, 0x59, 0x2B, 0xBC, 0x04, + 0x80, 0x07, 0xB9, 0x6D, 0x5D, 0xD4, 0x3B, 0xC4, 0x8E, 0x11, 0xBD, 0x13, + 0x20, 0x15, 0x3C, 0xE9, 0x9D, 0xB3, 0x3D, 0x12, 0x85, 0x6C, 0x3C, 0xBC, + 0xBC, 0x89, 0xBD, 0xC8, 0x27, 0x17, 0xBD, 0x46, 0xBB, 0x9B, 0xBC, 0x9B, + 0xE5, 0x36, 0x3D, 0x99, 0x20, 0x76, 0x3B, 0xB2, 0xBF, 0xF8, 0xB9, 0x08, + 0x41, 0xC7, 0x3C, 0x72, 0x21, 0x00, 0xBE, 0xA0, 0xCC, 0x5D, 0x3C, 0x21, + 0x68, 0x3F, 0xBD, 0x2C, 0x65, 0xD7, 0x3B, 0xB4, 0x7B, 0xC9, 0xBB, 0xD6, + 0x75, 0x3C, 0xBC, 0x42, 0xD7, 0x88, 0x3B, 0xAE, 0xB6, 0xAB, 0x3C, 0xDB, + 0x3E, 0x6C, 0x3B, 0xF4, 0xA1, 0xA8, 0xBB, 0x7E, 0x60, 0x9A, 0xBC, 0xE2, + 0x15, 0x0A, 0x3D, 0x90, 0xCD, 0x93, 0xBD, 0xF5, 0xAA, 0x8C, 0xBC, 0x76, + 0xD9, 0xD0, 0x3B, 0xA2, 0x13, 0xD7, 0xBD, 0x95, 0x50, 0x3C, 0x3E, 0x41, + 0x42, 0x82, 0xBD, 0x2E, 0x7B, 0x8B, 0x3D, 0x2F, 0xF9, 0x7E, 0xBC, 0x98, + 0x99, 0xF3, 0x3D, 0xB6, 0xFC, 0x0D, 0xBD, 0xC9, 0x43, 0xDC, 0x3D, 0xFA, + 0x22, 0xBC, 0xBD, 0x7F, 0x85, 0xAB, 0x3D, 0x78, 0x39, 0x35, 0xBD, 0xC1, + 0x2B, 0xC5, 0x3D, 0x3E, 0xD9, 0xEF, 0xBC, 0x33, 0xE9, 0xFD, 0xBC, 0x0C, + 0x2F, 0x2C, 0x3D, 0xD2, 0xF9, 0x30, 0x3D, 0x7B, 0x7B, 0x62, 0x3E, 0x3D, + 0x60, 0x1A, 0x3E, 0xC9, 0xE7, 0x47, 0x3E, 0x91, 0x14, 0x80, 0x3D, 0x4C, + 0x84, 0x5C, 0x3D, 0x5D, 0x2B, 0x89, 0xBD, 0x3D, 0xAA, 0x9D, 0x3C, 0xD4, + 0x11, 0x13, 0xBD, 0x14, 0x4F, 0xBA, 0xBD, 0xF5, 0xBC, 0x13, 0x3D, 0x67, + 0xA6, 0xB2, 0xBC, 0x1C, 0x55, 0x29, 0x3D, 0x72, 0x75, 0xB4, 0x3D, 0x18, + 0x8B, 0xA9, 0x3B, 0x4A, 0x2B, 0x0A, 0xBE, 0xC2, 0xEC, 0xF4, 0xBD, 0xF5, + 0xF8, 0x22, 0xBE, 0xDA, 0x67, 0x21, 0x3E, 0xC7, 0x6E, 0x39, 0xBE, 0xF2, + 0x66, 0xC2, 0x3D, 0x26, 0x67, 0x7D, 0x3D, 0xFB, 0xAE, 0xBF, 0xBD, 0x7E, + 0x5B, 0xE0, 0x3C, 0xE7, 0x14, 0x86, 0xBD, 0x40, 0x8C, 0x59, 0x3B, 0x29, + 0x40, 0x76, 0x3D, 0xB4, 0xD9, 0x69, 0xBD, 0xDA, 0xDA, 0x1D, 0xBD, 0x1F, + 0x38, 0xD1, 0xBE, 0x1E, 0x22, 0x4E, 0xBE, 0x06, 0x9D, 0xB8, 0xBE, 0x59, + 0xFC, 0x31, 0xBE, 0x24, 0xE8, 0x30, 0xBE, 0xF1, 0xB7, 0x75, 0xBE, 0xCE, + 0xFE, 0xD1, 0x3D, 0xA6, 0x8F, 0x73, 0x3E, 0xF3, 0x51, 0xF0, 0xBB, 0x99, + 0x7C, 0xED, 0xBB, 0xB1, 0x92, 0x82, 0x3D, 0x4F, 0x7A, 0xA0, 0x3D, 0x04, + 0xAE, 0x0D, 0x3D, 0x4D, 0x25, 0x80, 0xBD, 0x7A, 0x76, 0x3C, 0x3C, 0x04, + 0x17, 0xB4, 0x3B, 0xE4, 0xDE, 0xA4, 0xBE, 0xD1, 0x26, 0x84, 0xBE, 0x80, + 0xD8, 0x0C, 0x3E, 0x13, 0xAE, 0xEA, 0x3D, 0xDD, 0x8D, 0x9D, 0x3D, 0x4B, + 0xEB, 0xCD, 0xBD, 0x21, 0x42, 0xD1, 0x3C, 0xDD, 0x43, 0x57, 0xBC, 0x65, + 0x0B, 0xE7, 0x3D, 0xD8, 0x6D, 0x6D, 0x3D, 0x31, 0x44, 0xD8, 0xBD, 0xCB, + 0xD4, 0xD3, 0xBD, 0xAE, 0x8E, 0x51, 0x3E, 0x45, 0xDB, 0x82, 0x3E, 0x2F, + 0x5B, 0xD8, 0xBC, 0x0E, 0xFB, 0xB6, 0xBC, 0x01, 0xE7, 0xB1, 0xBD, 0xD2, + 0x4C, 0x16, 0x3D, 0x88, 0xF9, 0x54, 0xBA, 0x1E, 0x19, 0x4A, 0x3D, 0xD9, + 0x11, 0x9C, 0x3E, 0x75, 0x0B, 0x9A, 0x3E, 0x7D, 0x3C, 0x92, 0xBD, 0xBE, + 0xAC, 0xAE, 0xBD, 0x25, 0x15, 0x2D, 0xBD, 0x7F, 0xFD, 0xD6, 0x3B, 0x4A, + 0x7C, 0x8A, 0x3C, 0xA7, 0x87, 0x15, 0x3D, 0xD0, 0x11, 0x92, 0xBD, 0x29, + 0x74, 0x0A, 0x3D, 0x3C, 0x37, 0xC4, 0x3C, 0x39, 0x05, 0xBB, 0x3C, 0xE3, + 0x2C, 0x55, 0x3D, 0x09, 0xF4, 0xAA, 0xBD, 0x41, 0x59, 0xB8, 0xBD, 0xCD, + 0xAF, 0x11, 0x3D, 0x0E, 0xB5, 0x4F, 0x3E, 0xA8, 0xFF, 0x92, 0x3E, 0x34, + 0xD6, 0x6F, 0xBC, 0x46, 0xA7, 0x16, 0x3C, 0x66, 0x93, 0x9F, 0x3D, 0x04, + 0x3E, 0xB3, 0x3C, 0x9F, 0xD9, 0xDC, 0xBD, 0xDD, 0xF3, 0xD8, 0xBD, 0xC0, + 0x20, 0xB7, 0xBD, 0x69, 0x4B, 0x43, 0x3D, 0x1F, 0x09, 0x1D, 0x3D, 0x3E, + 0xCB, 0xA4, 0xBD, 0xD9, 0xDF, 0x9D, 0x3D, 0x82, 0x06, 0xAE, 0xBD, 0xD7, + 0xE1, 0x73, 0xBD, 0xF8, 0xB9, 0x16, 0x3B, 0x4B, 0xF2, 0x69, 0x3E, 0x3C, + 0xA9, 0x16, 0x3F, 0x84, 0x94, 0xC9, 0x3E, 0x1C, 0x71, 0x9D, 0x3E, 0x8B, + 0x80, 0x42, 0x3D, 0x1C, 0x2D, 0xBD, 0x3C, 0xA4, 0xEC, 0x81, 0xBD, 0x35, + 0xC9, 0x64, 0xBD, 0x67, 0x25, 0x15, 0x3C, 0xD7, 0x92, 0x1D, 0x3D, 0xFB, + 0x5A, 0xCA, 0xBD, 0x8E, 0x86, 0x70, 0xBC, 0xB7, 0x20, 0x03, 0xBE, 0x98, + 0x74, 0x25, 0x3E, 0x41, 0xEC, 0x25, 0xBD, 0x25, 0xE5, 0xF5, 0x3C, 0xF4, + 0x7F, 0xFF, 0x3D, 0xB4, 0x67, 0x2D, 0x3C, 0x8B, 0x48, 0x1D, 0xBE, 0x16, + 0xAF, 0x37, 0xBE, 0xEE, 0x16, 0xBC, 0xBC, 0x8D, 0xAD, 0x83, 0xBE, 0xDB, + 0x4B, 0x90, 0x3E, 0x1D, 0xE0, 0x42, 0xBE, 0xCF, 0xD3, 0xAE, 0x3D, 0xF0, + 0x0B, 0x2F, 0xBD, 0xA4, 0x5A, 0xB7, 0x3D, 0xF5, 0x51, 0xE5, 0xBD, 0xB4, + 0xE3, 0x01, 0x3E, 0x5C, 0x66, 0xFD, 0x3D, 0xB2, 0x65, 0xBF, 0xBD, 0xB8, + 0x4C, 0x3D, 0xBD, 0x11, 0xCF, 0x40, 0x3E, 0x6B, 0xF5, 0x25, 0x3E, 0xFA, + 0x58, 0xEE, 0x3D, 0xA0, 0x3A, 0x15, 0x3E, 0x56, 0x78, 0xC3, 0xBD, 0x78, + 0xBB, 0xAA, 0x3D, 0x44, 0x79, 0x03, 0xBD, 0x87, 0xA6, 0x00, 0x3D, 0xF7, + 0xC1, 0xB0, 0x3E, 0x4B, 0xA6, 0x5A, 0x3E, 0x9E, 0xA6, 0x9E, 0x3E, 0x1C, + 0x5B, 0x7B, 0x3D, 0x78, 0x10, 0x44, 0xBC, 0x1C, 0x0D, 0x74, 0x3D, 0x23, + 0x29, 0xDC, 0xBC, 0x00, 0x58, 0xA2, 0xBD, 0xEA, 0x15, 0x2B, 0x3E, 0x7C, + 0xAC, 0x03, 0xBD, 0x2D, 0x29, 0x0C, 0x3E, 0x1E, 0x0A, 0xAA, 0xBD, 0x3B, + 0xD7, 0xDE, 0xBD, 0xE5, 0x51, 0xA2, 0x3D, 0xC1, 0xDF, 0x6B, 0xBD, 0xEE, + 0xF5, 0x79, 0x3D, 0x51, 0xF6, 0x02, 0x3C, 0xF8, 0xE9, 0xD3, 0xBA, 0xDC, + 0x9F, 0x5D, 0x3B, 0x27, 0xD3, 0x7E, 0xBC, 0x18, 0xB6, 0x63, 0x3E, 0x1C, + 0xA7, 0xB4, 0xBC, 0xB1, 0x45, 0x03, 0x3E, 0xAD, 0x3E, 0x7C, 0xBD, 0x01, + 0x96, 0x26, 0x3C, 0x68, 0x2E, 0x26, 0x3D, 0x0B, 0x5A, 0x56, 0xBC, 0xBB, + 0x5F, 0x6A, 0x3C, 0x54, 0xB3, 0x13, 0x3C, 0x93, 0x03, 0x80, 0x3C, 0x84, + 0x01, 0x48, 0xBC, 0x9D, 0xF2, 0xAC, 0x3C, 0x4D, 0xA9, 0x45, 0xBD, 0x18, + 0xF0, 0x76, 0x3C, 0x90, 0x10, 0x01, 0x3C, 0xDA, 0xE0, 0x01, 0xBB, 0x5D, + 0xA5, 0xF2, 0x3D, 0x7B, 0xD2, 0x87, 0xBD, 0x36, 0x00, 0x24, 0xBC, 0xF2, + 0x3C, 0x9D, 0x3D, 0x29, 0x62, 0x81, 0xBD, 0xFD, 0x99, 0xA2, 0x3D, 0x46, + 0x13, 0x62, 0xBD, 0xC6, 0xC9, 0x1C, 0x3C, 0xFF, 0xAA, 0x20, 0xBC, 0x26, + 0x5D, 0x58, 0x3D, 0x01, 0xBC, 0x75, 0xBC, 0x40, 0x8A, 0x72, 0xBD, 0x01, + 0x33, 0x38, 0xBD, 0x07, 0x5E, 0x02, 0xBD, 0x6F, 0xA9, 0x36, 0x3C, 0xAB, + 0xEC, 0xCF, 0x3B, 0x5A, 0xCD, 0x03, 0x3D, 0x28, 0xA9, 0x3B, 0x3D, 0xB0, + 0x46, 0x49, 0xBD, 0x81, 0x5E, 0x14, 0xBD, 0xDA, 0xD3, 0x46, 0xBD, 0xC5, + 0x96, 0x1D, 0x3D, 0xA4, 0x40, 0xF1, 0x3C, 0x3A, 0xF5, 0xF8, 0xBC, 0x16, + 0xFC, 0x4F, 0xBC, 0x0D, 0x34, 0x46, 0x3C, 0x1A, 0x2A, 0xF7, 0x3A, 0xE1, + 0x2F, 0x12, 0x39, 0xCC, 0x94, 0x45, 0x3D, 0xB7, 0xD3, 0x2B, 0xBD, 0xE0, + 0x70, 0x62, 0x3C, 0xD4, 0x95, 0x19, 0x3C, 0xCF, 0xF4, 0x49, 0x3D, 0x8F, + 0xBE, 0xD5, 0x3D, 0x7C, 0x5B, 0x7C, 0xBD, 0x8C, 0xE0, 0x0D, 0xBE, 0x07, + 0x80, 0x44, 0xBD, 0xBA, 0x16, 0x4A, 0xBD, 0x8A, 0xF8, 0x8B, 0x3C, 0x7A, + 0x17, 0x34, 0x3C, 0x2F, 0x95, 0x45, 0xBC, 0xED, 0xA6, 0x0E, 0x3D, 0x96, + 0x39, 0x71, 0xBC, 0xE9, 0x76, 0x7B, 0xBD, 0xAC, 0x9B, 0x75, 0xBC, 0xF7, + 0x27, 0xD1, 0xBD, 0xC7, 0xF9, 0x63, 0x3D, 0xA5, 0xD0, 0xE9, 0x3D, 0x8E, + 0x68, 0x2B, 0x3E, 0x9E, 0x7B, 0x8A, 0x3E, 0x0E, 0x06, 0xB7, 0xBD, 0x11, + 0xF7, 0xF4, 0xBD, 0xCA, 0xE1, 0x95, 0x3E, 0xDB, 0x75, 0x11, 0x3E, 0x9A, + 0x2B, 0x1A, 0x3E, 0x1B, 0x0F, 0xA5, 0x3E, 0xAF, 0xCE, 0x33, 0x3C, 0x5A, + 0xAC, 0x28, 0x3D, 0xC8, 0x78, 0xA3, 0xBC, 0x36, 0x03, 0x38, 0xBD, 0x89, + 0x36, 0xED, 0x3C, 0xFC, 0x4D, 0xD8, 0x3C, 0xFD, 0x6F, 0xA7, 0xBB, 0x4A, + 0xC5, 0xA8, 0xBD, 0xAC, 0xDF, 0x09, 0x3E, 0x3D, 0x56, 0x86, 0xBD, 0x00, + 0x56, 0x62, 0x3D, 0xEB, 0xF0, 0x07, 0xBC, 0x0A, 0x87, 0xDC, 0x3D, 0x6C, + 0x6C, 0x02, 0xBE, 0x49, 0x03, 0xD8, 0x3C, 0x89, 0x36, 0x5E, 0xBD, 0x77, + 0x06, 0x3E, 0xBE, 0x6E, 0x96, 0x91, 0xBD, 0xD2, 0x5E, 0x1A, 0xBE, 0xD5, + 0x0A, 0x13, 0x3E, 0x6E, 0x10, 0xA8, 0xBC, 0x96, 0xD6, 0x5C, 0xBD, 0x27, + 0xC2, 0x6E, 0xBD, 0x88, 0x1B, 0x76, 0x3D, 0xFA, 0x2F, 0x85, 0xBD, 0x65, + 0x2F, 0x84, 0x3C, 0x41, 0xE5, 0x7B, 0x3C, 0xFA, 0x4E, 0x98, 0xBC, 0xFE, + 0x00, 0xDB, 0x3D, 0xD4, 0x11, 0x32, 0x3E, 0x95, 0x58, 0x8B, 0xBC, 0x9D, + 0xBF, 0x84, 0x3D, 0xC4, 0x83, 0x52, 0x3D, 0x47, 0x07, 0x37, 0xBD, 0x7E, + 0x2D, 0xF1, 0x3C, 0xA9, 0xB2, 0x04, 0xBB, 0x33, 0x0D, 0x91, 0x3E, 0x47, + 0xA5, 0x68, 0x3E, 0xD2, 0x14, 0x37, 0x3E, 0x41, 0xD0, 0xC4, 0x3E, 0x19, + 0xFA, 0x80, 0xBD, 0xB7, 0xFF, 0x7D, 0x3C, 0xA8, 0x53, 0x65, 0x3D, 0xCA, + 0xEE, 0x5B, 0x3D, 0x6A, 0xA7, 0x36, 0xBE, 0x53, 0x3F, 0x15, 0xBE, 0xCF, + 0x47, 0x4E, 0x3E, 0xF9, 0x97, 0x08, 0x3E, 0xC7, 0xF9, 0x86, 0xBD, 0x78, + 0xD6, 0xAF, 0x3D, 0x63, 0xE2, 0xD4, 0xBC, 0xB6, 0x43, 0x8B, 0x3D, 0xBF, + 0x5E, 0x90, 0xBD, 0x6F, 0x80, 0x2B, 0x3B, 0x46, 0x28, 0x19, 0x3D, 0x8D, + 0xD5, 0x95, 0x3C, 0x5C, 0x04, 0x97, 0x3C, 0xAA, 0x0A, 0x13, 0x3C, 0xBF, + 0x2D, 0xA4, 0x3C, 0x05, 0x2E, 0xE1, 0x3D, 0x26, 0xAD, 0x6D, 0xBE, 0x50, + 0x58, 0xF0, 0xBD, 0x36, 0x1D, 0x8C, 0xBE, 0x11, 0x5A, 0x03, 0xBE, 0xC0, + 0x64, 0xA5, 0xBD, 0xC3, 0x12, 0x8C, 0x3D, 0x0B, 0x85, 0xDC, 0xBD, 0x36, + 0xEE, 0x4A, 0x3C, 0x9A, 0x40, 0x84, 0xBD, 0xE4, 0x48, 0x92, 0x3D, 0x9B, + 0xFF, 0x36, 0x3D, 0xCC, 0xC5, 0x60, 0x3E, 0x88, 0xBE, 0x75, 0xBE, 0x9A, + 0x55, 0x36, 0x3D, 0x50, 0x27, 0x85, 0xBE, 0x72, 0x6A, 0x86, 0x3D, 0x55, + 0x59, 0x20, 0xBC, 0xC2, 0xCA, 0x7B, 0x3D, 0xA9, 0xE2, 0xA6, 0xBD, 0x26, + 0x49, 0x7D, 0x3D, 0xC0, 0xA0, 0xE2, 0xBC, 0x87, 0x45, 0x9F, 0xBA, 0xB1, + 0x4B, 0xC3, 0x3C, 0xDB, 0x7A, 0xAA, 0x3C, 0x69, 0xB1, 0x67, 0x3E, 0x9F, + 0xD9, 0x07, 0xBC, 0x3E, 0x51, 0x3A, 0x3E, 0x97, 0xB6, 0x87, 0xBD, 0xFF, + 0xDA, 0xC9, 0x3D, 0xEF, 0xDE, 0xB8, 0xBD, 0xD5, 0x5D, 0xCD, 0x3D, 0x3D, + 0xD0, 0x14, 0xBE, 0xBA, 0xB1, 0xB9, 0x3E, 0x33, 0xE4, 0xA4, 0xBD, 0xD1, + 0x94, 0xA5, 0x3E, 0x98, 0xD6, 0xBF, 0xBD, 0x99, 0x54, 0x86, 0x3D, 0x6F, + 0xE0, 0xD2, 0xBD, 0x37, 0x19, 0x4F, 0x3C, 0x9A, 0x95, 0x8E, 0xBD, 0xD9, + 0x28, 0xC5, 0xBD, 0x0E, 0xFD, 0x58, 0xBD, 0x7F, 0xD6, 0x0A, 0x3D, 0x23, + 0x9B, 0x25, 0x3D, 0x14, 0x12, 0xEE, 0x3D, 0x38, 0xBA, 0x46, 0x3D, 0x3F, + 0x4F, 0xA7, 0xBD, 0x26, 0xA7, 0x92, 0xBD, 0xD0, 0x72, 0x70, 0x3E, 0xFC, + 0x21, 0xCA, 0xBC, 0x31, 0x75, 0x36, 0x3E, 0x1A, 0xFC, 0xC4, 0xBD, 0xC5, + 0xD4, 0x26, 0xBD, 0xA9, 0x09, 0x84, 0x3C, 0x27, 0xF9, 0x8D, 0x3C, 0x80, + 0x98, 0x21, 0x3D, 0x30, 0xF1, 0xF8, 0xBD, 0x10, 0xA7, 0x7F, 0x3C, 0xBE, + 0x76, 0x81, 0x3D, 0x54, 0x00, 0xA4, 0x3C, 0x1B, 0x5C, 0x1B, 0xBD, 0xD2, + 0x4B, 0x0F, 0x3E, 0xF1, 0x69, 0x81, 0xBD, 0x26, 0xFA, 0x0A, 0x3E, 0x71, + 0xB3, 0x08, 0x3C, 0x93, 0x74, 0xF2, 0x3C, 0x8F, 0x6D, 0x1D, 0xBD, 0x30, + 0x31, 0x3D, 0xBD, 0x15, 0x0B, 0x5E, 0xBC, 0x77, 0xCB, 0xCB, 0xBC, 0x34, + 0x92, 0x36, 0x3D, 0x73, 0xD1, 0x81, 0xBC, 0xA5, 0x56, 0x78, 0xBC, 0x5B, + 0x23, 0x57, 0xBC, 0x87, 0x41, 0x49, 0x3C, 0x81, 0x7D, 0xCE, 0x3B, 0xD2, + 0xB4, 0x8A, 0xBC, 0x5F, 0x9D, 0xBE, 0xBC, 0x9F, 0xF7, 0x1F, 0x3D, 0xBF, + 0xE4, 0xC3, 0xBD, 0xD4, 0x96, 0xAB, 0xBD, 0x9E, 0x7E, 0xE8, 0x3D, 0x40, + 0xE8, 0xAF, 0xBD, 0xFC, 0xE7, 0x65, 0x3E, 0xF0, 0xFC, 0x96, 0x3B, 0x41, + 0xB8, 0xCC, 0xBC, 0x0A, 0x2D, 0xB8, 0x3B, 0x16, 0x2B, 0x11, 0x3C, 0x8A, + 0xF2, 0x9A, 0x3D, 0x7F, 0x9A, 0x24, 0xBE, 0x02, 0x52, 0x5D, 0xBD, 0x17, + 0xDC, 0xA7, 0xBC, 0x9F, 0xB1, 0xF3, 0x3D, 0x3B, 0xD2, 0x6A, 0xBE, 0x82, + 0xD8, 0x98, 0x3D, 0x17, 0x06, 0x78, 0xBE, 0x02, 0x1C, 0x7F, 0x3E, 0xFB, + 0xFA, 0x3C, 0x3E, 0xC5, 0x86, 0x68, 0x3E, 0xF7, 0xD7, 0x17, 0x3E, 0x7E, + 0x4A, 0x2F, 0x39, 0x2B, 0xF9, 0xD6, 0xBC, 0xAC, 0x7C, 0x49, 0x3D, 0xC0, + 0x7B, 0x51, 0xBD, 0x55, 0xEB, 0x53, 0x3C, 0x2F, 0x7D, 0x8F, 0x3D, 0x64, + 0x2B, 0xA4, 0xBD, 0xC4, 0x27, 0x3D, 0x3D, 0x08, 0xE6, 0x15, 0xBE, 0xF7, + 0x09, 0x24, 0xBE, 0x11, 0x84, 0x4F, 0x3E, 0xCC, 0x3A, 0xC1, 0x3D, 0x30, + 0x90, 0x5B, 0xBD, 0xDE, 0x28, 0x7E, 0xBD, 0xCB, 0x3A, 0x61, 0x3B, 0xD6, + 0xFE, 0xBF, 0x3D, 0xCC, 0x61, 0xC3, 0x3D, 0x0D, 0x0B, 0x9B, 0xBD, 0x7F, + 0x84, 0xAA, 0x3D, 0xE0, 0xB1, 0xB1, 0xBD, 0xDE, 0x0A, 0xD5, 0xBC, 0xC6, + 0x31, 0xC2, 0xBD, 0xFA, 0x2F, 0x65, 0x3D, 0xEF, 0x7F, 0x88, 0x3D, 0xCA, + 0xDB, 0x01, 0x3E, 0xFF, 0xF2, 0xF3, 0x3D, 0x46, 0x3A, 0xAF, 0xBC, 0x27, + 0xDC, 0x76, 0xBD, 0xE3, 0x8F, 0x1B, 0xBF, 0xED, 0x08, 0x78, 0xBE, 0x89, + 0x1C, 0x41, 0xBF, 0x7E, 0xDD, 0xA6, 0xBE, 0xC4, 0x4B, 0xCA, 0x3D, 0xDC, + 0xEA, 0x56, 0x3E, 0xC3, 0x09, 0x59, 0xBE, 0x3E, 0x42, 0x39, 0xBE, 0x3E, + 0xAA, 0xEB, 0x3D, 0x47, 0x7B, 0x00, 0xBE, 0x33, 0xE4, 0x1D, 0x3E, 0x48, + 0x5F, 0xEE, 0xBD, 0x79, 0xE5, 0x08, 0xBF, 0x94, 0x81, 0xF6, 0xBE, 0x35, + 0x80, 0x16, 0xBF, 0xE9, 0xC0, 0x00, 0xBF, 0x64, 0xF9, 0xF9, 0x3C, 0xB9, + 0x56, 0x79, 0xBC, 0xA5, 0x9A, 0xC9, 0x3D, 0x27, 0x2D, 0xC5, 0xBD, 0x54, + 0xBA, 0xCE, 0xBD, 0x2F, 0x1C, 0xDA, 0xBD, 0xB3, 0x11, 0xD7, 0x3D, 0xA7, + 0x60, 0xA9, 0x3C, 0x36, 0xE3, 0x20, 0x3F, 0x1C, 0x60, 0x37, 0x3F, 0x41, + 0x20, 0x1D, 0x3F, 0x19, 0x7D, 0x41, 0x3F, 0x05, 0x99, 0x09, 0xBD, 0xD0, + 0x61, 0xCD, 0x3D, 0x5A, 0xD1, 0x1E, 0xBE, 0xA3, 0x14, 0x79, 0x3B, 0xCE, + 0xA7, 0x49, 0x3F, 0x89, 0x33, 0x42, 0x3F, 0xBF, 0xE3, 0x3D, 0x3F, 0x4B, + 0x91, 0x33, 0x3F, 0x4E, 0x55, 0xBD, 0xBD, 0xC0, 0x96, 0x03, 0x3E, 0xFB, + 0x06, 0xBD, 0xBD, 0x1B, 0x7D, 0xB2, 0x3C, 0x51, 0x02, 0x0E, 0xBC, 0xEC, + 0x2D, 0xFC, 0x3D, 0xFF, 0xB3, 0xE5, 0xBD, 0x99, 0x3B, 0x9A, 0x3D, 0x6A, + 0xF1, 0x2D, 0xBE, 0x41, 0xD6, 0x0D, 0x3C, 0xBD, 0x73, 0x4B, 0x3E, 0x13, + 0xD4, 0x53, 0x3D, 0x94, 0xFF, 0x41, 0x3F, 0x1E, 0x76, 0x62, 0x3F, 0x8D, + 0xF6, 0x3F, 0x3F, 0x28, 0xEF, 0x6F, 0x3F, 0x7B, 0x77, 0xCF, 0xBD, 0x57, + 0x22, 0x0E, 0xBE, 0xC4, 0x30, 0x21, 0x3E, 0xCA, 0x04, 0x1B, 0x3D, 0xCA, + 0x55, 0x85, 0x3D, 0x56, 0xFD, 0x26, 0xBE, 0x6C, 0x63, 0x01, 0x3D, 0x55, + 0x97, 0xFF, 0x3D, 0xB3, 0x6D, 0x99, 0x3E, 0x22, 0x56, 0xD1, 0xBD, 0x93, + 0xDB, 0xB0, 0x3E, 0x9A, 0x4A, 0x2B, 0xBE, 0x72, 0x2D, 0xAB, 0x3E, 0x9F, + 0xC7, 0x9C, 0x3D, 0xF6, 0xF8, 0xBB, 0x3E, 0x7E, 0xEE, 0xCE, 0x3E, 0x91, + 0x72, 0xD5, 0xBD, 0xD6, 0x5F, 0x23, 0xBD, 0x94, 0x43, 0x4E, 0x3D, 0x96, + 0xE4, 0xC3, 0x3D, 0x5C, 0x49, 0xC1, 0xBD, 0x87, 0xD4, 0x2E, 0xBD, 0xAB, + 0x3B, 0xC1, 0x3D, 0x79, 0xC8, 0x36, 0x3D, 0xEC, 0x3C, 0x37, 0xBD, 0xC8, + 0x10, 0x4F, 0x3D, 0x99, 0x95, 0x00, 0xBE, 0x72, 0xCD, 0x38, 0x3E, 0x71, + 0x13, 0x05, 0xBD, 0x8E, 0x4D, 0x94, 0xBE, 0xFF, 0x4F, 0x70, 0x3E, 0x88, + 0xFB, 0xD0, 0x3C, 0x59, 0x36, 0x58, 0x3E, 0x97, 0xBD, 0xAD, 0x3D, 0x73, + 0x42, 0xDA, 0xBD, 0x7C, 0x58, 0x5D, 0xBD, 0x4B, 0x02, 0x4D, 0xBE, 0x3E, + 0xB7, 0x3E, 0x3E, 0x02, 0x6E, 0x35, 0xBD, 0x90, 0xA0, 0x0F, 0x3E, 0x2F, + 0x72, 0xD3, 0x3E, 0x60, 0x46, 0x41, 0x3F, 0x16, 0xA2, 0x9A, 0x3E, 0x9D, + 0x90, 0x46, 0x3F, 0x58, 0x11, 0x32, 0x3E, 0xE8, 0x90, 0x3C, 0x3E, 0xA2, + 0x2F, 0xCC, 0x3D, 0x45, 0x99, 0x3B, 0x3E, 0x96, 0xCE, 0x8A, 0xBC, 0xCF, + 0x8F, 0x0B, 0x3D, 0xFA, 0x4B, 0xB0, 0xBD, 0x2B, 0xF9, 0xB3, 0x3D, 0x20, + 0x8C, 0x36, 0x3E, 0xAF, 0x16, 0x1B, 0x3D, 0x63, 0x5D, 0xA3, 0x3E, 0x9B, + 0x8C, 0x59, 0x3E, 0x2E, 0x54, 0x41, 0xBD, 0x21, 0x60, 0xBE, 0xBD, 0xD6, + 0x13, 0x96, 0x3A, 0x46, 0xB6, 0x03, 0x3E, 0x80, 0x8A, 0x0E, 0xBD, 0x0C, + 0x31, 0x16, 0xBD, 0x00, 0x9B, 0x77, 0x3D, 0x59, 0x49, 0x27, 0x3D, 0x2D, + 0xF4, 0x22, 0xBD, 0xBD, 0x17, 0x16, 0xBC, 0x67, 0x2B, 0xC1, 0xBD, 0x2D, + 0x97, 0x02, 0x3D, 0x1C, 0x91, 0x2C, 0xBC, 0x91, 0xB0, 0x53, 0xBC, 0x39, + 0x75, 0xEB, 0x3A, 0x9C, 0x0F, 0x70, 0x3C, 0x7E, 0xAA, 0x21, 0xBD, 0x86, + 0xF4, 0xF0, 0xBC, 0xFD, 0xD1, 0x11, 0x3E, 0x97, 0x3E, 0x96, 0x3D, 0xB8, + 0xDC, 0x76, 0x3E, 0x37, 0xFC, 0x27, 0x3C, 0x07, 0x37, 0x4C, 0x3E, 0x9F, + 0xF9, 0xA9, 0xBD, 0x48, 0x1A, 0x25, 0x3E, 0xC1, 0x1E, 0xA3, 0xBD, 0xCF, + 0x2F, 0x6E, 0x3D, 0x42, 0x48, 0xA8, 0xBD, 0xB3, 0xC8, 0xB8, 0xBD, 0x47, + 0x09, 0x1C, 0x3D, 0xEB, 0xF6, 0xC7, 0xBD, 0xF9, 0x38, 0x8D, 0x3D, 0x64, + 0x4C, 0x09, 0x3E, 0x47, 0x7B, 0x45, 0xBE, 0x00, 0x80, 0x0F, 0x3E, 0xB8, + 0xE1, 0x93, 0xBE, 0x18, 0x74, 0xE7, 0xBC, 0xE9, 0x40, 0xBA, 0xBC, 0x80, + 0x27, 0x0A, 0xBD, 0x44, 0xCF, 0x8C, 0x3D, 0x4A, 0xB4, 0x14, 0xBD, 0x0E, + 0x5A, 0x75, 0xBD, 0x53, 0x39, 0x1E, 0xBC, 0x1F, 0x8B, 0xA9, 0x3D, 0xE0, + 0x9B, 0xEE, 0x3B, 0x30, 0xFA, 0x24, 0x3E, 0xFC, 0x91, 0x1A, 0xBD, 0xB0, + 0x97, 0x82, 0x3D, 0x18, 0x6C, 0x90, 0xBD, 0xCF, 0xCE, 0xF2, 0xBC, 0x49, + 0xA4, 0x89, 0x3D, 0xFA, 0x2A, 0xAC, 0x3D, 0xCA, 0xBE, 0x9C, 0xBD, 0x2D, + 0x96, 0xC2, 0x3E, 0x4D, 0xEA, 0x9A, 0xBD, 0xB7, 0xE2, 0xB1, 0x3E, 0xBE, + 0xD3, 0x71, 0x3D, 0x54, 0xAF, 0xA1, 0xBC, 0x0D, 0xC5, 0xEE, 0x3B, 0xF6, + 0x62, 0x84, 0x3C, 0x71, 0xBC, 0xFA, 0x3D, 0x2B, 0xCE, 0xB0, 0xBD, 0x38, + 0x34, 0xE6, 0x3D, 0xBE, 0xA2, 0xD8, 0xBD, 0x5A, 0x27, 0x21, 0xBD, 0xF4, + 0x3A, 0x43, 0xBE, 0x29, 0xF5, 0xD5, 0x3B, 0x79, 0x68, 0x16, 0x3E, 0x07, + 0x81, 0x3B, 0x3D, 0x6D, 0xB1, 0x25, 0x3E, 0x76, 0x6D, 0xF7, 0xBC, 0x25, + 0x18, 0x5B, 0x3D, 0x43, 0x76, 0x41, 0xBD, 0x36, 0xEC, 0x6E, 0xBD, 0xD4, + 0xA8, 0x2F, 0xBC, 0xE8, 0x63, 0xCE, 0x3D, 0x91, 0x19, 0x57, 0x3D, 0xB3, + 0x69, 0x28, 0x3E, 0x7E, 0x14, 0xEF, 0xBD, 0xA2, 0x39, 0xBD, 0xBD, 0xC6, + 0xC5, 0x9E, 0x3E, 0x49, 0xBE, 0x0C, 0x3F, 0x46, 0xB1, 0xB8, 0x3E, 0xB3, + 0x87, 0x22, 0x3F, 0x05, 0x2C, 0x87, 0x3C, 0xE3, 0x65, 0x83, 0x3E, 0x30, + 0xC4, 0x01, 0x3E, 0x5A, 0x7D, 0x0A, 0x3E, 0x3D, 0xA8, 0xF5, 0x3B, 0x20, + 0xAB, 0x7B, 0xBD, 0x35, 0x13, 0xB1, 0x3C, 0xF6, 0x82, 0xC9, 0x3C, 0x6A, + 0x5D, 0x04, 0xBD, 0x0A, 0x5B, 0xB5, 0xBD, 0x6F, 0xAF, 0x0A, 0x3D, 0x97, + 0x75, 0xB8, 0x3D, 0x8B, 0x5D, 0x4A, 0x3D, 0xBD, 0x32, 0x40, 0xBD, 0xE2, + 0x39, 0x09, 0x3E, 0x55, 0x3C, 0xA0, 0xBD, 0xAF, 0x44, 0xAC, 0xBD, 0xF1, + 0x96, 0x0A, 0xBB, 0xB7, 0xB7, 0x83, 0x3D, 0x1D, 0xEB, 0xCA, 0xBD, 0xBE, + 0x7F, 0xF9, 0x3C, 0x4B, 0xC8, 0x36, 0x3E, 0x91, 0x08, 0x89, 0xBD, 0xEB, + 0x34, 0x04, 0xBE, 0x16, 0x4E, 0x2F, 0x3E, 0xF8, 0x18, 0x46, 0xBD, 0xF2, + 0x73, 0x15, 0x3E, 0x8E, 0x25, 0x1D, 0xBE, 0x2F, 0x93, 0x08, 0x3D, 0x74, + 0x3E, 0x89, 0x3E, 0xF8, 0x45, 0x0C, 0xBC, 0xA5, 0x3F, 0x02, 0x3E, 0xF9, + 0x82, 0xE8, 0x3D, 0xF6, 0xB2, 0x22, 0x3E, 0x3A, 0x08, 0x11, 0x3E, 0x09, + 0x90, 0x22, 0x3E, 0x44, 0x3D, 0x28, 0x3D, 0xF5, 0xA8, 0x7B, 0xBC, 0xB1, + 0x6E, 0x66, 0x3D, 0xE0, 0x76, 0x86, 0xBD, 0xF0, 0xEE, 0x47, 0x3E, 0x66, + 0x02, 0x96, 0x3E, 0x7B, 0x3E, 0xB4, 0x3E, 0xB0, 0x05, 0x8F, 0x3E, 0xD9, + 0x32, 0x8B, 0x3D, 0xA5, 0x90, 0x86, 0x3C, 0xE8, 0x04, 0x34, 0xBD, 0x09, + 0x27, 0xBC, 0xBC, 0x9B, 0xFB, 0x2E, 0x3E, 0x55, 0xC0, 0x0A, 0x3E, 0xCD, + 0x59, 0x38, 0xBB, 0x49, 0xDE, 0x59, 0xBD, 0xCA, 0x63, 0x69, 0xBD, 0x11, + 0x90, 0x3E, 0x3D, 0x1B, 0x0B, 0xB6, 0xBD, 0xBC, 0x88, 0xB9, 0x3D, 0xF3, + 0xE2, 0xBF, 0x3C, 0x05, 0x23, 0xE9, 0x3B, 0x68, 0xA3, 0xF5, 0xBC, 0x44, + 0xB5, 0x44, 0x3C, 0x58, 0x6D, 0x32, 0xBD, 0x0E, 0x93, 0x28, 0x3C, 0xC1, + 0xCF, 0xF8, 0x3C, 0x78, 0x6A, 0x9B, 0x3A, 0x4D, 0x4D, 0x01, 0x3E, 0x26, + 0x02, 0x72, 0x3D, 0xDC, 0x44, 0x16, 0xBE, 0x2A, 0x79, 0x85, 0x3C, 0x3F, + 0x02, 0x58, 0xBD, 0x82, 0xB2, 0x94, 0xBB, 0x01, 0x0D, 0x91, 0xBD, 0xB3, + 0xFC, 0x83, 0x3D, 0xC6, 0x62, 0x94, 0x3D, 0x23, 0x65, 0x96, 0x3D, 0x94, + 0x70, 0xAA, 0xBD, 0x0E, 0x8E, 0x4F, 0xBD, 0xAE, 0xDA, 0x22, 0x3D, 0x48, + 0x93, 0x87, 0xBC, 0x40, 0x05, 0xAE, 0xBD, 0xCC, 0x98, 0x13, 0x38, 0x75, + 0x36, 0x12, 0xBC, 0x06, 0x5A, 0x6D, 0xBC, 0xEA, 0xD2, 0x27, 0x3C, 0x0B, + 0x5B, 0x93, 0x3C, 0xF7, 0xAF, 0x9E, 0x3C, 0x7C, 0xE2, 0x91, 0xBA, 0x76, + 0x93, 0x69, 0xB8, 0x5A, 0x75, 0x9C, 0xBC, 0x3C, 0xFB, 0x9A, 0xBD, 0xE7, + 0xD5, 0x02, 0x3D, 0x8F, 0x2D, 0x34, 0xBC, 0x4E, 0x85, 0x0D, 0x3C, 0x79, + 0x13, 0x9B, 0xBB, 0xD9, 0x1E, 0x14, 0x3C, 0xA3, 0x00, 0xCE, 0x3C, 0x49, + 0xBE, 0xCA, 0xBC, 0xA5, 0x90, 0x37, 0xBD, 0x94, 0x67, 0x06, 0x3D, 0x8A, + 0x30, 0x7C, 0x3D, 0xE6, 0x88, 0x5C, 0xBD, 0x60, 0x95, 0xC7, 0x3C, 0x46, + 0xF8, 0x2D, 0xBD, 0xC3, 0xDD, 0x7F, 0x3D, 0xE8, 0x6D, 0xC3, 0xBD, 0xC3, + 0x55, 0x33, 0x3D, 0x93, 0x50, 0x55, 0x3D, 0x75, 0x66, 0x2B, 0xBD, 0x1E, + 0xB2, 0x71, 0xBC, 0x78, 0xD8, 0x6D, 0xBD, 0x8A, 0xFE, 0x5A, 0xBD, 0x94, + 0x3C, 0x66, 0x3C, 0x57, 0x78, 0xCE, 0x3C, 0x53, 0x88, 0xC6, 0xBD, 0x64, + 0xCF, 0x16, 0xBA, 0x95, 0x7F, 0x29, 0xBD, 0x7A, 0xD3, 0x54, 0xBB, 0x50, + 0xFF, 0x1F, 0x3D, 0x40, 0x9A, 0x3C, 0x3C, 0x67, 0x78, 0xC3, 0xBB, 0x7F, + 0xAE, 0xD0, 0xBB, 0xE2, 0xD7, 0x91, 0x3D, 0x05, 0xEA, 0xDE, 0xBC, 0xA6, + 0x3A, 0xCD, 0xBC, 0xDF, 0x8D, 0x82, 0xBA, 0x6A, 0x20, 0x7B, 0x3C, 0xF5, + 0x51, 0x77, 0xBD, 0x14, 0x37, 0x0A, 0x3D, 0xF3, 0x8A, 0xB0, 0x3A, 0x50, + 0x38, 0x8C, 0xBB, 0xD6, 0xF1, 0x63, 0xBC, 0x99, 0x4C, 0xB7, 0x3C, 0xDD, + 0xA6, 0xDF, 0xBC, 0xF0, 0x6A, 0xFF, 0x3C, 0x30, 0xF9, 0x1B, 0x3C, 0xF3, + 0x96, 0x93, 0xBC, 0x40, 0xF3, 0x50, 0xBC, 0xA4, 0x67, 0x0E, 0x3C, 0x45, + 0xDD, 0xF4, 0xBB, 0x4C, 0x6D, 0x11, 0x3A, 0x68, 0x4E, 0x4D, 0xBC, 0xF4, + 0x1F, 0x89, 0xBB, 0x07, 0xA2, 0xAC, 0x3C, 0x6A, 0x84, 0xB5, 0xBC, 0x89, + 0xF0, 0x83, 0x3C, 0x93, 0x79, 0x03, 0xBC, 0x80, 0x32, 0xFB, 0x3C, 0x83, + 0x14, 0x8F, 0xBC, 0x1E, 0xA0, 0x0B, 0x3D, 0x1B, 0x60, 0x67, 0xBA, 0xD8, + 0x99, 0x04, 0x3C, 0xE9, 0x09, 0x95, 0xBB, 0x95, 0x45, 0x82, 0xBC, 0x98, + 0xB2, 0x3A, 0x3D, 0xD2, 0x55, 0x64, 0xBC, 0x29, 0x21, 0xF5, 0x3D, 0x69, + 0x1A, 0x09, 0xBE, 0xD1, 0xB3, 0xF6, 0xBC, 0x0E, 0xE2, 0x6D, 0x3D, 0x9A, + 0x33, 0xA5, 0xBC, 0xE5, 0x60, 0x4D, 0xBC, 0x06, 0xAD, 0xDC, 0x3D, 0x4E, + 0x2E, 0x03, 0x3C, 0x14, 0xF1, 0x7B, 0x3E, 0x3D, 0xBB, 0xBF, 0x3D, 0x65, + 0xC6, 0x9B, 0x3C, 0x86, 0x88, 0xE9, 0x3B, 0x75, 0xC2, 0xEA, 0xBB, 0xC1, + 0x3F, 0xBC, 0xBB, 0xE4, 0x81, 0x4D, 0x3C, 0x78, 0x7F, 0x32, 0xBD, 0xAB, + 0x3F, 0xC6, 0x3C, 0x2B, 0x60, 0xC7, 0x3B, 0x34, 0x4D, 0xF7, 0x3D, 0x7A, + 0xE1, 0xED, 0x3D, 0x7C, 0x6B, 0x05, 0xBD, 0xDF, 0x6E, 0x80, 0xBD, 0xEE, + 0x26, 0xF0, 0xBC, 0x73, 0x0D, 0x8F, 0x3D, 0x34, 0x41, 0x4A, 0xBD, 0x47, + 0x63, 0xFE, 0x3C, 0x33, 0xB7, 0xE4, 0x3C, 0x1E, 0x01, 0x3E, 0xBB, 0x19, + 0xD1, 0x97, 0x3D, 0x17, 0x03, 0x26, 0xBD, 0x54, 0x6B, 0x3C, 0x3D, 0x37, + 0x48, 0x2A, 0x3D, 0x57, 0x7F, 0x9A, 0xBB, 0x52, 0x2B, 0x36, 0xBD, 0x27, + 0xF5, 0x1E, 0xBE, 0x81, 0xCB, 0x1F, 0xBE, 0x2E, 0xE0, 0x85, 0x3A, 0x5F, + 0x19, 0x7C, 0x3D, 0x70, 0xF2, 0x71, 0x3D, 0x93, 0xCF, 0x3F, 0x3E, 0x8D, + 0x41, 0x6C, 0xBD, 0xE1, 0xAF, 0x51, 0xBE, 0x02, 0xEF, 0x02, 0xBE, 0xD2, + 0xD6, 0x1D, 0xBE, 0xF8, 0x7A, 0x42, 0x3D, 0x38, 0x13, 0xA7, 0x3D, 0x14, + 0x04, 0xE3, 0x3C, 0x2F, 0xE3, 0x50, 0x3C, 0xBC, 0x28, 0x41, 0x3C, 0x6E, + 0xC7, 0x6F, 0xBD, 0x02, 0x48, 0x21, 0x3E, 0xC1, 0xE8, 0x19, 0x3E, 0x76, + 0x6F, 0x6D, 0xBE, 0x5B, 0x95, 0x4F, 0xBE, 0xDA, 0x9A, 0x42, 0x3C, 0xC2, + 0xDC, 0x07, 0xBB, 0x40, 0x8A, 0x58, 0xBC, 0x25, 0xFA, 0x37, 0xBC, 0xCA, + 0xA4, 0x47, 0xBC, 0xBD, 0x52, 0x15, 0x3D, 0x7B, 0xAE, 0xFA, 0xBB, 0x6A, + 0x90, 0x08, 0x3D, 0xBB, 0x46, 0xF4, 0xBB, 0xAF, 0xC8, 0xCF, 0xBD, 0xFB, + 0x96, 0x5E, 0x3E, 0xCF, 0x5B, 0x1B, 0x3E, 0xF8, 0xC4, 0x58, 0xBD, 0x3A, + 0x20, 0x24, 0xBD, 0xDF, 0x7B, 0xEB, 0xBA, 0xDE, 0x69, 0x4B, 0x3D, 0x13, + 0xB0, 0x85, 0xBD, 0x82, 0x49, 0x95, 0xBD, 0xF5, 0xE0, 0xBE, 0x3E, 0x91, + 0xCF, 0xC9, 0x3E, 0x22, 0x68, 0x56, 0xBD, 0x17, 0xFF, 0x0A, 0x3C, 0xF1, + 0x70, 0xCC, 0xBD, 0x34, 0x1B, 0xB6, 0x3D, 0x89, 0x58, 0x1C, 0xBD, 0x18, + 0xA9, 0xD4, 0x3A, 0x6C, 0xC9, 0x15, 0xBC, 0x94, 0xEA, 0x8B, 0x3D, 0x9C, + 0xB3, 0x2B, 0x3E, 0x38, 0xF4, 0xB4, 0x3D, 0x76, 0x0B, 0x0D, 0xBE, 0xEC, + 0x1C, 0xFD, 0xBD, 0xD6, 0x8F, 0xBD, 0x3B, 0x1C, 0x05, 0xB6, 0xBD, 0x8C, + 0xBF, 0x6C, 0x3E, 0x8B, 0x09, 0x13, 0x3E, 0xBB, 0xF1, 0xA4, 0x3D, 0x62, + 0xD5, 0x86, 0x3D, 0x96, 0x4C, 0xAA, 0xBC, 0x6A, 0xA2, 0xBF, 0xBC, 0x26, + 0x95, 0x42, 0x3B, 0x50, 0x55, 0x0A, 0x3E, 0xCD, 0xFA, 0x7B, 0xBD, 0xC6, + 0x02, 0x85, 0xBD, 0x5F, 0xEE, 0x85, 0xBD, 0xC6, 0xC8, 0x80, 0x3D, 0xEE, + 0x76, 0xBA, 0xBA, 0x5A, 0x2B, 0x3A, 0x3D, 0x4E, 0xD8, 0x5C, 0x3C, 0xA9, + 0xA7, 0xED, 0x3C, 0xB4, 0x2A, 0x7B, 0xBD, 0x5E, 0x6B, 0x9E, 0xBC, 0xAF, + 0x91, 0x73, 0x3D, 0x2D, 0x80, 0x64, 0x3D, 0xB3, 0xD3, 0x04, 0xBD, 0x3F, + 0x3A, 0x17, 0xBD, 0xEE, 0xDB, 0x60, 0x3D, 0x4A, 0xDF, 0x2D, 0x3D, 0x21, + 0xDD, 0x3F, 0xBD, 0x66, 0x6F, 0xC8, 0xBB, 0xCC, 0x6D, 0x97, 0x3C, 0xA9, + 0x22, 0x3F, 0x3C, 0x0B, 0xEA, 0x00, 0x3C, 0x77, 0xDF, 0x05, 0x3C, 0xBB, + 0x9E, 0xDD, 0x3D, 0x35, 0x21, 0x1D, 0x3D, 0x69, 0x95, 0xB6, 0x3D, 0xEC, + 0x97, 0xA8, 0xBD, 0x33, 0x68, 0x96, 0xBD, 0xE1, 0x18, 0x2C, 0xBD, 0x4D, + 0xDF, 0x16, 0x3D, 0x89, 0xDB, 0x97, 0xBB, 0x6D, 0x84, 0xB4, 0x3C, 0x19, + 0x84, 0x57, 0xBD, 0x76, 0x59, 0xF1, 0xBD, 0x19, 0x4E, 0xE3, 0x3C, 0x84, + 0x9F, 0xB7, 0xBD, 0xB7, 0x38, 0xA3, 0xBD, 0x69, 0xC8, 0x39, 0x3E, 0x45, + 0xCE, 0xE6, 0x3D, 0x25, 0xB8, 0xFA, 0x3D, 0xFE, 0x1D, 0xB3, 0x3D, 0x91, + 0x1D, 0x44, 0x3E, 0xA1, 0x88, 0x57, 0x3E, 0xC5, 0x26, 0x00, 0xBC, 0xDD, + 0x6D, 0x2E, 0x3C, 0x8E, 0x0C, 0x06, 0xBC, 0x71, 0xD8, 0x9D, 0xBA, 0xE6, + 0xBA, 0x1A, 0x3D, 0xCB, 0xA2, 0x44, 0x3D, 0x42, 0x42, 0x12, 0xBE, 0x50, + 0x78, 0xF4, 0xBC, 0xED, 0x07, 0xAF, 0x3C, 0x87, 0x90, 0xA0, 0x3D, 0x5B, + 0x38, 0x17, 0xBD, 0x4B, 0xF1, 0xD1, 0xBC, 0xDB, 0x16, 0x61, 0x3D, 0x51, + 0xAF, 0x95, 0x3C, 0xB9, 0x4E, 0x4B, 0x3B, 0xF5, 0xC8, 0x70, 0xBC, 0x32, + 0x6A, 0xA0, 0xB9, 0xA8, 0xC6, 0xB3, 0xBC, 0x45, 0xD5, 0x50, 0xBB, 0xE0, + 0x42, 0xD5, 0xBC, 0x9E, 0x43, 0xCB, 0x3A, 0x4E, 0xFC, 0xAB, 0x3C, 0xA4, + 0x30, 0x6D, 0xBC, 0xF6, 0x92, 0xEC, 0xBB, 0xB3, 0x75, 0x03, 0x3D, 0xBA, + 0x6F, 0x90, 0xBB, 0x25, 0xBA, 0xBD, 0xBC, 0xB1, 0xBA, 0x13, 0xBD, 0x7E, + 0xF1, 0x0F, 0xBD, 0xF5, 0xD2, 0x6D, 0xBD, 0x02, 0xCE, 0x0F, 0x3D, 0x2A, + 0x26, 0x52, 0x3D, 0xEB, 0x44, 0xB6, 0x3B, 0xB7, 0x8A, 0x2E, 0xBD, 0xF6, + 0x10, 0xFA, 0x3D, 0xF8, 0x68, 0x3A, 0xBD, 0x60, 0x50, 0xC2, 0xBA, 0x2F, + 0x45, 0x8B, 0x3C, 0xCE, 0x00, 0x1C, 0xBD, 0x4C, 0xB8, 0x4B, 0x3C, 0x54, + 0xB3, 0xE7, 0xBC, 0xBA, 0x40, 0x35, 0x3D, 0x8C, 0xD0, 0xDC, 0x3C, 0x16, + 0xC9, 0x4F, 0xBD, 0xB8, 0xFB, 0x8A, 0x3B, 0x02, 0x54, 0xC2, 0x3C, 0x48, + 0x88, 0xBA, 0xBB, 0xB3, 0x85, 0xC3, 0xBB, 0x6B, 0xD9, 0x34, 0x3D, 0xCE, + 0x3F, 0x6A, 0x3C, 0x8E, 0x05, 0x94, 0x3C, 0x1A, 0xBB, 0xAD, 0xBC, 0x02, + 0x1A, 0x06, 0xBD, 0x45, 0xF0, 0x1B, 0xBD, 0xAC, 0x44, 0x27, 0xBD, 0xF9, + 0xB1, 0x70, 0x3C, 0x5C, 0x8B, 0x52, 0x3D, 0xFC, 0xF2, 0xF6, 0x3C, 0x8D, + 0x56, 0xA7, 0xBC, 0x1C, 0x45, 0xAF, 0xBC, 0xED, 0x2E, 0x18, 0x3D, 0x13, + 0x1D, 0x19, 0xBD, 0x3A, 0x77, 0x32, 0xBD, 0x23, 0x0B, 0x53, 0x3D, 0xFF, + 0x0F, 0xC6, 0x3C, 0xEE, 0x73, 0x84, 0xBB, 0x33, 0x19, 0x77, 0x3D, 0xBA, + 0x0A, 0xE4, 0xBC, 0x7B, 0x56, 0x91, 0x3C, 0xF9, 0x19, 0xBC, 0xBC, 0x93, + 0xD6, 0x81, 0x3D, 0x34, 0x88, 0x55, 0xBD, 0x2E, 0xB1, 0xC7, 0xBC, 0xCB, + 0xF5, 0xD6, 0x3D, 0x42, 0xC0, 0x41, 0x3D, 0x70, 0xB2, 0xC1, 0xBB, 0x31, + 0x1A, 0x5B, 0xBD, 0xEE, 0xCE, 0x48, 0xBD, 0x9E, 0xCC, 0xD7, 0xBC, 0x81, + 0x2E, 0x8B, 0x3C, 0x71, 0x02, 0x95, 0x3C, 0x7A, 0xBE, 0x70, 0x3D, 0xC9, + 0xF5, 0x3D, 0xBC, 0x0D, 0x05, 0xFB, 0xBB, 0xF9, 0x0D, 0x75, 0xBD, 0x0F, + 0xDE, 0xB8, 0xBD, 0xD5, 0x79, 0x7B, 0x3D, 0xE0, 0xA0, 0x08, 0x3D, 0xB7, + 0xE0, 0x94, 0xBC, 0x5D, 0xFB, 0xCE, 0xBD, 0x02, 0xE5, 0xD3, 0x3D, 0x5E, + 0x01, 0xA9, 0x3D, 0x46, 0xD8, 0x69, 0xBD, 0x29, 0xBB, 0x3C, 0xBD, 0xE7, + 0x1C, 0x18, 0xBD, 0x2E, 0x19, 0xB2, 0xBC, 0xDB, 0x94, 0x07, 0xBB, 0x04, + 0x0E, 0x92, 0x3C, 0x70, 0xE8, 0x27, 0x3C, 0xE9, 0x6D, 0x26, 0xBC, 0x9B, + 0x94, 0xCB, 0x3C, 0xD8, 0xC3, 0x47, 0x3D, 0x52, 0x11, 0xD4, 0xBA, 0x20, + 0x0A, 0x1A, 0xBD, 0x52, 0x83, 0xD9, 0xBB, 0x85, 0x53, 0x90, 0x3A, 0x4D, + 0xDD, 0x38, 0xBB, 0xA9, 0xDD, 0xB8, 0xBC, 0x65, 0x7C, 0xF8, 0xBC, 0x03, + 0x2D, 0xCC, 0x3C, 0x4B, 0x0C, 0xDB, 0xBD, 0x10, 0x1E, 0x04, 0x3D, 0xCD, + 0x68, 0x71, 0xBD, 0x32, 0xDA, 0xC5, 0xBD, 0x28, 0x30, 0x2C, 0x3C, 0xB0, + 0x59, 0x68, 0x3D, 0xDD, 0x22, 0x9B, 0xBD, 0x98, 0xFD, 0x66, 0x3D, 0x24, + 0x02, 0xD3, 0x3C, 0x64, 0xF4, 0x8D, 0x3D, 0x47, 0x84, 0xCD, 0xBC, 0xCB, + 0xA0, 0xA5, 0xBD, 0xBE, 0xA6, 0x35, 0xBD, 0xAE, 0x91, 0x83, 0x3D, 0xF3, + 0x99, 0x4D, 0x3C, 0xD7, 0x06, 0x3D, 0x3E, 0xFB, 0x73, 0x0A, 0x3E, 0xB9, + 0xC0, 0x35, 0x3E, 0x33, 0x92, 0xF4, 0xBA, 0xDB, 0xD5, 0xE4, 0xBB, 0x9F, + 0x46, 0x0D, 0x3C, 0x6F, 0xD1, 0xCA, 0xB9, 0x25, 0x7F, 0x18, 0x3C, 0xD3, + 0xBF, 0x69, 0x3C, 0xD5, 0xD5, 0x5A, 0xBD, 0xDA, 0x41, 0x2D, 0xBE, 0x0A, + 0x44, 0x0A, 0x07, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x5F, 0x36, 0x12, 0x05, + 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x2A, 0x25, 0x0A, 0x05, 0x76, 0x61, 0x6C, + 0x75, 0x65, 0x12, 0x1C, 0x42, 0x1A, 0x08, 0x01, 0x12, 0x04, 0x12, 0x02, + 0x08, 0x04, 0x22, 0x10, 0x6F, 0x6F, 0x40, 0xBA, 0x5B, 0xF1, 0x90, 0x3B, + 0xA3, 0xA9, 0x20, 0x3B, 0x00, 0x78, 0x29, 0x3B, 0x2A, 0x0B, 0x0A, 0x05, + 0x64, 0x74, 0x79, 0x70, 0x65, 0x12, 0x02, 0x30, 0x01, 0x0A, 0x9B, 0x01, + 0x0A, 0x06, 0x43, 0x6F, 0x6E, 0x76, 0x32, 0x44, 0x12, 0x06, 0x43, 0x6F, + 0x6E, 0x76, 0x32, 0x44, 0x1A, 0x09, 0x4D, 0x69, 0x72, 0x72, 0x6F, 0x72, + 0x50, 0x61, 0x64, 0x1A, 0x07, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x5F, 0x31, + 0x2A, 0x15, 0x0A, 0x09, 0x64, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, + 0x73, 0x12, 0x08, 0x0A, 0x06, 0x1A, 0x04, 0x01, 0x01, 0x01, 0x01, 0x2A, + 0x07, 0x0A, 0x01, 0x54, 0x12, 0x02, 0x30, 0x01, 0x2A, 0x13, 0x0A, 0x07, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x08, 0x0A, 0x06, 0x1A, + 0x04, 0x01, 0x01, 0x01, 0x01, 0x2A, 0x15, 0x0A, 0x0B, 0x64, 0x61, 0x74, + 0x61, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x12, 0x06, 0x12, 0x04, + 0x4E, 0x48, 0x57, 0x43, 0x2A, 0x16, 0x0A, 0x10, 0x75, 0x73, 0x65, 0x5F, + 0x63, 0x75, 0x64, 0x6E, 0x6E, 0x5F, 0x6F, 0x6E, 0x5F, 0x67, 0x70, 0x75, + 0x12, 0x02, 0x28, 0x01, 0x2A, 0x11, 0x0A, 0x07, 0x70, 0x61, 0x64, 0x64, + 0x69, 0x6E, 0x67, 0x12, 0x06, 0x12, 0x04, 0x53, 0x41, 0x4D, 0x45, 0x0A, + 0x43, 0x0A, 0x07, 0x42, 0x69, 0x61, 0x73, 0x41, 0x64, 0x64, 0x12, 0x07, + 0x42, 0x69, 0x61, 0x73, 0x41, 0x64, 0x64, 0x1A, 0x06, 0x43, 0x6F, 0x6E, + 0x76, 0x32, 0x44, 0x1A, 0x07, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x5F, 0x32, + 0x2A, 0x07, 0x0A, 0x01, 0x54, 0x12, 0x02, 0x30, 0x01, 0x2A, 0x15, 0x0A, + 0x0B, 0x64, 0x61, 0x74, 0x61, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, + 0x12, 0x06, 0x12, 0x04, 0x4E, 0x48, 0x57, 0x43, 0x0A, 0x1E, 0x0A, 0x04, + 0x54, 0x61, 0x6E, 0x68, 0x12, 0x04, 0x54, 0x61, 0x6E, 0x68, 0x1A, 0x07, + 0x42, 0x69, 0x61, 0x73, 0x41, 0x64, 0x64, 0x2A, 0x07, 0x0A, 0x01, 0x54, + 0x12, 0x02, 0x30, 0x01, 0x0A, 0x98, 0x01, 0x0A, 0x08, 0x43, 0x6F, 0x6E, + 0x76, 0x32, 0x44, 0x5F, 0x31, 0x12, 0x06, 0x43, 0x6F, 0x6E, 0x76, 0x32, + 0x44, 0x1A, 0x04, 0x54, 0x61, 0x6E, 0x68, 0x1A, 0x07, 0x43, 0x6F, 0x6E, + 0x73, 0x74, 0x5F, 0x33, 0x2A, 0x15, 0x0A, 0x09, 0x64, 0x69, 0x6C, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x12, 0x08, 0x0A, 0x06, 0x1A, 0x04, 0x01, + 0x01, 0x01, 0x01, 0x2A, 0x07, 0x0A, 0x01, 0x54, 0x12, 0x02, 0x30, 0x01, + 0x2A, 0x15, 0x0A, 0x0B, 0x64, 0x61, 0x74, 0x61, 0x5F, 0x66, 0x6F, 0x72, + 0x6D, 0x61, 0x74, 0x12, 0x06, 0x12, 0x04, 0x4E, 0x48, 0x57, 0x43, 0x2A, + 0x13, 0x0A, 0x07, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x08, + 0x0A, 0x06, 0x1A, 0x04, 0x01, 0x01, 0x01, 0x01, 0x2A, 0x16, 0x0A, 0x10, + 0x75, 0x73, 0x65, 0x5F, 0x63, 0x75, 0x64, 0x6E, 0x6E, 0x5F, 0x6F, 0x6E, + 0x5F, 0x67, 0x70, 0x75, 0x12, 0x02, 0x28, 0x01, 0x2A, 0x11, 0x0A, 0x07, + 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x12, 0x06, 0x12, 0x04, 0x53, + 0x41, 0x4D, 0x45, 0x0A, 0x47, 0x0A, 0x09, 0x42, 0x69, 0x61, 0x73, 0x41, + 0x64, 0x64, 0x5F, 0x31, 0x12, 0x07, 0x42, 0x69, 0x61, 0x73, 0x41, 0x64, + 0x64, 0x1A, 0x08, 0x43, 0x6F, 0x6E, 0x76, 0x32, 0x44, 0x5F, 0x31, 0x1A, + 0x07, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x5F, 0x34, 0x2A, 0x07, 0x0A, 0x01, + 0x54, 0x12, 0x02, 0x30, 0x01, 0x2A, 0x15, 0x0A, 0x0B, 0x64, 0x61, 0x74, + 0x61, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x12, 0x06, 0x12, 0x04, + 0x4E, 0x48, 0x57, 0x43, 0x0A, 0x22, 0x0A, 0x06, 0x54, 0x61, 0x6E, 0x68, + 0x5F, 0x31, 0x12, 0x04, 0x54, 0x61, 0x6E, 0x68, 0x1A, 0x09, 0x42, 0x69, + 0x61, 0x73, 0x41, 0x64, 0x64, 0x5F, 0x31, 0x2A, 0x07, 0x0A, 0x01, 0x54, + 0x12, 0x02, 0x30, 0x01, 0x0A, 0x9A, 0x01, 0x0A, 0x08, 0x43, 0x6F, 0x6E, + 0x76, 0x32, 0x44, 0x5F, 0x32, 0x12, 0x06, 0x43, 0x6F, 0x6E, 0x76, 0x32, + 0x44, 0x1A, 0x06, 0x54, 0x61, 0x6E, 0x68, 0x5F, 0x31, 0x1A, 0x07, 0x43, + 0x6F, 0x6E, 0x73, 0x74, 0x5F, 0x35, 0x2A, 0x11, 0x0A, 0x07, 0x70, 0x61, + 0x64, 0x64, 0x69, 0x6E, 0x67, 0x12, 0x06, 0x12, 0x04, 0x53, 0x41, 0x4D, + 0x45, 0x2A, 0x15, 0x0A, 0x09, 0x64, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, + 0x6E, 0x73, 0x12, 0x08, 0x0A, 0x06, 0x1A, 0x04, 0x01, 0x01, 0x01, 0x01, + 0x2A, 0x07, 0x0A, 0x01, 0x54, 0x12, 0x02, 0x30, 0x01, 0x2A, 0x13, 0x0A, + 0x07, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x08, 0x0A, 0x06, + 0x1A, 0x04, 0x01, 0x01, 0x01, 0x01, 0x2A, 0x15, 0x0A, 0x0B, 0x64, 0x61, + 0x74, 0x61, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x12, 0x06, 0x12, + 0x04, 0x4E, 0x48, 0x57, 0x43, 0x2A, 0x16, 0x0A, 0x10, 0x75, 0x73, 0x65, + 0x5F, 0x63, 0x75, 0x64, 0x6E, 0x6E, 0x5F, 0x6F, 0x6E, 0x5F, 0x67, 0x70, + 0x75, 0x12, 0x02, 0x28, 0x01, 0x0A, 0x47, 0x0A, 0x09, 0x42, 0x69, 0x61, + 0x73, 0x41, 0x64, 0x64, 0x5F, 0x32, 0x12, 0x07, 0x42, 0x69, 0x61, 0x73, + 0x41, 0x64, 0x64, 0x1A, 0x08, 0x43, 0x6F, 0x6E, 0x76, 0x32, 0x44, 0x5F, + 0x32, 0x1A, 0x07, 0x43, 0x6F, 0x6E, 0x73, 0x74, 0x5F, 0x36, 0x2A, 0x07, + 0x0A, 0x01, 0x54, 0x12, 0x02, 0x30, 0x01, 0x2A, 0x15, 0x0A, 0x0B, 0x64, + 0x61, 0x74, 0x61, 0x5F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x12, 0x06, + 0x12, 0x04, 0x4E, 0x48, 0x57, 0x43, 0x0A, 0x26, 0x0A, 0x07, 0x53, 0x69, + 0x67, 0x6D, 0x6F, 0x69, 0x64, 0x12, 0x07, 0x53, 0x69, 0x67, 0x6D, 0x6F, + 0x69, 0x64, 0x1A, 0x09, 0x42, 0x69, 0x61, 0x73, 0x41, 0x64, 0x64, 0x5F, + 0x32, 0x2A, 0x07, 0x0A, 0x01, 0x54, 0x12, 0x02, 0x30, 0x01, 0x0A, 0x50, + 0x0A, 0x13, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x64, 0x5F, 0x73, 0x6C, + 0x69, 0x63, 0x65, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x12, 0x05, 0x43, + 0x6F, 0x6E, 0x73, 0x74, 0x2A, 0x25, 0x0A, 0x05, 0x76, 0x61, 0x6C, 0x75, + 0x65, 0x12, 0x1C, 0x42, 0x1A, 0x08, 0x03, 0x12, 0x04, 0x12, 0x02, 0x08, + 0x04, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x0B, 0x0A, 0x05, 0x64, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x02, 0x30, 0x03, 0x0A, 0x52, 0x0A, 0x15, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x64, 0x5F, 0x73, 0x6C, 0x69, 0x63, + 0x65, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x5F, 0x31, 0x12, 0x05, 0x43, + 0x6F, 0x6E, 0x73, 0x74, 0x2A, 0x25, 0x0A, 0x05, 0x76, 0x61, 0x6C, 0x75, + 0x65, 0x12, 0x1C, 0x42, 0x1A, 0x08, 0x03, 0x12, 0x04, 0x12, 0x02, 0x08, + 0x04, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x0B, 0x0A, 0x05, 0x64, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x02, 0x30, 0x03, 0x0A, 0x52, 0x0A, 0x15, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x64, 0x5F, 0x73, 0x6C, 0x69, 0x63, + 0x65, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x5F, 0x32, 0x12, 0x05, 0x43, + 0x6F, 0x6E, 0x73, 0x74, 0x2A, 0x25, 0x0A, 0x05, 0x76, 0x61, 0x6C, 0x75, + 0x65, 0x12, 0x1C, 0x42, 0x1A, 0x08, 0x03, 0x12, 0x04, 0x12, 0x02, 0x08, + 0x04, 0x22, 0x10, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x0B, 0x0A, 0x05, 0x64, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x02, 0x30, 0x03, 0x0A, 0xE3, 0x01, 0x0A, + 0x0D, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x64, 0x5F, 0x73, 0x6C, 0x69, + 0x63, 0x65, 0x12, 0x0C, 0x53, 0x74, 0x72, 0x69, 0x64, 0x65, 0x64, 0x53, + 0x6C, 0x69, 0x63, 0x65, 0x1A, 0x07, 0x53, 0x69, 0x67, 0x6D, 0x6F, 0x69, + 0x64, 0x1A, 0x13, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x64, 0x5F, 0x73, + 0x6C, 0x69, 0x63, 0x65, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x1A, 0x15, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x64, 0x5F, 0x73, 0x6C, 0x69, 0x63, + 0x65, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x5F, 0x31, 0x1A, 0x15, 0x73, + 0x74, 0x72, 0x69, 0x64, 0x65, 0x64, 0x5F, 0x73, 0x6C, 0x69, 0x63, 0x65, + 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x5F, 0x32, 0x2A, 0x16, 0x0A, 0x10, + 0x73, 0x68, 0x72, 0x69, 0x6E, 0x6B, 0x5F, 0x61, 0x78, 0x69, 0x73, 0x5F, + 0x6D, 0x61, 0x73, 0x6B, 0x12, 0x02, 0x18, 0x00, 0x2A, 0x13, 0x0A, 0x0D, + 0x65, 0x6C, 0x6C, 0x69, 0x70, 0x73, 0x69, 0x73, 0x5F, 0x6D, 0x61, 0x73, + 0x6B, 0x12, 0x02, 0x18, 0x00, 0x2A, 0x10, 0x0A, 0x0A, 0x62, 0x65, 0x67, + 0x69, 0x6E, 0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x12, 0x02, 0x18, 0x09, 0x2A, + 0x13, 0x0A, 0x0D, 0x6E, 0x65, 0x77, 0x5F, 0x61, 0x78, 0x69, 0x73, 0x5F, + 0x6D, 0x61, 0x73, 0x6B, 0x12, 0x02, 0x18, 0x00, 0x2A, 0x0E, 0x0A, 0x08, + 0x65, 0x6E, 0x64, 0x5F, 0x6D, 0x61, 0x73, 0x6B, 0x12, 0x02, 0x18, 0x09, + 0x2A, 0x07, 0x0A, 0x01, 0x54, 0x12, 0x02, 0x30, 0x01, 0x2A, 0x0B, 0x0A, + 0x05, 0x49, 0x6E, 0x64, 0x65, 0x78, 0x12, 0x02, 0x30, 0x03, 0x0A, 0x52, + 0x0A, 0x01, 0x79, 0x12, 0x0C, 0x44, 0x65, 0x70, 0x74, 0x68, 0x54, 0x6F, + 0x53, 0x70, 0x61, 0x63, 0x65, 0x1A, 0x0D, 0x73, 0x74, 0x72, 0x69, 0x64, + 0x65, 0x64, 0x5F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x2A, 0x10, 0x0A, 0x0A, + 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x5F, 0x73, 0x69, 0x7A, 0x65, 0x12, 0x02, + 0x18, 0x02, 0x2A, 0x07, 0x0A, 0x01, 0x54, 0x12, 0x02, 0x30, 0x01, 0x2A, + 0x15, 0x0A, 0x0B, 0x64, 0x61, 0x74, 0x61, 0x5F, 0x66, 0x6F, 0x72, 0x6D, + 0x61, 0x74, 0x12, 0x06, 0x12, 0x04, 0x4E, 0x48, 0x57, 0x43, 0x22, 0x02, + 0x08, 0x1A +}; + +#endif diff --git a/chromium/third_party/ffmpeg/libavfilter/dnn_interface.h b/chromium/third_party/ffmpeg/libavfilter/dnn_interface.h index 909ba95edf1..6b820d1d5b8 100644 --- a/chromium/third_party/ffmpeg/libavfilter/dnn_interface.h +++ b/chromium/third_party/ffmpeg/libavfilter/dnn_interface.h @@ -30,7 +30,7 @@ typedef enum {DNN_SUCCESS, DNN_ERROR} DNNReturnType; typedef enum {DNN_NATIVE, DNN_TF} DNNBackendType; -typedef enum {DNN_SRCNN} DNNDefaultModel; +typedef enum {DNN_SRCNN, DNN_ESPCN} DNNDefaultModel; typedef struct DNNData{ float* data; @@ -42,7 +42,7 @@ typedef struct DNNModel{ void* model; // Sets model input and output, while allocating additional memory for intermediate calculations. // Should be called at least once before model execution. - DNNReturnType (*set_input_output)(void* model, const DNNData* input, const DNNData* output); + DNNReturnType (*set_input_output)(void* model, DNNData* input, DNNData* output); } DNNModel; // Stores pointers to functions for loading, executing, freeing DNN models for one of the backends. diff --git a/chromium/third_party/ffmpeg/libavfilter/dnn_srcnn.h b/chromium/third_party/ffmpeg/libavfilter/dnn_srcnn.h index ec7e586a776..b8237d10b59 100644 --- a/chromium/third_party/ffmpeg/libavfilter/dnn_srcnn.h +++ b/chromium/third_party/ffmpeg/libavfilter/dnn_srcnn.h @@ -20,13 +20,13 @@ /** * @file - * Default cnn weights for x2 upsampling with srcnn filter. + * Default cnn weights for x2 upsampling with srcnn model. */ #ifndef AVFILTER_DNN_SRCNN_H #define AVFILTER_DNN_SRCNN_H -static const float conv1_kernel[] = { +static const float srcnn_conv1_kernel[] = { -0.08866338f, 0.055409566f, 0.037196506f, -0.11961404f, -0.12341991f, 0.29963422f, -0.0911817f, -0.00013613555f, -0.049023595f, 0.038421184f, -0.077267796f, 0.027273094f, @@ -1325,7 +1325,7 @@ static const float conv1_kernel[] = { -0.013759381f, 0.026358005f, 0.088238746f, 0.082134426f }; -static const float conv1_biases[] = { +static const float srcnn_conv1_biases[] = { -0.016606892f, -0.011107335f, -0.0048309686f, -0.04867378f, -0.030040957f, -0.07297248f, -0.019458665f, -0.009738028f, 0.6951231f, -0.07369442f, -0.01354204f, 0.010336088f, @@ -1344,7 +1344,7 @@ static const float conv1_biases[] = { 0.054407462f, -0.08068252f, -0.009446503f, -0.04663234f }; -static const float conv2_kernel[] = { +static const float srcnn_conv2_kernel[] = { -0.24004751f, 0.1037138f, 0.11173403f, 0.04352092f, -0.23728481f, 0.12153747f, -0.23676059f, -0.28548065f, -0.612738f, -0.12218937f, -0.06005159f, 0.1850652f, @@ -1859,7 +1859,7 @@ static const float conv2_kernel[] = { 0.11089696f, -0.08941251f, -0.3529318f, 0.0654588f }; -static const float conv2_biases[] = { +static const float srcnn_conv2_biases[] = { 0.12326373f, 0.13270757f, 0.07082674f, 0.051456157f, 0.058445618f, 0.13153197f, 0.0809729f, 0.10153213f, 0.055915363f, 0.05228166f, -0.11212896f, 0.07462141f, @@ -1870,7 +1870,7 @@ static const float conv2_biases[] = { -0.086404406f, 0.06046943f, -0.1733751f, 0.2654999f }; -static const float conv3_kernel[] = { +static const float srcnn_conv3_kernel[] = { -0.01733648f, 0.01492609f, 0.019393086f, -0.004445322f, 0.026939709f, 0.00038831023f, 0.004221528f, 0.0050745453f, 0.0129861f, 0.008007169f, 0.008950762f, 0.005279691f, @@ -2073,7 +2073,7 @@ static const float conv3_kernel[] = { 0.012931146f, 0.0046948805f, 0.013098622f, -0.015422701f }; -static const float conv3_biases[] = { +static const float srcnn_conv3_biases[] = { 0.05037664f }; diff --git a/chromium/third_party/ffmpeg/libavfilter/framesync.c b/chromium/third_party/ffmpeg/libavfilter/framesync.c index da12c58a618..22d3f091a3f 100644 --- a/chromium/third_party/ffmpeg/libavfilter/framesync.c +++ b/chromium/third_party/ffmpeg/libavfilter/framesync.c @@ -61,7 +61,7 @@ enum { static int consume_from_fifos(FFFrameSync *fs); -const AVClass *framesync_get_class(void) +const AVClass *ff_framesync_get_class(void) { return &framesync_class; } diff --git a/chromium/third_party/ffmpeg/libavfilter/framesync.h b/chromium/third_party/ffmpeg/libavfilter/framesync.h index abf3bf552b9..37743cccb72 100644 --- a/chromium/third_party/ffmpeg/libavfilter/framesync.h +++ b/chromium/third_party/ffmpeg/libavfilter/framesync.h @@ -211,7 +211,7 @@ typedef struct FFFrameSync { /** * Get the class for the framesync object. */ -const AVClass *framesync_get_class(void); +const AVClass *ff_framesync_get_class(void); /** * Pre-initialize a frame sync structure. @@ -304,11 +304,11 @@ static int name##_framesync_preinit(AVFilterContext *ctx) { \ return 0; \ } \ static const AVClass *name##_child_class_next(const AVClass *prev) { \ - return prev ? NULL : framesync_get_class(); \ + return prev ? NULL : ff_framesync_get_class(); \ } \ static void *name##_child_next(void *obj, void *prev) { \ context *s = obj; \ - s->fs.class = framesync_get_class(); /* FIXME */ \ + s->fs.class = ff_framesync_get_class(); /* FIXME */ \ return prev ? NULL : &s->field; \ } \ static const AVClass name##_class = { \ diff --git a/chromium/third_party/ffmpeg/libavfilter/graphdump.c b/chromium/third_party/ffmpeg/libavfilter/graphdump.c index 73777191d63..8bc7b162d77 100644 --- a/chromium/third_party/ffmpeg/libavfilter/graphdump.c +++ b/chromium/third_party/ffmpeg/libavfilter/graphdump.c @@ -156,7 +156,7 @@ char *avfilter_graph_dump(AVFilterGraph *graph, const char *options) AVBPrint buf; char *dump; - av_bprint_init(&buf, 0, 0); + av_bprint_init(&buf, 0, AV_BPRINT_SIZE_COUNT_ONLY); avfilter_graph_dump_to_buf(&buf, graph); av_bprint_init(&buf, buf.len + 1, buf.len + 1); avfilter_graph_dump_to_buf(&buf, graph); diff --git a/chromium/third_party/ffmpeg/libavfilter/opencl.h b/chromium/third_party/ffmpeg/libavfilter/opencl.h index c0a45197853..1b7f1178653 100644 --- a/chromium/third_party/ffmpeg/libavfilter/opencl.h +++ b/chromium/third_party/ffmpeg/libavfilter/opencl.h @@ -46,6 +46,33 @@ typedef struct OpenCLFilterContext { int output_height; } OpenCLFilterContext; + +/** + * set argument to specific Kernel. + * This macro relies on usage of local label "fail" and variables: + * avctx, cle and err. + */ +#define CL_SET_KERNEL_ARG(kernel, arg_num, type, arg) \ + cle = clSetKernelArg(kernel, arg_num, sizeof(type), arg); \ + if (cle != CL_SUCCESS) { \ + av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " \ + "argument %d: error %d.\n", arg_num, cle); \ + err = AVERROR(EIO); \ + goto fail; \ + } + +/** + * A helper macro to handle OpenCL errors. It will assign errcode to + * variable err, log error msg, and jump to fail label on error. + */ +#define CL_FAIL_ON_ERROR(errcode, ...) do { \ + if (cle != CL_SUCCESS) { \ + av_log(avctx, AV_LOG_ERROR, __VA_ARGS__); \ + err = errcode; \ + goto fail; \ + } \ + } while(0) + /** * Return that all inputs and outputs support only AV_PIX_FMT_OPENCL. */ diff --git a/chromium/third_party/ffmpeg/libavfilter/opencl/colorspace_common.cl b/chromium/third_party/ffmpeg/libavfilter/opencl/colorspace_common.cl new file mode 100644 index 00000000000..94a4dd0e0ee --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/opencl/colorspace_common.cl @@ -0,0 +1,220 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define ST2084_MAX_LUMINANCE 10000.0f +#define REFERENCE_WHITE 100.0f + +#if chroma_loc == 1 + #define chroma_sample(a,b,c,d) (((a) + (c)) * 0.5f) +#elif chroma_loc == 3 + #define chroma_sample(a,b,c,d) (a) +#elif chroma_loc == 4 + #define chroma_sample(a,b,c,d) (((a) + (b)) * 0.5f) +#elif chroma_loc == 5 + #define chroma_sample(a,b,c,d) (c) +#elif chroma_loc == 6 + #define chroma_sample(a,b,c,d) (((c) + (d)) * 0.5f) +#else + #define chroma_sample(a,b,c,d) (((a) + (b) + (c) + (d)) * 0.25f) +#endif + +constant const float ST2084_M1 = 0.1593017578125f; +constant const float ST2084_M2 = 78.84375f; +constant const float ST2084_C1 = 0.8359375f; +constant const float ST2084_C2 = 18.8515625f; +constant const float ST2084_C3 = 18.6875f; + +__constant float yuv2rgb_bt2020[] = { + 1.0f, 0.0f, 1.4746f, + 1.0f, -0.16455f, -0.57135f, + 1.0f, 1.8814f, 0.0f +}; + +__constant float yuv2rgb_bt709[] = { + 1.0f, 0.0f, 1.5748f, + 1.0f, -0.18732f, -0.46812f, + 1.0f, 1.8556f, 0.0f +}; + +__constant float rgb2yuv_bt709[] = { + 0.2126f, 0.7152f, 0.0722f, + -0.11457f, -0.38543f, 0.5f, + 0.5f, -0.45415f, -0.04585f +}; + +__constant float rgb2yuv_bt2020[] ={ + 0.2627f, 0.678f, 0.0593f, + -0.1396f, -0.36037f, 0.5f, + 0.5f, -0.4598f, -0.0402f, +}; + + +float get_luma_dst(float3 c) { + return luma_dst.x * c.x + luma_dst.y * c.y + luma_dst.z * c.z; +} + +float get_luma_src(float3 c) { + return luma_src.x * c.x + luma_src.y * c.y + luma_src.z * c.z; +} + +float3 get_chroma_sample(float3 a, float3 b, float3 c, float3 d) { + return chroma_sample(a, b, c, d); +} + +float eotf_st2084(float x) { + float p = powr(x, 1.0f / ST2084_M2); + float a = max(p -ST2084_C1, 0.0f); + float b = max(ST2084_C2 - ST2084_C3 * p, 1e-6f); + float c = powr(a / b, 1.0f / ST2084_M1); + return x > 0.0f ? c * ST2084_MAX_LUMINANCE / REFERENCE_WHITE : 0.0f; +} + +__constant const float HLG_A = 0.17883277f; +__constant const float HLG_B = 0.28466892f; +__constant const float HLG_C = 0.55991073f; + +// linearizer for HLG +float inverse_oetf_hlg(float x) { + float a = 4.0f * x * x; + float b = exp((x - HLG_C) / HLG_A) + HLG_B; + return x < 0.5f ? a : b; +} + +// delinearizer for HLG +float oetf_hlg(float x) { + float a = 0.5f * sqrt(x); + float b = HLG_A * log(x - HLG_B) + HLG_C; + return x <= 1.0f ? a : b; +} + +float3 ootf_hlg(float3 c, float peak) { + float luma = get_luma_src(c); + float gamma = 1.2f + 0.42f * log10(peak * REFERENCE_WHITE / 1000.0f); + gamma = max(1.0f, gamma); + float factor = peak * powr(luma, gamma - 1.0f) / powr(12.0f, gamma); + return c * factor; +} + +float3 inverse_ootf_hlg(float3 c, float peak) { + float gamma = 1.2f + 0.42f * log10(peak * REFERENCE_WHITE / 1000.0f); + c *= powr(12.0f, gamma) / peak; + c /= powr(get_luma_dst(c), (gamma - 1.0f) / gamma); + return c; +} + +float inverse_eotf_bt1886(float c) { + return c < 0.0f ? 0.0f : powr(c, 1.0f / 2.4f); +} + +float oetf_bt709(float c) { + c = c < 0.0f ? 0.0f : c; + float r1 = 4.5f * c; + float r2 = 1.099f * powr(c, 0.45f) - 0.099f; + return c < 0.018f ? r1 : r2; +} +float inverse_oetf_bt709(float c) { + float r1 = c / 4.5f; + float r2 = powr((c + 0.099f) / 1.099f, 1.0f / 0.45f); + return c < 0.081f ? r1 : r2; +} + +float3 yuv2rgb(float y, float u, float v) { +#ifdef FULL_RANGE_IN + u -= 0.5f; v -= 0.5f; +#else + y = (y * 255.0f - 16.0f) / 219.0f; + u = (u * 255.0f - 128.0f) / 224.0f; + v = (v * 255.0f - 128.0f) / 224.0f; +#endif + float r = y * rgb_matrix[0] + u * rgb_matrix[1] + v * rgb_matrix[2]; + float g = y * rgb_matrix[3] + u * rgb_matrix[4] + v * rgb_matrix[5]; + float b = y * rgb_matrix[6] + u * rgb_matrix[7] + v * rgb_matrix[8]; + return (float3)(r, g, b); +} + +float3 yuv2lrgb(float3 yuv) { + float3 rgb = yuv2rgb(yuv.x, yuv.y, yuv.z); + float r = linearize(rgb.x); + float g = linearize(rgb.y); + float b = linearize(rgb.z); + return (float3)(r, g, b); +} + +float3 rgb2yuv(float r, float g, float b) { + float y = r*yuv_matrix[0] + g*yuv_matrix[1] + b*yuv_matrix[2]; + float u = r*yuv_matrix[3] + g*yuv_matrix[4] + b*yuv_matrix[5]; + float v = r*yuv_matrix[6] + g*yuv_matrix[7] + b*yuv_matrix[8]; +#ifdef FULL_RANGE_OUT + u += 0.5f; v += 0.5f; +#else + y = (219.0f * y + 16.0f) / 255.0f; + u = (224.0f * u + 128.0f) / 255.0f; + v = (224.0f * v + 128.0f) / 255.0f; +#endif + return (float3)(y, u, v); +} + +float rgb2y(float r, float g, float b) { + float y = r*yuv_matrix[0] + g*yuv_matrix[1] + b*yuv_matrix[2]; + y = (219.0f * y + 16.0f) / 255.0f; + return y; +} + +float3 lrgb2yuv(float3 c) { + float r = delinearize(c.x); + float g = delinearize(c.y); + float b = delinearize(c.z); + + return rgb2yuv(r, g, b); +} + +float lrgb2y(float3 c) { + float r = delinearize(c.x); + float g = delinearize(c.y); + float b = delinearize(c.z); + + return rgb2y(r, g, b); +} + +float3 lrgb2lrgb(float3 c) { +#ifdef RGB2RGB_PASSTHROUGH + return c; +#else + float r = c.x, g = c.y, b = c.z; + float rr = rgb2rgb[0] * r + rgb2rgb[1] * g + rgb2rgb[2] * b; + float gg = rgb2rgb[3] * r + rgb2rgb[4] * g + rgb2rgb[5] * b; + float bb = rgb2rgb[6] * r + rgb2rgb[7] * g + rgb2rgb[8] * b; + return (float3)(rr, gg, bb); +#endif +} + +float3 ootf(float3 c, float peak) { +#ifdef ootf_impl + return ootf_impl(c, peak); +#else + return c; +#endif +} + +float3 inverse_ootf(float3 c, float peak) { +#ifdef inverse_ootf_impl + return inverse_ootf_impl(c, peak); +#else + return c; +#endif +} diff --git a/chromium/third_party/ffmpeg/libavfilter/opencl/convolution.cl b/chromium/third_party/ffmpeg/libavfilter/opencl/convolution.cl index 03ef4eff1bc..815c7792725 100644 --- a/chromium/third_party/ffmpeg/libavfilter/opencl/convolution.cl +++ b/chromium/third_party/ffmpeg/libavfilter/opencl/convolution.cl @@ -43,3 +43,85 @@ __kernel void convolution_global(__write_only image2d_t dst, float4 dstPix = convPix * div + bias; write_imagef(dst, loc, dstPix); } + + +__kernel void sobel_global(__write_only image2d_t dst, + __read_only image2d_t src, + float div, + float bias) +{ + const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | + CLK_ADDRESS_CLAMP_TO_EDGE | + CLK_FILTER_NEAREST); + + int2 loc = (int2)(get_global_id(0), get_global_id(1)); + + float4 sum1 = read_imagef(src, sampler, loc + (int2)(-1,-1)) * -1 + + read_imagef(src, sampler, loc + (int2)( 0,-1)) * -2 + + read_imagef(src, sampler, loc + (int2)( 1,-1)) * -1 + + read_imagef(src, sampler, loc + (int2)(-1, 1)) * 1 + + read_imagef(src, sampler, loc + (int2)( 0, 1)) * 2 + + read_imagef(src, sampler, loc + (int2)( 1, 1)) * 1; + + float4 sum2 = read_imagef(src, sampler, loc + (int2)(-1,-1)) * -1 + + read_imagef(src, sampler, loc + (int2)(-1, 0)) * -2 + + read_imagef(src, sampler, loc + (int2)(-1, 1)) * -1 + + read_imagef(src, sampler, loc + (int2)( 1,-1)) * 1 + + read_imagef(src, sampler, loc + (int2)( 1, 0)) * 2 + + read_imagef(src, sampler, loc + (int2)( 1, 1)) * 1; + + float4 dstPix = hypot(sum1, sum2) * div + bias; + write_imagef(dst, loc, dstPix); +} + +__kernel void prewitt_global(__write_only image2d_t dst, + __read_only image2d_t src, + float div, + float bias) +{ + const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | + CLK_ADDRESS_CLAMP_TO_EDGE | + CLK_FILTER_NEAREST); + + int2 loc = (int2)(get_global_id(0), get_global_id(1)); + + float4 sum1 = read_imagef(src, sampler, loc + (int2)(-1,-1)) * 1 + + read_imagef(src, sampler, loc + (int2)( 0,-1)) * 1 + + read_imagef(src, sampler, loc + (int2)( 1,-1)) * 1 + + read_imagef(src, sampler, loc + (int2)(-1, 1)) * -1 + + read_imagef(src, sampler, loc + (int2)( 0, 1)) * -1 + + read_imagef(src, sampler, loc + (int2)( 1, 1)) * -1; + + float4 sum2 = read_imagef(src, sampler, loc + (int2)(-1,-1)) * 1 + + read_imagef(src, sampler, loc + (int2)(-1, 0)) * 1 + + read_imagef(src, sampler, loc + (int2)(-1, 1)) * 1 + + read_imagef(src, sampler, loc + (int2)( 1,-1)) * -1 + + read_imagef(src, sampler, loc + (int2)( 1, 0)) * -1 + + read_imagef(src, sampler, loc + (int2)( 1, 1)) * -1; + + float4 dstPix = hypot(sum1, sum2) * div + bias; + write_imagef(dst, loc, dstPix); +} + +__kernel void roberts_global(__write_only image2d_t dst, + __read_only image2d_t src, + float div, + float bias) +{ + const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | + CLK_ADDRESS_CLAMP_TO_EDGE | + CLK_FILTER_NEAREST); + + int2 loc = (int2)(get_global_id(0), get_global_id(1)); + + float4 sum1 = read_imagef(src, sampler, loc + (int2)(-1,-1)) * 1 + + read_imagef(src, sampler, loc + (int2)( 0,-1)) * -1; + + + float4 sum2 = read_imagef(src, sampler, loc + (int2)(-1, 0)) * -1 + + read_imagef(src, sampler, loc + (int2)( 0, 0)) * 1; + + + float4 dstPix = hypot(sum1, sum2) * div + bias; + write_imagef(dst, loc, dstPix); +} diff --git a/chromium/third_party/ffmpeg/libavfilter/opencl/tonemap.cl b/chromium/third_party/ffmpeg/libavfilter/opencl/tonemap.cl new file mode 100644 index 00000000000..9448ba4552e --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/opencl/tonemap.cl @@ -0,0 +1,272 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define REFERENCE_WHITE 100.0f +extern float3 lrgb2yuv(float3); +extern float lrgb2y(float3); +extern float3 yuv2lrgb(float3); +extern float3 lrgb2lrgb(float3); +extern float get_luma_src(float3); +extern float get_luma_dst(float3); +extern float3 ootf(float3 c, float peak); +extern float3 inverse_ootf(float3 c, float peak); +extern float3 get_chroma_sample(float3, float3, float3, float3); + +struct detection_result { + float peak; + float average; +}; + +float hable_f(float in) { + float a = 0.15f, b = 0.50f, c = 0.10f, d = 0.20f, e = 0.02f, f = 0.30f; + return (in * (in * a + b * c) + d * e) / (in * (in * a + b) + d * f) - e / f; +} + +float direct(float s, float peak) { + return s; +} + +float linear(float s, float peak) { + return s * tone_param / peak; +} + +float gamma(float s, float peak) { + float p = s > 0.05f ? s /peak : 0.05f / peak; + float v = powr(p, 1.0f / tone_param); + return s > 0.05f ? v : (s * v /0.05f); +} + +float clip(float s, float peak) { + return clamp(s * tone_param, 0.0f, 1.0f); +} + +float reinhard(float s, float peak) { + return s / (s + tone_param) * (peak + tone_param) / peak; +} + +float hable(float s, float peak) { + return hable_f(s)/hable_f(peak); +} + +float mobius(float s, float peak) { + float j = tone_param; + float a, b; + + if (s <= j) + return s; + + a = -j * j * (peak - 1.0f) / (j * j - 2.0f * j + peak); + b = (j * j - 2.0f * j * peak + peak) / max(peak - 1.0f, 1e-6f); + + return (b * b + 2.0f * b * j + j * j) / (b - a) * (s + a) / (s + b); +} + +// detect peak/average signal of a frame, the algorithm was ported from: +// libplacebo (https://github.com/haasn/libplacebo) +struct detection_result +detect_peak_avg(global uint *util_buf, __local uint *sum_wg, + float signal, float peak) { +// layout of the util buffer +// +// Name: : Size (units of 4-bytes) +// average buffer : detection_frames + 1 +// peak buffer : detection_frames + 1 +// workgroup counter : 1 +// total of peak : 1 +// total of average : 1 +// frame index : 1 +// frame number : 1 + global uint *avg_buf = util_buf; + global uint *peak_buf = avg_buf + DETECTION_FRAMES + 1; + global uint *counter_wg_p = peak_buf + DETECTION_FRAMES + 1; + global uint *max_total_p = counter_wg_p + 1; + global uint *avg_total_p = max_total_p + 1; + global uint *frame_idx_p = avg_total_p + 1; + global uint *scene_frame_num_p = frame_idx_p + 1; + + uint frame_idx = *frame_idx_p; + uint scene_frame_num = *scene_frame_num_p; + + size_t lidx = get_local_id(0); + size_t lidy = get_local_id(1); + size_t lsizex = get_local_size(0); + size_t lsizey = get_local_size(1); + uint num_wg = get_num_groups(0) * get_num_groups(1); + size_t group_idx = get_group_id(0); + size_t group_idy = get_group_id(1); + struct detection_result r = {peak, sdr_avg}; + if (lidx == 0 && lidy == 0) + *sum_wg = 0; + barrier(CLK_LOCAL_MEM_FENCE); + + // update workgroup sum + atomic_add(sum_wg, (uint)(signal * REFERENCE_WHITE)); + barrier(CLK_LOCAL_MEM_FENCE); + + // update frame peak/avg using work-group-average. + if (lidx == 0 && lidy == 0) { + uint avg_wg = *sum_wg / (lsizex * lsizey); + atomic_max(&peak_buf[frame_idx], avg_wg); + atomic_add(&avg_buf[frame_idx], avg_wg); + } + + if (scene_frame_num > 0) { + float peak = (float)*max_total_p / (REFERENCE_WHITE * scene_frame_num); + float avg = (float)*avg_total_p / (REFERENCE_WHITE * scene_frame_num); + r.peak = max(1.0f, peak); + r.average = max(0.25f, avg); + } + + if (lidx == 0 && lidy == 0 && atomic_add(counter_wg_p, 1) == num_wg - 1) { + *counter_wg_p = 0; + avg_buf[frame_idx] /= num_wg; + + if (scene_threshold > 0.0f) { + uint cur_max = peak_buf[frame_idx]; + uint cur_avg = avg_buf[frame_idx]; + int diff = (int)(scene_frame_num * cur_avg) - (int)*avg_total_p; + + if (abs(diff) > scene_frame_num * scene_threshold * REFERENCE_WHITE) { + for (uint i = 0; i < DETECTION_FRAMES + 1; i++) + avg_buf[i] = 0; + for (uint i = 0; i < DETECTION_FRAMES + 1; i++) + peak_buf[i] = 0; + *avg_total_p = *max_total_p = 0; + *scene_frame_num_p = 0; + avg_buf[frame_idx] = cur_avg; + peak_buf[frame_idx] = cur_max; + } + } + uint next = (frame_idx + 1) % (DETECTION_FRAMES + 1); + // add current frame, subtract next frame + *max_total_p += peak_buf[frame_idx] - peak_buf[next]; + *avg_total_p += avg_buf[frame_idx] - avg_buf[next]; + // reset next frame + peak_buf[next] = avg_buf[next] = 0; + *frame_idx_p = next; + *scene_frame_num_p = min(*scene_frame_num_p + 1, + (uint)DETECTION_FRAMES); + } + return r; +} + +float3 map_one_pixel_rgb(float3 rgb, float peak, float average) { + float sig = max(max(rgb.x, max(rgb.y, rgb.z)), 1e-6f); + + // Rescale the variables in order to bring it into a representation where + // 1.0 represents the dst_peak. This is because all of the tone mapping + // algorithms are defined in such a way that they map to the range [0.0, 1.0]. + if (target_peak > 1.0f) { + sig *= 1.0f / target_peak; + peak *= 1.0f / target_peak; + } + + float sig_old = sig; + + // Scale the signal to compensate for differences in the average brightness + float slope = min(1.0f, sdr_avg / average); + sig *= slope; + peak *= slope; + + // Desaturate the color using a coefficient dependent on the signal level + if (desat_param > 0.0f) { + float luma = get_luma_dst(rgb); + float coeff = max(sig - 0.18f, 1e-6f) / max(sig, 1e-6f); + coeff = native_powr(coeff, 10.0f / desat_param); + rgb = mix(rgb, (float3)luma, (float3)coeff); + sig = mix(sig, luma * slope, coeff); + } + + sig = TONE_FUNC(sig, peak); + + sig = min(sig, 1.0f); + rgb *= (sig/sig_old); + return rgb; +} +// map from source space YUV to destination space RGB +float3 map_to_dst_space_from_yuv(float3 yuv, float peak) { + float3 c = yuv2lrgb(yuv); + c = ootf(c, peak); + c = lrgb2lrgb(c); + return c; +} + +__kernel void tonemap(__write_only image2d_t dst1, + __read_only image2d_t src1, + __write_only image2d_t dst2, + __read_only image2d_t src2, + global uint *util_buf, + float peak + ) +{ + __local uint sum_wg; + const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE | + CLK_ADDRESS_CLAMP_TO_EDGE | + CLK_FILTER_NEAREST); + int xi = get_global_id(0); + int yi = get_global_id(1); + // each work item process four pixels + int x = 2 * xi; + int y = 2 * yi; + + float y0 = read_imagef(src1, sampler, (int2)(x, y)).x; + float y1 = read_imagef(src1, sampler, (int2)(x + 1, y)).x; + float y2 = read_imagef(src1, sampler, (int2)(x, y + 1)).x; + float y3 = read_imagef(src1, sampler, (int2)(x + 1, y + 1)).x; + float2 uv = read_imagef(src2, sampler, (int2)(xi, yi)).xy; + + float3 c0 = map_to_dst_space_from_yuv((float3)(y0, uv.x, uv.y), peak); + float3 c1 = map_to_dst_space_from_yuv((float3)(y1, uv.x, uv.y), peak); + float3 c2 = map_to_dst_space_from_yuv((float3)(y2, uv.x, uv.y), peak); + float3 c3 = map_to_dst_space_from_yuv((float3)(y3, uv.x, uv.y), peak); + + float sig0 = max(c0.x, max(c0.y, c0.z)); + float sig1 = max(c1.x, max(c1.y, c1.z)); + float sig2 = max(c2.x, max(c2.y, c2.z)); + float sig3 = max(c3.x, max(c3.y, c3.z)); + float sig = max(sig0, max(sig1, max(sig2, sig3))); + + struct detection_result r = detect_peak_avg(util_buf, &sum_wg, sig, peak); + + float3 c0_old = c0, c1_old = c1, c2_old = c2; + c0 = map_one_pixel_rgb(c0, r.peak, r.average); + c1 = map_one_pixel_rgb(c1, r.peak, r.average); + c2 = map_one_pixel_rgb(c2, r.peak, r.average); + c3 = map_one_pixel_rgb(c3, r.peak, r.average); + + c0 = inverse_ootf(c0, target_peak); + c1 = inverse_ootf(c1, target_peak); + c2 = inverse_ootf(c2, target_peak); + c3 = inverse_ootf(c3, target_peak); + + y0 = lrgb2y(c0); + y1 = lrgb2y(c1); + y2 = lrgb2y(c2); + y3 = lrgb2y(c3); + float3 chroma_c = get_chroma_sample(c0, c1, c2, c3); + float3 chroma = lrgb2yuv(chroma_c); + + if (xi < get_image_width(dst2) && yi < get_image_height(dst2)) { + write_imagef(dst1, (int2)(x, y), (float4)(y0, 0.0f, 0.0f, 1.0f)); + write_imagef(dst1, (int2)(x+1, y), (float4)(y1, 0.0f, 0.0f, 1.0f)); + write_imagef(dst1, (int2)(x, y+1), (float4)(y2, 0.0f, 0.0f, 1.0f)); + write_imagef(dst1, (int2)(x+1, y+1), (float4)(y3, 0.0f, 0.0f, 1.0f)); + write_imagef(dst2, (int2)(xi, yi), + (float4)(chroma.y, chroma.z, 0.0f, 1.0f)); + } +} diff --git a/chromium/third_party/ffmpeg/libavfilter/opencl_source.h b/chromium/third_party/ffmpeg/libavfilter/opencl_source.h index 4bb996924e4..de4e66e5460 100644 --- a/chromium/third_party/ffmpeg/libavfilter/opencl_source.h +++ b/chromium/third_party/ffmpeg/libavfilter/opencl_source.h @@ -20,8 +20,10 @@ #define AVFILTER_OPENCL_SOURCE_H extern const char *ff_opencl_source_avgblur; +extern const char *ff_opencl_source_colorspace_common; extern const char *ff_opencl_source_convolution; extern const char *ff_opencl_source_overlay; +extern const char *ff_opencl_source_tonemap; extern const char *ff_opencl_source_unsharp; #endif /* AVFILTER_OPENCL_SOURCE_H */ diff --git a/chromium/third_party/ffmpeg/libavfilter/setpts.c b/chromium/third_party/ffmpeg/libavfilter/setpts.c index 4505498bf34..800ba6a83fc 100644 --- a/chromium/third_party/ffmpeg/libavfilter/setpts.c +++ b/chromium/third_party/ffmpeg/libavfilter/setpts.c @@ -57,6 +57,7 @@ static const char *const var_names[] = { "RTCSTART", ///< wallclock (RTC) time at the start of the movie in micro seconds "S", // Number of samples in the current frame "SR", // Audio sample rate + "FR", ///< defined only for constant frame-rate video NULL }; @@ -81,6 +82,7 @@ enum var_name { VAR_RTCSTART, VAR_S, VAR_SR, + VAR_FR, VAR_VARS_NB }; @@ -127,7 +129,8 @@ static int config_input(AVFilterLink *inlink) setpts->var_values[VAR_SAMPLE_RATE] = setpts->type == AVMEDIA_TYPE_AUDIO ? inlink->sample_rate : NAN; - setpts->var_values[VAR_FRAME_RATE] = inlink->frame_rate.num && + setpts->var_values[VAR_FRAME_RATE] = + setpts->var_values[VAR_FR] = inlink->frame_rate.num && inlink->frame_rate.den ? av_q2d(inlink->frame_rate) : NAN; diff --git a/chromium/third_party/ffmpeg/libavfilter/version.h b/chromium/third_party/ffmpeg/libavfilter/version.h index a7be7e64afa..0ac3a2f3a95 100644 --- a/chromium/third_party/ffmpeg/libavfilter/version.h +++ b/chromium/third_party/ffmpeg/libavfilter/version.h @@ -30,7 +30,7 @@ #include "libavutil/version.h" #define LIBAVFILTER_VERSION_MAJOR 7 -#define LIBAVFILTER_VERSION_MINOR 25 +#define LIBAVFILTER_VERSION_MINOR 26 #define LIBAVFILTER_VERSION_MICRO 100 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_avgblur_opencl.c b/chromium/third_party/ffmpeg/libavfilter/vf_avgblur_opencl.c index 48cebb58870..f0e5f01e045 100644 --- a/chromium/third_party/ffmpeg/libavfilter/vf_avgblur_opencl.c +++ b/chromium/third_party/ffmpeg/libavfilter/vf_avgblur_opencl.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2018 Dylan Fernando + * Copyright (c) 2018 Danil Iashchenko * * This file is part of FFmpeg. * @@ -20,16 +21,14 @@ #include "libavutil/common.h" #include "libavutil/imgutils.h" -#include "libavutil/mem.h" #include "libavutil/opt.h" -#include "libavutil/pixdesc.h" #include "avfilter.h" #include "internal.h" #include "opencl.h" #include "opencl_source.h" #include "video.h" - +#include "boxblur.h" typedef struct AverageBlurOpenCLContext { OpenCLFilterContext ocf; @@ -39,10 +38,16 @@ typedef struct AverageBlurOpenCLContext { cl_kernel kernel_vert; cl_command_queue command_queue; - int radius; + int radiusH; int radiusV; int planes; + FilterParam luma_param; + FilterParam chroma_param; + FilterParam alpha_param; + int radius[4]; + int power[4]; + } AverageBlurOpenCLContext; @@ -59,30 +64,16 @@ static int avgblur_opencl_init(AVFilterContext *avctx) ctx->command_queue = clCreateCommandQueue(ctx->ocf.hwctx->context, ctx->ocf.hwctx->device_id, 0, &cle); - if (!ctx->command_queue) { - av_log(avctx, AV_LOG_ERROR, "Failed to create OpenCL " - "command queue: %d.\n", cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create OpenCL " + "command queue %d.\n", cle); ctx->kernel_horiz = clCreateKernel(ctx->ocf.program,"avgblur_horiz", &cle); - if (!ctx->kernel_horiz) { - av_log(avctx, AV_LOG_ERROR, "Failed to create kernel: %d.\n", cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create horizontal " + "kernel %d.\n", cle); ctx->kernel_vert = clCreateKernel(ctx->ocf.program,"avgblur_vert", &cle); - if (!ctx->kernel_vert) { - av_log(avctx, AV_LOG_ERROR, "Failed to create kernel: %d.\n", cle); - err = AVERROR(EIO); - goto fail; - } - - if (ctx->radiusV <= 0) { - ctx->radiusV = ctx->radius; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create vertical " + "kernel %d.\n", cle); ctx->initialised = 1; return 0; @@ -97,6 +88,60 @@ fail: return err; } + +static int avgblur_opencl_make_filter_params(AVFilterLink *inlink) +{ + AVFilterContext *ctx = inlink->dst; + AverageBlurOpenCLContext *s = ctx->priv; + int i; + + if (s->radiusV <= 0) { + s->radiusV = s->radiusH; + } + + for (i = 0; i < 4; i++) { + s->power[i] = 1; + } + return 0; +} + + +static int boxblur_opencl_make_filter_params(AVFilterLink *inlink) +{ + AVFilterContext *ctx = inlink->dst; + AverageBlurOpenCLContext *s = ctx->priv; + int err, i; + + err = ff_boxblur_eval_filter_params(inlink, + &s->luma_param, + &s->chroma_param, + &s->alpha_param); + + if (err != 0) { + av_log(ctx, AV_LOG_ERROR, "Failed to evaluate " + "filter params: %d.\n", err); + return err; + } + + s->radius[Y] = s->luma_param.radius; + s->radius[U] = s->radius[V] = s->chroma_param.radius; + s->radius[A] = s->alpha_param.radius; + + s->power[Y] = s->luma_param.power; + s->power[U] = s->power[V] = s->chroma_param.power; + s->power[A] = s->alpha_param.power; + + for (i = 0; i < 4; i++) { + if (s->power[i] == 0) { + s->power[i] = 1; + s->radius[i] = 0; + } + } + + return 0; +} + + static int avgblur_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) { AVFilterContext *avctx = inlink->dst; @@ -107,7 +152,7 @@ static int avgblur_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) cl_int cle; size_t global_work[2]; cl_mem src, dst, inter; - int err, p, radius_x, radius_y; + int err, p, radius_x, radius_y, i; av_log(ctx, AV_LOG_DEBUG, "Filter input: %s, %ux%u (%"PRId64").\n", av_get_pix_fmt_name(input->format), @@ -121,6 +166,16 @@ static int avgblur_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) if (err < 0) goto fail; + if (!strcmp(avctx->filter->name, "avgblur_opencl")) { + err = avgblur_opencl_make_filter_params(inlink); + if (err < 0) + goto fail; + } else if (!strcmp(avctx->filter->name, "boxblur_opencl")) { + err = boxblur_opencl_make_filter_params(inlink); + if (err < 0) + goto fail; + } + } output = ff_get_video_buffer(outlink, outlink->w, outlink->h); @@ -128,7 +183,6 @@ static int avgblur_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) err = AVERROR(ENOMEM); goto fail; } - intermediate = ff_get_video_buffer(outlink, outlink->w, outlink->h); if (!intermediate) { err = AVERROR(ENOMEM); @@ -137,13 +191,13 @@ static int avgblur_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) for (p = 0; p < FF_ARRAY_ELEMS(output->data); p++) { src = (cl_mem) input->data[p]; - dst = (cl_mem)output->data[p]; - inter = (cl_mem) intermediate->data[p]; + dst = (cl_mem) output->data[p]; + inter = (cl_mem)intermediate->data[p]; if (!dst) break; - radius_x = ctx->radius; + radius_x = ctx->radiusH; radius_y = ctx->radiusV; if (!(ctx->planes & (1 << p))) { @@ -151,97 +205,52 @@ static int avgblur_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) radius_y = 0; } - cle = clSetKernelArg(ctx->kernel_horiz, 0, sizeof(cl_mem), &inter); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "destination image argument: %d.\n", cle); - err = AVERROR_UNKNOWN; - goto fail; - } - cle = clSetKernelArg(ctx->kernel_horiz, 1, sizeof(cl_mem), &src); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "source image argument: %d.\n", cle); - err = AVERROR_UNKNOWN; - goto fail; - } - cle = clSetKernelArg(ctx->kernel_horiz, 2, sizeof(cl_int), &radius_x); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "sizeX argument: %d.\n", cle); - err = AVERROR_UNKNOWN; - goto fail; - } - - err = ff_opencl_filter_work_size_from_image(avctx, global_work, - intermediate, p, 0); - if (err < 0) - goto fail; - - av_log(avctx, AV_LOG_DEBUG, "Run kernel on plane %d " - "(%"SIZE_SPECIFIER"x%"SIZE_SPECIFIER").\n", - p, global_work[0], global_work[1]); - - cle = clEnqueueNDRangeKernel(ctx->command_queue, ctx->kernel_horiz, 2, NULL, - global_work, NULL, - 0, NULL, NULL); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to enqueue kernel: %d.\n", - cle); - err = AVERROR(EIO); - goto fail; - } - - cle = clSetKernelArg(ctx->kernel_vert, 0, sizeof(cl_mem), &dst); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "destination image argument: %d.\n", cle); - err = AVERROR_UNKNOWN; - goto fail; - } - cle = clSetKernelArg(ctx->kernel_vert, 1, sizeof(cl_mem), &inter); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "source image argument: %d.\n", cle); - err = AVERROR_UNKNOWN; - goto fail; - } - cle = clSetKernelArg(ctx->kernel_vert, 2, sizeof(cl_int), &radius_y); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "sizeY argument: %d.\n", cle); - err = AVERROR_UNKNOWN; - goto fail; - } - - err = ff_opencl_filter_work_size_from_image(avctx, global_work, - output, p, 0); - if (err < 0) - goto fail; - - av_log(avctx, AV_LOG_DEBUG, "Run kernel on plane %d " - "(%"SIZE_SPECIFIER"x%"SIZE_SPECIFIER").\n", - p, global_work[0], global_work[1]); - - cle = clEnqueueNDRangeKernel(ctx->command_queue, ctx->kernel_vert, 2, NULL, - global_work, NULL, - 0, NULL, NULL); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to enqueue kernel: %d.\n", - cle); - err = AVERROR(EIO); - goto fail; + for (i = 0; i < ctx->power[p]; i++) { + CL_SET_KERNEL_ARG(ctx->kernel_horiz, 0, cl_mem, &inter); + CL_SET_KERNEL_ARG(ctx->kernel_horiz, 1, cl_mem, i == 0 ? &src : &dst); + if (!strcmp(avctx->filter->name, "avgblur_opencl")) { + CL_SET_KERNEL_ARG(ctx->kernel_horiz, 2, cl_int, &radius_x); + } else if (!strcmp(avctx->filter->name, "boxblur_opencl")) { + CL_SET_KERNEL_ARG(ctx->kernel_horiz, 2, cl_int, &ctx->radius[p]); + } + + err = ff_opencl_filter_work_size_from_image(avctx, global_work, + i == 0 ? intermediate : output, p, 0); + if (err < 0) + goto fail; + + av_log(avctx, AV_LOG_DEBUG, "Run kernel on plane %d " + "(%"SIZE_SPECIFIER"x%"SIZE_SPECIFIER").\n", + p, global_work[0], global_work[1]); + + cle = clEnqueueNDRangeKernel(ctx->command_queue, ctx->kernel_horiz, 2, NULL, + global_work, NULL, + 0, NULL, NULL); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to enqueue horizontal " + "kernel: %d.\n", cle); + + err = ff_opencl_filter_work_size_from_image(avctx, global_work, + i == 0 ? output : intermediate, p, 0); + + CL_SET_KERNEL_ARG(ctx->kernel_vert, 0, cl_mem, &dst); + CL_SET_KERNEL_ARG(ctx->kernel_vert, 1, cl_mem, &inter); + + if (!strcmp(avctx->filter->name, "avgblur_opencl")) { + CL_SET_KERNEL_ARG(ctx->kernel_vert, 2, cl_int, &radius_y); + } else if (!strcmp(avctx->filter->name, "boxblur_opencl")) { + CL_SET_KERNEL_ARG(ctx->kernel_vert, 2, cl_int, &ctx->radius[p]); + } + + cle = clEnqueueNDRangeKernel(ctx->command_queue, ctx->kernel_vert, 2, NULL, + global_work, NULL, + 0, NULL, NULL); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to enqueue vertical " + "kernel: %d.\n", cle); } - } cle = clFinish(ctx->command_queue); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to finish command queue: %d.\n", - cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to finish command queue: %d.\n", cle); err = av_frame_copy_props(output, input); if (err < 0) @@ -264,12 +273,12 @@ fail: return err; } + static av_cold void avgblur_opencl_uninit(AVFilterContext *avctx) { AverageBlurOpenCLContext *ctx = avctx->priv; cl_int cle; - if (ctx->kernel_horiz) { cle = clReleaseKernel(ctx->kernel_horiz); if (cle != CL_SUCCESS) @@ -294,16 +303,6 @@ static av_cold void avgblur_opencl_uninit(AVFilterContext *avctx) ff_opencl_filter_uninit(avctx); } -#define OFFSET(x) offsetof(AverageBlurOpenCLContext, x) -#define FLAGS (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) -static const AVOption avgblur_opencl_options[] = { - { "sizeX", "set horizontal size", OFFSET(radius), AV_OPT_TYPE_INT, {.i64=1}, 1, 1024, FLAGS }, - { "planes", "set planes to filter", OFFSET(planes), AV_OPT_TYPE_INT, {.i64=0xF}, 0, 0xF, FLAGS }, - { "sizeY", "set vertical size", OFFSET(radiusV), AV_OPT_TYPE_INT, {.i64=0}, 0, 1024, FLAGS }, - { NULL } -}; - -AVFILTER_DEFINE_CLASS(avgblur_opencl); static const AVFilterPad avgblur_opencl_inputs[] = { { @@ -315,6 +314,7 @@ static const AVFilterPad avgblur_opencl_inputs[] = { { NULL } }; + static const AVFilterPad avgblur_opencl_outputs[] = { { .name = "default", @@ -324,6 +324,22 @@ static const AVFilterPad avgblur_opencl_outputs[] = { { NULL } }; + +#define OFFSET(x) offsetof(AverageBlurOpenCLContext, x) +#define FLAGS (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) + +#if CONFIG_AVGBLUR_OPENCL_FILTER + +static const AVOption avgblur_opencl_options[] = { + { "sizeX", "set horizontal size", OFFSET(radiusH), AV_OPT_TYPE_INT, {.i64=1}, 1, 1024, FLAGS }, + { "planes", "set planes to filter", OFFSET(planes), AV_OPT_TYPE_INT, {.i64=0xF}, 0, 0xF, FLAGS }, + { "sizeY", "set vertical size", OFFSET(radiusV), AV_OPT_TYPE_INT, {.i64=0}, 0, 1024, FLAGS }, + { NULL } +}; + +AVFILTER_DEFINE_CLASS(avgblur_opencl); + + AVFilter ff_vf_avgblur_opencl = { .name = "avgblur_opencl", .description = NULL_IF_CONFIG_SMALL("Apply average blur filter"), @@ -336,3 +352,44 @@ AVFilter ff_vf_avgblur_opencl = { .outputs = avgblur_opencl_outputs, .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE, }; + +#endif /* CONFIG_AVGBLUR_OPENCL_FILTER */ + + +#if CONFIG_BOXBLUR_OPENCL_FILTER + +static const AVOption boxblur_opencl_options[] = { + { "luma_radius", "Radius of the luma blurring box", OFFSET(luma_param.radius_expr), AV_OPT_TYPE_STRING, {.str="2"}, .flags = FLAGS }, + { "lr", "Radius of the luma blurring box", OFFSET(luma_param.radius_expr), AV_OPT_TYPE_STRING, {.str="2"}, .flags = FLAGS }, + { "luma_power", "How many times should the boxblur be applied to luma", OFFSET(luma_param.power), AV_OPT_TYPE_INT, {.i64=2}, 0, INT_MAX, .flags = FLAGS }, + { "lp", "How many times should the boxblur be applied to luma", OFFSET(luma_param.power), AV_OPT_TYPE_INT, {.i64=2}, 0, INT_MAX, .flags = FLAGS }, + + { "chroma_radius", "Radius of the chroma blurring box", OFFSET(chroma_param.radius_expr), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, + { "cr", "Radius of the chroma blurring box", OFFSET(chroma_param.radius_expr), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, + { "chroma_power", "How many times should the boxblur be applied to chroma", OFFSET(chroma_param.power), AV_OPT_TYPE_INT, {.i64=-1}, -1, INT_MAX, .flags = FLAGS }, + { "cp", "How many times should the boxblur be applied to chroma", OFFSET(chroma_param.power), AV_OPT_TYPE_INT, {.i64=-1}, -1, INT_MAX, .flags = FLAGS }, + + { "alpha_radius", "Radius of the alpha blurring box", OFFSET(alpha_param.radius_expr), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, + { "ar", "Radius of the alpha blurring box", OFFSET(alpha_param.radius_expr), AV_OPT_TYPE_STRING, {.str=NULL}, .flags = FLAGS }, + { "alpha_power", "How many times should the boxblur be applied to alpha", OFFSET(alpha_param.power), AV_OPT_TYPE_INT, {.i64=-1}, -1, INT_MAX, .flags = FLAGS }, + { "ap", "How many times should the boxblur be applied to alpha", OFFSET(alpha_param.power), AV_OPT_TYPE_INT, {.i64=-1}, -1, INT_MAX, .flags = FLAGS }, + + { NULL } +}; + +AVFILTER_DEFINE_CLASS(boxblur_opencl); + +AVFilter ff_vf_boxblur_opencl = { + .name = "boxblur_opencl", + .description = NULL_IF_CONFIG_SMALL("Apply boxblur filter to input video"), + .priv_size = sizeof(AverageBlurOpenCLContext), + .priv_class = &boxblur_opencl_class, + .init = &ff_opencl_filter_init, + .uninit = &avgblur_opencl_uninit, + .query_formats = &ff_opencl_filter_query_formats, + .inputs = avgblur_opencl_inputs, + .outputs = avgblur_opencl_outputs, + .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE, +}; + +#endif /* CONFIG_BOXBLUR_OPENCL_FILTER */ diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_boxblur.c b/chromium/third_party/ffmpeg/libavfilter/vf_boxblur.c index 8e43986846d..bde74084f09 100644 --- a/chromium/third_party/ffmpeg/libavfilter/vf_boxblur.c +++ b/chromium/third_party/ffmpeg/libavfilter/vf_boxblur.c @@ -27,39 +27,13 @@ #include "libavutil/avstring.h" #include "libavutil/common.h" -#include "libavutil/eval.h" #include "libavutil/opt.h" -#include "libavutil/pixdesc.h" #include "avfilter.h" #include "formats.h" #include "internal.h" #include "video.h" +#include "boxblur.h" -static const char *const var_names[] = { - "w", - "h", - "cw", - "ch", - "hsub", - "vsub", - NULL -}; - -enum var_name { - VAR_W, - VAR_H, - VAR_CW, - VAR_CH, - VAR_HSUB, - VAR_VSUB, - VARS_NB -}; - -typedef struct FilterParam { - int radius; - int power; - char *radius_expr; -} FilterParam; typedef struct BoxBlurContext { const AVClass *class; @@ -73,40 +47,6 @@ typedef struct BoxBlurContext { uint8_t *temp[2]; ///< temporary buffer used in blur_power() } BoxBlurContext; -#define Y 0 -#define U 1 -#define V 2 -#define A 3 - -static av_cold int init(AVFilterContext *ctx) -{ - BoxBlurContext *s = ctx->priv; - - if (!s->luma_param.radius_expr) { - av_log(ctx, AV_LOG_ERROR, "Luma radius expression is not set.\n"); - return AVERROR(EINVAL); - } - - /* fill missing params */ - if (!s->chroma_param.radius_expr) { - s->chroma_param.radius_expr = av_strdup(s->luma_param.radius_expr); - if (!s->chroma_param.radius_expr) - return AVERROR(ENOMEM); - } - if (s->chroma_param.power < 0) - s->chroma_param.power = s->luma_param.power; - - if (!s->alpha_param.radius_expr) { - s->alpha_param.radius_expr = av_strdup(s->luma_param.radius_expr); - if (!s->alpha_param.radius_expr) - return AVERROR(ENOMEM); - } - if (s->alpha_param.power < 0) - s->alpha_param.power = s->luma_param.power; - - return 0; -} - static av_cold void uninit(AVFilterContext *ctx) { BoxBlurContext *s = ctx->priv; @@ -138,9 +78,6 @@ static int config_input(AVFilterLink *inlink) AVFilterContext *ctx = inlink->dst; BoxBlurContext *s = ctx->priv; int w = inlink->w, h = inlink->h; - int cw, ch; - double var_values[VARS_NB], res; - char *expr; int ret; if (!(s->temp[0] = av_malloc(2*FFMAX(w, h))) || @@ -150,48 +87,16 @@ static int config_input(AVFilterLink *inlink) s->hsub = desc->log2_chroma_w; s->vsub = desc->log2_chroma_h; - var_values[VAR_W] = inlink->w; - var_values[VAR_H] = inlink->h; - var_values[VAR_CW] = cw = w>>s->hsub; - var_values[VAR_CH] = ch = h>>s->vsub; - var_values[VAR_HSUB] = 1<<s->hsub; - var_values[VAR_VSUB] = 1<<s->vsub; - -#define EVAL_RADIUS_EXPR(comp) \ - expr = s->comp##_param.radius_expr; \ - ret = av_expr_parse_and_eval(&res, expr, var_names, var_values, \ - NULL, NULL, NULL, NULL, NULL, 0, ctx); \ - s->comp##_param.radius = res; \ - if (ret < 0) { \ - av_log(NULL, AV_LOG_ERROR, \ - "Error when evaluating " #comp " radius expression '%s'\n", expr); \ - return ret; \ - } - EVAL_RADIUS_EXPR(luma); - EVAL_RADIUS_EXPR(chroma); - EVAL_RADIUS_EXPR(alpha); - - av_log(ctx, AV_LOG_VERBOSE, - "luma_radius:%d luma_power:%d " - "chroma_radius:%d chroma_power:%d " - "alpha_radius:%d alpha_power:%d " - "w:%d chroma_w:%d h:%d chroma_h:%d\n", - s->luma_param .radius, s->luma_param .power, - s->chroma_param.radius, s->chroma_param.power, - s->alpha_param .radius, s->alpha_param .power, - w, cw, h, ch); - -#define CHECK_RADIUS_VAL(w_, h_, comp) \ - if (s->comp##_param.radius < 0 || \ - 2*s->comp##_param.radius > FFMIN(w_, h_)) { \ - av_log(ctx, AV_LOG_ERROR, \ - "Invalid " #comp " radius value %d, must be >= 0 and <= %d\n", \ - s->comp##_param.radius, FFMIN(w_, h_)/2); \ - return AVERROR(EINVAL); \ + ret = ff_boxblur_eval_filter_params(inlink, + &s->luma_param, + &s->chroma_param, + &s->alpha_param); + + if (ret != 0) { + av_log(ctx, AV_LOG_ERROR, "Failed to evaluate " + "filter params: %d.\n", ret); + return ret; } - CHECK_RADIUS_VAL(w, h, luma); - CHECK_RADIUS_VAL(cw, ch, chroma); - CHECK_RADIUS_VAL(w, h, alpha); s->radius[Y] = s->luma_param.radius; s->radius[U] = s->radius[V] = s->chroma_param.radius; @@ -404,7 +309,6 @@ AVFilter ff_vf_boxblur = { .description = NULL_IF_CONFIG_SMALL("Blur the input."), .priv_size = sizeof(BoxBlurContext), .priv_class = &boxblur_class, - .init = init, .uninit = uninit, .query_formats = query_formats, .inputs = avfilter_vf_boxblur_inputs, diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_colorconstancy.c b/chromium/third_party/ffmpeg/libavfilter/vf_colorconstancy.c new file mode 100644 index 00000000000..7194688dfa0 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/vf_colorconstancy.c @@ -0,0 +1,758 @@ +/* + * Copyright (c) 2018 Mina Sami + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Color Constancy filter + * + * @see http://colorconstancy.com/ + * + * @cite + * J. van de Weijer, Th. Gevers, A. Gijsenij "Edge-Based Color Constancy". + */ + +#include "libavutil/bprint.h" +#include "libavutil/imgutils.h" +#include "libavutil/opt.h" +#include "libavutil/pixdesc.h" + +#include "avfilter.h" +#include "formats.h" +#include "internal.h" +#include "video.h" + +#include <math.h> + +#define GREY_EDGE "greyedge" + +#define NUM_PLANES 3 +#define MAX_DIFF_ORD 2 +#define MAX_META_DATA 4 +#define MAX_DATA 4 + +#define INDEX_TEMP 0 +#define INDEX_DX 1 +#define INDEX_DY 2 +#define INDEX_DXY 3 +#define INDEX_NORM INDEX_DX +#define INDEX_SRC 0 +#define INDEX_DST 1 +#define INDEX_ORD 2 +#define INDEX_DIR 3 +#define DIR_X 0 +#define DIR_Y 1 + +/** + * Used for passing data between threads. + */ +typedef struct ThreadData { + AVFrame *in, *out; + int meta_data[MAX_META_DATA]; + double *data[MAX_DATA][NUM_PLANES]; +} ThreadData; + +/** + * Common struct for all algorithms contexts. + */ +typedef struct ColorConstancyContext { + const AVClass *class; + + int difford; + int minknorm; /**< @minknorm = 0 : getMax instead */ + double sigma; + + int nb_threads; + int planeheight[4]; + int planewidth[4]; + + int filtersize; + double *gauss[MAX_DIFF_ORD+1]; + + double white[NUM_PLANES]; +} ColorConstancyContext; + +#define OFFSET(x) offsetof(ColorConstancyContext, x) +#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM + +#define GINDX(s, i) ( (i) - ((s) >> 2) ) + +/** + * Sets gauss filters used for calculating gauss derivatives. Filter size + * depends on sigma which is a user option hence we calculate these + * filters each time. Also each higher order depends on lower ones. Sigma + * can be zero only at difford = 0, then we only convert data to double + * instead. + * + * @param ctx the filter context. + * + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure. + */ +static int set_gauss(AVFilterContext *ctx) +{ + ColorConstancyContext *s = ctx->priv; + int filtersize = s->filtersize; + int difford = s->difford; + double sigma = s->sigma; + double sum1, sum2; + int i; + + for (i = 0; i <= difford; ++i) { + s->gauss[i] = av_mallocz_array(filtersize, sizeof(*s->gauss[i])); + if (!s->gauss[i]) { + for (; i >= 0; --i) { + av_freep(&s->gauss[i]); + } + av_log(ctx, AV_LOG_ERROR, "Out of memory while allocating gauss buffers.\n"); + return AVERROR(ENOMEM); + } + } + + // Order 0 + av_log(ctx, AV_LOG_TRACE, "Setting 0-d gauss with filtersize = %d.\n", filtersize); + sum1 = 0.0; + if (!sigma) { + s->gauss[0][0] = 1; // Copying data to double instead of convolution + } else { + for (i = 0; i < filtersize; ++i) { + s->gauss[0][i] = exp(- pow(GINDX(filtersize, i), 2.) / (2 * sigma * sigma)) / ( sqrt(2 * M_PI) * sigma ); + sum1 += s->gauss[0][i]; + } + for (i = 0; i < filtersize; ++i) { + s->gauss[0][i] /= sum1; + } + } + // Order 1 + if (difford > 0) { + av_log(ctx, AV_LOG_TRACE, "Setting 1-d gauss with filtersize = %d.\n", filtersize); + sum1 = 0.0; + for (i = 0; i < filtersize; ++i) { + s->gauss[1][i] = - (GINDX(filtersize, i) / pow(sigma, 2)) * s->gauss[0][i]; + sum1 += s->gauss[1][i] *GINDX(filtersize, i); + } + + for (i = 0; i < filtersize; ++i) { + s->gauss[1][i] /= sum1; + } + + // Order 2 + if (difford > 1) { + av_log(ctx, AV_LOG_TRACE, "Setting 2-d gauss with filtersize = %d.\n", filtersize); + sum1 = 0.0; + for (i = 0; i < filtersize; ++i) { + s->gauss[2][i] = ( pow(GINDX(filtersize, i), 2) / pow(sigma, 4) - 1/pow(sigma, 2) ) + * s->gauss[0][i]; + sum1 += s->gauss[2][i]; + } + + sum2 = 0.0; + for (i = 0; i < filtersize; ++i) { + s->gauss[2][i] -= sum1 / (filtersize); + sum2 += (0.5 * GINDX(filtersize, i) * GINDX(filtersize, i) * s->gauss[2][i]); + } + for (i = 0; i < filtersize ; ++i) { + s->gauss[2][i] /= sum2; + } + } + } + return 0; +} + +/** + * Frees up buffers used by grey edge for storing derivatives final + * and intermidiate results. Number of buffers and number of planes + * for last buffer are given so it can be safely called at allocation + * failure instances. + * + * @param td holds the buffers. + * @param nb_buff number of buffers to be freed. + * @param nb_planes number of planes for last buffer to be freed. + */ +static void cleanup_derivative_buffers(ThreadData *td, int nb_buff, int nb_planes) +{ + int b, p; + + for (b = 0; b < nb_buff; ++b) { + for (p = 0; p < NUM_PLANES; ++p) { + av_freep(&td->data[b][p]); + } + } + // Final buffer may not be fully allocated at fail cases + for (p = 0; p < nb_planes; ++p) { + av_freep(&td->data[b][p]); + } +} + +/** + * Allocates buffers used by grey edge for storing derivatives final + * and intermidiate results. + * + * @param ctx the filter context. + * @param td holds the buffers. + * + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure. + */ +static int setup_derivative_buffers(AVFilterContext* ctx, ThreadData *td) +{ + ColorConstancyContext *s = ctx->priv; + int nb_buff = s->difford + 1; + int b, p; + + av_log(ctx, AV_LOG_TRACE, "Allocating %d buffer(s) for grey edge.\n", nb_buff); + for (b = 0; b <= nb_buff; ++b) { // We need difford + 1 buffers + for (p = 0; p < NUM_PLANES; ++p) { + td->data[b][p] = av_mallocz_array(s->planeheight[p] * s->planewidth[p], sizeof(*td->data[b][p])); + if (!td->data[b][p]) { + cleanup_derivative_buffers(td, b + 1, p); + av_log(ctx, AV_LOG_ERROR, "Out of memory while allocating derivatives buffers.\n"); + return AVERROR(ENOMEM); + } + } + } + return 0; +} + +#define CLAMP(x, mx) av_clip((x), 0, (mx-1)) +#define INDX2D(r, c, w) ( (r) * (w) + (c) ) +#define GAUSS(s, sr, sc, sls, sh, sw, g) ( (s)[ INDX2D(CLAMP((sr), (sh)), CLAMP((sc), (sw)), (sls)) ] * (g) ) + +/** + * Slice calculation of gaussian derivatives. Applies 1-D gaussian derivative filter + * either horizontally or vertically according to meta data given in thread data. + * When convoluting horizontally source is always the in frame withing thread data + * while when convoluting vertically source is a buffer. + * + * @param ctx the filter context. + * @param arg data to be passed between threads. + * @param jobnr current job nubmer. + * @param nb_jobs total number of jobs. + * + * @return 0. + */ +static int slice_get_derivative(AVFilterContext* ctx, void* arg, int jobnr, int nb_jobs) +{ + ColorConstancyContext *s = ctx->priv; + ThreadData *td = arg; + AVFrame *in = td->in; + const int ord = td->meta_data[INDEX_ORD]; + const int dir = td->meta_data[INDEX_DIR]; + const int src_index = td->meta_data[INDEX_SRC]; + const int dst_index = td->meta_data[INDEX_DST]; + const int filtersize = s->filtersize; + const double *gauss = s->gauss[ord]; + int plane; + + for (plane = 0; plane < NUM_PLANES; ++plane) { + const int height = s->planeheight[plane]; + const int width = s->planewidth[plane]; + const int in_linesize = in->linesize[plane]; + double *dst = td->data[dst_index][plane]; + int slice_start, slice_end; + int r, c, g; + + if (dir == DIR_X) { + /** Applying gauss horizontally along each row */ + const uint8_t *src = in->data[plane]; + slice_start = (height * jobnr ) / nb_jobs; + slice_end = (height * (jobnr + 1)) / nb_jobs; + + for (r = slice_start; r < slice_end; ++r) { + for (c = 0; c < width; ++c) { + dst[INDX2D(r, c, width)] = 0; + for (g = 0; g < filtersize; ++g) { + dst[INDX2D(r, c, width)] += GAUSS(src, r, c + GINDX(filtersize, g), + in_linesize, height, width, gauss[GINDX(filtersize, g)]); + } + } + } + } else { + /** Applying gauss vertically along each column */ + const double *src = td->data[src_index][plane]; + slice_start = (width * jobnr ) / nb_jobs; + slice_end = (width * (jobnr + 1)) / nb_jobs; + + for (c = slice_start; c < slice_end; ++c) { + for (r = 0; r < height; ++r) { + dst[INDX2D(r, c, width)] = 0; + for (g = 0; g < filtersize; ++g) { + dst[INDX2D(r, c, width)] += GAUSS(src, r + GINDX(filtersize, g), c, + width, height, width, gauss[GINDX(filtersize, g)]); + } + } + } + } + + } + return 0; +} + +/** + * Slice Frobius normalization of gaussian derivatives. Only called for difford values of + * 1 or 2. + * + * @param ctx the filter context. + * @param arg data to be passed between threads. + * @param jobnr current job nubmer. + * @param nb_jobs total number of jobs. + * + * @return 0. + */ +static int slice_normalize(AVFilterContext* ctx, void* arg, int jobnr, int nb_jobs) +{ + ColorConstancyContext *s = ctx->priv; + ThreadData *td = arg; + const int difford = s->difford; + int plane; + + for (plane = 0; plane < NUM_PLANES; ++plane) { + const int height = s->planeheight[plane]; + const int width = s->planewidth[plane]; + const int64_t numpixels = width * (int64_t)height; + const int slice_start = (numpixels * jobnr ) / nb_jobs; + const int slice_end = (numpixels * (jobnr+1)) / nb_jobs; + const double *dx = td->data[INDEX_DX][plane]; + const double *dy = td->data[INDEX_DY][plane]; + double *norm = td->data[INDEX_NORM][plane]; + int i; + + if (difford == 1) { + for (i = slice_start; i < slice_end; ++i) { + norm[i] = sqrt( pow(dx[i], 2) + pow(dy[i], 2)); + } + } else { + const double *dxy = td->data[INDEX_DXY][plane]; + for (i = slice_start; i < slice_end; ++i) { + norm[i] = sqrt( pow(dx[i], 2) + 4 * pow(dxy[i], 2) + pow(dy[i], 2) ); + } + } + } + + return 0; +} + +/** + * Utility function for setting up differentiation data/metadata. + * + * @param ctx the filter context. + * @param td to be used for passing data between threads. + * @param ord ord of differentiation. + * @param dir direction of differentiation. + * @param src index of source used for differentiation. + * @param dst index destination used for saving differentiation result. + * @param dim maximum dimension in current direction. + * @param nb_threads number of threads to use. + */ +static void av_always_inline +get_deriv(AVFilterContext *ctx, ThreadData *td, int ord, int dir, + int src, int dst, int dim, int nb_threads) { + td->meta_data[INDEX_ORD] = ord; + td->meta_data[INDEX_DIR] = dir; + td->meta_data[INDEX_SRC] = src; + td->meta_data[INDEX_DST] = dst; + ctx->internal->execute(ctx, slice_get_derivative, td, NULL, FFMIN(dim, nb_threads)); +} + +/** + * Main control function for calculating gaussian derivatives. + * + * @param ctx the filter context. + * @param td holds the buffers used for storing results. + * + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure. + */ +static int get_derivative(AVFilterContext *ctx, ThreadData *td) +{ + ColorConstancyContext *s = ctx->priv; + int nb_threads = s->nb_threads; + int height = s->planeheight[1]; + int width = s->planewidth[1]; + + switch(s->difford) { + case 0: + if (!s->sigma) { // Only copy once + get_deriv(ctx, td, 0, DIR_X, 0 , INDEX_NORM, height, nb_threads); + } else { + get_deriv(ctx, td, 0, DIR_X, 0, INDEX_TEMP, height, nb_threads); + get_deriv(ctx, td, 0, DIR_Y, INDEX_TEMP, INDEX_NORM, width , nb_threads); + // save to INDEX_NORM because this will not be normalied and + // end gry edge filter expects result to be found in INDEX_NORM + } + return 0; + + case 1: + get_deriv(ctx, td, 1, DIR_X, 0, INDEX_TEMP, height, nb_threads); + get_deriv(ctx, td, 0, DIR_Y, INDEX_TEMP, INDEX_DX, width , nb_threads); + + get_deriv(ctx, td, 0, DIR_X, 0, INDEX_TEMP, height, nb_threads); + get_deriv(ctx, td, 1, DIR_Y, INDEX_TEMP, INDEX_DY, width , nb_threads); + return 0; + + case 2: + get_deriv(ctx, td, 2, DIR_X, 0, INDEX_TEMP, height, nb_threads); + get_deriv(ctx, td, 0, DIR_Y, INDEX_TEMP, INDEX_DX, width , nb_threads); + + get_deriv(ctx, td, 0, DIR_X, 0, INDEX_TEMP, height, nb_threads); + get_deriv(ctx, td, 2, DIR_Y, INDEX_TEMP, INDEX_DY, width , nb_threads); + + get_deriv(ctx, td, 1, DIR_X, 0, INDEX_TEMP, height, nb_threads); + get_deriv(ctx, td, 1, DIR_Y, INDEX_TEMP, INDEX_DXY, width , nb_threads); + return 0; + + default: + av_log(ctx, AV_LOG_ERROR, "Unsupported difford value: %d.\n", s->difford); + return AVERROR(EINVAL); + } + +} + +/** + * Slice function for grey edge algorithm that does partial summing/maximizing + * of gaussian derivatives. + * + * @param ctx the filter context. + * @param arg data to be passed between threads. + * @param jobnr current job nubmer. + * @param nb_jobs total number of jobs. + * + * @return 0. + */ +static int filter_slice_grey_edge(AVFilterContext* ctx, void* arg, int jobnr, int nb_jobs) +{ + ColorConstancyContext *s = ctx->priv; + ThreadData *td = arg; + AVFrame *in = td->in; + int minknorm = s->minknorm; + const uint8_t thresh = 255; + int plane; + + for (plane = 0; plane < NUM_PLANES; ++plane) { + const int height = s->planeheight[plane]; + const int width = s->planewidth[plane]; + const int in_linesize = in->linesize[plane]; + const int slice_start = (height * jobnr) / nb_jobs; + const int slice_end = (height * (jobnr+1)) / nb_jobs; + const uint8_t *img_data = in->data[plane]; + const double *src = td->data[INDEX_NORM][plane]; + double *dst = td->data[INDEX_DST][plane]; + int r, c; + + dst[jobnr] = 0; + if (!minknorm) { + for (r = slice_start; r < slice_end; ++r) { + for (c = 0; c < width; ++c) { + dst[jobnr] = FFMAX( dst[jobnr], fabs(src[INDX2D(r, c, width)]) + * (img_data[INDX2D(r, c, in_linesize)] < thresh) ); + } + } + } else { + for (r = slice_start; r < slice_end; ++r) { + for (c = 0; c < width; ++c) { + dst[jobnr] += ( pow( fabs(src[INDX2D(r, c, width)] / 255.), minknorm) + * (img_data[INDX2D(r, c, in_linesize)] < thresh) ); + } + } + } + } + return 0; +} + +/** + * Main control function for grey edge algorithm. + * + * @param ctx the filter context. + * @param in frame to perfrom grey edge on. + * + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure. + */ +static int filter_grey_edge(AVFilterContext *ctx, AVFrame *in) +{ + ColorConstancyContext *s = ctx->priv; + ThreadData td; + int minknorm = s->minknorm; + int difford = s->difford; + double *white = s->white; + int nb_jobs = FFMIN3(s->planeheight[1], s->planewidth[1], s->nb_threads); + int plane, job, ret; + + td.in = in; + ret = setup_derivative_buffers(ctx, &td); + if (ret) { + return ret; + } + get_derivative(ctx, &td); + if (difford > 0) { + ctx->internal->execute(ctx, slice_normalize, &td, NULL, nb_jobs); + } + + ctx->internal->execute(ctx, filter_slice_grey_edge, &td, NULL, nb_jobs); + if (!minknorm) { + for (plane = 0; plane < NUM_PLANES; ++plane) { + white[plane] = 0; // All values are absolute + for (job = 0; job < nb_jobs; ++job) { + white[plane] = FFMAX(white[plane] , td.data[INDEX_DST][plane][job]); + } + } + } else { + for (plane = 0; plane < NUM_PLANES; ++plane) { + white[plane] = 0; + for (job = 0; job < nb_jobs; ++job) { + white[plane] += td.data[INDEX_DST][plane][job]; + } + white[plane] = pow(white[plane], 1./minknorm); + } + } + + cleanup_derivative_buffers(&td, difford + 1, NUM_PLANES); + return 0; +} + +/** + * Normalizes estimated illumination since only illumination vector + * direction is required for color constancy. + * + * @param light the estimated illumination to be normalized in place + */ +static void normalize_light(double *light) +{ + double abs_val = pow( pow(light[0], 2.0) + pow(light[1], 2.0) + pow(light[2], 2.0), 0.5); + int plane; + + // TODO: check if setting to 1.0 when estimated = 0.0 is the best thing to do + + if (!abs_val) { + for (plane = 0; plane < NUM_PLANES; ++plane) { + light[plane] = 1.0; + } + } else { + for (plane = 0; plane < NUM_PLANES; ++plane) { + light[plane] = (light[plane] / abs_val); + if (!light[plane]) { // to avoid division by zero when correcting + light[plane] = 1.0; + } + } + } +} + +/** + * Redirects to corresponding algorithm estimation function and performs normalization + * after estimation. + * + * @param ctx the filter context. + * @param in frame to perfrom estimation on. + * + * @return 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure. + */ +static int illumination_estimation(AVFilterContext *ctx, AVFrame *in) +{ + ColorConstancyContext *s = ctx->priv; + int ret; + + ret = filter_grey_edge(ctx, in); + + av_log(ctx, AV_LOG_DEBUG, "Estimated illumination= %f %f %f\n", + s->white[0], s->white[1], s->white[2]); + normalize_light(s->white); + av_log(ctx, AV_LOG_DEBUG, "Estimated illumination after normalization= %f %f %f\n", + s->white[0], s->white[1], s->white[2]); + + return ret; +} + +/** + * Performs simple correction via diagonal transformation model. + * + * @param ctx the filter context. + * @param arg data to be passed between threads. + * @param jobnr current job nubmer. + * @param nb_jobs total number of jobs. + * + * @return 0. + */ +static int diagonal_transformation(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) +{ + ColorConstancyContext *s = ctx->priv; + ThreadData *td = arg; + AVFrame *in = td->in; + AVFrame *out = td->out; + double sqrt3 = pow(3.0, 0.5); + int plane; + + for (plane = 0; plane < NUM_PLANES; ++plane) { + const int height = s->planeheight[plane]; + const int width = s->planewidth[plane]; + const int64_t numpixels = width * (int64_t)height; + const int slice_start = (numpixels * jobnr) / nb_jobs; + const int slice_end = (numpixels * (jobnr+1)) / nb_jobs; + const uint8_t *src = in->data[plane]; + uint8_t *dst = out->data[plane]; + double temp; + unsigned i; + + for (i = slice_start; i < slice_end; ++i) { + temp = src[i] / (s->white[plane] * sqrt3); + dst[i] = av_clip_uint8((int)(temp + 0.5)); + } + } + return 0; +} + +/** + * Main control function for correcting scene illumination based on + * estimated illumination. + * + * @param ctx the filter context. + * @param in holds frame to correct + * @param out holds corrected frame + */ +static void chromatic_adaptation(AVFilterContext *ctx, AVFrame *in, AVFrame *out) +{ + ColorConstancyContext *s = ctx->priv; + ThreadData td; + int nb_jobs = FFMIN3(s->planeheight[1], s->planewidth[1], s->nb_threads); + + td.in = in; + td.out = out; + ctx->internal->execute(ctx, diagonal_transformation, &td, NULL, nb_jobs); +} + +static int query_formats(AVFilterContext *ctx) +{ + static const enum AVPixelFormat pix_fmts[] = { + // TODO: support more formats + // FIXME: error when saving to .jpg + AV_PIX_FMT_GBRP, + AV_PIX_FMT_NONE + }; + + return ff_set_common_formats(ctx, ff_make_format_list(pix_fmts)); +} + +static int config_props(AVFilterLink *inlink) +{ + AVFilterContext *ctx = inlink->dst; + ColorConstancyContext *s = ctx->priv; + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format); + const double break_off_sigma = 3.0; + double sigma = s->sigma; + int ret; + + if (!sigma && s->difford) { + av_log(ctx, AV_LOG_ERROR, "Sigma can't be set to 0 when difford > 0.\n"); + return AVERROR(EINVAL); + } + + s->filtersize = 2 * floor(break_off_sigma * s->sigma + 0.5) + 1; + if (ret=set_gauss(ctx)) { + return ret; + } + + s->nb_threads = ff_filter_get_nb_threads(ctx); + s->planewidth[1] = s->planewidth[2] = AV_CEIL_RSHIFT(inlink->w, desc->log2_chroma_w); + s->planewidth[0] = s->planewidth[3] = inlink->w; + s->planeheight[1] = s->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h); + s->planeheight[0] = s->planeheight[3] = inlink->h; + + return 0; +} + +static int filter_frame(AVFilterLink *inlink, AVFrame *in) +{ + AVFilterContext *ctx = inlink->dst; + AVFilterLink *outlink = ctx->outputs[0]; + AVFrame *out; + int ret; + + ret = illumination_estimation(ctx, in); + if (ret) { + return ret; + } + + if (av_frame_is_writable(in)) { + out = in; + } else { + out = ff_get_video_buffer(outlink, outlink->w, outlink->h); + if (!out) { + av_log(ctx, AV_LOG_ERROR, "Out of memory while allocating output video buffer.\n"); + return AVERROR(ENOMEM); + } + av_frame_copy_props(out, in); + } + chromatic_adaptation(ctx, in, out); + + return ff_filter_frame(outlink, out); +} + +static av_cold void uninit(AVFilterContext *ctx) +{ + ColorConstancyContext *s = ctx->priv; + int difford = s->difford; + int i; + + for (i = 0; i <= difford; ++i) { + av_freep(&s->gauss[i]); + } +} + +static const AVFilterPad colorconstancy_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_props, + .filter_frame = filter_frame, + }, + { NULL } +}; + +static const AVFilterPad colorconstancy_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + +#if CONFIG_GREYEDGE_FILTER + +static const AVOption greyedge_options[] = { + { "difford", "set differentiation order", OFFSET(difford), AV_OPT_TYPE_INT, {.i64=1}, 0, 2, FLAGS }, + { "minknorm", "set Minkowski norm", OFFSET(minknorm), AV_OPT_TYPE_INT, {.i64=1}, 0, 65535, FLAGS }, + { "sigma", "set sigma", OFFSET(sigma), AV_OPT_TYPE_DOUBLE, {.dbl=1}, 0.0, 1024.0, FLAGS }, + { NULL } +}; + +AVFILTER_DEFINE_CLASS(greyedge); + +AVFilter ff_vf_greyedge = { + .name = GREY_EDGE, + .description = NULL_IF_CONFIG_SMALL("Estimates scene illumination by grey edge assumption."), + .priv_size = sizeof(ColorConstancyContext), + .priv_class = &greyedge_class, + .query_formats = query_formats, + .uninit = uninit, + .inputs = colorconstancy_inputs, + .outputs = colorconstancy_outputs, + .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS, +}; + +#endif /* CONFIG_GREY_EDGE_FILTER */ diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_colorspace.c b/chromium/third_party/ffmpeg/libavfilter/vf_colorspace.c index 71ea08a20fe..56621d15e26 100644 --- a/chromium/third_party/ffmpeg/libavfilter/vf_colorspace.c +++ b/chromium/third_party/ffmpeg/libavfilter/vf_colorspace.c @@ -33,6 +33,7 @@ #include "formats.h" #include "internal.h" #include "video.h" +#include "colorspace.h" enum DitherMode { DITHER_NONE, @@ -110,21 +111,13 @@ static const enum AVColorSpace default_csp[CS_NB + 1] = { struct ColorPrimaries { enum Whitepoint wp; - double xr, yr, xg, yg, xb, yb; + struct PrimaryCoefficients coeff; }; struct TransferCharacteristics { double alpha, beta, gamma, delta; }; -struct LumaCoefficients { - double cr, cg, cb; -}; - -struct WhitepointCoefficients { - double xw, yw; -}; - typedef struct ColorSpaceContext { const AVClass *class; @@ -286,57 +279,30 @@ static const struct WhitepointCoefficients whitepoint_coefficients[WP_NB] = { }; static const struct ColorPrimaries color_primaries[AVCOL_PRI_NB] = { - [AVCOL_PRI_BT709] = { WP_D65, 0.640, 0.330, 0.300, 0.600, 0.150, 0.060 }, - [AVCOL_PRI_BT470M] = { WP_C, 0.670, 0.330, 0.210, 0.710, 0.140, 0.080 }, - [AVCOL_PRI_BT470BG] = { WP_D65, 0.640, 0.330, 0.290, 0.600, 0.150, 0.060,}, - [AVCOL_PRI_SMPTE170M] = { WP_D65, 0.630, 0.340, 0.310, 0.595, 0.155, 0.070 }, - [AVCOL_PRI_SMPTE240M] = { WP_D65, 0.630, 0.340, 0.310, 0.595, 0.155, 0.070 }, - [AVCOL_PRI_SMPTE428] = { WP_E, 0.735, 0.265, 0.274, 0.718, 0.167, 0.009 }, - [AVCOL_PRI_SMPTE431] = { WP_DCI, 0.680, 0.320, 0.265, 0.690, 0.150, 0.060 }, - [AVCOL_PRI_SMPTE432] = { WP_D65, 0.680, 0.320, 0.265, 0.690, 0.150, 0.060 }, - [AVCOL_PRI_FILM] = { WP_C, 0.681, 0.319, 0.243, 0.692, 0.145, 0.049 }, - [AVCOL_PRI_BT2020] = { WP_D65, 0.708, 0.292, 0.170, 0.797, 0.131, 0.046 }, - [AVCOL_PRI_JEDEC_P22] = { WP_D65, 0.630, 0.340, 0.295, 0.605, 0.155, 0.077 }, + [AVCOL_PRI_BT709] = { WP_D65, { 0.640, 0.330, 0.300, 0.600, 0.150, 0.060 } }, + [AVCOL_PRI_BT470M] = { WP_C, { 0.670, 0.330, 0.210, 0.710, 0.140, 0.080 } }, + [AVCOL_PRI_BT470BG] = { WP_D65, { 0.640, 0.330, 0.290, 0.600, 0.150, 0.060 } }, + [AVCOL_PRI_SMPTE170M] = { WP_D65, { 0.630, 0.340, 0.310, 0.595, 0.155, 0.070 } }, + [AVCOL_PRI_SMPTE240M] = { WP_D65, { 0.630, 0.340, 0.310, 0.595, 0.155, 0.070 } }, + [AVCOL_PRI_SMPTE428] = { WP_E, { 0.735, 0.265, 0.274, 0.718, 0.167, 0.009 } }, + [AVCOL_PRI_SMPTE431] = { WP_DCI, { 0.680, 0.320, 0.265, 0.690, 0.150, 0.060 } }, + [AVCOL_PRI_SMPTE432] = { WP_D65, { 0.680, 0.320, 0.265, 0.690, 0.150, 0.060 } }, + [AVCOL_PRI_FILM] = { WP_C, { 0.681, 0.319, 0.243, 0.692, 0.145, 0.049 } }, + [AVCOL_PRI_BT2020] = { WP_D65, { 0.708, 0.292, 0.170, 0.797, 0.131, 0.046 } }, + [AVCOL_PRI_JEDEC_P22] = { WP_D65, { 0.630, 0.340, 0.295, 0.605, 0.155, 0.077 } }, }; static const struct ColorPrimaries *get_color_primaries(enum AVColorPrimaries prm) { - const struct ColorPrimaries *coeffs; + const struct ColorPrimaries *p; if (prm >= AVCOL_PRI_NB) return NULL; - coeffs = &color_primaries[prm]; - if (!coeffs->xr) + p = &color_primaries[prm]; + if (!p->coeff.xr) return NULL; - return coeffs; -} - -static void invert_matrix3x3(const double in[3][3], double out[3][3]) -{ - double m00 = in[0][0], m01 = in[0][1], m02 = in[0][2], - m10 = in[1][0], m11 = in[1][1], m12 = in[1][2], - m20 = in[2][0], m21 = in[2][1], m22 = in[2][2]; - int i, j; - double det; - - out[0][0] = (m11 * m22 - m21 * m12); - out[0][1] = -(m01 * m22 - m21 * m02); - out[0][2] = (m01 * m12 - m11 * m02); - out[1][0] = -(m10 * m22 - m20 * m12); - out[1][1] = (m00 * m22 - m20 * m02); - out[1][2] = -(m00 * m12 - m10 * m02); - out[2][0] = (m10 * m21 - m20 * m11); - out[2][1] = -(m00 * m21 - m20 * m01); - out[2][2] = (m00 * m11 - m10 * m01); - - det = m00 * out[0][0] + m10 * out[0][1] + m20 * out[0][2]; - det = 1.0 / det; - - for (i = 0; i < 3; i++) { - for (j = 0; j < 3; j++) - out[i][j] *= det; - } + return p; } static int fill_gamma_table(ColorSpaceContext *s) @@ -380,49 +346,6 @@ static int fill_gamma_table(ColorSpaceContext *s) } /* - * see e.g. http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html - */ -static void fill_rgb2xyz_table(const struct ColorPrimaries *coeffs, - double rgb2xyz[3][3]) -{ - const struct WhitepointCoefficients *wp = &whitepoint_coefficients[coeffs->wp]; - double i[3][3], sr, sg, sb, zw; - - rgb2xyz[0][0] = coeffs->xr / coeffs->yr; - rgb2xyz[0][1] = coeffs->xg / coeffs->yg; - rgb2xyz[0][2] = coeffs->xb / coeffs->yb; - rgb2xyz[1][0] = rgb2xyz[1][1] = rgb2xyz[1][2] = 1.0; - rgb2xyz[2][0] = (1.0 - coeffs->xr - coeffs->yr) / coeffs->yr; - rgb2xyz[2][1] = (1.0 - coeffs->xg - coeffs->yg) / coeffs->yg; - rgb2xyz[2][2] = (1.0 - coeffs->xb - coeffs->yb) / coeffs->yb; - invert_matrix3x3(rgb2xyz, i); - zw = 1.0 - wp->xw - wp->yw; - sr = i[0][0] * wp->xw + i[0][1] * wp->yw + i[0][2] * zw; - sg = i[1][0] * wp->xw + i[1][1] * wp->yw + i[1][2] * zw; - sb = i[2][0] * wp->xw + i[2][1] * wp->yw + i[2][2] * zw; - rgb2xyz[0][0] *= sr; - rgb2xyz[0][1] *= sg; - rgb2xyz[0][2] *= sb; - rgb2xyz[1][0] *= sr; - rgb2xyz[1][1] *= sg; - rgb2xyz[1][2] *= sb; - rgb2xyz[2][0] *= sr; - rgb2xyz[2][1] *= sg; - rgb2xyz[2][2] *= sb; -} - -static void mul3x3(double dst[3][3], const double src1[3][3], const double src2[3][3]) -{ - int m, n; - - for (m = 0; m < 3; m++) - for (n = 0; n < 3; n++) - dst[m][n] = src2[m][0] * src1[0][n] + - src2[m][1] * src1[1][n] + - src2[m][2] * src1[2][n]; -} - -/* * See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html * This function uses the Bradford mechanism. */ @@ -448,7 +371,7 @@ static void fill_whitepoint_conv_table(double out[3][3], enum WhitepointAdaptati double mai[3][3], fac[3][3], tmp[3][3]; double rs, gs, bs, rd, gd, bd; - invert_matrix3x3(ma, mai); + ff_matrix_invert_3x3(ma, mai); rs = ma[0][0] * wp_src->xw + ma[0][1] * wp_src->yw + ma[0][2] * zw_src; gs = ma[1][0] * wp_src->xw + ma[1][1] * wp_src->yw + ma[1][2] * zw_src; bs = ma[2][0] * wp_src->xw + ma[2][1] * wp_src->yw + ma[2][2] * zw_src; @@ -459,8 +382,8 @@ static void fill_whitepoint_conv_table(double out[3][3], enum WhitepointAdaptati fac[1][1] = gd / gs; fac[2][2] = bd / bs; fac[0][1] = fac[0][2] = fac[1][0] = fac[1][2] = fac[2][0] = fac[2][1] = 0.0; - mul3x3(tmp, ma, fac); - mul3x3(out, tmp, mai); + ff_matrix_mul_3x3(tmp, ma, fac); + ff_matrix_mul_3x3(out, tmp, mai); } static void apply_lut(int16_t *buf[3], ptrdiff_t stride, @@ -661,20 +584,23 @@ static int create_filtergraph(AVFilterContext *ctx, sizeof(*s->in_primaries)); if (!s->lrgb2lrgb_passthrough) { double rgb2xyz[3][3], xyz2rgb[3][3], rgb2rgb[3][3]; + const struct WhitepointCoefficients *wp_out, *wp_in; - fill_rgb2xyz_table(s->out_primaries, rgb2xyz); - invert_matrix3x3(rgb2xyz, xyz2rgb); - fill_rgb2xyz_table(s->in_primaries, rgb2xyz); + wp_out = &whitepoint_coefficients[s->out_primaries->wp]; + wp_in = &whitepoint_coefficients[s->in_primaries->wp]; + ff_fill_rgb2xyz_table(&s->out_primaries->coeff, wp_out, rgb2xyz); + ff_matrix_invert_3x3(rgb2xyz, xyz2rgb); + ff_fill_rgb2xyz_table(&s->in_primaries->coeff, wp_in, rgb2xyz); if (s->out_primaries->wp != s->in_primaries->wp && s->wp_adapt != WP_ADAPT_IDENTITY) { double wpconv[3][3], tmp[3][3]; fill_whitepoint_conv_table(wpconv, s->wp_adapt, s->in_primaries->wp, s->out_primaries->wp); - mul3x3(tmp, rgb2xyz, wpconv); - mul3x3(rgb2rgb, tmp, xyz2rgb); + ff_matrix_mul_3x3(tmp, rgb2xyz, wpconv); + ff_matrix_mul_3x3(rgb2rgb, tmp, xyz2rgb); } else { - mul3x3(rgb2rgb, rgb2xyz, xyz2rgb); + ff_matrix_mul_3x3(rgb2rgb, rgb2xyz, xyz2rgb); } for (m = 0; m < 3; m++) for (n = 0; n < 3; n++) { @@ -799,7 +725,7 @@ static int create_filtergraph(AVFilterContext *ctx, for (n = 0; n < 8; n++) s->yuv_offset[0][n] = off; fill_rgb2yuv_table(s->in_lumacoef, rgb2yuv); - invert_matrix3x3(rgb2yuv, yuv2rgb); + ff_matrix_invert_3x3(rgb2yuv, yuv2rgb); bits = 1 << (in_desc->comp[0].depth - 1); for (n = 0; n < 3; n++) { for (in_rng = s->in_y_rng, m = 0; m < 3; m++, in_rng = s->in_uv_rng) { @@ -855,7 +781,7 @@ static int create_filtergraph(AVFilterContext *ctx, double yuv2yuv[3][3]; int in_rng, out_rng; - mul3x3(yuv2yuv, yuv2rgb, rgb2yuv); + ff_matrix_mul_3x3(yuv2yuv, yuv2rgb, rgb2yuv); for (out_rng = s->out_y_rng, m = 0; m < 3; m++, out_rng = s->out_uv_rng) { for (in_rng = s->in_y_rng, n = 0; n < 3; n++, in_rng = s->in_uv_rng) { s->yuv2yuv_coeffs[m][n][0] = diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_convolution_opencl.c b/chromium/third_party/ffmpeg/libavfilter/vf_convolution_opencl.c index 2df51e05340..00246b2e435 100644 --- a/chromium/third_party/ffmpeg/libavfilter/vf_convolution_opencl.c +++ b/chromium/third_party/ffmpeg/libavfilter/vf_convolution_opencl.c @@ -47,12 +47,16 @@ typedef struct ConvolutionOpenCLContext { cl_float rdivs[4]; cl_float biases[4]; -} ConvolutionOpenCLContext; + cl_int planes; + cl_float scale; + cl_float delta; +} ConvolutionOpenCLContext; static int convolution_opencl_init(AVFilterContext *avctx) { ConvolutionOpenCLContext *ctx = avctx->priv; + const char *kernel_name; cl_int cle; int err; @@ -63,19 +67,21 @@ static int convolution_opencl_init(AVFilterContext *avctx) ctx->command_queue = clCreateCommandQueue(ctx->ocf.hwctx->context, ctx->ocf.hwctx->device_id, 0, &cle); - if (!ctx->command_queue) { - av_log(avctx, AV_LOG_ERROR, "Failed to create OpenCL " - "command queue: %d.\n", cle); - err = AVERROR(EIO); - goto fail; - } - - ctx->kernel = clCreateKernel(ctx->ocf.program, "convolution_global", &cle); - if (!ctx->kernel) { - av_log(avctx, AV_LOG_ERROR, "Failed to create kernel: %d.\n", cle); - err = AVERROR(EIO); - goto fail; + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create OpenCL " + "command queue %d.\n", cle); + + if (!strcmp(avctx->filter->name, "convolution_opencl")) { + kernel_name = "convolution_global"; + } else if (!strcmp(avctx->filter->name, "sobel_opencl")) { + kernel_name = "sobel_global"; + } else if (!strcmp(avctx->filter->name, "prewitt_opencl")){ + kernel_name = "prewitt_global"; + } else if (!strcmp(avctx->filter->name, "roberts_opencl")){ + kernel_name = "roberts_global"; } + ctx->kernel = clCreateKernel(ctx->ocf.program, kernel_name, &cle); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create " + "kernel %d.\n", cle); ctx->initialised = 1; return 0; @@ -173,6 +179,8 @@ static int convolution_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) size_t global_work[2]; cl_mem src, dst; int err, p; + size_t origin[3] = {0, 0, 0}; + size_t region[3] = {0, 0, 1}; av_log(ctx, AV_LOG_DEBUG, "Filter input: %s, %ux%u (%"PRId64").\n", av_get_pix_fmt_name(input->format), @@ -186,9 +194,14 @@ static int convolution_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) if (err < 0) goto fail; - err = convolution_opencl_make_filter_params(avctx); - if (err < 0) - goto fail; + if (!strcmp(avctx->filter->name, "convolution_opencl")) { + err = convolution_opencl_make_filter_params(avctx); + if (err < 0) + goto fail; + } else { + ctx->delta /= 255.0; + } + } output = ff_get_video_buffer(outlink, outlink->w, outlink->h); @@ -204,70 +217,62 @@ static int convolution_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) if (!dst) break; - cle = clSetKernelArg(ctx->kernel, 0, sizeof(cl_mem), &dst); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "destination image argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 1, sizeof(cl_mem), &src); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "source image argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 2, sizeof(cl_int), &ctx->dims[p]); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "matrix size argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 3, sizeof(cl_mem), &ctx->matrix[p]); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "matrix argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 4, sizeof(cl_float), &ctx->rdivs[p]); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "rdiv argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 5, sizeof(cl_float), &ctx->biases[p]); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "bias argument: %d.\n", cle); - goto fail; - } - - - err = ff_opencl_filter_work_size_from_image(avctx, global_work, output, p, 0); - if (err < 0) - goto fail; - - av_log(avctx, AV_LOG_DEBUG, "Run kernel on plane %d " - "(%"SIZE_SPECIFIER"x%"SIZE_SPECIFIER").\n", - p, global_work[0], global_work[1]); - - cle = clEnqueueNDRangeKernel(ctx->command_queue, ctx->kernel, 2, NULL, - global_work, NULL, - 0, NULL, NULL); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to enqueue kernel: %d.\n", - cle); - err = AVERROR(EIO); - goto fail; + if (!strcmp(avctx->filter->name, "convolution_opencl")) { + CL_SET_KERNEL_ARG(ctx->kernel, 0, cl_mem, &dst); + CL_SET_KERNEL_ARG(ctx->kernel, 1, cl_mem, &src); + CL_SET_KERNEL_ARG(ctx->kernel, 2, cl_int, &ctx->dims[p]); + CL_SET_KERNEL_ARG(ctx->kernel, 3, cl_mem, &ctx->matrix[p]); + CL_SET_KERNEL_ARG(ctx->kernel, 4, cl_float, &ctx->rdivs[p]); + CL_SET_KERNEL_ARG(ctx->kernel, 5, cl_float, &ctx->biases[p]); + + err = ff_opencl_filter_work_size_from_image(avctx, global_work, output, p, 0); + if (err < 0) + goto fail; + + av_log(avctx, AV_LOG_DEBUG, "Run kernel on plane %d " + "(%"SIZE_SPECIFIER"x%"SIZE_SPECIFIER").\n", + p, global_work[0], global_work[1]); + + cle = clEnqueueNDRangeKernel(ctx->command_queue, ctx->kernel, 2, NULL, + global_work, NULL, + 0, NULL, NULL); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to enqueue " + "kernel: %d.\n", cle); + } else { + if (!(ctx->planes & (1 << p))) { + err = ff_opencl_filter_work_size_from_image(avctx, region, output, p, 0); + if (err < 0) + goto fail; + + cle = clEnqueueCopyImage(ctx->command_queue, src, dst, + origin, origin, region, 0, NULL, NULL); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to copy plane %d: %d.\n", + p, cle); + } else { + CL_SET_KERNEL_ARG(ctx->kernel, 0, cl_mem, &dst); + CL_SET_KERNEL_ARG(ctx->kernel, 1, cl_mem, &src); + CL_SET_KERNEL_ARG(ctx->kernel, 2, cl_float, &ctx->scale); + CL_SET_KERNEL_ARG(ctx->kernel, 3, cl_float, &ctx->delta); + + err = ff_opencl_filter_work_size_from_image(avctx, global_work, output, p, 0); + if (err < 0) + goto fail; + + av_log(avctx, AV_LOG_DEBUG, "Run kernel on plane %d " + "(%"SIZE_SPECIFIER"x%"SIZE_SPECIFIER").\n", + p, global_work[0], global_work[1]); + + cle = clEnqueueNDRangeKernel(ctx->command_queue, ctx->kernel, 2, NULL, + global_work, NULL, + 0, NULL, NULL); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to enqueue " + "kernel: %d.\n", cle); + } } } cle = clFinish(ctx->command_queue); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to finish command queue: %d.\n", - cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to finish command queue: %d.\n", cle); err = av_frame_copy_props(output, input); if (err < 0) @@ -315,8 +320,30 @@ static av_cold void convolution_opencl_uninit(AVFilterContext *avctx) ff_opencl_filter_uninit(avctx); } +static const AVFilterPad convolution_opencl_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .filter_frame = &convolution_opencl_filter_frame, + .config_props = &ff_opencl_filter_config_input, + }, + { NULL } +}; + +static const AVFilterPad convolution_opencl_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = &ff_opencl_filter_config_output, + }, + { NULL } +}; + #define OFFSET(x) offsetof(ConvolutionOpenCLContext, x) #define FLAGS (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) + +#if CONFIG_CONVOLUTION_OPENCL_FILTER + static const AVOption convolution_opencl_options[] = { { "0m", "set matrix for 2nd plane", OFFSET(matrix_str[0]), AV_OPT_TYPE_STRING, {.str="0 0 0 0 1 0 0 0 0"}, 0, 0, FLAGS }, { "1m", "set matrix for 2nd plane", OFFSET(matrix_str[1]), AV_OPT_TYPE_STRING, {.str="0 0 0 0 1 0 0 0 0"}, 0, 0, FLAGS }, @@ -335,30 +362,89 @@ static const AVOption convolution_opencl_options[] = { AVFILTER_DEFINE_CLASS(convolution_opencl); -static const AVFilterPad convolution_opencl_inputs[] = { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .filter_frame = &convolution_opencl_filter_frame, - .config_props = &ff_opencl_filter_config_input, - }, +AVFilter ff_vf_convolution_opencl = { + .name = "convolution_opencl", + .description = NULL_IF_CONFIG_SMALL("Apply convolution mask to input video"), + .priv_size = sizeof(ConvolutionOpenCLContext), + .priv_class = &convolution_opencl_class, + .init = &ff_opencl_filter_init, + .uninit = &convolution_opencl_uninit, + .query_formats = &ff_opencl_filter_query_formats, + .inputs = convolution_opencl_inputs, + .outputs = convolution_opencl_outputs, + .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE, +}; + +#endif /* CONFIG_CONVOLUTION_OPENCL_FILTER */ + +#if CONFIG_SOBEL_OPENCL_FILTER + +static const AVOption sobel_opencl_options[] = { + { "planes", "set planes to filter", OFFSET(planes), AV_OPT_TYPE_INT, {.i64=15}, 0, 15, FLAGS}, + { "scale", "set scale", OFFSET(scale), AV_OPT_TYPE_FLOAT, {.dbl=1.0}, 0.0, 65535, FLAGS}, + { "delta", "set delta", OFFSET(delta), AV_OPT_TYPE_FLOAT, {.dbl=0}, -65535, 65535, FLAGS}, { NULL } }; -static const AVFilterPad convolution_opencl_outputs[] = { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = &ff_opencl_filter_config_output, - }, +AVFILTER_DEFINE_CLASS(sobel_opencl); + +AVFilter ff_vf_sobel_opencl = { + .name = "sobel_opencl", + .description = NULL_IF_CONFIG_SMALL("Apply sobel operator"), + .priv_size = sizeof(ConvolutionOpenCLContext), + .priv_class = &sobel_opencl_class, + .init = &ff_opencl_filter_init, + .uninit = &convolution_opencl_uninit, + .query_formats = &ff_opencl_filter_query_formats, + .inputs = convolution_opencl_inputs, + .outputs = convolution_opencl_outputs, + .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE, +}; + +#endif /* CONFIG_SOBEL_OPENCL_FILTER */ + +#if CONFIG_PREWITT_OPENCL_FILTER + +static const AVOption prewitt_opencl_options[] = { + { "planes", "set planes to filter", OFFSET(planes), AV_OPT_TYPE_INT, {.i64=15}, 0, 15, FLAGS}, + { "scale", "set scale", OFFSET(scale), AV_OPT_TYPE_FLOAT, {.dbl=1.0}, 0.0, 65535, FLAGS}, + { "delta", "set delta", OFFSET(delta), AV_OPT_TYPE_FLOAT, {.dbl=0}, -65535, 65535, FLAGS}, { NULL } }; -AVFilter ff_vf_convolution_opencl = { - .name = "convolution_opencl", - .description = NULL_IF_CONFIG_SMALL("Apply convolution mask to input video"), +AVFILTER_DEFINE_CLASS(prewitt_opencl); + +AVFilter ff_vf_prewitt_opencl = { + .name = "prewitt_opencl", + .description = NULL_IF_CONFIG_SMALL("Apply prewitt operator"), .priv_size = sizeof(ConvolutionOpenCLContext), - .priv_class = &convolution_opencl_class, + .priv_class = &prewitt_opencl_class, + .init = &ff_opencl_filter_init, + .uninit = &convolution_opencl_uninit, + .query_formats = &ff_opencl_filter_query_formats, + .inputs = convolution_opencl_inputs, + .outputs = convolution_opencl_outputs, + .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE, +}; + +#endif /* CONFIG_PREWITT_OPENCL_FILTER */ + +#if CONFIG_ROBERTS_OPENCL_FILTER + +static const AVOption roberts_opencl_options[] = { + { "planes", "set planes to filter", OFFSET(planes), AV_OPT_TYPE_INT, {.i64=15}, 0, 15, FLAGS}, + { "scale", "set scale", OFFSET(scale), AV_OPT_TYPE_FLOAT, {.dbl=1.0}, 0.0, 65535, FLAGS}, + { "delta", "set delta", OFFSET(delta), AV_OPT_TYPE_FLOAT, {.dbl=0}, -65535, 65535, FLAGS}, + { NULL } +}; + +AVFILTER_DEFINE_CLASS(roberts_opencl); + +AVFilter ff_vf_roberts_opencl = { + .name = "roberts_opencl", + .description = NULL_IF_CONFIG_SMALL("Apply roberts operator"), + .priv_size = sizeof(ConvolutionOpenCLContext), + .priv_class = &roberts_opencl_class, .init = &ff_opencl_filter_init, .uninit = &convolution_opencl_uninit, .query_formats = &ff_opencl_filter_query_formats, @@ -366,3 +452,5 @@ AVFilter ff_vf_convolution_opencl = { .outputs = convolution_opencl_outputs, .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE, }; + +#endif /* CONFIG_ROBERTS_OPENCL_FILTER */ diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_drawtext.c b/chromium/third_party/ffmpeg/libavfilter/vf_drawtext.c index 3affa736c7e..cca2cbcb88b 100644 --- a/chromium/third_party/ffmpeg/libavfilter/vf_drawtext.c +++ b/chromium/third_party/ffmpeg/libavfilter/vf_drawtext.c @@ -1407,8 +1407,8 @@ static int draw_text(AVFilterContext *ctx, AVFrame *frame, update_color_with_alpha(s, &bordercolor, s->bordercolor); update_color_with_alpha(s, &boxcolor , s->boxcolor ); - box_w = FFMIN(width - 1 , max_text_line_w); - box_h = FFMIN(height - 1, y + s->max_glyph_h); + box_w = max_text_line_w; + box_h = y + s->max_glyph_h; if (s->fix_bounds) { diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_lensfun.c b/chromium/third_party/ffmpeg/libavfilter/vf_lensfun.c new file mode 100644 index 00000000000..fd14210addb --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/vf_lensfun.c @@ -0,0 +1,548 @@ +/* + * Copyright (C) 2007 by Andrew Zabolotny (author of lensfun, from which this filter derives from) + * Copyright (C) 2018 Stephen Seo + * + * This file is part of FFmpeg. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * 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 <https://www.gnu.org/licenses/>. + */ + +/** + * @file + * Lensfun filter, applies lens correction with parameters from the lensfun database + * + * @see https://lensfun.sourceforge.net/ + */ + +#include <float.h> +#include <math.h> + +#include "libavutil/avassert.h" +#include "libavutil/imgutils.h" +#include "libavutil/opt.h" +#include "libswscale/swscale.h" +#include "avfilter.h" +#include "formats.h" +#include "internal.h" +#include "video.h" + +#include <lensfun.h> + +#define LANCZOS_RESOLUTION 256 + +enum Mode { + VIGNETTING = 0x1, + GEOMETRY_DISTORTION = 0x2, + SUBPIXEL_DISTORTION = 0x4 +}; + +enum InterpolationType { + NEAREST, + LINEAR, + LANCZOS +}; + +typedef struct VignettingThreadData { + int width, height; + uint8_t *data_in; + int linesize_in; + int pixel_composition; + lfModifier *modifier; +} VignettingThreadData; + +typedef struct DistortionCorrectionThreadData { + int width, height; + const float *distortion_coords; + const uint8_t *data_in; + uint8_t *data_out; + int linesize_in, linesize_out; + const float *interpolation; + int mode; + int interpolation_type; +} DistortionCorrectionThreadData; + +typedef struct LensfunContext { + const AVClass *class; + const char *make, *model, *lens_model; + int mode; + float focal_length; + float aperture; + float focus_distance; + int target_geometry; + int reverse; + int interpolation_type; + + float *distortion_coords; + float *interpolation; + + lfLens *lens; + lfCamera *camera; + lfModifier *modifier; +} LensfunContext; + +#define OFFSET(x) offsetof(LensfunContext, x) +#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM +static const AVOption lensfun_options[] = { + { "make", "set camera maker", OFFSET(make), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS }, + { "model", "set camera model", OFFSET(model), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS }, + { "lens_model", "set lens model", OFFSET(lens_model), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS }, + { "mode", "set mode", OFFSET(mode), AV_OPT_TYPE_INT, {.i64=GEOMETRY_DISTORTION}, 0, VIGNETTING | GEOMETRY_DISTORTION | SUBPIXEL_DISTORTION, FLAGS, "mode" }, + { "vignetting", "fix lens vignetting", 0, AV_OPT_TYPE_CONST, {.i64=VIGNETTING}, 0, 0, FLAGS, "mode" }, + { "geometry", "correct geometry distortion", 0, AV_OPT_TYPE_CONST, {.i64=GEOMETRY_DISTORTION}, 0, 0, FLAGS, "mode" }, + { "subpixel", "fix chromatic aberrations", 0, AV_OPT_TYPE_CONST, {.i64=SUBPIXEL_DISTORTION}, 0, 0, FLAGS, "mode" }, + { "vig_geo", "fix lens vignetting and correct geometry distortion", 0, AV_OPT_TYPE_CONST, {.i64=VIGNETTING | GEOMETRY_DISTORTION}, 0, 0, FLAGS, "mode" }, + { "vig_subpixel", "fix lens vignetting and chromatic aberrations", 0, AV_OPT_TYPE_CONST, {.i64=VIGNETTING | SUBPIXEL_DISTORTION}, 0, 0, FLAGS, "mode" }, + { "distortion", "correct geometry distortion and chromatic aberrations", 0, AV_OPT_TYPE_CONST, {.i64=GEOMETRY_DISTORTION | SUBPIXEL_DISTORTION}, 0, 0, FLAGS, "mode" }, + { "all", NULL, 0, AV_OPT_TYPE_CONST, {.i64=VIGNETTING | GEOMETRY_DISTORTION | SUBPIXEL_DISTORTION}, 0, 0, FLAGS, "mode" }, + { "focal_length", "focal length of video (zoom; constant for the duration of the use of this filter)", OFFSET(focal_length), AV_OPT_TYPE_FLOAT, {.dbl=18}, 0.0, DBL_MAX, FLAGS }, + { "aperture", "aperture (constant for the duration of the use of this filter)", OFFSET(aperture), AV_OPT_TYPE_FLOAT, {.dbl=3.5}, 0.0, DBL_MAX, FLAGS }, + { "focus_distance", "focus distance (constant for the duration of the use of this filter)", OFFSET(focus_distance), AV_OPT_TYPE_FLOAT, {.dbl=1000.0f}, 0.0, DBL_MAX, FLAGS }, + { "target_geometry", "target geometry of the lens correction (only when geometry correction is enabled)", OFFSET(target_geometry), AV_OPT_TYPE_INT, {.i64=LF_RECTILINEAR}, 0, INT_MAX, FLAGS, "lens_geometry" }, + { "rectilinear", "rectilinear lens (default)", 0, AV_OPT_TYPE_CONST, {.i64=LF_RECTILINEAR}, 0, 0, FLAGS, "lens_geometry" }, + { "fisheye", "fisheye lens", 0, AV_OPT_TYPE_CONST, {.i64=LF_FISHEYE}, 0, 0, FLAGS, "lens_geometry" }, + { "panoramic", "panoramic (cylindrical)", 0, AV_OPT_TYPE_CONST, {.i64=LF_PANORAMIC}, 0, 0, FLAGS, "lens_geometry" }, + { "equirectangular", "equirectangular", 0, AV_OPT_TYPE_CONST, {.i64=LF_EQUIRECTANGULAR}, 0, 0, FLAGS, "lens_geometry" }, + { "fisheye_orthographic", "orthographic fisheye", 0, AV_OPT_TYPE_CONST, {.i64=LF_FISHEYE_ORTHOGRAPHIC}, 0, 0, FLAGS, "lens_geometry" }, + { "fisheye_stereographic", "stereographic fisheye", 0, AV_OPT_TYPE_CONST, {.i64=LF_FISHEYE_STEREOGRAPHIC}, 0, 0, FLAGS, "lens_geometry" }, + { "fisheye_equisolid", "equisolid fisheye", 0, AV_OPT_TYPE_CONST, {.i64=LF_FISHEYE_EQUISOLID}, 0, 0, FLAGS, "lens_geometry" }, + { "fisheye_thoby", "fisheye as measured by thoby", 0, AV_OPT_TYPE_CONST, {.i64=LF_FISHEYE_THOBY}, 0, 0, FLAGS, "lens_geometry" }, + { "reverse", "Does reverse correction (regular image to lens distorted)", OFFSET(reverse), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS }, + { "interpolation", "Type of interpolation", OFFSET(interpolation_type), AV_OPT_TYPE_INT, {.i64=LINEAR}, 0, LANCZOS, FLAGS, "interpolation" }, + { "nearest", NULL, 0, AV_OPT_TYPE_CONST, {.i64=NEAREST}, 0, 0, FLAGS, "interpolation" }, + { "linear", NULL, 0, AV_OPT_TYPE_CONST, {.i64=LINEAR}, 0, 0, FLAGS, "interpolation" }, + { "lanczos", NULL, 0, AV_OPT_TYPE_CONST, {.i64=LANCZOS}, 0, 0, FLAGS, "interpolation" }, + { NULL } +}; + +AVFILTER_DEFINE_CLASS(lensfun); + +static av_cold int init(AVFilterContext *ctx) +{ + LensfunContext *lensfun = ctx->priv; + lfDatabase *db; + const lfCamera **cameras; + const lfLens **lenses; + + if (!lensfun->make) { + av_log(ctx, AV_LOG_FATAL, "Option \"make\" not specified\n"); + return AVERROR(EINVAL); + } else if (!lensfun->model) { + av_log(ctx, AV_LOG_FATAL, "Option \"model\" not specified\n"); + return AVERROR(EINVAL); + } else if (!lensfun->lens_model) { + av_log(ctx, AV_LOG_FATAL, "Option \"lens_model\" not specified\n"); + return AVERROR(EINVAL); + } + + lensfun->lens = lf_lens_new(); + lensfun->camera = lf_camera_new(); + + db = lf_db_new(); + if (lf_db_load(db) != LF_NO_ERROR) { + lf_db_destroy(db); + av_log(ctx, AV_LOG_FATAL, "Failed to load lensfun database\n"); + return AVERROR_INVALIDDATA; + } + + cameras = lf_db_find_cameras(db, lensfun->make, lensfun->model); + if (cameras && *cameras) { + lf_camera_copy(lensfun->camera, *cameras); + av_log(ctx, AV_LOG_INFO, "Using camera %s\n", lensfun->camera->Model); + } else { + lf_free(cameras); + lf_db_destroy(db); + av_log(ctx, AV_LOG_FATAL, "Failed to find camera in lensfun database\n"); + return AVERROR_INVALIDDATA; + } + lf_free(cameras); + + lenses = lf_db_find_lenses_hd(db, lensfun->camera, NULL, lensfun->lens_model, 0); + if (lenses && *lenses) { + lf_lens_copy(lensfun->lens, *lenses); + av_log(ctx, AV_LOG_INFO, "Using lens %s\n", lensfun->lens->Model); + } else { + lf_free(lenses); + lf_db_destroy(db); + av_log(ctx, AV_LOG_FATAL, "Failed to find lens in lensfun database\n"); + return AVERROR_INVALIDDATA; + } + lf_free(lenses); + + lf_db_destroy(db); + return 0; +} + +static int query_formats(AVFilterContext *ctx) +{ + // Some of the functions provided by lensfun require pixels in RGB format + static const enum AVPixelFormat fmts[] = {AV_PIX_FMT_RGB24, AV_PIX_FMT_NONE}; + AVFilterFormats *fmts_list = ff_make_format_list(fmts); + return ff_set_common_formats(ctx, fmts_list); +} + +static float lanczos_kernel(float x) +{ + if (x == 0.0f) { + return 1.0f; + } else if (x > -2.0f && x < 2.0f) { + return (2.0f * sin(M_PI * x) * sin(M_PI / 2.0f * x)) / (M_PI * M_PI * x * x); + } else { + return 0.0f; + } +} + +static int config_props(AVFilterLink *inlink) +{ + AVFilterContext *ctx = inlink->dst; + LensfunContext *lensfun = ctx->priv; + int index; + float a; + int lensfun_mode = 0; + + if (!lensfun->modifier) { + if (lensfun->camera && lensfun->lens) { + lensfun->modifier = lf_modifier_new(lensfun->lens, + lensfun->camera->CropFactor, + inlink->w, + inlink->h); + if (lensfun->mode & VIGNETTING) + lensfun_mode |= LF_MODIFY_VIGNETTING; + if (lensfun->mode & GEOMETRY_DISTORTION) + lensfun_mode |= LF_MODIFY_DISTORTION | LF_MODIFY_GEOMETRY | LF_MODIFY_SCALE; + if (lensfun->mode & SUBPIXEL_DISTORTION) + lensfun_mode |= LF_MODIFY_TCA; + lf_modifier_initialize(lensfun->modifier, + lensfun->lens, + LF_PF_U8, + lensfun->focal_length, + lensfun->aperture, + lensfun->focus_distance, + 0.0, + lensfun->target_geometry, + lensfun_mode, + lensfun->reverse); + } else { + // lensfun->camera and lensfun->lens should have been initialized + return AVERROR_BUG; + } + } + + if (!lensfun->distortion_coords) { + if (lensfun->mode & SUBPIXEL_DISTORTION) { + lensfun->distortion_coords = av_malloc(sizeof(float) * inlink->w * inlink->h * 2 * 3); + if (!lensfun->distortion_coords) + return AVERROR(ENOMEM); + if (lensfun->mode & GEOMETRY_DISTORTION) { + // apply both geometry and subpixel distortion + lf_modifier_apply_subpixel_geometry_distortion(lensfun->modifier, + 0, 0, + inlink->w, inlink->h, + lensfun->distortion_coords); + } else { + // apply only subpixel distortion + lf_modifier_apply_subpixel_distortion(lensfun->modifier, + 0, 0, + inlink->w, inlink->h, + lensfun->distortion_coords); + } + } else if (lensfun->mode & GEOMETRY_DISTORTION) { + lensfun->distortion_coords = av_malloc(sizeof(float) * inlink->w * inlink->h * 2); + if (!lensfun->distortion_coords) + return AVERROR(ENOMEM); + // apply only geometry distortion + lf_modifier_apply_geometry_distortion(lensfun->modifier, + 0, 0, + inlink->w, inlink->h, + lensfun->distortion_coords); + } + } + + if (!lensfun->interpolation) + if (lensfun->interpolation_type == LANCZOS) { + lensfun->interpolation = av_malloc(sizeof(float) * 4 * LANCZOS_RESOLUTION); + if (!lensfun->interpolation) + return AVERROR(ENOMEM); + for (index = 0; index < 4 * LANCZOS_RESOLUTION; ++index) { + if (index == 0) { + lensfun->interpolation[index] = 1.0f; + } else { + a = sqrtf((float)index / LANCZOS_RESOLUTION); + lensfun->interpolation[index] = lanczos_kernel(a); + } + } + } + + return 0; +} + +static int vignetting_filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) +{ + const VignettingThreadData *thread_data = arg; + const int slice_start = thread_data->height * jobnr / nb_jobs; + const int slice_end = thread_data->height * (jobnr + 1) / nb_jobs; + + lf_modifier_apply_color_modification(thread_data->modifier, + thread_data->data_in + slice_start * thread_data->linesize_in, + 0, + slice_start, + thread_data->width, + slice_end - slice_start, + thread_data->pixel_composition, + thread_data->linesize_in); + + return 0; +} + +static float square(float x) +{ + return x * x; +} + +static int distortion_correction_filter_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) +{ + const DistortionCorrectionThreadData *thread_data = arg; + const int slice_start = thread_data->height * jobnr / nb_jobs; + const int slice_end = thread_data->height * (jobnr + 1) / nb_jobs; + + int x, y, i, j, rgb_index; + float interpolated, new_x, new_y, d, norm; + int new_x_int, new_y_int; + for (y = slice_start; y < slice_end; ++y) + for (x = 0; x < thread_data->width; ++x) + for (rgb_index = 0; rgb_index < 3; ++rgb_index) { + if (thread_data->mode & SUBPIXEL_DISTORTION) { + // subpixel (and possibly geometry) distortion correction was applied, correct distortion + switch(thread_data->interpolation_type) { + case NEAREST: + new_x_int = thread_data->distortion_coords[x * 2 * 3 + y * thread_data->width * 2 * 3 + rgb_index * 2] + 0.5f; + new_y_int = thread_data->distortion_coords[x * 2 * 3 + y * thread_data->width * 2 * 3 + rgb_index * 2 + 1] + 0.5f; + if (new_x_int < 0 || new_x_int >= thread_data->width || new_y_int < 0 || new_y_int >= thread_data->height) { + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = 0; + } else { + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = thread_data->data_in[new_x_int * 3 + rgb_index + new_y_int * thread_data->linesize_in]; + } + break; + case LINEAR: + interpolated = 0.0f; + new_x = thread_data->distortion_coords[x * 2 * 3 + y * thread_data->width * 2 * 3 + rgb_index * 2]; + new_x_int = new_x; + new_y = thread_data->distortion_coords[x * 2 * 3 + y * thread_data->width * 2 * 3 + rgb_index * 2 + 1]; + new_y_int = new_y; + if (new_x_int < 0 || new_x_int + 1 >= thread_data->width || new_y_int < 0 || new_y_int + 1 >= thread_data->height) { + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = 0; + } else { + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = + thread_data->data_in[ new_x_int * 3 + rgb_index + new_y_int * thread_data->linesize_in] * (new_x_int + 1 - new_x) * (new_y_int + 1 - new_y) + + thread_data->data_in[(new_x_int + 1) * 3 + rgb_index + new_y_int * thread_data->linesize_in] * (new_x - new_x_int) * (new_y_int + 1 - new_y) + + thread_data->data_in[ new_x_int * 3 + rgb_index + (new_y_int + 1) * thread_data->linesize_in] * (new_x_int + 1 - new_x) * (new_y - new_y_int) + + thread_data->data_in[(new_x_int + 1) * 3 + rgb_index + (new_y_int + 1) * thread_data->linesize_in] * (new_x - new_x_int) * (new_y - new_y_int); + } + break; + case LANCZOS: + interpolated = 0.0f; + norm = 0.0f; + new_x = thread_data->distortion_coords[x * 2 * 3 + y * thread_data->width * 2 * 3 + rgb_index * 2]; + new_x_int = new_x; + new_y = thread_data->distortion_coords[x * 2 * 3 + y * thread_data->width * 2 * 3 + rgb_index * 2 + 1]; + new_y_int = new_y; + for (j = 0; j < 4; ++j) + for (i = 0; i < 4; ++i) { + if (new_x_int + i - 2 < 0 || new_x_int + i - 2 >= thread_data->width || new_y_int + j - 2 < 0 || new_y_int + j - 2 >= thread_data->height) + continue; + d = square(new_x - (new_x_int + i - 2)) * square(new_y - (new_y_int + j - 2)); + if (d >= 4.0f) + continue; + d = thread_data->interpolation[(int)(d * LANCZOS_RESOLUTION)]; + norm += d; + interpolated += thread_data->data_in[(new_x_int + i - 2) * 3 + rgb_index + (new_y_int + j - 2) * thread_data->linesize_in] * d; + } + if (norm == 0.0f) { + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = 0; + } else { + interpolated /= norm; + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = interpolated < 0.0f ? 0.0f : interpolated > 255.0f ? 255.0f : interpolated; + } + break; + } + } else if (thread_data->mode & GEOMETRY_DISTORTION) { + // geometry distortion correction was applied, correct distortion + switch(thread_data->interpolation_type) { + case NEAREST: + new_x_int = thread_data->distortion_coords[x * 2 + y * thread_data->width * 2] + 0.5f; + new_y_int = thread_data->distortion_coords[x * 2 + y * thread_data->width * 2 + 1] + 0.5f; + if (new_x_int < 0 || new_x_int >= thread_data->width || new_y_int < 0 || new_y_int >= thread_data->height) { + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = 0; + } else { + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = thread_data->data_in[new_x_int * 3 + rgb_index + new_y_int * thread_data->linesize_in]; + } + break; + case LINEAR: + interpolated = 0.0f; + new_x = thread_data->distortion_coords[x * 2 + y * thread_data->width * 2]; + new_x_int = new_x; + new_y = thread_data->distortion_coords[x * 2 + y * thread_data->width * 2 + 1]; + new_y_int = new_y; + if (new_x_int < 0 || new_x_int + 1 >= thread_data->width || new_y_int < 0 || new_y_int + 1 >= thread_data->height) { + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = 0; + } else { + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = + thread_data->data_in[ new_x_int * 3 + rgb_index + new_y_int * thread_data->linesize_in] * (new_x_int + 1 - new_x) * (new_y_int + 1 - new_y) + + thread_data->data_in[(new_x_int + 1) * 3 + rgb_index + new_y_int * thread_data->linesize_in] * (new_x - new_x_int) * (new_y_int + 1 - new_y) + + thread_data->data_in[ new_x_int * 3 + rgb_index + (new_y_int + 1) * thread_data->linesize_in] * (new_x_int + 1 - new_x) * (new_y - new_y_int) + + thread_data->data_in[(new_x_int + 1) * 3 + rgb_index + (new_y_int + 1) * thread_data->linesize_in] * (new_x - new_x_int) * (new_y - new_y_int); + } + break; + case LANCZOS: + interpolated = 0.0f; + norm = 0.0f; + new_x = thread_data->distortion_coords[x * 2 + y * thread_data->width * 2]; + new_x_int = new_x; + new_y = thread_data->distortion_coords[x * 2 + 1 + y * thread_data->width * 2]; + new_y_int = new_y; + for (j = 0; j < 4; ++j) + for (i = 0; i < 4; ++i) { + if (new_x_int + i - 2 < 0 || new_x_int + i - 2 >= thread_data->width || new_y_int + j - 2 < 0 || new_y_int + j - 2 >= thread_data->height) + continue; + d = square(new_x - (new_x_int + i - 2)) * square(new_y - (new_y_int + j - 2)); + if (d >= 4.0f) + continue; + d = thread_data->interpolation[(int)(d * LANCZOS_RESOLUTION)]; + norm += d; + interpolated += thread_data->data_in[(new_x_int + i - 2) * 3 + rgb_index + (new_y_int + j - 2) * thread_data->linesize_in] * d; + } + if (norm == 0.0f) { + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = 0; + } else { + interpolated /= norm; + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = interpolated < 0.0f ? 0.0f : interpolated > 255.0f ? 255.0f : interpolated; + } + break; + } + } else { + // no distortion correction was applied + thread_data->data_out[x * 3 + rgb_index + y * thread_data->linesize_out] = thread_data->data_in[x * 3 + rgb_index + y * thread_data->linesize_in]; + } + } + + return 0; +} + +static int filter_frame(AVFilterLink *inlink, AVFrame *in) +{ + AVFilterContext *ctx = inlink->dst; + LensfunContext *lensfun = ctx->priv; + AVFilterLink *outlink = ctx->outputs[0]; + AVFrame *out; + VignettingThreadData vignetting_thread_data; + DistortionCorrectionThreadData distortion_correction_thread_data; + + if (lensfun->mode & VIGNETTING) { + av_frame_make_writable(in); + + vignetting_thread_data = (VignettingThreadData) { + .width = inlink->w, + .height = inlink->h, + .data_in = in->data[0], + .linesize_in = in->linesize[0], + .pixel_composition = LF_CR_3(RED, GREEN, BLUE), + .modifier = lensfun->modifier + }; + + ctx->internal->execute(ctx, + vignetting_filter_slice, + &vignetting_thread_data, + NULL, + FFMIN(outlink->h, ctx->graph->nb_threads)); + } + + if (lensfun->mode & (GEOMETRY_DISTORTION | SUBPIXEL_DISTORTION)) { + out = ff_get_video_buffer(outlink, outlink->w, outlink->h); + if (!out) { + av_frame_free(&in); + return AVERROR(ENOMEM); + } + av_frame_copy_props(out, in); + + distortion_correction_thread_data = (DistortionCorrectionThreadData) { + .width = inlink->w, + .height = inlink->h, + .distortion_coords = lensfun->distortion_coords, + .data_in = in->data[0], + .data_out = out->data[0], + .linesize_in = in->linesize[0], + .linesize_out = out->linesize[0], + .interpolation = lensfun->interpolation, + .mode = lensfun->mode, + .interpolation_type = lensfun->interpolation_type + }; + + ctx->internal->execute(ctx, + distortion_correction_filter_slice, + &distortion_correction_thread_data, + NULL, + FFMIN(outlink->h, ctx->graph->nb_threads)); + + av_frame_free(&in); + return ff_filter_frame(outlink, out); + } else { + return ff_filter_frame(outlink, in); + } +} + +static av_cold void uninit(AVFilterContext *ctx) +{ + LensfunContext *lensfun = ctx->priv; + + if (lensfun->camera) + lf_camera_destroy(lensfun->camera); + if (lensfun->lens) + lf_lens_destroy(lensfun->lens); + if (lensfun->modifier) + lf_modifier_destroy(lensfun->modifier); + if (lensfun->distortion_coords) + av_free(lensfun->distortion_coords); + if (lensfun->interpolation) + av_free(lensfun->interpolation); +} + +static const AVFilterPad lensfun_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_props, + .filter_frame = filter_frame, + }, + { NULL } +}; + +static const AVFilterPad lensfun_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + +AVFilter ff_vf_lensfun = { + .name = "lensfun", + .description = NULL_IF_CONFIG_SMALL("Apply correction to an image based on info derived from the lensfun database."), + .priv_size = sizeof(LensfunContext), + .init = init, + .uninit = uninit, + .query_formats = query_formats, + .inputs = lensfun_inputs, + .outputs = lensfun_outputs, + .priv_class = &lensfun_class, + .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS, +}; diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_minterpolate.c b/chromium/third_party/ffmpeg/libavfilter/vf_minterpolate.c index d53431593d1..c6a5e63f90b 100644 --- a/chromium/third_party/ffmpeg/libavfilter/vf_minterpolate.c +++ b/chromium/third_party/ffmpeg/libavfilter/vf_minterpolate.c @@ -1122,8 +1122,8 @@ static void interpolate(AVFilterLink *inlink, AVFrame *avf_out) for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { avf_out->data[plane][x + y * avf_out->linesize[plane]] = - alpha * mi_ctx->frames[2].avf->data[plane][x + y * mi_ctx->frames[2].avf->linesize[plane]] + - ((ALPHA_MAX - alpha) * mi_ctx->frames[1].avf->data[plane][x + y * mi_ctx->frames[1].avf->linesize[plane]] + 512) >> 10; + (alpha * mi_ctx->frames[2].avf->data[plane][x + y * mi_ctx->frames[2].avf->linesize[plane]] + + (ALPHA_MAX - alpha) * mi_ctx->frames[1].avf->data[plane][x + y * mi_ctx->frames[1].avf->linesize[plane]] + 512) >> 10; } } } diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_overlay_opencl.c b/chromium/third_party/ffmpeg/libavfilter/vf_overlay_opencl.c index b43050df583..e9c853203b4 100644 --- a/chromium/third_party/ffmpeg/libavfilter/vf_overlay_opencl.c +++ b/chromium/third_party/ffmpeg/libavfilter/vf_overlay_opencl.c @@ -100,19 +100,11 @@ static int overlay_opencl_load(AVFilterContext *avctx, ctx->command_queue = clCreateCommandQueue(ctx->ocf.hwctx->context, ctx->ocf.hwctx->device_id, 0, &cle); - if (!ctx->command_queue) { - av_log(avctx, AV_LOG_ERROR, "Failed to create OpenCL " - "command queue: %d.\n", cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create OpenCL " + "command queue %d.\n", cle); ctx->kernel = clCreateKernel(ctx->ocf.program, kernel, &cle); - if (!ctx->kernel) { - av_log(avctx, AV_LOG_ERROR, "Failed to create kernel: %d.\n", cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create kernel %d.\n", cle); ctx->initialised = 1; return 0; @@ -167,47 +159,39 @@ static int overlay_opencl_blend(FFFrameSync *fs) kernel_arg = 0; mem = (cl_mem)output->data[plane]; - cle = clSetKernelArg(ctx->kernel, kernel_arg++, sizeof(cl_mem), &mem); - if (cle != CL_SUCCESS) - goto fail_kernel_arg; + CL_SET_KERNEL_ARG(ctx->kernel, kernel_arg, cl_mem, &mem); + kernel_arg++; mem = (cl_mem)input_main->data[plane]; - cle = clSetKernelArg(ctx->kernel, kernel_arg++, sizeof(cl_mem), &mem); - if (cle != CL_SUCCESS) - goto fail_kernel_arg; + CL_SET_KERNEL_ARG(ctx->kernel, kernel_arg, cl_mem, &mem); + kernel_arg++; mem = (cl_mem)input_overlay->data[plane]; - cle = clSetKernelArg(ctx->kernel, kernel_arg++, sizeof(cl_mem), &mem); - if (cle != CL_SUCCESS) - goto fail_kernel_arg; + CL_SET_KERNEL_ARG(ctx->kernel, kernel_arg, cl_mem, &mem); + kernel_arg++; if (ctx->alpha_separate) { mem = (cl_mem)input_overlay->data[ctx->nb_planes]; - cle = clSetKernelArg(ctx->kernel, kernel_arg++, sizeof(cl_mem), &mem); - if (cle != CL_SUCCESS) - goto fail_kernel_arg; + CL_SET_KERNEL_ARG(ctx->kernel, kernel_arg, cl_mem, &mem); + kernel_arg++; } x = ctx->x_position / (plane == 0 ? 1 : ctx->x_subsample); y = ctx->y_position / (plane == 0 ? 1 : ctx->y_subsample); - cle = clSetKernelArg(ctx->kernel, kernel_arg++, sizeof(cl_int), &x); - if (cle != CL_SUCCESS) - goto fail_kernel_arg; - cle = clSetKernelArg(ctx->kernel, kernel_arg++, sizeof(cl_int), &y); - if (cle != CL_SUCCESS) - goto fail_kernel_arg; + CL_SET_KERNEL_ARG(ctx->kernel, kernel_arg, cl_int, &x); + kernel_arg++; + CL_SET_KERNEL_ARG(ctx->kernel, kernel_arg, cl_int, &y); + kernel_arg++; if (ctx->alpha_separate) { cl_int alpha_adj_x = plane == 0 ? 1 : ctx->x_subsample; cl_int alpha_adj_y = plane == 0 ? 1 : ctx->y_subsample; - cle = clSetKernelArg(ctx->kernel, kernel_arg++, sizeof(cl_int), &alpha_adj_x); - if (cle != CL_SUCCESS) - goto fail_kernel_arg; - cle = clSetKernelArg(ctx->kernel, kernel_arg++, sizeof(cl_int), &alpha_adj_y); - if (cle != CL_SUCCESS) - goto fail_kernel_arg; + CL_SET_KERNEL_ARG(ctx->kernel, kernel_arg, cl_int, &alpha_adj_x); + kernel_arg++; + CL_SET_KERNEL_ARG(ctx->kernel, kernel_arg, cl_int, &alpha_adj_y); + kernel_arg++; } err = ff_opencl_filter_work_size_from_image(avctx, global_work, @@ -217,21 +201,12 @@ static int overlay_opencl_blend(FFFrameSync *fs) cle = clEnqueueNDRangeKernel(ctx->command_queue, ctx->kernel, 2, NULL, global_work, NULL, 0, NULL, NULL); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to enqueue " - "overlay kernel for plane %d: %d.\n", cle, plane); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to enqueue overlay kernel " + "for plane %d: %d.\n", plane, cle); } cle = clFinish(ctx->command_queue); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to finish " - "command queue: %d.\n", cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to finish command queue: %d.\n", cle); err = av_frame_copy_props(output, input_main); @@ -241,10 +216,6 @@ static int overlay_opencl_blend(FFFrameSync *fs) return ff_filter_frame(outlink, output); -fail_kernel_arg: - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel arg %d: %d.\n", - kernel_arg, cle); - err = AVERROR(EIO); fail: av_frame_free(&output); return err; diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_program_opencl.c b/chromium/third_party/ffmpeg/libavfilter/vf_program_opencl.c index a0027923fb2..dfb25652bc2 100644 --- a/chromium/third_party/ffmpeg/libavfilter/vf_program_opencl.c +++ b/chromium/third_party/ffmpeg/libavfilter/vf_program_opencl.c @@ -148,21 +148,11 @@ static int program_opencl_run(AVFilterContext *avctx) cle = clEnqueueNDRangeKernel(ctx->command_queue, ctx->kernel, 2, NULL, global_work, NULL, 0, NULL, NULL); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to enqueue kernel: %d.\n", - cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to enqueue kernel: %d.\n", cle); } cle = clFinish(ctx->command_queue); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to finish command queue: %d.\n", - cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to finish command queue: %d.\n", cle); if (ctx->nb_inputs > 0) { err = av_frame_copy_props(output, ctx->frames[0]); diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_sr.c b/chromium/third_party/ffmpeg/libavfilter/vf_sr.c new file mode 100644 index 00000000000..2107e5a4c80 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/vf_sr.c @@ -0,0 +1,354 @@ +/* + * Copyright (c) 2018 Sergey Lavrushkin + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Filter implementing image super-resolution using deep convolutional networks. + * https://arxiv.org/abs/1501.00092 + * https://arxiv.org/abs/1609.05158 + */ + +#include "avfilter.h" +#include "formats.h" +#include "internal.h" +#include "libavutil/opt.h" +#include "libavformat/avio.h" +#include "libswscale/swscale.h" +#include "dnn_interface.h" + +typedef enum {SRCNN, ESPCN} SRModel; + +typedef struct SRContext { + const AVClass *class; + + SRModel model_type; + char* model_filename; + DNNBackendType backend_type; + DNNModule* dnn_module; + DNNModel* model; + DNNData input, output; + int scale_factor; + struct SwsContext* sws_context; + int sws_slice_h; +} SRContext; + +#define OFFSET(x) offsetof(SRContext, x) +#define FLAGS AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM +static const AVOption sr_options[] = { + { "model", "specifies what DNN model to use", OFFSET(model_type), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, 0, 1, FLAGS, "model_type" }, + { "srcnn", "Super-Resolution Convolutional Neural Network model (scale factor should be specified for custom SRCNN model)", 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, FLAGS, "model_type" }, + { "espcn", "Efficient Sub-Pixel Convolutional Neural Network model", 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, FLAGS, "model_type" }, + { "dnn_backend", "DNN backend used for model execution", OFFSET(backend_type), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, 0, 1, FLAGS, "backend" }, + { "native", "native backend flag", 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, FLAGS, "backend" }, +#if (CONFIG_LIBTENSORFLOW == 1) + { "tensorflow", "tensorflow backend flag", 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, FLAGS, "backend" }, +#endif + {"scale_factor", "scale factor for SRCNN model", OFFSET(scale_factor), AV_OPT_TYPE_INT, { .i64 = 2 }, 2, 4, FLAGS}, + { "model_filename", "path to model file specifying network architecture and its parameters", OFFSET(model_filename), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS }, + { NULL } +}; + +AVFILTER_DEFINE_CLASS(sr); + +static av_cold int init(AVFilterContext* context) +{ + SRContext* sr_context = context->priv; + + sr_context->dnn_module = ff_get_dnn_module(sr_context->backend_type); + if (!sr_context->dnn_module){ + av_log(context, AV_LOG_ERROR, "could not create DNN module for requested backend\n"); + return AVERROR(ENOMEM); + } + if (!sr_context->model_filename){ + av_log(context, AV_LOG_VERBOSE, "model file for network was not specified, using default network for x2 upsampling\n"); + sr_context->scale_factor = 2; + switch (sr_context->model_type){ + case SRCNN: + sr_context->model = (sr_context->dnn_module->load_default_model)(DNN_SRCNN); + break; + case ESPCN: + sr_context->model = (sr_context->dnn_module->load_default_model)(DNN_ESPCN); + } + } + else{ + sr_context->model = (sr_context->dnn_module->load_model)(sr_context->model_filename); + } + if (!sr_context->model){ + av_log(context, AV_LOG_ERROR, "could not load DNN model\n"); + return AVERROR(EIO); + } + + return 0; +} + +static int query_formats(AVFilterContext* context) +{ + const enum AVPixelFormat pixel_formats[] = {AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, + AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_GRAY8, + AV_PIX_FMT_NONE}; + AVFilterFormats* formats_list; + + formats_list = ff_make_format_list(pixel_formats); + if (!formats_list){ + av_log(context, AV_LOG_ERROR, "could not create formats list\n"); + return AVERROR(ENOMEM); + } + return ff_set_common_formats(context, formats_list); +} + +static int config_props(AVFilterLink* inlink) +{ + AVFilterContext* context = inlink->dst; + SRContext* sr_context = context->priv; + AVFilterLink* outlink = context->outputs[0]; + DNNReturnType result; + int sws_src_h, sws_src_w, sws_dst_h, sws_dst_w; + + switch (sr_context->model_type){ + case SRCNN: + sr_context->input.width = inlink->w * sr_context->scale_factor; + sr_context->input.height = inlink->h * sr_context->scale_factor; + break; + case ESPCN: + sr_context->input.width = inlink->w; + sr_context->input.height = inlink->h; + } + sr_context->input.channels = 1; + + result = (sr_context->model->set_input_output)(sr_context->model->model, &sr_context->input, &sr_context->output); + if (result != DNN_SUCCESS){ + av_log(context, AV_LOG_ERROR, "could not set input and output for the model\n"); + return AVERROR(EIO); + } + else{ + outlink->h = sr_context->output.height; + outlink->w = sr_context->output.width; + switch (sr_context->model_type){ + case SRCNN: + sr_context->sws_context = sws_getContext(inlink->w, inlink->h, inlink->format, + outlink->w, outlink->h, outlink->format, SWS_BICUBIC, NULL, NULL, NULL); + if (!sr_context->sws_context){ + av_log(context, AV_LOG_ERROR, "could not create SwsContext\n"); + return AVERROR(ENOMEM); + } + sr_context->sws_slice_h = inlink->h; + break; + case ESPCN: + if (inlink->format == AV_PIX_FMT_GRAY8){ + sr_context->sws_context = NULL; + } + else{ + sws_src_h = sr_context->input.height; + sws_src_w = sr_context->input.width; + sws_dst_h = sr_context->output.height; + sws_dst_w = sr_context->output.width; + + switch (inlink->format){ + case AV_PIX_FMT_YUV420P: + sws_src_h = (sws_src_h >> 1) + (sws_src_h % 2 != 0 ? 1 : 0); + sws_src_w = (sws_src_w >> 1) + (sws_src_w % 2 != 0 ? 1 : 0); + sws_dst_h = (sws_dst_h >> 1) + (sws_dst_h % 2 != 0 ? 1 : 0); + sws_dst_w = (sws_dst_w >> 1) + (sws_dst_w % 2 != 0 ? 1 : 0); + break; + case AV_PIX_FMT_YUV422P: + sws_src_w = (sws_src_w >> 1) + (sws_src_w % 2 != 0 ? 1 : 0); + sws_dst_w = (sws_dst_w >> 1) + (sws_dst_w % 2 != 0 ? 1 : 0); + break; + case AV_PIX_FMT_YUV444P: + break; + case AV_PIX_FMT_YUV410P: + sws_src_h = (sws_src_h >> 2) + (sws_src_h % 4 != 0 ? 1 : 0); + sws_src_w = (sws_src_w >> 2) + (sws_src_w % 4 != 0 ? 1 : 0); + sws_dst_h = (sws_dst_h >> 2) + (sws_dst_h % 4 != 0 ? 1 : 0); + sws_dst_w = (sws_dst_w >> 2) + (sws_dst_w % 4 != 0 ? 1 : 0); + break; + case AV_PIX_FMT_YUV411P: + sws_src_w = (sws_src_w >> 2) + (sws_src_w % 4 != 0 ? 1 : 0); + sws_dst_w = (sws_dst_w >> 2) + (sws_dst_w % 4 != 0 ? 1 : 0); + break; + default: + av_log(context, AV_LOG_ERROR, "could not create SwsContext for input pixel format"); + return AVERROR(EIO); + } + sr_context->sws_context = sws_getContext(sws_src_w, sws_src_h, AV_PIX_FMT_GRAY8, + sws_dst_w, sws_dst_h, AV_PIX_FMT_GRAY8, SWS_BICUBIC, NULL, NULL, NULL); + if (!sr_context->sws_context){ + av_log(context, AV_LOG_ERROR, "could not create SwsContext\n"); + return AVERROR(ENOMEM); + } + sr_context->sws_slice_h = sws_src_h; + } + } + + return 0; + } +} + +typedef struct ThreadData{ + uint8_t* data; + int data_linesize, height, width; +} ThreadData; + +static int uint8_to_float(AVFilterContext* context, void* arg, int jobnr, int nb_jobs) +{ + SRContext* sr_context = context->priv; + const ThreadData* td = arg; + const int slice_start = (td->height * jobnr ) / nb_jobs; + const int slice_end = (td->height * (jobnr + 1)) / nb_jobs; + const uint8_t* src = td->data + slice_start * td->data_linesize; + float* dst = sr_context->input.data + slice_start * td->width; + int y, x; + + for (y = slice_start; y < slice_end; ++y){ + for (x = 0; x < td->width; ++x){ + dst[x] = (float)src[x] / 255.0f; + } + src += td->data_linesize; + dst += td->width; + } + + return 0; +} + +static int float_to_uint8(AVFilterContext* context, void* arg, int jobnr, int nb_jobs) +{ + SRContext* sr_context = context->priv; + const ThreadData* td = arg; + const int slice_start = (td->height * jobnr ) / nb_jobs; + const int slice_end = (td->height * (jobnr + 1)) / nb_jobs; + const float* src = sr_context->output.data + slice_start * td->width; + uint8_t* dst = td->data + slice_start * td->data_linesize; + int y, x; + + for (y = slice_start; y < slice_end; ++y){ + for (x = 0; x < td->width; ++x){ + dst[x] = (uint8_t)(255.0f * FFMIN(src[x], 1.0f)); + } + src += td->width; + dst += td->data_linesize; + } + + return 0; +} + +static int filter_frame(AVFilterLink* inlink, AVFrame* in) +{ + AVFilterContext* context = inlink->dst; + SRContext* sr_context = context->priv; + AVFilterLink* outlink = context->outputs[0]; + AVFrame* out = ff_get_video_buffer(outlink, outlink->w, outlink->h); + ThreadData td; + int nb_threads; + DNNReturnType dnn_result; + + if (!out){ + av_log(context, AV_LOG_ERROR, "could not allocate memory for output frame\n"); + av_frame_free(&in); + return AVERROR(ENOMEM); + } + av_frame_copy_props(out, in); + out->height = sr_context->output.height; + out->width = sr_context->output.width; + switch (sr_context->model_type){ + case SRCNN: + sws_scale(sr_context->sws_context, (const uint8_t **)in->data, in->linesize, + 0, sr_context->sws_slice_h, out->data, out->linesize); + td.data = out->data[0]; + td.data_linesize = out->linesize[0]; + td.height = out->height; + td.width = out->width; + break; + case ESPCN: + if (sr_context->sws_context){ + sws_scale(sr_context->sws_context, (const uint8_t **)(in->data + 1), in->linesize + 1, + 0, sr_context->sws_slice_h, out->data + 1, out->linesize + 1); + sws_scale(sr_context->sws_context, (const uint8_t **)(in->data + 2), in->linesize + 2, + 0, sr_context->sws_slice_h, out->data + 2, out->linesize + 2); + } + td.data = in->data[0]; + td.data_linesize = in->linesize[0]; + td.height = in->height; + td.width = in->width; + } + + nb_threads = ff_filter_get_nb_threads(context); + context->internal->execute(context, uint8_to_float, &td, NULL, FFMIN(td.height, nb_threads)); + av_frame_free(&in); + + dnn_result = (sr_context->dnn_module->execute_model)(sr_context->model); + if (dnn_result != DNN_SUCCESS){ + av_log(context, AV_LOG_ERROR, "failed to execute loaded model\n"); + return AVERROR(EIO); + } + + td.data = out->data[0]; + td.data_linesize = out->linesize[0]; + td.height = out->height; + td.width = out->width; + context->internal->execute(context, float_to_uint8, &td, NULL, FFMIN(td.height, nb_threads)); + + return ff_filter_frame(outlink, out); +} + +static av_cold void uninit(AVFilterContext* context) +{ + SRContext* sr_context = context->priv; + + if (sr_context->dnn_module){ + (sr_context->dnn_module->free_model)(&sr_context->model); + av_freep(&sr_context->dnn_module); + } + + if (sr_context->sws_context){ + sws_freeContext(sr_context->sws_context); + } +} + +static const AVFilterPad sr_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = config_props, + .filter_frame = filter_frame, + }, + { NULL } +}; + +static const AVFilterPad sr_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + }, + { NULL } +}; + +AVFilter ff_vf_sr = { + .name = "sr", + .description = NULL_IF_CONFIG_SMALL("Apply DNN-based image super resolution to the input."), + .priv_size = sizeof(SRContext), + .init = init, + .uninit = uninit, + .query_formats = query_formats, + .inputs = sr_inputs, + .outputs = sr_outputs, + .priv_class = &sr_class, + .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS, +}; + diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_srcnn.c b/chromium/third_party/ffmpeg/libavfilter/vf_srcnn.c deleted file mode 100644 index bba54f67803..00000000000 --- a/chromium/third_party/ffmpeg/libavfilter/vf_srcnn.c +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright (c) 2018 Sergey Lavrushkin - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Filter implementing image super-resolution using deep convolutional networks. - * https://arxiv.org/abs/1501.00092 - */ - -#include "avfilter.h" -#include "formats.h" -#include "internal.h" -#include "libavutil/opt.h" -#include "libavformat/avio.h" -#include "dnn_interface.h" - -typedef struct SRCNNContext { - const AVClass *class; - - char* model_filename; - float* input_output_buf; - DNNBackendType backend_type; - DNNModule* dnn_module; - DNNModel* model; - DNNData input_output; -} SRCNNContext; - -#define OFFSET(x) offsetof(SRCNNContext, x) -#define FLAGS AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM -static const AVOption srcnn_options[] = { - { "dnn_backend", "DNN backend used for model execution", OFFSET(backend_type), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, 0, 1, FLAGS, "backend" }, - { "native", "native backend flag", 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, FLAGS, "backend" }, -#if (CONFIG_LIBTENSORFLOW == 1) - { "tensorflow", "tensorflow backend flag", 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, FLAGS, "backend" }, -#endif - { "model_filename", "path to model file specifying network architecture and its parameters", OFFSET(model_filename), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 0, FLAGS }, - { NULL } -}; - -AVFILTER_DEFINE_CLASS(srcnn); - -static av_cold int init(AVFilterContext* context) -{ - SRCNNContext* srcnn_context = context->priv; - - srcnn_context->dnn_module = ff_get_dnn_module(srcnn_context->backend_type); - if (!srcnn_context->dnn_module){ - av_log(context, AV_LOG_ERROR, "could not create DNN module for requested backend\n"); - return AVERROR(ENOMEM); - } - if (!srcnn_context->model_filename){ - av_log(context, AV_LOG_VERBOSE, "model file for network was not specified, using default network for x2 upsampling\n"); - srcnn_context->model = (srcnn_context->dnn_module->load_default_model)(DNN_SRCNN); - } - else{ - srcnn_context->model = (srcnn_context->dnn_module->load_model)(srcnn_context->model_filename); - } - if (!srcnn_context->model){ - av_log(context, AV_LOG_ERROR, "could not load DNN model\n"); - return AVERROR(EIO); - } - - return 0; -} - -static int query_formats(AVFilterContext* context) -{ - const enum AVPixelFormat pixel_formats[] = {AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, - AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_GRAY8, - AV_PIX_FMT_NONE}; - AVFilterFormats* formats_list; - - formats_list = ff_make_format_list(pixel_formats); - if (!formats_list){ - av_log(context, AV_LOG_ERROR, "could not create formats list\n"); - return AVERROR(ENOMEM); - } - return ff_set_common_formats(context, formats_list); -} - -static int config_props(AVFilterLink* inlink) -{ - AVFilterContext* context = inlink->dst; - SRCNNContext* srcnn_context = context->priv; - DNNReturnType result; - - srcnn_context->input_output_buf = av_malloc(inlink->h * inlink->w * sizeof(float)); - if (!srcnn_context->input_output_buf){ - av_log(context, AV_LOG_ERROR, "could not allocate memory for input/output buffer\n"); - return AVERROR(ENOMEM); - } - - srcnn_context->input_output.data = srcnn_context->input_output_buf; - srcnn_context->input_output.width = inlink->w; - srcnn_context->input_output.height = inlink->h; - srcnn_context->input_output.channels = 1; - - result = (srcnn_context->model->set_input_output)(srcnn_context->model->model, &srcnn_context->input_output, &srcnn_context->input_output); - if (result != DNN_SUCCESS){ - av_log(context, AV_LOG_ERROR, "could not set input and output for the model\n"); - return AVERROR(EIO); - } - else{ - return 0; - } -} - -typedef struct ThreadData{ - uint8_t* out; - int out_linesize, height, width; -} ThreadData; - -static int uint8_to_float(AVFilterContext* context, void* arg, int jobnr, int nb_jobs) -{ - SRCNNContext* srcnn_context = context->priv; - const ThreadData* td = arg; - const int slice_start = (td->height * jobnr ) / nb_jobs; - const int slice_end = (td->height * (jobnr + 1)) / nb_jobs; - const uint8_t* src = td->out + slice_start * td->out_linesize; - float* dst = srcnn_context->input_output_buf + slice_start * td->width; - int y, x; - - for (y = slice_start; y < slice_end; ++y){ - for (x = 0; x < td->width; ++x){ - dst[x] = (float)src[x] / 255.0f; - } - src += td->out_linesize; - dst += td->width; - } - - return 0; -} - -static int float_to_uint8(AVFilterContext* context, void* arg, int jobnr, int nb_jobs) -{ - SRCNNContext* srcnn_context = context->priv; - const ThreadData* td = arg; - const int slice_start = (td->height * jobnr ) / nb_jobs; - const int slice_end = (td->height * (jobnr + 1)) / nb_jobs; - const float* src = srcnn_context->input_output_buf + slice_start * td->width; - uint8_t* dst = td->out + slice_start * td->out_linesize; - int y, x; - - for (y = slice_start; y < slice_end; ++y){ - for (x = 0; x < td->width; ++x){ - dst[x] = (uint8_t)(255.0f * FFMIN(src[x], 1.0f)); - } - src += td->width; - dst += td->out_linesize; - } - - return 0; -} - -static int filter_frame(AVFilterLink* inlink, AVFrame* in) -{ - AVFilterContext* context = inlink->dst; - SRCNNContext* srcnn_context = context->priv; - AVFilterLink* outlink = context->outputs[0]; - AVFrame* out = ff_get_video_buffer(outlink, outlink->w, outlink->h); - ThreadData td; - int nb_threads; - DNNReturnType dnn_result; - - if (!out){ - av_log(context, AV_LOG_ERROR, "could not allocate memory for output frame\n"); - av_frame_free(&in); - return AVERROR(ENOMEM); - } - av_frame_copy_props(out, in); - av_frame_copy(out, in); - av_frame_free(&in); - td.out = out->data[0]; - td.out_linesize = out->linesize[0]; - td.height = out->height; - td.width = out->width; - - nb_threads = ff_filter_get_nb_threads(context); - context->internal->execute(context, uint8_to_float, &td, NULL, FFMIN(td.height, nb_threads)); - - dnn_result = (srcnn_context->dnn_module->execute_model)(srcnn_context->model); - if (dnn_result != DNN_SUCCESS){ - av_log(context, AV_LOG_ERROR, "failed to execute loaded model\n"); - return AVERROR(EIO); - } - - context->internal->execute(context, float_to_uint8, &td, NULL, FFMIN(td.height, nb_threads)); - - return ff_filter_frame(outlink, out); -} - -static av_cold void uninit(AVFilterContext* context) -{ - SRCNNContext* srcnn_context = context->priv; - - if (srcnn_context->dnn_module){ - (srcnn_context->dnn_module->free_model)(&srcnn_context->model); - av_freep(&srcnn_context->dnn_module); - } - av_freep(&srcnn_context->input_output_buf); -} - -static const AVFilterPad srcnn_inputs[] = { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - .config_props = config_props, - .filter_frame = filter_frame, - }, - { NULL } -}; - -static const AVFilterPad srcnn_outputs[] = { - { - .name = "default", - .type = AVMEDIA_TYPE_VIDEO, - }, - { NULL } -}; - -AVFilter ff_vf_srcnn = { - .name = "srcnn", - .description = NULL_IF_CONFIG_SMALL("Apply super resolution convolutional neural network to the input. Use bicubic upsamping with corresponding scaling factor before."), - .priv_size = sizeof(SRCNNContext), - .init = init, - .uninit = uninit, - .query_formats = query_formats, - .inputs = srcnn_inputs, - .outputs = srcnn_outputs, - .priv_class = &srcnn_class, - .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SLICE_THREADS, -}; - diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_tonemap_opencl.c b/chromium/third_party/ffmpeg/libavfilter/vf_tonemap_opencl.c new file mode 100644 index 00000000000..241f95e6c30 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavfilter/vf_tonemap_opencl.c @@ -0,0 +1,603 @@ +/* + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#include <float.h> + +#include "libavutil/avassert.h" +#include "libavutil/bprint.h" +#include "libavutil/common.h" +#include "libavutil/imgutils.h" +#include "libavutil/mastering_display_metadata.h" +#include "libavutil/mem.h" +#include "libavutil/opt.h" +#include "libavutil/pixdesc.h" + +#include "avfilter.h" +#include "internal.h" +#include "opencl.h" +#include "opencl_source.h" +#include "video.h" +#include "colorspace.h" + +// TODO: +// - seperate peak-detection from tone-mapping kernel to solve +// one-frame-delay issue. +// - import colorspace matrix generation from vf_colorspace.c +// - more format support + +#define DETECTION_FRAMES 63 +#define REFERENCE_WHITE 100.0f + +enum TonemapAlgorithm { + TONEMAP_NONE, + TONEMAP_LINEAR, + TONEMAP_GAMMA, + TONEMAP_CLIP, + TONEMAP_REINHARD, + TONEMAP_HABLE, + TONEMAP_MOBIUS, + TONEMAP_MAX, +}; + +typedef struct TonemapOpenCLContext { + OpenCLFilterContext ocf; + + enum AVColorSpace colorspace, colorspace_in, colorspace_out; + enum AVColorTransferCharacteristic trc, trc_in, trc_out; + enum AVColorPrimaries primaries, primaries_in, primaries_out; + enum AVColorRange range, range_in, range_out; + enum AVChromaLocation chroma_loc; + + enum TonemapAlgorithm tonemap; + enum AVPixelFormat format; + double peak; + double param; + double desat_param; + double target_peak; + double scene_threshold; + int initialised; + cl_kernel kernel; + cl_command_queue command_queue; + cl_mem util_mem; +} TonemapOpenCLContext; + +static const char *yuv_coff[AVCOL_SPC_NB] = { + [AVCOL_SPC_BT709] = "rgb2yuv_bt709", + [AVCOL_SPC_BT2020_NCL] = "rgb2yuv_bt2020", +}; + +static const char *rgb_coff[AVCOL_SPC_NB] = { + [AVCOL_SPC_BT709] = "yuv2rgb_bt709", + [AVCOL_SPC_BT2020_NCL] = "yuv2rgb_bt2020", +}; + +static const char *linearize_funcs[AVCOL_TRC_NB] = { + [AVCOL_TRC_SMPTE2084] = "eotf_st2084", + [AVCOL_TRC_ARIB_STD_B67] = "inverse_oetf_hlg", +}; + +static const char *delinearize_funcs[AVCOL_TRC_NB] = { + [AVCOL_TRC_BT709] = "inverse_eotf_bt1886", + [AVCOL_TRC_BT2020_10] = "inverse_eotf_bt1886", +}; + +static const struct LumaCoefficients luma_coefficients[AVCOL_SPC_NB] = { + [AVCOL_SPC_BT709] = { 0.2126, 0.7152, 0.0722 }, + [AVCOL_SPC_BT2020_NCL] = { 0.2627, 0.6780, 0.0593 }, +}; + +static struct PrimaryCoefficients primaries_table[AVCOL_PRI_NB] = { + [AVCOL_PRI_BT709] = { 0.640, 0.330, 0.300, 0.600, 0.150, 0.060 }, + [AVCOL_PRI_BT2020] = { 0.708, 0.292, 0.170, 0.797, 0.131, 0.046 }, +}; + +static struct WhitepointCoefficients whitepoint_table[AVCOL_PRI_NB] = { + [AVCOL_PRI_BT709] = { 0.3127, 0.3290 }, + [AVCOL_PRI_BT2020] = { 0.3127, 0.3290 }, +}; + +static const char *tonemap_func[TONEMAP_MAX] = { + [TONEMAP_NONE] = "direct", + [TONEMAP_LINEAR] = "linear", + [TONEMAP_GAMMA] = "gamma", + [TONEMAP_CLIP] = "clip", + [TONEMAP_REINHARD] = "reinhard", + [TONEMAP_HABLE] = "hable", + [TONEMAP_MOBIUS] = "mobius", +}; + +static void get_rgb2rgb_matrix(enum AVColorPrimaries in, enum AVColorPrimaries out, + double rgb2rgb[3][3]) { + double rgb2xyz[3][3], xyz2rgb[3][3]; + + ff_fill_rgb2xyz_table(&primaries_table[out], &whitepoint_table[out], rgb2xyz); + ff_matrix_invert_3x3(rgb2xyz, xyz2rgb); + ff_fill_rgb2xyz_table(&primaries_table[in], &whitepoint_table[in], rgb2xyz); + ff_matrix_mul_3x3(rgb2rgb, rgb2xyz, xyz2rgb); +} + +#define OPENCL_SOURCE_NB 3 +// Average light level for SDR signals. This is equal to a signal level of 0.5 +// under a typical presentation gamma of about 2.0. +static const float sdr_avg = 0.25f; + +static int tonemap_opencl_init(AVFilterContext *avctx) +{ + TonemapOpenCLContext *ctx = avctx->priv; + int rgb2rgb_passthrough = 1; + double rgb2rgb[3][3]; + struct LumaCoefficients luma_src, luma_dst; + cl_int cle; + int err; + AVBPrint header; + const char *opencl_sources[OPENCL_SOURCE_NB]; + + av_bprint_init(&header, 1024, AV_BPRINT_SIZE_AUTOMATIC); + + switch(ctx->tonemap) { + case TONEMAP_GAMMA: + if (isnan(ctx->param)) + ctx->param = 1.8f; + break; + case TONEMAP_REINHARD: + if (!isnan(ctx->param)) + ctx->param = (1.0f - ctx->param) / ctx->param; + break; + case TONEMAP_MOBIUS: + if (isnan(ctx->param)) + ctx->param = 0.3f; + break; + } + + if (isnan(ctx->param)) + ctx->param = 1.0f; + + // SDR peak is 1.0f + ctx->target_peak = 1.0f; + av_log(ctx, AV_LOG_DEBUG, "tone mapping transfer from %s to %s\n", + av_color_transfer_name(ctx->trc_in), + av_color_transfer_name(ctx->trc_out)); + av_log(ctx, AV_LOG_DEBUG, "mapping colorspace from %s to %s\n", + av_color_space_name(ctx->colorspace_in), + av_color_space_name(ctx->colorspace_out)); + av_log(ctx, AV_LOG_DEBUG, "mapping primaries from %s to %s\n", + av_color_primaries_name(ctx->primaries_in), + av_color_primaries_name(ctx->primaries_out)); + av_log(ctx, AV_LOG_DEBUG, "mapping range from %s to %s\n", + av_color_range_name(ctx->range_in), + av_color_range_name(ctx->range_out)); + // checking valid value just because of limited implementaion + // please remove when more functionalities are implemented + av_assert0(ctx->trc_out == AVCOL_TRC_BT709 || + ctx->trc_out == AVCOL_TRC_BT2020_10); + av_assert0(ctx->trc_in == AVCOL_TRC_SMPTE2084|| + ctx->trc_in == AVCOL_TRC_ARIB_STD_B67); + av_assert0(ctx->colorspace_in == AVCOL_SPC_BT2020_NCL || + ctx->colorspace_in == AVCOL_SPC_BT709); + av_assert0(ctx->primaries_in == AVCOL_PRI_BT2020 || + ctx->primaries_in == AVCOL_PRI_BT709); + + av_bprintf(&header, "__constant const float tone_param = %.4ff;\n", + ctx->param); + av_bprintf(&header, "__constant const float desat_param = %.4ff;\n", + ctx->desat_param); + av_bprintf(&header, "__constant const float target_peak = %.4ff;\n", + ctx->target_peak); + av_bprintf(&header, "__constant const float sdr_avg = %.4ff;\n", sdr_avg); + av_bprintf(&header, "__constant const float scene_threshold = %.4ff;\n", + ctx->scene_threshold); + av_bprintf(&header, "#define TONE_FUNC %s\n", tonemap_func[ctx->tonemap]); + av_bprintf(&header, "#define DETECTION_FRAMES %d\n", DETECTION_FRAMES); + + if (ctx->primaries_out != ctx->primaries_in) { + get_rgb2rgb_matrix(ctx->primaries_in, ctx->primaries_out, rgb2rgb); + rgb2rgb_passthrough = 0; + } + if (ctx->range_in == AVCOL_RANGE_JPEG) + av_bprintf(&header, "#define FULL_RANGE_IN\n"); + + if (ctx->range_out == AVCOL_RANGE_JPEG) + av_bprintf(&header, "#define FULL_RANGE_OUT\n"); + + av_bprintf(&header, "#define chroma_loc %d\n", (int)ctx->chroma_loc); + + if (rgb2rgb_passthrough) + av_bprintf(&header, "#define RGB2RGB_PASSTHROUGH\n"); + else { + av_bprintf(&header, "__constant float rgb2rgb[9] = {\n"); + av_bprintf(&header, " %.4ff, %.4ff, %.4ff,\n", + rgb2rgb[0][0], rgb2rgb[0][1], rgb2rgb[0][2]); + av_bprintf(&header, " %.4ff, %.4ff, %.4ff,\n", + rgb2rgb[1][0], rgb2rgb[1][1], rgb2rgb[1][2]); + av_bprintf(&header, " %.4ff, %.4ff, %.4ff};\n", + rgb2rgb[2][0], rgb2rgb[2][1], rgb2rgb[2][2]); + } + + av_bprintf(&header, "#define rgb_matrix %s\n", + rgb_coff[ctx->colorspace_in]); + av_bprintf(&header, "#define yuv_matrix %s\n", + yuv_coff[ctx->colorspace_out]); + + luma_src = luma_coefficients[ctx->colorspace_in]; + luma_dst = luma_coefficients[ctx->colorspace_out]; + av_bprintf(&header, "constant float3 luma_src = {%.4ff, %.4ff, %.4ff};\n", + luma_src.cr, luma_src.cg, luma_src.cb); + av_bprintf(&header, "constant float3 luma_dst = {%.4ff, %.4ff, %.4ff};\n", + luma_dst.cr, luma_dst.cg, luma_dst.cb); + + av_bprintf(&header, "#define linearize %s\n", linearize_funcs[ctx->trc_in]); + av_bprintf(&header, "#define delinearize %s\n", + delinearize_funcs[ctx->trc_out]); + + if (ctx->trc_in == AVCOL_TRC_ARIB_STD_B67) + av_bprintf(&header, "#define ootf_impl ootf_hlg\n"); + + if (ctx->trc_out == AVCOL_TRC_ARIB_STD_B67) + av_bprintf(&header, "#define inverse_ootf_impl inverse_ootf_hlg\n"); + + av_log(avctx, AV_LOG_DEBUG, "Generated OpenCL header:\n%s\n", header.str); + opencl_sources[0] = header.str; + opencl_sources[1] = ff_opencl_source_tonemap; + opencl_sources[2] = ff_opencl_source_colorspace_common; + err = ff_opencl_filter_load_program(avctx, opencl_sources, OPENCL_SOURCE_NB); + + av_bprint_finalize(&header, NULL); + if (err < 0) + goto fail; + + ctx->command_queue = clCreateCommandQueue(ctx->ocf.hwctx->context, + ctx->ocf.hwctx->device_id, + 0, &cle); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create OpenCL " + "command queue %d.\n", cle); + + ctx->kernel = clCreateKernel(ctx->ocf.program, "tonemap", &cle); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create kernel %d.\n", cle); + + ctx->util_mem = + clCreateBuffer(ctx->ocf.hwctx->context, 0, + (2 * DETECTION_FRAMES + 7) * sizeof(unsigned), + NULL, &cle); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create util buffer: %d.\n", cle); + + ctx->initialised = 1; + return 0; + +fail: + if (ctx->util_mem) + clReleaseMemObject(ctx->util_mem); + if (ctx->command_queue) + clReleaseCommandQueue(ctx->command_queue); + if (ctx->kernel) + clReleaseKernel(ctx->kernel); + return err; +} + +static int tonemap_opencl_config_output(AVFilterLink *outlink) +{ + AVFilterContext *avctx = outlink->src; + TonemapOpenCLContext *s = avctx->priv; + int ret; + if (s->format == AV_PIX_FMT_NONE) + av_log(avctx, AV_LOG_WARNING, "format not set, use default format NV12\n"); + else { + if (s->format != AV_PIX_FMT_P010 && + s->format != AV_PIX_FMT_NV12) { + av_log(avctx, AV_LOG_ERROR, "unsupported output format," + "only p010/nv12 supported now\n"); + return AVERROR(EINVAL); + } + } + + s->ocf.output_format = s->format == AV_PIX_FMT_NONE ? AV_PIX_FMT_NV12 : s->format; + ret = ff_opencl_filter_config_output(outlink); + if (ret < 0) + return ret; + + return 0; +} + +static int launch_kernel(AVFilterContext *avctx, cl_kernel kernel, + AVFrame *output, AVFrame *input, float peak) { + TonemapOpenCLContext *ctx = avctx->priv; + int err = AVERROR(ENOSYS); + size_t global_work[2]; + size_t local_work[2]; + cl_int cle; + + CL_SET_KERNEL_ARG(kernel, 0, cl_mem, &output->data[0]); + CL_SET_KERNEL_ARG(kernel, 1, cl_mem, &input->data[0]); + CL_SET_KERNEL_ARG(kernel, 2, cl_mem, &output->data[1]); + CL_SET_KERNEL_ARG(kernel, 3, cl_mem, &input->data[1]); + CL_SET_KERNEL_ARG(kernel, 4, cl_mem, &ctx->util_mem); + CL_SET_KERNEL_ARG(kernel, 5, cl_float, &peak); + + local_work[0] = 16; + local_work[1] = 16; + // Note the work size based on uv plane, as we process a 2x2 quad in one workitem + err = ff_opencl_filter_work_size_from_image(avctx, global_work, output, + 1, 16); + if (err < 0) + return err; + + cle = clEnqueueNDRangeKernel(ctx->command_queue, kernel, 2, NULL, + global_work, local_work, + 0, NULL, NULL); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to enqueue kernel: %d.\n", cle); + return 0; +fail: + return err; +} + +static double determine_signal_peak(AVFrame *in) +{ + AVFrameSideData *sd = av_frame_get_side_data(in, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); + double peak = 0; + + if (sd) { + AVContentLightMetadata *clm = (AVContentLightMetadata *)sd->data; + peak = clm->MaxCLL / REFERENCE_WHITE; + } + + sd = av_frame_get_side_data(in, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); + if (!peak && sd) { + AVMasteringDisplayMetadata *metadata = (AVMasteringDisplayMetadata *)sd->data; + if (metadata->has_luminance) + peak = av_q2d(metadata->max_luminance) / REFERENCE_WHITE; + } + + // For untagged source, use peak of 10000 if SMPTE ST.2084 + // otherwise assume HLG with reference display peak 1000. + if (!peak) + peak = in->color_trc == AVCOL_TRC_SMPTE2084 ? 100.0f : 10.0f; + + return peak; +} + +static void update_metadata(AVFrame *in, double peak) { + AVFrameSideData *sd = av_frame_get_side_data(in, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); + + if (sd) { + AVContentLightMetadata *clm = (AVContentLightMetadata *)sd->data; + clm->MaxCLL = (unsigned)(peak * REFERENCE_WHITE); + } + + sd = av_frame_get_side_data(in, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); + if (sd) { + AVMasteringDisplayMetadata *metadata = (AVMasteringDisplayMetadata *)sd->data; + if (metadata->has_luminance) + metadata->max_luminance =av_d2q(peak * REFERENCE_WHITE, 10000); + } +} + +static int tonemap_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) +{ + AVFilterContext *avctx = inlink->dst; + AVFilterLink *outlink = avctx->outputs[0]; + TonemapOpenCLContext *ctx = avctx->priv; + AVFrame *output = NULL; + cl_int cle; + int err; + double peak = ctx->peak; + + AVHWFramesContext *input_frames_ctx = + (AVHWFramesContext*)input->hw_frames_ctx->data; + + av_log(ctx, AV_LOG_DEBUG, "Filter input: %s, %ux%u (%"PRId64").\n", + av_get_pix_fmt_name(input->format), + input->width, input->height, input->pts); + + if (!input->hw_frames_ctx) + return AVERROR(EINVAL); + + output = ff_get_video_buffer(outlink, outlink->w, outlink->h); + if (!output) { + err = AVERROR(ENOMEM); + goto fail; + } + + err = av_frame_copy_props(output, input); + if (err < 0) + goto fail; + + if (!peak) + peak = determine_signal_peak(input); + + if (ctx->trc != -1) + output->color_trc = ctx->trc; + if (ctx->primaries != -1) + output->color_primaries = ctx->primaries; + if (ctx->colorspace != -1) + output->colorspace = ctx->colorspace; + if (ctx->range != -1) + output->color_range = ctx->range; + + ctx->trc_in = input->color_trc; + ctx->trc_out = output->color_trc; + ctx->colorspace_in = input->colorspace; + ctx->colorspace_out = output->colorspace; + ctx->primaries_in = input->color_primaries; + ctx->primaries_out = output->color_primaries; + ctx->range_in = input->color_range; + ctx->range_out = output->color_range; + ctx->chroma_loc = output->chroma_location; + + if (!ctx->initialised) { + if (!(input->color_trc == AVCOL_TRC_SMPTE2084 || + input->color_trc == AVCOL_TRC_ARIB_STD_B67)) { + av_log(ctx, AV_LOG_ERROR, "unsupported transfer function characteristic.\n"); + err = AVERROR(ENOSYS); + goto fail; + } + + if (input_frames_ctx->sw_format != AV_PIX_FMT_P010) { + av_log(ctx, AV_LOG_ERROR, "unsupported format in tonemap_opencl.\n"); + err = AVERROR(ENOSYS); + goto fail; + } + + err = tonemap_opencl_init(avctx); + if (err < 0) + goto fail; + } + + switch(input_frames_ctx->sw_format) { + case AV_PIX_FMT_P010: + err = launch_kernel(avctx, ctx->kernel, output, input, peak); + if (err < 0) goto fail; + break; + default: + err = AVERROR(ENOSYS); + goto fail; + } + + cle = clFinish(ctx->command_queue); + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to finish command queue: %d.\n", cle); + + av_frame_free(&input); + + update_metadata(output, ctx->target_peak); + + av_log(ctx, AV_LOG_DEBUG, "Tone-mapping output: %s, %ux%u (%"PRId64").\n", + av_get_pix_fmt_name(output->format), + output->width, output->height, output->pts); +#ifndef NDEBUG + { + uint32_t *ptr, *max_total_p, *avg_total_p, *frame_number_p; + float peak_detected, avg_detected; + unsigned map_size = (2 * DETECTION_FRAMES + 7) * sizeof(unsigned); + ptr = (void *)clEnqueueMapBuffer(ctx->command_queue, ctx->util_mem, + CL_TRUE, CL_MAP_READ, 0, map_size, + 0, NULL, NULL, &cle); + // For the layout of the util buffer, refer tonemap.cl + if (ptr) { + max_total_p = ptr + 2 * (DETECTION_FRAMES + 1) + 1; + avg_total_p = max_total_p + 1; + frame_number_p = avg_total_p + 2; + peak_detected = (float)*max_total_p / (REFERENCE_WHITE * (*frame_number_p)); + avg_detected = (float)*avg_total_p / (REFERENCE_WHITE * (*frame_number_p)); + av_log(ctx, AV_LOG_DEBUG, "peak %f, avg %f will be used for next frame\n", + peak_detected, avg_detected); + clEnqueueUnmapMemObject(ctx->command_queue, ctx->util_mem, ptr, 0, + NULL, NULL); + } + } +#endif + + return ff_filter_frame(outlink, output); + +fail: + clFinish(ctx->command_queue); + av_frame_free(&input); + av_frame_free(&output); + return err; +} + +static av_cold void tonemap_opencl_uninit(AVFilterContext *avctx) +{ + TonemapOpenCLContext *ctx = avctx->priv; + cl_int cle; + + if (ctx->util_mem) + clReleaseMemObject(ctx->util_mem); + if (ctx->kernel) { + cle = clReleaseKernel(ctx->kernel); + if (cle != CL_SUCCESS) + av_log(avctx, AV_LOG_ERROR, "Failed to release " + "kernel: %d.\n", cle); + } + + if (ctx->command_queue) { + cle = clReleaseCommandQueue(ctx->command_queue); + if (cle != CL_SUCCESS) + av_log(avctx, AV_LOG_ERROR, "Failed to release " + "command queue: %d.\n", cle); + } + + ff_opencl_filter_uninit(avctx); +} + +#define OFFSET(x) offsetof(TonemapOpenCLContext, x) +#define FLAGS (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) +static const AVOption tonemap_opencl_options[] = { + { "tonemap", "tonemap algorithm selection", OFFSET(tonemap), AV_OPT_TYPE_INT, {.i64 = TONEMAP_NONE}, TONEMAP_NONE, TONEMAP_MAX - 1, FLAGS, "tonemap" }, + { "none", 0, 0, AV_OPT_TYPE_CONST, {.i64 = TONEMAP_NONE}, 0, 0, FLAGS, "tonemap" }, + { "linear", 0, 0, AV_OPT_TYPE_CONST, {.i64 = TONEMAP_LINEAR}, 0, 0, FLAGS, "tonemap" }, + { "gamma", 0, 0, AV_OPT_TYPE_CONST, {.i64 = TONEMAP_GAMMA}, 0, 0, FLAGS, "tonemap" }, + { "clip", 0, 0, AV_OPT_TYPE_CONST, {.i64 = TONEMAP_CLIP}, 0, 0, FLAGS, "tonemap" }, + { "reinhard", 0, 0, AV_OPT_TYPE_CONST, {.i64 = TONEMAP_REINHARD}, 0, 0, FLAGS, "tonemap" }, + { "hable", 0, 0, AV_OPT_TYPE_CONST, {.i64 = TONEMAP_HABLE}, 0, 0, FLAGS, "tonemap" }, + { "mobius", 0, 0, AV_OPT_TYPE_CONST, {.i64 = TONEMAP_MOBIUS}, 0, 0, FLAGS, "tonemap" }, + { "transfer", "set transfer characteristic", OFFSET(trc), AV_OPT_TYPE_INT, {.i64 = AVCOL_TRC_BT709}, -1, INT_MAX, FLAGS, "transfer" }, + { "t", "set transfer characteristic", OFFSET(trc), AV_OPT_TYPE_INT, {.i64 = AVCOL_TRC_BT709}, -1, INT_MAX, FLAGS, "transfer" }, + { "bt709", 0, 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_TRC_BT709}, 0, 0, FLAGS, "transfer" }, + { "bt2020", 0, 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_TRC_BT2020_10}, 0, 0, FLAGS, "transfer" }, + { "matrix", "set colorspace matrix", OFFSET(colorspace), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, FLAGS, "matrix" }, + { "m", "set colorspace matrix", OFFSET(colorspace), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, FLAGS, "matrix" }, + { "bt709", 0, 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_SPC_BT709}, 0, 0, FLAGS, "matrix" }, + { "bt2020", 0, 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_SPC_BT2020_NCL}, 0, 0, FLAGS, "matrix" }, + { "primaries", "set color primaries", OFFSET(primaries), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, FLAGS, "primaries" }, + { "p", "set color primaries", OFFSET(primaries), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, FLAGS, "primaries" }, + { "bt709", 0, 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_PRI_BT709}, 0, 0, FLAGS, "primaries" }, + { "bt2020", 0, 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_PRI_BT2020}, 0, 0, FLAGS, "primaries" }, + { "range", "set color range", OFFSET(range), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, FLAGS, "range" }, + { "r", "set color range", OFFSET(range), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, FLAGS, "range" }, + { "tv", 0, 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_MPEG}, 0, 0, FLAGS, "range" }, + { "pc", 0, 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_JPEG}, 0, 0, FLAGS, "range" }, + { "limited", 0, 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_MPEG}, 0, 0, FLAGS, "range" }, + { "full", 0, 0, AV_OPT_TYPE_CONST, {.i64 = AVCOL_RANGE_JPEG}, 0, 0, FLAGS, "range" }, + { "format", "output pixel format", OFFSET(format), AV_OPT_TYPE_PIXEL_FMT, {.i64 = AV_PIX_FMT_NONE}, AV_PIX_FMT_NONE, INT_MAX, FLAGS, "fmt" }, + { "peak", "signal peak override", OFFSET(peak), AV_OPT_TYPE_DOUBLE, {.dbl = 0}, 0, DBL_MAX, FLAGS }, + { "param", "tonemap parameter", OFFSET(param), AV_OPT_TYPE_DOUBLE, {.dbl = NAN}, DBL_MIN, DBL_MAX, FLAGS }, + { "desat", "desaturation parameter", OFFSET(desat_param), AV_OPT_TYPE_DOUBLE, {.dbl = 0.5}, 0, DBL_MAX, FLAGS }, + { "threshold", "scene detection threshold", OFFSET(scene_threshold), AV_OPT_TYPE_DOUBLE, {.dbl = 0.2}, 0, DBL_MAX, FLAGS }, + { NULL } +}; + +AVFILTER_DEFINE_CLASS(tonemap_opencl); + +static const AVFilterPad tonemap_opencl_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .filter_frame = &tonemap_opencl_filter_frame, + .config_props = &ff_opencl_filter_config_input, + }, + { NULL } +}; + +static const AVFilterPad tonemap_opencl_outputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_VIDEO, + .config_props = &tonemap_opencl_config_output, + }, + { NULL } +}; + +AVFilter ff_vf_tonemap_opencl = { + .name = "tonemap_opencl", + .description = NULL_IF_CONFIG_SMALL("perform HDR to SDR conversion with tonemapping"), + .priv_size = sizeof(TonemapOpenCLContext), + .priv_class = &tonemap_opencl_class, + .init = &ff_opencl_filter_init, + .uninit = &tonemap_opencl_uninit, + .query_formats = &ff_opencl_filter_query_formats, + .inputs = tonemap_opencl_inputs, + .outputs = tonemap_opencl_outputs, + .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE, +}; diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_unsharp_opencl.c b/chromium/third_party/ffmpeg/libavfilter/vf_unsharp_opencl.c index 19c91857cb7..d76d1b1733d 100644 --- a/chromium/third_party/ffmpeg/libavfilter/vf_unsharp_opencl.c +++ b/chromium/third_party/ffmpeg/libavfilter/vf_unsharp_opencl.c @@ -76,12 +76,8 @@ static int unsharp_opencl_init(AVFilterContext *avctx) ctx->command_queue = clCreateCommandQueue(ctx->ocf.hwctx->context, ctx->ocf.hwctx->device_id, 0, &cle); - if (!ctx->command_queue) { - av_log(avctx, AV_LOG_ERROR, "Failed to create OpenCL " - "command queue: %d.\n", cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create OpenCL " + "command queue %d.\n", cle); // Use global kernel if mask size will be too big for the local store.. ctx->global = (ctx->luma_size_x > 17.0f || @@ -92,11 +88,7 @@ static int unsharp_opencl_init(AVFilterContext *avctx) ctx->kernel = clCreateKernel(ctx->ocf.program, ctx->global ? "unsharp_global" : "unsharp_local", &cle); - if (!ctx->kernel) { - av_log(avctx, AV_LOG_ERROR, "Failed to create kernel: %d.\n", cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create kernel %d.\n", cle); ctx->initialised = 1; return 0; @@ -176,12 +168,8 @@ static int unsharp_opencl_make_filter_params(AVFilterContext *avctx) CL_MEM_COPY_HOST_PTR | CL_MEM_HOST_NO_ACCESS, matrix_bytes, matrix, &cle); - if (!buffer) { - av_log(avctx, AV_LOG_ERROR, "Failed to create matrix buffer: " - "%d.\n", cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create matrix buffer: " + "%d.\n", cle); ctx->plane[p].matrix = buffer; } else { buffer = clCreateBuffer(ctx->ocf.hwctx->context, @@ -190,12 +178,8 @@ static int unsharp_opencl_make_filter_params(AVFilterContext *avctx) CL_MEM_HOST_NO_ACCESS, sizeof(ctx->plane[p].blur_x), ctx->plane[p].blur_x, &cle); - if (!buffer) { - av_log(avctx, AV_LOG_ERROR, "Failed to create x-coef buffer: " - "%d.\n", cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create x-coef buffer: " + "%d.\n", cle); ctx->plane[p].coef_x = buffer; buffer = clCreateBuffer(ctx->ocf.hwctx->context, @@ -204,12 +188,8 @@ static int unsharp_opencl_make_filter_params(AVFilterContext *avctx) CL_MEM_HOST_NO_ACCESS, sizeof(ctx->plane[p].blur_y), ctx->plane[p].blur_y, &cle); - if (!buffer) { - av_log(avctx, AV_LOG_ERROR, "Failed to create y-coef buffer: " - "%d.\n", cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to create y-coef buffer: " + "%d.\n", cle); ctx->plane[p].coef_y = buffer; } @@ -268,56 +248,17 @@ static int unsharp_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) if (!dst) break; - cle = clSetKernelArg(ctx->kernel, 0, sizeof(cl_mem), &dst); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "destination image argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 1, sizeof(cl_mem), &src); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "source image argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 2, sizeof(cl_int), &ctx->plane[p].size_x); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "matrix size argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 3, sizeof(cl_int), &ctx->plane[p].size_y); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "matrix size argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 4, sizeof(cl_float), &ctx->plane[p].amount); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "amount argument: %d.\n", cle); - goto fail; - } + CL_SET_KERNEL_ARG(ctx->kernel, 0, cl_mem, &dst); + CL_SET_KERNEL_ARG(ctx->kernel, 1, cl_mem, &src); + CL_SET_KERNEL_ARG(ctx->kernel, 2, cl_int, &ctx->plane[p].size_x); + CL_SET_KERNEL_ARG(ctx->kernel, 3, cl_int, &ctx->plane[p].size_y); + CL_SET_KERNEL_ARG(ctx->kernel, 4, cl_float, &ctx->plane[p].amount); + if (ctx->global) { - cle = clSetKernelArg(ctx->kernel, 5, sizeof(cl_mem), &ctx->plane[p].matrix); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "matrix argument: %d.\n", cle); - goto fail; - } + CL_SET_KERNEL_ARG(ctx->kernel, 5, cl_mem, &ctx->plane[p].matrix); } else { - cle = clSetKernelArg(ctx->kernel, 5, sizeof(cl_mem), &ctx->plane[p].coef_x); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "x-coef argument: %d.\n", cle); - goto fail; - } - cle = clSetKernelArg(ctx->kernel, 6, sizeof(cl_mem), &ctx->plane[p].coef_y); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to set kernel " - "y-coef argument: %d.\n", cle); - goto fail; - } + CL_SET_KERNEL_ARG(ctx->kernel, 5, cl_mem, &ctx->plane[p].coef_x); + CL_SET_KERNEL_ARG(ctx->kernel, 6, cl_mem, &ctx->plane[p].coef_y); } err = ff_opencl_filter_work_size_from_image(avctx, global_work, output, p, @@ -335,21 +276,11 @@ static int unsharp_opencl_filter_frame(AVFilterLink *inlink, AVFrame *input) cle = clEnqueueNDRangeKernel(ctx->command_queue, ctx->kernel, 2, NULL, global_work, ctx->global ? NULL : local_work, 0, NULL, NULL); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to enqueue kernel: %d.\n", - cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to enqueue kernel: %d.\n", cle); } cle = clFinish(ctx->command_queue); - if (cle != CL_SUCCESS) { - av_log(avctx, AV_LOG_ERROR, "Failed to finish command queue: %d.\n", - cle); - err = AVERROR(EIO); - goto fail; - } + CL_FAIL_ON_ERROR(AVERROR(EIO), "Failed to finish command queue: %d.\n", cle); err = av_frame_copy_props(output, input); if (err < 0) diff --git a/chromium/third_party/ffmpeg/libavfilter/vf_weave.c b/chromium/third_party/ffmpeg/libavfilter/vf_weave.c index 037f5d1cf20..663d79f5115 100644 --- a/chromium/third_party/ffmpeg/libavfilter/vf_weave.c +++ b/chromium/third_party/ffmpeg/libavfilter/vf_weave.c @@ -84,6 +84,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) AVFilterLink *outlink = ctx->outputs[0]; AVFrame *out; int i; + int weave; + int field1, field2; if (!s->prev) { s->prev = in; @@ -98,26 +100,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) } av_frame_copy_props(out, in); + weave = (s->double_weave && !(inlink->frame_count_out & 1)); + field1 = weave ? s->first_field : (!s->first_field); + field2 = weave ? (!s->first_field) : s->first_field; for (i = 0; i < s->nb_planes; i++) { - if (s->double_weave && !(inlink->frame_count_out & 1)) { - av_image_copy_plane(out->data[i] + out->linesize[i] * s->first_field, - out->linesize[i] * 2, - in->data[i], in->linesize[i], - s->linesize[i], s->planeheight[i]); - av_image_copy_plane(out->data[i] + out->linesize[i] * !s->first_field, - out->linesize[i] * 2, - s->prev->data[i], s->prev->linesize[i], - s->linesize[i], s->planeheight[i]); - } else { - av_image_copy_plane(out->data[i] + out->linesize[i] * !s->first_field, - out->linesize[i] * 2, - in->data[i], in->linesize[i], - s->linesize[i], s->planeheight[i]); - av_image_copy_plane(out->data[i] + out->linesize[i] * s->first_field, - out->linesize[i] * 2, - s->prev->data[i], s->prev->linesize[i], - s->linesize[i], s->planeheight[i]); - } + av_image_copy_plane(out->data[i] + out->linesize[i] * field1, + out->linesize[i] * 2, + in->data[i], in->linesize[i], + s->linesize[i], s->planeheight[i]); + av_image_copy_plane(out->data[i] + out->linesize[i] * field2, + out->linesize[i] * 2, + s->prev->data[i], s->prev->linesize[i], + s->linesize[i], s->planeheight[i]); } out->pts = s->double_weave ? s->prev->pts : in->pts / 2; diff --git a/chromium/third_party/ffmpeg/libavformat/Makefile b/chromium/third_party/ffmpeg/libavformat/Makefile index 8fb075f06fe..f2f3aabdc29 100644 --- a/chromium/third_party/ffmpeg/libavformat/Makefile +++ b/chromium/third_party/ffmpeg/libavformat/Makefile @@ -302,7 +302,7 @@ OBJS-$(CONFIG_MM_DEMUXER) += mm.o OBJS-$(CONFIG_MMF_DEMUXER) += mmf.o OBJS-$(CONFIG_MMF_MUXER) += mmf.o rawenc.o OBJS-$(CONFIG_MOV_DEMUXER) += mov.o mov_chan.o mov_esds.o replaygain.o -OBJS-$(CONFIG_MOV_MUXER) += movenc.o avc.o hevc.o vpcc.o \ +OBJS-$(CONFIG_MOV_MUXER) += movenc.o av1.o avc.o hevc.o vpcc.o \ movenchint.o mov_chan.o rtp.o \ movenccenc.o rawutils.o OBJS-$(CONFIG_MP2_MUXER) += rawenc.o diff --git a/chromium/third_party/ffmpeg/libavformat/aadec.c b/chromium/third_party/ffmpeg/libavformat/aadec.c index 8d39b1d9baa..d83f283ffe3 100644 --- a/chromium/third_party/ffmpeg/libavformat/aadec.c +++ b/chromium/third_party/ffmpeg/libavformat/aadec.c @@ -35,6 +35,9 @@ #define MAX_TOC_ENTRIES 16 #define MAX_DICTIONARY_ENTRIES 128 #define TEA_BLOCK_SIZE 8 +#define CHAPTER_HEADER_SIZE 8 +#define TIMEPREC 1000 +#define MP3_FRAME_SIZE 104 typedef struct AADemuxContext { AVClass *class; @@ -46,6 +49,9 @@ typedef struct AADemuxContext { struct AVTEA *tea_ctx; uint8_t file_key[16]; int64_t current_chapter_size; + int64_t content_start; + int64_t content_end; + int seek_offset; } AADemuxContext; static int get_second_size(char *codec_name) @@ -69,7 +75,7 @@ static int aa_read_header(AVFormatContext *s) uint32_t nkey, nval, toc_size, npairs, header_seed = 0, start; char key[128], val[128], codec_name[64] = {0}; uint8_t output[24], dst[8], src[8]; - int64_t largest_size = -1, current_size = -1; + int64_t largest_size = -1, current_size = -1, chapter_pos; struct toc_entry { uint32_t offset; uint32_t size; @@ -172,19 +178,24 @@ static int aa_read_header(AVFormatContext *s) st->codecpar->codec_id = AV_CODEC_ID_MP3; st->codecpar->sample_rate = 22050; st->need_parsing = AVSTREAM_PARSE_FULL_RAW; - st->start_time = 0; + avpriv_set_pts_info(st, 64, 8, 32000 * TIMEPREC); + // encoded audio frame is MP3_FRAME_SIZE bytes (+1 with padding, unlikely) } else if (!strcmp(codec_name, "acelp85")) { st->codecpar->codec_id = AV_CODEC_ID_SIPR; st->codecpar->block_align = 19; st->codecpar->channels = 1; st->codecpar->sample_rate = 8500; + st->codecpar->bit_rate = 8500; st->need_parsing = AVSTREAM_PARSE_FULL_RAW; + avpriv_set_pts_info(st, 64, 8, 8500 * TIMEPREC); } else if (!strcmp(codec_name, "acelp16")) { st->codecpar->codec_id = AV_CODEC_ID_SIPR; st->codecpar->block_align = 20; st->codecpar->channels = 1; st->codecpar->sample_rate = 16000; + st->codecpar->bit_rate = 16000; st->need_parsing = AVSTREAM_PARSE_FULL_RAW; + avpriv_set_pts_info(st, 64, 8, 16000 * TIMEPREC); } /* determine, and jump to audio start offset */ @@ -197,7 +208,30 @@ static int aa_read_header(AVFormatContext *s) } start = TOC[largest_idx].offset; avio_seek(pb, start, SEEK_SET); + + // extract chapter positions. since all formats have constant bit rate, use it + // as time base in bytes/s, for easy stream position <-> timestamp conversion + st->start_time = 0; + c->content_start = start; + c->content_end = start + largest_size; + + while ((chapter_pos = avio_tell(pb)) >= 0 && chapter_pos < c->content_end) { + int chapter_idx = s->nb_chapters; + uint32_t chapter_size = avio_rb32(pb); + if (chapter_size == 0) break; + chapter_pos -= start + CHAPTER_HEADER_SIZE * chapter_idx; + avio_skip(pb, 4 + chapter_size); + if (!avpriv_new_chapter(s, chapter_idx, st->time_base, + chapter_pos * TIMEPREC, (chapter_pos + chapter_size) * TIMEPREC, NULL)) + return AVERROR(ENOMEM); + } + + st->duration = (largest_size - CHAPTER_HEADER_SIZE * s->nb_chapters) * TIMEPREC; + + ff_update_cur_dts(s, st, 0); + avio_seek(pb, start, SEEK_SET); c->current_chapter_size = 0; + c->seek_offset = 0; return 0; } @@ -213,6 +247,12 @@ static int aa_read_packet(AVFormatContext *s, AVPacket *pkt) int written = 0; int ret; AADemuxContext *c = s->priv_data; + uint64_t pos = avio_tell(s->pb); + + // are we at the end of the audio content? + if (pos >= c->content_end) { + return AVERROR_EOF; + } // are we at the start of a chapter? if (c->current_chapter_size == 0) { @@ -223,6 +263,7 @@ static int aa_read_packet(AVFormatContext *s, AVPacket *pkt) av_log(s, AV_LOG_DEBUG, "Chapter %d (%" PRId64 " bytes)\n", c->chapter_idx, c->current_chapter_size); c->chapter_idx = c->chapter_idx + 1; avio_skip(s->pb, 4); // data start offset + pos += 8; c->current_codec_second_size = c->codec_second_size; } @@ -234,7 +275,9 @@ static int aa_read_packet(AVFormatContext *s, AVPacket *pkt) // decrypt c->current_codec_second_size bytes blocks = c->current_codec_second_size / TEA_BLOCK_SIZE; for (i = 0; i < blocks; i++) { - avio_read(s->pb, src, TEA_BLOCK_SIZE); + ret = avio_read(s->pb, src, TEA_BLOCK_SIZE); + if (ret != TEA_BLOCK_SIZE) + return (ret < 0) ? ret : AVERROR_EOF; av_tea_init(c->tea_ctx, c->file_key, 16); av_tea_crypt(c->tea_ctx, dst, src, 1, NULL, 1); memcpy(buf + written, dst, TEA_BLOCK_SIZE); @@ -242,7 +285,9 @@ static int aa_read_packet(AVFormatContext *s, AVPacket *pkt) } trailing_bytes = c->current_codec_second_size % TEA_BLOCK_SIZE; if (trailing_bytes != 0) { // trailing bytes are left unencrypted! - avio_read(s->pb, src, trailing_bytes); + ret = avio_read(s->pb, src, trailing_bytes); + if (ret != trailing_bytes) + return (ret < 0) ? ret : AVERROR_EOF; memcpy(buf + written, src, trailing_bytes); written = written + trailing_bytes; } @@ -252,14 +297,69 @@ static int aa_read_packet(AVFormatContext *s, AVPacket *pkt) if (c->current_chapter_size <= 0) c->current_chapter_size = 0; - ret = av_new_packet(pkt, written); + if (c->seek_offset > written) + c->seek_offset = 0; // ignore wrong estimate + + ret = av_new_packet(pkt, written - c->seek_offset); if (ret < 0) return ret; - memcpy(pkt->data, buf, written); + memcpy(pkt->data, buf + c->seek_offset, written - c->seek_offset); + pkt->pos = pos; + c->seek_offset = 0; return 0; } +static int aa_read_seek(AVFormatContext *s, + int stream_index, int64_t timestamp, int flags) +{ + AADemuxContext *c = s->priv_data; + AVChapter *ch; + int64_t chapter_pos, chapter_start, chapter_size; + int chapter_idx = 0; + + // find chapter containing seek timestamp + if (timestamp < 0) + timestamp = 0; + + while (chapter_idx < s->nb_chapters && timestamp >= s->chapters[chapter_idx]->end) { + ++chapter_idx; + } + + if (chapter_idx >= s->nb_chapters) { + chapter_idx = s->nb_chapters - 1; + if (chapter_idx < 0) return -1; // there is no chapter. + timestamp = s->chapters[chapter_idx]->end; + } + + ch = s->chapters[chapter_idx]; + + // sync by clamping timestamp to nearest valid block position in its chapter + chapter_size = ch->end / TIMEPREC - ch->start / TIMEPREC; + chapter_pos = av_rescale_rnd((timestamp - ch->start) / TIMEPREC, + 1, c->codec_second_size, + (flags & AVSEEK_FLAG_BACKWARD) ? AV_ROUND_DOWN : AV_ROUND_UP) + * c->codec_second_size; + if (chapter_pos >= chapter_size) + chapter_pos = chapter_size; + chapter_start = c->content_start + (ch->start / TIMEPREC) + CHAPTER_HEADER_SIZE * (1 + chapter_idx); + + // reinit read state + avio_seek(s->pb, chapter_start + chapter_pos, SEEK_SET); + c->current_codec_second_size = c->codec_second_size; + c->current_chapter_size = chapter_size - chapter_pos; + c->chapter_idx = 1 + chapter_idx; + + // for unaligned frames, estimate offset of first frame in block (assume no padding) + if (s->streams[0]->codecpar->codec_id == AV_CODEC_ID_MP3) { + c->seek_offset = (MP3_FRAME_SIZE - chapter_pos % MP3_FRAME_SIZE) % MP3_FRAME_SIZE; + } + + ff_update_cur_dts(s, s->streams[0], ch->start + (chapter_pos + c->seek_offset) * TIMEPREC); + + return 1; +} + static int aa_probe(AVProbeData *p) { uint8_t *buf = p->buf; @@ -305,6 +405,7 @@ AVInputFormat ff_aa_demuxer = { .read_probe = aa_probe, .read_header = aa_read_header, .read_packet = aa_read_packet, + .read_seek = aa_read_seek, .read_close = aa_read_close, - .flags = AVFMT_GENERIC_INDEX, + .flags = AVFMT_NO_BYTE_SEEK | AVFMT_NOGENSEARCH, }; diff --git a/chromium/third_party/ffmpeg/libavformat/amr.c b/chromium/third_party/ffmpeg/libavformat/amr.c index f954803d461..de347058f3f 100644 --- a/chromium/third_party/ffmpeg/libavformat/amr.c +++ b/chromium/third_party/ffmpeg/libavformat/amr.c @@ -184,12 +184,11 @@ static int amrnb_probe(AVProbeData *p) while (i < p->buf_size) { mode = b[i] >> 3 & 0x0F; if (mode < 9 && (b[i] & 0x4) == 0x4) { - int last = mode; + int last = b[i]; int size = amrnb_packed_size[mode]; while (size--) { if (b[++i] != last) break; - last = b[i]; } if (size > 0) { valid++; @@ -201,7 +200,7 @@ static int amrnb_probe(AVProbeData *p) i++; } } - if (valid > 100 && valid > invalid) + if (valid > 100 && valid >> 4 > invalid) return AVPROBE_SCORE_EXTENSION / 2 + 1; return 0; } @@ -241,12 +240,11 @@ static int amrwb_probe(AVProbeData *p) while (i < p->buf_size) { mode = b[i] >> 3 & 0x0F; if (mode < 10 && (b[i] & 0x4) == 0x4) { - int last = mode; + int last = b[i]; int size = amrwb_packed_size[mode]; while (size--) { if (b[++i] != last) break; - last = b[i]; } if (size > 0) { valid++; @@ -258,8 +256,8 @@ static int amrwb_probe(AVProbeData *p) i++; } } - if (valid > 100 && valid > invalid) - return AVPROBE_SCORE_EXTENSION / 2 - 1; + if (valid > 100 && valid >> 4 > invalid) + return AVPROBE_SCORE_EXTENSION / 2 + 1; return 0; } diff --git a/chromium/third_party/ffmpeg/libavformat/apngdec.c b/chromium/third_party/ffmpeg/libavformat/apngdec.c index ffff03710a0..f9a97e56813 100644 --- a/chromium/third_party/ffmpeg/libavformat/apngdec.c +++ b/chromium/third_party/ffmpeg/libavformat/apngdec.c @@ -44,7 +44,6 @@ typedef struct APNGDemuxContext { int max_fps; int default_fps; - int64_t pkt_pts; int pkt_duration; int is_key_frame; @@ -390,9 +389,8 @@ static int apng_read_packet(AVFormatContext *s, AVPacket *pkt) if (ctx->is_key_frame) pkt->flags |= AV_PKT_FLAG_KEY; - pkt->pts = ctx->pkt_pts; + pkt->pts = pkt->dts = AV_NOPTS_VALUE; pkt->duration = ctx->pkt_duration; - ctx->pkt_pts += ctx->pkt_duration; return ret; case MKTAG('I', 'E', 'N', 'D'): ctx->cur_loop++; diff --git a/chromium/third_party/ffmpeg/libavformat/asfdec_o.c b/chromium/third_party/ffmpeg/libavformat/asfdec_o.c index 5122e33c787..b4b2698368f 100644 --- a/chromium/third_party/ffmpeg/libavformat/asfdec_o.c +++ b/chromium/third_party/ffmpeg/libavformat/asfdec_o.c @@ -706,7 +706,8 @@ static int parse_video_info(AVIOContext *pb, AVStream *st) st->codecpar->codec_id = ff_codec_get_id(ff_codec_bmp_tags, tag); size_bmp = FFMAX(size_asf, size_bmp); - if (size_bmp > BMP_HEADER_SIZE) { + if (size_bmp > BMP_HEADER_SIZE && + size_bmp < INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) { int ret; st->codecpar->extradata_size = size_bmp - BMP_HEADER_SIZE; if (!(st->codecpar->extradata = av_malloc(st->codecpar->extradata_size + diff --git a/chromium/third_party/ffmpeg/libavformat/av1.c b/chromium/third_party/ffmpeg/libavformat/av1.c new file mode 100644 index 00000000000..7db29c8d764 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavformat/av1.c @@ -0,0 +1,108 @@ +/* + * AV1 helper functions for muxers + * Copyright (c) 2018 James Almer <jamrial@gmail.com> + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "libavutil/mem.h" +#include "libavcodec/av1.h" +#include "libavcodec/av1_parse.h" +#include "av1.h" +#include "avio.h" + +int ff_av1_filter_obus(AVIOContext *pb, const uint8_t *buf, int size) +{ + const uint8_t *end = buf + size; + int64_t obu_size; + int start_pos, type, temporal_id, spatial_id; + + size = 0; + while (buf < end) { + int ret = parse_obu_header(buf, end - buf, &obu_size, &start_pos, + &type, &temporal_id, &spatial_id); + if (ret < 0) + return ret; + + obu_size += start_pos; + if (obu_size > INT_MAX) + return AVERROR_INVALIDDATA; + + switch (type) { + case AV1_OBU_TEMPORAL_DELIMITER: + case AV1_OBU_REDUNDANT_FRAME_HEADER: + case AV1_OBU_PADDING: + break; + default: + avio_write(pb, buf, obu_size); + size += obu_size; + break; + } + buf += obu_size; + } + + return size; +} + +int ff_av1_filter_obus_buf(const uint8_t *buf, uint8_t **out, int *size) +{ + AVIOContext *pb; + int ret; + + ret = avio_open_dyn_buf(&pb); + if (ret < 0) + return ret; + + ret = ff_av1_filter_obus(pb, buf, *size); + if (ret < 0) + return ret; + + av_freep(out); + *size = avio_close_dyn_buf(pb, out); + + return ret; +} + +int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size) +{ + int64_t obu_size; + int start_pos, type, temporal_id, spatial_id; + + while (size > 0) { + int ret = parse_obu_header(buf, size, &obu_size, &start_pos, + &type, &temporal_id, &spatial_id); + if (ret < 0) + return ret; + + obu_size += start_pos; + if (obu_size > INT_MAX) + return AVERROR_INVALIDDATA; + + switch (type) { + case AV1_OBU_SEQUENCE_HEADER: + case AV1_OBU_METADATA: + avio_write(pb, buf, obu_size); + break; + default: + break; + } + size -= obu_size; + buf += obu_size; + } + + return 0; +} diff --git a/chromium/third_party/ffmpeg/libavformat/av1.h b/chromium/third_party/ffmpeg/libavformat/av1.h new file mode 100644 index 00000000000..9f2a71f3535 --- /dev/null +++ b/chromium/third_party/ffmpeg/libavformat/av1.h @@ -0,0 +1,70 @@ +/* + * AV1 helper functions for muxers + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFORMAT_AV1_H +#define AVFORMAT_AV1_H + +#include <stdint.h> + +#include "avio.h" + +/** + * Filter out AV1 OBUs not meant to be present in ISOBMFF sample data and write + * the resulting bitstream to the provided AVIOContext. + * + * @param pb pointer to the AVIOContext where the filtered bitstream shall be + * written + * @param buf input data buffer + * @param size size of the input data buffer + * + * @return the amount of bytes written in case of success, a negative AVERROR + * code in case of failure + */ +int ff_av1_filter_obus(AVIOContext *pb, const uint8_t *buf, int size); + +/** + * Filter out AV1 OBUs not meant to be present in ISOBMFF sample data and write + * the resulting bitstream to a newly allocated data buffer. + * + * @param pb pointer to the AVIOContext where the filtered bitstream shall be + * written + * @param buf input data buffer + * @param out pointer to pointer that will hold the allocated data buffer + * @param size size of the input data buffer. The size of the resulting output + data buffer will be written here + * + * @return the amount of bytes written in case of success, a negative AVERROR + * code in case of failure. On failure, out and size are unchanged + */ +int ff_av1_filter_obus_buf(const uint8_t *buf, uint8_t **out, int *size); + +/** + * Writes AV1 extradata (Sequence Header and Metadata OBUs) to the provided + * AVIOContext. + * + * @param pb pointer to the AVIOContext where the hvcC shall be written + * @param buf input data buffer + * @param size size in bytes of the input data buffer + * + * @return >= 0 in case of success, a negative AVERROR code in case of failure + */ +int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size); + +#endif /* AVFORMAT_AV1_H */ diff --git a/chromium/third_party/ffmpeg/libavformat/avformat.h b/chromium/third_party/ffmpeg/libavformat/avformat.h index ade918f99ce..fdaffa5bf41 100644 --- a/chromium/third_party/ffmpeg/libavformat/avformat.h +++ b/chromium/third_party/ffmpeg/libavformat/avformat.h @@ -1483,7 +1483,9 @@ typedef struct AVFormatContext { * This flag is mainly intended for testing. */ #define AVFMT_FLAG_BITEXACT 0x0400 -#define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Enable RTP MP4A-LATM payload +#if FF_API_LAVF_MP4A_LATM +#define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Deprecated, does nothing. +#endif #define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down) #define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted) #if FF_API_LAVF_KEEPSIDE_FLAG diff --git a/chromium/third_party/ffmpeg/libavformat/aviobuf.c b/chromium/third_party/ffmpeg/libavformat/aviobuf.c index e752d0e1a65..5a33f82950c 100644 --- a/chromium/third_party/ffmpeg/libavformat/aviobuf.c +++ b/chromium/third_party/ffmpeg/libavformat/aviobuf.c @@ -1202,9 +1202,9 @@ int avio_close(AVIOContext *s) av_freep(&s->opaque); av_freep(&s->buffer); if (s->write_flag) - av_log(s, AV_LOG_DEBUG, "Statistics: %d seeks, %d writeouts\n", s->seek_count, s->writeout_count); + av_log(s, AV_LOG_VERBOSE, "Statistics: %d seeks, %d writeouts\n", s->seek_count, s->writeout_count); else - av_log(s, AV_LOG_DEBUG, "Statistics: %"PRId64" bytes read, %d seeks\n", s->bytes_read, s->seek_count); + av_log(s, AV_LOG_VERBOSE, "Statistics: %"PRId64" bytes read, %d seeks\n", s->bytes_read, s->seek_count); av_opt_free(s); avio_context_free(&s); diff --git a/chromium/third_party/ffmpeg/libavformat/bink.c b/chromium/third_party/ffmpeg/libavformat/bink.c index 8a05082fcd8..567a38cd73d 100644 --- a/chromium/third_party/ffmpeg/libavformat/bink.c +++ b/chromium/third_party/ffmpeg/libavformat/bink.c @@ -92,6 +92,8 @@ static int read_header(AVFormatContext *s) uint16_t flags; int keyframe; int ret; + uint32_t signature; + uint8_t revision; vst = avformat_new_stream(s, NULL); if (!vst) @@ -160,14 +162,14 @@ static int read_header(AVFormatContext *s) return AVERROR(EIO); } - if (bink->num_audio_tracks) { - uint32_t signature = (vst->codecpar->codec_tag & 0xFFFFFF); - uint8_t revision = ((vst->codecpar->codec_tag >> 24) % 0xFF); + signature = (vst->codecpar->codec_tag & 0xFFFFFF); + revision = ((vst->codecpar->codec_tag >> 24) % 0xFF); - if ((signature == AV_RL32("BIK") && (revision == 0x6b)) || /* k */ - (signature == AV_RL32("KB2") && (revision == 0x69 || revision == 0x6a || revision == 0x6b))) /* i,j,k */ - avio_skip(pb, 4); /* unknown new field */ + if ((signature == AV_RL32("BIK") && (revision == 'k')) || + (signature == AV_RL32("KB2") && (revision == 'i' || revision == 'j' || revision == 'k'))) + avio_skip(pb, 4); /* unknown new field */ + if (bink->num_audio_tracks) { avio_skip(pb, 4 * bink->num_audio_tracks); /* max decoded size */ for (i = 0; i < bink->num_audio_tracks; i++) { diff --git a/chromium/third_party/ffmpeg/libavformat/hlsenc.c b/chromium/third_party/ffmpeg/libavformat/hlsenc.c index 2268f898b08..b5644f05c44 100644 --- a/chromium/third_party/ffmpeg/libavformat/hlsenc.c +++ b/chromium/third_party/ffmpeg/libavformat/hlsenc.c @@ -2178,7 +2178,7 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt) if (vs->sequence - vs->nb_entries > hls->start_sequence && hls->init_time > 0) { /* reset end_pts, hls->recording_time at end of the init hls list */ int init_list_dur = hls->init_time * vs->nb_entries * AV_TIME_BASE; - int after_init_list_dur = (vs->sequence - vs->nb_entries ) * hls->time * AV_TIME_BASE; + int after_init_list_dur = (vs->sequence - hls->start_sequence - vs->nb_entries ) * (hls->time * AV_TIME_BASE); hls->recording_time = hls->time * AV_TIME_BASE; end_pts = init_list_dur + after_init_list_dur ; } diff --git a/chromium/third_party/ffmpeg/libavformat/icecast.c b/chromium/third_party/ffmpeg/libavformat/icecast.c index 02e3e387886..c93b06b553a 100644 --- a/chromium/third_party/ffmpeg/libavformat/icecast.c +++ b/chromium/third_party/ffmpeg/libavformat/icecast.c @@ -96,7 +96,7 @@ static int icecast_open(URLContext *h, const char *uri, int flags) if (flags & AVIO_FLAG_READ) return AVERROR(ENOSYS); - av_bprint_init(&bp, 0, 1); + av_bprint_init(&bp, 0, AV_BPRINT_SIZE_AUTOMATIC); // Build header strings cat_header(&bp, "Ice-Name", s->name); diff --git a/chromium/third_party/ffmpeg/libavformat/isom.c b/chromium/third_party/ffmpeg/libavformat/isom.c index 2792371c250..ce66d1bcd41 100644 --- a/chromium/third_party/ffmpeg/libavformat/isom.c +++ b/chromium/third_party/ffmpeg/libavformat/isom.c @@ -188,6 +188,7 @@ const AVCodecTag ff_codec_movvideo_tags[] = { { AV_CODEC_ID_VP8, MKTAG('v', 'p', '0', '8') }, /* VP8 */ { AV_CODEC_ID_VP9, MKTAG('v', 'p', '0', '9') }, /* VP9 */ + { AV_CODEC_ID_AV1, MKTAG('a', 'v', '0', '1') }, /* AV1 */ { AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', ' ') }, { AV_CODEC_ID_MPEG1VIDEO, MKTAG('m', '1', 'v', '1') }, /* Apple MPEG-1 Camcorder */ diff --git a/chromium/third_party/ffmpeg/libavformat/mms.c b/chromium/third_party/ffmpeg/libavformat/mms.c index 17fa76a8d44..768fda65254 100644 --- a/chromium/third_party/ffmpeg/libavformat/mms.c +++ b/chromium/third_party/ffmpeg/libavformat/mms.c @@ -94,24 +94,26 @@ int ff_mms_asf_header_parser(MMSContext *mms) } } } else if (!memcmp(p, ff_asf_stream_header, sizeof(ff_asf_guid))) { - flags = AV_RL16(p + sizeof(ff_asf_guid)*3 + 24); - stream_id = flags & 0x7F; - //The second condition is for checking CS_PKT_STREAM_ID_REQUEST packet size, - //we can calculate the packet size by stream_num. - //Please see function send_stream_selection_request(). - if (mms->stream_num < MMS_MAX_STREAMS && - 46 + mms->stream_num * 6 < sizeof(mms->out_buffer)) { - mms->streams = av_fast_realloc(mms->streams, - &mms->nb_streams_allocated, - (mms->stream_num + 1) * sizeof(MMSStream)); - if (!mms->streams) - return AVERROR(ENOMEM); - mms->streams[mms->stream_num].id = stream_id; - mms->stream_num++; - } else { - av_log(NULL, AV_LOG_ERROR, - "Corrupt stream (too many A/V streams)\n"); - return AVERROR_INVALIDDATA; + if (end - p >= (sizeof(ff_asf_guid) * 3 + 26)) { + flags = AV_RL16(p + sizeof(ff_asf_guid)*3 + 24); + stream_id = flags & 0x7F; + //The second condition is for checking CS_PKT_STREAM_ID_REQUEST packet size, + //we can calculate the packet size by stream_num. + //Please see function send_stream_selection_request(). + if (mms->stream_num < MMS_MAX_STREAMS && + 46 + mms->stream_num * 6 < sizeof(mms->out_buffer)) { + mms->streams = av_fast_realloc(mms->streams, + &mms->nb_streams_allocated, + (mms->stream_num + 1) * sizeof(MMSStream)); + if (!mms->streams) + return AVERROR(ENOMEM); + mms->streams[mms->stream_num].id = stream_id; + mms->stream_num++; + } else { + av_log(NULL, AV_LOG_ERROR, + "Corrupt stream (too many A/V streams)\n"); + return AVERROR_INVALIDDATA; + } } } else if (!memcmp(p, ff_asf_ext_stream_header, sizeof(ff_asf_guid))) { if (end - p >= 88) { @@ -143,6 +145,12 @@ int ff_mms_asf_header_parser(MMSContext *mms) } } else if (!memcmp(p, ff_asf_head1_guid, sizeof(ff_asf_guid))) { chunksize = 46; // see references [2] section 3.4. This should be set 46. + if (chunksize > end - p) { + av_log(NULL, AV_LOG_ERROR, + "Corrupt stream (header chunksize %"PRId64" is invalid)\n", + chunksize); + return AVERROR_INVALIDDATA; + } } p += chunksize; } diff --git a/chromium/third_party/ffmpeg/libavformat/mov.c b/chromium/third_party/ffmpeg/libavformat/mov.c index db2c6698024..2541bf54e28 100644 --- a/chromium/third_party/ffmpeg/libavformat/mov.c +++ b/chromium/third_party/ffmpeg/libavformat/mov.c @@ -765,7 +765,8 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom) title_str[title_size] = 0; if (title_str[0]) { int off = (!c->isom && title_str[0] == title_size - 1); - av_dict_set(&st->metadata, "handler_name", title_str + off, 0); + // flag added so as to not set stream handler name if already set from mdia->hdlr + av_dict_set(&st->metadata, "handler_name", title_str + off, AV_DICT_DONT_OVERWRITE); } av_freep(&title_str); } @@ -2867,7 +2868,8 @@ static int mov_read_stsz(MOVContext *c, AVIOContext *pb, MOVAtom atom) if (ret < 0) { av_freep(&sc->sample_sizes); av_free(buf); - return ret; + av_log(c->fc, AV_LOG_WARNING, "STSZ atom truncated\n"); + return 0; } init_get_bits(&gb, buf, 8*num_bytes); @@ -3326,22 +3328,21 @@ static void mov_estimate_video_delay(MOVContext *c, AVStream* st) { int ctts_sample = 0; int64_t pts_buf[MAX_REORDER_DELAY + 1]; // Circular buffer to sort pts. int buf_start = 0; - int buf_size = 0; int j, r, num_swaps; + for (j = 0; j < MAX_REORDER_DELAY + 1; j++) + pts_buf[j] = INT64_MIN; + if (st->codecpar->video_delay <= 0 && msc->ctts_data && st->codecpar->codec_id == AV_CODEC_ID_H264) { st->codecpar->video_delay = 0; for(ind = 0; ind < st->nb_index_entries && ctts_ind < msc->ctts_count; ++ind) { - if (buf_size == (MAX_REORDER_DELAY + 1)) { - // If circular buffer is full, then move the first element forward. - buf_start = (buf_start + 1) % buf_size; - } else { - ++buf_size; - } - // Point j to the last elem of the buffer and insert the current pts there. - j = (buf_start + buf_size - 1) % buf_size; + j = buf_start; + buf_start = (buf_start + 1); + if (buf_start == MAX_REORDER_DELAY + 1) + buf_start = 0; + pts_buf[j] = st->index_entries[ind].timestamp + msc->ctts_data[ctts_ind].duration; // The timestamps that are already in the sorted buffer, and are greater than the @@ -3352,10 +3353,13 @@ static void mov_estimate_video_delay(MOVContext *c, AVStream* st) { // go through, to keep this buffer in sorted order. num_swaps = 0; while (j != buf_start) { - r = (j - 1 + buf_size) % buf_size; + r = j - 1; + if (r < 0) r = MAX_REORDER_DELAY; if (pts_buf[j] < pts_buf[r]) { FFSWAP(int64_t, pts_buf[j], pts_buf[r]); ++num_swaps; + } else { + break; } j = r; } @@ -5211,6 +5215,36 @@ static int mov_read_tmcd(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; } +static int mov_read_av1c(MOVContext *c, AVIOContext *pb, MOVAtom atom) +{ + AVStream *st; + int ret, version; + + if (c->fc->nb_streams < 1) + return 0; + st = c->fc->streams[c->fc->nb_streams - 1]; + + if (atom.size < 5) { + av_log(c->fc, AV_LOG_ERROR, "Empty AV1 Codec Configuration Box\n"); + return AVERROR_INVALIDDATA; + } + + version = avio_r8(pb); + if (version != 0) { + av_log(c->fc, AV_LOG_WARNING, "Unknown AV1 Codec Configuration Box version %d\n", version); + return 0; + } + avio_skip(pb, 3); /* flags */ + + avio_skip(pb, 1); /* reserved, initial_presentation_delay_present, initial_presentation_delay_minus_one */ + + ret = ff_get_extradata(c->fc, st->codecpar, pb, atom.size - 5); + if (ret < 0) + return ret; + + return 0; +} + static int mov_read_vpcc(MOVContext *c, AVIOContext *pb, MOVAtom atom) { AVStream *st; @@ -5841,6 +5875,9 @@ static int get_current_encryption_info(MOVContext *c, MOVEncryptionIndex **encry *sc = st->priv_data; if (!frag_stream_info->encryption_index) { + // If this stream isn't encrypted, don't create the index. + if (!(*sc)->cenc.default_encrypted_sample) + return 0; frag_stream_info->encryption_index = av_mallocz(sizeof(*frag_stream_info->encryption_index)); if (!frag_stream_info->encryption_index) return AVERROR(ENOMEM); @@ -5856,6 +5893,9 @@ static int get_current_encryption_info(MOVContext *c, MOVEncryptionIndex **encry *sc = st->priv_data; if (!(*sc)->cenc.encryption_index) { + // If this stream isn't encrypted, don't create the index. + if (!(*sc)->cenc.default_encrypted_sample) + return 0; (*sc)->cenc.encryption_index = av_mallocz(sizeof(*frag_stream_info->encryption_index)); if (!(*sc)->cenc.encryption_index) return AVERROR(ENOMEM); @@ -6227,6 +6267,114 @@ static int mov_read_saio(MOVContext *c, AVIOContext *pb, MOVAtom atom) return 0; } +static int mov_read_pssh(MOVContext *c, AVIOContext *pb, MOVAtom atom) +{ + AVEncryptionInitInfo *info, *old_init_info; + uint8_t **key_ids; + AVStream *st; + uint8_t *side_data, *extra_data, *old_side_data; + size_t side_data_size; + int ret = 0, old_side_data_size; + unsigned int version, kid_count, extra_data_size, alloc_size = 0; + + if (c->fc->nb_streams < 1) + return 0; + st = c->fc->streams[c->fc->nb_streams-1]; + + version = avio_r8(pb); /* version */ + avio_rb24(pb); /* flags */ + + info = av_encryption_init_info_alloc(/* system_id_size */ 16, /* num_key_ids */ 0, + /* key_id_size */ 16, /* data_size */ 0); + if (!info) + return AVERROR(ENOMEM); + + if (avio_read(pb, info->system_id, 16) != 16) { + av_log(c->fc, AV_LOG_ERROR, "Failed to read the system id\n"); + ret = AVERROR_INVALIDDATA; + goto finish; + } + + if (version > 0) { + kid_count = avio_rb32(pb); + if (kid_count >= INT_MAX / sizeof(*key_ids)) + return AVERROR(ENOMEM); + + for (unsigned int i = 0; i < kid_count && !pb->eof_reached; i++) { + unsigned int min_kid_count = FFMIN(FFMAX(i + 1, 1024), kid_count); + key_ids = av_fast_realloc(info->key_ids, &alloc_size, + min_kid_count * sizeof(*key_ids)); + if (!key_ids) { + ret = AVERROR(ENOMEM); + goto finish; + } + info->key_ids = key_ids; + + info->key_ids[i] = av_mallocz(16); + if (!info->key_ids[i]) { + ret = AVERROR(ENOMEM); + goto finish; + } + info->num_key_ids = i + 1; + + if (avio_read(pb, info->key_ids[i], 16) != 16) { + av_log(c->fc, AV_LOG_ERROR, "Failed to read the key id\n"); + ret = AVERROR_INVALIDDATA; + goto finish; + } + } + + if (pb->eof_reached) { + av_log(c->fc, AV_LOG_ERROR, "Hit EOF while reading pssh\n"); + ret = AVERROR_INVALIDDATA; + goto finish; + } + } + + extra_data_size = avio_rb32(pb); + ret = mov_try_read_block(pb, extra_data_size, &extra_data); + if (ret < 0) + goto finish; + + av_freep(&info->data); // malloc(0) may still allocate something. + info->data = extra_data; + info->data_size = extra_data_size; + + // If there is existing initialization data, append to the list. + old_side_data = av_stream_get_side_data(st, AV_PKT_DATA_ENCRYPTION_INIT_INFO, &old_side_data_size); + if (old_side_data) { + old_init_info = av_encryption_init_info_get_side_data(old_side_data, old_side_data_size); + if (old_init_info) { + // Append to the end of the list. + for (AVEncryptionInitInfo *cur = old_init_info;; cur = cur->next) { + if (!cur->next) { + cur->next = info; + break; + } + } + info = old_init_info; + } else { + // Assume existing side-data will be valid, so the only error we could get is OOM. + ret = AVERROR(ENOMEM); + goto finish; + } + } + + side_data = av_encryption_init_info_add_side_data(info, &side_data_size); + if (!side_data) { + ret = AVERROR(ENOMEM); + goto finish; + } + ret = av_stream_add_side_data(st, AV_PKT_DATA_ENCRYPTION_INIT_INFO, + side_data, side_data_size); + if (ret < 0) + av_free(side_data); + +finish: + av_encryption_init_info_free(info); + return ret; +} + static int mov_read_schm(MOVContext *c, AVIOContext *pb, MOVAtom atom) { AVStream *st; @@ -6427,7 +6575,7 @@ static int cenc_filter(MOVContext *mov, MOVStreamContext *sc, AVPacket *pkt, int MOVFragmentStreamInfo *frag_stream_info; MOVEncryptionIndex *encryption_index; AVEncryptionInfo *encrypted_sample; - int encrypted_index; + int encrypted_index, ret; frag_stream_info = get_current_frag_stream_info(&mov->frag_index); encrypted_index = current_index; @@ -6471,6 +6619,15 @@ static int cenc_filter(MOVContext *mov, MOVStreamContext *sc, AVPacket *pkt, int if (mov->decryption_key) { return cenc_decrypt(mov, sc, encrypted_sample, pkt->data, pkt->size); + } else { + size_t size; + uint8_t *side_data = av_encryption_info_add_side_data(encrypted_sample, &size); + if (!side_data) + return AVERROR(ENOMEM); + ret = av_packet_add_side_data(pkt, AV_PKT_DATA_ENCRYPTION_INFO, side_data, size); + if (ret < 0) + av_free(side_data); + return ret; } } @@ -6482,7 +6639,7 @@ static int mov_read_dops(MOVContext *c, AVIOContext *pb, MOVAtom atom) const int OPUS_SEEK_PREROLL_MS = 80; AVStream *st; size_t size; - int16_t pre_skip; + uint16_t pre_skip; if (c->fc->nb_streams < 1) return 0; @@ -6531,6 +6688,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('A','A','L','P'), mov_read_avid }, { MKTAG('A','R','E','S'), mov_read_ares }, { MKTAG('a','v','s','s'), mov_read_avss }, +{ MKTAG('a','v','1','C'), mov_read_av1c }, { MKTAG('c','h','p','l'), mov_read_chpl }, { MKTAG('c','o','6','4'), mov_read_stco }, { MKTAG('c','o','l','r'), mov_read_colr }, @@ -6604,6 +6762,7 @@ static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('s','e','n','c'), mov_read_senc }, { MKTAG('s','a','i','z'), mov_read_saiz }, { MKTAG('s','a','i','o'), mov_read_saio }, +{ MKTAG('p','s','s','h'), mov_read_pssh }, { MKTAG('s','c','h','m'), mov_read_schm }, { MKTAG('s','c','h','i'), mov_read_default }, { MKTAG('t','e','n','c'), mov_read_tenc }, @@ -7616,7 +7775,9 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) } else { int64_t next_dts = (sc->current_sample < st->nb_index_entries) ? st->index_entries[sc->current_sample].timestamp : st->duration; - pkt->duration = next_dts - pkt->dts; + + if (next_dts >= pkt->dts) + pkt->duration = next_dts - pkt->dts; pkt->pts = pkt->dts; } if (st->discard == AVDISCARD_ALL) diff --git a/chromium/third_party/ffmpeg/libavformat/movenc.c b/chromium/third_party/ffmpeg/libavformat/movenc.c index 7e616e866fb..d530f40cab3 100644 --- a/chromium/third_party/ffmpeg/libavformat/movenc.c +++ b/chromium/third_party/ffmpeg/libavformat/movenc.c @@ -30,6 +30,7 @@ #include "riff.h" #include "avio.h" #include "isom.h" +#include "av1.h" #include "avc.h" #include "libavcodec/ac3_parser_internal.h" #include "libavcodec/dnxhddata.h" @@ -101,6 +102,7 @@ static const AVOption options[] = { { "write_prft", "Write producer reference time box with specified time source", offsetof(MOVMuxContext, write_prft), AV_OPT_TYPE_INT, {.i64 = MOV_PRFT_NONE}, 0, MOV_PRFT_NB-1, AV_OPT_FLAG_ENCODING_PARAM, "prft"}, { "wallclock", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = MOV_PRFT_SRC_WALLCLOCK}, 0, 0, AV_OPT_FLAG_ENCODING_PARAM, "prft"}, { "pts", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = MOV_PRFT_SRC_PTS}, 0, 0, AV_OPT_FLAG_ENCODING_PARAM, "prft"}, + { "empty_hdlr_name", "write zero-length name string in hdlr atoms within mdia and minf atoms", offsetof(MOVMuxContext, empty_hdlr_name), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, { NULL }, }; @@ -143,10 +145,17 @@ static int co64_required(const MOVTrack *track) return 0; } +static int is_cover_image(const AVStream *st) +{ + /* Eg. AV_DISPOSITION_ATTACHED_PIC | AV_DISPOSITION_TIMED_THUMBNAILS + * is encoded as sparse video track */ + return st && st->disposition == AV_DISPOSITION_ATTACHED_PIC; +} + static int rtp_hinting_needed(const AVStream *st) { /* Add hint tracks for each real audio and video stream */ - if (st->disposition & AV_DISPOSITION_ATTACHED_PIC) + if (is_cover_image(st)) return 0; return st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO || st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO; @@ -393,7 +402,7 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) if (avpriv_ac3_parse_header(&hdr, pkt->data, pkt->size) < 0) { /* drop the packets until we see a good one */ if (!track->entry) { - av_log(mov, AV_LOG_WARNING, "Dropping invalid packet from start of the stream\n"); + av_log(mov->fc, AV_LOG_WARNING, "Dropping invalid packet from start of the stream\n"); ret = 0; } else ret = AVERROR_INVALIDDATA; @@ -421,7 +430,7 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) if (hdr->substreamid == info->num_ind_sub + 1) { //info->num_ind_sub++; - avpriv_request_sample(track->par, "Multiple independent substreams"); + avpriv_request_sample(mov->fc, "Multiple independent substreams"); ret = AVERROR_PATCHWELCOME; goto end; } else if (hdr->substreamid < info->num_ind_sub || @@ -429,6 +438,12 @@ static int handle_eac3(MOVMuxContext *mov, AVPacket *pkt, MOVTrack *track) info->ec3_done = 1; goto concatenate; } + } else { + if (hdr->substreamid != 0) { + avpriv_request_sample(mov->fc, "Multiple non EAC3 independent substreams"); + ret = AVERROR_PATCHWELCOME; + goto end; + } } /* fill the info needed for the "dec3" atom */ @@ -1008,7 +1023,7 @@ static int mov_write_audio_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContex uint32_t tag = track->tag; if (track->mode == MODE_MOV) { - if (track->timescale > UINT16_MAX) { + if (track->timescale > UINT16_MAX || !track->par->channels) { if (mov_get_lpcm_flags(track->par->codec_id)) tag = AV_RL32("lpcm"); version = 2; @@ -1149,6 +1164,19 @@ static int mov_write_d263_tag(AVIOContext *pb) return 0xf; } +static int mov_write_av1c_tag(AVIOContext *pb, MOVTrack *track) +{ + int64_t pos = avio_tell(pb); + + avio_wb32(pb, 0); + ffio_wfourcc(pb, "av1C"); + avio_w8(pb, 0); /* version */ + avio_wb24(pb, 0); /* flags */ + avio_w8(pb, 0); /* reserved (3), initial_presentation_delay_present (1), initial_presentation_delay_minus_one/reserved (4) */ + ff_isom_write_av1c(pb, track->vos_data, track->vos_len); + return update_size(pb, pos); +} + static int mov_write_avcc_tag(AVIOContext *pb, MOVTrack *track) { int64_t pos = avio_tell(pb); @@ -1557,10 +1585,20 @@ static int mov_get_codec_tag(AVFormatContext *s, MOVTrack *track) return tag; } +static const AVCodecTag codec_cover_image_tags[] = { + { AV_CODEC_ID_MJPEG, 0xD }, + { AV_CODEC_ID_PNG, 0xE }, + { AV_CODEC_ID_BMP, 0x1B }, + { AV_CODEC_ID_NONE, 0 }, +}; + static int mov_find_codec_tag(AVFormatContext *s, MOVTrack *track) { int tag; + if (is_cover_image(track->st)) + return ff_codec_get_tag(codec_cover_image_tags, track->par->codec_id); + if (track->mode == MODE_MP4 || track->mode == MODE_PSP) tag = track->par->codec_tag; else if (track->mode == MODE_ISM) @@ -1985,6 +2023,8 @@ static int mov_write_video_tag(AVIOContext *pb, MOVMuxContext *mov, MOVTrack *tr mov_write_uuid_tag_ipod(pb); } else if (track->par->codec_id == AV_CODEC_ID_VP9) { mov_write_vpcc_tag(mov->fc, pb, track); + } else if (track->par->codec_id == AV_CODEC_ID_AV1) { + mov_write_av1c_tag(pb, track); } else if (track->par->codec_id == AV_CODEC_ID_VC1 && track->vos_len > 0) mov_write_dvc1_tag(pb, track); else if (track->par->codec_id == AV_CODEC_ID_VP6F || @@ -2534,6 +2574,7 @@ static int is_clcp_track(MOVTrack *track) static int mov_write_hdlr_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track) { + MOVMuxContext *mov = s->priv_data; const char *hdlr, *descr = NULL, *hdlr_type = NULL; int64_t pos = avio_tell(pb); @@ -2582,12 +2623,15 @@ static int mov_write_hdlr_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra // of the track. So if an alternate handler description is // specified, use it. AVDictionaryEntry *t; - t = av_dict_get(track->st->metadata, "handler", NULL, 0); + t = av_dict_get(track->st->metadata, "handler_name", NULL, 0); if (t && utf8len(t->value)) descr = t->value; } } + if (mov->empty_hdlr_name) /* expressly allowed by QTFF and not prohibited in ISO 14496-12 8.4.3.3 */ + descr = ""; + avio_wb32(pb, 0); /* size */ ffio_wfourcc(pb, "hdlr"); avio_wb32(pb, 0); /* Version & flags */ @@ -2646,7 +2690,7 @@ static int mov_write_minf_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContext } else if (track->tag == MKTAG('g','p','m','d')) { mov_write_gmhd_tag(pb, track); } - if (track->mode == MODE_MOV) /* FIXME: Why do it for MODE_MOV only ? */ + if (track->mode == MODE_MOV) /* ISO 14496-12 8.4.3.1 specifies hdlr only within mdia or meta boxes */ mov_write_hdlr_tag(s, pb, NULL); mov_write_dinf_tag(pb); if ((ret = mov_write_stbl_tag(s, pb, mov, track)) < 0) @@ -3429,32 +3473,14 @@ static int mov_write_covr(AVIOContext *pb, AVFormatContext *s) { MOVMuxContext *mov = s->priv_data; int64_t pos = 0; - int i, type; + int i; for (i = 0; i < s->nb_streams; i++) { MOVTrack *trk = &mov->tracks[i]; - AVStream *st = s->streams[i]; - if (!(st->disposition & AV_DISPOSITION_ATTACHED_PIC) || - trk->cover_image.size <= 0) + if (!is_cover_image(trk->st) || trk->cover_image.size <= 0) continue; - switch (st->codecpar->codec_id) { - case AV_CODEC_ID_MJPEG: - type = 0xD; - break; - case AV_CODEC_ID_PNG: - type = 0xE; - break; - case AV_CODEC_ID_BMP: - type = 0x1B; - break; - default: - av_log(s, AV_LOG_ERROR, "unsupported codec_id (0x%x) for cover", - st->codecpar->codec_id); - continue; - } - if (!pos) { pos = avio_tell(pb); avio_wb32(pb, 0); @@ -3462,7 +3488,7 @@ static int mov_write_covr(AVIOContext *pb, AVFormatContext *s) } avio_wb32(pb, 16 + trk->cover_image.size); ffio_wfourcc(pb, "data"); - avio_wb32(pb, type); + avio_wb32(pb, trk->tag); avio_wb32(pb , 0); avio_write(pb, trk->cover_image.data, trk->cover_image.size); } @@ -3995,15 +4021,13 @@ static int mov_write_isml_manifest(AVIOContext *pb, MOVMuxContext *mov, AVFormat AVStream *st = track->st; AVDictionaryEntry *lang = av_dict_get(st->metadata, "language", NULL,0); - if (track->par->codec_type == AVMEDIA_TYPE_VIDEO) { + if (track->par->codec_type == AVMEDIA_TYPE_VIDEO && !is_cover_image(st)) { type = "video"; } else if (track->par->codec_type == AVMEDIA_TYPE_AUDIO) { type = "audio"; } else { continue; } - if (st->disposition & AV_DISPOSITION_ATTACHED_PIC) - continue; props = (AVCPBProperties*)av_stream_get_side_data(track->st, AV_PKT_DATA_CPB_PROPERTIES, NULL); @@ -4663,7 +4687,7 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s) for (i = 0; i < s->nb_streams; i++) { AVStream *st = s->streams[i]; - if (st->disposition & AV_DISPOSITION_ATTACHED_PIC) + if (is_cover_image(st)) continue; if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) has_video = 1; @@ -4813,7 +4837,7 @@ static int mov_write_identification(AVIOContext *pb, AVFormatContext *s) int video_streams_nb = 0, audio_streams_nb = 0, other_streams_nb = 0; for (i = 0; i < s->nb_streams; i++) { AVStream *st = s->streams[i]; - if (st->disposition & AV_DISPOSITION_ATTACHED_PIC) + if (is_cover_image(st)) continue; if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) video_streams_nb++; @@ -5004,8 +5028,7 @@ static int mov_flush_fragment(AVFormatContext *s, int force) int buf_size, moov_size; for (i = 0; i < mov->nb_streams; i++) - if (!mov->tracks[i].entry && - (i >= s->nb_streams || !(s->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC))) + if (!mov->tracks[i].entry && !is_cover_image(mov->tracks[i].st)) break; /* Don't write the initial moov unless all tracks have data */ if (i < mov->nb_streams && !force) @@ -5262,6 +5285,11 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt) else samples_in_chunk = 1; + if (samples_in_chunk < 1) { + av_log(s, AV_LOG_ERROR, "fatal error, input packet contains no samples\n"); + return AVERROR_PATCHWELCOME; + } + /* copy extradata if it exists */ if (trk->vos_len == 0 && par->extradata_size > 0 && !TAG_IS_AVCI(trk->tag) && @@ -5312,6 +5340,13 @@ int ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt) } else { size = ff_hevc_annexb2mp4(pb, pkt->data, pkt->size, 0, NULL); } + } else if (par->codec_id == AV_CODEC_ID_AV1) { + if (trk->hint_track >= 0 && trk->hint_track < mov->nb_streams) { + ff_av1_filter_obus_buf(pkt->data, &reformatted_data, &size); + avio_write(pb, reformatted_data, size); + } else { + size = ff_av1_filter_obus(pb, pkt->data, pkt->size); + } #if CONFIG_AC3_PARSER } else if (par->codec_id == AV_CODEC_ID_EAC3) { size = handle_eac3(mov, pkt, trk); @@ -5505,6 +5540,7 @@ static int mov_write_single_packet(AVFormatContext *s, AVPacket *pkt) if (trk->par->codec_id == AV_CODEC_ID_MP4ALS || trk->par->codec_id == AV_CODEC_ID_AAC || + trk->par->codec_id == AV_CODEC_ID_AV1 || trk->par->codec_id == AV_CODEC_ID_FLAC) { int side_size = 0; uint8_t *side = av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, &side_size); @@ -5587,21 +5623,19 @@ static int mov_write_packet(AVFormatContext *s, AVPacket *pkt) { MOVMuxContext *mov = s->priv_data; MOVTrack *trk; - AVStream *st; if (!pkt) { mov_flush_fragment(s, 1); return 1; } - st = s->streams[pkt->stream_index]; trk = &mov->tracks[pkt->stream_index]; - if (st->disposition & AV_DISPOSITION_ATTACHED_PIC) { + if (is_cover_image(trk->st)) { int ret; - if (st->nb_frames >= 1) { - if (st->nb_frames == 1) + if (trk->st->nb_frames >= 1) { + if (trk->st->nb_frames == 1) av_log(s, AV_LOG_WARNING, "Got more than one picture in stream %d," " ignoring.\n", pkt->stream_index); return 0; @@ -5860,7 +5894,7 @@ static void enable_tracks(AVFormatContext *s) if (st->codecpar->codec_type <= AVMEDIA_TYPE_UNKNOWN || st->codecpar->codec_type >= AVMEDIA_TYPE_NB || - st->disposition & AV_DISPOSITION_ATTACHED_PIC) + is_cover_image(st)) continue; if (first[st->codecpar->codec_type] < 0) @@ -6204,15 +6238,20 @@ static int mov_init(AVFormatContext *s) pix_fmt == AV_PIX_FMT_MONOWHITE || pix_fmt == AV_PIX_FMT_MONOBLACK; } - if (track->par->codec_id == AV_CODEC_ID_VP9) { + if (track->par->codec_id == AV_CODEC_ID_VP9 || + track->par->codec_id == AV_CODEC_ID_AV1) { if (track->mode != MODE_MP4) { - av_log(s, AV_LOG_ERROR, "VP9 only supported in MP4.\n"); + av_log(s, AV_LOG_ERROR, "%s only supported in MP4.\n", avcodec_get_name(track->par->codec_id)); return AVERROR(EINVAL); } - } else if (track->par->codec_id == AV_CODEC_ID_AV1) { - /* spec is not finished, so forbid for now */ - av_log(s, AV_LOG_ERROR, "AV1 muxing is currently not supported.\n"); - return AVERROR_PATCHWELCOME; + if (track->par->codec_id == AV_CODEC_ID_AV1 && + s->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) { + av_log(s, AV_LOG_ERROR, + "av1 in MP4 support is experimental, add " + "'-strict %d' if you want to use it.\n", + FF_COMPLIANCE_EXPERIMENTAL); + return AVERROR_EXPERIMENTAL; + } } else if (track->par->codec_id == AV_CODEC_ID_VP8) { /* altref frames handling is not defined in the spec as of version v1.0, * so just forbid muxing VP8 streams altogether until a new version does */ @@ -6727,6 +6766,7 @@ const AVCodecTag codec_mp4_tags[] = { { AV_CODEC_ID_DIRAC , MKTAG('d', 'r', 'a', 'c') }, { AV_CODEC_ID_TSCC2 , MKTAG('m', 'p', '4', 'v') }, { AV_CODEC_ID_VP9 , MKTAG('v', 'p', '0', '9') }, + { AV_CODEC_ID_AV1 , MKTAG('a', 'v', '0', '1') }, { AV_CODEC_ID_AAC , MKTAG('m', 'p', '4', 'a') }, { AV_CODEC_ID_MP4ALS , MKTAG('m', 'p', '4', 'a') }, { AV_CODEC_ID_MP3 , MKTAG('m', 'p', '4', 'a') }, diff --git a/chromium/third_party/ffmpeg/libavformat/movenc.h b/chromium/third_party/ffmpeg/libavformat/movenc.h index f2967bfacec..fe605d1ad2f 100644 --- a/chromium/third_party/ffmpeg/libavformat/movenc.h +++ b/chromium/third_party/ffmpeg/libavformat/movenc.h @@ -233,6 +233,7 @@ typedef struct MOVMuxContext { int track_ids_ok; int write_tmcd; MOVPrftBox write_prft; + int empty_hdlr_name; } MOVMuxContext; #define FF_MOV_FLAG_RTP_HINT (1 << 0) diff --git a/chromium/third_party/ffmpeg/libavformat/mpegts.c b/chromium/third_party/ffmpeg/libavformat/mpegts.c index 5f53f77d893..a5cb17ac167 100644 --- a/chromium/third_party/ffmpeg/libavformat/mpegts.c +++ b/chromium/third_party/ffmpeg/libavformat/mpegts.c @@ -465,6 +465,7 @@ static void write_section_data(MpegTSContext *ts, MpegTSFilter *tss1, offset += tss->section_h_size; tss->section_h_size = -1; } else { + tss->section_h_size = -1; tss->end_of_section_reached = 0; break; } diff --git a/chromium/third_party/ffmpeg/libavformat/mpjpegdec.c b/chromium/third_party/ffmpeg/libavformat/mpjpegdec.c index 83aa70d0c97..64d880a9812 100644 --- a/chromium/third_party/ffmpeg/libavformat/mpjpegdec.c +++ b/chromium/third_party/ffmpeg/libavformat/mpjpegdec.c @@ -375,7 +375,7 @@ static int mpjpeg_read_packet(AVFormatContext *s, AVPacket *pkt) #define OFFSET(x) offsetof(MPJPEGDemuxContext, x) #define DEC AV_OPT_FLAG_DECODING_PARAM -const AVOption mpjpeg_options[] = { +static const AVOption mpjpeg_options[] = { { "strict_mime_boundary", "require MIME boundaries match", OFFSET(strict_mime_boundary), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, DEC }, { NULL } }; diff --git a/chromium/third_party/ffmpeg/libavformat/mxf.h b/chromium/third_party/ffmpeg/libavformat/mxf.h index 19f8d8a9f52..f6e75919c5f 100644 --- a/chromium/third_party/ffmpeg/libavformat/mxf.h +++ b/chromium/third_party/ffmpeg/libavformat/mxf.h @@ -62,13 +62,23 @@ typedef struct KLVPacket { UID key; int64_t offset; uint64_t length; + int64_t next_klv; } KLVPacket; +typedef enum { + NormalWrap = 0, + D10D11Wrap, + RawAWrap, + RawVWrap +} MXFWrappingIndicatorType; + typedef struct MXFCodecUL { UID uid; unsigned matching_len; int id; const char *desc; + unsigned wrapping_indicator_pos; + MXFWrappingIndicatorType wrapping_indicator_type; } MXFCodecUL; typedef struct { diff --git a/chromium/third_party/ffmpeg/libavformat/mxfdec.c b/chromium/third_party/ffmpeg/libavformat/mxfdec.c index b3d3e237c09..8e1089620ff 100644 --- a/chromium/third_party/ffmpeg/libavformat/mxfdec.c +++ b/chromium/third_party/ffmpeg/libavformat/mxfdec.c @@ -56,6 +56,8 @@ #include "internal.h" #include "mxf.h" +#define MXF_MAX_CHUNK_SIZE (32 << 20) + typedef enum { Header, BodyPartition, @@ -76,6 +78,12 @@ typedef enum { OPSONYOpt, /* FATE sample, violates the spec in places */ } MXFOP; +typedef enum { + UnknownWrapped = 0, + FrameWrapped, + ClipWrapped, +} MXFWrappingScheme; + typedef struct MXFPartition { int closed; int complete; @@ -92,6 +100,7 @@ typedef struct MXFPartition { int pack_length; int64_t pack_ofs; ///< absolute offset of pack in file, including run-in int64_t body_offset; + KLVPacket first_essence_klv; } MXFPartition; typedef struct MXFCryptoContext { @@ -165,6 +174,8 @@ typedef struct { int64_t original_duration; /* st->duration in SampleRate/EditRate units */ int index_sid; int body_sid; + MXFWrappingScheme wrapping; + int edit_units_per_packet; /* how many edit units to read at a time (PCM, ClipWrapped) */ } MXFTrack; typedef struct MXFDescriptor { @@ -269,23 +280,15 @@ typedef struct MXFContext { int local_tags_count; uint64_t footer_partition; KLVPacket current_klv_data; - int current_klv_index; int run_in; MXFPartition *current_partition; int parsing_backward; int64_t last_forward_tell; int last_forward_partition; - int64_t current_edit_unit; int nb_index_tables; MXFIndexTable *index_tables; - int edit_units_per_packet; ///< how many edit units to read at a time (PCM, OPAtom) } MXFContext; -enum MXFWrappingScheme { - Frame, - Clip, -}; - /* NOTE: klv_offset is not set (-1) for local keys */ typedef int MXFMetadataReadFunc(void *arg, AVIOContext *pb, int tag, int size, UID uid, int64_t klv_offset); @@ -392,7 +395,7 @@ static int mxf_read_sync(AVIOContext *pb, const uint8_t *key, unsigned size) static int klv_read_packet(KLVPacket *klv, AVIOContext *pb) { - int64_t length; + int64_t length, pos; if (!mxf_read_sync(pb, mxf_klv_key, 4)) return AVERROR_INVALIDDATA; klv->offset = avio_tell(pb) - 4; @@ -402,6 +405,10 @@ static int klv_read_packet(KLVPacket *klv, AVIOContext *pb) if (length < 0) return length; klv->length = length; + pos = avio_tell(pb); + if (pos > INT64_MAX - length) + return AVERROR_INVALIDDATA; + klv->next_klv = pos + length; return 0; } @@ -416,7 +423,7 @@ static int mxf_get_stream_index(AVFormatContext *s, KLVPacket *klv, int body_sid return i; } /* return 0 if only one stream, for OP Atom files with 0 as track number */ - return s->nb_streams == 1 ? 0 : -1; + return s->nb_streams == 1 && s->streams[0]->priv_data ? 0 : -1; } static int find_body_sid_by_offset(MXFContext *mxf, int64_t offset) @@ -1229,16 +1236,18 @@ static void *mxf_resolve_strong_ref(MXFContext *mxf, UID *strong_ref, enum MXFMe static const MXFCodecUL mxf_picture_essence_container_uls[] = { // video essence container uls - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x01,0x00 }, 14, AV_CODEC_ID_JPEG2000 }, - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x10,0x60,0x01 }, 14, AV_CODEC_ID_H264 }, /* H.264 frame wrapped */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00 }, 14, AV_CODEC_ID_DNXHD }, /* VC-3 */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x12,0x01,0x00 }, 14, AV_CODEC_ID_VC1 }, /* VC-1 frame wrapped */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x14,0x01,0x00 }, 14, AV_CODEC_ID_TIFF }, /* TIFF */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x15,0x01,0x00 }, 14, AV_CODEC_ID_DIRAC }, /* VC-2 */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x04,0x60,0x01 }, 14, AV_CODEC_ID_MPEG2VIDEO }, /* MPEG-ES frame wrapped */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x01,0x04,0x01 }, 14, AV_CODEC_ID_MPEG2VIDEO }, /* Type D-10 mapping of 40Mbps 525/60-I */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x02,0x41,0x01 }, 14, AV_CODEC_ID_DVVIDEO }, /* DV 625 25mbps */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x05,0x00,0x00 }, 14, AV_CODEC_ID_RAWVIDEO }, /* uncompressed picture */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x0d,0x01,0x03,0x01,0x02,0x0c,0x01,0x00 }, 14, AV_CODEC_ID_JPEG2000, NULL, 14 }, + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x10,0x60,0x01 }, 14, AV_CODEC_ID_H264, NULL, 15 }, /* H.264 */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x11,0x01,0x00 }, 14, AV_CODEC_ID_DNXHD, NULL, 14 }, /* VC-3 */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x12,0x01,0x00 }, 14, AV_CODEC_ID_VC1, NULL, 14 }, /* VC-1 */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x14,0x01,0x00 }, 14, AV_CODEC_ID_TIFF, NULL, 14 }, /* TIFF */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x15,0x01,0x00 }, 14, AV_CODEC_ID_DIRAC, NULL, 14 }, /* VC-2 */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x1b,0x01,0x00 }, 14, AV_CODEC_ID_CFHD, NULL, 14 }, /* VC-5 */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x1c,0x01,0x00 }, 14, AV_CODEC_ID_PRORES, NULL, 14 }, /* ProRes */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x04,0x60,0x01 }, 14, AV_CODEC_ID_MPEG2VIDEO, NULL, 15 }, /* MPEG-ES */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x01,0x04,0x01 }, 14, AV_CODEC_ID_MPEG2VIDEO, NULL, 15, D10D11Wrap }, /* SMPTE D-10 mapping */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x02,0x41,0x01 }, 14, AV_CODEC_ID_DVVIDEO, NULL, 15 }, /* DV 625 25mbps */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x05,0x00,0x00 }, 14, AV_CODEC_ID_RAWVIDEO, NULL, 15, RawVWrap }, /* uncompressed picture */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0a,0x0e,0x0f,0x03,0x01,0x02,0x20,0x01,0x01 }, 15, AV_CODEC_ID_HQ_HQA }, { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x0a,0x0e,0x0f,0x03,0x01,0x02,0x20,0x02,0x01 }, 15, AV_CODEC_ID_HQX }, { { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0xff,0x4b,0x46,0x41,0x41,0x00,0x0d,0x4d,0x4f }, 14, AV_CODEC_ID_RAWVIDEO }, /* Legacy ?? Uncompressed Picture */ @@ -1269,21 +1278,55 @@ static const MXFCodecUL mxf_intra_only_picture_coded_width[] = { static const MXFCodecUL mxf_sound_essence_container_uls[] = { // sound essence container uls - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x06,0x01,0x00 }, 14, AV_CODEC_ID_PCM_S16LE }, /* BWF Frame wrapped */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x04,0x40,0x01 }, 14, AV_CODEC_ID_MP2 }, /* MPEG-ES Frame wrapped, 0x40 ??? stream id */ - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x01,0x01,0x01 }, 14, AV_CODEC_ID_PCM_S16LE }, /* D-10 Mapping 50Mbps PAL Extended Template */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x06,0x01,0x00 }, 14, AV_CODEC_ID_PCM_S16LE, NULL, 14, RawAWrap }, /* BWF */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x02,0x0d,0x01,0x03,0x01,0x02,0x04,0x40,0x01 }, 14, AV_CODEC_ID_MP2, NULL, 15 }, /* MPEG-ES */ + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x01,0x0d,0x01,0x03,0x01,0x02,0x01,0x01,0x01 }, 14, AV_CODEC_ID_PCM_S16LE, NULL, 13 }, /* D-10 Mapping 50Mbps PAL Extended Template */ { { 0x06,0x0e,0x2b,0x34,0x01,0x01,0x01,0xff,0x4b,0x46,0x41,0x41,0x00,0x0d,0x4d,0x4F }, 14, AV_CODEC_ID_PCM_S16LE }, /* 0001GL00.MXF.A1.mxf_opatom.mxf */ { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x03,0x04,0x02,0x02,0x02,0x03,0x03,0x01,0x00 }, 14, AV_CODEC_ID_AAC }, /* MPEG-2 AAC ADTS (legacy) */ { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE }, }; static const MXFCodecUL mxf_data_essence_container_uls[] = { - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x09,0x0d,0x01,0x03,0x01,0x02,0x0d,0x00,0x00 }, 16, AV_CODEC_ID_NONE, "vbi_smpte_436M" }, - { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x09,0x0d,0x01,0x03,0x01,0x02,0x0e,0x00,0x00 }, 16, AV_CODEC_ID_NONE, "vbi_vanc_smpte_436M" }, + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x09,0x0d,0x01,0x03,0x01,0x02,0x0d,0x00,0x00 }, 16, AV_CODEC_ID_NONE, "vbi_smpte_436M", 11 }, + { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x09,0x0d,0x01,0x03,0x01,0x02,0x0e,0x00,0x00 }, 16, AV_CODEC_ID_NONE, "vbi_vanc_smpte_436M", 11 }, { { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x09,0x0d,0x01,0x03,0x01,0x02,0x13,0x01,0x01 }, 16, AV_CODEC_ID_TTML }, { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, 0, AV_CODEC_ID_NONE }, }; +static MXFWrappingScheme mxf_get_wrapping_kind(UID *essence_container_ul) +{ + int val; + const MXFCodecUL *codec_ul; + + codec_ul = mxf_get_codec_ul(mxf_picture_essence_container_uls, essence_container_ul); + if (!codec_ul->uid[0]) + codec_ul = mxf_get_codec_ul(mxf_sound_essence_container_uls, essence_container_ul); + if (!codec_ul->uid[0]) + codec_ul = mxf_get_codec_ul(mxf_data_essence_container_uls, essence_container_ul); + if (!codec_ul->uid[0] || !codec_ul->wrapping_indicator_pos) + return UnknownWrapped; + + val = (*essence_container_ul)[codec_ul->wrapping_indicator_pos]; + switch (codec_ul->wrapping_indicator_type) { + case RawVWrap: + val = val % 4; + break; + case RawAWrap: + if (val == 0x03 || val == 0x04) + val -= 0x02; + break; + case D10D11Wrap: + if (val == 0x02) + val = 0x01; + break; + } + if (val == 0x01) + return FrameWrapped; + if (val == 0x02) + return ClipWrapped; + return UnknownWrapped; +} + static int mxf_get_sorted_table_segments(MXFContext *mxf, int *nb_sorted_segments, MXFIndexTableSegment ***sorted_segments) { int i, j, nb_segments = 0; @@ -1305,9 +1348,22 @@ static int mxf_get_sorted_table_segments(MXFContext *mxf, int *nb_sorted_segment return AVERROR(ENOMEM); } - for (i = j = 0; i < mxf->metadata_sets_count; i++) - if (mxf->metadata_sets[i]->type == IndexTableSegment) - unsorted_segments[j++] = (MXFIndexTableSegment*)mxf->metadata_sets[i]; + for (i = nb_segments = 0; i < mxf->metadata_sets_count; i++) { + if (mxf->metadata_sets[i]->type == IndexTableSegment) { + MXFIndexTableSegment *s = (MXFIndexTableSegment*)mxf->metadata_sets[i]; + if (s->edit_unit_byte_count || s->nb_index_entries) + unsorted_segments[nb_segments++] = s; + else + av_log(mxf->fc, AV_LOG_WARNING, "IndexSID %i segment at %"PRId64" missing EditUnitByteCount and IndexEntryArray\n", + s->index_sid, s->index_start_position); + } + } + + if (!nb_segments) { + av_freep(sorted_segments); + av_free(unsorted_segments); + return AVERROR_INVALIDDATA; + } *nb_sorted_segments = 0; @@ -1358,7 +1414,7 @@ static int mxf_get_sorted_table_segments(MXFContext *mxf, int *nb_sorted_segment /** * Computes the absolute file offset of the given essence container offset */ -static int mxf_absolute_bodysid_offset(MXFContext *mxf, int body_sid, int64_t offset, int64_t *offset_out) +static int mxf_absolute_bodysid_offset(MXFContext *mxf, int body_sid, int64_t offset, int64_t *offset_out, MXFPartition **partition_out) { MXFPartition *last_p = NULL; int a, b, m, m0; @@ -1386,6 +1442,8 @@ static int mxf_absolute_bodysid_offset(MXFContext *mxf, int body_sid, int64_t of if (last_p && (!last_p->essence_length || last_p->essence_length > (offset - last_p->body_offset))) { *offset_out = last_p->essence_offset + (offset - last_p->body_offset); + if (partition_out) + *partition_out = last_p; return 0; } @@ -1420,11 +1478,13 @@ static int64_t mxf_essence_container_end(MXFContext *mxf, int body_sid) } /* EditUnit -> absolute offset */ -static int mxf_edit_unit_absolute_offset(MXFContext *mxf, MXFIndexTable *index_table, int64_t edit_unit, int64_t *edit_unit_out, int64_t *offset_out, int nag) +static int mxf_edit_unit_absolute_offset(MXFContext *mxf, MXFIndexTable *index_table, int64_t edit_unit, AVRational edit_rate, int64_t *edit_unit_out, int64_t *offset_out, MXFPartition **partition_out, int nag) { int i; int64_t offset_temp = 0; + edit_unit = av_rescale_q(edit_unit, index_table->segments[0]->index_edit_rate, edit_rate); + for (i = 0; i < index_table->nb_segments; i++) { MXFIndexTableSegment *s = index_table->segments[i]; @@ -1435,7 +1495,7 @@ static int mxf_edit_unit_absolute_offset(MXFContext *mxf, MXFIndexTable *index_t if (s->edit_unit_byte_count) offset_temp += s->edit_unit_byte_count * index; - else if (s->nb_index_entries) { + else { if (s->nb_index_entries == 2 * s->index_duration + 1) index *= 2; /* Avid index */ @@ -1446,16 +1506,12 @@ static int mxf_edit_unit_absolute_offset(MXFContext *mxf, MXFIndexTable *index_t } offset_temp = s->stream_offset_entries[index]; - } else { - av_log(mxf->fc, AV_LOG_ERROR, "IndexSID %i segment at %"PRId64" missing EditUnitByteCount and IndexEntryArray\n", - index_table->index_sid, s->index_start_position); - return AVERROR_INVALIDDATA; } if (edit_unit_out) - *edit_unit_out = edit_unit; + *edit_unit_out = av_rescale_q(edit_unit, edit_rate, s->index_edit_rate); - return mxf_absolute_bodysid_offset(mxf, index_table->body_sid, offset_temp, offset_out); + return mxf_absolute_bodysid_offset(mxf, index_table->body_sid, offset_temp, offset_out, partition_out); } else { /* EditUnitByteCount == 0 for VBR indexes, which is fine since they use explicit StreamOffsets */ offset_temp += s->edit_unit_byte_count * s->index_duration; @@ -1483,6 +1539,12 @@ static int mxf_compute_ptses_fake_index(MXFContext *mxf, MXFIndexTable *index_ta return 0; /* no TemporalOffsets */ } + if (s->index_duration > INT_MAX - index_table->nb_ptses) { + index_table->nb_ptses = 0; + av_log(mxf->fc, AV_LOG_ERROR, "ignoring IndexSID %d, duration is too large\n", s->index_sid); + return 0; + } + index_table->nb_ptses += s->index_duration; } @@ -1661,6 +1723,13 @@ static int mxf_compute_index_tables(MXFContext *mxf) /* fix zero IndexDurations */ for (k = 0; k < t->nb_segments; k++) { + if (!t->segments[k]->index_edit_rate.num || !t->segments[k]->index_edit_rate.den) { + av_log(mxf->fc, AV_LOG_WARNING, "IndexSID %i segment %i has invalid IndexEditRate\n", + t->index_sid, k); + if (mxf_track) + t->segments[k]->index_edit_rate = mxf_track->edit_rate; + } + if (t->segments[k]->index_duration) continue; @@ -2095,7 +2164,7 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) MXFEssenceContainerData *essence_data; if (!(essence_data = mxf_resolve_strong_ref(mxf, &mxf->essence_container_data_refs[k], EssenceContainerData))) { - av_log(mxf, AV_LOG_TRACE, "could not resolve essence container data strong ref\n"); + av_log(mxf->fc, AV_LOG_TRACE, "could not resolve essence container data strong ref\n"); continue; } if (!memcmp(component->source_package_ul, essence_data->package_ul, sizeof(UID)) && !memcmp(component->source_package_uid, essence_data->package_uid, sizeof(UID))) { @@ -2175,6 +2244,9 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) PRINT_KEY(mxf->fc, "essence codec ul", descriptor->essence_codec_ul); PRINT_KEY(mxf->fc, "essence container ul", descriptor->essence_container_ul); essence_container_ul = &descriptor->essence_container_ul; + source_track->wrapping = (mxf->op == OPAtom) ? ClipWrapped : mxf_get_wrapping_kind(essence_container_ul); + if (source_track->wrapping == UnknownWrapped) + av_log(mxf->fc, AV_LOG_INFO, "wrapping of stream %d is unknown\n", st->index); /* HACK: replacing the original key with mxf_encrypted_essence_container * is not allowed according to s429-6, try to find correct information anyway */ if (IS_KLV_KEY(essence_container_ul, mxf_encrypted_essence_container)) { @@ -2375,7 +2447,7 @@ static int mxf_parse_structural_metadata(MXFContext *mxf) if (ret < 0) return ret; } - if (st->codecpar->codec_type != AVMEDIA_TYPE_DATA && (*essence_container_ul)[15] > 0x01) { + if (st->codecpar->codec_type != AVMEDIA_TYPE_DATA && source_track->wrapping != FrameWrapped) { /* TODO: decode timestamps */ st->need_parsing = AVSTREAM_PARSE_TIMESTAMPS; } @@ -2568,7 +2640,8 @@ static int mxf_read_local_tags(MXFContext *mxf, KLVPacket *klv, MXFMetadataReadF if (ctx_size && tag == 0x3C0A) { avio_read(pb, ctx->uid, 16); } else if ((ret = read_child(ctx, pb, tag, size, uid, -1)) < 0) { - mxf_free_metadataset(&ctx, !!ctx_size); + if (ctx_size) + mxf_free_metadataset(&ctx, 1); return ret; } @@ -2577,7 +2650,7 @@ static int mxf_read_local_tags(MXFContext *mxf, KLVPacket *klv, MXFMetadataReadF if (avio_tell(pb) > klv_end) { if (ctx_size) { ctx->type = type; - mxf_free_metadataset(&ctx, !!ctx_size); + mxf_free_metadataset(&ctx, 1); } av_log(mxf->fc, AV_LOG_ERROR, @@ -2739,65 +2812,70 @@ static int mxf_parse_handle_partition_or_eof(MXFContext *mxf) return mxf->parsing_backward ? mxf_seek_to_previous_partition(mxf) : 1; } +static MXFWrappingScheme mxf_get_wrapping_by_body_sid(AVFormatContext *s, int body_sid) +{ + for (int i = 0; i < s->nb_streams; i++) { + MXFTrack *track = s->streams[i]->priv_data; + if (track && track->body_sid == body_sid && track->wrapping != UnknownWrapped) + return track->wrapping; + } + return UnknownWrapped; +} + /** * Figures out the proper offset and length of the essence container in each partition */ -static void mxf_compute_essence_containers(MXFContext *mxf) +static void mxf_compute_essence_containers(AVFormatContext *s) { + MXFContext *mxf = s->priv_data; int x; - /* everything is already correct */ - if (mxf->op == OPAtom) - return; - for (x = 0; x < mxf->partitions_count; x++) { MXFPartition *p = &mxf->partitions[x]; + MXFWrappingScheme wrapping; if (!p->body_sid) continue; /* BodySID == 0 -> no essence */ - if (x >= mxf->partitions_count - 1) - break; /* FooterPartition - can't compute length (and we don't need to) */ + /* for clip wrapped essences we point essence_offset after the KL (usually klv.offset + 20 or 25) + * otherwise we point essence_offset at the key of the first essence KLV. + */ - /* essence container spans to the next partition */ - p->essence_length = mxf->partitions[x+1].this_partition - p->essence_offset; + wrapping = (mxf->op == OPAtom) ? ClipWrapped : mxf_get_wrapping_by_body_sid(s, p->body_sid); - if (p->essence_length < 0) { - /* next ThisPartition < essence_offset */ - p->essence_length = 0; - av_log(mxf->fc, AV_LOG_ERROR, - "partition %i: bad ThisPartition = %"PRIX64"\n", - x+1, mxf->partitions[x+1].this_partition); + if (wrapping == ClipWrapped) { + p->essence_offset = p->first_essence_klv.next_klv - p->first_essence_klv.length; + p->essence_length = p->first_essence_klv.length; + } else { + p->essence_offset = p->first_essence_klv.offset; + + /* essence container spans to the next partition */ + if (x < mxf->partitions_count - 1) + p->essence_length = mxf->partitions[x+1].this_partition - p->essence_offset; + + if (p->essence_length < 0) { + /* next ThisPartition < essence_offset */ + p->essence_length = 0; + av_log(mxf->fc, AV_LOG_ERROR, + "partition %i: bad ThisPartition = %"PRIX64"\n", + x+1, mxf->partitions[x+1].this_partition); + } } } } -static int64_t round_to_kag(int64_t position, int kag_size) -{ - /* TODO: account for run-in? the spec isn't clear whether KAG should account for it */ - /* NOTE: kag_size may be any integer between 1 - 2^10 */ - int64_t ret = (position / kag_size) * kag_size; - return ret == position ? ret : ret + kag_size; -} - static int is_pcm(enum AVCodecID codec_id) { /* we only care about "normal" PCM codecs until we get samples */ return codec_id >= AV_CODEC_ID_PCM_S16LE && codec_id < AV_CODEC_ID_PCM_S24DAUD; } -static AVStream* mxf_get_opatom_stream(MXFContext *mxf) +static MXFIndexTable *mxf_find_index_table(MXFContext *mxf, int index_sid) { int i; - - if (mxf->op != OPAtom) - return NULL; - - for (i = 0; i < mxf->fc->nb_streams; i++) { - if (mxf->fc->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_DATA) - continue; - return mxf->fc->streams[i]; - } + for (i = 0; i < mxf->nb_index_tables; i++) + if (mxf->index_tables[i].index_sid == index_sid) + return &mxf->index_tables[i]; return NULL; } @@ -2806,63 +2884,62 @@ static AVStream* mxf_get_opatom_stream(MXFContext *mxf) * very small (2, 4..). In those cases we should read more than one * sample per call to mxf_read_packet(). */ -static void mxf_handle_small_eubc(AVFormatContext *s) +static void mxf_compute_edit_units_per_packet(MXFContext *mxf, AVStream *st) { - MXFContext *mxf = s->priv_data; - MXFTrack *track; + MXFTrack *track = st->priv_data; + MXFIndexTable *t; - /* assuming non-OPAtom == frame wrapped - * no sane writer would wrap 2 byte PCM packets with 20 byte headers.. */ - AVStream *st = mxf_get_opatom_stream(mxf); - if (!st) + if (!track) + return; + track->edit_units_per_packet = 1; + if (track->wrapping != ClipWrapped) return; + t = mxf_find_index_table(mxf, track->index_sid); + /* expect PCM with exactly one index table segment and a small (< 32) EUBC */ if (st->codecpar->codec_type != AVMEDIA_TYPE_AUDIO || !is_pcm(st->codecpar->codec_id) || - mxf->nb_index_tables != 1 || - mxf->index_tables[0].nb_segments != 1 || - mxf->index_tables[0].segments[0]->edit_unit_byte_count >= 32) + !t || + t->nb_segments != 1 || + t->segments[0]->edit_unit_byte_count >= 32) return; /* arbitrarily default to 48 kHz PAL audio frame size */ /* TODO: We could compute this from the ratio between the audio * and video edit rates for 48 kHz NTSC we could use the * 1802-1802-1802-1802-1801 pattern. */ - track = st->priv_data; - mxf->edit_units_per_packet = FFMAX(1, track->edit_rate.num / track->edit_rate.den / 25); + track->edit_units_per_packet = FFMAX(1, track->edit_rate.num / track->edit_rate.den / 25); } /** - * Deal with the case where OPAtom files does not have any IndexTableSegments. + * Deal with the case where ClipWrapped essences does not have any IndexTableSegments. */ -static int mxf_handle_missing_index_segment(MXFContext *mxf) +static int mxf_handle_missing_index_segment(MXFContext *mxf, AVStream *st) { - AVFormatContext *s = mxf->fc; - AVStream *st = NULL; + MXFTrack *track = st->priv_data; MXFIndexTableSegment *segment = NULL; MXFPartition *p = NULL; int essence_partition_count = 0; + int edit_unit_byte_count = 0; int i, ret; - st = mxf_get_opatom_stream(mxf); - if (!st) + if (!track || track->wrapping != ClipWrapped) return 0; - /* TODO: support raw video without an index if they exist */ - if (st->codecpar->codec_type != AVMEDIA_TYPE_AUDIO || !is_pcm(st->codecpar->codec_id)) - return 0; - - /* check if file already has a IndexTableSegment */ + /* check if track already has an IndexTableSegment */ for (i = 0; i < mxf->metadata_sets_count; i++) { - if (mxf->metadata_sets[i]->type == IndexTableSegment) - return 0; + if (mxf->metadata_sets[i]->type == IndexTableSegment) { + MXFIndexTableSegment *s = (MXFIndexTableSegment*)mxf->metadata_sets[i]; + if (s->body_sid == track->body_sid) + return 0; + } } /* find the essence partition */ for (i = 0; i < mxf->partitions_count; i++) { /* BodySID == 0 -> no essence */ - if (!mxf->partitions[i].body_sid) + if (mxf->partitions[i].body_sid != track->body_sid) continue; p = &mxf->partitions[i]; @@ -2873,6 +2950,17 @@ static int mxf_handle_missing_index_segment(MXFContext *mxf) if (essence_partition_count != 1) return 0; + if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && is_pcm(st->codecpar->codec_id)) { + edit_unit_byte_count = (av_get_bits_per_sample(st->codecpar->codec_id) * st->codecpar->channels) >> 3; + } else if (st->duration > 0 && p->first_essence_klv.length > 0 && p->first_essence_klv.length % st->duration == 0) { + edit_unit_byte_count = p->first_essence_klv.length / st->duration; + } + + if (edit_unit_byte_count <= 0) + return 0; + + av_log(mxf->fc, AV_LOG_WARNING, "guessing index for stream %d using edit unit byte count %d\n", st->index, edit_unit_byte_count); + if (!(segment = av_mallocz(sizeof(*segment)))) return AVERROR(ENOMEM); @@ -2881,12 +2969,18 @@ static int mxf_handle_missing_index_segment(MXFContext *mxf) return ret; } + /* Make sure we have nonzero unique index_sid, body_sid will be ok, because + * using the same SID for index is forbidden in MXF. */ + if (!track->index_sid) + track->index_sid = track->body_sid; + segment->type = IndexTableSegment; /* stream will be treated as small EditUnitByteCount */ - segment->edit_unit_byte_count = (av_get_bits_per_sample(st->codecpar->codec_id) * st->codecpar->channels) >> 3; + segment->edit_unit_byte_count = edit_unit_byte_count; segment->index_start_position = 0; - segment->index_duration = s->streams[0]->duration; - segment->index_sid = p->index_sid; + segment->index_duration = st->duration; + segment->index_edit_rate = av_inv_q(st->time_base); + segment->index_sid = track->index_sid; segment->body_sid = p->body_sid; return 0; } @@ -2950,7 +3044,6 @@ static int mxf_read_header(AVFormatContext *s) int ret; mxf->last_forward_tell = INT64_MAX; - mxf->edit_units_per_packet = 1; if (!mxf_read_sync(s->pb, mxf_header_partition_pack_key, 14)) { av_log(s, AV_LOG_ERROR, "could not find header partition pack key\n"); @@ -2977,6 +3070,7 @@ static int mxf_read_header(AVFormatContext *s) av_log(s, AV_LOG_TRACE, "size %"PRIu64" offset %#"PRIx64"\n", klv.length, klv.offset); if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key) || IS_KLV_KEY(klv.key, mxf_essence_element_key) || + IS_KLV_KEY(klv.key, mxf_canopus_essence_element_key) || IS_KLV_KEY(klv.key, mxf_avid_essence_element_key) || IS_KLV_KEY(klv.key, mxf_system_item_key_cp) || IS_KLV_KEY(klv.key, mxf_system_item_key_gc)) { @@ -2986,32 +3080,8 @@ static int mxf_read_header(AVFormatContext *s) return AVERROR_INVALIDDATA; } - if (!mxf->current_partition->essence_offset) { - /* for OP1a we compute essence_offset - * for OPAtom we point essence_offset after the KL (usually op1a_essence_offset + 20 or 25) - * TODO: for OP1a we could eliminate this entire if statement, always stopping parsing at op1a_essence_offset - * for OPAtom we still need the actual essence_offset though (the KL's length can vary) - */ - int64_t op1a_essence_offset = - mxf->current_partition->this_partition + - round_to_kag(mxf->current_partition->pack_length, mxf->current_partition->kag_size) + - round_to_kag(mxf->current_partition->header_byte_count, mxf->current_partition->kag_size) + - round_to_kag(mxf->current_partition->index_byte_count, mxf->current_partition->kag_size); - - if (mxf->op == OPAtom) { - /* point essence_offset to the actual data - * OPAtom has all the essence in one big KLV - */ - mxf->current_partition->essence_offset = avio_tell(s->pb); - mxf->current_partition->essence_length = klv.length; - } else { - /* NOTE: op1a_essence_offset may be less than to klv.offset (C0023S01.mxf) */ - if (IS_KLV_KEY(klv.key, mxf_system_item_key_cp) || IS_KLV_KEY(klv.key, mxf_system_item_key_gc)) - mxf->current_partition->essence_offset = klv.offset; - else - mxf->current_partition->essence_offset = op1a_essence_offset; - } - } + if (!mxf->current_partition->first_essence_klv.offset) + mxf->current_partition->first_essence_klv = klv; if (!essence_offset) essence_offset = klv.offset; @@ -3050,14 +3120,14 @@ static int mxf_read_header(AVFormatContext *s) } avio_seek(s->pb, essence_offset, SEEK_SET); - mxf_compute_essence_containers(mxf); - /* we need to do this before computing the index tables * to be able to fill in zero IndexDurations with st->duration */ if ((ret = mxf_parse_structural_metadata(mxf)) < 0) goto fail; - mxf_handle_missing_index_segment(mxf); + for (int i = 0; i < s->nb_streams; i++) + mxf_handle_missing_index_segment(mxf, s->streams[i]); + if ((ret = mxf_compute_index_tables(mxf)) < 0) goto fail; @@ -3065,13 +3135,16 @@ static int mxf_read_header(AVFormatContext *s) /* TODO: look up which IndexSID to use via EssenceContainerData */ av_log(mxf->fc, AV_LOG_INFO, "got %i index tables - only the first one (IndexSID %i) will be used\n", mxf->nb_index_tables, mxf->index_tables[0].index_sid); - } else if (mxf->nb_index_tables == 0 && mxf->op == OPAtom) { + } else if (mxf->nb_index_tables == 0 && mxf->op == OPAtom && (s->error_recognition & AV_EF_EXPLODE)) { av_log(mxf->fc, AV_LOG_ERROR, "cannot demux OPAtom without an index\n"); ret = AVERROR_INVALIDDATA; goto fail; } - mxf_handle_small_eubc(s); + mxf_compute_essence_containers(s); + + for (int i = 0; i < s->nb_streams; i++) + mxf_compute_edit_units_per_packet(mxf, s->streams[i]); return 0; fail: @@ -3080,15 +3153,6 @@ fail: return ret; } -static MXFIndexTable *mxf_find_index_table(MXFContext *mxf, int index_sid) -{ - int i; - for (i = 0; i < mxf->nb_index_tables; i++) - if (mxf->index_tables[i].index_sid == index_sid) - return &mxf->index_tables[i]; - return NULL; -} - /* Get the edit unit of the next packet from current_offset in a track. The returned edit unit can be original_duration as well! */ static int mxf_get_next_track_edit_unit(MXFContext *mxf, MXFTrack *track, int64_t current_offset, int64_t *edit_unit_out) { @@ -3103,7 +3167,7 @@ static int mxf_get_next_track_edit_unit(MXFContext *mxf, MXFTrack *track, int64_ while (b - a > 1) { m = (a + b) >> 1; - if (mxf_edit_unit_absolute_offset(mxf, t, m, NULL, &offset, 0) < 0) + if (mxf_edit_unit_absolute_offset(mxf, t, m, track->edit_rate, NULL, &offset, NULL, 0) < 0) return -1; if (offset < current_offset) a = m; @@ -3116,70 +3180,32 @@ static int mxf_get_next_track_edit_unit(MXFContext *mxf, MXFTrack *track, int64_ return 0; } -/** - * Sets mxf->current_edit_unit based on what offset we're currently at. - * @return next_ofs if OK, <0 on error - */ -static int64_t mxf_set_current_edit_unit(MXFContext *mxf, int64_t current_offset) -{ - int64_t last_ofs = -1, next_ofs = -1; - MXFIndexTable *t = &mxf->index_tables[0]; - - /* this is called from the OP1a demuxing logic, which means there - * may be no index tables */ - if (mxf->nb_index_tables <= 0) - return -1; - - /* find mxf->current_edit_unit so that the next edit unit starts ahead of current_offset */ - while (mxf->current_edit_unit >= 0) { - if (mxf_edit_unit_absolute_offset(mxf, t, mxf->current_edit_unit + 1, NULL, &next_ofs, 0) < 0) - return -2; - - if (next_ofs <= last_ofs) { - /* large next_ofs didn't change or current_edit_unit wrapped - * around this fixes the infinite loop on zzuf3.mxf */ - av_log(mxf->fc, AV_LOG_ERROR, - "next_ofs didn't change. not deriving packet timestamps\n"); - return -1; - } - - if (next_ofs > current_offset) - break; - - last_ofs = next_ofs; - mxf->current_edit_unit++; - } - - /* not checking mxf->current_edit_unit >= t->nb_ptses here since CBR files may lack IndexEntryArrays */ - if (mxf->current_edit_unit < 0) - return -1; - - return next_ofs; -} - -static int mxf_compute_sample_count(MXFContext *mxf, int stream_index, - uint64_t *sample_count) +static int64_t mxf_compute_sample_count(MXFContext *mxf, AVStream *st, + int64_t edit_unit) { int i, total = 0, size = 0; - AVStream *st = mxf->fc->streams[stream_index]; MXFTrack *track = st->priv_data; AVRational time_base = av_inv_q(track->edit_rate); AVRational sample_rate = av_inv_q(st->time_base); const MXFSamplesPerFrame *spf = NULL; + int64_t sample_count; + + // For non-audio sample_count equals current edit unit + if (st->codecpar->codec_type != AVMEDIA_TYPE_AUDIO) + return edit_unit; if ((sample_rate.num / sample_rate.den) == 48000) spf = ff_mxf_get_samples_per_frame(mxf->fc, time_base); if (!spf) { int remainder = (sample_rate.num * time_base.num) % (time_base.den * sample_rate.den); - *sample_count = av_rescale_q(mxf->current_edit_unit, sample_rate, track->edit_rate); if (remainder) av_log(mxf->fc, AV_LOG_WARNING, "seeking detected on stream #%d with time base (%d/%d) and " "sample rate (%d/%d), audio pts won't be accurate.\n", - stream_index, time_base.num, time_base.den, + st->index, time_base.num, time_base.den, sample_rate.num, sample_rate.den); - return 0; + return av_rescale_q(edit_unit, sample_rate, track->edit_rate); } while (spf->samples_per_frame[size]) { @@ -3189,12 +3215,55 @@ static int mxf_compute_sample_count(MXFContext *mxf, int stream_index, av_assert2(size); - *sample_count = (mxf->current_edit_unit / size) * (uint64_t)total; - for (i = 0; i < mxf->current_edit_unit % size; i++) { - *sample_count += spf->samples_per_frame[i]; + sample_count = (edit_unit / size) * (uint64_t)total; + for (i = 0; i < edit_unit % size; i++) { + sample_count += spf->samples_per_frame[i]; } - return 0; + return sample_count; +} + +/** + * Make sure track->sample_count is correct based on what offset we're currently at. + * Also determine the next edit unit (or packet) offset. + * @return next_ofs if OK, <0 on error + */ +static int64_t mxf_set_current_edit_unit(MXFContext *mxf, AVStream *st, int64_t current_offset, int resync) +{ + int64_t next_ofs = -1; + MXFTrack *track = st->priv_data; + int64_t edit_unit = av_rescale_q(track->sample_count, st->time_base, av_inv_q(track->edit_rate)); + int64_t new_edit_unit; + MXFIndexTable *t = mxf_find_index_table(mxf, track->index_sid); + + if (!t || track->wrapping == UnknownWrapped) + return -1; + + if (mxf_edit_unit_absolute_offset(mxf, t, edit_unit + track->edit_units_per_packet, track->edit_rate, NULL, &next_ofs, NULL, 0) < 0 && + (next_ofs = mxf_essence_container_end(mxf, t->body_sid)) <= 0) { + av_log(mxf->fc, AV_LOG_ERROR, "unable to compute the size of the last packet\n"); + return -1; + } + + /* check if the next edit unit offset (next_ofs) starts ahead of current_offset */ + if (next_ofs > current_offset) + return next_ofs; + + if (!resync) { + av_log(mxf->fc, AV_LOG_ERROR, "cannot find current edit unit for stream %d, invalid index?\n", st->index); + return -1; + } + + if (mxf_get_next_track_edit_unit(mxf, track, current_offset + 1, &new_edit_unit) < 0 || new_edit_unit <= 0) { + av_log(mxf->fc, AV_LOG_ERROR, "failed to find next track edit unit in stream %d\n", st->index); + return -1; + } + + new_edit_unit--; + track->sample_count = mxf_compute_sample_count(mxf, st, new_edit_unit); + av_log(mxf->fc, AV_LOG_WARNING, "edit unit sync lost on stream %d, jumping from %"PRId64" to %"PRId64"\n", st->index, edit_unit, new_edit_unit); + + return mxf_set_current_edit_unit(mxf, st, current_offset, 0); } static int mxf_set_audio_pts(MXFContext *mxf, AVCodecParameters *par, @@ -3216,56 +3285,73 @@ static int mxf_set_audio_pts(MXFContext *mxf, AVCodecParameters *par, return 0; } -static int mxf_set_pts(MXFContext *mxf, AVStream *st, AVPacket *pkt, int64_t next_ofs) +static int mxf_set_pts(MXFContext *mxf, AVStream *st, AVPacket *pkt) { AVCodecParameters *par = st->codecpar; MXFTrack *track = st->priv_data; - if (par->codec_type == AVMEDIA_TYPE_VIDEO && (next_ofs >= 0 || next_ofs == -2 && st->duration == mxf->current_edit_unit + 1)) { - /* mxf->current_edit_unit good - see if we have an - * index table to derive timestamps from */ - MXFIndexTable *t = &mxf->index_tables[0]; + if (par->codec_type == AVMEDIA_TYPE_VIDEO) { + /* see if we have an index table to derive timestamps from */ + MXFIndexTable *t = mxf_find_index_table(mxf, track->index_sid); - if (mxf->nb_index_tables >= 1 && mxf->current_edit_unit < t->nb_ptses) { - pkt->dts = mxf->current_edit_unit + t->first_dts; - pkt->pts = t->ptses[mxf->current_edit_unit]; + if (t && track->sample_count < t->nb_ptses) { + pkt->dts = track->sample_count + t->first_dts; + pkt->pts = t->ptses[track->sample_count]; } else if (track->intra_only) { /* intra-only -> PTS = EditUnit. * let utils.c figure out DTS since it can be < PTS if low_delay = 0 (Sony IMX30) */ - pkt->pts = mxf->current_edit_unit; + pkt->pts = track->sample_count; } + track->sample_count++; } else if (par->codec_type == AVMEDIA_TYPE_AUDIO) { int ret = mxf_set_audio_pts(mxf, par, pkt); if (ret < 0) return ret; + } else if (track) { + track->sample_count++; } return 0; } -static int mxf_read_packet_old(AVFormatContext *s, AVPacket *pkt) +static int mxf_read_packet(AVFormatContext *s, AVPacket *pkt) { KLVPacket klv; MXFContext *mxf = s->priv_data; int ret; - while ((ret = klv_read_packet(&klv, s->pb)) == 0) { - PRINT_KEY(s, "read packet", klv.key); - av_log(s, AV_LOG_TRACE, "size %"PRIu64" offset %#"PRIx64"\n", klv.length, klv.offset); - if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key)) { - ret = mxf_decrypt_triplet(s, pkt, &klv); - if (ret < 0) { - av_log(s, AV_LOG_ERROR, "invalid encoded triplet\n"); - return ret; + while (1) { + int64_t max_data_size; + int64_t pos = avio_tell(s->pb); + + if (pos < mxf->current_klv_data.next_klv - mxf->current_klv_data.length || pos >= mxf->current_klv_data.next_klv) { + mxf->current_klv_data = (KLVPacket){{0}}; + ret = klv_read_packet(&klv, s->pb); + if (ret < 0) + break; + max_data_size = klv.length; + pos = klv.next_klv - klv.length; + PRINT_KEY(s, "read packet", klv.key); + av_log(s, AV_LOG_TRACE, "size %"PRIu64" offset %#"PRIx64"\n", klv.length, klv.offset); + if (IS_KLV_KEY(klv.key, mxf_encrypted_triplet_key)) { + ret = mxf_decrypt_triplet(s, pkt, &klv); + if (ret < 0) { + av_log(s, AV_LOG_ERROR, "invalid encoded triplet\n"); + return ret; + } + return 0; } - return 0; + } else { + klv = mxf->current_klv_data; + max_data_size = klv.next_klv - pos; } if (IS_KLV_KEY(klv.key, mxf_essence_element_key) || IS_KLV_KEY(klv.key, mxf_canopus_essence_element_key) || IS_KLV_KEY(klv.key, mxf_avid_essence_element_key)) { int body_sid = find_body_sid_by_offset(mxf, klv.offset); int index = mxf_get_stream_index(s, &klv, body_sid); - int64_t next_ofs, next_klv; + int64_t next_ofs; AVStream *st; + MXFTrack *track; if (index < 0) { av_log(s, AV_LOG_ERROR, @@ -3275,22 +3361,38 @@ static int mxf_read_packet_old(AVFormatContext *s, AVPacket *pkt) } st = s->streams[index]; + track = st->priv_data; if (s->streams[index]->discard == AVDISCARD_ALL) goto skip; - next_klv = avio_tell(s->pb) + klv.length; - next_ofs = mxf_set_current_edit_unit(mxf, klv.offset); - - if (next_ofs >= 0 && next_klv > next_ofs) { - /* if this check is hit then it's possible OPAtom was treated as OP1a - * truncate the packet since it's probably very large (>2 GiB is common) */ - avpriv_request_sample(s, - "OPAtom misinterpreted as OP1a? " - "KLV for edit unit %"PRId64" extending into " - "next edit unit", - mxf->current_edit_unit); - klv.length = next_ofs - avio_tell(s->pb); + next_ofs = mxf_set_current_edit_unit(mxf, st, pos, 1); + + if (track->wrapping != FrameWrapped) { + int64_t size; + + if (next_ofs <= 0) { + // If we have no way to packetize the data, then return it in chunks... + if (klv.next_klv - klv.length == pos && max_data_size > MXF_MAX_CHUNK_SIZE) { + st->need_parsing = AVSTREAM_PARSE_FULL; + avpriv_request_sample(s, "Huge KLV without proper index in non-frame wrapped essence"); + } + size = FFMIN(max_data_size, MXF_MAX_CHUNK_SIZE); + } else { + if ((size = next_ofs - pos) <= 0) { + av_log(s, AV_LOG_ERROR, "bad size: %"PRId64"\n", size); + ret = AVERROR_INVALIDDATA; + goto skip; + } + // We must not overread, because the next edit unit might be in another KLV + if (size > max_data_size) + size = max_data_size; + } + + mxf->current_klv_data = klv; + klv.offset = pos; + klv.length = size; + klv.next_klv = klv.offset + klv.length; } /* check for 8 channels AES3 element */ @@ -3299,93 +3401,38 @@ static int mxf_read_packet_old(AVFormatContext *s, AVPacket *pkt) pkt, klv.length); if (ret < 0) { av_log(s, AV_LOG_ERROR, "error reading D-10 aes3 frame\n"); + mxf->current_klv_data = (KLVPacket){{0}}; return ret; } } else { ret = av_get_packet(s->pb, pkt, klv.length); - if (ret < 0) + if (ret < 0) { + mxf->current_klv_data = (KLVPacket){{0}}; return ret; + } } pkt->stream_index = index; pkt->pos = klv.offset; - ret = mxf_set_pts(mxf, st, pkt, next_ofs); - if (ret < 0) + ret = mxf_set_pts(mxf, st, pkt); + if (ret < 0) { + mxf->current_klv_data = (KLVPacket){{0}}; return ret; + } /* seek for truncated packets */ - avio_seek(s->pb, next_klv, SEEK_SET); + avio_seek(s->pb, klv.next_klv, SEEK_SET); return 0; - } else + } else { skip: - avio_skip(s->pb, klv.length); + avio_skip(s->pb, max_data_size); + mxf->current_klv_data = (KLVPacket){{0}}; + } } return avio_feof(s->pb) ? AVERROR_EOF : ret; } -static int mxf_read_packet(AVFormatContext *s, AVPacket *pkt) -{ - MXFContext *mxf = s->priv_data; - int ret, size; - int64_t ret64, pos, next_pos; - AVStream *st; - MXFIndexTable *t; - MXFTrack *track; - int edit_units; - - if (mxf->op != OPAtom) - return mxf_read_packet_old(s, pkt); - - // If we have no streams then we basically are at EOF - st = mxf_get_opatom_stream(mxf); - if (!st) - return AVERROR_EOF; - - track = st->priv_data; - - /* OPAtom - clip wrapped demuxing */ - /* NOTE: mxf_read_header() makes sure nb_index_tables > 0 for OPAtom */ - t = &mxf->index_tables[0]; - - if (mxf->current_edit_unit >= track->original_duration) - return AVERROR_EOF; - - edit_units = FFMIN(mxf->edit_units_per_packet, track->original_duration - mxf->current_edit_unit); - - if ((ret = mxf_edit_unit_absolute_offset(mxf, t, mxf->current_edit_unit, NULL, &pos, 1)) < 0) - return ret; - - /* compute size by finding the next edit unit or the end of the essence container - * not pretty, but it works */ - if ((ret = mxf_edit_unit_absolute_offset(mxf, t, mxf->current_edit_unit + edit_units, NULL, &next_pos, 0)) < 0 && - (next_pos = mxf_essence_container_end(mxf, t->body_sid)) <= 0) { - av_log(s, AV_LOG_ERROR, "unable to compute the size of the last packet\n"); - return AVERROR_INVALIDDATA; - } - - if ((size = next_pos - pos) <= 0) { - av_log(s, AV_LOG_ERROR, "bad size: %i\n", size); - return AVERROR_INVALIDDATA; - } - - if ((ret64 = avio_seek(s->pb, pos, SEEK_SET)) < 0) - return ret64; - - if ((size = av_get_packet(s->pb, pkt, size)) < 0) - return size; - - pkt->stream_index = st->index; - - ret = mxf_set_pts(mxf, st, pkt, next_pos); - if (ret < 0) - return ret; - - mxf->current_edit_unit += edit_units; - - return 0; -} - static int mxf_read_close(AVFormatContext *s) { MXFContext *mxf = s->priv_data; @@ -3475,8 +3522,10 @@ static int mxf_read_seek(AVFormatContext *s, int stream_index, int64_t sample_ti return seekpos; ff_update_cur_dts(s, st, sample_time); - mxf->current_edit_unit = sample_time; + mxf->current_klv_data = (KLVPacket){{0}}; } else { + MXFPartition *partition; + t = &mxf->index_tables[0]; if (t->index_sid != source_track->index_sid) { /* If the first index table does not belong to the stream, then find a stream which does belong to the index table */ @@ -3519,11 +3568,23 @@ static int mxf_read_seek(AVFormatContext *s, int stream_index, int64_t sample_ti sample_time = FFMIN(sample_time, source_track->original_duration - 1); } - if ((ret = mxf_edit_unit_absolute_offset(mxf, t, sample_time, &sample_time, &seekpos, 1)) < 0) + if (source_track->wrapping == UnknownWrapped) + av_log(mxf->fc, AV_LOG_WARNING, "attempted seek in an UnknownWrapped essence\n"); + + if ((ret = mxf_edit_unit_absolute_offset(mxf, t, sample_time, source_track->edit_rate, &sample_time, &seekpos, &partition, 1)) < 0) return ret; ff_update_cur_dts(s, st, sample_time); - mxf->current_edit_unit = sample_time; + if (source_track->wrapping == ClipWrapped) { + KLVPacket klv = partition->first_essence_klv; + if (seekpos < klv.next_klv - klv.length || seekpos >= klv.next_klv) { + av_log(mxf->fc, AV_LOG_ERROR, "attempted seek out of clip wrapped KLV\n"); + return AVERROR_INVALIDDATA; + } + mxf->current_klv_data = klv; + } else { + mxf->current_klv_data = (KLVPacket){{0}}; + } avio_seek(s->pb, seekpos, SEEK_SET); } @@ -3531,19 +3592,11 @@ static int mxf_read_seek(AVFormatContext *s, int stream_index, int64_t sample_ti for (i = 0; i < s->nb_streams; i++) { AVStream *cur_st = s->streams[i]; MXFTrack *cur_track = cur_st->priv_data; - if (cur_st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) { - int64_t track_edit_unit; - if (st != cur_st && mxf_get_next_track_edit_unit(mxf, cur_track, seekpos, &track_edit_unit) >= 0) { - cur_track->sample_count = av_rescale_q(track_edit_unit, - av_inv_q(cur_track->edit_rate), - cur_st->time_base); - } else { - uint64_t current_sample_count = 0; - ret = mxf_compute_sample_count(mxf, i, ¤t_sample_count); - if (ret < 0) - return ret; - cur_track->sample_count = current_sample_count; - } + if (cur_track) { + int64_t track_edit_unit = sample_time; + if (st != cur_st) + mxf_get_next_track_edit_unit(mxf, cur_track, seekpos, &track_edit_unit); + cur_track->sample_count = mxf_compute_sample_count(mxf, cur_st, track_edit_unit); } } return 0; diff --git a/chromium/third_party/ffmpeg/libavformat/options_table.h b/chromium/third_party/ffmpeg/libavformat/options_table.h index b7a5b3c054b..f2f077b34f9 100644 --- a/chromium/third_party/ffmpeg/libavformat/options_table.h +++ b/chromium/third_party/ffmpeg/libavformat/options_table.h @@ -52,7 +52,9 @@ static const AVOption avformat_options[] = { {"keepside", "deprecated, does nothing", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_KEEP_SIDE_DATA }, INT_MIN, INT_MAX, D, "fflags"}, #endif {"fastseek", "fast but inaccurate seeks", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_FAST_SEEK }, INT_MIN, INT_MAX, D, "fflags"}, -{"latm", "enable RTP MP4A-LATM payload", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_MP4A_LATM }, INT_MIN, INT_MAX, E, "fflags"}, +#if FF_API_LAVF_MP4A_LATM +{"latm", "deprecated, does nothing", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_MP4A_LATM }, INT_MIN, INT_MAX, E, "fflags"}, +#endif {"nobuffer", "reduce the latency introduced by optional buffering", 0, AV_OPT_TYPE_CONST, {.i64 = AVFMT_FLAG_NOBUFFER }, 0, INT_MAX, D, "fflags"}, {"bitexact", "do not write random/volatile data", 0, AV_OPT_TYPE_CONST, { .i64 = AVFMT_FLAG_BITEXACT }, 0, 0, E, "fflags" }, {"shortest", "stop muxing with the shortest stream", 0, AV_OPT_TYPE_CONST, { .i64 = AVFMT_FLAG_SHORTEST }, 0, 0, E, "fflags" }, diff --git a/chromium/third_party/ffmpeg/libavformat/pva.c b/chromium/third_party/ffmpeg/libavformat/pva.c index 16381db9054..04ae8e2800c 100644 --- a/chromium/third_party/ffmpeg/libavformat/pva.c +++ b/chromium/third_party/ffmpeg/libavformat/pva.c @@ -134,6 +134,10 @@ recover: pes_flags = avio_rb16(pb); pes_header_data_length = avio_r8(pb); + if (avio_feof(pb)) { + return AVERROR_EOF; + } + if (pes_signal != 1 || pes_header_data_length == 0) { pva_log(s, AV_LOG_WARNING, "expected non empty signaled PES packet, " "trying to recover\n"); diff --git a/chromium/third_party/ffmpeg/libavformat/riff.c b/chromium/third_party/ffmpeg/libavformat/riff.c index 89117250d4e..0950415c26f 100644 --- a/chromium/third_party/ffmpeg/libavformat/riff.c +++ b/chromium/third_party/ffmpeg/libavformat/riff.c @@ -586,6 +586,7 @@ const struct AVCodecTag *avformat_get_riff_audio_tags(void) const AVCodecGuid ff_codec_wav_guids[] = { { AV_CODEC_ID_AC3, { 0x2C, 0x80, 0x6D, 0xE0, 0x46, 0xDB, 0xCF, 0x11, 0xB4, 0xD1, 0x00, 0x80, 0x5F, 0x6C, 0xBB, 0xEA } }, { AV_CODEC_ID_ATRAC3P, { 0xBF, 0xAA, 0x23, 0xE9, 0x58, 0xCB, 0x71, 0x44, 0xA1, 0x19, 0xFF, 0xFA, 0x01, 0xE4, 0xCE, 0x62 } }, + { AV_CODEC_ID_ATRAC9, { 0xD2, 0x42, 0xE1, 0x47, 0xBA, 0x36, 0x8D, 0x4D, 0x88, 0xFC, 0x61, 0x65, 0x4F, 0x8C, 0x83, 0x6C } }, { AV_CODEC_ID_EAC3, { 0xAF, 0x87, 0xFB, 0xA7, 0x02, 0x2D, 0xFB, 0x42, 0xA4, 0xD4, 0x05, 0xCD, 0x93, 0x84, 0x3B, 0xDD } }, { AV_CODEC_ID_MP2, { 0x2B, 0x80, 0x6D, 0xE0, 0x46, 0xDB, 0xCF, 0x11, 0xB4, 0xD1, 0x00, 0x80, 0x5F, 0x6C, 0xBB, 0xEA } }, { AV_CODEC_ID_NONE } diff --git a/chromium/third_party/ffmpeg/libavformat/rmdec.c b/chromium/third_party/ffmpeg/libavformat/rmdec.c index ac61723c66a..0216003e88e 100644 --- a/chromium/third_party/ffmpeg/libavformat/rmdec.c +++ b/chromium/third_party/ffmpeg/libavformat/rmdec.c @@ -522,7 +522,7 @@ static int rm_read_multi(AVFormatContext *s, AVIOContext *pb, size2 = avio_rb32(pb); ret = ff_rm_read_mdpr_codecdata(s, s->pb, st2, st2->priv_data, - size2, mime); + size2, NULL); if (ret < 0) return ret; } diff --git a/chromium/third_party/ffmpeg/libavformat/rtpenc_chain.c b/chromium/third_party/ffmpeg/libavformat/rtpenc_chain.c index e69fdc27cfb..d3c1bc96dce 100644 --- a/chromium/third_party/ffmpeg/libavformat/rtpenc_chain.c +++ b/chromium/third_party/ffmpeg/libavformat/rtpenc_chain.c @@ -58,7 +58,7 @@ int ff_rtp_chain_mux_open(AVFormatContext **out, AVFormatContext *s, rtpctx->max_delay = s->max_delay; /* Copy other stream parameters. */ rtpctx->streams[0]->sample_aspect_ratio = st->sample_aspect_ratio; - rtpctx->flags |= s->flags & (AVFMT_FLAG_MP4A_LATM | AVFMT_FLAG_BITEXACT); + rtpctx->flags |= s->flags & AVFMT_FLAG_BITEXACT; /* Get the payload type from the codec */ if (st->id < RTP_PT_PRIVATE) diff --git a/chromium/third_party/ffmpeg/libavformat/tedcaptionsdec.c b/chromium/third_party/ffmpeg/libavformat/tedcaptionsdec.c index 774d4993b5f..cd6ab0c24b7 100644 --- a/chromium/third_party/ffmpeg/libavformat/tedcaptionsdec.c +++ b/chromium/third_party/ffmpeg/libavformat/tedcaptionsdec.c @@ -94,7 +94,7 @@ static int parse_string(AVIOContext *pb, int *cur_byte, AVBPrint *bp, int full) { int ret; - av_bprint_init(bp, 0, full ? -1 : 1); + av_bprint_init(bp, 0, full ? AV_BPRINT_SIZE_UNLIMITED : AV_BPRINT_SIZE_AUTOMATIC); ret = expect_byte(pb, cur_byte, '"'); if (ret < 0) goto fail; diff --git a/chromium/third_party/ffmpeg/libavformat/version.h b/chromium/third_party/ffmpeg/libavformat/version.h index b0507474c1a..57b6599e71b 100644 --- a/chromium/third_party/ffmpeg/libavformat/version.h +++ b/chromium/third_party/ffmpeg/libavformat/version.h @@ -33,7 +33,7 @@ // Also please add any ticket numbers that you believe might be affected here #define LIBAVFORMAT_VERSION_MAJOR 58 #define LIBAVFORMAT_VERSION_MINOR 17 -#define LIBAVFORMAT_VERSION_MICRO 100 +#define LIBAVFORMAT_VERSION_MICRO 101 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \ @@ -97,6 +97,9 @@ #ifndef FF_API_DASH_MIN_SEG_DURATION #define FF_API_DASH_MIN_SEG_DURATION (LIBAVFORMAT_VERSION_MAJOR < 59) #endif +#ifndef FF_API_LAVF_MP4A_LATM +#define FF_API_LAVF_MP4A_LATM (LIBAVFORMAT_VERSION_MAJOR < 59) +#endif #ifndef FF_API_R_FRAME_RATE diff --git a/chromium/third_party/ffmpeg/libavformat/yuv4mpegdec.c b/chromium/third_party/ffmpeg/libavformat/yuv4mpegdec.c index eff7fc518e4..855fadbb31a 100644 --- a/chromium/third_party/ffmpeg/libavformat/yuv4mpegdec.c +++ b/chromium/third_party/ffmpeg/libavformat/yuv4mpegdec.c @@ -41,6 +41,7 @@ static int yuv4_read_header(AVFormatContext *s) enum AVPixelFormat pix_fmt = AV_PIX_FMT_NONE, alt_pix_fmt = AV_PIX_FMT_NONE; enum AVChromaLocation chroma_sample_location = AVCHROMA_LOC_UNSPECIFIED; enum AVFieldOrder field_order = AV_FIELD_UNKNOWN; + enum AVColorRange color_range = AVCOL_RANGE_UNSPECIFIED; AVStream *st; for (i = 0; i < MAX_YUV4_HEADER; i++) { @@ -220,6 +221,12 @@ static int yuv4_read_header(AVFormatContext *s) alt_pix_fmt = AV_PIX_FMT_YUV422P; else if (strncmp("444", tokstart, 3) == 0) alt_pix_fmt = AV_PIX_FMT_YUV444P; + } else if (strncmp("COLORRANGE=", tokstart, 11) == 0) { + tokstart += 11; + if (strncmp("FULL",tokstart, 4) == 0) + color_range = AVCOL_RANGE_JPEG; + else if (strncmp("LIMITED", tokstart, 7) == 0) + color_range = AVCOL_RANGE_MPEG; } while (tokstart < header_end && *tokstart != 0x20) tokstart++; @@ -263,6 +270,7 @@ static int yuv4_read_header(AVFormatContext *s) st->codecpar->codec_id = AV_CODEC_ID_RAWVIDEO; st->sample_aspect_ratio = (AVRational){ aspectn, aspectd }; st->codecpar->chroma_location = chroma_sample_location; + st->codecpar->color_range = color_range; st->codecpar->field_order = field_order; s->packet_size = av_image_get_buffer_size(st->codecpar->format, width, height, 1) + Y4M_FRAME_MAGIC_LEN; if ((int) s->packet_size < 0) diff --git a/chromium/third_party/ffmpeg/libavformat/yuv4mpegenc.c b/chromium/third_party/ffmpeg/libavformat/yuv4mpegenc.c index 44f40bbad98..e84dbf95687 100644 --- a/chromium/third_party/ffmpeg/libavformat/yuv4mpegenc.c +++ b/chromium/third_party/ffmpeg/libavformat/yuv4mpegenc.c @@ -33,6 +33,7 @@ static int yuv4_generate_header(AVFormatContext *s, char* buf) int raten, rated, aspectn, aspectd, n; char inter; const char *colorspace = ""; + const char *colorrange = ""; int field_order; st = s->streams[0]; @@ -57,6 +58,17 @@ static int yuv4_generate_header(AVFormatContext *s, char* buf) FF_ENABLE_DEPRECATION_WARNINGS #endif + switch(st->codecpar->color_range) { + case AVCOL_RANGE_MPEG: + colorrange = " XCOLORRANGE=LIMITED"; + break; + case AVCOL_RANGE_JPEG: + colorrange = " XCOLORRANGE=FULL"; + break; + default: + break; + } + switch (field_order) { case AV_FIELD_TB: case AV_FIELD_TT: inter = 't'; break; @@ -84,6 +96,18 @@ static int yuv4_generate_header(AVFormatContext *s, char* buf) case AV_PIX_FMT_YUV411P: colorspace = " C411 XYSCSS=411"; break; + case AV_PIX_FMT_YUVJ420P: + colorspace = " C420jpeg XYSCSS=420JPEG"; + colorrange = " XCOLORRANGE=FULL"; + break; + case AV_PIX_FMT_YUVJ422P: + colorspace = " C422 XYSCSS=422"; + colorrange = " XCOLORRANGE=FULL"; + break; + case AV_PIX_FMT_YUVJ444P: + colorspace = " C444 XYSCSS=444"; + colorrange = " XCOLORRANGE=FULL"; + break; case AV_PIX_FMT_YUV420P: switch (st->codecpar->chroma_location) { case AVCHROMA_LOC_TOPLEFT: colorspace = " C420paldv XYSCSS=420PALDV"; break; @@ -145,13 +169,14 @@ static int yuv4_generate_header(AVFormatContext *s, char* buf) } /* construct stream header, if this is the first frame */ - n = snprintf(buf, Y4M_LINE_MAX, "%s W%d H%d F%d:%d I%c A%d:%d%s\n", + n = snprintf(buf, Y4M_LINE_MAX, "%s W%d H%d F%d:%d I%c A%d:%d%s%s\n", Y4M_MAGIC, width, height, raten, rated, inter, - aspectn, aspectd, colorspace); + aspectn, aspectd, colorspace, colorrange); return n; } + static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt) { AVStream *st = s->streams[pkt->stream_index]; @@ -192,6 +217,10 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt) case AV_PIX_FMT_YUV420P: case AV_PIX_FMT_YUV422P: case AV_PIX_FMT_YUV444P: + // TODO: remove YUVJ pixel formats when they are completely removed from the codebase. + case AV_PIX_FMT_YUVJ420P: + case AV_PIX_FMT_YUVJ422P: + case AV_PIX_FMT_YUVJ444P: break; case AV_PIX_FMT_GRAY9: case AV_PIX_FMT_GRAY10: @@ -271,6 +300,10 @@ static int yuv4_write_header(AVFormatContext *s) case AV_PIX_FMT_YUV420P: case AV_PIX_FMT_YUV422P: case AV_PIX_FMT_YUV444P: + // TODO: remove YUVJ pixel formats when they are completely removed from the codebase. + case AV_PIX_FMT_YUVJ420P: + case AV_PIX_FMT_YUVJ422P: + case AV_PIX_FMT_YUVJ444P: break; case AV_PIX_FMT_GRAY9: case AV_PIX_FMT_GRAY10: diff --git a/chromium/third_party/ffmpeg/libavutil/Makefile b/chromium/third_party/ffmpeg/libavutil/Makefile index d0632f16a6b..9ed24cfc822 100644 --- a/chromium/third_party/ffmpeg/libavutil/Makefile +++ b/chromium/third_party/ffmpeg/libavutil/Makefile @@ -200,6 +200,7 @@ TESTPROGS = adler32 \ des \ dict \ display \ + encryption_info \ error \ eval \ file \ diff --git a/chromium/third_party/ffmpeg/libavutil/common.h b/chromium/third_party/ffmpeg/libavutil/common.h index 0fffa67714e..8db02911705 100644 --- a/chromium/third_party/ffmpeg/libavutil/common.h +++ b/chromium/third_party/ffmpeg/libavutil/common.h @@ -228,7 +228,7 @@ static av_always_inline av_const int av_clip_intp2_c(int a, int p) */ static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) { - if (a & ~((1<<p) - 1)) return -a >> 31 & ((1<<p) - 1); + if (a & ~((1<<p) - 1)) return (~a) >> 31 & ((1<<p) - 1); else return a; } diff --git a/chromium/third_party/ffmpeg/libavutil/encryption_info.c b/chromium/third_party/ffmpeg/libavutil/encryption_info.c index 9cb0f060937..b399e07e668 100644 --- a/chromium/third_party/ffmpeg/libavutil/encryption_info.c +++ b/chromium/third_party/ffmpeg/libavutil/encryption_info.c @@ -163,13 +163,16 @@ uint8_t *av_encryption_info_add_side_data(const AVEncryptionInfo *info, size_t * } // The format of the AVEncryptionInitInfo side data: -// u32be system_id_size -// u32be num_key_ids -// u32be key_id_size -// u32be data_size -// u8[system_id_size] system_id -// u8[key_id_size][num_key_id] key_ids -// u8[data_size] data +// u32be init_info_count +// { +// u32be system_id_size +// u32be num_key_ids +// u32be key_id_size +// u32be data_size +// u8[system_id_size] system_id +// u8[key_id_size][num_key_id] key_ids +// u8[data_size] data +// }[init_info_count] #define FF_ENCRYPTION_INIT_INFO_EXTRA 16 @@ -218,6 +221,7 @@ void av_encryption_init_info_free(AVEncryptionInitInfo *info) for (i = 0; i < info->num_key_ids; i++) { av_free(info->key_ids[i]); } + av_encryption_init_info_free(info->next); av_free(info->system_id); av_free(info->key_ids); av_free(info->data); @@ -228,71 +232,111 @@ void av_encryption_init_info_free(AVEncryptionInitInfo *info) AVEncryptionInitInfo *av_encryption_init_info_get_side_data( const uint8_t *side_data, size_t side_data_size) { - AVEncryptionInitInfo *info; - uint64_t system_id_size, num_key_ids, key_id_size, data_size, i; + // |ret| tracks the front of the list, |info| tracks the back. + AVEncryptionInitInfo *ret = NULL, *info, *temp_info; + uint64_t system_id_size, num_key_ids, key_id_size, data_size, i, j; + uint64_t init_info_count; - if (!side_data || side_data_size < FF_ENCRYPTION_INIT_INFO_EXTRA) + if (!side_data || side_data_size < 4) return NULL; - system_id_size = AV_RB32(side_data); - num_key_ids = AV_RB32(side_data + 4); - key_id_size = AV_RB32(side_data + 8); - data_size = AV_RB32(side_data + 12); + init_info_count = AV_RB32(side_data); + side_data += 4; + side_data_size -= 4; + for (i = 0; i < init_info_count; i++) { + if (side_data_size < FF_ENCRYPTION_INIT_INFO_EXTRA) { + av_encryption_init_info_free(ret); + return NULL; + } - // UINT32_MAX + UINT32_MAX + UINT32_MAX * UINT32_MAX == UINT64_MAX - if (side_data_size - FF_ENCRYPTION_INIT_INFO_EXTRA < system_id_size + data_size + num_key_ids * key_id_size) - return NULL; + system_id_size = AV_RB32(side_data); + num_key_ids = AV_RB32(side_data + 4); + key_id_size = AV_RB32(side_data + 8); + data_size = AV_RB32(side_data + 12); - info = av_encryption_init_info_alloc(system_id_size, num_key_ids, key_id_size, data_size); - if (!info) - return NULL; + // UINT32_MAX + UINT32_MAX + UINT32_MAX * UINT32_MAX == UINT64_MAX + if (side_data_size - FF_ENCRYPTION_INIT_INFO_EXTRA < system_id_size + data_size + num_key_ids * key_id_size) { + av_encryption_init_info_free(ret); + return NULL; + } + side_data += FF_ENCRYPTION_INIT_INFO_EXTRA; + side_data_size -= FF_ENCRYPTION_INIT_INFO_EXTRA; + + temp_info = av_encryption_init_info_alloc(system_id_size, num_key_ids, key_id_size, data_size); + if (!temp_info) { + av_encryption_init_info_free(ret); + return NULL; + } + if (i == 0) { + info = ret = temp_info; + } else { + info->next = temp_info; + info = temp_info; + } - memcpy(info->system_id, side_data + 16, system_id_size); - side_data += system_id_size + 16; - for (i = 0; i < num_key_ids; i++) { - memcpy(info->key_ids[i], side_data, key_id_size); - side_data += key_id_size; + memcpy(info->system_id, side_data, system_id_size); + side_data += system_id_size; + side_data_size -= system_id_size; + for (j = 0; j < num_key_ids; j++) { + memcpy(info->key_ids[j], side_data, key_id_size); + side_data += key_id_size; + side_data_size -= key_id_size; + } + memcpy(info->data, side_data, data_size); + side_data += data_size; + side_data_size -= data_size; } - memcpy(info->data, side_data, data_size); - return info; + return ret; } uint8_t *av_encryption_init_info_add_side_data(const AVEncryptionInitInfo *info, size_t *side_data_size) { + const AVEncryptionInitInfo *cur_info; uint8_t *buffer, *cur_buffer; - uint32_t i, max_size; - - if (UINT32_MAX - FF_ENCRYPTION_INIT_INFO_EXTRA < info->system_id_size || - UINT32_MAX - FF_ENCRYPTION_INIT_INFO_EXTRA - info->system_id_size < info->data_size) { - return NULL; - } - - if (info->num_key_ids) { - max_size = UINT32_MAX - FF_ENCRYPTION_INIT_INFO_EXTRA - info->system_id_size - info->data_size; - if (max_size / info->num_key_ids < info->key_id_size) + uint32_t i, init_info_count; + uint64_t temp_side_data_size; + + temp_side_data_size = 4; + init_info_count = 0; + for (cur_info = info; cur_info; cur_info = cur_info->next) { + temp_side_data_size += (uint64_t)FF_ENCRYPTION_INIT_INFO_EXTRA + cur_info->system_id_size + cur_info->data_size; + if (init_info_count == UINT32_MAX || temp_side_data_size > UINT32_MAX) { return NULL; + } + init_info_count++; + + if (cur_info->num_key_ids) { + temp_side_data_size += (uint64_t)cur_info->num_key_ids * cur_info->key_id_size; + if (temp_side_data_size > UINT32_MAX) { + return NULL; + } + } } + *side_data_size = temp_side_data_size; - *side_data_size = FF_ENCRYPTION_INIT_INFO_EXTRA + info->system_id_size + - info->data_size + (info->num_key_ids * info->key_id_size); cur_buffer = buffer = av_malloc(*side_data_size); if (!buffer) return NULL; - AV_WB32(cur_buffer, info->system_id_size); - AV_WB32(cur_buffer + 4, info->num_key_ids); - AV_WB32(cur_buffer + 8, info->key_id_size); - AV_WB32(cur_buffer + 12, info->data_size); - cur_buffer += 16; - - memcpy(cur_buffer, info->system_id, info->system_id_size); - cur_buffer += info->system_id_size; - for (i = 0; i < info->num_key_ids; i++) { - memcpy(cur_buffer, info->key_ids[i], info->key_id_size); - cur_buffer += info->key_id_size; + AV_WB32(cur_buffer, init_info_count); + cur_buffer += 4; + for (cur_info = info; cur_info; cur_info = cur_info->next) { + AV_WB32(cur_buffer, cur_info->system_id_size); + AV_WB32(cur_buffer + 4, cur_info->num_key_ids); + AV_WB32(cur_buffer + 8, cur_info->key_id_size); + AV_WB32(cur_buffer + 12, cur_info->data_size); + cur_buffer += 16; + + memcpy(cur_buffer, cur_info->system_id, cur_info->system_id_size); + cur_buffer += cur_info->system_id_size; + for (i = 0; i < cur_info->num_key_ids; i++) { + memcpy(cur_buffer, cur_info->key_ids[i], cur_info->key_id_size); + cur_buffer += cur_info->key_id_size; + } + memcpy(cur_buffer, cur_info->data, cur_info->data_size); + cur_buffer += cur_info->data_size; } - memcpy(cur_buffer, info->data, info->data_size); return buffer; } diff --git a/chromium/third_party/ffmpeg/libavutil/encryption_info.h b/chromium/third_party/ffmpeg/libavutil/encryption_info.h index ec5501aac76..8fe7ebfe432 100644 --- a/chromium/third_party/ffmpeg/libavutil/encryption_info.h +++ b/chromium/third_party/ffmpeg/libavutil/encryption_info.h @@ -115,6 +115,11 @@ typedef struct AVEncryptionInitInfo { */ uint8_t* data; uint32_t data_size; + + /** + * An optional pointer to the next initialization info in the list. + */ + struct AVEncryptionInitInfo *next; } AVEncryptionInitInfo; /** @@ -124,7 +129,7 @@ typedef struct AVEncryptionInitInfo { * * @param subsample_count The number of subsamples. * @param key_id_size The number of bytes in the key ID, should be 16. - * @param key_id_size The number of bytes in the IV, should be 16. + * @param iv_size The number of bytes in the IV, should be 16. * * @return The new AVEncryptionInfo structure, or NULL on error. */ diff --git a/chromium/third_party/ffmpeg/libavutil/hwcontext.c b/chromium/third_party/ffmpeg/libavutil/hwcontext.c index 745016ed7e1..f1e404ab201 100644 --- a/chromium/third_party/ffmpeg/libavutil/hwcontext.c +++ b/chromium/third_party/ffmpeg/libavutil/hwcontext.c @@ -870,3 +870,10 @@ fail: av_buffer_unref(&dst_ref); return ret; } + +int ff_hwframe_map_replace(AVFrame *dst, const AVFrame *src) +{ + HWMapDescriptor *hwmap = (HWMapDescriptor*)dst->buf[0]->data; + av_frame_unref(hwmap->source); + return av_frame_ref(hwmap->source, src); +} diff --git a/chromium/third_party/ffmpeg/libavutil/hwcontext_internal.h b/chromium/third_party/ffmpeg/libavutil/hwcontext_internal.h index 332062ddaa0..77dc47ddd6e 100644 --- a/chromium/third_party/ffmpeg/libavutil/hwcontext_internal.h +++ b/chromium/third_party/ffmpeg/libavutil/hwcontext_internal.h @@ -156,6 +156,11 @@ int ff_hwframe_map_create(AVBufferRef *hwframe_ref, HWMapDescriptor *hwmap), void *priv); +/** + * Replace the current hwmap of dst with the one from src, used for indirect + * mappings like VAAPI->(DRM)->OpenCL/Vulkan where a direct interop is missing + */ +int ff_hwframe_map_replace(AVFrame *dst, const AVFrame *src); extern const HWContextType ff_hwcontext_type_cuda; extern const HWContextType ff_hwcontext_type_d3d11va; diff --git a/chromium/third_party/ffmpeg/libavutil/hwcontext_opencl.c b/chromium/third_party/ffmpeg/libavutil/hwcontext_opencl.c index 07458c2fb10..728877553f8 100644 --- a/chromium/third_party/ffmpeg/libavutil/hwcontext_opencl.c +++ b/chromium/third_party/ffmpeg/libavutil/hwcontext_opencl.c @@ -46,7 +46,9 @@ #endif #if HAVE_OPENCL_VAAPI_INTEL_MEDIA +#if CONFIG_LIBMFX #include <mfx/mfxstructures.h> +#endif #include <va/va.h> #include <CL/va_ext.h> #include "hwcontext_vaapi.h" @@ -926,7 +928,6 @@ static int opencl_enumerate_intel_media_vaapi_devices(AVHWDeviceContext *hwdev, clGetDeviceIDsFromVA_APIMediaAdapterINTEL_fn clGetDeviceIDsFromVA_APIMediaAdapterINTEL; cl_int cle; - int err; clGetDeviceIDsFromVA_APIMediaAdapterINTEL = clGetExtensionFunctionAddressForPlatform(platform_id, @@ -1359,10 +1360,7 @@ static int opencl_device_derive(AVHWDeviceContext *hwdev, break; } - if (err < 0) - return err; - - return opencl_device_init(hwdev); + return err; } static int opencl_get_plane_format(enum AVPixelFormat pixfmt, @@ -2154,7 +2152,6 @@ static int opencl_map_from_vaapi(AVHWFramesContext *dst_fc, AVFrame *dst, const AVFrame *src, int flags) { - HWMapDescriptor *hwmap; AVFrame *tmp; int err; @@ -2172,10 +2169,7 @@ static int opencl_map_from_vaapi(AVHWFramesContext *dst_fc, if (err < 0) goto fail; - // Adjust the map descriptor so that unmap works correctly. - hwmap = (HWMapDescriptor*)dst->buf[0]->data; - av_frame_unref(hwmap->source); - err = av_frame_ref(hwmap->source, src); + err = ff_hwframe_map_replace(dst, src); fail: av_frame_free(&tmp); @@ -2249,10 +2243,13 @@ static int opencl_map_from_qsv(AVHWFramesContext *dst_fc, AVFrame *dst, cl_int cle; int err, p; +#if CONFIG_LIBMFX if (src->format == AV_PIX_FMT_QSV) { mfxFrameSurface1 *mfx_surface = (mfxFrameSurface1*)src->data[3]; va_surface = *(VASurfaceID*)mfx_surface->Data.MemId; - } else if (src->format == AV_PIX_FMT_VAAPI) { + } else +#endif + if (src->format == AV_PIX_FMT_VAAPI) { va_surface = (VASurfaceID)(uintptr_t)src->data[3]; } else { return AVERROR(ENOSYS); diff --git a/chromium/third_party/ffmpeg/libavutil/log.c b/chromium/third_party/ffmpeg/libavutil/log.c index 25e5ad79a4f..577cdc1df4b 100644 --- a/chromium/third_party/ffmpeg/libavutil/log.c +++ b/chromium/third_party/ffmpeg/libavutil/log.c @@ -247,9 +247,9 @@ static void format_line(void *avcl, int level, const char *fmt, va_list vl, AVBPrint part[4], int *print_prefix, int type[2]) { AVClass* avc = avcl ? *(AVClass **) avcl : NULL; - av_bprint_init(part+0, 0, 1); - av_bprint_init(part+1, 0, 1); - av_bprint_init(part+2, 0, 1); + av_bprint_init(part+0, 0, AV_BPRINT_SIZE_AUTOMATIC); + av_bprint_init(part+1, 0, AV_BPRINT_SIZE_AUTOMATIC); + av_bprint_init(part+2, 0, AV_BPRINT_SIZE_AUTOMATIC); av_bprint_init(part+3, 0, 65536); if(type) type[0] = type[1] = AV_CLASS_CATEGORY_NA + 16; diff --git a/chromium/third_party/ffmpeg/libavutil/pixfmt.h b/chromium/third_party/ffmpeg/libavutil/pixfmt.h index aea008bbdc3..2b3307845eb 100644 --- a/chromium/third_party/ffmpeg/libavutil/pixfmt.h +++ b/chromium/third_party/ffmpeg/libavutil/pixfmt.h @@ -42,6 +42,10 @@ * This is stored as BGRA on little-endian CPU architectures and ARGB on * big-endian CPUs. * + * @note + * If the resolution is not a multiple of the chroma subsampling factor + * then the chroma plane resolution must be rounded up. + * * @par * When the pixel format is palettized RGB32 (AV_PIX_FMT_PAL8), the palettized * image data is stored in AVFrame.data[0]. The palette is transported in diff --git a/chromium/third_party/ffmpeg/libavutil/x86/cpu.c b/chromium/third_party/ffmpeg/libavutil/x86/cpu.c index aca893174ea..bcd41a50a23 100644 --- a/chromium/third_party/ffmpeg/libavutil/x86/cpu.c +++ b/chromium/third_party/ffmpeg/libavutil/x86/cpu.c @@ -127,7 +127,7 @@ int ff_get_cpu_flags_x86(void) rval |= AV_CPU_FLAG_SSE4; if (ecx & 0x00100000 ) rval |= AV_CPU_FLAG_SSE42; - if (ecx & 0x01000000 ) + if (ecx & 0x02000000 ) rval |= AV_CPU_FLAG_AESNI; #if HAVE_AVX /* Check OXSAVE and AVX bits */ diff --git a/chromium/third_party/ffmpeg/libavutil/x86/pixelutils.asm b/chromium/third_party/ffmpeg/libavutil/x86/pixelutils.asm index 7af3007d0c4..171a3d14915 100644 --- a/chromium/third_party/ffmpeg/libavutil/x86/pixelutils.asm +++ b/chromium/third_party/ffmpeg/libavutil/x86/pixelutils.asm @@ -104,8 +104,8 @@ cglobal pixelutils_sad_16x16, 4,4,0, src1, stride1, src2, stride2 RET ;------------------------------------------------------------------------------- -; int ff_pixelutils_sad_16x16_sse(const uint8_t *src1, ptrdiff_t stride1, -; const uint8_t *src2, ptrdiff_t stride2); +; int ff_pixelutils_sad_16x16_sse2(const uint8_t *src1, ptrdiff_t stride1, +; const uint8_t *src2, ptrdiff_t stride2); ;------------------------------------------------------------------------------- INIT_XMM sse2 cglobal pixelutils_sad_16x16, 4,4,5, src1, stride1, src2, stride2 @@ -134,8 +134,8 @@ cglobal pixelutils_sad_16x16, 4,4,5, src1, stride1, src2, stride2 RET ;------------------------------------------------------------------------------- -; int ff_pixelutils_sad_[au]_16x16_sse(const uint8_t *src1, ptrdiff_t stride1, -; const uint8_t *src2, ptrdiff_t stride2); +; int ff_pixelutils_sad_[au]_16x16_sse2(const uint8_t *src1, ptrdiff_t stride1, +; const uint8_t *src2, ptrdiff_t stride2); ;------------------------------------------------------------------------------- %macro SAD_XMM_16x16 1 INIT_XMM sse2 diff --git a/chromium/third_party/ffmpeg/tools/qt-faststart.c b/chromium/third_party/ffmpeg/tools/qt-faststart.c index d0ae7245f30..5e88c38e6b1 100644 --- a/chromium/third_party/ffmpeg/tools/qt-faststart.c +++ b/chromium/third_party/ffmpeg/tools/qt-faststart.c @@ -28,6 +28,7 @@ #include <stdlib.h> #include <inttypes.h> #include <string.h> +#include <limits.h> #ifdef __MINGW32__ #undef fseeko @@ -43,8 +44,6 @@ #define MIN(a,b) ((a) > (b) ? (b) : (a)) -#define BE_16(x) ((((uint8_t*)(x))[0] << 8) | ((uint8_t*)(x))[1]) - #define BE_32(x) (((uint32_t)(((uint8_t*)(x))[0]) << 24) | \ (((uint8_t*)(x))[1] << 16) | \ (((uint8_t*)(x))[2] << 8) | \ @@ -59,6 +58,18 @@ ((uint64_t)(((uint8_t*)(x))[6]) << 8) | \ ((uint64_t)( (uint8_t*)(x))[7])) +#define AV_WB32(p, val) { \ + ((uint8_t*)(p))[0] = ((val) >> 24) & 0xff; \ + ((uint8_t*)(p))[1] = ((val) >> 16) & 0xff; \ + ((uint8_t*)(p))[2] = ((val) >> 8) & 0xff; \ + ((uint8_t*)(p))[3] = (val) & 0xff; \ + } + +#define AV_WB64(p, val) { \ + AV_WB32(p, (val) >> 32) \ + AV_WB32(p + 4, val) \ + } + #define BE_FOURCC(ch0, ch1, ch2, ch3) \ ( (uint32_t)(unsigned char)(ch3) | \ ((uint32_t)(unsigned char)(ch2) << 8) | \ @@ -79,11 +90,342 @@ #define UUID_ATOM QT_ATOM('u', 'u', 'i', 'd') #define CMOV_ATOM QT_ATOM('c', 'm', 'o', 'v') +#define TRAK_ATOM QT_ATOM('t', 'r', 'a', 'k') +#define MDIA_ATOM QT_ATOM('m', 'd', 'i', 'a') +#define MINF_ATOM QT_ATOM('m', 'i', 'n', 'f') +#define STBL_ATOM QT_ATOM('s', 't', 'b', 'l') #define STCO_ATOM QT_ATOM('s', 't', 'c', 'o') #define CO64_ATOM QT_ATOM('c', 'o', '6', '4') #define ATOM_PREAMBLE_SIZE 8 #define COPY_BUFFER_SIZE 33554432 +#define MAX_FTYP_ATOM_SIZE 1048576 + +typedef struct { + uint32_t type; + uint32_t header_size; + uint64_t size; + unsigned char *data; +} atom_t; + +typedef struct { + uint64_t moov_atom_size; + uint64_t stco_offset_count; + uint64_t stco_data_size; + int stco_overflow; + uint32_t depth; +} update_chunk_offsets_context_t; + +typedef struct { + unsigned char *dest; + uint64_t original_moov_size; + uint64_t new_moov_size; +} upgrade_stco_context_t; + +typedef int (*parse_atoms_callback_t)(void *context, atom_t *atom); + +static int parse_atoms( + unsigned char *buf, + uint64_t size, + parse_atoms_callback_t callback, + void *context) +{ + unsigned char *pos = buf; + unsigned char *end = pos + size; + atom_t atom; + int ret; + + while (end - pos >= ATOM_PREAMBLE_SIZE) { + atom.size = BE_32(pos); + atom.type = BE_32(pos + 4); + pos += ATOM_PREAMBLE_SIZE; + atom.header_size = ATOM_PREAMBLE_SIZE; + + switch (atom.size) { + case 1: + if (end - pos < 8) { + fprintf(stderr, "not enough room for 64 bit atom size\n"); + return -1; + } + + atom.size = BE_64(pos); + pos += 8; + atom.header_size = ATOM_PREAMBLE_SIZE + 8; + break; + + case 0: + atom.size = ATOM_PREAMBLE_SIZE + end - pos; + break; + } + + if (atom.size < atom.header_size) { + fprintf(stderr, "atom size %"PRIu64" too small\n", atom.size); + return -1; + } + + atom.size -= atom.header_size; + + if (atom.size > end - pos) { + fprintf(stderr, "atom size %"PRIu64" too big\n", atom.size); + return -1; + } + + atom.data = pos; + ret = callback(context, &atom); + if (ret < 0) { + return ret; + } + + pos += atom.size; + } + + return 0; +} + +static int update_stco_offsets(update_chunk_offsets_context_t *context, atom_t *atom) +{ + uint32_t current_offset; + uint32_t offset_count; + unsigned char *pos; + unsigned char *end; + + printf(" patching stco atom...\n"); + if (atom->size < 8) { + fprintf(stderr, "stco atom size %"PRIu64" too small\n", atom->size); + return -1; + } + + offset_count = BE_32(atom->data + 4); + if (offset_count > (atom->size - 8) / 4) { + fprintf(stderr, "stco offset count %"PRIu32" too big\n", offset_count); + return -1; + } + + context->stco_offset_count += offset_count; + context->stco_data_size += atom->size - 8; + + for (pos = atom->data + 8, end = pos + offset_count * 4; + pos < end; + pos += 4) { + current_offset = BE_32(pos); + if (current_offset > UINT_MAX - context->moov_atom_size) { + context->stco_overflow = 1; + } + current_offset += context->moov_atom_size; + AV_WB32(pos, current_offset); + } + + return 0; +} + +static int update_co64_offsets(update_chunk_offsets_context_t *context, atom_t *atom) +{ + uint64_t current_offset; + uint32_t offset_count; + unsigned char *pos; + unsigned char *end; + + printf(" patching co64 atom...\n"); + if (atom->size < 8) { + fprintf(stderr, "co64 atom size %"PRIu64" too small\n", atom->size); + return -1; + } + + offset_count = BE_32(atom->data + 4); + if (offset_count > (atom->size - 8) / 8) { + fprintf(stderr, "co64 offset count %"PRIu32" too big\n", offset_count); + return -1; + } + + for (pos = atom->data + 8, end = pos + offset_count * 8; + pos < end; + pos += 8) { + current_offset = BE_64(pos); + current_offset += context->moov_atom_size; + AV_WB64(pos, current_offset); + } + + return 0; +} + +static int update_chunk_offsets_callback(void *ctx, atom_t *atom) +{ + update_chunk_offsets_context_t *context = ctx; + int ret; + + switch (atom->type) { + case STCO_ATOM: + return update_stco_offsets(context, atom); + + case CO64_ATOM: + return update_co64_offsets(context, atom); + + case MOOV_ATOM: + case TRAK_ATOM: + case MDIA_ATOM: + case MINF_ATOM: + case STBL_ATOM: + context->depth++; + if (context->depth > 10) { + fprintf(stderr, "atoms too deeply nested\n"); + return -1; + } + + ret = parse_atoms( + atom->data, + atom->size, + update_chunk_offsets_callback, + context); + context->depth--; + return ret; + } + + return 0; +} + +static void set_atom_size(unsigned char *header, uint32_t header_size, uint64_t size) +{ + switch (header_size) { + case 8: + AV_WB32(header, size); + break; + + case 16: + AV_WB64(header + 8, size); + break; + } +} + +static void upgrade_stco_atom(upgrade_stco_context_t *context, atom_t *atom) +{ + unsigned char *pos; + unsigned char *end; + uint64_t new_offset; + uint32_t offset_count; + uint32_t original_offset; + + /* Note: not performing validations since they were performed on the first pass */ + + offset_count = BE_32(atom->data + 4); + + /* write the header */ + memcpy(context->dest, atom->data - atom->header_size, atom->header_size + 8); + AV_WB32(context->dest + 4, CO64_ATOM); + set_atom_size(context->dest, atom->header_size, atom->header_size + 8 + offset_count * 8); + context->dest += atom->header_size + 8; + + /* write the data */ + for (pos = atom->data + 8, end = pos + offset_count * 4; + pos < end; + pos += 4) { + original_offset = BE_32(pos) - context->original_moov_size; + new_offset = (uint64_t)original_offset + context->new_moov_size; + AV_WB64(context->dest, new_offset); + context->dest += 8; + } +} + +static int upgrade_stco_callback(void *ctx, atom_t *atom) +{ + upgrade_stco_context_t *context = ctx; + unsigned char *start_pos; + uint64_t copy_size; + + switch (atom->type) { + case STCO_ATOM: + upgrade_stco_atom(context, atom); + break; + + case MOOV_ATOM: + case TRAK_ATOM: + case MDIA_ATOM: + case MINF_ATOM: + case STBL_ATOM: + /* write the atom header */ + memcpy(context->dest, atom->data - atom->header_size, atom->header_size); + start_pos = context->dest; + context->dest += atom->header_size; + + /* parse internal atoms*/ + if (parse_atoms( + atom->data, + atom->size, + upgrade_stco_callback, + context) < 0) { + return -1; + } + + /* update the atom size */ + set_atom_size(start_pos, atom->header_size, context->dest - start_pos); + break; + + default: + copy_size = atom->header_size + atom->size; + memcpy(context->dest, atom->data - atom->header_size, copy_size); + context->dest += copy_size; + break; + } + + return 0; +} + +static int update_moov_atom( + unsigned char **moov_atom, + uint64_t *moov_atom_size) +{ + update_chunk_offsets_context_t update_context = { 0 }; + upgrade_stco_context_t upgrade_context; + unsigned char *new_moov_atom; + + update_context.moov_atom_size = *moov_atom_size; + + if (parse_atoms( + *moov_atom, + *moov_atom_size, + update_chunk_offsets_callback, + &update_context) < 0) { + return -1; + } + + if (!update_context.stco_overflow) { + return 0; + } + + printf(" upgrading stco atoms to co64...\n"); + upgrade_context.new_moov_size = *moov_atom_size + + update_context.stco_offset_count * 8 - + update_context.stco_data_size; + + new_moov_atom = malloc(upgrade_context.new_moov_size); + if (new_moov_atom == NULL) { + fprintf(stderr, "could not allocate %"PRIu64" bytes for updated moov atom\n", + upgrade_context.new_moov_size); + return -1; + } + + upgrade_context.original_moov_size = *moov_atom_size; + upgrade_context.dest = new_moov_atom; + + if (parse_atoms( + *moov_atom, + *moov_atom_size, + upgrade_stco_callback, + &upgrade_context) < 0) { + free(new_moov_atom); + return -1; + } + + free(*moov_atom); + *moov_atom = new_moov_atom; + *moov_atom_size = upgrade_context.new_moov_size; + + if (upgrade_context.dest != *moov_atom + *moov_atom_size) { + fprintf(stderr, "unexpected - wrong number of moov bytes written\n"); + return -1; + } + + return 0; +} int main(int argc, char *argv[]) { @@ -98,9 +440,6 @@ int main(int argc, char *argv[]) unsigned char *ftyp_atom = NULL; uint64_t moov_atom_size; uint64_t ftyp_atom_size = 0; - uint64_t i, j; - uint32_t offset_count; - uint64_t current_offset; int64_t start_offset = 0; unsigned char *copy_buffer = NULL; int bytes_to_copy; @@ -133,11 +472,16 @@ int main(int argc, char *argv[]) /* keep ftyp atom */ if (atom_type == FTYP_ATOM) { + if (atom_size > MAX_FTYP_ATOM_SIZE) { + fprintf(stderr, "ftyp atom size %"PRIu64" too big\n", + atom_size); + goto error_out; + } ftyp_atom_size = atom_size; free(ftyp_atom); ftyp_atom = malloc(ftyp_atom_size); if (!ftyp_atom) { - printf("could not allocate %"PRIu64" bytes for ftyp atom\n", + fprintf(stderr, "could not allocate %"PRIu64" bytes for ftyp atom\n", atom_size); goto error_out; } @@ -181,7 +525,7 @@ int main(int argc, char *argv[]) (atom_type != PICT_ATOM) && (atom_type != UUID_ATOM) && (atom_type != FTYP_ATOM)) { - printf("encountered non-QT top-level atom (is this a QuickTime file?)\n"); + fprintf(stderr, "encountered non-QT top-level atom (is this a QuickTime file?)\n"); break; } atom_offset += atom_size; @@ -201,7 +545,7 @@ int main(int argc, char *argv[]) } if (atom_size < 16) { - printf("bad moov atom size\n"); + fprintf(stderr, "bad moov atom size\n"); goto error_out; } @@ -219,7 +563,7 @@ int main(int argc, char *argv[]) moov_atom_size = atom_size; moov_atom = malloc(moov_atom_size); if (!moov_atom) { - printf("could not allocate %"PRIu64" bytes for moov atom\n", atom_size); + fprintf(stderr, "could not allocate %"PRIu64" bytes for moov atom\n", atom_size); goto error_out; } if (fread(moov_atom, atom_size, 1, infile) != 1) { @@ -230,7 +574,7 @@ int main(int argc, char *argv[]) /* this utility does not support compressed atoms yet, so disqualify * files with compressed QT atoms */ if (BE_32(&moov_atom[12]) == CMOV_ATOM) { - printf("this utility does not support compressed moov atoms yet\n"); + fprintf(stderr, "this utility does not support compressed moov atoms yet\n"); goto error_out; } @@ -238,56 +582,8 @@ int main(int argc, char *argv[]) fclose(infile); infile = NULL; - /* crawl through the moov chunk in search of stco or co64 atoms */ - for (i = 4; i < moov_atom_size - 4; i++) { - atom_type = BE_32(&moov_atom[i]); - if (atom_type == STCO_ATOM) { - printf(" patching stco atom...\n"); - atom_size = BE_32(&moov_atom[i - 4]); - if (atom_size < 16 || atom_size > moov_atom_size - i + 4) { - printf(" bad atom size\n"); - goto error_out; - } - offset_count = BE_32(&moov_atom[i + 8]); - if (offset_count > (atom_size - 16) / 4) { - printf(" bad atom size/element count\n"); - goto error_out; - } - for (j = 0; j < offset_count; j++) { - current_offset = BE_32(&moov_atom[i + 12 + j * 4]); - current_offset += moov_atom_size; - moov_atom[i + 12 + j * 4 + 0] = (current_offset >> 24) & 0xFF; - moov_atom[i + 12 + j * 4 + 1] = (current_offset >> 16) & 0xFF; - moov_atom[i + 12 + j * 4 + 2] = (current_offset >> 8) & 0xFF; - moov_atom[i + 12 + j * 4 + 3] = (current_offset >> 0) & 0xFF; - } - i += atom_size - 4; - } else if (atom_type == CO64_ATOM) { - printf(" patching co64 atom...\n"); - atom_size = BE_32(&moov_atom[i - 4]); - if (atom_size < 16 || atom_size > moov_atom_size - i + 4) { - printf(" bad atom size\n"); - goto error_out; - } - offset_count = BE_32(&moov_atom[i + 8]); - if (offset_count > (atom_size - 16) / 8) { - printf(" bad atom size/element count\n"); - goto error_out; - } - for (j = 0; j < offset_count; j++) { - current_offset = BE_64(&moov_atom[i + 12 + j * 8]); - current_offset += moov_atom_size; - moov_atom[i + 12 + j * 8 + 0] = (current_offset >> 56) & 0xFF; - moov_atom[i + 12 + j * 8 + 1] = (current_offset >> 48) & 0xFF; - moov_atom[i + 12 + j * 8 + 2] = (current_offset >> 40) & 0xFF; - moov_atom[i + 12 + j * 8 + 3] = (current_offset >> 32) & 0xFF; - moov_atom[i + 12 + j * 8 + 4] = (current_offset >> 24) & 0xFF; - moov_atom[i + 12 + j * 8 + 5] = (current_offset >> 16) & 0xFF; - moov_atom[i + 12 + j * 8 + 6] = (current_offset >> 8) & 0xFF; - moov_atom[i + 12 + j * 8 + 7] = (current_offset >> 0) & 0xFF; - } - i += atom_size - 4; - } + if (update_moov_atom(&moov_atom, &moov_atom_size) < 0) { + goto error_out; } /* re-open the input file and open the output file */ @@ -332,7 +628,7 @@ int main(int argc, char *argv[]) bytes_to_copy = MIN(COPY_BUFFER_SIZE, last_offset); copy_buffer = malloc(bytes_to_copy); if (!copy_buffer) { - printf("could not allocate %d bytes for copy_buffer\n", bytes_to_copy); + fprintf(stderr, "could not allocate %d bytes for copy_buffer\n", bytes_to_copy); goto error_out; } printf(" copying rest of file...\n"); diff --git a/chromium/third_party/ffmpeg/tools/target_dec_fuzzer.c b/chromium/third_party/ffmpeg/tools/target_dec_fuzzer.c index a0e8943c824..a94d5e6a92b 100644 --- a/chromium/third_party/ffmpeg/tools/target_dec_fuzzer.c +++ b/chromium/third_party/ffmpeg/tools/target_dec_fuzzer.c @@ -140,6 +140,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { int (*decode_handler)(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const AVPacket *avpkt) = NULL; + AVCodecParserContext *parser = NULL; + if (!c) { #ifdef FFMPEG_DECODER @@ -164,7 +166,8 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { } AVCodecContext* ctx = avcodec_alloc_context3(NULL); - if (!ctx) + AVCodecContext* parser_avctx = avcodec_alloc_context3(NULL); + if (!ctx || !parser_avctx) error("Failed memory allocation"); ctx->max_pixels = 4096 * 4096; //To reduce false positive OOM and hangs @@ -176,6 +179,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ctx->height = bytestream2_get_le32(&gbc); ctx->bit_rate = bytestream2_get_le64(&gbc); ctx->bits_per_coded_sample = bytestream2_get_le32(&gbc); + // Try to initialize a parser for this codec, note, this may fail which just means we test without one + if (bytestream2_get_byte(&gbc) & 1) + parser = av_parser_init(c->id); if (av_image_check_size(ctx->width, ctx->height, 0, ctx)) ctx->width = ctx->height = 0; size -= 1024; @@ -184,8 +190,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { int res = avcodec_open2(ctx, c, NULL); if (res < 0) { av_free(ctx); + av_free(parser_avctx); return 0; // Failure of avcodec_open2() does not imply that a issue was found } + parser_avctx->codec_id = ctx->codec_id; FDBCreate(&buffer); int got_frame; @@ -194,7 +202,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { error("Failed memory allocation"); // Read very simple container - AVPacket avpkt; + AVPacket avpkt, parsepkt; while (data < end && it < maxiteration) { // Search for the TAG while (data + sizeof(fuzz_tag) < end) { @@ -205,12 +213,34 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { if (data + sizeof(fuzz_tag) > end) data = end; - FDBPrepare(&buffer, &avpkt, last, data - last); + FDBPrepare(&buffer, &parsepkt, last, data - last); data += sizeof(fuzz_tag); last = data; - // Iterate through all data - while (avpkt.size > 0 && it++ < maxiteration) { + while (parsepkt.size > 0) { + + if (parser) { + av_init_packet(&avpkt); + int ret = av_parser_parse2(parser, parser_avctx, &avpkt.data, &avpkt.size, + parsepkt.data, parsepkt.size, + parsepkt.pts, parsepkt.dts, parsepkt.pos); + parsepkt.data += ret; + parsepkt.size -= ret; + parsepkt.pos += ret; + avpkt.pts = parser->pts; + avpkt.dts = parser->dts; + avpkt.pos = parser->pos; + if ( parser->key_frame == 1 || + (parser->key_frame == -1 && parser->pict_type == AV_PICTURE_TYPE_I)) + avpkt.flags |= AV_PKT_FLAG_KEY; + avpkt.flags |= parsepkt.flags & AV_PKT_FLAG_DISCARD; + } else { + avpkt = parsepkt; + parsepkt.size = 0; + } + + // Iterate through all data + while (avpkt.size > 0 && it++ < maxiteration) { av_frame_unref(frame); int ret = decode_handler(ctx, frame, &got_frame, &avpkt); @@ -223,6 +253,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ret = avpkt.size; avpkt.data += ret; avpkt.size -= ret; + } } } @@ -238,6 +269,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { av_frame_free(&frame); avcodec_free_context(&ctx); av_freep(&ctx); + avcodec_free_context(&parser_avctx); + av_freep(&parser_avctx); + av_parser_close(parser); FDBDesroy(&buffer); return 0; } |